{"version":3,"mappings":"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IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,GAAG,IAAI,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,IAAID,GAAE,CAAC,GAAG,IAAI,CAAC,IAAIA,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,GAAG,IAAI,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,GAAG,IAAI,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,GAAG,IAAI,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,GAAG,IAAI,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,IAAID,GAAE,CAAC,IAAIC,GAAE,EAAE,IAAID,GAAE,CAAC,GAAG,IAAI,EAAE,IAAIA,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,GAAG,IAAI,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,GAAG,IAAI,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,GAAG,IAAI,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,GAAG,IAAI,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,IAAID,GAAE,EAAE,GAAG,IAAI,EAAE,IAAIA,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,GAAG,IAAI,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,GAAG,IAAI,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,GAAG,IAAI,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,GAAG,IAAI,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,CAAC,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,IAAID,GAAE,EAAE,IAAIC,GAAE,EAAE,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","names":["navigator","isMobile","isMobileJs","has","context","EventEmitter","i","l","ee","a2","a3","j","earcutModule","x","y","p","a","b","c","n","m","e","r","sign","o2","b2","d","global","punycode","map","k","decode","w","t","encode","this","require$$0","hasSymbols","hasProto","toStr","concatty","slicy","implementation","Empty","bind","undefined","$SyntaxError","$TypeError","$gOPD","require$$1","doEval","require$$2","hasOwn","require$$3","$concat","$replace","stringToPath","quote","getBaseIntrinsic","GetIntrinsic","$defineProperty","hasPropertyDescriptors","gopd","defineDataProperty","$floor","setFunctionLength","callBind","applyBind","callBound","mapSize","O","seen","isArray","inspect","isRegExp","s","f","formats","compactQueue","arrayToObject","merge","format","compact","isBuffer","combine","maybeMap","utils","getSideChannel","defaults","isNonNullishPrimitive","v","stringify","serializeDate","sideChannel","value","normalizeStringifyOptions","brackets","normalizeParseOptions","parse","u","h","ae","replace","resolve","supported","o","g","N","M","$","S","extend","colord","max","defaultValue","extensions","fragTemplate","BLEND","OFFSET","CULLING","DEPTH_TEST","WINDING","DEPTH_MASK","id","UID","Buffer","instance","byteSizeMap","tempPoints","x2","r2","defaultFragment","defaultVertex","vertex","fragment","createImageBitmap","tempMatrix","filters","tempMat","tempRect","config","OffscreenCanvas","area","utils.EventEmitter","index","utils.removeItems","utils.deprecation","tempPoint","indices","utils.sign","utils.uid","utils.isMobile","mimes","utils.path","WORKER_CODE","WORKER_URL","WorkerInstance","WorkerInstance$1","promise","utils.getResolutionOfUrl","utils.detectVideoAlphaMode","format2","extensions$1","utils.CanvasRenderTarget","y2","i2","i3","utils.earcut","t2","c2","path","utils.createIndicesForQuads","utils.correctBlendMode","utils.trimCanvas","W","H","j2","utils.rgb2hex","utils.hex2string","x3","F","_","T","Z.hex2rgb","z","P","J","s.deprecation","s.rgb2hex","s.hex2rgb","t.rgb2hex","t.hex2rgb","a.rgb2hex","a.hex2rgb","f.deprecation","DropShadowFilter","sound","resolve2","sound2","self","_reverting","_bigNum","_isString","_isFunction","_isNumber","_isUndefined","_isObject","_isNotFalse","_windowExists","_isFuncOrString","_win","_doc","_install","_missingPlugin","_warn","_addGlobal","_emptyFunc","_harness","_getCache","_getProperty","_forEachName","_round","_roundPrecise","_parseRelative","_arrayContainsAny","_lazyRender","_lazySafeRender","_numericIfPossible","_passThrough","_setDefaults","_setKeyframeDefaults","_merge","_mergeDeep","_copyExcluding","_inheritDefaults","_arraysMatch","_addLinkedListItem","_removeLinkedListItem","_removeFromParent","_uncache","_recacheAncestors","_rewindStartAt","_hasNoPausedAncestors","_elapsedCycleDuration","_animationCycle","_parentToChildTotalTime","_setEnd","_alignPlayhead","_postAddChecks","timeline","_addToTimeline","_scrollTrigger","_attemptInitTween","_parentPlayheadIsBeforeStart","_isFromOrFromStart","_renderZeroDurationTween","_findNextPauseTween","_setDuration","repeat","_onUpdateTotalDuration","_parsePosition","_createTweenType","_conditionalReturn","_clamp","getUnit","clamp","_isArrayLike","_flatten","toArray","selector","shuffle","distribute","_roundModifier","snap","random","pipe","unitize","normalize","_wrapArray","wrap","wrapYoyo","_replaceRandom","mapRange","interpolate","isString","func","_getLabelInDirection","_callback","_interrupt","_createPlugin","_hue","splitColor","_colorOrderData","_formatColors","_colorStringFilter","_listeners","_tick","_wake","_parseObjectInString","_valueInParentheses","_configEaseFromString","_invertEase","_propagateYoyoEase","_parseEase","_insertEase","easeOut","easeInOut","_easeInOutFromOut","_configElastic","amplitude","period","_configBack","overshoot","n2","n3","GSCache","Animation","_resolve","Timeline","call","render","getById","getTweensOf","_addComplexStringPropTween","_addPropTween","_processVars","_checkPlugin","_initTween","_updatePropTweens","_addAliasesToVars","_parseKeyframe","_parseFuncOrString","Tween","_setterPlain","_setterFunc","_setterFuncWithParam","_setterAttribute","_getSetter","_renderPlain","_renderBoolean","_renderComplexString","_renderPropTweens","_addPluginModifier","_killPropTweensOf","_setterWithModifier","_sortPropTweensByPriority","PropTween","_dispatch","_onMediaChange","Context","matchMedia","MatchMedia","property","unit","uncache","_merge2","_getPluginPropTween","_addModifiers","_buildModifierPlugin","init","tween","name","_renderCSSProp","_renderPropWithEnd","_renderCSSPropWithBeginning","_renderRoundedCSSProp","_renderNonTweeningValue","_renderNonTweeningValueOnlyAtEnd","_setterCSSStyle","_setterCSSProp","_setterTransform","_setterScale","_setterScaleWithRender","_setterTransformWithRender","_saveStyle","_removeIndependentTransforms","_revertStyle","_getStyleSaver","_createElement","_getComputedProperty","_checkPropPrefix","_initCore","_getBBoxHack","_getAttributeFallbacks","_getBBox","_isSVG","_removeProperty","_addNonTweeningPT","_convertToUnit","_get","_tweenComplexCSSString","_convertKeywordsToPercentages","_renderClearProps","_isNullTransform","_getComputedTransformMatrixAsArray","_getMatrix","_applySVGOrigin","_parseTransform","_firstTwoOnly","_addPxTranslate","_renderNon3DTransforms","_renderCSSTransforms","_renderSVGTransforms","_addRotationalPropTween","_assign","_addRawTransformPTs","gsap","window","getProto","push","indexOf","isFunction","isWindow","document","arr","documentElement","rquickExpr","escape","matches","node","_context","dir","find","elem","deferred","data","nodeName","length","val","settings","completed","method","type","detectionData","initDevtools"],"sources":["../../node_modules/@pixi/constants/lib/index.mjs","../../node_modules/@pixi/settings/lib/adapter.mjs","../../node_modules/@pixi/settings/lib/settings.mjs","../../node_modules/ismobilejs/esm/isMobile.js","../../node_modules/@pixi/settings/lib/utils/isMobile.mjs","../../node_modules/@pixi/utils/lib/settings.mjs","../../node_modules/eventemitter3/index.js","../../node_modules/earcut/src/earcut.js","../../node_modules/punycode/punycode.js","../../node_modules/has-symbols/shams.js","../../node_modules/has-symbols/index.js","../../node_modules/has-proto/index.js","../../node_modules/function-bind/implementation.js","../../node_modules/function-bind/index.js","../../node_modules/hasown/index.js","../../node_modules/get-intrinsic/index.js","../../node_modules/has-property-descriptors/index.js","../../node_modules/gopd/index.js","../../node_modules/define-data-property/index.js","../../node_modules/set-function-length/index.js","../../node_modules/call-bind/index.js","../../node_modules/call-bind/callBound.js","../../__vite-browser-external","../../node_modules/object-inspect/index.js","../../node_modules/side-channel/index.js","../../node_modules/qs/lib/formats.js","../../node_modules/qs/lib/utils.js","../../node_modules/qs/lib/stringify.js","../../node_modules/qs/lib/parse.js","../../node_modules/qs/lib/index.js","../../node_modules/url/url.js","../../node_modules/@pixi/utils/lib/logging/deprecation.mjs","../../node_modules/@pixi/utils/lib/path.mjs","../../node_modules/@pixi/utils/lib/browser/detectVideoAlphaMode.mjs","../../node_modules/@pixi/utils/lib/browser/isWebGLSupported.mjs","../../node_modules/@pixi/colord/index.mjs","../../node_modules/@pixi/colord/plugins/names.mjs","../../node_modules/@pixi/color/lib/Color.mjs","../../node_modules/@pixi/utils/lib/color/hex.mjs","../../node_modules/@pixi/utils/lib/color/premultiply.mjs","../../node_modules/@pixi/utils/lib/data/createIndicesForQuads.mjs","../../node_modules/@pixi/utils/lib/data/getBufferType.mjs","../../node_modules/@pixi/utils/lib/data/pow2.mjs","../../node_modules/@pixi/utils/lib/data/removeItems.mjs","../../node_modules/@pixi/utils/lib/data/sign.mjs","../../node_modules/@pixi/utils/lib/data/uid.mjs","../../node_modules/@pixi/utils/lib/media/BoundingBox.mjs","../../node_modules/@pixi/utils/lib/media/caches.mjs","../../node_modules/@pixi/utils/lib/media/CanvasRenderTarget.mjs","../../node_modules/@pixi/utils/lib/media/getCanvasBoundingBox.mjs","../../node_modules/@pixi/utils/lib/media/trimCanvas.mjs","../../node_modules/@pixi/utils/lib/network/determineCrossOrigin.mjs","../../node_modules/@pixi/utils/lib/network/getResolutionOfUrl.mjs","../../node_modules/@pixi/extensions/lib/index.mjs","../../node_modules/@pixi/core/lib/geometry/ViewableBuffer.mjs","../../node_modules/@pixi/core/lib/shader/utils/checkMaxIfStatementsInShader.mjs","../../node_modules/@pixi/core/lib/state/State.mjs","../../node_modules/@pixi/core/lib/textures/resources/autoDetectResource.mjs","../../node_modules/@pixi/runner/lib/Runner.mjs","../../node_modules/@pixi/core/lib/textures/resources/Resource.mjs","../../node_modules/@pixi/core/lib/textures/resources/BufferResource.mjs","../../node_modules/@pixi/core/lib/textures/BaseTexture.mjs","../../node_modules/@pixi/core/lib/batch/BatchDrawCall.mjs","../../node_modules/@pixi/core/lib/geometry/Buffer.mjs","../../node_modules/@pixi/core/lib/geometry/Attribute.mjs","../../node_modules/@pixi/core/lib/geometry/utils/interleaveTypedArrays.mjs","../../node_modules/@pixi/core/lib/geometry/Geometry.mjs","../../node_modules/@pixi/core/lib/batch/BatchGeometry.mjs","../../node_modules/@pixi/math/lib/const.mjs","../../node_modules/@pixi/math/lib/Point.mjs","../../node_modules/@pixi/math/lib/shapes/Rectangle.mjs","../../node_modules/@pixi/math/lib/shapes/Circle.mjs","../../node_modules/@pixi/math/lib/shapes/Ellipse.mjs","../../node_modules/@pixi/math/lib/shapes/Polygon.mjs","../../node_modules/@pixi/math/lib/shapes/RoundedRectangle.mjs","../../node_modules/@pixi/math/lib/Matrix.mjs","../../node_modules/@pixi/math/lib/groupD8.mjs","../../node_modules/@pixi/math/lib/ObservablePoint.mjs","../../node_modules/@pixi/math/lib/Transform.mjs","../../node_modules/@pixi/core/lib/shader/defaultProgram.frag.mjs","../../node_modules/@pixi/core/lib/shader/defaultProgram.vert.mjs","../../node_modules/@pixi/core/lib/shader/utils/compileShader.mjs","../../node_modules/@pixi/core/lib/shader/utils/defaultValue.mjs","../../node_modules/@pixi/core/lib/shader/utils/uniformParsers.mjs","../../node_modules/@pixi/core/lib/shader/utils/generateUniformsSync.mjs","../../node_modules/@pixi/core/lib/shader/utils/getTestContext.mjs","../../node_modules/@pixi/core/lib/shader/utils/getMaxFragmentPrecision.mjs","../../node_modules/@pixi/core/lib/shader/utils/logProgramError.mjs","../../node_modules/@pixi/core/lib/shader/utils/mapSize.mjs","../../node_modules/@pixi/core/lib/shader/utils/mapType.mjs","../../node_modules/@pixi/core/lib/shader/utils/setPrecision.mjs","../../node_modules/@pixi/core/lib/shader/utils/unsafeEvalSupported.mjs","../../node_modules/@pixi/core/lib/shader/Program.mjs","../../node_modules/@pixi/core/lib/shader/UniformGroup.mjs","../../node_modules/@pixi/core/lib/shader/Shader.mjs","../../node_modules/@pixi/core/lib/batch/BatchShaderGenerator.mjs","../../node_modules/@pixi/core/lib/batch/BatchTextureArray.mjs","../../node_modules/@pixi/core/lib/batch/canUploadSameBuffer.mjs","../../node_modules/@pixi/core/lib/batch/maxRecommendedTextures.mjs","../../node_modules/@pixi/core/lib/batch/ObjectRenderer.mjs","../../node_modules/@pixi/core/lib/batch/texture.frag.mjs","../../node_modules/@pixi/core/lib/batch/texture.vert.mjs","../../node_modules/@pixi/core/lib/batch/BatchRenderer.mjs","../../node_modules/@pixi/core/lib/filters/defaultFilter.frag.mjs","../../node_modules/@pixi/core/lib/filters/defaultFilter.vert.mjs","../../node_modules/@pixi/core/lib/filters/Filter.mjs","../../node_modules/@pixi/core/lib/background/BackgroundSystem.mjs","../../node_modules/@pixi/core/lib/batch/BatchSystem.mjs","../../node_modules/@pixi/core/lib/context/ContextSystem.mjs","../../node_modules/@pixi/core/lib/framebuffer/Framebuffer.mjs","../../node_modules/@pixi/core/lib/renderTexture/BaseRenderTexture.mjs","../../node_modules/@pixi/core/lib/textures/resources/BaseImageResource.mjs","../../node_modules/@pixi/core/lib/textures/resources/ImageResource.mjs","../../node_modules/@pixi/core/lib/textures/TextureUvs.mjs","../../node_modules/@pixi/core/lib/textures/Texture.mjs","../../node_modules/@pixi/core/lib/renderTexture/RenderTexture.mjs","../../node_modules/@pixi/core/lib/renderTexture/RenderTexturePool.mjs","../../node_modules/@pixi/core/lib/utils/Quad.mjs","../../node_modules/@pixi/core/lib/utils/QuadUv.mjs","../../node_modules/@pixi/core/lib/filters/FilterState.mjs","../../node_modules/@pixi/core/lib/filters/FilterSystem.mjs","../../node_modules/@pixi/core/lib/framebuffer/GLFramebuffer.mjs","../../node_modules/@pixi/core/lib/framebuffer/FramebufferSystem.mjs","../../node_modules/@pixi/core/lib/geometry/GeometrySystem.mjs","../../node_modules/@pixi/core/lib/textures/TextureMatrix.mjs","../../node_modules/@pixi/core/lib/filters/spriteMask/spriteMaskFilter.frag.mjs","../../node_modules/@pixi/core/lib/filters/spriteMask/spriteMaskFilter.vert.mjs","../../node_modules/@pixi/core/lib/filters/spriteMask/SpriteMaskFilter.mjs","../../node_modules/@pixi/core/lib/mask/MaskData.mjs","../../node_modules/@pixi/core/lib/mask/MaskSystem.mjs","../../node_modules/@pixi/core/lib/mask/AbstractMaskSystem.mjs","../../node_modules/@pixi/core/lib/mask/ScissorSystem.mjs","../../node_modules/@pixi/core/lib/mask/StencilSystem.mjs","../../node_modules/@pixi/core/lib/plugin/PluginSystem.mjs","../../node_modules/@pixi/core/lib/projection/ProjectionSystem.mjs","../../node_modules/@pixi/core/lib/renderTexture/GenerateTextureSystem.mjs","../../node_modules/@pixi/core/lib/renderTexture/RenderTextureSystem.mjs","../../node_modules/@pixi/core/lib/shader/GLProgram.mjs","../../node_modules/@pixi/core/lib/shader/utils/getAttributeData.mjs","../../node_modules/@pixi/core/lib/shader/utils/getUniformData.mjs","../../node_modules/@pixi/core/lib/shader/utils/generateProgram.mjs","../../node_modules/@pixi/core/lib/shader/utils/generateUniformBufferSync.mjs","../../node_modules/@pixi/core/lib/shader/ShaderSystem.mjs","../../node_modules/@pixi/core/lib/startup/StartupSystem.mjs","../../node_modules/@pixi/core/lib/state/utils/mapWebGLBlendModesToPixi.mjs","../../node_modules/@pixi/core/lib/state/StateSystem.mjs","../../node_modules/@pixi/core/lib/system/SystemManager.mjs","../../node_modules/@pixi/core/lib/textures/TextureGCSystem.mjs","../../node_modules/@pixi/core/lib/textures/GLTexture.mjs","../../node_modules/@pixi/core/lib/textures/utils/mapInternalFormatToSamplerType.mjs","../../node_modules/@pixi/core/lib/textures/utils/mapTypeAndFormatToInternalFormat.mjs","../../node_modules/@pixi/core/lib/textures/TextureSystem.mjs","../../node_modules/@pixi/core/lib/transformFeedback/TransformFeedbackSystem.mjs","../../node_modules/@pixi/core/lib/view/ViewSystem.mjs","../../node_modules/@pixi/core/lib/settings.mjs","../../node_modules/@pixi/ticker/lib/const.mjs","../../node_modules/@pixi/ticker/lib/TickerListener.mjs","../../node_modules/@pixi/ticker/lib/Ticker.mjs","../../node_modules/@pixi/ticker/lib/settings.mjs","../../node_modules/@pixi/ticker/lib/TickerPlugin.mjs","../../node_modules/@pixi/core/lib/autoDetectRenderer.mjs","../../node_modules/@pixi/core/lib/fragments/default.vert.mjs","../../node_modules/@pixi/core/lib/fragments/defaultFilter.vert.mjs","../../node_modules/@pixi/core/lib/fragments/index.mjs","../../node_modules/@pixi/core/lib/framebuffer/MultisampleSystem.mjs","../../node_modules/@pixi/core/lib/geometry/GLBuffer.mjs","../../node_modules/@pixi/core/lib/geometry/BufferSystem.mjs","../../node_modules/@pixi/core/lib/render/ObjectRendererSystem.mjs","../../node_modules/@pixi/core/lib/Renderer.mjs","../../node_modules/@pixi/core/lib/textures/resources/AbstractMultiResource.mjs","../../node_modules/@pixi/core/lib/textures/resources/ArrayResource.mjs","../../node_modules/@pixi/core/lib/textures/resources/CanvasResource.mjs","../../node_modules/@pixi/core/lib/textures/resources/CubeResource.mjs","../../node_modules/@pixi/core/lib/textures/resources/ImageBitmapResource.mjs","../../node_modules/@pixi/core/lib/textures/resources/SVGResource.mjs","../../node_modules/@pixi/core/lib/textures/resources/VideoFrameResource.mjs","../../node_modules/@pixi/core/lib/textures/resources/VideoResource.mjs","../../node_modules/@pixi/core/lib/textures/resources/index.mjs","../../node_modules/@pixi/display/lib/Bounds.mjs","../../node_modules/@pixi/display/lib/DisplayObject.mjs","../../node_modules/@pixi/display/lib/Container.mjs","../../node_modules/@pixi/display/lib/settings.mjs","../../node_modules/@pixi/sprite/lib/Sprite.mjs","../../node_modules/pixi.js/node_modules/@pixi/mixin-cache-as-bitmap/lib/index.mjs","../../node_modules/pixi.js/node_modules/@pixi/mixin-get-child-by-name/lib/index.mjs","../../node_modules/pixi.js/node_modules/@pixi/mixin-get-global-position/lib/index.mjs","../../node_modules/@pixi/filter-alpha/lib/alpha.frag.mjs","../../node_modules/@pixi/filter-alpha/lib/AlphaFilter.mjs","../../node_modules/@pixi/filter-blur/lib/generateBlurFragSource.mjs","../../node_modules/@pixi/filter-blur/lib/generateBlurVertSource.mjs","../../node_modules/@pixi/filter-blur/lib/BlurFilterPass.mjs","../../node_modules/@pixi/filter-blur/lib/BlurFilter.mjs","../../node_modules/pixi.js/node_modules/@pixi/filter-color-matrix/lib/colorMatrix.frag.mjs","../../node_modules/pixi.js/node_modules/@pixi/filter-color-matrix/lib/ColorMatrixFilter.mjs","../../node_modules/pixi.js/node_modules/@pixi/filter-displacement/lib/displacement.frag.mjs","../../node_modules/pixi.js/node_modules/@pixi/filter-displacement/lib/displacement.vert.mjs","../../node_modules/pixi.js/node_modules/@pixi/filter-displacement/lib/DisplacementFilter.mjs","../../node_modules/pixi.js/node_modules/@pixi/filter-fxaa/lib/fxaa.frag.mjs","../../node_modules/pixi.js/node_modules/@pixi/filter-fxaa/lib/fxaa.vert.mjs","../../node_modules/pixi.js/node_modules/@pixi/filter-fxaa/lib/FXAAFilter.mjs","../../node_modules/pixi.js/node_modules/@pixi/filter-noise/lib/noise.frag.mjs","../../node_modules/pixi.js/node_modules/@pixi/filter-noise/lib/NoiseFilter.mjs","../../node_modules/pixi.js/lib/filters.mjs","../../node_modules/pixi.js/node_modules/@pixi/events/lib/EventTicker.mjs","../../node_modules/pixi.js/node_modules/@pixi/events/lib/FederatedEvent.mjs","../../node_modules/pixi.js/node_modules/@pixi/events/lib/FederatedMouseEvent.mjs","../../node_modules/pixi.js/node_modules/@pixi/events/lib/FederatedPointerEvent.mjs","../../node_modules/pixi.js/node_modules/@pixi/events/lib/FederatedWheelEvent.mjs","../../node_modules/pixi.js/node_modules/@pixi/events/lib/EventBoundary.mjs","../../node_modules/pixi.js/node_modules/@pixi/events/lib/EventSystem.mjs","../../node_modules/pixi.js/node_modules/@pixi/events/lib/FederatedEventTarget.mjs","../../node_modules/pixi.js/node_modules/@pixi/accessibility/lib/accessibleTarget.mjs","../../node_modules/pixi.js/node_modules/@pixi/accessibility/lib/AccessibilityManager.mjs","../../node_modules/pixi.js/node_modules/@pixi/app/lib/Application.mjs","../../node_modules/pixi.js/node_modules/@pixi/app/lib/ResizePlugin.mjs","../../node_modules/@pixi/assets/lib/AssetExtension.mjs","../../node_modules/@pixi/assets/lib/BackgroundLoader.mjs","../../node_modules/@pixi/assets/lib/utils/checkDataUrl.mjs","../../node_modules/@pixi/assets/lib/utils/checkExtension.mjs","../../node_modules/@pixi/assets/lib/utils/convertToList.mjs","../../node_modules/@pixi/assets/lib/utils/copySearchParams.mjs","../../node_modules/@pixi/assets/lib/utils/createStringVariations.mjs","../../node_modules/@pixi/assets/lib/utils/isSingleItem.mjs","../../node_modules/@pixi/assets/lib/cache/Cache.mjs","../../node_modules/@pixi/assets/lib/loader/Loader.mjs","../../node_modules/@pixi/assets/lib/loader/parsers/LoaderParser.mjs","../../node_modules/@pixi/assets/lib/loader/parsers/loadJson.mjs","../../node_modules/@pixi/assets/lib/loader/parsers/loadTxt.mjs","../../node_modules/@pixi/assets/lib/loader/parsers/loadWebFont.mjs","../../node_modules/@pixi/assets/lib/_virtual/checkImageBitmap.worker.mjs","../../node_modules/@pixi/assets/lib/_virtual/loadImageBitmap.worker.mjs","../../node_modules/@pixi/assets/lib/loader/parsers/WorkerManager.mjs","../../node_modules/@pixi/assets/lib/loader/parsers/textures/utils/createTexture.mjs","../../node_modules/@pixi/assets/lib/loader/parsers/textures/loadTextures.mjs","../../node_modules/@pixi/assets/lib/loader/parsers/textures/loadSVG.mjs","../../node_modules/@pixi/assets/lib/loader/parsers/textures/loadVideo.mjs","../../node_modules/@pixi/assets/lib/resolver/Resolver.mjs","../../node_modules/@pixi/assets/lib/Assets.mjs","../../node_modules/@pixi/assets/lib/cache/parsers/cacheTextureArray.mjs","../../node_modules/@pixi/assets/lib/detections/utils/testImageFormat.mjs","../../node_modules/@pixi/assets/lib/detections/parsers/detectAvif.mjs","../../node_modules/@pixi/assets/lib/detections/parsers/detectWebp.mjs","../../node_modules/@pixi/assets/lib/detections/parsers/detectDefaults.mjs","../../node_modules/@pixi/assets/lib/detections/utils/testVideoFormat.mjs","../../node_modules/@pixi/assets/lib/detections/parsers/detectWebm.mjs","../../node_modules/@pixi/assets/lib/detections/parsers/detectMp4.mjs","../../node_modules/@pixi/assets/lib/detections/parsers/detectOgv.mjs","../../node_modules/@pixi/assets/lib/resolver/parsers/resolveTextureUrl.mjs","../../node_modules/pixi.js/node_modules/@pixi/compressed-textures/lib/const.mjs","../../node_modules/pixi.js/node_modules/@pixi/compressed-textures/lib/loaders/detectCompressedTextures.mjs","../../node_modules/pixi.js/node_modules/@pixi/compressed-textures/lib/resources/BlobResource.mjs","../../node_modules/pixi.js/node_modules/@pixi/compressed-textures/lib/resources/CompressedTextureResource.mjs","../../node_modules/pixi.js/node_modules/@pixi/compressed-textures/lib/parsers/parseDDS.mjs","../../node_modules/pixi.js/node_modules/@pixi/compressed-textures/lib/parsers/parseKTX.mjs","../../node_modules/pixi.js/node_modules/@pixi/compressed-textures/lib/loaders/loadDDS.mjs","../../node_modules/pixi.js/node_modules/@pixi/compressed-textures/lib/loaders/loadKTX.mjs","../../node_modules/pixi.js/node_modules/@pixi/compressed-textures/lib/loaders/resolveCompressedTextureUrl.mjs","../../node_modules/pixi.js/node_modules/@pixi/extract/lib/Extract.mjs","../../node_modules/@pixi/graphics/lib/utils/buildCircle.mjs","../../node_modules/@pixi/graphics/lib/utils/buildPoly.mjs","../../node_modules/@pixi/graphics/lib/utils/buildRectangle.mjs","../../node_modules/@pixi/graphics/lib/utils/buildRoundedRectangle.mjs","../../node_modules/@pixi/graphics/lib/const.mjs","../../node_modules/@pixi/graphics/lib/utils/ArcUtils.mjs","../../node_modules/@pixi/graphics/lib/utils/BatchPart.mjs","../../node_modules/@pixi/graphics/lib/utils/BezierUtils.mjs","../../node_modules/@pixi/graphics/lib/utils/buildLine.mjs","../../node_modules/@pixi/graphics/lib/utils/QuadraticUtils.mjs","../../node_modules/@pixi/graphics/lib/utils/index.mjs","../../node_modules/@pixi/graphics/lib/GraphicsData.mjs","../../node_modules/@pixi/graphics/lib/GraphicsGeometry.mjs","../../node_modules/@pixi/graphics/lib/styles/FillStyle.mjs","../../node_modules/@pixi/graphics/lib/styles/LineStyle.mjs","../../node_modules/@pixi/graphics/lib/Graphics.mjs","../../node_modules/pixi.js/node_modules/@pixi/mesh/lib/MeshBatchUvs.mjs","../../node_modules/pixi.js/node_modules/@pixi/mesh/lib/Mesh.mjs","../../node_modules/pixi.js/node_modules/@pixi/mesh/lib/MeshGeometry.mjs","../../node_modules/pixi.js/node_modules/@pixi/mesh/lib/shader/mesh.frag.mjs","../../node_modules/pixi.js/node_modules/@pixi/mesh/lib/shader/mesh.vert.mjs","../../node_modules/pixi.js/node_modules/@pixi/mesh/lib/MeshMaterial.mjs","../../node_modules/pixi.js/node_modules/@pixi/particle-container/lib/ParticleBuffer.mjs","../../node_modules/pixi.js/node_modules/@pixi/particle-container/lib/particles.frag.mjs","../../node_modules/pixi.js/node_modules/@pixi/particle-container/lib/particles.vert.mjs","../../node_modules/pixi.js/node_modules/@pixi/particle-container/lib/ParticleRenderer.mjs","../../node_modules/pixi.js/node_modules/@pixi/text/lib/const.mjs","../../node_modules/pixi.js/node_modules/@pixi/text/lib/TextMetrics.mjs","../../node_modules/pixi.js/node_modules/@pixi/text/lib/TextStyle.mjs","../../node_modules/pixi.js/node_modules/@pixi/text/lib/Text.mjs","../../node_modules/pixi.js/node_modules/@pixi/prepare/lib/CountLimiter.mjs","../../node_modules/pixi.js/node_modules/@pixi/prepare/lib/BasePrepare.mjs","../../node_modules/pixi.js/node_modules/@pixi/prepare/lib/settings.mjs","../../node_modules/pixi.js/node_modules/@pixi/prepare/lib/Prepare.mjs","../../node_modules/pixi.js/node_modules/@pixi/sprite-tiling/lib/sprite-tiling.frag.mjs","../../node_modules/pixi.js/node_modules/@pixi/sprite-tiling/lib/sprite-tiling.vert.mjs","../../node_modules/pixi.js/node_modules/@pixi/sprite-tiling/lib/sprite-tiling-fallback.frag.mjs","../../node_modules/pixi.js/node_modules/@pixi/sprite-tiling/lib/sprite-tiling-fallback.vert.mjs","../../node_modules/pixi.js/node_modules/@pixi/sprite-tiling/lib/sprite-tiling-simple.frag.mjs","../../node_modules/pixi.js/node_modules/@pixi/sprite-tiling/lib/TilingSpriteRenderer.mjs","../../node_modules/pixi.js/node_modules/@pixi/spritesheet/lib/Spritesheet.mjs","../../node_modules/pixi.js/node_modules/@pixi/spritesheet/lib/spritesheetAsset.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/BitmapFontData.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/formats/TextFormat.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/formats/XMLFormat.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/formats/XMLStringFormat.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/formats/index.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/utils/generateFillStyle.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/utils/drawGlyph.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/utils/extractCharCode.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/utils/splitTextToCharacters.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/utils/resolveCharacters.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/BitmapFont.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/shader/msdf.frag.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/shader/msdf.vert.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/BitmapText.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-bitmap/lib/loadBitmapFont.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-html/lib/HTMLTextStyle.mjs","../../node_modules/pixi.js/node_modules/@pixi/text-html/lib/HTMLText.mjs","../../node_modules/@pixi/graphics-extras/lib/drawChamferRect.mjs","../../node_modules/@pixi/graphics-extras/lib/drawFilletRect.mjs","../../node_modules/@pixi/graphics-extras/lib/drawRegularPolygon.mjs","../../node_modules/@pixi/graphics-extras/lib/drawRoundedPolygon.mjs","../../node_modules/@pixi/graphics-extras/lib/drawRoundedShape.mjs","../../node_modules/@pixi/graphics-extras/lib/drawStar.mjs","../../node_modules/@pixi/graphics-extras/lib/drawTorus.mjs","../../node_modules/@pixi/graphics-extras/lib/index.mjs","../../node_modules/@pixi/devtools/dist/index.js","../../src/types/DetectionData.ts","../../src/models/ConjugationModel.ts","../../src/components/DisplayContainer.ts","../../src/events/ConjugationPracticeEvent.ts","../../src/scenes/Menu.ts","../../src/scenes/Options.ts","../../node_modules/@pixi/filter-kawase-blur/dist/filter-kawase-blur.mjs","../../node_modules/@pixi/filter-advanced-bloom/dist/filter-advanced-bloom.mjs","../../node_modules/@pixi/filter-bulge-pinch/dist/filter-bulge-pinch.mjs","../../node_modules/@pixi/filter-color-gradient/dist/filter-color-gradient.mjs","../../node_modules/@pixi/filter-crt/dist/filter-crt.mjs","../../node_modules/@pixi/filter-drop-shadow/dist/filter-drop-shadow.mjs","../../node_modules/@pixi/filter-glitch/dist/filter-glitch.mjs","../../node_modules/@pixi/filter-glow/dist/filter-glow.mjs","../../node_modules/@pixi/filter-godray/dist/filter-godray.mjs","../../node_modules/@pixi/filter-hsl-adjustment/dist/filter-hsl-adjustment.mjs","../../node_modules/@pixi/filter-old-film/dist/filter-old-film.mjs","../../node_modules/@pixi/filter-outline/dist/filter-outline.mjs","../../node_modules/@pixi/filter-reflection/dist/filter-reflection.mjs","../../node_modules/@pixi/filter-shockwave/dist/filter-shockwave.mjs","../../node_modules/@pixi/filter-tilt-shift/dist/filter-tilt-shift.mjs","../../node_modules/@pixi/filter-twist/dist/filter-twist.mjs","../../node_modules/@pixi/filter-zoom-blur/dist/filter-zoom-blur.mjs","../../src/components/EnglishConjugation.ts","../../src/events/TimerEvent.ts","../../src/utils/Timer.ts","../../src/components/InputField.ts","../../src/components/KeyboardButton.ts","../../src/types/ButtonData.ts","../../src/events/KeyboardEventCP.ts","../../src/types/DelayData.ts","../../src/utils/Delay.ts","../../src/components/Keyboard.ts","../../src/components/TenseHeader.ts","../../src/types/ConjugationVerb.ts","../../node_modules/@pixi/sound/lib/instance.mjs","../../node_modules/@pixi/sound/lib/htmlaudio/HTMLAudioInstance.mjs","../../node_modules/@pixi/sound/lib/htmlaudio/HTMLAudioMedia.mjs","../../node_modules/@pixi/sound/lib/SoundSprite.mjs","../../node_modules/@pixi/sound/lib/utils/supported.mjs","../../node_modules/@pixi/sound/lib/webaudio/WebAudioUtils.mjs","../../node_modules/@pixi/sound/lib/webaudio/WebAudioInstance.mjs","../../node_modules/@pixi/sound/lib/Filterable.mjs","../../node_modules/@pixi/sound/lib/webaudio/WebAudioNodes.mjs","../../node_modules/@pixi/sound/lib/webaudio/WebAudioMedia.mjs","../../node_modules/@pixi/sound/lib/Sound.mjs","../../node_modules/@pixi/sound/lib/htmlaudio/HTMLAudioContext.mjs","../../node_modules/@pixi/sound/lib/webaudio/WebAudioContext.mjs","../../node_modules/@pixi/sound/lib/SoundLibrary.mjs","../../node_modules/@pixi/sound/lib/soundAsset.mjs","../../node_modules/@pixi/sound/lib/index.mjs","../../src/types/TooltipPosition.ts","../../src/components/Tooltip.ts","../../node_modules/gsap/gsap-core.js","../../node_modules/gsap/CSSPlugin.js","../../node_modules/gsap/index.js","../../src/managers/ScoreManager.ts","../../src/managers/SoundManager.ts","../../src/components/TreeSection.ts","../../src/scenes/Activity.ts","../../node_modules/jquery/dist/jquery.js","../../src/components/PreloadCircle.ts","../../src/components/ResultBubble.ts","../../src/scenes/Results.ts","../../src/controllers/ConjugationPractice.ts","../../src/main.ts"],"sourcesContent":["var ENV = /* @__PURE__ */ ((ENV2) => (ENV2[ENV2.WEBGL_LEGACY = 0] = \"WEBGL_LEGACY\", ENV2[ENV2.WEBGL = 1] = \"WEBGL\", ENV2[ENV2.WEBGL2 = 2] = \"WEBGL2\", ENV2))(ENV || {}), RENDERER_TYPE = /* @__PURE__ */ ((RENDERER_TYPE2) => (RENDERER_TYPE2[RENDERER_TYPE2.UNKNOWN = 0] = \"UNKNOWN\", RENDERER_TYPE2[RENDERER_TYPE2.WEBGL = 1] = \"WEBGL\", RENDERER_TYPE2[RENDERER_TYPE2.CANVAS = 2] = \"CANVAS\", RENDERER_TYPE2))(RENDERER_TYPE || {}), BUFFER_BITS = /* @__PURE__ */ ((BUFFER_BITS2) => (BUFFER_BITS2[BUFFER_BITS2.COLOR = 16384] = \"COLOR\", BUFFER_BITS2[BUFFER_BITS2.DEPTH = 256] = \"DEPTH\", BUFFER_BITS2[BUFFER_BITS2.STENCIL = 1024] = \"STENCIL\", BUFFER_BITS2))(BUFFER_BITS || {}), BLEND_MODES = /* @__PURE__ */ ((BLEND_MODES2) => (BLEND_MODES2[BLEND_MODES2.NORMAL = 0] = \"NORMAL\", BLEND_MODES2[BLEND_MODES2.ADD = 1] = \"ADD\", BLEND_MODES2[BLEND_MODES2.MULTIPLY = 2] = \"MULTIPLY\", BLEND_MODES2[BLEND_MODES2.SCREEN = 3] = \"SCREEN\", BLEND_MODES2[BLEND_MODES2.OVERLAY = 4] = \"OVERLAY\", BLEND_MODES2[BLEND_MODES2.DARKEN = 5] = \"DARKEN\", BLEND_MODES2[BLEND_MODES2.LIGHTEN = 6] = \"LIGHTEN\", BLEND_MODES2[BLEND_MODES2.COLOR_DODGE = 7] = \"COLOR_DODGE\", BLEND_MODES2[BLEND_MODES2.COLOR_BURN = 8] = \"COLOR_BURN\", BLEND_MODES2[BLEND_MODES2.HARD_LIGHT = 9] = \"HARD_LIGHT\", BLEND_MODES2[BLEND_MODES2.SOFT_LIGHT = 10] = \"SOFT_LIGHT\", BLEND_MODES2[BLEND_MODES2.DIFFERENCE = 11] = \"DIFFERENCE\", BLEND_MODES2[BLEND_MODES2.EXCLUSION = 12] = \"EXCLUSION\", BLEND_MODES2[BLEND_MODES2.HUE = 13] = \"HUE\", BLEND_MODES2[BLEND_MODES2.SATURATION = 14] = \"SATURATION\", BLEND_MODES2[BLEND_MODES2.COLOR = 15] = \"COLOR\", BLEND_MODES2[BLEND_MODES2.LUMINOSITY = 16] = \"LUMINOSITY\", BLEND_MODES2[BLEND_MODES2.NORMAL_NPM = 17] = \"NORMAL_NPM\", BLEND_MODES2[BLEND_MODES2.ADD_NPM = 18] = \"ADD_NPM\", BLEND_MODES2[BLEND_MODES2.SCREEN_NPM = 19] = \"SCREEN_NPM\", BLEND_MODES2[BLEND_MODES2.NONE = 20] = \"NONE\", BLEND_MODES2[BLEND_MODES2.SRC_OVER = 0] = \"SRC_OVER\", BLEND_MODES2[BLEND_MODES2.SRC_IN = 21] = \"SRC_IN\", BLEND_MODES2[BLEND_MODES2.SRC_OUT = 22] = \"SRC_OUT\", BLEND_MODES2[BLEND_MODES2.SRC_ATOP = 23] = \"SRC_ATOP\", BLEND_MODES2[BLEND_MODES2.DST_OVER = 24] = \"DST_OVER\", BLEND_MODES2[BLEND_MODES2.DST_IN = 25] = \"DST_IN\", BLEND_MODES2[BLEND_MODES2.DST_OUT = 26] = \"DST_OUT\", BLEND_MODES2[BLEND_MODES2.DST_ATOP = 27] = \"DST_ATOP\", BLEND_MODES2[BLEND_MODES2.ERASE = 26] = \"ERASE\", BLEND_MODES2[BLEND_MODES2.SUBTRACT = 28] = \"SUBTRACT\", BLEND_MODES2[BLEND_MODES2.XOR = 29] = \"XOR\", BLEND_MODES2))(BLEND_MODES || {}), DRAW_MODES = /* @__PURE__ */ ((DRAW_MODES2) => (DRAW_MODES2[DRAW_MODES2.POINTS = 0] = \"POINTS\", DRAW_MODES2[DRAW_MODES2.LINES = 1] = \"LINES\", DRAW_MODES2[DRAW_MODES2.LINE_LOOP = 2] = \"LINE_LOOP\", DRAW_MODES2[DRAW_MODES2.LINE_STRIP = 3] = \"LINE_STRIP\", DRAW_MODES2[DRAW_MODES2.TRIANGLES = 4] = \"TRIANGLES\", DRAW_MODES2[DRAW_MODES2.TRIANGLE_STRIP = 5] = \"TRIANGLE_STRIP\", DRAW_MODES2[DRAW_MODES2.TRIANGLE_FAN = 6] = \"TRIANGLE_FAN\", DRAW_MODES2))(DRAW_MODES || {}), FORMATS = /* @__PURE__ */ ((FORMATS2) => (FORMATS2[FORMATS2.RGBA = 6408] = \"RGBA\", FORMATS2[FORMATS2.RGB = 6407] = \"RGB\", FORMATS2[FORMATS2.RG = 33319] = \"RG\", FORMATS2[FORMATS2.RED = 6403] = \"RED\", FORMATS2[FORMATS2.RGBA_INTEGER = 36249] = \"RGBA_INTEGER\", FORMATS2[FORMATS2.RGB_INTEGER = 36248] = \"RGB_INTEGER\", FORMATS2[FORMATS2.RG_INTEGER = 33320] = \"RG_INTEGER\", FORMATS2[FORMATS2.RED_INTEGER = 36244] = \"RED_INTEGER\", FORMATS2[FORMATS2.ALPHA = 6406] = \"ALPHA\", FORMATS2[FORMATS2.LUMINANCE = 6409] = \"LUMINANCE\", FORMATS2[FORMATS2.LUMINANCE_ALPHA = 6410] = \"LUMINANCE_ALPHA\", FORMATS2[FORMATS2.DEPTH_COMPONENT = 6402] = \"DEPTH_COMPONENT\", FORMATS2[FORMATS2.DEPTH_STENCIL = 34041] = \"DEPTH_STENCIL\", FORMATS2))(FORMATS || {}), TARGETS = /* @__PURE__ */ ((TARGETS2) => (TARGETS2[TARGETS2.TEXTURE_2D = 3553] = \"TEXTURE_2D\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP = 34067] = \"TEXTURE_CUBE_MAP\", TARGETS2[TARGETS2.TEXTURE_2D_ARRAY = 35866] = \"TEXTURE_2D_ARRAY\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = \"TEXTURE_CUBE_MAP_POSITIVE_X\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = \"TEXTURE_CUBE_MAP_NEGATIVE_X\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = \"TEXTURE_CUBE_MAP_POSITIVE_Y\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = \"TEXTURE_CUBE_MAP_NEGATIVE_Y\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = \"TEXTURE_CUBE_MAP_POSITIVE_Z\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = \"TEXTURE_CUBE_MAP_NEGATIVE_Z\", TARGETS2))(TARGETS || {}), TYPES = /* @__PURE__ */ ((TYPES2) => (TYPES2[TYPES2.UNSIGNED_BYTE = 5121] = \"UNSIGNED_BYTE\", TYPES2[TYPES2.UNSIGNED_SHORT = 5123] = \"UNSIGNED_SHORT\", TYPES2[TYPES2.UNSIGNED_SHORT_5_6_5 = 33635] = \"UNSIGNED_SHORT_5_6_5\", TYPES2[TYPES2.UNSIGNED_SHORT_4_4_4_4 = 32819] = \"UNSIGNED_SHORT_4_4_4_4\", TYPES2[TYPES2.UNSIGNED_SHORT_5_5_5_1 = 32820] = \"UNSIGNED_SHORT_5_5_5_1\", TYPES2[TYPES2.UNSIGNED_INT = 5125] = \"UNSIGNED_INT\", TYPES2[TYPES2.UNSIGNED_INT_10F_11F_11F_REV = 35899] = \"UNSIGNED_INT_10F_11F_11F_REV\", TYPES2[TYPES2.UNSIGNED_INT_2_10_10_10_REV = 33640] = \"UNSIGNED_INT_2_10_10_10_REV\", TYPES2[TYPES2.UNSIGNED_INT_24_8 = 34042] = \"UNSIGNED_INT_24_8\", TYPES2[TYPES2.UNSIGNED_INT_5_9_9_9_REV = 35902] = \"UNSIGNED_INT_5_9_9_9_REV\", TYPES2[TYPES2.BYTE = 5120] = \"BYTE\", TYPES2[TYPES2.SHORT = 5122] = \"SHORT\", TYPES2[TYPES2.INT = 5124] = \"INT\", TYPES2[TYPES2.FLOAT = 5126] = \"FLOAT\", TYPES2[TYPES2.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = \"FLOAT_32_UNSIGNED_INT_24_8_REV\", TYPES2[TYPES2.HALF_FLOAT = 36193] = \"HALF_FLOAT\", TYPES2))(TYPES || {}), SAMPLER_TYPES = /* @__PURE__ */ ((SAMPLER_TYPES2) => (SAMPLER_TYPES2[SAMPLER_TYPES2.FLOAT = 0] = \"FLOAT\", SAMPLER_TYPES2[SAMPLER_TYPES2.INT = 1] = \"INT\", SAMPLER_TYPES2[SAMPLER_TYPES2.UINT = 2] = \"UINT\", SAMPLER_TYPES2))(SAMPLER_TYPES || {}), SCALE_MODES = /* @__PURE__ */ ((SCALE_MODES2) => (SCALE_MODES2[SCALE_MODES2.NEAREST = 0] = \"NEAREST\", SCALE_MODES2[SCALE_MODES2.LINEAR = 1] = \"LINEAR\", SCALE_MODES2))(SCALE_MODES || {}), WRAP_MODES = /* @__PURE__ */ ((WRAP_MODES2) => (WRAP_MODES2[WRAP_MODES2.CLAMP = 33071] = \"CLAMP\", WRAP_MODES2[WRAP_MODES2.REPEAT = 10497] = \"REPEAT\", WRAP_MODES2[WRAP_MODES2.MIRRORED_REPEAT = 33648] = \"MIRRORED_REPEAT\", WRAP_MODES2))(WRAP_MODES || {}), MIPMAP_MODES = /* @__PURE__ */ ((MIPMAP_MODES2) => (MIPMAP_MODES2[MIPMAP_MODES2.OFF = 0] = \"OFF\", MIPMAP_MODES2[MIPMAP_MODES2.POW2 = 1] = \"POW2\", MIPMAP_MODES2[MIPMAP_MODES2.ON = 2] = \"ON\", MIPMAP_MODES2[MIPMAP_MODES2.ON_MANUAL = 3] = \"ON_MANUAL\", MIPMAP_MODES2))(MIPMAP_MODES || {}), ALPHA_MODES = /* @__PURE__ */ ((ALPHA_MODES2) => (ALPHA_MODES2[ALPHA_MODES2.NPM = 0] = \"NPM\", ALPHA_MODES2[ALPHA_MODES2.UNPACK = 1] = \"UNPACK\", ALPHA_MODES2[ALPHA_MODES2.PMA = 2] = \"PMA\", ALPHA_MODES2[ALPHA_MODES2.NO_PREMULTIPLIED_ALPHA = 0] = \"NO_PREMULTIPLIED_ALPHA\", ALPHA_MODES2[ALPHA_MODES2.PREMULTIPLY_ON_UPLOAD = 1] = \"PREMULTIPLY_ON_UPLOAD\", ALPHA_MODES2[ALPHA_MODES2.PREMULTIPLIED_ALPHA = 2] = \"PREMULTIPLIED_ALPHA\", ALPHA_MODES2))(ALPHA_MODES || {}), CLEAR_MODES = /* @__PURE__ */ ((CLEAR_MODES2) => (CLEAR_MODES2[CLEAR_MODES2.NO = 0] = \"NO\", CLEAR_MODES2[CLEAR_MODES2.YES = 1] = \"YES\", CLEAR_MODES2[CLEAR_MODES2.AUTO = 2] = \"AUTO\", CLEAR_MODES2[CLEAR_MODES2.BLEND = 0] = \"BLEND\", CLEAR_MODES2[CLEAR_MODES2.CLEAR = 1] = \"CLEAR\", CLEAR_MODES2[CLEAR_MODES2.BLIT = 2] = \"BLIT\", CLEAR_MODES2))(CLEAR_MODES || {}), GC_MODES = /* @__PURE__ */ ((GC_MODES2) => (GC_MODES2[GC_MODES2.AUTO = 0] = \"AUTO\", GC_MODES2[GC_MODES2.MANUAL = 1] = \"MANUAL\", GC_MODES2))(GC_MODES || {}), PRECISION = /* @__PURE__ */ ((PRECISION2) => (PRECISION2.LOW = \"lowp\", PRECISION2.MEDIUM = \"mediump\", PRECISION2.HIGH = \"highp\", PRECISION2))(PRECISION || {}), MASK_TYPES = /* @__PURE__ */ ((MASK_TYPES2) => (MASK_TYPES2[MASK_TYPES2.NONE = 0] = \"NONE\", MASK_TYPES2[MASK_TYPES2.SCISSOR = 1] = \"SCISSOR\", MASK_TYPES2[MASK_TYPES2.STENCIL = 2] = \"STENCIL\", MASK_TYPES2[MASK_TYPES2.SPRITE = 3] = \"SPRITE\", MASK_TYPES2[MASK_TYPES2.COLOR = 4] = \"COLOR\", MASK_TYPES2))(MASK_TYPES || {}), COLOR_MASK_BITS = /* @__PURE__ */ ((COLOR_MASK_BITS2) => (COLOR_MASK_BITS2[COLOR_MASK_BITS2.RED = 1] = \"RED\", COLOR_MASK_BITS2[COLOR_MASK_BITS2.GREEN = 2] = \"GREEN\", COLOR_MASK_BITS2[COLOR_MASK_BITS2.BLUE = 4] = \"BLUE\", COLOR_MASK_BITS2[COLOR_MASK_BITS2.ALPHA = 8] = \"ALPHA\", COLOR_MASK_BITS2))(COLOR_MASK_BITS || {}), MSAA_QUALITY = /* @__PURE__ */ ((MSAA_QUALITY2) => (MSAA_QUALITY2[MSAA_QUALITY2.NONE = 0] = \"NONE\", MSAA_QUALITY2[MSAA_QUALITY2.LOW = 2] = \"LOW\", MSAA_QUALITY2[MSAA_QUALITY2.MEDIUM = 4] = \"MEDIUM\", MSAA_QUALITY2[MSAA_QUALITY2.HIGH = 8] = \"HIGH\", MSAA_QUALITY2))(MSAA_QUALITY || {}), BUFFER_TYPE = /* @__PURE__ */ ((BUFFER_TYPE2) => (BUFFER_TYPE2[BUFFER_TYPE2.ELEMENT_ARRAY_BUFFER = 34963] = \"ELEMENT_ARRAY_BUFFER\", BUFFER_TYPE2[BUFFER_TYPE2.ARRAY_BUFFER = 34962] = \"ARRAY_BUFFER\", BUFFER_TYPE2[BUFFER_TYPE2.UNIFORM_BUFFER = 35345] = \"UNIFORM_BUFFER\", BUFFER_TYPE2))(BUFFER_TYPE || {});\nexport {\n ALPHA_MODES,\n BLEND_MODES,\n BUFFER_BITS,\n BUFFER_TYPE,\n CLEAR_MODES,\n COLOR_MASK_BITS,\n DRAW_MODES,\n ENV,\n FORMATS,\n GC_MODES,\n MASK_TYPES,\n MIPMAP_MODES,\n MSAA_QUALITY,\n PRECISION,\n RENDERER_TYPE,\n SAMPLER_TYPES,\n SCALE_MODES,\n TARGETS,\n TYPES,\n WRAP_MODES\n};\n//# sourceMappingURL=index.mjs.map\n","const BrowserAdapter = {\n /**\n * Creates a canvas element of the given size.\n * This canvas is created using the browser's native canvas element.\n * @param width - width of the canvas\n * @param height - height of the canvas\n */\n createCanvas: (width, height) => {\n const canvas = document.createElement(\"canvas\");\n return canvas.width = width, canvas.height = height, canvas;\n },\n getCanvasRenderingContext2D: () => CanvasRenderingContext2D,\n getWebGLRenderingContext: () => WebGLRenderingContext,\n getNavigator: () => navigator,\n getBaseUrl: () => document.baseURI ?? window.location.href,\n getFontFaceSet: () => document.fonts,\n fetch: (url, options) => fetch(url, options),\n parseXML: (xml) => new DOMParser().parseFromString(xml, \"text/xml\")\n};\nexport {\n BrowserAdapter\n};\n//# sourceMappingURL=adapter.mjs.map\n","import { BrowserAdapter } from \"./adapter.mjs\";\nconst settings = {\n /**\n * This adapter is used to call methods that are platform dependent.\n * For example `document.createElement` only runs on the web but fails in node environments.\n * This allows us to support more platforms by abstracting away specific implementations per platform.\n *\n * By default the adapter is set to work in the browser. However you can create your own\n * by implementing the `IAdapter` interface. See `IAdapter` for more information.\n * @name ADAPTER\n * @memberof PIXI.settings\n * @type {PIXI.IAdapter}\n * @default PIXI.BrowserAdapter\n */\n ADAPTER: BrowserAdapter,\n /**\n * Default resolution / device pixel ratio of the renderer.\n * @static\n * @name RESOLUTION\n * @memberof PIXI.settings\n * @type {number}\n * @default 1\n */\n RESOLUTION: 1,\n /**\n * Enables bitmap creation before image load. This feature is experimental.\n * @static\n * @name CREATE_IMAGE_BITMAP\n * @memberof PIXI.settings\n * @type {boolean}\n * @default false\n */\n CREATE_IMAGE_BITMAP: !1,\n /**\n * If true PixiJS will Math.floor() x/y values when rendering, stopping pixel interpolation.\n * Advantages can include sharper image quality (like text) and faster rendering on canvas.\n * The main disadvantage is movement of objects may appear less smooth.\n * @static\n * @memberof PIXI.settings\n * @type {boolean}\n * @default false\n */\n ROUND_PIXELS: !1\n};\nexport {\n settings\n};\n//# sourceMappingURL=settings.mjs.map\n","var appleIphone = /iPhone/i;\nvar appleIpod = /iPod/i;\nvar appleTablet = /iPad/i;\nvar appleUniversal = /\\biOS-universal(?:.+)Mac\\b/i;\nvar androidPhone = /\\bAndroid(?:.+)Mobile\\b/i;\nvar androidTablet = /Android/i;\nvar amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i;\nvar amazonTablet = /Silk/i;\nvar windowsPhone = /Windows Phone/i;\nvar windowsTablet = /\\bWindows(?:.+)ARM\\b/i;\nvar otherBlackBerry = /BlackBerry/i;\nvar otherBlackBerry10 = /BB10/i;\nvar otherOpera = /Opera Mini/i;\nvar otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nvar otherFirefox = /Mobile(?:.+)Firefox\\b/i;\nvar isAppleTabletOnIos13 = function (navigator) {\n return (typeof navigator !== 'undefined' &&\n navigator.platform === 'MacIntel' &&\n typeof navigator.maxTouchPoints === 'number' &&\n navigator.maxTouchPoints > 1 &&\n typeof MSStream === 'undefined');\n};\nfunction createMatch(userAgent) {\n return function (regex) { return regex.test(userAgent); };\n}\nexport default function isMobile(param) {\n var nav = {\n userAgent: '',\n platform: '',\n maxTouchPoints: 0\n };\n if (!param && typeof navigator !== 'undefined') {\n nav = {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n maxTouchPoints: navigator.maxTouchPoints || 0\n };\n }\n else if (typeof param === 'string') {\n nav.userAgent = param;\n }\n else if (param && param.userAgent) {\n nav = {\n userAgent: param.userAgent,\n platform: param.platform,\n maxTouchPoints: param.maxTouchPoints || 0\n };\n }\n var userAgent = nav.userAgent;\n var tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n var match = createMatch(userAgent);\n var result = {\n apple: {\n phone: match(appleIphone) && !match(windowsPhone),\n ipod: match(appleIpod),\n tablet: !match(appleIphone) &&\n (match(appleTablet) || isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone),\n universal: match(appleUniversal),\n device: (match(appleIphone) ||\n match(appleIpod) ||\n match(appleTablet) ||\n match(appleUniversal) ||\n isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone)\n },\n amazon: {\n phone: match(amazonPhone),\n tablet: !match(amazonPhone) && match(amazonTablet),\n device: match(amazonPhone) || match(amazonTablet)\n },\n android: {\n phone: (!match(windowsPhone) && match(amazonPhone)) ||\n (!match(windowsPhone) && match(androidPhone)),\n tablet: !match(windowsPhone) &&\n !match(amazonPhone) &&\n !match(androidPhone) &&\n (match(amazonTablet) || match(androidTablet)),\n device: (!match(windowsPhone) &&\n (match(amazonPhone) ||\n match(amazonTablet) ||\n match(androidPhone) ||\n match(androidTablet))) ||\n match(/\\bokhttp\\b/i)\n },\n windows: {\n phone: match(windowsPhone),\n tablet: match(windowsTablet),\n device: match(windowsPhone) || match(windowsTablet)\n },\n other: {\n blackberry: match(otherBlackBerry),\n blackberry10: match(otherBlackBerry10),\n opera: match(otherOpera),\n firefox: match(otherFirefox),\n chrome: match(otherChrome),\n device: match(otherBlackBerry) ||\n match(otherBlackBerry10) ||\n match(otherOpera) ||\n match(otherFirefox) ||\n match(otherChrome)\n },\n any: false,\n phone: false,\n tablet: false\n };\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n//# sourceMappingURL=isMobile.js.map","import isMobileJs from \"ismobilejs\";\nconst isMobileCall = isMobileJs.default ?? isMobileJs, isMobile = isMobileCall(globalThis.navigator);\nexport {\n isMobile\n};\n//# sourceMappingURL=isMobile.mjs.map\n","import { settings } from \"@pixi/settings\";\nimport { settings as settings2 } from \"@pixi/settings\";\nsettings.RETINA_PREFIX = /@([0-9\\.]+)x/;\nsettings.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT = !1;\nexport {\n settings2 as settings\n};\n//# sourceMappingURL=settings.mjs.map\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {(o: {}, p: PropertyKey) => p is keyof o} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar gopd = require('gopd');\n\n/** @type {(obj: Record, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @typedef {(...args: unknown[]) => unknown} Func */\n\n/** @type {(fn: T, length: number, loose?: boolean) => T} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","export default {}","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (obj === global) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * 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 permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode');\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n /*\n * RFC 2396: characters reserved for delimiting URLs.\n * We actually just auto-escape these.\n */\n delims = [\n '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [\n '{', '}', '|', '\\\\', '^', '`'\n ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n /*\n * Characters that are never ever allowed in a hostname.\n * Note that any invalid chars are also handled, but these\n * are the ones that are *expected* to be seen, so we fast-path\n * them.\n */\n nonHostChars = [\n '%', '/', '?', ';', '#'\n ].concat(autoEscape),\n hostEndingChars = [\n '/', '?', '#'\n ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (typeof url !== 'string') {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n /*\n * Copy chrome, IE, opera backslash-handling behavior.\n * Back slashes before the query string get converted to forward slashes\n * See: https://code.google.com/p/chromium/issues/detail?id=25916\n */\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n /*\n * trim before proceeding.\n * This is to support parse stuff like \" http://foo.com \\n\"\n */\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n /*\n * figure out if it's got a host\n * user@server is *always* interpreted as a hostname, and url\n * resolution will treat //foo/bar as host=foo,path=bar because that's\n * how the browser resolves relative URLs.\n */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n /*\n * there's a hostname.\n * the first instance of /, ?, ;, or # ends the host.\n *\n * If there is an @ in the hostname, then non-host chars *are* allowed\n * to the left of the last @ sign, unless some host-ending character\n * comes *before* the @-sign.\n * URLs are obnoxious.\n *\n * ex:\n * http://a@b@c/ => user:a@b host:c\n * http://a@b?@c => user:a host:c path:/?@c\n */\n\n /*\n * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n * Review our test case against browsers more comprehensively.\n */\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n\n /*\n * at this point, either we have an explicit point where the\n * auth portion cannot go past, or the last @ char is the decider.\n */\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n /*\n * atSign must be in auth portion.\n * http://a@b/c@d => host:b auth:a path:/c@d\n */\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n /*\n * Now we have a portion which is definitely the auth.\n * Pull that off.\n */\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) { hostEnd = rest.length; }\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n /*\n * we've indicated that there is a hostname,\n * so even if it's empty, it has to be present.\n */\n this.hostname = this.hostname || '';\n\n /*\n * if hostname begins with [ and ends with ]\n * assume that it's an IPv6 address.\n */\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n /*\n * we replace non-ASCII char with a temporary placeholder\n * we need this to make sure size of hostname is not\n * broken by replacing non-ASCII by nothing\n */\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n /*\n * IDNA Support: Returns a punycoded representation of \"domain\".\n * It only converts parts of the domain name that\n * have non-ASCII characters, i.e. it doesn't matter if\n * you call it with a domain that already is ASCII-only.\n */\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n /*\n * strip [ and ] from the hostname\n * the host field still retains them, though\n */\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n /*\n * now rest is set to the post-host stuff.\n * chop off any delim chars.\n */\n if (!unsafeProtocol[lowerProto]) {\n\n /*\n * First, make 100% sure that any \"autoEscape\" chars get\n * escaped, even if encodeURIComponent doesn't think they\n * need to be.\n */\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) { continue; }\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n // to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n /*\n * ensure it's an object, and not a string url.\n * If it's an obj, this is a no-op.\n * this way, you can call url_format() on strings\n * to clean up potentially wonky urls.\n */\n if (typeof obj === 'string') { obj = urlParse(obj); }\n if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n query = querystring.stringify(this.query, {\n arrayFormat: 'repeat',\n addQueryPrefix: false\n });\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n /*\n * only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n * unless they had them to begin with.\n */\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) { return relative; }\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (typeof relative === 'string') {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n /*\n * hash is always overridden, no matter what.\n * even href=\"\" will remove it.\n */\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n }\n\n // urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.pathname = '/';\n result.path = result.pathname;\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n /*\n * if it's a known url protocol, then changing\n * the protocol does weird things\n * first, if it's not file:, then we MUST have a host,\n * and if there was a path\n * to begin with, then we MUST have a path.\n * if it is file:, then the host is dropped,\n * because that's known to be hostless.\n * anything else is assumed to be absolute.\n */\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift())) { }\n if (!relative.host) { relative.host = ''; }\n if (!relative.hostname) { relative.hostname = ''; }\n if (relPath[0] !== '') { relPath.unshift(''); }\n if (relPath.length < 2) { relPath.unshift(''); }\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n /*\n * if the url is a non-slashed url, then relative\n * links like ../.. should be able\n * to crawl up to the hostname, as well. This is strange.\n * result.protocol has already been set by now.\n * Later on, put the first path part into the host field.\n */\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n /*\n * it's relative\n * throw away the existing file, and take the new path instead.\n */\n if (!srcPath) { srcPath = []; }\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (relative.search != null) {\n /*\n * just pull out the search.\n * like href='?foo'.\n * Put this after the other two cases because it simplifies the booleans\n */\n if (psychotic) {\n result.host = srcPath.shift();\n result.hostname = result.host;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n // to support http.request\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n /*\n * no path at all. easy.\n * we've already handled the other stuff above.\n */\n result.pathname = null;\n // to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n /*\n * if a url ENDs in . or .., then it must get a trailing slash.\n * however, if it ends in anything else non-slashy,\n * then it must NOT get a trailing slash.\n */\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n /*\n * strip single dots, resolve double dots to parent dir\n * if the path tries to go above the root, `up` ends up > 0\n */\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n result.host = result.hostname;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (srcPath.length > 0) {\n result.pathname = srcPath.join('/');\n } else {\n result.pathname = null;\n result.path = null;\n }\n\n // to support request.http\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","const warnings = {};\nfunction deprecation(version, message, ignoreDepth = 3) {\n if (warnings[message])\n return;\n let stack = new Error().stack;\n typeof stack > \"u\" ? console.warn(\"PixiJS Deprecation Warning: \", `${message}\nDeprecated since v${version}`) : (stack = stack.split(`\n`).splice(ignoreDepth).join(`\n`), console.groupCollapsed ? (console.groupCollapsed(\n \"%cPixiJS Deprecation Warning: %c%s\",\n \"color:#614108;background:#fffbe6\",\n \"font-weight:normal;color:#614108;background:#fffbe6\",\n `${message}\nDeprecated since v${version}`\n ), console.warn(stack), console.groupEnd()) : (console.warn(\"PixiJS Deprecation Warning: \", `${message}\nDeprecated since v${version}`), console.warn(stack))), warnings[message] = !0;\n}\nexport {\n deprecation\n};\n//# sourceMappingURL=deprecation.mjs.map\n","import { settings } from \"@pixi/settings\";\nfunction assertPath(path2) {\n if (typeof path2 != \"string\")\n throw new TypeError(`Path must be a string. Received ${JSON.stringify(path2)}`);\n}\nfunction removeUrlParams(url) {\n return url.split(\"?\")[0].split(\"#\")[0];\n}\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction replaceAll(str, find, replace) {\n return str.replace(new RegExp(escapeRegExp(find), \"g\"), replace);\n}\nfunction normalizeStringPosix(path2, allowAboveRoot) {\n let res = \"\", lastSegmentLength = 0, lastSlash = -1, dots = 0, code = -1;\n for (let i = 0; i <= path2.length; ++i) {\n if (i < path2.length)\n code = path2.charCodeAt(i);\n else {\n if (code === 47)\n break;\n code = 47;\n }\n if (code === 47) {\n if (!(lastSlash === i - 1 || dots === 1))\n if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(\"/\");\n if (lastSlashIndex !== res.length - 1) {\n lastSlashIndex === -1 ? (res = \"\", lastSegmentLength = 0) : (res = res.slice(0, lastSlashIndex), lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\")), lastSlash = i, dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = \"\", lastSegmentLength = 0, lastSlash = i, dots = 0;\n continue;\n }\n }\n allowAboveRoot && (res.length > 0 ? res += \"/..\" : res = \"..\", lastSegmentLength = 2);\n } else\n res.length > 0 ? res += `/${path2.slice(lastSlash + 1, i)}` : res = path2.slice(lastSlash + 1, i), lastSegmentLength = i - lastSlash - 1;\n lastSlash = i, dots = 0;\n } else\n code === 46 && dots !== -1 ? ++dots : dots = -1;\n }\n return res;\n}\nconst path = {\n /**\n * Converts a path to posix format.\n * @param path - The path to convert to posix\n */\n toPosix(path2) {\n return replaceAll(path2, \"\\\\\", \"/\");\n },\n /**\n * Checks if the path is a URL e.g. http://, https://\n * @param path - The path to check\n */\n isUrl(path2) {\n return /^https?:/.test(this.toPosix(path2));\n },\n /**\n * Checks if the path is a data URL\n * @param path - The path to check\n */\n isDataUrl(path2) {\n return /^data:([a-z]+\\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s<>]*?)$/i.test(path2);\n },\n /**\n * Checks if the path is a blob URL\n * @param path - The path to check\n */\n isBlobUrl(path2) {\n return path2.startsWith(\"blob:\");\n },\n /**\n * Checks if the path has a protocol e.g. http://, https://, file:///, data:, blob:, C:/\n * This will return true for windows file paths\n * @param path - The path to check\n */\n hasProtocol(path2) {\n return /^[^/:]+:/.test(this.toPosix(path2));\n },\n /**\n * Returns the protocol of the path e.g. http://, https://, file:///, data:, blob:, C:/\n * @param path - The path to get the protocol from\n */\n getProtocol(path2) {\n assertPath(path2), path2 = this.toPosix(path2);\n const matchFile = /^file:\\/\\/\\//.exec(path2);\n if (matchFile)\n return matchFile[0];\n const matchProtocol = /^[^/:]+:\\/{0,2}/.exec(path2);\n return matchProtocol ? matchProtocol[0] : \"\";\n },\n /**\n * Converts URL to an absolute path.\n * When loading from a Web Worker, we must use absolute paths.\n * If the URL is already absolute we return it as is\n * If it's not, we convert it\n * @param url - The URL to test\n * @param customBaseUrl - The base URL to use\n * @param customRootUrl - The root URL to use\n */\n toAbsolute(url, customBaseUrl, customRootUrl) {\n if (assertPath(url), this.isDataUrl(url) || this.isBlobUrl(url))\n return url;\n const baseUrl = removeUrlParams(this.toPosix(customBaseUrl ?? settings.ADAPTER.getBaseUrl())), rootUrl = removeUrlParams(this.toPosix(customRootUrl ?? this.rootname(baseUrl)));\n return url = this.toPosix(url), url.startsWith(\"/\") ? path.join(rootUrl, url.slice(1)) : this.isAbsolute(url) ? url : this.join(baseUrl, url);\n },\n /**\n * Normalizes the given path, resolving '..' and '.' segments\n * @param path - The path to normalize\n */\n normalize(path2) {\n if (assertPath(path2), path2.length === 0)\n return \".\";\n if (this.isDataUrl(path2) || this.isBlobUrl(path2))\n return path2;\n path2 = this.toPosix(path2);\n let protocol = \"\";\n const isAbsolute = path2.startsWith(\"/\");\n this.hasProtocol(path2) && (protocol = this.rootname(path2), path2 = path2.slice(protocol.length));\n const trailingSeparator = path2.endsWith(\"/\");\n return path2 = normalizeStringPosix(path2, !1), path2.length > 0 && trailingSeparator && (path2 += \"/\"), isAbsolute ? `/${path2}` : protocol + path2;\n },\n /**\n * Determines if path is an absolute path.\n * Absolute paths can be urls, data urls, or paths on disk\n * @param path - The path to test\n */\n isAbsolute(path2) {\n return assertPath(path2), path2 = this.toPosix(path2), this.hasProtocol(path2) ? !0 : path2.startsWith(\"/\");\n },\n /**\n * Joins all given path segments together using the platform-specific separator as a delimiter,\n * then normalizes the resulting path\n * @param segments - The segments of the path to join\n */\n join(...segments) {\n if (segments.length === 0)\n return \".\";\n let joined;\n for (let i = 0; i < segments.length; ++i) {\n const arg = segments[i];\n if (assertPath(arg), arg.length > 0)\n if (joined === void 0)\n joined = arg;\n else {\n const prevArg = segments[i - 1] ?? \"\";\n this.joinExtensions.includes(this.extname(prevArg).toLowerCase()) ? joined += `/../${arg}` : joined += `/${arg}`;\n }\n }\n return joined === void 0 ? \".\" : this.normalize(joined);\n },\n /**\n * Returns the directory name of a path\n * @param path - The path to parse\n */\n dirname(path2) {\n if (assertPath(path2), path2.length === 0)\n return \".\";\n path2 = this.toPosix(path2);\n let code = path2.charCodeAt(0);\n const hasRoot = code === 47;\n let end = -1, matchedSlash = !0;\n const proto = this.getProtocol(path2), origpath = path2;\n path2 = path2.slice(proto.length);\n for (let i = path2.length - 1; i >= 1; --i)\n if (code = path2.charCodeAt(i), code === 47) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else\n matchedSlash = !1;\n return end === -1 ? hasRoot ? \"/\" : this.isUrl(origpath) ? proto + path2 : proto : hasRoot && end === 1 ? \"//\" : proto + path2.slice(0, end);\n },\n /**\n * Returns the root of the path e.g. /, C:/, file:///, http://domain.com/\n * @param path - The path to parse\n */\n rootname(path2) {\n assertPath(path2), path2 = this.toPosix(path2);\n let root = \"\";\n if (path2.startsWith(\"/\") ? root = \"/\" : root = this.getProtocol(path2), this.isUrl(path2)) {\n const index = path2.indexOf(\"/\", root.length);\n index !== -1 ? root = path2.slice(0, index) : root = path2, root.endsWith(\"/\") || (root += \"/\");\n }\n return root;\n },\n /**\n * Returns the last portion of a path\n * @param path - The path to test\n * @param ext - Optional extension to remove\n */\n basename(path2, ext) {\n assertPath(path2), ext && assertPath(ext), path2 = removeUrlParams(this.toPosix(path2));\n let start = 0, end = -1, matchedSlash = !0, i;\n if (ext !== void 0 && ext.length > 0 && ext.length <= path2.length) {\n if (ext.length === path2.length && ext === path2)\n return \"\";\n let extIdx = ext.length - 1, firstNonSlashEnd = -1;\n for (i = path2.length - 1; i >= 0; --i) {\n const code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else\n firstNonSlashEnd === -1 && (matchedSlash = !1, firstNonSlashEnd = i + 1), extIdx >= 0 && (code === ext.charCodeAt(extIdx) ? --extIdx === -1 && (end = i) : (extIdx = -1, end = firstNonSlashEnd));\n }\n return start === end ? end = firstNonSlashEnd : end === -1 && (end = path2.length), path2.slice(start, end);\n }\n for (i = path2.length - 1; i >= 0; --i)\n if (path2.charCodeAt(i) === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else\n end === -1 && (matchedSlash = !1, end = i + 1);\n return end === -1 ? \"\" : path2.slice(start, end);\n },\n /**\n * Returns the extension of the path, from the last occurrence of the . (period) character to end of string in the last\n * portion of the path. If there is no . in the last portion of the path, or if there are no . characters other than\n * the first character of the basename of path, an empty string is returned.\n * @param path - The path to parse\n */\n extname(path2) {\n assertPath(path2), path2 = removeUrlParams(this.toPosix(path2));\n let startDot = -1, startPart = 0, end = -1, matchedSlash = !0, preDotState = 0;\n for (let i = path2.length - 1; i >= 0; --i) {\n const code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n end === -1 && (matchedSlash = !1, end = i + 1), code === 46 ? startDot === -1 ? startDot = i : preDotState !== 1 && (preDotState = 1) : startDot !== -1 && (preDotState = -1);\n }\n return startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1 ? \"\" : path2.slice(startDot, end);\n },\n /**\n * Parses a path into an object containing the 'root', `dir`, `base`, `ext`, and `name` properties.\n * @param path - The path to parse\n */\n parse(path2) {\n assertPath(path2);\n const ret = { root: \"\", dir: \"\", base: \"\", ext: \"\", name: \"\" };\n if (path2.length === 0)\n return ret;\n path2 = removeUrlParams(this.toPosix(path2));\n let code = path2.charCodeAt(0);\n const isAbsolute = this.isAbsolute(path2);\n let start;\n const protocol = \"\";\n ret.root = this.rootname(path2), isAbsolute || this.hasProtocol(path2) ? start = 1 : start = 0;\n let startDot = -1, startPart = 0, end = -1, matchedSlash = !0, i = path2.length - 1, preDotState = 0;\n for (; i >= start; --i) {\n if (code = path2.charCodeAt(i), code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n end === -1 && (matchedSlash = !1, end = i + 1), code === 46 ? startDot === -1 ? startDot = i : preDotState !== 1 && (preDotState = 1) : startDot !== -1 && (preDotState = -1);\n }\n return startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1 ? end !== -1 && (startPart === 0 && isAbsolute ? ret.base = ret.name = path2.slice(1, end) : ret.base = ret.name = path2.slice(startPart, end)) : (startPart === 0 && isAbsolute ? (ret.name = path2.slice(1, startDot), ret.base = path2.slice(1, end)) : (ret.name = path2.slice(startPart, startDot), ret.base = path2.slice(startPart, end)), ret.ext = path2.slice(startDot, end)), ret.dir = this.dirname(path2), protocol && (ret.dir = protocol + ret.dir), ret;\n },\n sep: \"/\",\n delimiter: \":\",\n joinExtensions: [\".html\"]\n};\nexport {\n path\n};\n//# sourceMappingURL=path.mjs.map\n","import { ALPHA_MODES } from \"@pixi/constants\";\nlet promise;\nasync function detectVideoAlphaMode() {\n return promise ?? (promise = (async () => {\n const gl = document.createElement(\"canvas\").getContext(\"webgl\");\n if (!gl)\n return ALPHA_MODES.UNPACK;\n const video = await new Promise((resolve) => {\n const video2 = document.createElement(\"video\");\n video2.onloadeddata = () => resolve(video2), video2.onerror = () => resolve(null), video2.autoplay = !1, video2.crossOrigin = \"anonymous\", video2.preload = \"auto\", video2.src = \"data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=\", video2.load();\n });\n if (!video)\n return ALPHA_MODES.UNPACK;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n const framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer), gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n ), gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1), gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, gl.NONE), gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, video);\n const pixel = new Uint8Array(4);\n return gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pixel), gl.deleteFramebuffer(framebuffer), gl.deleteTexture(texture), gl.getExtension(\"WEBGL_lose_context\")?.loseContext(), pixel[0] <= pixel[3] ? ALPHA_MODES.PMA : ALPHA_MODES.UNPACK;\n })()), promise;\n}\nexport {\n detectVideoAlphaMode\n};\n//# sourceMappingURL=detectVideoAlphaMode.mjs.map\n","import \"../settings.mjs\";\nimport { settings } from \"@pixi/settings\";\nlet supported;\nfunction isWebGLSupported() {\n return typeof supported > \"u\" && (supported = function() {\n const contextOptions = {\n stencil: !0,\n failIfMajorPerformanceCaveat: settings.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT\n };\n try {\n if (!settings.ADAPTER.getWebGLRenderingContext())\n return !1;\n const canvas = settings.ADAPTER.createCanvas();\n let gl = canvas.getContext(\"webgl\", contextOptions) || canvas.getContext(\"experimental-webgl\", contextOptions);\n const success = !!gl?.getContextAttributes()?.stencil;\n if (gl) {\n const loseContext = gl.getExtension(\"WEBGL_lose_context\");\n loseContext && loseContext.loseContext();\n }\n return gl = null, success;\n } catch {\n return !1;\n }\n }()), supported;\n}\nexport {\n isWebGLSupported\n};\n//# sourceMappingURL=isWebGLSupported.mjs.map\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n","export default function(e,f){var a={white:\"#ffffff\",bisque:\"#ffe4c4\",blue:\"#0000ff\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",azure:\"#f0ffff\",whitesmoke:\"#f5f5f5\",papayawhip:\"#ffefd5\",plum:\"#dda0dd\",blanchedalmond:\"#ffebcd\",black:\"#000000\",gold:\"#ffd700\",goldenrod:\"#daa520\",gainsboro:\"#dcdcdc\",cornsilk:\"#fff8dc\",cornflowerblue:\"#6495ed\",burlywood:\"#deb887\",aquamarine:\"#7fffd4\",beige:\"#f5f5dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkkhaki:\"#bdb76b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkgrey:\"#a9a9a9\",peachpuff:\"#ffdab9\",darkmagenta:\"#8b008b\",darkred:\"#8b0000\",darkorchid:\"#9932cc\",darkorange:\"#ff8c00\",darkslateblue:\"#483d8b\",gray:\"#808080\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",wheat:\"#f5deb3\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",ghostwhite:\"#f8f8ff\",darkviolet:\"#9400d3\",magenta:\"#ff00ff\",green:\"#008000\",dodgerblue:\"#1e90ff\",grey:\"#808080\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",blueviolet:\"#8a2be2\",forestgreen:\"#228b22\",lawngreen:\"#7cfc00\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",fuchsia:\"#ff00ff\",brown:\"#a52a2a\",maroon:\"#800000\",mediumblue:\"#0000cd\",lightcoral:\"#f08080\",darkturquoise:\"#00ced1\",lightcyan:\"#e0ffff\",ivory:\"#fffff0\",lightyellow:\"#ffffe0\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",linen:\"#faf0e6\",mediumaquamarine:\"#66cdaa\",lemonchiffon:\"#fffacd\",lime:\"#00ff00\",khaki:\"#f0e68c\",mediumseagreen:\"#3cb371\",limegreen:\"#32cd32\",mediumspringgreen:\"#00fa9a\",lightskyblue:\"#87cefa\",lightblue:\"#add8e6\",midnightblue:\"#191970\",lightpink:\"#ffb6c1\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",mintcream:\"#f5fffa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",navajowhite:\"#ffdead\",navy:\"#000080\",mediumvioletred:\"#c71585\",powderblue:\"#b0e0e6\",palegoldenrod:\"#eee8aa\",oldlace:\"#fdf5e6\",paleturquoise:\"#afeeee\",mediumturquoise:\"#48d1cc\",mediumorchid:\"#ba55d3\",rebeccapurple:\"#663399\",lightsteelblue:\"#b0c4de\",mediumslateblue:\"#7b68ee\",thistle:\"#d8bfd8\",tan:\"#d2b48c\",orchid:\"#da70d6\",mediumpurple:\"#9370db\",purple:\"#800080\",pink:\"#ffc0cb\",skyblue:\"#87ceeb\",springgreen:\"#00ff7f\",palegreen:\"#98fb98\",red:\"#ff0000\",yellow:\"#ffff00\",slateblue:\"#6a5acd\",lavenderblush:\"#fff0f5\",peru:\"#cd853f\",palevioletred:\"#db7093\",violet:\"#ee82ee\",teal:\"#008080\",slategray:\"#708090\",slategrey:\"#708090\",aliceblue:\"#f0f8ff\",darkseagreen:\"#8fbc8f\",darkolivegreen:\"#556b2f\",greenyellow:\"#adff2f\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",tomato:\"#ff6347\",silver:\"#c0c0c0\",sienna:\"#a0522d\",lavender:\"#e6e6fa\",lightgreen:\"#90ee90\",orange:\"#ffa500\",orangered:\"#ff4500\",steelblue:\"#4682b4\",royalblue:\"#4169e1\",turquoise:\"#40e0d0\",yellowgreen:\"#9acd32\",salmon:\"#fa8072\",saddlebrown:\"#8b4513\",sandybrown:\"#f4a460\",rosybrown:\"#bc8f8f\",darksalmon:\"#e9967a\",lightgoldenrodyellow:\"#fafad2\",snow:\"#fffafa\",lightgrey:\"#d3d3d3\",lightgray:\"#d3d3d3\",dimgray:\"#696969\",dimgrey:\"#696969\",olivedrab:\"#6b8e23\",olive:\"#808000\"},r={};for(var d in a)r[a[d]]=d;var l={};e.prototype.toName=function(f){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return\"transparent\";var d,i,n=r[this.toHex()];if(n)return n;if(null==f?void 0:f.closest){var o=this.toRgb(),t=1/0,b=\"black\";if(!l.length)for(var c in a)l[c]=new e(a[c]).toRgb();for(var g in a){var u=(d=o,i=l[g],Math.pow(d.r-i.r,2)+Math.pow(d.g-i.g,2)+Math.pow(d.b-i.b,2));u v === value2[i]);\n if (value1 !== null && value2 !== null) {\n const keys1 = Object.keys(value1), keys2 = Object.keys(value2);\n return keys1.length !== keys2.length ? !1 : keys1.every((key) => value1[key] === value2[key]);\n }\n return value1 === value2;\n }\n /**\n * Convert to a RGBA color object.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toRgb(); // returns { r: 1, g: 1, b: 1, a: 1 }\n */\n toRgba() {\n const [r, g, b, a] = this._components;\n return { r, g, b, a };\n }\n /**\n * Convert to a RGB color object.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toRgb(); // returns { r: 1, g: 1, b: 1 }\n */\n toRgb() {\n const [r, g, b] = this._components;\n return { r, g, b };\n }\n /** Convert to a CSS-style rgba string: `rgba(255,255,255,1.0)`. */\n toRgbaString() {\n const [r, g, b] = this.toUint8RgbArray();\n return `rgba(${r},${g},${b},${this.alpha})`;\n }\n toUint8RgbArray(out) {\n const [r, g, b] = this._components;\n return out = out ?? [], out[0] = Math.round(r * 255), out[1] = Math.round(g * 255), out[2] = Math.round(b * 255), out;\n }\n toRgbArray(out) {\n out = out ?? [];\n const [r, g, b] = this._components;\n return out[0] = r, out[1] = g, out[2] = b, out;\n }\n /**\n * Convert to a hexadecimal number.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toNumber(); // returns 16777215\n */\n toNumber() {\n return this._int;\n }\n /**\n * Convert to a hexadecimal number in little endian format (e.g., BBGGRR).\n * @example\n * import { Color } from 'pixi.js';\n * new Color(0xffcc99).toLittleEndianNumber(); // returns 0x99ccff\n * @returns {number} - The color as a number in little endian format.\n */\n toLittleEndianNumber() {\n const value = this._int;\n return (value >> 16) + (value & 65280) + ((value & 255) << 16);\n }\n /**\n * Multiply with another color. This action is destructive, and will\n * override the previous `value` property to be `null`.\n * @param {PIXI.ColorSource} value - The color to multiply by.\n */\n multiply(value) {\n const [r, g, b, a] = _Color2.temp.setValue(value)._components;\n return this._components[0] *= r, this._components[1] *= g, this._components[2] *= b, this._components[3] *= a, this.refreshInt(), this._value = null, this;\n }\n /**\n * Converts color to a premultiplied alpha format. This action is destructive, and will\n * override the previous `value` property to be `null`.\n * @param alpha - The alpha to multiply by.\n * @param {boolean} [applyToRGB=true] - Whether to premultiply RGB channels.\n * @returns {PIXI.Color} - Itself.\n */\n premultiply(alpha, applyToRGB = !0) {\n return applyToRGB && (this._components[0] *= alpha, this._components[1] *= alpha, this._components[2] *= alpha), this._components[3] = alpha, this.refreshInt(), this._value = null, this;\n }\n /**\n * Premultiplies alpha with current color.\n * @param {number} alpha - The alpha to multiply by.\n * @param {boolean} [applyToRGB=true] - Whether to premultiply RGB channels.\n * @returns {number} tint multiplied by alpha\n */\n toPremultiplied(alpha, applyToRGB = !0) {\n if (alpha === 1)\n return (255 << 24) + this._int;\n if (alpha === 0)\n return applyToRGB ? 0 : this._int;\n let r = this._int >> 16 & 255, g = this._int >> 8 & 255, b = this._int & 255;\n return applyToRGB && (r = r * alpha + 0.5 | 0, g = g * alpha + 0.5 | 0, b = b * alpha + 0.5 | 0), (alpha * 255 << 24) + (r << 16) + (g << 8) + b;\n }\n /**\n * Convert to a hexidecimal string.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toHex(); // returns \"#ffffff\"\n */\n toHex() {\n const hexString = this._int.toString(16);\n return `#${\"000000\".substring(0, 6 - hexString.length) + hexString}`;\n }\n /**\n * Convert to a hexidecimal string with alpha.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toHexa(); // returns \"#ffffffff\"\n */\n toHexa() {\n const alphaString = Math.round(this._components[3] * 255).toString(16);\n return this.toHex() + \"00\".substring(0, 2 - alphaString.length) + alphaString;\n }\n /**\n * Set alpha, suitable for chaining.\n * @param alpha\n */\n setAlpha(alpha) {\n return this._components[3] = this._clamp(alpha), this;\n }\n /**\n * Rounds the specified color according to the step. This action is destructive, and will\n * override the previous `value` property to be `null`. The alpha component is not rounded.\n * @param steps - Number of steps which will be used as a cap when rounding colors\n * @deprecated since 7.3.0\n */\n round(steps) {\n const [r, g, b] = this._components;\n return this._components[0] = Math.round(r * steps) / steps, this._components[1] = Math.round(g * steps) / steps, this._components[2] = Math.round(b * steps) / steps, this.refreshInt(), this._value = null, this;\n }\n toArray(out) {\n out = out ?? [];\n const [r, g, b, a] = this._components;\n return out[0] = r, out[1] = g, out[2] = b, out[3] = a, out;\n }\n /**\n * Normalize the input value into rgba\n * @param value - Input value\n */\n normalize(value) {\n let r, g, b, a;\n if ((typeof value == \"number\" || value instanceof Number) && value >= 0 && value <= 16777215) {\n const int = value;\n r = (int >> 16 & 255) / 255, g = (int >> 8 & 255) / 255, b = (int & 255) / 255, a = 1;\n } else if ((Array.isArray(value) || value instanceof Float32Array) && value.length >= 3 && value.length <= 4)\n value = this._clamp(value), [r, g, b, a = 1] = value;\n else if ((value instanceof Uint8Array || value instanceof Uint8ClampedArray) && value.length >= 3 && value.length <= 4)\n value = this._clamp(value, 0, 255), [r, g, b, a = 255] = value, r /= 255, g /= 255, b /= 255, a /= 255;\n else if (typeof value == \"string\" || typeof value == \"object\") {\n if (typeof value == \"string\") {\n const match = _Color2.HEX_PATTERN.exec(value);\n match && (value = `#${match[2]}`);\n }\n const color = colord(value);\n color.isValid() && ({ r, g, b, a } = color.rgba, r /= 255, g /= 255, b /= 255);\n }\n if (r !== void 0)\n this._components[0] = r, this._components[1] = g, this._components[2] = b, this._components[3] = a, this.refreshInt();\n else\n throw new Error(`Unable to convert color ${value}`);\n }\n /** Refresh the internal color rgb number */\n refreshInt() {\n this._clamp(this._components);\n const [r, g, b] = this._components;\n this._int = (r * 255 << 16) + (g * 255 << 8) + (b * 255 | 0);\n }\n /**\n * Clamps values to a range. Will override original values\n * @param value - Value(s) to clamp\n * @param min - Minimum value\n * @param max - Maximum value\n */\n _clamp(value, min = 0, max = 1) {\n return typeof value == \"number\" ? Math.min(Math.max(value, min), max) : (value.forEach((v, i) => {\n value[i] = Math.min(Math.max(v, min), max);\n }), value);\n }\n};\n_Color.shared = new _Color(), /**\n* Temporary Color object for static uses internally.\n* As to not conflict with Color.shared.\n* @ignore\n*/\n_Color.temp = new _Color(), /** Pattern for hex strings */\n_Color.HEX_PATTERN = /^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;\nlet Color = _Color;\nexport {\n Color\n};\n//# sourceMappingURL=Color.mjs.map\n","import { Color } from \"@pixi/color\";\nimport { deprecation } from \"../logging/deprecation.mjs\";\nfunction hex2rgb(hex, out = []) {\n return deprecation(\"7.2.0\", \"utils.hex2rgb is deprecated, use Color#toRgbArray instead\"), Color.shared.setValue(hex).toRgbArray(out);\n}\nfunction hex2string(hex) {\n return deprecation(\"7.2.0\", \"utils.hex2string is deprecated, use Color#toHex instead\"), Color.shared.setValue(hex).toHex();\n}\nfunction string2hex(string) {\n return deprecation(\"7.2.0\", \"utils.string2hex is deprecated, use Color#toNumber instead\"), Color.shared.setValue(string).toNumber();\n}\nfunction rgb2hex(rgb) {\n return deprecation(\"7.2.0\", \"utils.rgb2hex is deprecated, use Color#toNumber instead\"), Color.shared.setValue(rgb).toNumber();\n}\nexport {\n hex2rgb,\n hex2string,\n rgb2hex,\n string2hex\n};\n//# sourceMappingURL=hex.mjs.map\n","import { Color } from \"@pixi/color\";\nimport { BLEND_MODES } from \"@pixi/constants\";\nimport { deprecation } from \"../logging/deprecation.mjs\";\nfunction mapPremultipliedBlendModes() {\n const pm = [], npm = [];\n for (let i = 0; i < 32; i++)\n pm[i] = i, npm[i] = i;\n pm[BLEND_MODES.NORMAL_NPM] = BLEND_MODES.NORMAL, pm[BLEND_MODES.ADD_NPM] = BLEND_MODES.ADD, pm[BLEND_MODES.SCREEN_NPM] = BLEND_MODES.SCREEN, npm[BLEND_MODES.NORMAL] = BLEND_MODES.NORMAL_NPM, npm[BLEND_MODES.ADD] = BLEND_MODES.ADD_NPM, npm[BLEND_MODES.SCREEN] = BLEND_MODES.SCREEN_NPM;\n const array = [];\n return array.push(npm), array.push(pm), array;\n}\nconst premultiplyBlendMode = mapPremultipliedBlendModes();\nfunction correctBlendMode(blendMode, premultiplied) {\n return premultiplyBlendMode[premultiplied ? 1 : 0][blendMode];\n}\nfunction premultiplyRgba(rgb, alpha, out, premultiply = !0) {\n return deprecation(\"7.2.0\", \"utils.premultiplyRgba has moved to Color.premultiply\"), Color.shared.setValue(rgb).premultiply(alpha, premultiply).toArray(out ?? new Float32Array(4));\n}\nfunction premultiplyTint(tint, alpha) {\n return deprecation(\"7.2.0\", \"utils.premultiplyTint has moved to Color.toPremultiplied\"), Color.shared.setValue(tint).toPremultiplied(alpha);\n}\nfunction premultiplyTintToRgba(tint, alpha, out, premultiply = !0) {\n return deprecation(\"7.2.0\", \"utils.premultiplyTintToRgba has moved to Color.premultiply\"), Color.shared.setValue(tint).premultiply(alpha, premultiply).toArray(out ?? new Float32Array(4));\n}\nexport {\n correctBlendMode,\n premultiplyBlendMode,\n premultiplyRgba,\n premultiplyTint,\n premultiplyTintToRgba\n};\n//# sourceMappingURL=premultiply.mjs.map\n","function createIndicesForQuads(size, outBuffer = null) {\n const totalIndices = size * 6;\n if (outBuffer = outBuffer || new Uint16Array(totalIndices), outBuffer.length !== totalIndices)\n throw new Error(`Out buffer length is incorrect, got ${outBuffer.length} and expected ${totalIndices}`);\n for (let i = 0, j = 0; i < totalIndices; i += 6, j += 4)\n outBuffer[i + 0] = j + 0, outBuffer[i + 1] = j + 1, outBuffer[i + 2] = j + 2, outBuffer[i + 3] = j + 0, outBuffer[i + 4] = j + 2, outBuffer[i + 5] = j + 3;\n return outBuffer;\n}\nexport {\n createIndicesForQuads\n};\n//# sourceMappingURL=createIndicesForQuads.mjs.map\n","function getBufferType(array) {\n if (array.BYTES_PER_ELEMENT === 4)\n return array instanceof Float32Array ? \"Float32Array\" : array instanceof Uint32Array ? \"Uint32Array\" : \"Int32Array\";\n if (array.BYTES_PER_ELEMENT === 2) {\n if (array instanceof Uint16Array)\n return \"Uint16Array\";\n } else if (array.BYTES_PER_ELEMENT === 1 && array instanceof Uint8Array)\n return \"Uint8Array\";\n return null;\n}\nexport {\n getBufferType\n};\n//# sourceMappingURL=getBufferType.mjs.map\n","function nextPow2(v) {\n return v += v === 0 ? 1 : 0, --v, v |= v >>> 1, v |= v >>> 2, v |= v >>> 4, v |= v >>> 8, v |= v >>> 16, v + 1;\n}\nfunction isPow2(v) {\n return !(v & v - 1) && !!v;\n}\nfunction log2(v) {\n let r = (v > 65535 ? 1 : 0) << 4;\n v >>>= r;\n let shift = (v > 255 ? 1 : 0) << 3;\n return v >>>= shift, r |= shift, shift = (v > 15 ? 1 : 0) << 2, v >>>= shift, r |= shift, shift = (v > 3 ? 1 : 0) << 1, v >>>= shift, r |= shift, r | v >> 1;\n}\nexport {\n isPow2,\n log2,\n nextPow2\n};\n//# sourceMappingURL=pow2.mjs.map\n","function removeItems(arr, startIdx, removeCount) {\n const length = arr.length;\n let i;\n if (startIdx >= length || removeCount === 0)\n return;\n removeCount = startIdx + removeCount > length ? length - startIdx : removeCount;\n const len = length - removeCount;\n for (i = startIdx; i < len; ++i)\n arr[i] = arr[i + removeCount];\n arr.length = len;\n}\nexport {\n removeItems\n};\n//# sourceMappingURL=removeItems.mjs.map\n","function sign(n) {\n return n === 0 ? 0 : n < 0 ? -1 : 1;\n}\nexport {\n sign\n};\n//# sourceMappingURL=sign.mjs.map\n","let nextUid = 0;\nfunction uid() {\n return ++nextUid;\n}\nexport {\n uid\n};\n//# sourceMappingURL=uid.mjs.map\n","const _BoundingBox = class {\n /**\n * @param left - The left coordinate value of the bounding box.\n * @param top - The top coordinate value of the bounding box.\n * @param right - The right coordinate value of the bounding box.\n * @param bottom - The bottom coordinate value of the bounding box.\n */\n constructor(left, top, right, bottom) {\n this.left = left, this.top = top, this.right = right, this.bottom = bottom;\n }\n /** The width of the bounding box. */\n get width() {\n return this.right - this.left;\n }\n /** The height of the bounding box. */\n get height() {\n return this.bottom - this.top;\n }\n /** Determines whether the BoundingBox is empty. */\n isEmpty() {\n return this.left === this.right || this.top === this.bottom;\n }\n};\n_BoundingBox.EMPTY = new _BoundingBox(0, 0, 0, 0);\nlet BoundingBox = _BoundingBox;\nexport {\n BoundingBox\n};\n//# sourceMappingURL=BoundingBox.mjs.map\n","const ProgramCache = {}, TextureCache = /* @__PURE__ */ Object.create(null), BaseTextureCache = /* @__PURE__ */ Object.create(null);\nfunction destroyTextureCache() {\n let key;\n for (key in TextureCache)\n TextureCache[key].destroy();\n for (key in BaseTextureCache)\n BaseTextureCache[key].destroy();\n}\nfunction clearTextureCache() {\n let key;\n for (key in TextureCache)\n delete TextureCache[key];\n for (key in BaseTextureCache)\n delete BaseTextureCache[key];\n}\nexport {\n BaseTextureCache,\n ProgramCache,\n TextureCache,\n clearTextureCache,\n destroyTextureCache\n};\n//# sourceMappingURL=caches.mjs.map\n","import { settings } from \"@pixi/settings\";\nclass CanvasRenderTarget {\n /**\n * @param width - the width for the newly created canvas\n * @param height - the height for the newly created canvas\n * @param {number} [resolution=PIXI.settings.RESOLUTION] - The resolution / device pixel ratio of the canvas\n */\n constructor(width, height, resolution) {\n this._canvas = settings.ADAPTER.createCanvas(), this._context = this._canvas.getContext(\"2d\"), this.resolution = resolution || settings.RESOLUTION, this.resize(width, height);\n }\n /**\n * Clears the canvas that was created by the CanvasRenderTarget class.\n * @private\n */\n clear() {\n this._checkDestroyed(), this._context.setTransform(1, 0, 0, 1, 0, 0), this._context.clearRect(0, 0, this._canvas.width, this._canvas.height);\n }\n /**\n * Resizes the canvas to the specified width and height.\n * @param desiredWidth - the desired width of the canvas\n * @param desiredHeight - the desired height of the canvas\n */\n resize(desiredWidth, desiredHeight) {\n this._checkDestroyed(), this._canvas.width = Math.round(desiredWidth * this.resolution), this._canvas.height = Math.round(desiredHeight * this.resolution);\n }\n /** Destroys this canvas. */\n destroy() {\n this._context = null, this._canvas = null;\n }\n /**\n * The width of the canvas buffer in pixels.\n * @member {number}\n */\n get width() {\n return this._checkDestroyed(), this._canvas.width;\n }\n set width(val) {\n this._checkDestroyed(), this._canvas.width = Math.round(val);\n }\n /**\n * The height of the canvas buffer in pixels.\n * @member {number}\n */\n get height() {\n return this._checkDestroyed(), this._canvas.height;\n }\n set height(val) {\n this._checkDestroyed(), this._canvas.height = Math.round(val);\n }\n /** The Canvas object that belongs to this CanvasRenderTarget. */\n get canvas() {\n return this._checkDestroyed(), this._canvas;\n }\n /** A CanvasRenderingContext2D object representing a two-dimensional rendering context. */\n get context() {\n return this._checkDestroyed(), this._context;\n }\n _checkDestroyed() {\n if (this._canvas === null)\n throw new TypeError(\"The CanvasRenderTarget has already been destroyed\");\n }\n}\nexport {\n CanvasRenderTarget\n};\n//# sourceMappingURL=CanvasRenderTarget.mjs.map\n","import { BoundingBox } from \"./BoundingBox.mjs\";\nfunction checkRow(data, width, y) {\n for (let x = 0, index = 4 * y * width; x < width; ++x, index += 4)\n if (data[index + 3] !== 0)\n return !1;\n return !0;\n}\nfunction checkColumn(data, width, x, top, bottom) {\n const stride = 4 * width;\n for (let y = top, index = top * stride + 4 * x; y <= bottom; ++y, index += stride)\n if (data[index + 3] !== 0)\n return !1;\n return !0;\n}\nfunction getCanvasBoundingBox(canvas) {\n const { width, height } = canvas, context = canvas.getContext(\"2d\", {\n willReadFrequently: !0\n });\n if (context === null)\n throw new TypeError(\"Failed to get canvas 2D context\");\n const data = context.getImageData(0, 0, width, height).data;\n let left = 0, top = 0, right = width - 1, bottom = height - 1;\n for (; top < height && checkRow(data, width, top); )\n ++top;\n if (top === height)\n return BoundingBox.EMPTY;\n for (; checkRow(data, width, bottom); )\n --bottom;\n for (; checkColumn(data, width, left, top, bottom); )\n ++left;\n for (; checkColumn(data, width, right, top, bottom); )\n --right;\n return ++right, ++bottom, new BoundingBox(left, top, right, bottom);\n}\nexport {\n getCanvasBoundingBox\n};\n//# sourceMappingURL=getCanvasBoundingBox.mjs.map\n","import { getCanvasBoundingBox } from \"./getCanvasBoundingBox.mjs\";\nfunction trimCanvas(canvas) {\n const boundingBox = getCanvasBoundingBox(canvas), { width, height } = boundingBox;\n let data = null;\n if (!boundingBox.isEmpty()) {\n const context = canvas.getContext(\"2d\");\n if (context === null)\n throw new TypeError(\"Failed to get canvas 2D context\");\n data = context.getImageData(\n boundingBox.left,\n boundingBox.top,\n width,\n height\n );\n }\n return { width, height, data };\n}\nexport {\n trimCanvas\n};\n//# sourceMappingURL=trimCanvas.mjs.map\n","function determineCrossOrigin(url, loc = globalThis.location) {\n if (url.startsWith(\"data:\"))\n return \"\";\n loc = loc || globalThis.location;\n const parsedUrl = new URL(url, document.baseURI);\n return parsedUrl.hostname !== loc.hostname || parsedUrl.port !== loc.port || parsedUrl.protocol !== loc.protocol ? \"anonymous\" : \"\";\n}\nexport {\n determineCrossOrigin\n};\n//# sourceMappingURL=determineCrossOrigin.mjs.map\n","import \"../settings.mjs\";\nimport { settings } from \"@pixi/settings\";\nfunction getResolutionOfUrl(url, defaultValue = 1) {\n const resolution = settings.RETINA_PREFIX?.exec(url);\n return resolution ? parseFloat(resolution[1]) : defaultValue;\n}\nexport {\n getResolutionOfUrl\n};\n//# sourceMappingURL=getResolutionOfUrl.mjs.map\n","var ExtensionType = /* @__PURE__ */ ((ExtensionType2) => (ExtensionType2.Renderer = \"renderer\", ExtensionType2.Application = \"application\", ExtensionType2.RendererSystem = \"renderer-webgl-system\", ExtensionType2.RendererPlugin = \"renderer-webgl-plugin\", ExtensionType2.CanvasRendererSystem = \"renderer-canvas-system\", ExtensionType2.CanvasRendererPlugin = \"renderer-canvas-plugin\", ExtensionType2.Asset = \"asset\", ExtensionType2.LoadParser = \"load-parser\", ExtensionType2.ResolveParser = \"resolve-parser\", ExtensionType2.CacheParser = \"cache-parser\", ExtensionType2.DetectionParser = \"detection-parser\", ExtensionType2))(ExtensionType || {});\nconst normalizeExtension = (ext) => {\n if (typeof ext == \"function\" || typeof ext == \"object\" && ext.extension) {\n if (!ext.extension)\n throw new Error(\"Extension class must have an extension object\");\n ext = { ...typeof ext.extension != \"object\" ? { type: ext.extension } : ext.extension, ref: ext };\n }\n if (typeof ext == \"object\")\n ext = { ...ext };\n else\n throw new Error(\"Invalid extension type\");\n return typeof ext.type == \"string\" && (ext.type = [ext.type]), ext;\n}, normalizePriority = (ext, defaultPriority) => normalizeExtension(ext).priority ?? defaultPriority, extensions = {\n /** @ignore */\n _addHandlers: {},\n /** @ignore */\n _removeHandlers: {},\n /** @ignore */\n _queue: {},\n /**\n * Remove extensions from PixiJS.\n * @param extensions - Extensions to be removed.\n * @returns {PIXI.extensions} For chaining.\n */\n remove(...extensions2) {\n return extensions2.map(normalizeExtension).forEach((ext) => {\n ext.type.forEach((type) => this._removeHandlers[type]?.(ext));\n }), this;\n },\n /**\n * Register new extensions with PixiJS.\n * @param extensions - The spread of extensions to add to PixiJS.\n * @returns {PIXI.extensions} For chaining.\n */\n add(...extensions2) {\n return extensions2.map(normalizeExtension).forEach((ext) => {\n ext.type.forEach((type) => {\n const handlers = this._addHandlers, queue = this._queue;\n handlers[type] ? handlers[type]?.(ext) : (queue[type] = queue[type] || [], queue[type]?.push(ext));\n });\n }), this;\n },\n /**\n * Internal method to handle extensions by name.\n * @param type - The extension type.\n * @param onAdd - Function for handling when extensions are added/registered passes {@link PIXI.ExtensionFormat}.\n * @param onRemove - Function for handling when extensions are removed/unregistered passes {@link PIXI.ExtensionFormat}.\n * @returns {PIXI.extensions} For chaining.\n */\n handle(type, onAdd, onRemove) {\n const addHandlers = this._addHandlers, removeHandlers = this._removeHandlers;\n if (addHandlers[type] || removeHandlers[type])\n throw new Error(`Extension type ${type} already has a handler`);\n addHandlers[type] = onAdd, removeHandlers[type] = onRemove;\n const queue = this._queue;\n return queue[type] && (queue[type]?.forEach((ext) => onAdd(ext)), delete queue[type]), this;\n },\n /**\n * Handle a type, but using a map by `name` property.\n * @param type - Type of extension to handle.\n * @param map - The object map of named extensions.\n * @returns {PIXI.extensions} For chaining.\n */\n handleByMap(type, map) {\n return this.handle(\n type,\n (extension) => {\n extension.name && (map[extension.name] = extension.ref);\n },\n (extension) => {\n extension.name && delete map[extension.name];\n }\n );\n },\n /**\n * Handle a type, but using a list of extensions.\n * @param type - Type of extension to handle.\n * @param list - The list of extensions.\n * @param defaultPriority - The default priority to use if none is specified.\n * @returns {PIXI.extensions} For chaining.\n */\n handleByList(type, list, defaultPriority = -1) {\n return this.handle(\n type,\n (extension) => {\n list.includes(extension.ref) || (list.push(extension.ref), list.sort((a, b) => normalizePriority(b, defaultPriority) - normalizePriority(a, defaultPriority)));\n },\n (extension) => {\n const index = list.indexOf(extension.ref);\n index !== -1 && list.splice(index, 1);\n }\n );\n }\n};\nexport {\n ExtensionType,\n extensions\n};\n//# sourceMappingURL=index.mjs.map\n","class ViewableBuffer {\n constructor(sizeOrBuffer) {\n typeof sizeOrBuffer == \"number\" ? this.rawBinaryData = new ArrayBuffer(sizeOrBuffer) : sizeOrBuffer instanceof Uint8Array ? this.rawBinaryData = sizeOrBuffer.buffer : this.rawBinaryData = sizeOrBuffer, this.uint32View = new Uint32Array(this.rawBinaryData), this.float32View = new Float32Array(this.rawBinaryData);\n }\n /** View on the raw binary data as a `Int8Array`. */\n get int8View() {\n return this._int8View || (this._int8View = new Int8Array(this.rawBinaryData)), this._int8View;\n }\n /** View on the raw binary data as a `Uint8Array`. */\n get uint8View() {\n return this._uint8View || (this._uint8View = new Uint8Array(this.rawBinaryData)), this._uint8View;\n }\n /** View on the raw binary data as a `Int16Array`. */\n get int16View() {\n return this._int16View || (this._int16View = new Int16Array(this.rawBinaryData)), this._int16View;\n }\n /** View on the raw binary data as a `Uint16Array`. */\n get uint16View() {\n return this._uint16View || (this._uint16View = new Uint16Array(this.rawBinaryData)), this._uint16View;\n }\n /** View on the raw binary data as a `Int32Array`. */\n get int32View() {\n return this._int32View || (this._int32View = new Int32Array(this.rawBinaryData)), this._int32View;\n }\n /**\n * Returns the view of the given type.\n * @param type - One of `int8`, `uint8`, `int16`,\n * `uint16`, `int32`, `uint32`, and `float32`.\n * @returns - typed array of given type\n */\n view(type) {\n return this[`${type}View`];\n }\n /** Destroys all buffer references. Do not use after calling this. */\n destroy() {\n this.rawBinaryData = null, this._int8View = null, this._uint8View = null, this._int16View = null, this._uint16View = null, this._int32View = null, this.uint32View = null, this.float32View = null;\n }\n static sizeOf(type) {\n switch (type) {\n case \"int8\":\n case \"uint8\":\n return 1;\n case \"int16\":\n case \"uint16\":\n return 2;\n case \"int32\":\n case \"uint32\":\n case \"float32\":\n return 4;\n default:\n throw new Error(`${type} isn't a valid view type`);\n }\n }\n}\nexport {\n ViewableBuffer\n};\n//# sourceMappingURL=ViewableBuffer.mjs.map\n","const fragTemplate = [\n \"precision mediump float;\",\n \"void main(void){\",\n \"float test = 0.1;\",\n \"%forloop%\",\n \"gl_FragColor = vec4(0.0);\",\n \"}\"\n].join(`\n`);\nfunction generateIfTestSrc(maxIfs) {\n let src = \"\";\n for (let i = 0; i < maxIfs; ++i)\n i > 0 && (src += `\nelse `), i < maxIfs - 1 && (src += `if(test == ${i}.0){}`);\n return src;\n}\nfunction checkMaxIfStatementsInShader(maxIfs, gl) {\n if (maxIfs === 0)\n throw new Error(\"Invalid value of `0` passed to `checkMaxIfStatementsInShader`\");\n const shader = gl.createShader(gl.FRAGMENT_SHADER);\n for (; ; ) {\n const fragmentSrc = fragTemplate.replace(/%forloop%/gi, generateIfTestSrc(maxIfs));\n if (gl.shaderSource(shader, fragmentSrc), gl.compileShader(shader), !gl.getShaderParameter(shader, gl.COMPILE_STATUS))\n maxIfs = maxIfs / 2 | 0;\n else\n break;\n }\n return maxIfs;\n}\nexport {\n checkMaxIfStatementsInShader\n};\n//# sourceMappingURL=checkMaxIfStatementsInShader.mjs.map\n","import { BLEND_MODES } from \"@pixi/constants\";\nconst BLEND = 0, OFFSET = 1, CULLING = 2, DEPTH_TEST = 3, WINDING = 4, DEPTH_MASK = 5;\nclass State {\n constructor() {\n this.data = 0, this.blendMode = BLEND_MODES.NORMAL, this.polygonOffset = 0, this.blend = !0, this.depthMask = !0;\n }\n /**\n * Activates blending of the computed fragment color values.\n * @default true\n */\n get blend() {\n return !!(this.data & 1 << BLEND);\n }\n set blend(value) {\n !!(this.data & 1 << BLEND) !== value && (this.data ^= 1 << BLEND);\n }\n /**\n * Activates adding an offset to depth values of polygon's fragments\n * @default false\n */\n get offsets() {\n return !!(this.data & 1 << OFFSET);\n }\n set offsets(value) {\n !!(this.data & 1 << OFFSET) !== value && (this.data ^= 1 << OFFSET);\n }\n /**\n * Activates culling of polygons.\n * @default false\n */\n get culling() {\n return !!(this.data & 1 << CULLING);\n }\n set culling(value) {\n !!(this.data & 1 << CULLING) !== value && (this.data ^= 1 << CULLING);\n }\n /**\n * Activates depth comparisons and updates to the depth buffer.\n * @default false\n */\n get depthTest() {\n return !!(this.data & 1 << DEPTH_TEST);\n }\n set depthTest(value) {\n !!(this.data & 1 << DEPTH_TEST) !== value && (this.data ^= 1 << DEPTH_TEST);\n }\n /**\n * Enables or disables writing to the depth buffer.\n * @default true\n */\n get depthMask() {\n return !!(this.data & 1 << DEPTH_MASK);\n }\n set depthMask(value) {\n !!(this.data & 1 << DEPTH_MASK) !== value && (this.data ^= 1 << DEPTH_MASK);\n }\n /**\n * Specifies whether or not front or back-facing polygons can be culled.\n * @default false\n */\n get clockwiseFrontFace() {\n return !!(this.data & 1 << WINDING);\n }\n set clockwiseFrontFace(value) {\n !!(this.data & 1 << WINDING) !== value && (this.data ^= 1 << WINDING);\n }\n /**\n * The blend mode to be applied when this state is set. Apply a value of `PIXI.BLEND_MODES.NORMAL` to reset the blend mode.\n * Setting this mode to anything other than NO_BLEND will automatically switch blending on.\n * @default PIXI.BLEND_MODES.NORMAL\n */\n get blendMode() {\n return this._blendMode;\n }\n set blendMode(value) {\n this.blend = value !== BLEND_MODES.NONE, this._blendMode = value;\n }\n /**\n * The polygon offset. Setting this property to anything other than 0 will automatically enable polygon offset fill.\n * @default 0\n */\n get polygonOffset() {\n return this._polygonOffset;\n }\n set polygonOffset(value) {\n this.offsets = !!value, this._polygonOffset = value;\n }\n static for2d() {\n const state = new State();\n return state.depthTest = !1, state.blend = !0, state;\n }\n}\nState.prototype.toString = function() {\n return `[@pixi/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`;\n};\nexport {\n State\n};\n//# sourceMappingURL=State.mjs.map\n","const INSTALLED = [];\nfunction autoDetectResource(source, options) {\n if (!source)\n return null;\n let extension = \"\";\n if (typeof source == \"string\") {\n const result = /\\.(\\w{3,4})(?:$|\\?|#)/i.exec(source);\n result && (extension = result[1].toLowerCase());\n }\n for (let i = INSTALLED.length - 1; i >= 0; --i) {\n const ResourcePlugin = INSTALLED[i];\n if (ResourcePlugin.test && ResourcePlugin.test(source, extension))\n return new ResourcePlugin(source, options);\n }\n throw new Error(\"Unrecognized source type to auto-detect Resource\");\n}\nexport {\n INSTALLED,\n autoDetectResource\n};\n//# sourceMappingURL=autoDetectResource.mjs.map\n","class Runner {\n /**\n * @param {string} name - The function name that will be executed on the listeners added to this Runner.\n */\n constructor(name) {\n this.items = [], this._name = name, this._aliasCount = 0;\n }\n /* eslint-disable jsdoc/require-param, jsdoc/check-param-names */\n /**\n * Dispatch/Broadcast Runner to all listeners added to the queue.\n * @param {...any} params - (optional) parameters to pass to each listener\n */\n /* eslint-enable jsdoc/require-param, jsdoc/check-param-names */\n emit(a0, a1, a2, a3, a4, a5, a6, a7) {\n if (arguments.length > 8)\n throw new Error(\"max arguments reached\");\n const { name, items } = this;\n this._aliasCount++;\n for (let i = 0, len = items.length; i < len; i++)\n items[i][name](a0, a1, a2, a3, a4, a5, a6, a7);\n return items === this.items && this._aliasCount--, this;\n }\n ensureNonAliasedItems() {\n this._aliasCount > 0 && this.items.length > 1 && (this._aliasCount = 0, this.items = this.items.slice(0));\n }\n /**\n * Add a listener to the Runner\n *\n * Runners do not need to have scope or functions passed to them.\n * All that is required is to pass the listening object and ensure that it has contains a function that has the same name\n * as the name provided to the Runner when it was created.\n *\n * E.g. A listener passed to this Runner will require a 'complete' function.\n *\n * ```js\n * import { Runner } from '@pixi/runner';\n *\n * const complete = new Runner('complete');\n * ```\n *\n * The scope used will be the object itself.\n * @param {any} item - The object that will be listening.\n */\n add(item) {\n return item[this._name] && (this.ensureNonAliasedItems(), this.remove(item), this.items.push(item)), this;\n }\n /**\n * Remove a single listener from the dispatch queue.\n * @param {any} item - The listener that you would like to remove.\n */\n remove(item) {\n const index = this.items.indexOf(item);\n return index !== -1 && (this.ensureNonAliasedItems(), this.items.splice(index, 1)), this;\n }\n /**\n * Check to see if the listener is already in the Runner\n * @param {any} item - The listener that you would like to check.\n */\n contains(item) {\n return this.items.includes(item);\n }\n /** Remove all listeners from the Runner */\n removeAll() {\n return this.ensureNonAliasedItems(), this.items.length = 0, this;\n }\n /** Remove all references, don't use after this. */\n destroy() {\n this.removeAll(), this.items.length = 0, this._name = \"\";\n }\n /**\n * `true` if there are no this Runner contains no listeners\n * @readonly\n */\n get empty() {\n return this.items.length === 0;\n }\n /**\n * The name of the runner.\n * @type {string}\n */\n get name() {\n return this._name;\n }\n}\nObject.defineProperties(Runner.prototype, {\n /**\n * Alias for `emit`\n * @memberof PIXI.Runner#\n * @method dispatch\n * @see PIXI.Runner#emit\n */\n dispatch: { value: Runner.prototype.emit },\n /**\n * Alias for `emit`\n * @memberof PIXI.Runner#\n * @method run\n * @see PIXI.Runner#emit\n */\n run: { value: Runner.prototype.emit }\n});\nexport {\n Runner\n};\n//# sourceMappingURL=Runner.mjs.map\n","import { Runner } from \"@pixi/runner\";\nclass Resource {\n /**\n * @param width - Width of the resource\n * @param height - Height of the resource\n */\n constructor(width = 0, height = 0) {\n this._width = width, this._height = height, this.destroyed = !1, this.internal = !1, this.onResize = new Runner(\"setRealSize\"), this.onUpdate = new Runner(\"update\"), this.onError = new Runner(\"onError\");\n }\n /**\n * Bind to a parent BaseTexture\n * @param baseTexture - Parent texture\n */\n bind(baseTexture) {\n this.onResize.add(baseTexture), this.onUpdate.add(baseTexture), this.onError.add(baseTexture), (this._width || this._height) && this.onResize.emit(this._width, this._height);\n }\n /**\n * Unbind to a parent BaseTexture\n * @param baseTexture - Parent texture\n */\n unbind(baseTexture) {\n this.onResize.remove(baseTexture), this.onUpdate.remove(baseTexture), this.onError.remove(baseTexture);\n }\n /**\n * Trigger a resize event\n * @param width - X dimension\n * @param height - Y dimension\n */\n resize(width, height) {\n (width !== this._width || height !== this._height) && (this._width = width, this._height = height, this.onResize.emit(width, height));\n }\n /**\n * Has been validated\n * @readonly\n */\n get valid() {\n return !!this._width && !!this._height;\n }\n /** Has been updated trigger event. */\n update() {\n this.destroyed || this.onUpdate.emit();\n }\n /**\n * This can be overridden to start preloading a resource\n * or do any other prepare step.\n * @protected\n * @returns Handle the validate event\n */\n load() {\n return Promise.resolve(this);\n }\n /**\n * The width of the resource.\n * @readonly\n */\n get width() {\n return this._width;\n }\n /**\n * The height of the resource.\n * @readonly\n */\n get height() {\n return this._height;\n }\n /**\n * Set the style, optional to override\n * @param _renderer - yeah, renderer!\n * @param _baseTexture - the texture\n * @param _glTexture - texture instance for this webgl context\n * @returns - `true` is success\n */\n style(_renderer, _baseTexture, _glTexture) {\n return !1;\n }\n /** Clean up anything, this happens when destroying is ready. */\n dispose() {\n }\n /**\n * Call when destroying resource, unbind any BaseTexture object\n * before calling this method, as reference counts are maintained\n * internally.\n */\n destroy() {\n this.destroyed || (this.destroyed = !0, this.dispose(), this.onError.removeAll(), this.onError = null, this.onResize.removeAll(), this.onResize = null, this.onUpdate.removeAll(), this.onUpdate = null);\n }\n /**\n * Abstract, used to auto-detect resource type.\n * @param {*} _source - The source object\n * @param {string} _extension - The extension of source, if set\n */\n static test(_source, _extension) {\n return !1;\n }\n}\nexport {\n Resource\n};\n//# sourceMappingURL=Resource.mjs.map\n","import { ALPHA_MODES } from \"@pixi/constants\";\nimport { Resource } from \"./Resource.mjs\";\nclass BufferResource extends Resource {\n /**\n * @param source - Source buffer\n * @param options - Options\n * @param {number} options.width - Width of the texture\n * @param {number} options.height - Height of the texture\n * @param {1|2|4|8} [options.unpackAlignment=4] - The alignment of the pixel rows.\n */\n constructor(source, options) {\n const { width, height } = options || {};\n if (!width || !height)\n throw new Error(\"BufferResource width or height invalid\");\n super(width, height), this.data = source, this.unpackAlignment = options.unpackAlignment ?? 4;\n }\n /**\n * Upload the texture to the GPU.\n * @param renderer - Upload to the renderer\n * @param baseTexture - Reference to parent texture\n * @param glTexture - glTexture\n * @returns - true is success\n */\n upload(renderer, baseTexture, glTexture) {\n const gl = renderer.gl;\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, this.unpackAlignment), gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK);\n const width = baseTexture.realWidth, height = baseTexture.realHeight;\n return glTexture.width === width && glTexture.height === height ? gl.texSubImage2D(\n baseTexture.target,\n 0,\n 0,\n 0,\n width,\n height,\n baseTexture.format,\n glTexture.type,\n this.data\n ) : (glTexture.width = width, glTexture.height = height, gl.texImage2D(\n baseTexture.target,\n 0,\n glTexture.internalFormat,\n width,\n height,\n 0,\n baseTexture.format,\n glTexture.type,\n this.data\n )), !0;\n }\n /** Destroy and don't use after this. */\n dispose() {\n this.data = null;\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @returns {boolean} `true` if buffer source\n */\n static test(source) {\n return source === null || source instanceof Int8Array || source instanceof Uint8Array || source instanceof Uint8ClampedArray || source instanceof Int16Array || source instanceof Uint16Array || source instanceof Int32Array || source instanceof Uint32Array || source instanceof Float32Array;\n }\n}\nexport {\n BufferResource\n};\n//# sourceMappingURL=BufferResource.mjs.map\n","import { SCALE_MODES, ALPHA_MODES, FORMATS, TYPES, MIPMAP_MODES, WRAP_MODES, TARGETS } from \"@pixi/constants\";\nimport { settings } from \"@pixi/settings\";\nimport { EventEmitter, uid, isPow2, BaseTextureCache, TextureCache } from \"@pixi/utils\";\nimport { autoDetectResource } from \"./resources/autoDetectResource.mjs\";\nimport { BufferResource } from \"./resources/BufferResource.mjs\";\nimport { Resource } from \"./resources/Resource.mjs\";\nconst defaultBufferOptions = {\n scaleMode: SCALE_MODES.NEAREST,\n alphaMode: ALPHA_MODES.NPM\n}, _BaseTexture = class _BaseTexture2 extends EventEmitter {\n /**\n * @param {PIXI.Resource|PIXI.ImageSource|string} [resource=null] -\n * The current resource to use, for things that aren't Resource objects, will be converted\n * into a Resource.\n * @param options - Collection of options, default options inherited from {@link PIXI.BaseTexture.defaultOptions}.\n * @param {PIXI.MIPMAP_MODES} [options.mipmap] - If mipmapping is enabled for texture\n * @param {number} [options.anisotropicLevel] - Anisotropic filtering level of texture\n * @param {PIXI.WRAP_MODES} [options.wrapMode] - Wrap mode for textures\n * @param {PIXI.SCALE_MODES} [options.scaleMode] - Default scale mode, linear, nearest\n * @param {PIXI.FORMATS} [options.format] - GL format type\n * @param {PIXI.TYPES} [options.type] - GL data type\n * @param {PIXI.TARGETS} [options.target] - GL texture target\n * @param {PIXI.ALPHA_MODES} [options.alphaMode] - Pre multiply the image alpha\n * @param {number} [options.width=0] - Width of the texture\n * @param {number} [options.height=0] - Height of the texture\n * @param {number} [options.resolution=PIXI.settings.RESOLUTION] - Resolution of the base texture\n * @param {object} [options.resourceOptions] - Optional resource options,\n * see {@link PIXI.autoDetectResource autoDetectResource}\n */\n constructor(resource = null, options = null) {\n super(), options = Object.assign({}, _BaseTexture2.defaultOptions, options);\n const {\n alphaMode,\n mipmap,\n anisotropicLevel,\n scaleMode,\n width,\n height,\n wrapMode,\n format,\n type,\n target,\n resolution,\n resourceOptions\n } = options;\n resource && !(resource instanceof Resource) && (resource = autoDetectResource(resource, resourceOptions), resource.internal = !0), this.resolution = resolution || settings.RESOLUTION, this.width = Math.round((width || 0) * this.resolution) / this.resolution, this.height = Math.round((height || 0) * this.resolution) / this.resolution, this._mipmap = mipmap, this.anisotropicLevel = anisotropicLevel, this._wrapMode = wrapMode, this._scaleMode = scaleMode, this.format = format, this.type = type, this.target = target, this.alphaMode = alphaMode, this.uid = uid(), this.touched = 0, this.isPowerOfTwo = !1, this._refreshPOT(), this._glTextures = {}, this.dirtyId = 0, this.dirtyStyleId = 0, this.cacheId = null, this.valid = width > 0 && height > 0, this.textureCacheIds = [], this.destroyed = !1, this.resource = null, this._batchEnabled = 0, this._batchLocation = 0, this.parentTextureArray = null, this.setResource(resource);\n }\n /**\n * Pixel width of the source of this texture\n * @readonly\n */\n get realWidth() {\n return Math.round(this.width * this.resolution);\n }\n /**\n * Pixel height of the source of this texture\n * @readonly\n */\n get realHeight() {\n return Math.round(this.height * this.resolution);\n }\n /**\n * Mipmap mode of the texture, affects downscaled images\n * @default PIXI.MIPMAP_MODES.POW2\n */\n get mipmap() {\n return this._mipmap;\n }\n set mipmap(value) {\n this._mipmap !== value && (this._mipmap = value, this.dirtyStyleId++);\n }\n /**\n * The scale mode to apply when scaling this texture\n * @default PIXI.SCALE_MODES.LINEAR\n */\n get scaleMode() {\n return this._scaleMode;\n }\n set scaleMode(value) {\n this._scaleMode !== value && (this._scaleMode = value, this.dirtyStyleId++);\n }\n /**\n * How the texture wraps\n * @default PIXI.WRAP_MODES.CLAMP\n */\n get wrapMode() {\n return this._wrapMode;\n }\n set wrapMode(value) {\n this._wrapMode !== value && (this._wrapMode = value, this.dirtyStyleId++);\n }\n /**\n * Changes style options of BaseTexture\n * @param scaleMode - Pixi scalemode\n * @param mipmap - enable mipmaps\n * @returns - this\n */\n setStyle(scaleMode, mipmap) {\n let dirty;\n return scaleMode !== void 0 && scaleMode !== this.scaleMode && (this.scaleMode = scaleMode, dirty = !0), mipmap !== void 0 && mipmap !== this.mipmap && (this.mipmap = mipmap, dirty = !0), dirty && this.dirtyStyleId++, this;\n }\n /**\n * Changes w/h/resolution. Texture becomes valid if width and height are greater than zero.\n * @param desiredWidth - Desired visual width\n * @param desiredHeight - Desired visual height\n * @param resolution - Optionally set resolution\n * @returns - this\n */\n setSize(desiredWidth, desiredHeight, resolution) {\n return resolution = resolution || this.resolution, this.setRealSize(desiredWidth * resolution, desiredHeight * resolution, resolution);\n }\n /**\n * Sets real size of baseTexture, preserves current resolution.\n * @param realWidth - Full rendered width\n * @param realHeight - Full rendered height\n * @param resolution - Optionally set resolution\n * @returns - this\n */\n setRealSize(realWidth, realHeight, resolution) {\n return this.resolution = resolution || this.resolution, this.width = Math.round(realWidth) / this.resolution, this.height = Math.round(realHeight) / this.resolution, this._refreshPOT(), this.update(), this;\n }\n /**\n * Refresh check for isPowerOfTwo texture based on size\n * @private\n */\n _refreshPOT() {\n this.isPowerOfTwo = isPow2(this.realWidth) && isPow2(this.realHeight);\n }\n /**\n * Changes resolution\n * @param resolution - res\n * @returns - this\n */\n setResolution(resolution) {\n const oldResolution = this.resolution;\n return oldResolution === resolution ? this : (this.resolution = resolution, this.valid && (this.width = Math.round(this.width * oldResolution) / resolution, this.height = Math.round(this.height * oldResolution) / resolution, this.emit(\"update\", this)), this._refreshPOT(), this);\n }\n /**\n * Sets the resource if it wasn't set. Throws error if resource already present\n * @param resource - that is managing this BaseTexture\n * @returns - this\n */\n setResource(resource) {\n if (this.resource === resource)\n return this;\n if (this.resource)\n throw new Error(\"Resource can be set only once\");\n return resource.bind(this), this.resource = resource, this;\n }\n /** Invalidates the object. Texture becomes valid if width and height are greater than zero. */\n update() {\n this.valid ? (this.dirtyId++, this.dirtyStyleId++, this.emit(\"update\", this)) : this.width > 0 && this.height > 0 && (this.valid = !0, this.emit(\"loaded\", this), this.emit(\"update\", this));\n }\n /**\n * Handle errors with resources.\n * @private\n * @param event - Error event emitted.\n */\n onError(event) {\n this.emit(\"error\", this, event);\n }\n /**\n * Destroys this base texture.\n * The method stops if resource doesn't want this texture to be destroyed.\n * Removes texture from all caches.\n * @fires PIXI.BaseTexture#destroyed\n */\n destroy() {\n this.resource && (this.resource.unbind(this), this.resource.internal && this.resource.destroy(), this.resource = null), this.cacheId && (delete BaseTextureCache[this.cacheId], delete TextureCache[this.cacheId], this.cacheId = null), this.valid = !1, this.dispose(), _BaseTexture2.removeFromCache(this), this.textureCacheIds = null, this.destroyed = !0, this.emit(\"destroyed\", this), this.removeAllListeners();\n }\n /**\n * Frees the texture from WebGL memory without destroying this texture object.\n * This means you can still use the texture later which will upload it to GPU\n * memory again.\n * @fires PIXI.BaseTexture#dispose\n */\n dispose() {\n this.emit(\"dispose\", this);\n }\n /** Utility function for BaseTexture|Texture cast. */\n castToBaseTexture() {\n return this;\n }\n /**\n * Helper function that creates a base texture based on the source you provide.\n * The source can be - image url, image element, canvas element. If the\n * source is an image url or an image element and not in the base texture\n * cache, it will be created and loaded.\n * @static\n * @param {PIXI.ImageSource|string|string[]} source - The\n * source to create base texture from.\n * @param options - See {@link PIXI.BaseTexture}'s constructor for options.\n * @param {string} [options.pixiIdPrefix=pixiid] - If a source has no id, this is the prefix of the generated id\n * @param {boolean} [strict] - Enforce strict-mode, see {@link PIXI.settings.STRICT_TEXTURE_CACHE}.\n * @returns {PIXI.BaseTexture} The new base texture.\n */\n static from(source, options, strict = settings.STRICT_TEXTURE_CACHE) {\n const isFrame = typeof source == \"string\";\n let cacheId = null;\n if (isFrame)\n cacheId = source;\n else {\n if (!source._pixiId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source._pixiId = `${prefix}_${uid()}`;\n }\n cacheId = source._pixiId;\n }\n let baseTexture = BaseTextureCache[cacheId];\n if (isFrame && strict && !baseTexture)\n throw new Error(`The cacheId \"${cacheId}\" does not exist in BaseTextureCache.`);\n return baseTexture || (baseTexture = new _BaseTexture2(source, options), baseTexture.cacheId = cacheId, _BaseTexture2.addToCache(baseTexture, cacheId)), baseTexture;\n }\n /**\n * Create a new Texture with a BufferResource from a typed array.\n * @param buffer - The optional array to use. If no data is provided, a new Float32Array is created.\n * @param width - Width of the resource\n * @param height - Height of the resource\n * @param options - See {@link PIXI.BaseTexture}'s constructor for options.\n * Default properties are different from the constructor's defaults.\n * @param {PIXI.FORMATS} [options.format] - The format is not given, the type is inferred from the\n * type of the buffer: `RGBA` if Float32Array, Int8Array, Uint8Array, or Uint8ClampedArray,\n * otherwise `RGBA_INTEGER`.\n * @param {PIXI.TYPES} [options.type] - The type is not given, the type is inferred from the\n * type of the buffer. Maps Float32Array to `FLOAT`, Int32Array to `INT`, Uint32Array to\n * `UNSIGNED_INT`, Int16Array to `SHORT`, Uint16Array to `UNSIGNED_SHORT`, Int8Array to `BYTE`,\n * Uint8Array/Uint8ClampedArray to `UNSIGNED_BYTE`.\n * @param {PIXI.ALPHA_MODES} [options.alphaMode=PIXI.ALPHA_MODES.NPM]\n * @param {PIXI.SCALE_MODES} [options.scaleMode=PIXI.SCALE_MODES.NEAREST]\n * @returns - The resulting new BaseTexture\n */\n static fromBuffer(buffer, width, height, options) {\n buffer = buffer || new Float32Array(width * height * 4);\n const resource = new BufferResource(buffer, { width, height, ...options?.resourceOptions });\n let format, type;\n return buffer instanceof Float32Array ? (format = FORMATS.RGBA, type = TYPES.FLOAT) : buffer instanceof Int32Array ? (format = FORMATS.RGBA_INTEGER, type = TYPES.INT) : buffer instanceof Uint32Array ? (format = FORMATS.RGBA_INTEGER, type = TYPES.UNSIGNED_INT) : buffer instanceof Int16Array ? (format = FORMATS.RGBA_INTEGER, type = TYPES.SHORT) : buffer instanceof Uint16Array ? (format = FORMATS.RGBA_INTEGER, type = TYPES.UNSIGNED_SHORT) : buffer instanceof Int8Array ? (format = FORMATS.RGBA, type = TYPES.BYTE) : (format = FORMATS.RGBA, type = TYPES.UNSIGNED_BYTE), resource.internal = !0, new _BaseTexture2(resource, Object.assign({}, defaultBufferOptions, { type, format }, options));\n }\n /**\n * Adds a BaseTexture to the global BaseTextureCache. This cache is shared across the whole PIXI object.\n * @param {PIXI.BaseTexture} baseTexture - The BaseTexture to add to the cache.\n * @param {string} id - The id that the BaseTexture will be stored against.\n */\n static addToCache(baseTexture, id) {\n id && (baseTexture.textureCacheIds.includes(id) || baseTexture.textureCacheIds.push(id), BaseTextureCache[id] && BaseTextureCache[id] !== baseTexture && console.warn(`BaseTexture added to the cache with an id [${id}] that already had an entry`), BaseTextureCache[id] = baseTexture);\n }\n /**\n * Remove a BaseTexture from the global BaseTextureCache.\n * @param {string|PIXI.BaseTexture} baseTexture - id of a BaseTexture to be removed, or a BaseTexture instance itself.\n * @returns {PIXI.BaseTexture|null} The BaseTexture that was removed.\n */\n static removeFromCache(baseTexture) {\n if (typeof baseTexture == \"string\") {\n const baseTextureFromCache = BaseTextureCache[baseTexture];\n if (baseTextureFromCache) {\n const index = baseTextureFromCache.textureCacheIds.indexOf(baseTexture);\n return index > -1 && baseTextureFromCache.textureCacheIds.splice(index, 1), delete BaseTextureCache[baseTexture], baseTextureFromCache;\n }\n } else if (baseTexture?.textureCacheIds) {\n for (let i = 0; i < baseTexture.textureCacheIds.length; ++i)\n delete BaseTextureCache[baseTexture.textureCacheIds[i]];\n return baseTexture.textureCacheIds.length = 0, baseTexture;\n }\n return null;\n }\n};\n_BaseTexture.defaultOptions = {\n /**\n * If mipmapping is enabled for texture.\n * @type {PIXI.MIPMAP_MODES}\n * @default PIXI.MIPMAP_MODES.POW2\n */\n mipmap: MIPMAP_MODES.POW2,\n /** Anisotropic filtering level of texture */\n anisotropicLevel: 0,\n /**\n * Default scale mode, linear, nearest.\n * @type {PIXI.SCALE_MODES}\n * @default PIXI.SCALE_MODES.LINEAR\n */\n scaleMode: SCALE_MODES.LINEAR,\n /**\n * Wrap mode for textures.\n * @type {PIXI.WRAP_MODES}\n * @default PIXI.WRAP_MODES.CLAMP\n */\n wrapMode: WRAP_MODES.CLAMP,\n /**\n * Pre multiply the image alpha\n * @type {PIXI.ALPHA_MODES}\n * @default PIXI.ALPHA_MODES.UNPACK\n */\n alphaMode: ALPHA_MODES.UNPACK,\n /**\n * GL texture target\n * @type {PIXI.TARGETS}\n * @default PIXI.TARGETS.TEXTURE_2D\n */\n target: TARGETS.TEXTURE_2D,\n /**\n * GL format type\n * @type {PIXI.FORMATS}\n * @default PIXI.FORMATS.RGBA\n */\n format: FORMATS.RGBA,\n /**\n * GL data type\n * @type {PIXI.TYPES}\n * @default PIXI.TYPES.UNSIGNED_BYTE\n */\n type: TYPES.UNSIGNED_BYTE\n}, /** Global number of the texture batch, used by multi-texture renderers. */\n_BaseTexture._globalBatch = 0;\nlet BaseTexture = _BaseTexture;\nexport {\n BaseTexture\n};\n//# sourceMappingURL=BaseTexture.mjs.map\n","import { DRAW_MODES } from \"@pixi/constants\";\nclass BatchDrawCall {\n constructor() {\n this.texArray = null, this.blend = 0, this.type = DRAW_MODES.TRIANGLES, this.start = 0, this.size = 0, this.data = null;\n }\n}\nexport {\n BatchDrawCall\n};\n//# sourceMappingURL=BatchDrawCall.mjs.map\n","import { BUFFER_TYPE } from \"@pixi/constants\";\nimport { Runner } from \"@pixi/runner\";\nlet UID = 0;\nclass Buffer {\n /**\n * @param {PIXI.IArrayBuffer} data - the data to store in the buffer.\n * @param _static - `true` for static buffer\n * @param index - `true` for index buffer\n */\n constructor(data, _static = !0, index = !1) {\n this.data = data || new Float32Array(1), this._glBuffers = {}, this._updateID = 0, this.index = index, this.static = _static, this.id = UID++, this.disposeRunner = new Runner(\"disposeBuffer\");\n }\n // TODO could explore flagging only a partial upload?\n /**\n * Flags this buffer as requiring an upload to the GPU.\n * @param {PIXI.IArrayBuffer|number[]} [data] - the data to update in the buffer.\n */\n update(data) {\n data instanceof Array && (data = new Float32Array(data)), this.data = data || this.data, this._updateID++;\n }\n /** Disposes WebGL resources that are connected to this geometry. */\n dispose() {\n this.disposeRunner.emit(this, !1);\n }\n /** Destroys the buffer. */\n destroy() {\n this.dispose(), this.data = null;\n }\n /**\n * Flags whether this is an index buffer.\n *\n * Index buffers are of type `ELEMENT_ARRAY_BUFFER`. Note that setting this property to false will make\n * the buffer of type `ARRAY_BUFFER`.\n *\n * For backwards compatibility.\n */\n set index(value) {\n this.type = value ? BUFFER_TYPE.ELEMENT_ARRAY_BUFFER : BUFFER_TYPE.ARRAY_BUFFER;\n }\n get index() {\n return this.type === BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n }\n /**\n * Helper function that creates a buffer based on an array or TypedArray\n * @param {ArrayBufferView | number[]} data - the TypedArray that the buffer will store. If this is a regular Array it will be converted to a Float32Array.\n * @returns - A new Buffer based on the data provided.\n */\n static from(data) {\n return data instanceof Array && (data = new Float32Array(data)), new Buffer(data);\n }\n}\nexport {\n Buffer\n};\n//# sourceMappingURL=Buffer.mjs.map\n","import { TYPES } from \"@pixi/constants\";\nclass Attribute {\n /**\n * @param buffer - the id of the buffer that this attribute will look for\n * @param size - the size of the attribute. If you have 2 floats per vertex (eg position x and y) this would be 2.\n * @param normalized - should the data be normalized.\n * @param {PIXI.TYPES} [type=PIXI.TYPES.FLOAT] - what type of number is the attribute. Check {@link PIXI.TYPES} to see the ones available\n * @param [stride=0] - How far apart, in bytes, the start of each value is. (used for interleaving data)\n * @param [start=0] - How far into the array to start reading values (used for interleaving data)\n * @param [instance=false] - Whether the geometry is instanced.\n * @param [divisor=1] - Divisor to use when doing instanced rendering\n */\n constructor(buffer, size = 0, normalized = !1, type = TYPES.FLOAT, stride, start, instance, divisor = 1) {\n this.buffer = buffer, this.size = size, this.normalized = normalized, this.type = type, this.stride = stride, this.start = start, this.instance = instance, this.divisor = divisor;\n }\n /** Destroys the Attribute. */\n destroy() {\n this.buffer = null;\n }\n /**\n * Helper function that creates an Attribute based on the information provided\n * @param buffer - the id of the buffer that this attribute will look for\n * @param [size=0] - the size of the attribute. If you have 2 floats per vertex (eg position x and y) this would be 2\n * @param [normalized=false] - should the data be normalized.\n * @param [type=PIXI.TYPES.FLOAT] - what type of number is the attribute. Check {@link PIXI.TYPES} to see the ones available\n * @param [stride=0] - How far apart, in bytes, the start of each value is. (used for interleaving data)\n * @returns - A new {@link PIXI.Attribute} based on the information provided\n */\n static from(buffer, size, normalized, type, stride) {\n return new Attribute(buffer, size, normalized, type, stride);\n }\n}\nexport {\n Attribute\n};\n//# sourceMappingURL=Attribute.mjs.map\n","import { getBufferType } from \"@pixi/utils\";\nconst map = {\n Float32Array,\n Uint32Array,\n Int32Array,\n Uint8Array\n};\nfunction interleaveTypedArrays(arrays, sizes) {\n let outSize = 0, stride = 0;\n const views = {};\n for (let i = 0; i < arrays.length; i++)\n stride += sizes[i], outSize += arrays[i].length;\n const buffer = new ArrayBuffer(outSize * 4);\n let out = null, littleOffset = 0;\n for (let i = 0; i < arrays.length; i++) {\n const size = sizes[i], array = arrays[i], type = getBufferType(array);\n views[type] || (views[type] = new map[type](buffer)), out = views[type];\n for (let j = 0; j < array.length; j++) {\n const indexStart = (j / size | 0) * stride + littleOffset, index = j % size;\n out[indexStart + index] = array[j];\n }\n littleOffset += size;\n }\n return new Float32Array(buffer);\n}\nexport {\n interleaveTypedArrays\n};\n//# sourceMappingURL=interleaveTypedArrays.mjs.map\n","import { BUFFER_TYPE } from \"@pixi/constants\";\nimport { Runner } from \"@pixi/runner\";\nimport { getBufferType } from \"@pixi/utils\";\nimport { Attribute } from \"./Attribute.mjs\";\nimport { Buffer } from \"./Buffer.mjs\";\nimport { interleaveTypedArrays } from \"./utils/interleaveTypedArrays.mjs\";\nconst byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 };\nlet UID = 0;\nconst map = {\n Float32Array,\n Uint32Array,\n Int32Array,\n Uint8Array,\n Uint16Array\n};\nclass Geometry {\n /**\n * @param buffers - An array of buffers. optional.\n * @param attributes - Of the geometry, optional structure of the attributes layout\n */\n constructor(buffers = [], attributes = {}) {\n this.buffers = buffers, this.indexBuffer = null, this.attributes = attributes, this.glVertexArrayObjects = {}, this.id = UID++, this.instanced = !1, this.instanceCount = 1, this.disposeRunner = new Runner(\"disposeGeometry\"), this.refCount = 0;\n }\n /**\n *\n * Adds an attribute to the geometry\n * Note: `stride` and `start` should be `undefined` if you dont know them, not 0!\n * @param id - the name of the attribute (matching up to a shader)\n * @param {PIXI.Buffer|number[]} buffer - the buffer that holds the data of the attribute . You can also provide an Array and a buffer will be created from it.\n * @param size - the size of the attribute. If you have 2 floats per vertex (eg position x and y) this would be 2\n * @param normalized - should the data be normalized.\n * @param [type=PIXI.TYPES.FLOAT] - what type of number is the attribute. Check {@link PIXI.TYPES} to see the ones available\n * @param [stride=0] - How far apart, in bytes, the start of each value is. (used for interleaving data)\n * @param [start=0] - How far into the array to start reading values (used for interleaving data)\n * @param instance - Instancing flag\n * @returns - Returns self, useful for chaining.\n */\n addAttribute(id, buffer, size = 0, normalized = !1, type, stride, start, instance = !1) {\n if (!buffer)\n throw new Error(\"You must pass a buffer when creating an attribute\");\n buffer instanceof Buffer || (buffer instanceof Array && (buffer = new Float32Array(buffer)), buffer = new Buffer(buffer));\n const ids = id.split(\"|\");\n if (ids.length > 1) {\n for (let i = 0; i < ids.length; i++)\n this.addAttribute(ids[i], buffer, size, normalized, type);\n return this;\n }\n let bufferIndex = this.buffers.indexOf(buffer);\n return bufferIndex === -1 && (this.buffers.push(buffer), bufferIndex = this.buffers.length - 1), this.attributes[id] = new Attribute(bufferIndex, size, normalized, type, stride, start, instance), this.instanced = this.instanced || instance, this;\n }\n /**\n * Returns the requested attribute.\n * @param id - The name of the attribute required\n * @returns - The attribute requested.\n */\n getAttribute(id) {\n return this.attributes[id];\n }\n /**\n * Returns the requested buffer.\n * @param id - The name of the buffer required.\n * @returns - The buffer requested.\n */\n getBuffer(id) {\n return this.buffers[this.getAttribute(id).buffer];\n }\n /**\n *\n * Adds an index buffer to the geometry\n * The index buffer contains integers, three for each triangle in the geometry, which reference the various attribute buffers (position, colour, UV coordinates, other UV coordinates, normal, …). There is only ONE index buffer.\n * @param {PIXI.Buffer|number[]} [buffer] - The buffer that holds the data of the index buffer. You can also provide an Array and a buffer will be created from it.\n * @returns - Returns self, useful for chaining.\n */\n addIndex(buffer) {\n return buffer instanceof Buffer || (buffer instanceof Array && (buffer = new Uint16Array(buffer)), buffer = new Buffer(buffer)), buffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER, this.indexBuffer = buffer, this.buffers.includes(buffer) || this.buffers.push(buffer), this;\n }\n /**\n * Returns the index buffer\n * @returns - The index buffer.\n */\n getIndex() {\n return this.indexBuffer;\n }\n /**\n * This function modifies the structure so that all current attributes become interleaved into a single buffer\n * This can be useful if your model remains static as it offers a little performance boost\n * @returns - Returns self, useful for chaining.\n */\n interleave() {\n if (this.buffers.length === 1 || this.buffers.length === 2 && this.indexBuffer)\n return this;\n const arrays = [], sizes = [], interleavedBuffer = new Buffer();\n let i;\n for (i in this.attributes) {\n const attribute = this.attributes[i], buffer = this.buffers[attribute.buffer];\n arrays.push(buffer.data), sizes.push(attribute.size * byteSizeMap[attribute.type] / 4), attribute.buffer = 0;\n }\n for (interleavedBuffer.data = interleaveTypedArrays(arrays, sizes), i = 0; i < this.buffers.length; i++)\n this.buffers[i] !== this.indexBuffer && this.buffers[i].destroy();\n return this.buffers = [interleavedBuffer], this.indexBuffer && this.buffers.push(this.indexBuffer), this;\n }\n /** Get the size of the geometries, in vertices. */\n getSize() {\n for (const i in this.attributes) {\n const attribute = this.attributes[i];\n return this.buffers[attribute.buffer].data.length / (attribute.stride / 4 || attribute.size);\n }\n return 0;\n }\n /** Disposes WebGL resources that are connected to this geometry. */\n dispose() {\n this.disposeRunner.emit(this, !1);\n }\n /** Destroys the geometry. */\n destroy() {\n this.dispose(), this.buffers = null, this.indexBuffer = null, this.attributes = null;\n }\n /**\n * Returns a clone of the geometry.\n * @returns - A new clone of this geometry.\n */\n clone() {\n const geometry = new Geometry();\n for (let i = 0; i < this.buffers.length; i++)\n geometry.buffers[i] = new Buffer(this.buffers[i].data.slice(0));\n for (const i in this.attributes) {\n const attrib = this.attributes[i];\n geometry.attributes[i] = new Attribute(\n attrib.buffer,\n attrib.size,\n attrib.normalized,\n attrib.type,\n attrib.stride,\n attrib.start,\n attrib.instance\n );\n }\n return this.indexBuffer && (geometry.indexBuffer = geometry.buffers[this.buffers.indexOf(this.indexBuffer)], geometry.indexBuffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER), geometry;\n }\n /**\n * Merges an array of geometries into a new single one.\n *\n * Geometry attribute styles must match for this operation to work.\n * @param geometries - array of geometries to merge\n * @returns - Shiny new geometry!\n */\n static merge(geometries) {\n const geometryOut = new Geometry(), arrays = [], sizes = [], offsets = [];\n let geometry;\n for (let i = 0; i < geometries.length; i++) {\n geometry = geometries[i];\n for (let j = 0; j < geometry.buffers.length; j++)\n sizes[j] = sizes[j] || 0, sizes[j] += geometry.buffers[j].data.length, offsets[j] = 0;\n }\n for (let i = 0; i < geometry.buffers.length; i++)\n arrays[i] = new map[getBufferType(geometry.buffers[i].data)](sizes[i]), geometryOut.buffers[i] = new Buffer(arrays[i]);\n for (let i = 0; i < geometries.length; i++) {\n geometry = geometries[i];\n for (let j = 0; j < geometry.buffers.length; j++)\n arrays[j].set(geometry.buffers[j].data, offsets[j]), offsets[j] += geometry.buffers[j].data.length;\n }\n if (geometryOut.attributes = geometry.attributes, geometry.indexBuffer) {\n geometryOut.indexBuffer = geometryOut.buffers[geometry.buffers.indexOf(geometry.indexBuffer)], geometryOut.indexBuffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n let offset = 0, stride = 0, offset2 = 0, bufferIndexToCount = 0;\n for (let i = 0; i < geometry.buffers.length; i++)\n if (geometry.buffers[i] !== geometry.indexBuffer) {\n bufferIndexToCount = i;\n break;\n }\n for (const i in geometry.attributes) {\n const attribute = geometry.attributes[i];\n (attribute.buffer | 0) === bufferIndexToCount && (stride += attribute.size * byteSizeMap[attribute.type] / 4);\n }\n for (let i = 0; i < geometries.length; i++) {\n const indexBufferData = geometries[i].indexBuffer.data;\n for (let j = 0; j < indexBufferData.length; j++)\n geometryOut.indexBuffer.data[j + offset2] += offset;\n offset += geometries[i].buffers[bufferIndexToCount].data.length / stride, offset2 += indexBufferData.length;\n }\n }\n return geometryOut;\n }\n}\nexport {\n Geometry\n};\n//# sourceMappingURL=Geometry.mjs.map\n","import { TYPES } from \"@pixi/constants\";\nimport { Buffer } from \"../geometry/Buffer.mjs\";\nimport { Geometry } from \"../geometry/Geometry.mjs\";\nclass BatchGeometry extends Geometry {\n /**\n * @param {boolean} [_static=false] - Optimization flag, where `false`\n * is updated every frame, `true` doesn't change frame-to-frame.\n */\n constructor(_static = !1) {\n super(), this._buffer = new Buffer(null, _static, !1), this._indexBuffer = new Buffer(null, _static, !0), this.addAttribute(\"aVertexPosition\", this._buffer, 2, !1, TYPES.FLOAT).addAttribute(\"aTextureCoord\", this._buffer, 2, !1, TYPES.FLOAT).addAttribute(\"aColor\", this._buffer, 4, !0, TYPES.UNSIGNED_BYTE).addAttribute(\"aTextureId\", this._buffer, 1, !0, TYPES.FLOAT).addIndex(this._indexBuffer);\n }\n}\nexport {\n BatchGeometry\n};\n//# sourceMappingURL=BatchGeometry.mjs.map\n","const PI_2 = Math.PI * 2, RAD_TO_DEG = 180 / Math.PI, DEG_TO_RAD = Math.PI / 180;\nvar SHAPES = /* @__PURE__ */ ((SHAPES2) => (SHAPES2[SHAPES2.POLY = 0] = \"POLY\", SHAPES2[SHAPES2.RECT = 1] = \"RECT\", SHAPES2[SHAPES2.CIRC = 2] = \"CIRC\", SHAPES2[SHAPES2.ELIP = 3] = \"ELIP\", SHAPES2[SHAPES2.RREC = 4] = \"RREC\", SHAPES2))(SHAPES || {});\nexport {\n DEG_TO_RAD,\n PI_2,\n RAD_TO_DEG,\n SHAPES\n};\n//# sourceMappingURL=const.mjs.map\n","class Point {\n /**\n * Creates a new `Point`\n * @param {number} [x=0] - position of the point on the x axis\n * @param {number} [y=0] - position of the point on the y axis\n */\n constructor(x = 0, y = 0) {\n this.x = 0, this.y = 0, this.x = x, this.y = y;\n }\n /**\n * Creates a clone of this point\n * @returns A clone of this point\n */\n clone() {\n return new Point(this.x, this.y);\n }\n /**\n * Copies `x` and `y` from the given point into this point\n * @param p - The point to copy from\n * @returns The point instance itself\n */\n copyFrom(p) {\n return this.set(p.x, p.y), this;\n }\n /**\n * Copies this point's x and y into the given point (`p`).\n * @param p - The point to copy to. Can be any of type that is or extends `IPointData`\n * @returns The point (`p`) with values updated\n */\n copyTo(p) {\n return p.set(this.x, this.y), p;\n }\n /**\n * Accepts another point (`p`) and returns `true` if the given point is equal to this point\n * @param p - The point to check\n * @returns Returns `true` if both `x` and `y` are equal\n */\n equals(p) {\n return p.x === this.x && p.y === this.y;\n }\n /**\n * Sets the point to a new `x` and `y` position.\n * If `y` is omitted, both `x` and `y` will be set to `x`.\n * @param {number} [x=0] - position of the point on the `x` axis\n * @param {number} [y=x] - position of the point on the `y` axis\n * @returns The point instance itself\n */\n set(x = 0, y = x) {\n return this.x = x, this.y = y, this;\n }\n}\nPoint.prototype.toString = function() {\n return `[@pixi/math:Point x=${this.x} y=${this.y}]`;\n};\nexport {\n Point\n};\n//# sourceMappingURL=Point.mjs.map\n","import { SHAPES } from \"../const.mjs\";\nimport { Point } from \"../Point.mjs\";\nconst tempPoints = [new Point(), new Point(), new Point(), new Point()];\nclass Rectangle {\n /**\n * @param x - The X coordinate of the upper-left corner of the rectangle\n * @param y - The Y coordinate of the upper-left corner of the rectangle\n * @param width - The overall width of the rectangle\n * @param height - The overall height of the rectangle\n */\n constructor(x = 0, y = 0, width = 0, height = 0) {\n this.x = Number(x), this.y = Number(y), this.width = Number(width), this.height = Number(height), this.type = SHAPES.RECT;\n }\n /** Returns the left edge of the rectangle. */\n get left() {\n return this.x;\n }\n /** Returns the right edge of the rectangle. */\n get right() {\n return this.x + this.width;\n }\n /** Returns the top edge of the rectangle. */\n get top() {\n return this.y;\n }\n /** Returns the bottom edge of the rectangle. */\n get bottom() {\n return this.y + this.height;\n }\n /** A constant empty rectangle. */\n static get EMPTY() {\n return new Rectangle(0, 0, 0, 0);\n }\n /**\n * Creates a clone of this Rectangle\n * @returns a copy of the rectangle\n */\n clone() {\n return new Rectangle(this.x, this.y, this.width, this.height);\n }\n /**\n * Copies another rectangle to this one.\n * @param rectangle - The rectangle to copy from.\n * @returns Returns itself.\n */\n copyFrom(rectangle) {\n return this.x = rectangle.x, this.y = rectangle.y, this.width = rectangle.width, this.height = rectangle.height, this;\n }\n /**\n * Copies this rectangle to another one.\n * @param rectangle - The rectangle to copy to.\n * @returns Returns given parameter.\n */\n copyTo(rectangle) {\n return rectangle.x = this.x, rectangle.y = this.y, rectangle.width = this.width, rectangle.height = this.height, rectangle;\n }\n /**\n * Checks whether the x and y coordinates given are contained within this Rectangle\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @returns Whether the x/y coordinates are within this Rectangle\n */\n contains(x, y) {\n return this.width <= 0 || this.height <= 0 ? !1 : x >= this.x && x < this.x + this.width && y >= this.y && y < this.y + this.height;\n }\n /**\n * Determines whether the `other` Rectangle transformed by `transform` intersects with `this` Rectangle object.\n * Returns true only if the area of the intersection is >0, this means that Rectangles\n * sharing a side are not overlapping. Another side effect is that an arealess rectangle\n * (width or height equal to zero) can't intersect any other rectangle.\n * @param {Rectangle} other - The Rectangle to intersect with `this`.\n * @param {Matrix} transform - The transformation matrix of `other`.\n * @returns {boolean} A value of `true` if the transformed `other` Rectangle intersects with `this`; otherwise `false`.\n */\n intersects(other, transform) {\n if (!transform) {\n const x02 = this.x < other.x ? other.x : this.x;\n if ((this.right > other.right ? other.right : this.right) <= x02)\n return !1;\n const y02 = this.y < other.y ? other.y : this.y;\n return (this.bottom > other.bottom ? other.bottom : this.bottom) > y02;\n }\n const x0 = this.left, x1 = this.right, y0 = this.top, y1 = this.bottom;\n if (x1 <= x0 || y1 <= y0)\n return !1;\n const lt = tempPoints[0].set(other.left, other.top), lb = tempPoints[1].set(other.left, other.bottom), rt = tempPoints[2].set(other.right, other.top), rb = tempPoints[3].set(other.right, other.bottom);\n if (rt.x <= lt.x || lb.y <= lt.y)\n return !1;\n const s = Math.sign(transform.a * transform.d - transform.b * transform.c);\n if (s === 0 || (transform.apply(lt, lt), transform.apply(lb, lb), transform.apply(rt, rt), transform.apply(rb, rb), Math.max(lt.x, lb.x, rt.x, rb.x) <= x0 || Math.min(lt.x, lb.x, rt.x, rb.x) >= x1 || Math.max(lt.y, lb.y, rt.y, rb.y) <= y0 || Math.min(lt.y, lb.y, rt.y, rb.y) >= y1))\n return !1;\n const nx = s * (lb.y - lt.y), ny = s * (lt.x - lb.x), n00 = nx * x0 + ny * y0, n10 = nx * x1 + ny * y0, n01 = nx * x0 + ny * y1, n11 = nx * x1 + ny * y1;\n if (Math.max(n00, n10, n01, n11) <= nx * lt.x + ny * lt.y || Math.min(n00, n10, n01, n11) >= nx * rb.x + ny * rb.y)\n return !1;\n const mx = s * (lt.y - rt.y), my = s * (rt.x - lt.x), m00 = mx * x0 + my * y0, m10 = mx * x1 + my * y0, m01 = mx * x0 + my * y1, m11 = mx * x1 + my * y1;\n return !(Math.max(m00, m10, m01, m11) <= mx * lt.x + my * lt.y || Math.min(m00, m10, m01, m11) >= mx * rb.x + my * rb.y);\n }\n /**\n * Pads the rectangle making it grow in all directions.\n * If paddingY is omitted, both paddingX and paddingY will be set to paddingX.\n * @param paddingX - The horizontal padding amount.\n * @param paddingY - The vertical padding amount.\n * @returns Returns itself.\n */\n pad(paddingX = 0, paddingY = paddingX) {\n return this.x -= paddingX, this.y -= paddingY, this.width += paddingX * 2, this.height += paddingY * 2, this;\n }\n /**\n * Fits this rectangle around the passed one.\n * @param rectangle - The rectangle to fit.\n * @returns Returns itself.\n */\n fit(rectangle) {\n const x1 = Math.max(this.x, rectangle.x), x2 = Math.min(this.x + this.width, rectangle.x + rectangle.width), y1 = Math.max(this.y, rectangle.y), y2 = Math.min(this.y + this.height, rectangle.y + rectangle.height);\n return this.x = x1, this.width = Math.max(x2 - x1, 0), this.y = y1, this.height = Math.max(y2 - y1, 0), this;\n }\n /**\n * Enlarges rectangle that way its corners lie on grid\n * @param resolution - resolution\n * @param eps - precision\n * @returns Returns itself.\n */\n ceil(resolution = 1, eps = 1e-3) {\n const x2 = Math.ceil((this.x + this.width - eps) * resolution) / resolution, y2 = Math.ceil((this.y + this.height - eps) * resolution) / resolution;\n return this.x = Math.floor((this.x + eps) * resolution) / resolution, this.y = Math.floor((this.y + eps) * resolution) / resolution, this.width = x2 - this.x, this.height = y2 - this.y, this;\n }\n /**\n * Enlarges this rectangle to include the passed rectangle.\n * @param rectangle - The rectangle to include.\n * @returns Returns itself.\n */\n enlarge(rectangle) {\n const x1 = Math.min(this.x, rectangle.x), x2 = Math.max(this.x + this.width, rectangle.x + rectangle.width), y1 = Math.min(this.y, rectangle.y), y2 = Math.max(this.y + this.height, rectangle.y + rectangle.height);\n return this.x = x1, this.width = x2 - x1, this.y = y1, this.height = y2 - y1, this;\n }\n}\nRectangle.prototype.toString = function() {\n return `[@pixi/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`;\n};\nexport {\n Rectangle\n};\n//# sourceMappingURL=Rectangle.mjs.map\n","import { SHAPES } from \"../const.mjs\";\nimport { Rectangle } from \"./Rectangle.mjs\";\nclass Circle {\n /**\n * @param x - The X coordinate of the center of this circle\n * @param y - The Y coordinate of the center of this circle\n * @param radius - The radius of the circle\n */\n constructor(x = 0, y = 0, radius = 0) {\n this.x = x, this.y = y, this.radius = radius, this.type = SHAPES.CIRC;\n }\n /**\n * Creates a clone of this Circle instance\n * @returns A copy of the Circle\n */\n clone() {\n return new Circle(this.x, this.y, this.radius);\n }\n /**\n * Checks whether the x and y coordinates given are contained within this circle\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @returns Whether the x/y coordinates are within this Circle\n */\n contains(x, y) {\n if (this.radius <= 0)\n return !1;\n const r2 = this.radius * this.radius;\n let dx = this.x - x, dy = this.y - y;\n return dx *= dx, dy *= dy, dx + dy <= r2;\n }\n /**\n * Returns the framing rectangle of the circle as a Rectangle object\n * @returns The framing rectangle\n */\n getBounds() {\n return new Rectangle(this.x - this.radius, this.y - this.radius, this.radius * 2, this.radius * 2);\n }\n}\nCircle.prototype.toString = function() {\n return `[@pixi/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`;\n};\nexport {\n Circle\n};\n//# sourceMappingURL=Circle.mjs.map\n","import { SHAPES } from \"../const.mjs\";\nimport { Rectangle } from \"./Rectangle.mjs\";\nclass Ellipse {\n /**\n * @param x - The X coordinate of the center of this ellipse\n * @param y - The Y coordinate of the center of this ellipse\n * @param halfWidth - The half width of this ellipse\n * @param halfHeight - The half height of this ellipse\n */\n constructor(x = 0, y = 0, halfWidth = 0, halfHeight = 0) {\n this.x = x, this.y = y, this.width = halfWidth, this.height = halfHeight, this.type = SHAPES.ELIP;\n }\n /**\n * Creates a clone of this Ellipse instance\n * @returns {PIXI.Ellipse} A copy of the ellipse\n */\n clone() {\n return new Ellipse(this.x, this.y, this.width, this.height);\n }\n /**\n * Checks whether the x and y coordinates given are contained within this ellipse\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @returns Whether the x/y coords are within this ellipse\n */\n contains(x, y) {\n if (this.width <= 0 || this.height <= 0)\n return !1;\n let normx = (x - this.x) / this.width, normy = (y - this.y) / this.height;\n return normx *= normx, normy *= normy, normx + normy <= 1;\n }\n /**\n * Returns the framing rectangle of the ellipse as a Rectangle object\n * @returns The framing rectangle\n */\n getBounds() {\n return new Rectangle(this.x - this.width, this.y - this.height, this.width, this.height);\n }\n}\nEllipse.prototype.toString = function() {\n return `[@pixi/math:Ellipse x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`;\n};\nexport {\n Ellipse\n};\n//# sourceMappingURL=Ellipse.mjs.map\n","import { SHAPES } from \"../const.mjs\";\nclass Polygon {\n /**\n * @param {PIXI.IPointData[]|number[]} points - This can be an array of Points\n * that form the polygon, a flat array of numbers that will be interpreted as [x,y, x,y, ...], or\n * the arguments passed can be all the points of the polygon e.g.\n * `new Polygon(new Point(), new Point(), ...)`, or the arguments passed can be flat\n * x,y values e.g. `new Polygon(x,y, x,y, x,y, ...)` where `x` and `y` are Numbers.\n */\n constructor(...points) {\n let flat = Array.isArray(points[0]) ? points[0] : points;\n if (typeof flat[0] != \"number\") {\n const p = [];\n for (let i = 0, il = flat.length; i < il; i++)\n p.push(flat[i].x, flat[i].y);\n flat = p;\n }\n this.points = flat, this.type = SHAPES.POLY, this.closeStroke = !0;\n }\n /**\n * Creates a clone of this polygon.\n * @returns - A copy of the polygon.\n */\n clone() {\n const points = this.points.slice(), polygon = new Polygon(points);\n return polygon.closeStroke = this.closeStroke, polygon;\n }\n /**\n * Checks whether the x and y coordinates passed to this function are contained within this polygon.\n * @param x - The X coordinate of the point to test.\n * @param y - The Y coordinate of the point to test.\n * @returns - Whether the x/y coordinates are within this polygon.\n */\n contains(x, y) {\n let inside = !1;\n const length = this.points.length / 2;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const xi = this.points[i * 2], yi = this.points[i * 2 + 1], xj = this.points[j * 2], yj = this.points[j * 2 + 1];\n yi > y != yj > y && x < (xj - xi) * ((y - yi) / (yj - yi)) + xi && (inside = !inside);\n }\n return inside;\n }\n}\nPolygon.prototype.toString = function() {\n return `[@pixi/math:PolygoncloseStroke=${this.closeStroke}points=${this.points.reduce((pointsDesc, currentPoint) => `${pointsDesc}, ${currentPoint}`, \"\")}]`;\n};\nexport {\n Polygon\n};\n//# sourceMappingURL=Polygon.mjs.map\n","import { SHAPES } from \"../const.mjs\";\nclass RoundedRectangle {\n /**\n * @param x - The X coordinate of the upper-left corner of the rounded rectangle\n * @param y - The Y coordinate of the upper-left corner of the rounded rectangle\n * @param width - The overall width of this rounded rectangle\n * @param height - The overall height of this rounded rectangle\n * @param radius - Controls the radius of the rounded corners\n */\n constructor(x = 0, y = 0, width = 0, height = 0, radius = 20) {\n this.x = x, this.y = y, this.width = width, this.height = height, this.radius = radius, this.type = SHAPES.RREC;\n }\n /**\n * Creates a clone of this Rounded Rectangle.\n * @returns - A copy of the rounded rectangle.\n */\n clone() {\n return new RoundedRectangle(this.x, this.y, this.width, this.height, this.radius);\n }\n /**\n * Checks whether the x and y coordinates given are contained within this Rounded Rectangle\n * @param x - The X coordinate of the point to test.\n * @param y - The Y coordinate of the point to test.\n * @returns - Whether the x/y coordinates are within this Rounded Rectangle.\n */\n contains(x, y) {\n if (this.width <= 0 || this.height <= 0)\n return !1;\n if (x >= this.x && x <= this.x + this.width && y >= this.y && y <= this.y + this.height) {\n const radius = Math.max(0, Math.min(this.radius, Math.min(this.width, this.height) / 2));\n if (y >= this.y + radius && y <= this.y + this.height - radius || x >= this.x + radius && x <= this.x + this.width - radius)\n return !0;\n let dx = x - (this.x + radius), dy = y - (this.y + radius);\n const radius2 = radius * radius;\n if (dx * dx + dy * dy <= radius2 || (dx = x - (this.x + this.width - radius), dx * dx + dy * dy <= radius2) || (dy = y - (this.y + this.height - radius), dx * dx + dy * dy <= radius2) || (dx = x - (this.x + radius), dx * dx + dy * dy <= radius2))\n return !0;\n }\n return !1;\n }\n}\nRoundedRectangle.prototype.toString = function() {\n return `[@pixi/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`;\n};\nexport {\n RoundedRectangle\n};\n//# sourceMappingURL=RoundedRectangle.mjs.map\n","import { PI_2 } from \"./const.mjs\";\nimport { Point } from \"./Point.mjs\";\nclass Matrix {\n /**\n * @param a - x scale\n * @param b - y skew\n * @param c - x skew\n * @param d - y scale\n * @param tx - x translation\n * @param ty - y translation\n */\n constructor(a = 1, b = 0, c = 0, d = 1, tx = 0, ty = 0) {\n this.array = null, this.a = a, this.b = b, this.c = c, this.d = d, this.tx = tx, this.ty = ty;\n }\n /**\n * Creates a Matrix object based on the given array. The Element to Matrix mapping order is as follows:\n *\n * a = array[0]\n * b = array[1]\n * c = array[3]\n * d = array[4]\n * tx = array[2]\n * ty = array[5]\n * @param array - The array that the matrix will be populated from.\n */\n fromArray(array) {\n this.a = array[0], this.b = array[1], this.c = array[3], this.d = array[4], this.tx = array[2], this.ty = array[5];\n }\n /**\n * Sets the matrix properties.\n * @param a - Matrix component\n * @param b - Matrix component\n * @param c - Matrix component\n * @param d - Matrix component\n * @param tx - Matrix component\n * @param ty - Matrix component\n * @returns This matrix. Good for chaining method calls.\n */\n set(a, b, c, d, tx, ty) {\n return this.a = a, this.b = b, this.c = c, this.d = d, this.tx = tx, this.ty = ty, this;\n }\n /**\n * Creates an array from the current Matrix object.\n * @param transpose - Whether we need to transpose the matrix or not\n * @param [out=new Float32Array(9)] - If provided the array will be assigned to out\n * @returns The newly created array which contains the matrix\n */\n toArray(transpose, out) {\n this.array || (this.array = new Float32Array(9));\n const array = out || this.array;\n return transpose ? (array[0] = this.a, array[1] = this.b, array[2] = 0, array[3] = this.c, array[4] = this.d, array[5] = 0, array[6] = this.tx, array[7] = this.ty, array[8] = 1) : (array[0] = this.a, array[1] = this.c, array[2] = this.tx, array[3] = this.b, array[4] = this.d, array[5] = this.ty, array[6] = 0, array[7] = 0, array[8] = 1), array;\n }\n /**\n * Get a new position with the current transformation applied.\n * Can be used to go from a child's coordinate space to the world coordinate space. (e.g. rendering)\n * @param pos - The origin\n * @param {PIXI.Point} [newPos] - The point that the new position is assigned to (allowed to be same as input)\n * @returns {PIXI.Point} The new point, transformed through this matrix\n */\n apply(pos, newPos) {\n newPos = newPos || new Point();\n const x = pos.x, y = pos.y;\n return newPos.x = this.a * x + this.c * y + this.tx, newPos.y = this.b * x + this.d * y + this.ty, newPos;\n }\n /**\n * Get a new position with the inverse of the current transformation applied.\n * Can be used to go from the world coordinate space to a child's coordinate space. (e.g. input)\n * @param pos - The origin\n * @param {PIXI.Point} [newPos] - The point that the new position is assigned to (allowed to be same as input)\n * @returns {PIXI.Point} The new point, inverse-transformed through this matrix\n */\n applyInverse(pos, newPos) {\n newPos = newPos || new Point();\n const id = 1 / (this.a * this.d + this.c * -this.b), x = pos.x, y = pos.y;\n return newPos.x = this.d * id * x + -this.c * id * y + (this.ty * this.c - this.tx * this.d) * id, newPos.y = this.a * id * y + -this.b * id * x + (-this.ty * this.a + this.tx * this.b) * id, newPos;\n }\n /**\n * Translates the matrix on the x and y.\n * @param x - How much to translate x by\n * @param y - How much to translate y by\n * @returns This matrix. Good for chaining method calls.\n */\n translate(x, y) {\n return this.tx += x, this.ty += y, this;\n }\n /**\n * Applies a scale transformation to the matrix.\n * @param x - The amount to scale horizontally\n * @param y - The amount to scale vertically\n * @returns This matrix. Good for chaining method calls.\n */\n scale(x, y) {\n return this.a *= x, this.d *= y, this.c *= x, this.b *= y, this.tx *= x, this.ty *= y, this;\n }\n /**\n * Applies a rotation transformation to the matrix.\n * @param angle - The angle in radians.\n * @returns This matrix. Good for chaining method calls.\n */\n rotate(angle) {\n const cos = Math.cos(angle), sin = Math.sin(angle), a1 = this.a, c1 = this.c, tx1 = this.tx;\n return this.a = a1 * cos - this.b * sin, this.b = a1 * sin + this.b * cos, this.c = c1 * cos - this.d * sin, this.d = c1 * sin + this.d * cos, this.tx = tx1 * cos - this.ty * sin, this.ty = tx1 * sin + this.ty * cos, this;\n }\n /**\n * Appends the given Matrix to this Matrix.\n * @param matrix - The matrix to append.\n * @returns This matrix. Good for chaining method calls.\n */\n append(matrix) {\n const a1 = this.a, b1 = this.b, c1 = this.c, d1 = this.d;\n return this.a = matrix.a * a1 + matrix.b * c1, this.b = matrix.a * b1 + matrix.b * d1, this.c = matrix.c * a1 + matrix.d * c1, this.d = matrix.c * b1 + matrix.d * d1, this.tx = matrix.tx * a1 + matrix.ty * c1 + this.tx, this.ty = matrix.tx * b1 + matrix.ty * d1 + this.ty, this;\n }\n /**\n * Sets the matrix based on all the available properties\n * @param x - Position on the x axis\n * @param y - Position on the y axis\n * @param pivotX - Pivot on the x axis\n * @param pivotY - Pivot on the y axis\n * @param scaleX - Scale on the x axis\n * @param scaleY - Scale on the y axis\n * @param rotation - Rotation in radians\n * @param skewX - Skew on the x axis\n * @param skewY - Skew on the y axis\n * @returns This matrix. Good for chaining method calls.\n */\n setTransform(x, y, pivotX, pivotY, scaleX, scaleY, rotation, skewX, skewY) {\n return this.a = Math.cos(rotation + skewY) * scaleX, this.b = Math.sin(rotation + skewY) * scaleX, this.c = -Math.sin(rotation - skewX) * scaleY, this.d = Math.cos(rotation - skewX) * scaleY, this.tx = x - (pivotX * this.a + pivotY * this.c), this.ty = y - (pivotX * this.b + pivotY * this.d), this;\n }\n /**\n * Prepends the given Matrix to this Matrix.\n * @param matrix - The matrix to prepend\n * @returns This matrix. Good for chaining method calls.\n */\n prepend(matrix) {\n const tx1 = this.tx;\n if (matrix.a !== 1 || matrix.b !== 0 || matrix.c !== 0 || matrix.d !== 1) {\n const a1 = this.a, c1 = this.c;\n this.a = a1 * matrix.a + this.b * matrix.c, this.b = a1 * matrix.b + this.b * matrix.d, this.c = c1 * matrix.a + this.d * matrix.c, this.d = c1 * matrix.b + this.d * matrix.d;\n }\n return this.tx = tx1 * matrix.a + this.ty * matrix.c + matrix.tx, this.ty = tx1 * matrix.b + this.ty * matrix.d + matrix.ty, this;\n }\n /**\n * Decomposes the matrix (x, y, scaleX, scaleY, and rotation) and sets the properties on to a transform.\n * @param transform - The transform to apply the properties to.\n * @returns The transform with the newly applied properties\n */\n decompose(transform) {\n const a = this.a, b = this.b, c = this.c, d = this.d, pivot = transform.pivot, skewX = -Math.atan2(-c, d), skewY = Math.atan2(b, a), delta = Math.abs(skewX + skewY);\n return delta < 1e-5 || Math.abs(PI_2 - delta) < 1e-5 ? (transform.rotation = skewY, transform.skew.x = transform.skew.y = 0) : (transform.rotation = 0, transform.skew.x = skewX, transform.skew.y = skewY), transform.scale.x = Math.sqrt(a * a + b * b), transform.scale.y = Math.sqrt(c * c + d * d), transform.position.x = this.tx + (pivot.x * a + pivot.y * c), transform.position.y = this.ty + (pivot.x * b + pivot.y * d), transform;\n }\n /**\n * Inverts this matrix\n * @returns This matrix. Good for chaining method calls.\n */\n invert() {\n const a1 = this.a, b1 = this.b, c1 = this.c, d1 = this.d, tx1 = this.tx, n = a1 * d1 - b1 * c1;\n return this.a = d1 / n, this.b = -b1 / n, this.c = -c1 / n, this.d = a1 / n, this.tx = (c1 * this.ty - d1 * tx1) / n, this.ty = -(a1 * this.ty - b1 * tx1) / n, this;\n }\n /**\n * Resets this Matrix to an identity (default) matrix.\n * @returns This matrix. Good for chaining method calls.\n */\n identity() {\n return this.a = 1, this.b = 0, this.c = 0, this.d = 1, this.tx = 0, this.ty = 0, this;\n }\n /**\n * Creates a new Matrix object with the same values as this one.\n * @returns A copy of this matrix. Good for chaining method calls.\n */\n clone() {\n const matrix = new Matrix();\n return matrix.a = this.a, matrix.b = this.b, matrix.c = this.c, matrix.d = this.d, matrix.tx = this.tx, matrix.ty = this.ty, matrix;\n }\n /**\n * Changes the values of the given matrix to be the same as the ones in this matrix\n * @param matrix - The matrix to copy to.\n * @returns The matrix given in parameter with its values updated.\n */\n copyTo(matrix) {\n return matrix.a = this.a, matrix.b = this.b, matrix.c = this.c, matrix.d = this.d, matrix.tx = this.tx, matrix.ty = this.ty, matrix;\n }\n /**\n * Changes the values of the matrix to be the same as the ones in given matrix\n * @param {PIXI.Matrix} matrix - The matrix to copy from.\n * @returns {PIXI.Matrix} this\n */\n copyFrom(matrix) {\n return this.a = matrix.a, this.b = matrix.b, this.c = matrix.c, this.d = matrix.d, this.tx = matrix.tx, this.ty = matrix.ty, this;\n }\n /**\n * A default (identity) matrix\n * @readonly\n */\n static get IDENTITY() {\n return new Matrix();\n }\n /**\n * A temp matrix\n * @readonly\n */\n static get TEMP_MATRIX() {\n return new Matrix();\n }\n}\nMatrix.prototype.toString = function() {\n return `[@pixi/math:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`;\n};\nexport {\n Matrix\n};\n//# sourceMappingURL=Matrix.mjs.map\n","import { Matrix } from \"./Matrix.mjs\";\nconst ux = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1], uy = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1], vx = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1], vy = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1], rotationCayley = [], rotationMatrices = [], signum = Math.sign;\nfunction init() {\n for (let i = 0; i < 16; i++) {\n const row = [];\n rotationCayley.push(row);\n for (let j = 0; j < 16; j++) {\n const _ux = signum(ux[i] * ux[j] + vx[i] * uy[j]), _uy = signum(uy[i] * ux[j] + vy[i] * uy[j]), _vx = signum(ux[i] * vx[j] + vx[i] * vy[j]), _vy = signum(uy[i] * vx[j] + vy[i] * vy[j]);\n for (let k = 0; k < 16; k++)\n if (ux[k] === _ux && uy[k] === _uy && vx[k] === _vx && vy[k] === _vy) {\n row.push(k);\n break;\n }\n }\n }\n for (let i = 0; i < 16; i++) {\n const mat = new Matrix();\n mat.set(ux[i], uy[i], vx[i], vy[i], 0, 0), rotationMatrices.push(mat);\n }\n}\ninit();\nconst groupD8 = {\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 0° | East |\n * @readonly\n */\n E: 0,\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 45°↻ | Southeast |\n * @readonly\n */\n SE: 1,\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 90°↻ | South |\n * @readonly\n */\n S: 2,\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 135°↻ | Southwest |\n * @readonly\n */\n SW: 3,\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 180° | West |\n * @readonly\n */\n W: 4,\n /**\n * | Rotation | Direction |\n * |-------------|--------------|\n * | -135°/225°↻ | Northwest |\n * @readonly\n */\n NW: 5,\n /**\n * | Rotation | Direction |\n * |-------------|--------------|\n * | -90°/270°↻ | North |\n * @readonly\n */\n N: 6,\n /**\n * | Rotation | Direction |\n * |-------------|--------------|\n * | -45°/315°↻ | Northeast |\n * @readonly\n */\n NE: 7,\n /**\n * Reflection about Y-axis.\n * @readonly\n */\n MIRROR_VERTICAL: 8,\n /**\n * Reflection about the main diagonal.\n * @readonly\n */\n MAIN_DIAGONAL: 10,\n /**\n * Reflection about X-axis.\n * @readonly\n */\n MIRROR_HORIZONTAL: 12,\n /**\n * Reflection about reverse diagonal.\n * @readonly\n */\n REVERSE_DIAGONAL: 14,\n /**\n * @param {PIXI.GD8Symmetry} ind - sprite rotation angle.\n * @returns {PIXI.GD8Symmetry} The X-component of the U-axis\n * after rotating the axes.\n */\n uX: (ind) => ux[ind],\n /**\n * @param {PIXI.GD8Symmetry} ind - sprite rotation angle.\n * @returns {PIXI.GD8Symmetry} The Y-component of the U-axis\n * after rotating the axes.\n */\n uY: (ind) => uy[ind],\n /**\n * @param {PIXI.GD8Symmetry} ind - sprite rotation angle.\n * @returns {PIXI.GD8Symmetry} The X-component of the V-axis\n * after rotating the axes.\n */\n vX: (ind) => vx[ind],\n /**\n * @param {PIXI.GD8Symmetry} ind - sprite rotation angle.\n * @returns {PIXI.GD8Symmetry} The Y-component of the V-axis\n * after rotating the axes.\n */\n vY: (ind) => vy[ind],\n /**\n * @param {PIXI.GD8Symmetry} rotation - symmetry whose opposite\n * is needed. Only rotations have opposite symmetries while\n * reflections don't.\n * @returns {PIXI.GD8Symmetry} The opposite symmetry of `rotation`\n */\n inv: (rotation) => rotation & 8 ? rotation & 15 : -rotation & 7,\n /**\n * Composes the two D8 operations.\n *\n * Taking `^` as reflection:\n *\n * | | E=0 | S=2 | W=4 | N=6 | E^=8 | S^=10 | W^=12 | N^=14 |\n * |-------|-----|-----|-----|-----|------|-------|-------|-------|\n * | E=0 | E | S | W | N | E^ | S^ | W^ | N^ |\n * | S=2 | S | W | N | E | S^ | W^ | N^ | E^ |\n * | W=4 | W | N | E | S | W^ | N^ | E^ | S^ |\n * | N=6 | N | E | S | W | N^ | E^ | S^ | W^ |\n * | E^=8 | E^ | N^ | W^ | S^ | E | N | W | S |\n * | S^=10 | S^ | E^ | N^ | W^ | S | E | N | W |\n * | W^=12 | W^ | S^ | E^ | N^ | W | S | E | N |\n * | N^=14 | N^ | W^ | S^ | E^ | N | W | S | E |\n *\n * [This is a Cayley table]{@link https://en.wikipedia.org/wiki/Cayley_table}\n * @param {PIXI.GD8Symmetry} rotationSecond - Second operation, which\n * is the row in the above cayley table.\n * @param {PIXI.GD8Symmetry} rotationFirst - First operation, which\n * is the column in the above cayley table.\n * @returns {PIXI.GD8Symmetry} Composed operation\n */\n add: (rotationSecond, rotationFirst) => rotationCayley[rotationSecond][rotationFirst],\n /**\n * Reverse of `add`.\n * @param {PIXI.GD8Symmetry} rotationSecond - Second operation\n * @param {PIXI.GD8Symmetry} rotationFirst - First operation\n * @returns {PIXI.GD8Symmetry} Result\n */\n sub: (rotationSecond, rotationFirst) => rotationCayley[rotationSecond][groupD8.inv(rotationFirst)],\n /**\n * Adds 180 degrees to rotation, which is a commutative\n * operation.\n * @param {number} rotation - The number to rotate.\n * @returns {number} Rotated number\n */\n rotate180: (rotation) => rotation ^ 4,\n /**\n * Checks if the rotation angle is vertical, i.e. south\n * or north. It doesn't work for reflections.\n * @param {PIXI.GD8Symmetry} rotation - The number to check.\n * @returns {boolean} Whether or not the direction is vertical\n */\n isVertical: (rotation) => (rotation & 3) === 2,\n // rotation % 4 === 2\n /**\n * Approximates the vector `V(dx,dy)` into one of the\n * eight directions provided by `groupD8`.\n * @param {number} dx - X-component of the vector\n * @param {number} dy - Y-component of the vector\n * @returns {PIXI.GD8Symmetry} Approximation of the vector into\n * one of the eight symmetries.\n */\n byDirection: (dx, dy) => Math.abs(dx) * 2 <= Math.abs(dy) ? dy >= 0 ? groupD8.S : groupD8.N : Math.abs(dy) * 2 <= Math.abs(dx) ? dx > 0 ? groupD8.E : groupD8.W : dy > 0 ? dx > 0 ? groupD8.SE : groupD8.SW : dx > 0 ? groupD8.NE : groupD8.NW,\n /**\n * Helps sprite to compensate texture packer rotation.\n * @param {PIXI.Matrix} matrix - sprite world matrix\n * @param {PIXI.GD8Symmetry} rotation - The rotation factor to use.\n * @param {number} tx - sprite anchoring\n * @param {number} ty - sprite anchoring\n */\n matrixAppendRotationInv: (matrix, rotation, tx = 0, ty = 0) => {\n const mat = rotationMatrices[groupD8.inv(rotation)];\n mat.tx = tx, mat.ty = ty, matrix.append(mat);\n }\n};\nexport {\n groupD8\n};\n//# sourceMappingURL=groupD8.mjs.map\n","class ObservablePoint {\n /**\n * Creates a new `ObservablePoint`\n * @param cb - callback function triggered when `x` and/or `y` are changed\n * @param scope - owner of callback\n * @param {number} [x=0] - position of the point on the x axis\n * @param {number} [y=0] - position of the point on the y axis\n */\n constructor(cb, scope, x = 0, y = 0) {\n this._x = x, this._y = y, this.cb = cb, this.scope = scope;\n }\n /**\n * Creates a clone of this point.\n * The callback and scope params can be overridden otherwise they will default\n * to the clone object's values.\n * @override\n * @param cb - The callback function triggered when `x` and/or `y` are changed\n * @param scope - The owner of the callback\n * @returns a copy of this observable point\n */\n clone(cb = this.cb, scope = this.scope) {\n return new ObservablePoint(cb, scope, this._x, this._y);\n }\n /**\n * Sets the point to a new `x` and `y` position.\n * If `y` is omitted, both `x` and `y` will be set to `x`.\n * @param {number} [x=0] - position of the point on the x axis\n * @param {number} [y=x] - position of the point on the y axis\n * @returns The observable point instance itself\n */\n set(x = 0, y = x) {\n return (this._x !== x || this._y !== y) && (this._x = x, this._y = y, this.cb.call(this.scope)), this;\n }\n /**\n * Copies x and y from the given point (`p`)\n * @param p - The point to copy from. Can be any of type that is or extends `IPointData`\n * @returns The observable point instance itself\n */\n copyFrom(p) {\n return (this._x !== p.x || this._y !== p.y) && (this._x = p.x, this._y = p.y, this.cb.call(this.scope)), this;\n }\n /**\n * Copies this point's x and y into that of the given point (`p`)\n * @param p - The point to copy to. Can be any of type that is or extends `IPointData`\n * @returns The point (`p`) with values updated\n */\n copyTo(p) {\n return p.set(this._x, this._y), p;\n }\n /**\n * Accepts another point (`p`) and returns `true` if the given point is equal to this point\n * @param p - The point to check\n * @returns Returns `true` if both `x` and `y` are equal\n */\n equals(p) {\n return p.x === this._x && p.y === this._y;\n }\n /** Position of the observable point on the x axis. */\n get x() {\n return this._x;\n }\n set x(value) {\n this._x !== value && (this._x = value, this.cb.call(this.scope));\n }\n /** Position of the observable point on the y axis. */\n get y() {\n return this._y;\n }\n set y(value) {\n this._y !== value && (this._y = value, this.cb.call(this.scope));\n }\n}\nObservablePoint.prototype.toString = function() {\n return `[@pixi/math:ObservablePoint x=${this.x} y=${this.y} scope=${this.scope}]`;\n};\nexport {\n ObservablePoint\n};\n//# sourceMappingURL=ObservablePoint.mjs.map\n","import { Matrix } from \"./Matrix.mjs\";\nimport { ObservablePoint } from \"./ObservablePoint.mjs\";\nconst _Transform = class {\n constructor() {\n this.worldTransform = new Matrix(), this.localTransform = new Matrix(), this.position = new ObservablePoint(this.onChange, this, 0, 0), this.scale = new ObservablePoint(this.onChange, this, 1, 1), this.pivot = new ObservablePoint(this.onChange, this, 0, 0), this.skew = new ObservablePoint(this.updateSkew, this, 0, 0), this._rotation = 0, this._cx = 1, this._sx = 0, this._cy = 0, this._sy = 1, this._localID = 0, this._currentLocalID = 0, this._worldID = 0, this._parentID = 0;\n }\n /** Called when a value changes. */\n onChange() {\n this._localID++;\n }\n /** Called when the skew or the rotation changes. */\n updateSkew() {\n this._cx = Math.cos(this._rotation + this.skew.y), this._sx = Math.sin(this._rotation + this.skew.y), this._cy = -Math.sin(this._rotation - this.skew.x), this._sy = Math.cos(this._rotation - this.skew.x), this._localID++;\n }\n /** Updates the local transformation matrix. */\n updateLocalTransform() {\n const lt = this.localTransform;\n this._localID !== this._currentLocalID && (lt.a = this._cx * this.scale.x, lt.b = this._sx * this.scale.x, lt.c = this._cy * this.scale.y, lt.d = this._sy * this.scale.y, lt.tx = this.position.x - (this.pivot.x * lt.a + this.pivot.y * lt.c), lt.ty = this.position.y - (this.pivot.x * lt.b + this.pivot.y * lt.d), this._currentLocalID = this._localID, this._parentID = -1);\n }\n /**\n * Updates the local and the world transformation matrices.\n * @param parentTransform - The parent transform\n */\n updateTransform(parentTransform) {\n const lt = this.localTransform;\n if (this._localID !== this._currentLocalID && (lt.a = this._cx * this.scale.x, lt.b = this._sx * this.scale.x, lt.c = this._cy * this.scale.y, lt.d = this._sy * this.scale.y, lt.tx = this.position.x - (this.pivot.x * lt.a + this.pivot.y * lt.c), lt.ty = this.position.y - (this.pivot.x * lt.b + this.pivot.y * lt.d), this._currentLocalID = this._localID, this._parentID = -1), this._parentID !== parentTransform._worldID) {\n const pt = parentTransform.worldTransform, wt = this.worldTransform;\n wt.a = lt.a * pt.a + lt.b * pt.c, wt.b = lt.a * pt.b + lt.b * pt.d, wt.c = lt.c * pt.a + lt.d * pt.c, wt.d = lt.c * pt.b + lt.d * pt.d, wt.tx = lt.tx * pt.a + lt.ty * pt.c + pt.tx, wt.ty = lt.tx * pt.b + lt.ty * pt.d + pt.ty, this._parentID = parentTransform._worldID, this._worldID++;\n }\n }\n /**\n * Decomposes a matrix and sets the transforms properties based on it.\n * @param matrix - The matrix to decompose\n */\n setFromMatrix(matrix) {\n matrix.decompose(this), this._localID++;\n }\n /** The rotation of the object in radians. */\n get rotation() {\n return this._rotation;\n }\n set rotation(value) {\n this._rotation !== value && (this._rotation = value, this.updateSkew());\n }\n};\n_Transform.IDENTITY = new _Transform();\nlet Transform = _Transform;\nTransform.prototype.toString = function() {\n return `[@pixi/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`;\n};\nexport {\n Transform\n};\n//# sourceMappingURL=Transform.mjs.map\n","var defaultFragment = `varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n gl_FragColor *= texture2D(uSampler, vTextureCoord);\n}`;\nexport {\n defaultFragment as default\n};\n//# sourceMappingURL=defaultProgram.frag.mjs.map\n","var defaultVertex = `attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void){\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}\n`;\nexport {\n defaultVertex as default\n};\n//# sourceMappingURL=defaultProgram.vert.mjs.map\n","function compileShader(gl, type, src) {\n const shader = gl.createShader(type);\n return gl.shaderSource(shader, src), gl.compileShader(shader), shader;\n}\nexport {\n compileShader\n};\n//# sourceMappingURL=compileShader.mjs.map\n","function booleanArray(size) {\n const array = new Array(size);\n for (let i = 0; i < array.length; i++)\n array[i] = !1;\n return array;\n}\nfunction defaultValue(type, size) {\n switch (type) {\n case \"float\":\n return 0;\n case \"vec2\":\n return new Float32Array(2 * size);\n case \"vec3\":\n return new Float32Array(3 * size);\n case \"vec4\":\n return new Float32Array(4 * size);\n case \"int\":\n case \"uint\":\n case \"sampler2D\":\n case \"sampler2DArray\":\n return 0;\n case \"ivec2\":\n return new Int32Array(2 * size);\n case \"ivec3\":\n return new Int32Array(3 * size);\n case \"ivec4\":\n return new Int32Array(4 * size);\n case \"uvec2\":\n return new Uint32Array(2 * size);\n case \"uvec3\":\n return new Uint32Array(3 * size);\n case \"uvec4\":\n return new Uint32Array(4 * size);\n case \"bool\":\n return !1;\n case \"bvec2\":\n return booleanArray(2 * size);\n case \"bvec3\":\n return booleanArray(3 * size);\n case \"bvec4\":\n return booleanArray(4 * size);\n case \"mat2\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 1\n ]);\n case \"mat3\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ]);\n case \"mat4\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n }\n return null;\n}\nexport {\n defaultValue\n};\n//# sourceMappingURL=defaultValue.mjs.map\n","const uniformParsers = [\n // a float cache layer\n {\n test: (data) => data.type === \"float\" && data.size === 1 && !data.isArray,\n code: (name) => `\n if(uv[\"${name}\"] !== ud[\"${name}\"].value)\n {\n ud[\"${name}\"].value = uv[\"${name}\"]\n gl.uniform1f(ud[\"${name}\"].location, uv[\"${name}\"])\n }\n `\n },\n // handling samplers\n {\n test: (data, uniform) => (\n // eslint-disable-next-line max-len,no-eq-null,eqeqeq\n (data.type === \"sampler2D\" || data.type === \"samplerCube\" || data.type === \"sampler2DArray\") && data.size === 1 && !data.isArray && (uniform == null || uniform.castToBaseTexture !== void 0)\n ),\n code: (name) => `t = syncData.textureCount++;\n\n renderer.texture.bind(uv[\"${name}\"], t);\n\n if(ud[\"${name}\"].value !== t)\n {\n ud[\"${name}\"].value = t;\n gl.uniform1i(ud[\"${name}\"].location, t);\n; // eslint-disable-line max-len\n }`\n },\n // uploading pixi matrix object to mat3\n {\n test: (data, uniform) => data.type === \"mat3\" && data.size === 1 && !data.isArray && uniform.a !== void 0,\n code: (name) => (\n // TODO and some smart caching dirty ids here!\n `\n gl.uniformMatrix3fv(ud[\"${name}\"].location, false, uv[\"${name}\"].toArray(true));\n `\n ),\n codeUbo: (name) => `\n var ${name}_matrix = uv.${name}.toArray(true);\n\n data[offset] = ${name}_matrix[0];\n data[offset+1] = ${name}_matrix[1];\n data[offset+2] = ${name}_matrix[2];\n \n data[offset + 4] = ${name}_matrix[3];\n data[offset + 5] = ${name}_matrix[4];\n data[offset + 6] = ${name}_matrix[5];\n \n data[offset + 8] = ${name}_matrix[6];\n data[offset + 9] = ${name}_matrix[7];\n data[offset + 10] = ${name}_matrix[8];\n `\n },\n // uploading a pixi point as a vec2 with caching layer\n {\n test: (data, uniform) => data.type === \"vec2\" && data.size === 1 && !data.isArray && uniform.x !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.x || cv[1] !== v.y)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n gl.uniform2f(ud[\"${name}\"].location, v.x, v.y);\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n `\n },\n // caching layer for a vec2\n {\n test: (data) => data.type === \"vec2\" && data.size === 1 && !data.isArray,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2f(ud[\"${name}\"].location, v[0], v[1]);\n }\n `\n },\n // upload a pixi rectangle as a vec4 with caching layer\n {\n test: (data, uniform) => data.type === \"vec4\" && data.size === 1 && !data.isArray && uniform.width !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n cv[2] = v.width;\n cv[3] = v.height;\n gl.uniform4f(ud[\"${name}\"].location, v.x, v.y, v.width, v.height)\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n data[offset+2] = v.width;\n data[offset+3] = v.height;\n `\n },\n // upload a pixi color as vec4 with caching layer\n {\n test: (data, uniform) => data.type === \"vec4\" && data.size === 1 && !data.isArray && uniform.red !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha)\n {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n cv[3] = v.alpha;\n gl.uniform4f(ud[\"${name}\"].location, v.red, v.green, v.blue, v.alpha)\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.red;\n data[offset+1] = v.green;\n data[offset+2] = v.blue;\n data[offset+3] = v.alpha;\n `\n },\n // upload a pixi color as a vec3 with caching layer\n {\n test: (data, uniform) => data.type === \"vec3\" && data.size === 1 && !data.isArray && uniform.red !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.a)\n {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n \n gl.uniform3f(ud[\"${name}\"].location, v.red, v.green, v.blue)\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.red;\n data[offset+1] = v.green;\n data[offset+2] = v.blue;\n `\n },\n // a caching layer for vec4 uploading\n {\n test: (data) => data.type === \"vec4\" && data.size === 1 && !data.isArray,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(ud[\"${name}\"].location, v[0], v[1], v[2], v[3])\n }`\n }\n];\nexport {\n uniformParsers\n};\n//# sourceMappingURL=uniformParsers.mjs.map\n","import { uniformParsers } from \"./uniformParsers.mjs\";\nconst GLSL_TO_SINGLE_SETTERS_CACHED = {\n float: `\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1f(location, v);\n }`,\n vec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2f(location, v[0], v[1])\n }`,\n vec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3f(location, v[0], v[1], v[2])\n }`,\n vec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(location, v[0], v[1], v[2], v[3]);\n }`,\n int: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n ivec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }`,\n ivec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n ivec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n uint: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1ui(location, v);\n }`,\n uvec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2ui(location, v[0], v[1]);\n }`,\n uvec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3ui(location, v[0], v[1], v[2]);\n }`,\n uvec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4ui(location, v[0], v[1], v[2], v[3]);\n }`,\n bool: `\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n bvec2: `\n if (cv[0] != v[0] || cv[1] != v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }`,\n bvec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n bvec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n mat2: \"gl.uniformMatrix2fv(location, false, v)\",\n mat3: \"gl.uniformMatrix3fv(location, false, v)\",\n mat4: \"gl.uniformMatrix4fv(location, false, v)\",\n sampler2D: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n samplerCube: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n sampler2DArray: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`\n}, GLSL_TO_ARRAY_SETTERS = {\n float: \"gl.uniform1fv(location, v)\",\n vec2: \"gl.uniform2fv(location, v)\",\n vec3: \"gl.uniform3fv(location, v)\",\n vec4: \"gl.uniform4fv(location, v)\",\n mat4: \"gl.uniformMatrix4fv(location, false, v)\",\n mat3: \"gl.uniformMatrix3fv(location, false, v)\",\n mat2: \"gl.uniformMatrix2fv(location, false, v)\",\n int: \"gl.uniform1iv(location, v)\",\n ivec2: \"gl.uniform2iv(location, v)\",\n ivec3: \"gl.uniform3iv(location, v)\",\n ivec4: \"gl.uniform4iv(location, v)\",\n uint: \"gl.uniform1uiv(location, v)\",\n uvec2: \"gl.uniform2uiv(location, v)\",\n uvec3: \"gl.uniform3uiv(location, v)\",\n uvec4: \"gl.uniform4uiv(location, v)\",\n bool: \"gl.uniform1iv(location, v)\",\n bvec2: \"gl.uniform2iv(location, v)\",\n bvec3: \"gl.uniform3iv(location, v)\",\n bvec4: \"gl.uniform4iv(location, v)\",\n sampler2D: \"gl.uniform1iv(location, v)\",\n samplerCube: \"gl.uniform1iv(location, v)\",\n sampler2DArray: \"gl.uniform1iv(location, v)\"\n};\nfunction generateUniformsSync(group, uniformData) {\n const funcFragments = [`\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n `];\n for (const i in group.uniforms) {\n const data = uniformData[i];\n if (!data) {\n group.uniforms[i]?.group === !0 && (group.uniforms[i].ubo ? funcFragments.push(`\n renderer.shader.syncUniformBufferGroup(uv.${i}, '${i}');\n `) : funcFragments.push(`\n renderer.shader.syncUniformGroup(uv.${i}, syncData);\n `));\n continue;\n }\n const uniform = group.uniforms[i];\n let parsed = !1;\n for (let j = 0; j < uniformParsers.length; j++)\n if (uniformParsers[j].test(data, uniform)) {\n funcFragments.push(uniformParsers[j].code(i, uniform)), parsed = !0;\n break;\n }\n if (!parsed) {\n const template = (data.size === 1 && !data.isArray ? GLSL_TO_SINGLE_SETTERS_CACHED : GLSL_TO_ARRAY_SETTERS)[data.type].replace(\"location\", `ud[\"${i}\"].location`);\n funcFragments.push(`\n cu = ud[\"${i}\"];\n cv = cu.value;\n v = uv[\"${i}\"];\n ${template};`);\n }\n }\n return new Function(\"ud\", \"uv\", \"renderer\", \"syncData\", funcFragments.join(`\n`));\n}\nexport {\n generateUniformsSync\n};\n//# sourceMappingURL=generateUniformsSync.mjs.map\n","import { ENV } from \"@pixi/constants\";\nimport { settings } from \"@pixi/settings\";\nconst unknownContext = {};\nlet context = unknownContext;\nfunction getTestContext() {\n if (context === unknownContext || context?.isContextLost()) {\n const canvas = settings.ADAPTER.createCanvas();\n let gl;\n settings.PREFER_ENV >= ENV.WEBGL2 && (gl = canvas.getContext(\"webgl2\", {})), gl || (gl = canvas.getContext(\"webgl\", {}) || canvas.getContext(\"experimental-webgl\", {}), gl ? gl.getExtension(\"WEBGL_draw_buffers\") : gl = null), context = gl;\n }\n return context;\n}\nexport {\n getTestContext\n};\n//# sourceMappingURL=getTestContext.mjs.map\n","import { PRECISION } from \"@pixi/constants\";\nimport { getTestContext } from \"./getTestContext.mjs\";\nlet maxFragmentPrecision;\nfunction getMaxFragmentPrecision() {\n if (!maxFragmentPrecision) {\n maxFragmentPrecision = PRECISION.MEDIUM;\n const gl = getTestContext();\n if (gl && gl.getShaderPrecisionFormat) {\n const shaderFragment = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n shaderFragment && (maxFragmentPrecision = shaderFragment.precision ? PRECISION.HIGH : PRECISION.MEDIUM);\n }\n }\n return maxFragmentPrecision;\n}\nexport {\n getMaxFragmentPrecision\n};\n//# sourceMappingURL=getMaxFragmentPrecision.mjs.map\n","function logPrettyShaderError(gl, shader) {\n const shaderSrc = gl.getShaderSource(shader).split(`\n`).map((line, index) => `${index}: ${line}`), shaderLog = gl.getShaderInfoLog(shader), splitShader = shaderLog.split(`\n`), dedupe = {}, lineNumbers = splitShader.map((line) => parseFloat(line.replace(/^ERROR\\: 0\\:([\\d]+)\\:.*$/, \"$1\"))).filter((n) => n && !dedupe[n] ? (dedupe[n] = !0, !0) : !1), logArgs = [\"\"];\n lineNumbers.forEach((number) => {\n shaderSrc[number - 1] = `%c${shaderSrc[number - 1]}%c`, logArgs.push(\"background: #FF0000; color:#FFFFFF; font-size: 10px\", \"font-size: 10px\");\n });\n const fragmentSourceToLog = shaderSrc.join(`\n`);\n logArgs[0] = fragmentSourceToLog, console.error(shaderLog), console.groupCollapsed(\"click to view full shader code\"), console.warn(...logArgs), console.groupEnd();\n}\nfunction logProgramError(gl, program, vertexShader, fragmentShader) {\n gl.getProgramParameter(program, gl.LINK_STATUS) || (gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS) || logPrettyShaderError(gl, vertexShader), gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS) || logPrettyShaderError(gl, fragmentShader), console.error(\"PixiJS Error: Could not initialize shader.\"), gl.getProgramInfoLog(program) !== \"\" && console.warn(\"PixiJS Warning: gl.getProgramInfoLog()\", gl.getProgramInfoLog(program)));\n}\nexport {\n logProgramError\n};\n//# sourceMappingURL=logProgramError.mjs.map\n","const GLSL_TO_SIZE = {\n float: 1,\n vec2: 2,\n vec3: 3,\n vec4: 4,\n int: 1,\n ivec2: 2,\n ivec3: 3,\n ivec4: 4,\n uint: 1,\n uvec2: 2,\n uvec3: 3,\n uvec4: 4,\n bool: 1,\n bvec2: 2,\n bvec3: 3,\n bvec4: 4,\n mat2: 4,\n mat3: 9,\n mat4: 16,\n sampler2D: 1\n};\nfunction mapSize(type) {\n return GLSL_TO_SIZE[type];\n}\nexport {\n mapSize\n};\n//# sourceMappingURL=mapSize.mjs.map\n","let GL_TABLE = null;\nconst GL_TO_GLSL_TYPES = {\n FLOAT: \"float\",\n FLOAT_VEC2: \"vec2\",\n FLOAT_VEC3: \"vec3\",\n FLOAT_VEC4: \"vec4\",\n INT: \"int\",\n INT_VEC2: \"ivec2\",\n INT_VEC3: \"ivec3\",\n INT_VEC4: \"ivec4\",\n UNSIGNED_INT: \"uint\",\n UNSIGNED_INT_VEC2: \"uvec2\",\n UNSIGNED_INT_VEC3: \"uvec3\",\n UNSIGNED_INT_VEC4: \"uvec4\",\n BOOL: \"bool\",\n BOOL_VEC2: \"bvec2\",\n BOOL_VEC3: \"bvec3\",\n BOOL_VEC4: \"bvec4\",\n FLOAT_MAT2: \"mat2\",\n FLOAT_MAT3: \"mat3\",\n FLOAT_MAT4: \"mat4\",\n SAMPLER_2D: \"sampler2D\",\n INT_SAMPLER_2D: \"sampler2D\",\n UNSIGNED_INT_SAMPLER_2D: \"sampler2D\",\n SAMPLER_CUBE: \"samplerCube\",\n INT_SAMPLER_CUBE: \"samplerCube\",\n UNSIGNED_INT_SAMPLER_CUBE: \"samplerCube\",\n SAMPLER_2D_ARRAY: \"sampler2DArray\",\n INT_SAMPLER_2D_ARRAY: \"sampler2DArray\",\n UNSIGNED_INT_SAMPLER_2D_ARRAY: \"sampler2DArray\"\n};\nfunction mapType(gl, type) {\n if (!GL_TABLE) {\n const typeNames = Object.keys(GL_TO_GLSL_TYPES);\n GL_TABLE = {};\n for (let i = 0; i < typeNames.length; ++i) {\n const tn = typeNames[i];\n GL_TABLE[gl[tn]] = GL_TO_GLSL_TYPES[tn];\n }\n }\n return GL_TABLE[type];\n}\nexport {\n mapType\n};\n//# sourceMappingURL=mapType.mjs.map\n","import { PRECISION } from \"@pixi/constants\";\nfunction setPrecision(src, requestedPrecision, maxSupportedPrecision) {\n if (src.substring(0, 9) !== \"precision\") {\n let precision = requestedPrecision;\n return requestedPrecision === PRECISION.HIGH && maxSupportedPrecision !== PRECISION.HIGH && (precision = PRECISION.MEDIUM), `precision ${precision} float;\n${src}`;\n } else if (maxSupportedPrecision !== PRECISION.HIGH && src.substring(0, 15) === \"precision highp\")\n return src.replace(\"precision highp\", \"precision mediump\");\n return src;\n}\nexport {\n setPrecision\n};\n//# sourceMappingURL=setPrecision.mjs.map\n","let unsafeEval;\nfunction unsafeEvalSupported() {\n if (typeof unsafeEval == \"boolean\")\n return unsafeEval;\n try {\n unsafeEval = new Function(\"param1\", \"param2\", \"param3\", \"return param1[param2] === param3;\")({ a: \"b\" }, \"a\", \"b\") === !0;\n } catch {\n unsafeEval = !1;\n }\n return unsafeEval;\n}\nexport {\n unsafeEvalSupported\n};\n//# sourceMappingURL=unsafeEvalSupported.mjs.map\n","import { PRECISION } from \"@pixi/constants\";\nimport { ProgramCache, isMobile } from \"@pixi/utils\";\nimport defaultFragment from \"./defaultProgram.frag.mjs\";\nimport defaultVertex from \"./defaultProgram.vert.mjs\";\nimport \"./utils/index.mjs\";\nimport { setPrecision } from \"./utils/setPrecision.mjs\";\nimport { getMaxFragmentPrecision } from \"./utils/getMaxFragmentPrecision.mjs\";\nlet UID = 0;\nconst nameCache = {}, _Program = class _Program2 {\n /**\n * @param vertexSrc - The source of the vertex shader.\n * @param fragmentSrc - The source of the fragment shader.\n * @param name - Name for shader\n * @param extra - Extra data for shader\n */\n constructor(vertexSrc, fragmentSrc, name = \"pixi-shader\", extra = {}) {\n this.extra = {}, this.id = UID++, this.vertexSrc = vertexSrc || _Program2.defaultVertexSrc, this.fragmentSrc = fragmentSrc || _Program2.defaultFragmentSrc, this.vertexSrc = this.vertexSrc.trim(), this.fragmentSrc = this.fragmentSrc.trim(), this.extra = extra, this.vertexSrc.substring(0, 8) !== \"#version\" && (name = name.replace(/\\s+/g, \"-\"), nameCache[name] ? (nameCache[name]++, name += `-${nameCache[name]}`) : nameCache[name] = 1, this.vertexSrc = `#define SHADER_NAME ${name}\n${this.vertexSrc}`, this.fragmentSrc = `#define SHADER_NAME ${name}\n${this.fragmentSrc}`, this.vertexSrc = setPrecision(\n this.vertexSrc,\n _Program2.defaultVertexPrecision,\n PRECISION.HIGH\n ), this.fragmentSrc = setPrecision(\n this.fragmentSrc,\n _Program2.defaultFragmentPrecision,\n getMaxFragmentPrecision()\n )), this.glPrograms = {}, this.syncUniforms = null;\n }\n /**\n * The default vertex shader source.\n * @readonly\n */\n static get defaultVertexSrc() {\n return defaultVertex;\n }\n /**\n * The default fragment shader source.\n * @readonly\n */\n static get defaultFragmentSrc() {\n return defaultFragment;\n }\n /**\n * A short hand function to create a program based of a vertex and fragment shader.\n *\n * This method will also check to see if there is a cached program.\n * @param vertexSrc - The source of the vertex shader.\n * @param fragmentSrc - The source of the fragment shader.\n * @param name - Name for shader\n * @returns A shiny new PixiJS shader program!\n */\n static from(vertexSrc, fragmentSrc, name) {\n const key = vertexSrc + fragmentSrc;\n let program = ProgramCache[key];\n return program || (ProgramCache[key] = program = new _Program2(vertexSrc, fragmentSrc, name)), program;\n }\n};\n_Program.defaultVertexPrecision = PRECISION.HIGH, /**\n* Default specify float precision in fragment shader.\n* iOS is best set at highp due to https://github.com/pixijs/pixijs/issues/3742\n* @static\n* @type {PIXI.PRECISION}\n* @default PIXI.PRECISION.MEDIUM\n*/\n_Program.defaultFragmentPrecision = isMobile.apple.device ? PRECISION.HIGH : PRECISION.MEDIUM;\nlet Program = _Program;\nexport {\n Program\n};\n//# sourceMappingURL=Program.mjs.map\n","import { BUFFER_TYPE } from \"@pixi/constants\";\nimport { Buffer } from \"../geometry/Buffer.mjs\";\nlet UID = 0;\nclass UniformGroup {\n /**\n * @param {object | Buffer} [uniforms] - Custom uniforms to use to augment the built-in ones. Or a pixi buffer.\n * @param isStatic - Uniforms wont be changed after creation.\n * @param isUbo - If true, will treat this uniform group as a uniform buffer object.\n */\n constructor(uniforms, isStatic, isUbo) {\n this.group = !0, this.syncUniforms = {}, this.dirtyId = 0, this.id = UID++, this.static = !!isStatic, this.ubo = !!isUbo, uniforms instanceof Buffer ? (this.buffer = uniforms, this.buffer.type = BUFFER_TYPE.UNIFORM_BUFFER, this.autoManage = !1, this.ubo = !0) : (this.uniforms = uniforms, this.ubo && (this.buffer = new Buffer(new Float32Array(1)), this.buffer.type = BUFFER_TYPE.UNIFORM_BUFFER, this.autoManage = !0));\n }\n update() {\n this.dirtyId++, !this.autoManage && this.buffer && this.buffer.update();\n }\n add(name, uniforms, _static) {\n if (!this.ubo)\n this.uniforms[name] = new UniformGroup(uniforms, _static);\n else\n throw new Error(\"[UniformGroup] uniform groups in ubo mode cannot be modified, or have uniform groups nested in them\");\n }\n static from(uniforms, _static, _ubo) {\n return new UniformGroup(uniforms, _static, _ubo);\n }\n /**\n * A short hand function for creating a static UBO UniformGroup.\n * @param uniforms - the ubo item\n * @param _static - should this be updated each time it is used? defaults to true here!\n */\n static uboFrom(uniforms, _static) {\n return new UniformGroup(uniforms, _static ?? !0, !0);\n }\n}\nexport {\n UniformGroup\n};\n//# sourceMappingURL=UniformGroup.mjs.map\n","import { Runner } from \"@pixi/runner\";\nimport { Program } from \"./Program.mjs\";\nimport { UniformGroup } from \"./UniformGroup.mjs\";\nclass Shader {\n /**\n * @param program - The program the shader will use.\n * @param uniforms - Custom uniforms to use to augment the built-in ones.\n */\n constructor(program, uniforms) {\n this.uniformBindCount = 0, this.program = program, uniforms ? uniforms instanceof UniformGroup ? this.uniformGroup = uniforms : this.uniformGroup = new UniformGroup(uniforms) : this.uniformGroup = new UniformGroup({}), this.disposeRunner = new Runner(\"disposeShader\");\n }\n // TODO move to shader system..\n checkUniformExists(name, group) {\n if (group.uniforms[name])\n return !0;\n for (const i in group.uniforms) {\n const uniform = group.uniforms[i];\n if (uniform.group === !0 && this.checkUniformExists(name, uniform))\n return !0;\n }\n return !1;\n }\n destroy() {\n this.uniformGroup = null, this.disposeRunner.emit(this), this.disposeRunner.destroy();\n }\n /**\n * Shader uniform values, shortcut for `uniformGroup.uniforms`.\n * @readonly\n */\n get uniforms() {\n return this.uniformGroup.uniforms;\n }\n /**\n * A short hand function to create a shader based of a vertex and fragment shader.\n * @param vertexSrc - The source of the vertex shader.\n * @param fragmentSrc - The source of the fragment shader.\n * @param uniforms - Custom uniforms to use to augment the built-in ones.\n * @returns A shiny new PixiJS shader!\n */\n static from(vertexSrc, fragmentSrc, uniforms) {\n const program = Program.from(vertexSrc, fragmentSrc);\n return new Shader(program, uniforms);\n }\n}\nexport {\n Shader\n};\n//# sourceMappingURL=Shader.mjs.map\n","import { Matrix } from \"@pixi/math\";\nimport { Program } from \"../shader/Program.mjs\";\nimport { Shader } from \"../shader/Shader.mjs\";\nimport { UniformGroup } from \"../shader/UniformGroup.mjs\";\nclass BatchShaderGenerator {\n /**\n * @param vertexSrc - Vertex shader\n * @param fragTemplate - Fragment shader template\n */\n constructor(vertexSrc, fragTemplate) {\n if (this.vertexSrc = vertexSrc, this.fragTemplate = fragTemplate, this.programCache = {}, this.defaultGroupCache = {}, !fragTemplate.includes(\"%count%\"))\n throw new Error('Fragment template must contain \"%count%\".');\n if (!fragTemplate.includes(\"%forloop%\"))\n throw new Error('Fragment template must contain \"%forloop%\".');\n }\n generateShader(maxTextures) {\n if (!this.programCache[maxTextures]) {\n const sampleValues = new Int32Array(maxTextures);\n for (let i = 0; i < maxTextures; i++)\n sampleValues[i] = i;\n this.defaultGroupCache[maxTextures] = UniformGroup.from({ uSamplers: sampleValues }, !0);\n let fragmentSrc = this.fragTemplate;\n fragmentSrc = fragmentSrc.replace(/%count%/gi, `${maxTextures}`), fragmentSrc = fragmentSrc.replace(/%forloop%/gi, this.generateSampleSrc(maxTextures)), this.programCache[maxTextures] = new Program(this.vertexSrc, fragmentSrc);\n }\n const uniforms = {\n tint: new Float32Array([1, 1, 1, 1]),\n translationMatrix: new Matrix(),\n default: this.defaultGroupCache[maxTextures]\n };\n return new Shader(this.programCache[maxTextures], uniforms);\n }\n generateSampleSrc(maxTextures) {\n let src = \"\";\n src += `\n`, src += `\n`;\n for (let i = 0; i < maxTextures; i++)\n i > 0 && (src += `\nelse `), i < maxTextures - 1 && (src += `if(vTextureId < ${i}.5)`), src += `\n{`, src += `\n\tcolor = texture2D(uSamplers[${i}], vTextureCoord);`, src += `\n}`;\n return src += `\n`, src += `\n`, src;\n }\n}\nexport {\n BatchShaderGenerator\n};\n//# sourceMappingURL=BatchShaderGenerator.mjs.map\n","class BatchTextureArray {\n constructor() {\n this.elements = [], this.ids = [], this.count = 0;\n }\n clear() {\n for (let i = 0; i < this.count; i++)\n this.elements[i] = null;\n this.count = 0;\n }\n}\nexport {\n BatchTextureArray\n};\n//# sourceMappingURL=BatchTextureArray.mjs.map\n","import { isMobile } from \"@pixi/settings\";\nfunction canUploadSameBuffer() {\n return !isMobile.apple.device;\n}\nexport {\n canUploadSameBuffer\n};\n//# sourceMappingURL=canUploadSameBuffer.mjs.map\n","import { settings, isMobile } from \"@pixi/settings\";\nfunction maxRecommendedTextures(max) {\n let allowMax = !0;\n const navigator = settings.ADAPTER.getNavigator();\n if (isMobile.tablet || isMobile.phone) {\n if (isMobile.apple.device) {\n const match = navigator.userAgent.match(/OS (\\d+)_(\\d+)?/);\n match && parseInt(match[1], 10) < 11 && (allowMax = !1);\n }\n if (isMobile.android.device) {\n const match = navigator.userAgent.match(/Android\\s([0-9.]*)/);\n match && parseInt(match[1], 10) < 7 && (allowMax = !1);\n }\n }\n return allowMax ? max : 4;\n}\nexport {\n maxRecommendedTextures\n};\n//# sourceMappingURL=maxRecommendedTextures.mjs.map\n","class ObjectRenderer {\n /**\n * @param renderer - The renderer this manager works for.\n */\n constructor(renderer) {\n this.renderer = renderer;\n }\n /** Stub method that should be used to empty the current batch by rendering objects now. */\n flush() {\n }\n /** Generic destruction method that frees all resources. This should be called by subclasses. */\n destroy() {\n this.renderer = null;\n }\n /**\n * Stub method that initializes any state required before\n * rendering starts. It is different from the `prerender`\n * signal, which occurs every frame, in that it is called\n * whenever an object requests _this_ renderer specifically.\n */\n start() {\n }\n /** Stops the renderer. It should free up any state and become dormant. */\n stop() {\n this.flush();\n }\n /**\n * Keeps the object to render. It doesn't have to be\n * rendered immediately.\n * @param {PIXI.DisplayObject} _object - The object to render.\n */\n render(_object) {\n }\n}\nexport {\n ObjectRenderer\n};\n//# sourceMappingURL=ObjectRenderer.mjs.map\n","var defaultFragment = `varying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\nuniform sampler2D uSamplers[%count%];\n\nvoid main(void){\n vec4 color;\n %forloop%\n gl_FragColor = color * vColor;\n}\n`;\nexport {\n defaultFragment as default\n};\n//# sourceMappingURL=texture.frag.mjs.map\n","var defaultVertex = `precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform vec4 tint;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = aTextureCoord;\n vTextureId = aTextureId;\n vColor = aColor * tint;\n}\n`;\nexport {\n defaultVertex as default\n};\n//# sourceMappingURL=texture.vert.mjs.map\n","import { Color } from \"@pixi/color\";\nimport { ENV } from \"@pixi/constants\";\nimport { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { settings } from \"@pixi/settings\";\nimport { deprecation, premultiplyBlendMode, nextPow2, log2 } from \"@pixi/utils\";\nimport { ViewableBuffer } from \"../geometry/ViewableBuffer.mjs\";\nimport { checkMaxIfStatementsInShader } from \"../shader/utils/checkMaxIfStatementsInShader.mjs\";\nimport { State } from \"../state/State.mjs\";\nimport { BaseTexture } from \"../textures/BaseTexture.mjs\";\nimport { BatchDrawCall } from \"./BatchDrawCall.mjs\";\nimport { BatchGeometry } from \"./BatchGeometry.mjs\";\nimport { BatchShaderGenerator } from \"./BatchShaderGenerator.mjs\";\nimport { BatchTextureArray } from \"./BatchTextureArray.mjs\";\nimport { canUploadSameBuffer } from \"./canUploadSameBuffer.mjs\";\nimport { maxRecommendedTextures } from \"./maxRecommendedTextures.mjs\";\nimport { ObjectRenderer } from \"./ObjectRenderer.mjs\";\nimport defaultFragment from \"./texture.frag.mjs\";\nimport defaultVertex from \"./texture.vert.mjs\";\nconst _BatchRenderer = class _BatchRenderer2 extends ObjectRenderer {\n /**\n * This will hook onto the renderer's `contextChange`\n * and `prerender` signals.\n * @param {PIXI.Renderer} renderer - The renderer this works for.\n */\n constructor(renderer) {\n super(renderer), this.setShaderGenerator(), this.geometryClass = BatchGeometry, this.vertexSize = 6, this.state = State.for2d(), this.size = _BatchRenderer2.defaultBatchSize * 4, this._vertexCount = 0, this._indexCount = 0, this._bufferedElements = [], this._bufferedTextures = [], this._bufferSize = 0, this._shader = null, this._packedGeometries = [], this._packedGeometryPoolSize = 2, this._flushId = 0, this._aBuffers = {}, this._iBuffers = {}, this.maxTextures = 1, this.renderer.on(\"prerender\", this.onPrerender, this), renderer.runners.contextChange.add(this), this._dcIndex = 0, this._aIndex = 0, this._iIndex = 0, this._attributeBuffer = null, this._indexBuffer = null, this._tempBoundTextures = [];\n }\n /**\n * The maximum textures that this device supports.\n * @static\n * @default 32\n */\n static get defaultMaxTextures() {\n return this._defaultMaxTextures = this._defaultMaxTextures ?? maxRecommendedTextures(32), this._defaultMaxTextures;\n }\n static set defaultMaxTextures(value) {\n this._defaultMaxTextures = value;\n }\n /**\n * Can we upload the same buffer in a single frame?\n * @static\n */\n static get canUploadSameBuffer() {\n return this._canUploadSameBuffer = this._canUploadSameBuffer ?? canUploadSameBuffer(), this._canUploadSameBuffer;\n }\n static set canUploadSameBuffer(value) {\n this._canUploadSameBuffer = value;\n }\n /**\n * @see PIXI.BatchRenderer#maxTextures\n * @deprecated since 7.1.0\n * @readonly\n */\n get MAX_TEXTURES() {\n return deprecation(\"7.1.0\", \"BatchRenderer#MAX_TEXTURES renamed to BatchRenderer#maxTextures\"), this.maxTextures;\n }\n /**\n * The default vertex shader source\n * @readonly\n */\n static get defaultVertexSrc() {\n return defaultVertex;\n }\n /**\n * The default fragment shader source\n * @readonly\n */\n static get defaultFragmentTemplate() {\n return defaultFragment;\n }\n /**\n * Set the shader generator.\n * @param {object} [options]\n * @param {string} [options.vertex=PIXI.BatchRenderer.defaultVertexSrc] - Vertex shader source\n * @param {string} [options.fragment=PIXI.BatchRenderer.defaultFragmentTemplate] - Fragment shader template\n */\n setShaderGenerator({\n vertex = _BatchRenderer2.defaultVertexSrc,\n fragment = _BatchRenderer2.defaultFragmentTemplate\n } = {}) {\n this.shaderGenerator = new BatchShaderGenerator(vertex, fragment);\n }\n /**\n * Handles the `contextChange` signal.\n *\n * It calculates `this.maxTextures` and allocating the packed-geometry object pool.\n */\n contextChange() {\n const gl = this.renderer.gl;\n settings.PREFER_ENV === ENV.WEBGL_LEGACY ? this.maxTextures = 1 : (this.maxTextures = Math.min(\n gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS),\n _BatchRenderer2.defaultMaxTextures\n ), this.maxTextures = checkMaxIfStatementsInShader(\n this.maxTextures,\n gl\n )), this._shader = this.shaderGenerator.generateShader(this.maxTextures);\n for (let i = 0; i < this._packedGeometryPoolSize; i++)\n this._packedGeometries[i] = new this.geometryClass();\n this.initFlushBuffers();\n }\n /** Makes sure that static and dynamic flush pooled objects have correct dimensions. */\n initFlushBuffers() {\n const {\n _drawCallPool,\n _textureArrayPool\n } = _BatchRenderer2, MAX_SPRITES = this.size / 4, MAX_TA = Math.floor(MAX_SPRITES / this.maxTextures) + 1;\n for (; _drawCallPool.length < MAX_SPRITES; )\n _drawCallPool.push(new BatchDrawCall());\n for (; _textureArrayPool.length < MAX_TA; )\n _textureArrayPool.push(new BatchTextureArray());\n for (let i = 0; i < this.maxTextures; i++)\n this._tempBoundTextures[i] = null;\n }\n /** Handles the `prerender` signal. It ensures that flushes start from the first geometry object again. */\n onPrerender() {\n this._flushId = 0;\n }\n /**\n * Buffers the \"batchable\" object. It need not be rendered immediately.\n * @param {PIXI.DisplayObject} element - the element to render when\n * using this renderer\n */\n render(element) {\n element._texture.valid && (this._vertexCount + element.vertexData.length / 2 > this.size && this.flush(), this._vertexCount += element.vertexData.length / 2, this._indexCount += element.indices.length, this._bufferedTextures[this._bufferSize] = element._texture.baseTexture, this._bufferedElements[this._bufferSize++] = element);\n }\n buildTexturesAndDrawCalls() {\n const {\n _bufferedTextures: textures,\n maxTextures\n } = this, textureArrays = _BatchRenderer2._textureArrayPool, batch = this.renderer.batch, boundTextures = this._tempBoundTextures, touch = this.renderer.textureGC.count;\n let TICK = ++BaseTexture._globalBatch, countTexArrays = 0, texArray = textureArrays[0], start = 0;\n batch.copyBoundTextures(boundTextures, maxTextures);\n for (let i = 0; i < this._bufferSize; ++i) {\n const tex = textures[i];\n textures[i] = null, tex._batchEnabled !== TICK && (texArray.count >= maxTextures && (batch.boundArray(texArray, boundTextures, TICK, maxTextures), this.buildDrawCalls(texArray, start, i), start = i, texArray = textureArrays[++countTexArrays], ++TICK), tex._batchEnabled = TICK, tex.touched = touch, texArray.elements[texArray.count++] = tex);\n }\n texArray.count > 0 && (batch.boundArray(texArray, boundTextures, TICK, maxTextures), this.buildDrawCalls(texArray, start, this._bufferSize), ++countTexArrays, ++TICK);\n for (let i = 0; i < boundTextures.length; i++)\n boundTextures[i] = null;\n BaseTexture._globalBatch = TICK;\n }\n /**\n * Populating drawcalls for rendering\n * @param texArray\n * @param start\n * @param finish\n */\n buildDrawCalls(texArray, start, finish) {\n const {\n _bufferedElements: elements,\n _attributeBuffer,\n _indexBuffer,\n vertexSize\n } = this, drawCalls = _BatchRenderer2._drawCallPool;\n let dcIndex = this._dcIndex, aIndex = this._aIndex, iIndex = this._iIndex, drawCall = drawCalls[dcIndex];\n drawCall.start = this._iIndex, drawCall.texArray = texArray;\n for (let i = start; i < finish; ++i) {\n const sprite = elements[i], tex = sprite._texture.baseTexture, spriteBlendMode = premultiplyBlendMode[tex.alphaMode ? 1 : 0][sprite.blendMode];\n elements[i] = null, start < i && drawCall.blend !== spriteBlendMode && (drawCall.size = iIndex - drawCall.start, start = i, drawCall = drawCalls[++dcIndex], drawCall.texArray = texArray, drawCall.start = iIndex), this.packInterleavedGeometry(sprite, _attributeBuffer, _indexBuffer, aIndex, iIndex), aIndex += sprite.vertexData.length / 2 * vertexSize, iIndex += sprite.indices.length, drawCall.blend = spriteBlendMode;\n }\n start < finish && (drawCall.size = iIndex - drawCall.start, ++dcIndex), this._dcIndex = dcIndex, this._aIndex = aIndex, this._iIndex = iIndex;\n }\n /**\n * Bind textures for current rendering\n * @param texArray\n */\n bindAndClearTexArray(texArray) {\n const textureSystem = this.renderer.texture;\n for (let j = 0; j < texArray.count; j++)\n textureSystem.bind(texArray.elements[j], texArray.ids[j]), texArray.elements[j] = null;\n texArray.count = 0;\n }\n updateGeometry() {\n const {\n _packedGeometries: packedGeometries,\n _attributeBuffer: attributeBuffer,\n _indexBuffer: indexBuffer\n } = this;\n _BatchRenderer2.canUploadSameBuffer ? (packedGeometries[this._flushId]._buffer.update(attributeBuffer.rawBinaryData), packedGeometries[this._flushId]._indexBuffer.update(indexBuffer), this.renderer.geometry.updateBuffers()) : (this._packedGeometryPoolSize <= this._flushId && (this._packedGeometryPoolSize++, packedGeometries[this._flushId] = new this.geometryClass()), packedGeometries[this._flushId]._buffer.update(attributeBuffer.rawBinaryData), packedGeometries[this._flushId]._indexBuffer.update(indexBuffer), this.renderer.geometry.bind(packedGeometries[this._flushId]), this.renderer.geometry.updateBuffers(), this._flushId++);\n }\n drawBatches() {\n const dcCount = this._dcIndex, { gl, state: stateSystem } = this.renderer, drawCalls = _BatchRenderer2._drawCallPool;\n let curTexArray = null;\n for (let i = 0; i < dcCount; i++) {\n const { texArray, type, size, start, blend } = drawCalls[i];\n curTexArray !== texArray && (curTexArray = texArray, this.bindAndClearTexArray(texArray)), this.state.blendMode = blend, stateSystem.set(this.state), gl.drawElements(type, size, gl.UNSIGNED_SHORT, start * 2);\n }\n }\n /** Renders the content _now_ and empties the current batch. */\n flush() {\n this._vertexCount !== 0 && (this._attributeBuffer = this.getAttributeBuffer(this._vertexCount), this._indexBuffer = this.getIndexBuffer(this._indexCount), this._aIndex = 0, this._iIndex = 0, this._dcIndex = 0, this.buildTexturesAndDrawCalls(), this.updateGeometry(), this.drawBatches(), this._bufferSize = 0, this._vertexCount = 0, this._indexCount = 0);\n }\n /** Starts a new sprite batch. */\n start() {\n this.renderer.state.set(this.state), this.renderer.texture.ensureSamplerType(this.maxTextures), this.renderer.shader.bind(this._shader), _BatchRenderer2.canUploadSameBuffer && this.renderer.geometry.bind(this._packedGeometries[this._flushId]);\n }\n /** Stops and flushes the current batch. */\n stop() {\n this.flush();\n }\n /** Destroys this `BatchRenderer`. It cannot be used again. */\n destroy() {\n for (let i = 0; i < this._packedGeometryPoolSize; i++)\n this._packedGeometries[i] && this._packedGeometries[i].destroy();\n this.renderer.off(\"prerender\", this.onPrerender, this), this._aBuffers = null, this._iBuffers = null, this._packedGeometries = null, this._attributeBuffer = null, this._indexBuffer = null, this._shader && (this._shader.destroy(), this._shader = null), super.destroy();\n }\n /**\n * Fetches an attribute buffer from `this._aBuffers` that can hold atleast `size` floats.\n * @param size - minimum capacity required\n * @returns - buffer than can hold atleast `size` floats\n */\n getAttributeBuffer(size) {\n const roundedP2 = nextPow2(Math.ceil(size / 8)), roundedSizeIndex = log2(roundedP2), roundedSize = roundedP2 * 8;\n this._aBuffers.length <= roundedSizeIndex && (this._iBuffers.length = roundedSizeIndex + 1);\n let buffer = this._aBuffers[roundedSize];\n return buffer || (this._aBuffers[roundedSize] = buffer = new ViewableBuffer(roundedSize * this.vertexSize * 4)), buffer;\n }\n /**\n * Fetches an index buffer from `this._iBuffers` that can\n * have at least `size` capacity.\n * @param size - minimum required capacity\n * @returns - buffer that can fit `size` indices.\n */\n getIndexBuffer(size) {\n const roundedP2 = nextPow2(Math.ceil(size / 12)), roundedSizeIndex = log2(roundedP2), roundedSize = roundedP2 * 12;\n this._iBuffers.length <= roundedSizeIndex && (this._iBuffers.length = roundedSizeIndex + 1);\n let buffer = this._iBuffers[roundedSizeIndex];\n return buffer || (this._iBuffers[roundedSizeIndex] = buffer = new Uint16Array(roundedSize)), buffer;\n }\n /**\n * Takes the four batching parameters of `element`, interleaves\n * and pushes them into the batching attribute/index buffers given.\n *\n * It uses these properties: `vertexData` `uvs`, `textureId` and\n * `indicies`. It also uses the \"tint\" of the base-texture, if\n * present.\n * @param {PIXI.DisplayObject} element - element being rendered\n * @param attributeBuffer - attribute buffer.\n * @param indexBuffer - index buffer\n * @param aIndex - number of floats already in the attribute buffer\n * @param iIndex - number of indices already in `indexBuffer`\n */\n packInterleavedGeometry(element, attributeBuffer, indexBuffer, aIndex, iIndex) {\n const {\n uint32View,\n float32View\n } = attributeBuffer, packedVertices = aIndex / this.vertexSize, uvs = element.uvs, indicies = element.indices, vertexData = element.vertexData, textureId = element._texture.baseTexture._batchLocation, alpha = Math.min(element.worldAlpha, 1), argb = Color.shared.setValue(element._tintRGB).toPremultiplied(alpha, element._texture.baseTexture.alphaMode > 0);\n for (let i = 0; i < vertexData.length; i += 2)\n float32View[aIndex++] = vertexData[i], float32View[aIndex++] = vertexData[i + 1], float32View[aIndex++] = uvs[i], float32View[aIndex++] = uvs[i + 1], uint32View[aIndex++] = argb, float32View[aIndex++] = textureId;\n for (let i = 0; i < indicies.length; i++)\n indexBuffer[iIndex++] = packedVertices + indicies[i];\n }\n};\n_BatchRenderer.defaultBatchSize = 4096, /** @ignore */\n_BatchRenderer.extension = {\n name: \"batch\",\n type: ExtensionType.RendererPlugin\n}, /**\n* Pool of `BatchDrawCall` objects that `flush` used\n* to create \"batches\" of the objects being rendered.\n*\n* These are never re-allocated again.\n* Shared between all batch renderers because it can be only one \"flush\" working at the moment.\n* @member {PIXI.BatchDrawCall[]}\n*/\n_BatchRenderer._drawCallPool = [], /**\n* Pool of `BatchDrawCall` objects that `flush` used\n* to create \"batches\" of the objects being rendered.\n*\n* These are never re-allocated again.\n* Shared between all batch renderers because it can be only one \"flush\" working at the moment.\n* @member {PIXI.BatchTextureArray[]}\n*/\n_BatchRenderer._textureArrayPool = [];\nlet BatchRenderer = _BatchRenderer;\nextensions.add(BatchRenderer);\nexport {\n BatchRenderer\n};\n//# sourceMappingURL=BatchRenderer.mjs.map\n","var defaultFragment = `varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n}\n`;\nexport {\n defaultFragment as default\n};\n//# sourceMappingURL=defaultFilter.frag.mjs.map\n","var defaultVertex = `attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n`;\nexport {\n defaultVertex as default\n};\n//# sourceMappingURL=defaultFilter.vert.mjs.map\n","import { MSAA_QUALITY } from \"@pixi/constants\";\nimport { Program } from \"../shader/Program.mjs\";\nimport { Shader } from \"../shader/Shader.mjs\";\nimport { State } from \"../state/State.mjs\";\nimport defaultFragment from \"./defaultFilter.frag.mjs\";\nimport defaultVertex from \"./defaultFilter.vert.mjs\";\nconst _Filter = class _Filter2 extends Shader {\n /**\n * @param vertexSrc - The source of the vertex shader.\n * @param fragmentSrc - The source of the fragment shader.\n * @param uniforms - Custom uniforms to use to augment the built-in ones.\n */\n constructor(vertexSrc, fragmentSrc, uniforms) {\n const program = Program.from(\n vertexSrc || _Filter2.defaultVertexSrc,\n fragmentSrc || _Filter2.defaultFragmentSrc\n );\n super(program, uniforms), this.padding = 0, this.resolution = _Filter2.defaultResolution, this.multisample = _Filter2.defaultMultisample, this.enabled = !0, this.autoFit = !0, this.state = new State();\n }\n /**\n * Applies the filter\n * @param {PIXI.FilterSystem} filterManager - The renderer to retrieve the filter from\n * @param {PIXI.RenderTexture} input - The input render target.\n * @param {PIXI.RenderTexture} output - The target to output to.\n * @param {PIXI.CLEAR_MODES} [clearMode] - Should the output be cleared before rendering to it.\n * @param {object} [_currentState] - It's current state of filter.\n * There are some useful properties in the currentState :\n * target, filters, sourceFrame, destinationFrame, renderTarget, resolution\n */\n apply(filterManager, input, output, clearMode, _currentState) {\n filterManager.applyFilter(this, input, output, clearMode);\n }\n /**\n * Sets the blend mode of the filter.\n * @default PIXI.BLEND_MODES.NORMAL\n */\n get blendMode() {\n return this.state.blendMode;\n }\n set blendMode(value) {\n this.state.blendMode = value;\n }\n /**\n * The resolution of the filter. Setting this to be lower will lower the quality but\n * increase the performance of the filter.\n * If set to `null` or `0`, the resolution of the current render target is used.\n * @default PIXI.Filter.defaultResolution\n */\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._resolution = value;\n }\n /**\n * The default vertex shader source\n * @readonly\n */\n static get defaultVertexSrc() {\n return defaultVertex;\n }\n /**\n * The default fragment shader source\n * @readonly\n */\n static get defaultFragmentSrc() {\n return defaultFragment;\n }\n};\n_Filter.defaultResolution = 1, /**\n* Default filter samples for any filter.\n* @static\n* @type {PIXI.MSAA_QUALITY|null}\n* @default PIXI.MSAA_QUALITY.NONE\n*/\n_Filter.defaultMultisample = MSAA_QUALITY.NONE;\nlet Filter = _Filter;\nexport {\n Filter\n};\n//# sourceMappingURL=Filter.mjs.map\n","import { Color } from \"@pixi/color\";\nimport { ExtensionType, extensions } from \"@pixi/extensions\";\nclass BackgroundSystem {\n constructor() {\n this.clearBeforeRender = !0, this._backgroundColor = new Color(0), this.alpha = 1;\n }\n /**\n * initiates the background system\n * @param {PIXI.IRendererOptions} options - the options for the background colors\n */\n init(options) {\n this.clearBeforeRender = options.clearBeforeRender;\n const { backgroundColor, background, backgroundAlpha } = options, color = background ?? backgroundColor;\n color !== void 0 && (this.color = color), this.alpha = backgroundAlpha;\n }\n /**\n * The background color to fill if not transparent.\n * @member {PIXI.ColorSource}\n */\n get color() {\n return this._backgroundColor.value;\n }\n set color(value) {\n this._backgroundColor.setValue(value);\n }\n /**\n * The background color alpha. Setting this to 0 will make the canvas transparent.\n * @member {number}\n */\n get alpha() {\n return this._backgroundColor.alpha;\n }\n set alpha(value) {\n this._backgroundColor.setAlpha(value);\n }\n /** The background color object. */\n get backgroundColor() {\n return this._backgroundColor;\n }\n destroy() {\n }\n}\nBackgroundSystem.defaultOptions = {\n /**\n * {@link PIXI.IRendererOptions.backgroundAlpha}\n * @default 1\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n backgroundAlpha: 1,\n /**\n * {@link PIXI.IRendererOptions.backgroundColor}\n * @default 0x000000\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n backgroundColor: 0,\n /**\n * {@link PIXI.IRendererOptions.clearBeforeRender}\n * @default true\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n clearBeforeRender: !0\n}, /** @ignore */\nBackgroundSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"background\"\n};\nextensions.add(BackgroundSystem);\nexport {\n BackgroundSystem\n};\n//# sourceMappingURL=BackgroundSystem.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { ObjectRenderer } from \"./ObjectRenderer.mjs\";\nclass BatchSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.emptyRenderer = new ObjectRenderer(renderer), this.currentRenderer = this.emptyRenderer;\n }\n /**\n * Changes the current renderer to the one given in parameter\n * @param objectRenderer - The object renderer to use.\n */\n setObjectRenderer(objectRenderer) {\n this.currentRenderer !== objectRenderer && (this.currentRenderer.stop(), this.currentRenderer = objectRenderer, this.currentRenderer.start());\n }\n /**\n * This should be called if you wish to do some custom rendering\n * It will basically render anything that may be batched up such as sprites\n */\n flush() {\n this.setObjectRenderer(this.emptyRenderer);\n }\n /** Reset the system to an empty renderer */\n reset() {\n this.setObjectRenderer(this.emptyRenderer);\n }\n /**\n * Handy function for batch renderers: copies bound textures in first maxTextures locations to array\n * sets actual _batchLocation for them\n * @param arr - arr copy destination\n * @param maxTextures - number of copied elements\n */\n copyBoundTextures(arr, maxTextures) {\n const { boundTextures } = this.renderer.texture;\n for (let i = maxTextures - 1; i >= 0; --i)\n arr[i] = boundTextures[i] || null, arr[i] && (arr[i]._batchLocation = i);\n }\n /**\n * Assigns batch locations to textures in array based on boundTextures state.\n * All textures in texArray should have `_batchEnabled = _batchId`,\n * and their count should be less than `maxTextures`.\n * @param texArray - textures to bound\n * @param boundTextures - current state of bound textures\n * @param batchId - marker for _batchEnabled param of textures in texArray\n * @param maxTextures - number of texture locations to manipulate\n */\n boundArray(texArray, boundTextures, batchId, maxTextures) {\n const { elements, ids, count } = texArray;\n let j = 0;\n for (let i = 0; i < count; i++) {\n const tex = elements[i], loc = tex._batchLocation;\n if (loc >= 0 && loc < maxTextures && boundTextures[loc] === tex) {\n ids[i] = loc;\n continue;\n }\n for (; j < maxTextures; ) {\n const bound = boundTextures[j];\n if (bound && bound._batchEnabled === batchId && bound._batchLocation === j) {\n j++;\n continue;\n }\n ids[i] = j, tex._batchLocation = j, boundTextures[j] = tex;\n break;\n }\n }\n }\n /**\n * @ignore\n */\n destroy() {\n this.renderer = null;\n }\n}\nBatchSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"batch\"\n};\nextensions.add(BatchSystem);\nexport {\n BatchSystem\n};\n//# sourceMappingURL=BatchSystem.mjs.map\n","import { ENV } from \"@pixi/constants\";\nimport { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { settings } from \"@pixi/settings\";\nlet CONTEXT_UID_COUNTER = 0;\nclass ContextSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this.renderer = renderer, this.webGLVersion = 1, this.extensions = {}, this.supports = {\n uint32Indices: !1\n }, this.handleContextLost = this.handleContextLost.bind(this), this.handleContextRestored = this.handleContextRestored.bind(this);\n }\n /**\n * `true` if the context is lost\n * @readonly\n */\n get isLost() {\n return !this.gl || this.gl.isContextLost();\n }\n /**\n * Handles the context change event.\n * @param {WebGLRenderingContext} gl - New WebGL context.\n */\n contextChange(gl) {\n this.gl = gl, this.renderer.gl = gl, this.renderer.CONTEXT_UID = CONTEXT_UID_COUNTER++;\n }\n init(options) {\n if (options.context)\n this.initFromContext(options.context);\n else {\n const alpha = this.renderer.background.alpha < 1, premultipliedAlpha = options.premultipliedAlpha;\n this.preserveDrawingBuffer = options.preserveDrawingBuffer, this.useContextAlpha = options.useContextAlpha, this.powerPreference = options.powerPreference, this.initFromOptions({\n alpha,\n premultipliedAlpha,\n antialias: options.antialias,\n stencil: !0,\n preserveDrawingBuffer: options.preserveDrawingBuffer,\n powerPreference: options.powerPreference\n });\n }\n }\n /**\n * Initializes the context.\n * @protected\n * @param {WebGLRenderingContext} gl - WebGL context\n */\n initFromContext(gl) {\n this.gl = gl, this.validateContext(gl), this.renderer.gl = gl, this.renderer.CONTEXT_UID = CONTEXT_UID_COUNTER++, this.renderer.runners.contextChange.emit(gl);\n const view = this.renderer.view;\n view.addEventListener !== void 0 && (view.addEventListener(\"webglcontextlost\", this.handleContextLost, !1), view.addEventListener(\"webglcontextrestored\", this.handleContextRestored, !1));\n }\n /**\n * Initialize from context options\n * @protected\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext\n * @param {object} options - context attributes\n */\n initFromOptions(options) {\n const gl = this.createContext(this.renderer.view, options);\n this.initFromContext(gl);\n }\n /**\n * Helper class to create a WebGL Context\n * @param canvas - the canvas element that we will get the context from\n * @param options - An options object that gets passed in to the canvas element containing the\n * context attributes\n * @see https://developer.mozilla.org/en/docs/Web/API/HTMLCanvasElement/getContext\n * @returns {WebGLRenderingContext} the WebGL context\n */\n createContext(canvas, options) {\n let gl;\n if (settings.PREFER_ENV >= ENV.WEBGL2 && (gl = canvas.getContext(\"webgl2\", options)), gl)\n this.webGLVersion = 2;\n else if (this.webGLVersion = 1, gl = canvas.getContext(\"webgl\", options) || canvas.getContext(\"experimental-webgl\", options), !gl)\n throw new Error(\"This browser does not support WebGL. Try using the canvas renderer\");\n return this.gl = gl, this.getExtensions(), this.gl;\n }\n /** Auto-populate the {@link PIXI.ContextSystem.extensions extensions}. */\n getExtensions() {\n const { gl } = this, common = {\n loseContext: gl.getExtension(\"WEBGL_lose_context\"),\n anisotropicFiltering: gl.getExtension(\"EXT_texture_filter_anisotropic\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n s3tc: gl.getExtension(\"WEBGL_compressed_texture_s3tc\"),\n s3tc_sRGB: gl.getExtension(\"WEBGL_compressed_texture_s3tc_srgb\"),\n // eslint-disable-line camelcase\n etc: gl.getExtension(\"WEBGL_compressed_texture_etc\"),\n etc1: gl.getExtension(\"WEBGL_compressed_texture_etc1\"),\n pvrtc: gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),\n atc: gl.getExtension(\"WEBGL_compressed_texture_atc\"),\n astc: gl.getExtension(\"WEBGL_compressed_texture_astc\"),\n bptc: gl.getExtension(\"EXT_texture_compression_bptc\")\n };\n this.webGLVersion === 1 ? Object.assign(this.extensions, common, {\n drawBuffers: gl.getExtension(\"WEBGL_draw_buffers\"),\n depthTexture: gl.getExtension(\"WEBGL_depth_texture\"),\n vertexArrayObject: gl.getExtension(\"OES_vertex_array_object\") || gl.getExtension(\"MOZ_OES_vertex_array_object\") || gl.getExtension(\"WEBKIT_OES_vertex_array_object\"),\n uint32ElementIndex: gl.getExtension(\"OES_element_index_uint\"),\n // Floats and half-floats\n floatTexture: gl.getExtension(\"OES_texture_float\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n textureHalfFloat: gl.getExtension(\"OES_texture_half_float\"),\n textureHalfFloatLinear: gl.getExtension(\"OES_texture_half_float_linear\")\n }) : this.webGLVersion === 2 && Object.assign(this.extensions, common, {\n // Floats and half-floats\n colorBufferFloat: gl.getExtension(\"EXT_color_buffer_float\")\n });\n }\n /**\n * Handles a lost webgl context\n * @param {WebGLContextEvent} event - The context lost event.\n */\n handleContextLost(event) {\n event.preventDefault(), setTimeout(() => {\n this.gl.isContextLost() && this.extensions.loseContext && this.extensions.loseContext.restoreContext();\n }, 0);\n }\n /** Handles a restored webgl context. */\n handleContextRestored() {\n this.renderer.runners.contextChange.emit(this.gl);\n }\n destroy() {\n const view = this.renderer.view;\n this.renderer = null, view.removeEventListener !== void 0 && (view.removeEventListener(\"webglcontextlost\", this.handleContextLost), view.removeEventListener(\"webglcontextrestored\", this.handleContextRestored)), this.gl.useProgram(null), this.extensions.loseContext && this.extensions.loseContext.loseContext();\n }\n /** Handle the post-render runner event. */\n postrender() {\n this.renderer.objectRenderer.renderingToScreen && this.gl.flush();\n }\n /**\n * Validate context.\n * @param {WebGLRenderingContext} gl - Render context.\n */\n validateContext(gl) {\n const attributes = gl.getContextAttributes(), isWebGl2 = \"WebGL2RenderingContext\" in globalThis && gl instanceof globalThis.WebGL2RenderingContext;\n isWebGl2 && (this.webGLVersion = 2), attributes && !attributes.stencil && console.warn(\"Provided WebGL context does not have a stencil buffer, masks may not render correctly\");\n const hasuint32 = isWebGl2 || !!gl.getExtension(\"OES_element_index_uint\");\n this.supports.uint32Indices = hasuint32, hasuint32 || console.warn(\"Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly\");\n }\n}\nContextSystem.defaultOptions = {\n /**\n * {@link PIXI.IRendererOptions.context}\n * @default null\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n context: null,\n /**\n * {@link PIXI.IRendererOptions.antialias}\n * @default false\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n antialias: !1,\n /**\n * {@link PIXI.IRendererOptions.premultipliedAlpha}\n * @default true\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n premultipliedAlpha: !0,\n /**\n * {@link PIXI.IRendererOptions.preserveDrawingBuffer}\n * @default false\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n preserveDrawingBuffer: !1,\n /**\n * {@link PIXI.IRendererOptions.powerPreference}\n * @default default\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n powerPreference: \"default\"\n}, /** @ignore */\nContextSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"context\"\n};\nextensions.add(ContextSystem);\nexport {\n ContextSystem\n};\n//# sourceMappingURL=ContextSystem.mjs.map\n","import { MSAA_QUALITY, SCALE_MODES, MIPMAP_MODES, FORMATS, TYPES } from \"@pixi/constants\";\nimport { Runner } from \"@pixi/runner\";\nimport { BaseTexture } from \"../textures/BaseTexture.mjs\";\nclass Framebuffer {\n /**\n * @param width - Width of the frame buffer\n * @param height - Height of the frame buffer\n */\n constructor(width, height) {\n if (this.width = Math.round(width), this.height = Math.round(height), !this.width || !this.height)\n throw new Error(\"Framebuffer width or height is zero\");\n this.stencil = !1, this.depth = !1, this.dirtyId = 0, this.dirtyFormat = 0, this.dirtySize = 0, this.depthTexture = null, this.colorTextures = [], this.glFramebuffers = {}, this.disposeRunner = new Runner(\"disposeFramebuffer\"), this.multisample = MSAA_QUALITY.NONE;\n }\n /**\n * Reference to the colorTexture.\n * @readonly\n */\n get colorTexture() {\n return this.colorTextures[0];\n }\n /**\n * Add texture to the colorTexture array.\n * @param index - Index of the array to add the texture to\n * @param texture - Texture to add to the array\n */\n addColorTexture(index = 0, texture) {\n return this.colorTextures[index] = texture || new BaseTexture(null, {\n scaleMode: SCALE_MODES.NEAREST,\n resolution: 1,\n mipmap: MIPMAP_MODES.OFF,\n width: this.width,\n height: this.height\n }), this.dirtyId++, this.dirtyFormat++, this;\n }\n /**\n * Add a depth texture to the frame buffer.\n * @param texture - Texture to add.\n */\n addDepthTexture(texture) {\n return this.depthTexture = texture || new BaseTexture(null, {\n scaleMode: SCALE_MODES.NEAREST,\n resolution: 1,\n width: this.width,\n height: this.height,\n mipmap: MIPMAP_MODES.OFF,\n format: FORMATS.DEPTH_COMPONENT,\n type: TYPES.UNSIGNED_SHORT\n }), this.dirtyId++, this.dirtyFormat++, this;\n }\n /** Enable depth on the frame buffer. */\n enableDepth() {\n return this.depth = !0, this.dirtyId++, this.dirtyFormat++, this;\n }\n /** Enable stencil on the frame buffer. */\n enableStencil() {\n return this.stencil = !0, this.dirtyId++, this.dirtyFormat++, this;\n }\n /**\n * Resize the frame buffer\n * @param width - Width of the frame buffer to resize to\n * @param height - Height of the frame buffer to resize to\n */\n resize(width, height) {\n if (width = Math.round(width), height = Math.round(height), !width || !height)\n throw new Error(\"Framebuffer width and height must not be zero\");\n if (!(width === this.width && height === this.height)) {\n this.width = width, this.height = height, this.dirtyId++, this.dirtySize++;\n for (let i = 0; i < this.colorTextures.length; i++) {\n const texture = this.colorTextures[i], resolution = texture.resolution;\n texture.setSize(width / resolution, height / resolution);\n }\n if (this.depthTexture) {\n const resolution = this.depthTexture.resolution;\n this.depthTexture.setSize(width / resolution, height / resolution);\n }\n }\n }\n /** Disposes WebGL resources that are connected to this geometry. */\n dispose() {\n this.disposeRunner.emit(this, !1);\n }\n /** Destroys and removes the depth texture added to this framebuffer. */\n destroyDepthTexture() {\n this.depthTexture && (this.depthTexture.destroy(), this.depthTexture = null, ++this.dirtyId, ++this.dirtyFormat);\n }\n}\nexport {\n Framebuffer\n};\n//# sourceMappingURL=Framebuffer.mjs.map\n","import { Color } from \"@pixi/color\";\nimport { MSAA_QUALITY, MIPMAP_MODES } from \"@pixi/constants\";\nimport { Framebuffer } from \"../framebuffer/Framebuffer.mjs\";\nimport { BaseTexture } from \"../textures/BaseTexture.mjs\";\nclass BaseRenderTexture extends BaseTexture {\n /**\n * @param options\n * @param {number} [options.width=100] - The width of the base render texture.\n * @param {number} [options.height=100] - The height of the base render texture.\n * @param {PIXI.SCALE_MODES} [options.scaleMode=PIXI.BaseTexture.defaultOptions.scaleMode] - See {@link PIXI.SCALE_MODES}\n * for possible values.\n * @param {number} [options.resolution=PIXI.settings.RESOLUTION] - The resolution / device pixel ratio\n * of the texture being generated.\n * @param {PIXI.MSAA_QUALITY} [options.multisample=PIXI.MSAA_QUALITY.NONE] - The number of samples of the frame buffer.\n */\n constructor(options = {}) {\n if (typeof options == \"number\") {\n const width = arguments[0], height = arguments[1], scaleMode = arguments[2], resolution = arguments[3];\n options = { width, height, scaleMode, resolution };\n }\n options.width = options.width ?? 100, options.height = options.height ?? 100, options.multisample ?? (options.multisample = MSAA_QUALITY.NONE), super(null, options), this.mipmap = MIPMAP_MODES.OFF, this.valid = !0, this._clear = new Color([0, 0, 0, 0]), this.framebuffer = new Framebuffer(this.realWidth, this.realHeight).addColorTexture(0, this), this.framebuffer.multisample = options.multisample, this.maskStack = [], this.filterStack = [{}];\n }\n /** Color when clearning the texture. */\n set clearColor(value) {\n this._clear.setValue(value);\n }\n get clearColor() {\n return this._clear.value;\n }\n /**\n * Color object when clearning the texture.\n * @readonly\n * @since 7.2.0\n */\n get clear() {\n return this._clear;\n }\n /**\n * Shortcut to `this.framebuffer.multisample`.\n * @default PIXI.MSAA_QUALITY.NONE\n */\n get multisample() {\n return this.framebuffer.multisample;\n }\n set multisample(value) {\n this.framebuffer.multisample = value;\n }\n /**\n * Resizes the BaseRenderTexture.\n * @param desiredWidth - The desired width to resize to.\n * @param desiredHeight - The desired height to resize to.\n */\n resize(desiredWidth, desiredHeight) {\n this.framebuffer.resize(desiredWidth * this.resolution, desiredHeight * this.resolution), this.setRealSize(this.framebuffer.width, this.framebuffer.height);\n }\n /**\n * Frees the texture and framebuffer from WebGL memory without destroying this texture object.\n * This means you can still use the texture later which will upload it to GPU\n * memory again.\n * @fires PIXI.BaseTexture#dispose\n */\n dispose() {\n this.framebuffer.dispose(), super.dispose();\n }\n /** Destroys this texture. */\n destroy() {\n super.destroy(), this.framebuffer.destroyDepthTexture(), this.framebuffer = null;\n }\n}\nexport {\n BaseRenderTexture\n};\n//# sourceMappingURL=BaseRenderTexture.mjs.map\n","import { ALPHA_MODES } from \"@pixi/constants\";\nimport { determineCrossOrigin } from \"@pixi/utils\";\nimport { Resource } from \"./Resource.mjs\";\nclass BaseImageResource extends Resource {\n /**\n * @param {PIXI.ImageSourcee} source\n */\n constructor(source) {\n const sourceAny = source, width = sourceAny.naturalWidth || sourceAny.videoWidth || sourceAny.displayWidth || sourceAny.width, height = sourceAny.naturalHeight || sourceAny.videoHeight || sourceAny.displayHeight || sourceAny.height;\n super(width, height), this.source = source, this.noSubImage = !1;\n }\n /**\n * Set cross origin based detecting the url and the crossorigin\n * @param element - Element to apply crossOrigin\n * @param url - URL to check\n * @param crossorigin - Cross origin value to use\n */\n static crossOrigin(element, url, crossorigin) {\n crossorigin === void 0 && !url.startsWith(\"data:\") ? element.crossOrigin = determineCrossOrigin(url) : crossorigin !== !1 && (element.crossOrigin = typeof crossorigin == \"string\" ? crossorigin : \"anonymous\");\n }\n /**\n * Upload the texture to the GPU.\n * @param renderer - Upload to the renderer\n * @param baseTexture - Reference to parent texture\n * @param glTexture\n * @param {PIXI.ImageSourcee} [source] - (optional)\n * @returns - true is success\n */\n upload(renderer, baseTexture, glTexture, source) {\n const gl = renderer.gl, width = baseTexture.realWidth, height = baseTexture.realHeight;\n if (source = source || this.source, typeof HTMLImageElement < \"u\" && source instanceof HTMLImageElement) {\n if (!source.complete || source.naturalWidth === 0)\n return !1;\n } else if (typeof HTMLVideoElement < \"u\" && source instanceof HTMLVideoElement && source.readyState <= 1)\n return !1;\n return gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK), !this.noSubImage && baseTexture.target === gl.TEXTURE_2D && glTexture.width === width && glTexture.height === height ? gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, baseTexture.format, glTexture.type, source) : (glTexture.width = width, glTexture.height = height, gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, baseTexture.format, glTexture.type, source)), !0;\n }\n /**\n * Checks if source width/height was changed, resize can cause extra baseTexture update.\n * Triggers one update in any case.\n */\n update() {\n if (this.destroyed)\n return;\n const source = this.source, width = source.naturalWidth || source.videoWidth || source.width, height = source.naturalHeight || source.videoHeight || source.height;\n this.resize(width, height), super.update();\n }\n /** Destroy this {@link PIXI.BaseImageResource} */\n dispose() {\n this.source = null;\n }\n}\nexport {\n BaseImageResource\n};\n//# sourceMappingURL=BaseImageResource.mjs.map\n","import { ALPHA_MODES } from \"@pixi/constants\";\nimport { settings } from \"@pixi/settings\";\nimport { BaseImageResource } from \"./BaseImageResource.mjs\";\nclass ImageResource extends BaseImageResource {\n /**\n * @param source - image source or URL\n * @param options\n * @param {boolean} [options.autoLoad=true] - start loading process\n * @param {boolean} [options.createBitmap=PIXI.settings.CREATE_IMAGE_BITMAP] - whether its required to create\n * a bitmap before upload\n * @param {boolean} [options.crossorigin=true] - Load image using cross origin\n * @param {PIXI.ALPHA_MODES} [options.alphaMode=PIXI.ALPHA_MODES.UNPACK] - Premultiply image alpha in bitmap\n */\n constructor(source, options) {\n if (options = options || {}, typeof source == \"string\") {\n const imageElement = new Image();\n BaseImageResource.crossOrigin(imageElement, source, options.crossorigin), imageElement.src = source, source = imageElement;\n }\n super(source), !source.complete && this._width && this._height && (this._width = 0, this._height = 0), this.url = source.src, this._process = null, this.preserveBitmap = !1, this.createBitmap = (options.createBitmap ?? settings.CREATE_IMAGE_BITMAP) && !!globalThis.createImageBitmap, this.alphaMode = typeof options.alphaMode == \"number\" ? options.alphaMode : null, this.bitmap = null, this._load = null, options.autoLoad !== !1 && this.load();\n }\n /**\n * Returns a promise when image will be loaded and processed.\n * @param createBitmap - whether process image into bitmap\n */\n load(createBitmap) {\n return this._load ? this._load : (createBitmap !== void 0 && (this.createBitmap = createBitmap), this._load = new Promise((resolve, reject) => {\n const source = this.source;\n this.url = source.src;\n const completed = () => {\n this.destroyed || (source.onload = null, source.onerror = null, this.update(), this._load = null, this.createBitmap ? resolve(this.process()) : resolve(this));\n };\n source.complete && source.src ? completed() : (source.onload = completed, source.onerror = (event) => {\n reject(event), this.onError.emit(event);\n });\n }), this._load);\n }\n /**\n * Called when we need to convert image into BitmapImage.\n * Can be called multiple times, real promise is cached inside.\n * @returns - Cached promise to fill that bitmap\n */\n process() {\n const source = this.source;\n if (this._process !== null)\n return this._process;\n if (this.bitmap !== null || !globalThis.createImageBitmap)\n return Promise.resolve(this);\n const createImageBitmap = globalThis.createImageBitmap, cors = !source.crossOrigin || source.crossOrigin === \"anonymous\";\n return this._process = fetch(\n source.src,\n {\n mode: cors ? \"cors\" : \"no-cors\"\n }\n ).then((r) => r.blob()).then((blob) => createImageBitmap(\n blob,\n 0,\n 0,\n source.width,\n source.height,\n {\n premultiplyAlpha: this.alphaMode === null || this.alphaMode === ALPHA_MODES.UNPACK ? \"premultiply\" : \"none\"\n }\n )).then((bitmap) => this.destroyed ? Promise.reject() : (this.bitmap = bitmap, this.update(), this._process = null, Promise.resolve(this))), this._process;\n }\n /**\n * Upload the image resource to GPU.\n * @param renderer - Renderer to upload to\n * @param baseTexture - BaseTexture for this resource\n * @param glTexture - GLTexture to use\n * @returns {boolean} true is success\n */\n upload(renderer, baseTexture, glTexture) {\n if (typeof this.alphaMode == \"number\" && (baseTexture.alphaMode = this.alphaMode), !this.createBitmap)\n return super.upload(renderer, baseTexture, glTexture);\n if (!this.bitmap && (this.process(), !this.bitmap))\n return !1;\n if (super.upload(renderer, baseTexture, glTexture, this.bitmap), !this.preserveBitmap) {\n let flag = !0;\n const glTextures = baseTexture._glTextures;\n for (const key in glTextures) {\n const otherTex = glTextures[key];\n if (otherTex !== glTexture && otherTex.dirtyId !== baseTexture.dirtyId) {\n flag = !1;\n break;\n }\n }\n flag && (this.bitmap.close && this.bitmap.close(), this.bitmap = null);\n }\n return !0;\n }\n /** Destroys this resource. */\n dispose() {\n this.source.onload = null, this.source.onerror = null, super.dispose(), this.bitmap && (this.bitmap.close(), this.bitmap = null), this._process = null, this._load = null;\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @returns {boolean} `true` if current environment support HTMLImageElement, and source is string or HTMLImageElement\n */\n static test(source) {\n return typeof HTMLImageElement < \"u\" && (typeof source == \"string\" || source instanceof HTMLImageElement);\n }\n}\nexport {\n ImageResource\n};\n//# sourceMappingURL=ImageResource.mjs.map\n","import { groupD8 } from \"@pixi/math\";\nclass TextureUvs {\n constructor() {\n this.x0 = 0, this.y0 = 0, this.x1 = 1, this.y1 = 0, this.x2 = 1, this.y2 = 1, this.x3 = 0, this.y3 = 1, this.uvsFloat32 = new Float32Array(8);\n }\n /**\n * Sets the texture Uvs based on the given frame information.\n * @protected\n * @param frame - The frame of the texture\n * @param baseFrame - The base frame of the texture\n * @param rotate - Rotation of frame, see {@link PIXI.groupD8}\n */\n set(frame, baseFrame, rotate) {\n const tw = baseFrame.width, th = baseFrame.height;\n if (rotate) {\n const w2 = frame.width / 2 / tw, h2 = frame.height / 2 / th, cX = frame.x / tw + w2, cY = frame.y / th + h2;\n rotate = groupD8.add(rotate, groupD8.NW), this.x0 = cX + w2 * groupD8.uX(rotate), this.y0 = cY + h2 * groupD8.uY(rotate), rotate = groupD8.add(rotate, 2), this.x1 = cX + w2 * groupD8.uX(rotate), this.y1 = cY + h2 * groupD8.uY(rotate), rotate = groupD8.add(rotate, 2), this.x2 = cX + w2 * groupD8.uX(rotate), this.y2 = cY + h2 * groupD8.uY(rotate), rotate = groupD8.add(rotate, 2), this.x3 = cX + w2 * groupD8.uX(rotate), this.y3 = cY + h2 * groupD8.uY(rotate);\n } else\n this.x0 = frame.x / tw, this.y0 = frame.y / th, this.x1 = (frame.x + frame.width) / tw, this.y1 = frame.y / th, this.x2 = (frame.x + frame.width) / tw, this.y2 = (frame.y + frame.height) / th, this.x3 = frame.x / tw, this.y3 = (frame.y + frame.height) / th;\n this.uvsFloat32[0] = this.x0, this.uvsFloat32[1] = this.y0, this.uvsFloat32[2] = this.x1, this.uvsFloat32[3] = this.y1, this.uvsFloat32[4] = this.x2, this.uvsFloat32[5] = this.y2, this.uvsFloat32[6] = this.x3, this.uvsFloat32[7] = this.y3;\n }\n}\nTextureUvs.prototype.toString = function() {\n return `[@pixi/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`;\n};\nexport {\n TextureUvs\n};\n//# sourceMappingURL=TextureUvs.mjs.map\n","import { Rectangle, Point } from \"@pixi/math\";\nimport { settings } from \"@pixi/settings\";\nimport { EventEmitter, TextureCache, uid, getResolutionOfUrl } from \"@pixi/utils\";\nimport { BaseTexture } from \"./BaseTexture.mjs\";\nimport { ImageResource } from \"./resources/ImageResource.mjs\";\nimport { TextureUvs } from \"./TextureUvs.mjs\";\nconst DEFAULT_UVS = new TextureUvs();\nfunction removeAllHandlers(tex) {\n tex.destroy = function() {\n }, tex.on = function() {\n }, tex.once = function() {\n }, tex.emit = function() {\n };\n}\nclass Texture extends EventEmitter {\n /**\n * @param baseTexture - The base texture source to create the texture from\n * @param frame - The rectangle frame of the texture to show\n * @param orig - The area of original texture\n * @param trim - Trimmed rectangle of original texture\n * @param rotate - indicates how the texture was rotated by texture packer. See {@link PIXI.groupD8}\n * @param anchor - Default anchor point used for sprite placement / rotation\n * @param borders - Default borders used for 9-slice scaling. See {@link PIXI.NineSlicePlane}\n */\n constructor(baseTexture, frame, orig, trim, rotate, anchor, borders) {\n if (super(), this.noFrame = !1, frame || (this.noFrame = !0, frame = new Rectangle(0, 0, 1, 1)), baseTexture instanceof Texture && (baseTexture = baseTexture.baseTexture), this.baseTexture = baseTexture, this._frame = frame, this.trim = trim, this.valid = !1, this.destroyed = !1, this._uvs = DEFAULT_UVS, this.uvMatrix = null, this.orig = orig || frame, this._rotate = Number(rotate || 0), rotate === !0)\n this._rotate = 2;\n else if (this._rotate % 2 !== 0)\n throw new Error(\"attempt to use diamond-shaped UVs. If you are sure, set rotation manually\");\n this.defaultAnchor = anchor ? new Point(anchor.x, anchor.y) : new Point(0, 0), this.defaultBorders = borders, this._updateID = 0, this.textureCacheIds = [], baseTexture.valid ? this.noFrame ? baseTexture.valid && this.onBaseTextureUpdated(baseTexture) : this.frame = frame : baseTexture.once(\"loaded\", this.onBaseTextureUpdated, this), this.noFrame && baseTexture.on(\"update\", this.onBaseTextureUpdated, this);\n }\n /**\n * Updates this texture on the gpu.\n *\n * Calls the TextureResource update.\n *\n * If you adjusted `frame` manually, please call `updateUvs()` instead.\n */\n update() {\n this.baseTexture.resource && this.baseTexture.resource.update();\n }\n /**\n * Called when the base texture is updated\n * @protected\n * @param baseTexture - The base texture.\n */\n onBaseTextureUpdated(baseTexture) {\n if (this.noFrame) {\n if (!this.baseTexture.valid)\n return;\n this._frame.width = baseTexture.width, this._frame.height = baseTexture.height, this.valid = !0, this.updateUvs();\n } else\n this.frame = this._frame;\n this.emit(\"update\", this);\n }\n /**\n * Destroys this texture\n * @param [destroyBase=false] - Whether to destroy the base texture as well\n * @fires PIXI.Texture#destroyed\n */\n destroy(destroyBase) {\n if (this.baseTexture) {\n if (destroyBase) {\n const { resource } = this.baseTexture;\n resource?.url && TextureCache[resource.url] && Texture.removeFromCache(resource.url), this.baseTexture.destroy();\n }\n this.baseTexture.off(\"loaded\", this.onBaseTextureUpdated, this), this.baseTexture.off(\"update\", this.onBaseTextureUpdated, this), this.baseTexture = null;\n }\n this._frame = null, this._uvs = null, this.trim = null, this.orig = null, this.valid = !1, Texture.removeFromCache(this), this.textureCacheIds = null, this.destroyed = !0, this.emit(\"destroyed\", this), this.removeAllListeners();\n }\n /**\n * Creates a new texture object that acts the same as this one.\n * @returns - The new texture\n */\n clone() {\n const clonedFrame = this._frame.clone(), clonedOrig = this._frame === this.orig ? clonedFrame : this.orig.clone(), clonedTexture = new Texture(\n this.baseTexture,\n !this.noFrame && clonedFrame,\n clonedOrig,\n this.trim?.clone(),\n this.rotate,\n this.defaultAnchor,\n this.defaultBorders\n );\n return this.noFrame && (clonedTexture._frame = clonedFrame), clonedTexture;\n }\n /**\n * Updates the internal WebGL UV cache. Use it after you change `frame` or `trim` of the texture.\n * Call it after changing the frame\n */\n updateUvs() {\n this._uvs === DEFAULT_UVS && (this._uvs = new TextureUvs()), this._uvs.set(this._frame, this.baseTexture, this.rotate), this._updateID++;\n }\n /**\n * Helper function that creates a new Texture based on the source you provide.\n * The source can be - frame id, image url, video url, canvas element, video element, base texture\n * @param {string|PIXI.BaseTexture|HTMLImageElement|HTMLVideoElement|ImageBitmap|PIXI.ICanvas} source -\n * Source or array of sources to create texture from\n * @param options - See {@link PIXI.BaseTexture}'s constructor for options.\n * @param {string} [options.pixiIdPrefix=pixiid] - If a source has no id, this is the prefix of the generated id\n * @param {boolean} [strict] - Enforce strict-mode, see {@link PIXI.settings.STRICT_TEXTURE_CACHE}.\n * @returns {PIXI.Texture} The newly created texture\n */\n static from(source, options = {}, strict = settings.STRICT_TEXTURE_CACHE) {\n const isFrame = typeof source == \"string\";\n let cacheId = null;\n if (isFrame)\n cacheId = source;\n else if (source instanceof BaseTexture) {\n if (!source.cacheId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source.cacheId = `${prefix}-${uid()}`, BaseTexture.addToCache(source, source.cacheId);\n }\n cacheId = source.cacheId;\n } else {\n if (!source._pixiId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source._pixiId = `${prefix}_${uid()}`;\n }\n cacheId = source._pixiId;\n }\n let texture = TextureCache[cacheId];\n if (isFrame && strict && !texture)\n throw new Error(`The cacheId \"${cacheId}\" does not exist in TextureCache.`);\n return !texture && !(source instanceof BaseTexture) ? (options.resolution || (options.resolution = getResolutionOfUrl(source)), texture = new Texture(new BaseTexture(source, options)), texture.baseTexture.cacheId = cacheId, BaseTexture.addToCache(texture.baseTexture, cacheId), Texture.addToCache(texture, cacheId)) : !texture && source instanceof BaseTexture && (texture = new Texture(source), Texture.addToCache(texture, cacheId)), texture;\n }\n /**\n * Useful for loading textures via URLs. Use instead of `Texture.from` because\n * it does a better job of handling failed URLs more effectively. This also ignores\n * `PIXI.settings.STRICT_TEXTURE_CACHE`. Works for Videos, SVGs, Images.\n * @param url - The remote URL or array of URLs to load.\n * @param options - Optional options to include\n * @returns - A Promise that resolves to a Texture.\n */\n static fromURL(url, options) {\n const resourceOptions = Object.assign({ autoLoad: !1 }, options?.resourceOptions), texture = Texture.from(url, Object.assign({ resourceOptions }, options), !1), resource = texture.baseTexture.resource;\n return texture.baseTexture.valid ? Promise.resolve(texture) : resource.load().then(() => Promise.resolve(texture));\n }\n /**\n * Create a new Texture with a BufferResource from a typed array.\n * @param buffer - The optional array to use. If no data is provided, a new Float32Array is created.\n * @param width - Width of the resource\n * @param height - Height of the resource\n * @param options - See {@link PIXI.BaseTexture}'s constructor for options.\n * Default properties are different from the constructor's defaults.\n * @param {PIXI.FORMATS} [options.format] - The format is not given, the type is inferred from the\n * type of the buffer: `RGBA` if Float32Array, Int8Array, Uint8Array, or Uint8ClampedArray,\n * otherwise `RGBA_INTEGER`.\n * @param {PIXI.TYPES} [options.type] - The type is not given, the type is inferred from the\n * type of the buffer. Maps Float32Array to `FLOAT`, Int32Array to `INT`, Uint32Array to\n * `UNSIGNED_INT`, Int16Array to `SHORT`, Uint16Array to `UNSIGNED_SHORT`, Int8Array to `BYTE`,\n * Uint8Array/Uint8ClampedArray to `UNSIGNED_BYTE`.\n * @param {PIXI.ALPHA_MODES} [options.alphaMode=PIXI.ALPHA_MODES.NPM]\n * @param {PIXI.SCALE_MODES} [options.scaleMode=PIXI.SCALE_MODES.NEAREST]\n * @returns - The resulting new BaseTexture\n */\n static fromBuffer(buffer, width, height, options) {\n return new Texture(BaseTexture.fromBuffer(buffer, width, height, options));\n }\n /**\n * Create a texture from a source and add to the cache.\n * @param {HTMLImageElement|HTMLVideoElement|ImageBitmap|PIXI.ICanvas|string} source - The input source.\n * @param imageUrl - File name of texture, for cache and resolving resolution.\n * @param name - Human readable name for the texture cache. If no name is\n * specified, only `imageUrl` will be used as the cache ID.\n * @param options\n * @returns - Output texture\n */\n static fromLoader(source, imageUrl, name, options) {\n const baseTexture = new BaseTexture(source, Object.assign({\n scaleMode: BaseTexture.defaultOptions.scaleMode,\n resolution: getResolutionOfUrl(imageUrl)\n }, options)), { resource } = baseTexture;\n resource instanceof ImageResource && (resource.url = imageUrl);\n const texture = new Texture(baseTexture);\n return name || (name = imageUrl), BaseTexture.addToCache(texture.baseTexture, name), Texture.addToCache(texture, name), name !== imageUrl && (BaseTexture.addToCache(texture.baseTexture, imageUrl), Texture.addToCache(texture, imageUrl)), texture.baseTexture.valid ? Promise.resolve(texture) : new Promise((resolve) => {\n texture.baseTexture.once(\"loaded\", () => resolve(texture));\n });\n }\n /**\n * Adds a Texture to the global TextureCache. This cache is shared across the whole PIXI object.\n * @param texture - The Texture to add to the cache.\n * @param id - The id that the Texture will be stored against.\n */\n static addToCache(texture, id) {\n id && (texture.textureCacheIds.includes(id) || texture.textureCacheIds.push(id), TextureCache[id] && TextureCache[id] !== texture && console.warn(`Texture added to the cache with an id [${id}] that already had an entry`), TextureCache[id] = texture);\n }\n /**\n * Remove a Texture from the global TextureCache.\n * @param texture - id of a Texture to be removed, or a Texture instance itself\n * @returns - The Texture that was removed\n */\n static removeFromCache(texture) {\n if (typeof texture == \"string\") {\n const textureFromCache = TextureCache[texture];\n if (textureFromCache) {\n const index = textureFromCache.textureCacheIds.indexOf(texture);\n return index > -1 && textureFromCache.textureCacheIds.splice(index, 1), delete TextureCache[texture], textureFromCache;\n }\n } else if (texture?.textureCacheIds) {\n for (let i = 0; i < texture.textureCacheIds.length; ++i)\n TextureCache[texture.textureCacheIds[i]] === texture && delete TextureCache[texture.textureCacheIds[i]];\n return texture.textureCacheIds.length = 0, texture;\n }\n return null;\n }\n /**\n * Returns resolution of baseTexture\n * @readonly\n */\n get resolution() {\n return this.baseTexture.resolution;\n }\n /**\n * The frame specifies the region of the base texture that this texture uses.\n * Please call `updateUvs()` after you change coordinates of `frame` manually.\n */\n get frame() {\n return this._frame;\n }\n set frame(frame) {\n this._frame = frame, this.noFrame = !1;\n const { x, y, width, height } = frame, xNotFit = x + width > this.baseTexture.width, yNotFit = y + height > this.baseTexture.height;\n if (xNotFit || yNotFit) {\n const relationship = xNotFit && yNotFit ? \"and\" : \"or\", errorX = `X: ${x} + ${width} = ${x + width} > ${this.baseTexture.width}`, errorY = `Y: ${y} + ${height} = ${y + height} > ${this.baseTexture.height}`;\n throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${errorX} ${relationship} ${errorY}`);\n }\n this.valid = width && height && this.baseTexture.valid, !this.trim && !this.rotate && (this.orig = frame), this.valid && this.updateUvs();\n }\n /**\n * Indicates whether the texture is rotated inside the atlas\n * set to 2 to compensate for texture packer rotation\n * set to 6 to compensate for spine packer rotation\n * can be used to rotate or mirror sprites\n * See {@link PIXI.groupD8} for explanation\n */\n get rotate() {\n return this._rotate;\n }\n set rotate(rotate) {\n this._rotate = rotate, this.valid && this.updateUvs();\n }\n /** The width of the Texture in pixels. */\n get width() {\n return this.orig.width;\n }\n /** The height of the Texture in pixels. */\n get height() {\n return this.orig.height;\n }\n /** Utility function for BaseTexture|Texture cast. */\n castToBaseTexture() {\n return this.baseTexture;\n }\n /** An empty texture, used often to not have to create multiple empty textures. Can not be destroyed. */\n static get EMPTY() {\n return Texture._EMPTY || (Texture._EMPTY = new Texture(new BaseTexture()), removeAllHandlers(Texture._EMPTY), removeAllHandlers(Texture._EMPTY.baseTexture)), Texture._EMPTY;\n }\n /** A white texture of 16x16 size, used for graphics and other things Can not be destroyed. */\n static get WHITE() {\n if (!Texture._WHITE) {\n const canvas = settings.ADAPTER.createCanvas(16, 16), context = canvas.getContext(\"2d\");\n canvas.width = 16, canvas.height = 16, context.fillStyle = \"white\", context.fillRect(0, 0, 16, 16), Texture._WHITE = new Texture(BaseTexture.from(canvas)), removeAllHandlers(Texture._WHITE), removeAllHandlers(Texture._WHITE.baseTexture);\n }\n return Texture._WHITE;\n }\n}\nexport {\n Texture\n};\n//# sourceMappingURL=Texture.mjs.map\n","import { Texture } from \"../textures/Texture.mjs\";\nimport { BaseRenderTexture } from \"./BaseRenderTexture.mjs\";\nclass RenderTexture extends Texture {\n /**\n * @param baseRenderTexture - The base texture object that this texture uses.\n * @param frame - The rectangle frame of the texture to show.\n */\n constructor(baseRenderTexture, frame) {\n super(baseRenderTexture, frame), this.valid = !0, this.filterFrame = null, this.filterPoolKey = null, this.updateUvs();\n }\n /**\n * Shortcut to `this.baseTexture.framebuffer`, saves baseTexture cast.\n * @readonly\n */\n get framebuffer() {\n return this.baseTexture.framebuffer;\n }\n /**\n * Shortcut to `this.framebuffer.multisample`.\n * @default PIXI.MSAA_QUALITY.NONE\n */\n get multisample() {\n return this.framebuffer.multisample;\n }\n set multisample(value) {\n this.framebuffer.multisample = value;\n }\n /**\n * Resizes the RenderTexture.\n * @param desiredWidth - The desired width to resize to.\n * @param desiredHeight - The desired height to resize to.\n * @param resizeBaseTexture - Should the baseTexture.width and height values be resized as well?\n */\n resize(desiredWidth, desiredHeight, resizeBaseTexture = !0) {\n const resolution = this.baseTexture.resolution, width = Math.round(desiredWidth * resolution) / resolution, height = Math.round(desiredHeight * resolution) / resolution;\n this.valid = width > 0 && height > 0, this._frame.width = this.orig.width = width, this._frame.height = this.orig.height = height, resizeBaseTexture && this.baseTexture.resize(width, height), this.updateUvs();\n }\n /**\n * Changes the resolution of baseTexture, but does not change framebuffer size.\n * @param resolution - The new resolution to apply to RenderTexture\n */\n setResolution(resolution) {\n const { baseTexture } = this;\n baseTexture.resolution !== resolution && (baseTexture.setResolution(resolution), this.resize(baseTexture.width, baseTexture.height, !1));\n }\n /**\n * A short hand way of creating a render texture.\n * @param options - Options\n * @param {number} [options.width=100] - The width of the render texture\n * @param {number} [options.height=100] - The height of the render texture\n * @param {PIXI.SCALE_MODES} [options.scaleMode=PIXI.BaseTexture.defaultOptions.scaleMode] - See {@link PIXI.SCALE_MODES}\n * for possible values\n * @param {number} [options.resolution=PIXI.settings.RESOLUTION] - The resolution / device pixel ratio of the texture\n * being generated\n * @param {PIXI.MSAA_QUALITY} [options.multisample=PIXI.MSAA_QUALITY.NONE] - The number of samples of the frame buffer\n * @returns The new render texture\n */\n static create(options) {\n return new RenderTexture(new BaseRenderTexture(options));\n }\n}\nexport {\n RenderTexture\n};\n//# sourceMappingURL=RenderTexture.mjs.map\n","import { MSAA_QUALITY } from \"@pixi/constants\";\nimport { nextPow2 } from \"@pixi/utils\";\nimport { BaseRenderTexture } from \"./BaseRenderTexture.mjs\";\nimport { RenderTexture } from \"./RenderTexture.mjs\";\nclass RenderTexturePool {\n /**\n * @param textureOptions - options that will be passed to BaseRenderTexture constructor\n * @param {PIXI.SCALE_MODES} [textureOptions.scaleMode] - See {@link PIXI.SCALE_MODES} for possible values.\n */\n constructor(textureOptions) {\n this.texturePool = {}, this.textureOptions = textureOptions || {}, this.enableFullScreen = !1, this._pixelsWidth = 0, this._pixelsHeight = 0;\n }\n /**\n * Creates texture with params that were specified in pool constructor.\n * @param realWidth - Width of texture in pixels.\n * @param realHeight - Height of texture in pixels.\n * @param multisample - Number of samples of the framebuffer.\n */\n createTexture(realWidth, realHeight, multisample = MSAA_QUALITY.NONE) {\n const baseRenderTexture = new BaseRenderTexture(Object.assign({\n width: realWidth,\n height: realHeight,\n resolution: 1,\n multisample\n }, this.textureOptions));\n return new RenderTexture(baseRenderTexture);\n }\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param minWidth - The minimum width of the render texture.\n * @param minHeight - The minimum height of the render texture.\n * @param resolution - The resolution of the render texture.\n * @param multisample - Number of samples of the render texture.\n * @returns The new render texture.\n */\n getOptimalTexture(minWidth, minHeight, resolution = 1, multisample = MSAA_QUALITY.NONE) {\n let key;\n minWidth = Math.max(Math.ceil(minWidth * resolution - 1e-6), 1), minHeight = Math.max(Math.ceil(minHeight * resolution - 1e-6), 1), !this.enableFullScreen || minWidth !== this._pixelsWidth || minHeight !== this._pixelsHeight ? (minWidth = nextPow2(minWidth), minHeight = nextPow2(minHeight), key = ((minWidth & 65535) << 16 | minHeight & 65535) >>> 0, multisample > 1 && (key += multisample * 4294967296)) : key = multisample > 1 ? -multisample : -1, this.texturePool[key] || (this.texturePool[key] = []);\n let renderTexture = this.texturePool[key].pop();\n return renderTexture || (renderTexture = this.createTexture(minWidth, minHeight, multisample)), renderTexture.filterPoolKey = key, renderTexture.setResolution(resolution), renderTexture;\n }\n /**\n * Gets extra texture of the same size as input renderTexture\n *\n * `getFilterTexture(input, 0.5)` or `getFilterTexture(0.5, input)`\n * @param input - renderTexture from which size and resolution will be copied\n * @param resolution - override resolution of the renderTexture\n * It overrides, it does not multiply\n * @param multisample - number of samples of the renderTexture\n */\n getFilterTexture(input, resolution, multisample) {\n const filterTexture = this.getOptimalTexture(\n input.width,\n input.height,\n resolution || input.resolution,\n multisample || MSAA_QUALITY.NONE\n );\n return filterTexture.filterFrame = input.filterFrame, filterTexture;\n }\n /**\n * Place a render texture back into the pool.\n * @param renderTexture - The renderTexture to free\n */\n returnTexture(renderTexture) {\n const key = renderTexture.filterPoolKey;\n renderTexture.filterFrame = null, this.texturePool[key].push(renderTexture);\n }\n /**\n * Alias for returnTexture, to be compliant with FilterSystem interface.\n * @param renderTexture - The renderTexture to free\n */\n returnFilterTexture(renderTexture) {\n this.returnTexture(renderTexture);\n }\n /**\n * Clears the pool.\n * @param destroyTextures - Destroy all stored textures.\n */\n clear(destroyTextures) {\n if (destroyTextures = destroyTextures !== !1, destroyTextures)\n for (const i in this.texturePool) {\n const textures = this.texturePool[i];\n if (textures)\n for (let j = 0; j < textures.length; j++)\n textures[j].destroy(!0);\n }\n this.texturePool = {};\n }\n /**\n * If screen size was changed, drops all screen-sized textures,\n * sets new screen size, sets `enableFullScreen` to true\n *\n * Size is measured in pixels, `renderer.view` can be passed here, not `renderer.screen`\n * @param size - Initial size of screen.\n */\n setScreenSize(size) {\n if (!(size.width === this._pixelsWidth && size.height === this._pixelsHeight)) {\n this.enableFullScreen = size.width > 0 && size.height > 0;\n for (const i in this.texturePool) {\n if (!(Number(i) < 0))\n continue;\n const textures = this.texturePool[i];\n if (textures)\n for (let j = 0; j < textures.length; j++)\n textures[j].destroy(!0);\n this.texturePool[i] = [];\n }\n this._pixelsWidth = size.width, this._pixelsHeight = size.height;\n }\n }\n}\nRenderTexturePool.SCREEN_KEY = -1;\nexport {\n RenderTexturePool\n};\n//# sourceMappingURL=RenderTexturePool.mjs.map\n","import { Geometry } from \"../geometry/Geometry.mjs\";\nclass Quad extends Geometry {\n constructor() {\n super(), this.addAttribute(\"aVertexPosition\", new Float32Array([\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 0,\n 1\n ])).addIndex([0, 1, 3, 2]);\n }\n}\nexport {\n Quad\n};\n//# sourceMappingURL=Quad.mjs.map\n","import { Buffer } from \"../geometry/Buffer.mjs\";\nimport { Geometry } from \"../geometry/Geometry.mjs\";\nclass QuadUv extends Geometry {\n constructor() {\n super(), this.vertices = new Float32Array([\n -1,\n -1,\n 1,\n -1,\n 1,\n 1,\n -1,\n 1\n ]), this.uvs = new Float32Array([\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 0,\n 1\n ]), this.vertexBuffer = new Buffer(this.vertices), this.uvBuffer = new Buffer(this.uvs), this.addAttribute(\"aVertexPosition\", this.vertexBuffer).addAttribute(\"aTextureCoord\", this.uvBuffer).addIndex([0, 1, 2, 0, 2, 3]);\n }\n /**\n * Maps two Rectangle to the quad.\n * @param targetTextureFrame - The first rectangle\n * @param destinationFrame - The second rectangle\n * @returns - Returns itself.\n */\n map(targetTextureFrame, destinationFrame) {\n let x = 0, y = 0;\n return this.uvs[0] = x, this.uvs[1] = y, this.uvs[2] = x + destinationFrame.width / targetTextureFrame.width, this.uvs[3] = y, this.uvs[4] = x + destinationFrame.width / targetTextureFrame.width, this.uvs[5] = y + destinationFrame.height / targetTextureFrame.height, this.uvs[6] = x, this.uvs[7] = y + destinationFrame.height / targetTextureFrame.height, x = destinationFrame.x, y = destinationFrame.y, this.vertices[0] = x, this.vertices[1] = y, this.vertices[2] = x + destinationFrame.width, this.vertices[3] = y, this.vertices[4] = x + destinationFrame.width, this.vertices[5] = y + destinationFrame.height, this.vertices[6] = x, this.vertices[7] = y + destinationFrame.height, this.invalidate(), this;\n }\n /**\n * Legacy upload method, just marks buffers dirty.\n * @returns - Returns itself.\n */\n invalidate() {\n return this.vertexBuffer._updateID++, this.uvBuffer._updateID++, this;\n }\n}\nexport {\n QuadUv\n};\n//# sourceMappingURL=QuadUv.mjs.map\n","import { MSAA_QUALITY } from \"@pixi/constants\";\nimport { Rectangle } from \"@pixi/math\";\nclass FilterState {\n constructor() {\n this.renderTexture = null, this.target = null, this.legacy = !1, this.resolution = 1, this.multisample = MSAA_QUALITY.NONE, this.sourceFrame = new Rectangle(), this.destinationFrame = new Rectangle(), this.bindingSourceFrame = new Rectangle(), this.bindingDestinationFrame = new Rectangle(), this.filters = [], this.transform = null;\n }\n /** Clears the state */\n clear() {\n this.target = null, this.filters = null, this.renderTexture = null;\n }\n}\nexport {\n FilterState\n};\n//# sourceMappingURL=FilterState.mjs.map\n","import { CLEAR_MODES, DRAW_MODES, MSAA_QUALITY } from \"@pixi/constants\";\nimport { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { Point, Matrix, Rectangle } from \"@pixi/math\";\nimport { RenderTexturePool } from \"../renderTexture/RenderTexturePool.mjs\";\nimport { UniformGroup } from \"../shader/UniformGroup.mjs\";\nimport { Quad } from \"../utils/Quad.mjs\";\nimport { QuadUv } from \"../utils/QuadUv.mjs\";\nimport { FilterState } from \"./FilterState.mjs\";\nconst tempPoints = [new Point(), new Point(), new Point(), new Point()], tempMatrix = new Matrix();\nclass FilterSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.defaultFilterStack = [{}], this.texturePool = new RenderTexturePool(), this.statePool = [], this.quad = new Quad(), this.quadUv = new QuadUv(), this.tempRect = new Rectangle(), this.activeState = {}, this.globalUniforms = new UniformGroup({\n outputFrame: new Rectangle(),\n inputSize: new Float32Array(4),\n inputPixel: new Float32Array(4),\n inputClamp: new Float32Array(4),\n resolution: 1,\n // legacy variables\n filterArea: new Float32Array(4),\n filterClamp: new Float32Array(4)\n }, !0), this.forceClear = !1, this.useMaxPadding = !1;\n }\n init() {\n this.texturePool.setScreenSize(this.renderer.view);\n }\n /**\n * Pushes a set of filters to be applied later to the system. This will redirect further rendering into an\n * input render-texture for the rest of the filtering pipeline.\n * @param {PIXI.DisplayObject} target - The target of the filter to render.\n * @param filters - The filters to apply.\n */\n push(target, filters) {\n const renderer = this.renderer, filterStack = this.defaultFilterStack, state = this.statePool.pop() || new FilterState(), renderTextureSystem = renderer.renderTexture;\n let currentResolution, currentMultisample;\n if (renderTextureSystem.current) {\n const renderTexture = renderTextureSystem.current;\n currentResolution = renderTexture.resolution, currentMultisample = renderTexture.multisample;\n } else\n currentResolution = renderer.resolution, currentMultisample = renderer.multisample;\n let resolution = filters[0].resolution || currentResolution, multisample = filters[0].multisample ?? currentMultisample, padding = filters[0].padding, autoFit = filters[0].autoFit, legacy = filters[0].legacy ?? !0;\n for (let i = 1; i < filters.length; i++) {\n const filter = filters[i];\n resolution = Math.min(resolution, filter.resolution || currentResolution), multisample = Math.min(multisample, filter.multisample ?? currentMultisample), padding = this.useMaxPadding ? Math.max(padding, filter.padding) : padding + filter.padding, autoFit = autoFit && filter.autoFit, legacy = legacy || (filter.legacy ?? !0);\n }\n filterStack.length === 1 && (this.defaultFilterStack[0].renderTexture = renderTextureSystem.current), filterStack.push(state), state.resolution = resolution, state.multisample = multisample, state.legacy = legacy, state.target = target, state.sourceFrame.copyFrom(target.filterArea || target.getBounds(!0)), state.sourceFrame.pad(padding);\n const sourceFrameProjected = this.tempRect.copyFrom(renderTextureSystem.sourceFrame);\n renderer.projection.transform && this.transformAABB(\n tempMatrix.copyFrom(renderer.projection.transform).invert(),\n sourceFrameProjected\n ), autoFit ? (state.sourceFrame.fit(sourceFrameProjected), (state.sourceFrame.width <= 0 || state.sourceFrame.height <= 0) && (state.sourceFrame.width = 0, state.sourceFrame.height = 0)) : state.sourceFrame.intersects(sourceFrameProjected) || (state.sourceFrame.width = 0, state.sourceFrame.height = 0), this.roundFrame(\n state.sourceFrame,\n renderTextureSystem.current ? renderTextureSystem.current.resolution : renderer.resolution,\n renderTextureSystem.sourceFrame,\n renderTextureSystem.destinationFrame,\n renderer.projection.transform\n ), state.renderTexture = this.getOptimalFilterTexture(\n state.sourceFrame.width,\n state.sourceFrame.height,\n resolution,\n multisample\n ), state.filters = filters, state.destinationFrame.width = state.renderTexture.width, state.destinationFrame.height = state.renderTexture.height;\n const destinationFrame = this.tempRect;\n destinationFrame.x = 0, destinationFrame.y = 0, destinationFrame.width = state.sourceFrame.width, destinationFrame.height = state.sourceFrame.height, state.renderTexture.filterFrame = state.sourceFrame, state.bindingSourceFrame.copyFrom(renderTextureSystem.sourceFrame), state.bindingDestinationFrame.copyFrom(renderTextureSystem.destinationFrame), state.transform = renderer.projection.transform, renderer.projection.transform = null, renderTextureSystem.bind(state.renderTexture, state.sourceFrame, destinationFrame), renderer.framebuffer.clear(0, 0, 0, 0);\n }\n /** Pops off the filter and applies it. */\n pop() {\n const filterStack = this.defaultFilterStack, state = filterStack.pop(), filters = state.filters;\n this.activeState = state;\n const globalUniforms = this.globalUniforms.uniforms;\n globalUniforms.outputFrame = state.sourceFrame, globalUniforms.resolution = state.resolution;\n const inputSize = globalUniforms.inputSize, inputPixel = globalUniforms.inputPixel, inputClamp = globalUniforms.inputClamp;\n if (inputSize[0] = state.destinationFrame.width, inputSize[1] = state.destinationFrame.height, inputSize[2] = 1 / inputSize[0], inputSize[3] = 1 / inputSize[1], inputPixel[0] = Math.round(inputSize[0] * state.resolution), inputPixel[1] = Math.round(inputSize[1] * state.resolution), inputPixel[2] = 1 / inputPixel[0], inputPixel[3] = 1 / inputPixel[1], inputClamp[0] = 0.5 * inputPixel[2], inputClamp[1] = 0.5 * inputPixel[3], inputClamp[2] = state.sourceFrame.width * inputSize[2] - 0.5 * inputPixel[2], inputClamp[3] = state.sourceFrame.height * inputSize[3] - 0.5 * inputPixel[3], state.legacy) {\n const filterArea = globalUniforms.filterArea;\n filterArea[0] = state.destinationFrame.width, filterArea[1] = state.destinationFrame.height, filterArea[2] = state.sourceFrame.x, filterArea[3] = state.sourceFrame.y, globalUniforms.filterClamp = globalUniforms.inputClamp;\n }\n this.globalUniforms.update();\n const lastState = filterStack[filterStack.length - 1];\n if (this.renderer.framebuffer.blit(), filters.length === 1)\n filters[0].apply(this, state.renderTexture, lastState.renderTexture, CLEAR_MODES.BLEND, state), this.returnFilterTexture(state.renderTexture);\n else {\n let flip = state.renderTexture, flop = this.getOptimalFilterTexture(\n flip.width,\n flip.height,\n state.resolution\n );\n flop.filterFrame = flip.filterFrame;\n let i = 0;\n for (i = 0; i < filters.length - 1; ++i) {\n i === 1 && state.multisample > 1 && (flop = this.getOptimalFilterTexture(\n flip.width,\n flip.height,\n state.resolution\n ), flop.filterFrame = flip.filterFrame), filters[i].apply(this, flip, flop, CLEAR_MODES.CLEAR, state);\n const t = flip;\n flip = flop, flop = t;\n }\n filters[i].apply(this, flip, lastState.renderTexture, CLEAR_MODES.BLEND, state), i > 1 && state.multisample > 1 && this.returnFilterTexture(state.renderTexture), this.returnFilterTexture(flip), this.returnFilterTexture(flop);\n }\n state.clear(), this.statePool.push(state);\n }\n /**\n * Binds a renderTexture with corresponding `filterFrame`, clears it if mode corresponds.\n * @param filterTexture - renderTexture to bind, should belong to filter pool or filter stack\n * @param clearMode - clearMode, by default its CLEAR/YES. See {@link PIXI.CLEAR_MODES}\n */\n bindAndClear(filterTexture, clearMode = CLEAR_MODES.CLEAR) {\n const {\n renderTexture: renderTextureSystem,\n state: stateSystem\n } = this.renderer;\n if (filterTexture === this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture ? this.renderer.projection.transform = this.activeState.transform : this.renderer.projection.transform = null, filterTexture?.filterFrame) {\n const destinationFrame = this.tempRect;\n destinationFrame.x = 0, destinationFrame.y = 0, destinationFrame.width = filterTexture.filterFrame.width, destinationFrame.height = filterTexture.filterFrame.height, renderTextureSystem.bind(filterTexture, filterTexture.filterFrame, destinationFrame);\n } else\n filterTexture !== this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture ? renderTextureSystem.bind(filterTexture) : this.renderer.renderTexture.bind(\n filterTexture,\n this.activeState.bindingSourceFrame,\n this.activeState.bindingDestinationFrame\n );\n const autoClear = stateSystem.stateId & 1 || this.forceClear;\n (clearMode === CLEAR_MODES.CLEAR || clearMode === CLEAR_MODES.BLIT && autoClear) && this.renderer.framebuffer.clear(0, 0, 0, 0);\n }\n /**\n * Draws a filter using the default rendering process.\n *\n * This should be called only by {@link PIXI.Filter#apply}.\n * @param filter - The filter to draw.\n * @param input - The input render target.\n * @param output - The target to output to.\n * @param clearMode - Should the output be cleared before rendering to it\n */\n applyFilter(filter, input, output, clearMode) {\n const renderer = this.renderer;\n renderer.state.set(filter.state), this.bindAndClear(output, clearMode), filter.uniforms.uSampler = input, filter.uniforms.filterGlobals = this.globalUniforms, renderer.shader.bind(filter), filter.legacy = !!filter.program.attributeData.aTextureCoord, filter.legacy ? (this.quadUv.map(input._frame, input.filterFrame), renderer.geometry.bind(this.quadUv), renderer.geometry.draw(DRAW_MODES.TRIANGLES)) : (renderer.geometry.bind(this.quad), renderer.geometry.draw(DRAW_MODES.TRIANGLE_STRIP));\n }\n /**\n * Multiply _input normalized coordinates_ to this matrix to get _sprite texture normalized coordinates_.\n *\n * Use `outputMatrix * vTextureCoord` in the shader.\n * @param outputMatrix - The matrix to output to.\n * @param {PIXI.Sprite} sprite - The sprite to map to.\n * @returns The mapped matrix.\n */\n calculateSpriteMatrix(outputMatrix, sprite) {\n const { sourceFrame, destinationFrame } = this.activeState, { orig } = sprite._texture, mappedMatrix = outputMatrix.set(\n destinationFrame.width,\n 0,\n 0,\n destinationFrame.height,\n sourceFrame.x,\n sourceFrame.y\n ), worldTransform = sprite.worldTransform.copyTo(Matrix.TEMP_MATRIX);\n return worldTransform.invert(), mappedMatrix.prepend(worldTransform), mappedMatrix.scale(1 / orig.width, 1 / orig.height), mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y), mappedMatrix;\n }\n /** Destroys this Filter System. */\n destroy() {\n this.renderer = null, this.texturePool.clear(!1);\n }\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param minWidth - The minimum width of the render texture in real pixels.\n * @param minHeight - The minimum height of the render texture in real pixels.\n * @param resolution - The resolution of the render texture.\n * @param multisample - Number of samples of the render texture.\n * @returns - The new render texture.\n */\n getOptimalFilterTexture(minWidth, minHeight, resolution = 1, multisample = MSAA_QUALITY.NONE) {\n return this.texturePool.getOptimalTexture(minWidth, minHeight, resolution, multisample);\n }\n /**\n * Gets extra render texture to use inside current filter\n * To be compliant with older filters, you can use params in any order\n * @param input - renderTexture from which size and resolution will be copied\n * @param resolution - override resolution of the renderTexture\n * @param multisample - number of samples of the renderTexture\n */\n getFilterTexture(input, resolution, multisample) {\n if (typeof input == \"number\") {\n const swap = input;\n input = resolution, resolution = swap;\n }\n input = input || this.activeState.renderTexture;\n const filterTexture = this.texturePool.getOptimalTexture(\n input.width,\n input.height,\n resolution || input.resolution,\n multisample || MSAA_QUALITY.NONE\n );\n return filterTexture.filterFrame = input.filterFrame, filterTexture;\n }\n /**\n * Frees a render texture back into the pool.\n * @param renderTexture - The renderTarget to free\n */\n returnFilterTexture(renderTexture) {\n this.texturePool.returnTexture(renderTexture);\n }\n /** Empties the texture pool. */\n emptyPool() {\n this.texturePool.clear(!0);\n }\n /** Calls `texturePool.resize()`, affects fullScreen renderTextures. */\n resize() {\n this.texturePool.setScreenSize(this.renderer.view);\n }\n /**\n * @param matrix - first param\n * @param rect - second param\n */\n transformAABB(matrix, rect) {\n const lt = tempPoints[0], lb = tempPoints[1], rt = tempPoints[2], rb = tempPoints[3];\n lt.set(rect.left, rect.top), lb.set(rect.left, rect.bottom), rt.set(rect.right, rect.top), rb.set(rect.right, rect.bottom), matrix.apply(lt, lt), matrix.apply(lb, lb), matrix.apply(rt, rt), matrix.apply(rb, rb);\n const x0 = Math.min(lt.x, lb.x, rt.x, rb.x), y0 = Math.min(lt.y, lb.y, rt.y, rb.y), x1 = Math.max(lt.x, lb.x, rt.x, rb.x), y1 = Math.max(lt.y, lb.y, rt.y, rb.y);\n rect.x = x0, rect.y = y0, rect.width = x1 - x0, rect.height = y1 - y0;\n }\n roundFrame(frame, resolution, bindingSourceFrame, bindingDestinationFrame, transform) {\n if (!(frame.width <= 0 || frame.height <= 0 || bindingSourceFrame.width <= 0 || bindingSourceFrame.height <= 0)) {\n if (transform) {\n const { a, b, c, d } = transform;\n if ((Math.abs(b) > 1e-4 || Math.abs(c) > 1e-4) && (Math.abs(a) > 1e-4 || Math.abs(d) > 1e-4))\n return;\n }\n transform = transform ? tempMatrix.copyFrom(transform) : tempMatrix.identity(), transform.translate(-bindingSourceFrame.x, -bindingSourceFrame.y).scale(\n bindingDestinationFrame.width / bindingSourceFrame.width,\n bindingDestinationFrame.height / bindingSourceFrame.height\n ).translate(bindingDestinationFrame.x, bindingDestinationFrame.y), this.transformAABB(transform, frame), frame.ceil(resolution), this.transformAABB(transform.invert(), frame);\n }\n }\n}\nFilterSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"filter\"\n};\nextensions.add(FilterSystem);\nexport {\n FilterSystem\n};\n//# sourceMappingURL=FilterSystem.mjs.map\n","import { MSAA_QUALITY } from \"@pixi/constants\";\nclass GLFramebuffer {\n constructor(framebuffer) {\n this.framebuffer = framebuffer, this.stencil = null, this.dirtyId = -1, this.dirtyFormat = -1, this.dirtySize = -1, this.multisample = MSAA_QUALITY.NONE, this.msaaBuffer = null, this.blitFramebuffer = null, this.mipLevel = 0;\n }\n}\nexport {\n GLFramebuffer\n};\n//# sourceMappingURL=GLFramebuffer.mjs.map\n","import { ENV, BUFFER_BITS, MSAA_QUALITY } from \"@pixi/constants\";\nimport { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { Rectangle } from \"@pixi/math\";\nimport { settings } from \"@pixi/settings\";\nimport { Framebuffer } from \"./Framebuffer.mjs\";\nimport { GLFramebuffer } from \"./GLFramebuffer.mjs\";\nconst tempRectangle = new Rectangle();\nclass FramebufferSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.managedFramebuffers = [], this.unknownFramebuffer = new Framebuffer(10, 10), this.msaaSamples = null;\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n this.disposeAll(!0);\n const gl = this.gl = this.renderer.gl;\n if (this.CONTEXT_UID = this.renderer.CONTEXT_UID, this.current = this.unknownFramebuffer, this.viewport = new Rectangle(), this.hasMRT = !0, this.writeDepthTexture = !0, this.renderer.context.webGLVersion === 1) {\n let nativeDrawBuffersExtension = this.renderer.context.extensions.drawBuffers, nativeDepthTextureExtension = this.renderer.context.extensions.depthTexture;\n settings.PREFER_ENV === ENV.WEBGL_LEGACY && (nativeDrawBuffersExtension = null, nativeDepthTextureExtension = null), nativeDrawBuffersExtension ? gl.drawBuffers = (activeTextures) => nativeDrawBuffersExtension.drawBuffersWEBGL(activeTextures) : (this.hasMRT = !1, gl.drawBuffers = () => {\n }), nativeDepthTextureExtension || (this.writeDepthTexture = !1);\n } else\n this.msaaSamples = gl.getInternalformatParameter(gl.RENDERBUFFER, gl.RGBA8, gl.SAMPLES);\n }\n /**\n * Bind a framebuffer.\n * @param framebuffer\n * @param frame - frame, default is framebuffer size\n * @param mipLevel - optional mip level to set on the framebuffer - defaults to 0\n */\n bind(framebuffer, frame, mipLevel = 0) {\n const { gl } = this;\n if (framebuffer) {\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID] || this.initFramebuffer(framebuffer);\n this.current !== framebuffer && (this.current = framebuffer, gl.bindFramebuffer(gl.FRAMEBUFFER, fbo.framebuffer)), fbo.mipLevel !== mipLevel && (framebuffer.dirtyId++, framebuffer.dirtyFormat++, fbo.mipLevel = mipLevel), fbo.dirtyId !== framebuffer.dirtyId && (fbo.dirtyId = framebuffer.dirtyId, fbo.dirtyFormat !== framebuffer.dirtyFormat ? (fbo.dirtyFormat = framebuffer.dirtyFormat, fbo.dirtySize = framebuffer.dirtySize, this.updateFramebuffer(framebuffer, mipLevel)) : fbo.dirtySize !== framebuffer.dirtySize && (fbo.dirtySize = framebuffer.dirtySize, this.resizeFramebuffer(framebuffer)));\n for (let i = 0; i < framebuffer.colorTextures.length; i++) {\n const tex = framebuffer.colorTextures[i];\n this.renderer.texture.unbind(tex.parentTextureArray || tex);\n }\n if (framebuffer.depthTexture && this.renderer.texture.unbind(framebuffer.depthTexture), frame) {\n const mipWidth = frame.width >> mipLevel, mipHeight = frame.height >> mipLevel, scale = mipWidth / frame.width;\n this.setViewport(\n frame.x * scale,\n frame.y * scale,\n mipWidth,\n mipHeight\n );\n } else {\n const mipWidth = framebuffer.width >> mipLevel, mipHeight = framebuffer.height >> mipLevel;\n this.setViewport(0, 0, mipWidth, mipHeight);\n }\n } else\n this.current && (this.current = null, gl.bindFramebuffer(gl.FRAMEBUFFER, null)), frame ? this.setViewport(frame.x, frame.y, frame.width, frame.height) : this.setViewport(0, 0, this.renderer.width, this.renderer.height);\n }\n /**\n * Set the WebGLRenderingContext's viewport.\n * @param x - X position of viewport\n * @param y - Y position of viewport\n * @param width - Width of viewport\n * @param height - Height of viewport\n */\n setViewport(x, y, width, height) {\n const v = this.viewport;\n x = Math.round(x), y = Math.round(y), width = Math.round(width), height = Math.round(height), (v.width !== width || v.height !== height || v.x !== x || v.y !== y) && (v.x = x, v.y = y, v.width = width, v.height = height, this.gl.viewport(x, y, width, height));\n }\n /**\n * Get the size of the current width and height. Returns object with `width` and `height` values.\n * @readonly\n */\n get size() {\n return this.current ? { x: 0, y: 0, width: this.current.width, height: this.current.height } : { x: 0, y: 0, width: this.renderer.width, height: this.renderer.height };\n }\n /**\n * Clear the color of the context\n * @param r - Red value from 0 to 1\n * @param g - Green value from 0 to 1\n * @param b - Blue value from 0 to 1\n * @param a - Alpha value from 0 to 1\n * @param {PIXI.BUFFER_BITS} [mask=BUFFER_BITS.COLOR | BUFFER_BITS.DEPTH] - Bitwise OR of masks\n * that indicate the buffers to be cleared, by default COLOR and DEPTH buffers.\n */\n clear(r, g, b, a, mask = BUFFER_BITS.COLOR | BUFFER_BITS.DEPTH) {\n const { gl } = this;\n gl.clearColor(r, g, b, a), gl.clear(mask);\n }\n /**\n * Initialize framebuffer for this context\n * @protected\n * @param framebuffer\n * @returns - created GLFramebuffer\n */\n initFramebuffer(framebuffer) {\n const { gl } = this, fbo = new GLFramebuffer(gl.createFramebuffer());\n return fbo.multisample = this.detectSamples(framebuffer.multisample), framebuffer.glFramebuffers[this.CONTEXT_UID] = fbo, this.managedFramebuffers.push(framebuffer), framebuffer.disposeRunner.add(this), fbo;\n }\n /**\n * Resize the framebuffer\n * @param framebuffer\n * @protected\n */\n resizeFramebuffer(framebuffer) {\n const { gl } = this, fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n if (fbo.stencil) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.stencil);\n let stencilFormat;\n this.renderer.context.webGLVersion === 1 ? stencilFormat = gl.DEPTH_STENCIL : framebuffer.depth && framebuffer.stencil ? stencilFormat = gl.DEPTH24_STENCIL8 : framebuffer.depth ? stencilFormat = gl.DEPTH_COMPONENT24 : stencilFormat = gl.STENCIL_INDEX8, fbo.msaaBuffer ? gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n fbo.multisample,\n stencilFormat,\n framebuffer.width,\n framebuffer.height\n ) : gl.renderbufferStorage(gl.RENDERBUFFER, stencilFormat, framebuffer.width, framebuffer.height);\n }\n const colorTextures = framebuffer.colorTextures;\n let count = colorTextures.length;\n gl.drawBuffers || (count = Math.min(count, 1));\n for (let i = 0; i < count; i++) {\n const texture = colorTextures[i], parentTexture = texture.parentTextureArray || texture;\n this.renderer.texture.bind(parentTexture, 0), i === 0 && fbo.msaaBuffer && (gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.msaaBuffer), gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n fbo.multisample,\n parentTexture._glTextures[this.CONTEXT_UID].internalFormat,\n framebuffer.width,\n framebuffer.height\n ));\n }\n framebuffer.depthTexture && this.writeDepthTexture && this.renderer.texture.bind(framebuffer.depthTexture, 0);\n }\n /**\n * Update the framebuffer\n * @param framebuffer\n * @param mipLevel\n * @protected\n */\n updateFramebuffer(framebuffer, mipLevel) {\n const { gl } = this, fbo = framebuffer.glFramebuffers[this.CONTEXT_UID], colorTextures = framebuffer.colorTextures;\n let count = colorTextures.length;\n gl.drawBuffers || (count = Math.min(count, 1)), fbo.multisample > 1 && this.canMultisampleFramebuffer(framebuffer) ? fbo.msaaBuffer = fbo.msaaBuffer || gl.createRenderbuffer() : fbo.msaaBuffer && (gl.deleteRenderbuffer(fbo.msaaBuffer), fbo.msaaBuffer = null, fbo.blitFramebuffer && (fbo.blitFramebuffer.dispose(), fbo.blitFramebuffer = null));\n const activeTextures = [];\n for (let i = 0; i < count; i++) {\n const texture = colorTextures[i], parentTexture = texture.parentTextureArray || texture;\n this.renderer.texture.bind(parentTexture, 0), i === 0 && fbo.msaaBuffer ? (gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.msaaBuffer), gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n fbo.multisample,\n parentTexture._glTextures[this.CONTEXT_UID].internalFormat,\n framebuffer.width,\n framebuffer.height\n ), gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, fbo.msaaBuffer)) : (gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n texture.target,\n parentTexture._glTextures[this.CONTEXT_UID].texture,\n mipLevel\n ), activeTextures.push(gl.COLOR_ATTACHMENT0 + i));\n }\n if (activeTextures.length > 1 && gl.drawBuffers(activeTextures), framebuffer.depthTexture && this.writeDepthTexture) {\n const depthTexture = framebuffer.depthTexture;\n this.renderer.texture.bind(depthTexture, 0), gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.TEXTURE_2D,\n depthTexture._glTextures[this.CONTEXT_UID].texture,\n mipLevel\n );\n }\n if ((framebuffer.stencil || framebuffer.depth) && !(framebuffer.depthTexture && this.writeDepthTexture)) {\n fbo.stencil = fbo.stencil || gl.createRenderbuffer();\n let stencilAttachment, stencilFormat;\n this.renderer.context.webGLVersion === 1 ? (stencilAttachment = gl.DEPTH_STENCIL_ATTACHMENT, stencilFormat = gl.DEPTH_STENCIL) : framebuffer.depth && framebuffer.stencil ? (stencilAttachment = gl.DEPTH_STENCIL_ATTACHMENT, stencilFormat = gl.DEPTH24_STENCIL8) : framebuffer.depth ? (stencilAttachment = gl.DEPTH_ATTACHMENT, stencilFormat = gl.DEPTH_COMPONENT24) : (stencilAttachment = gl.STENCIL_ATTACHMENT, stencilFormat = gl.STENCIL_INDEX8), gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.stencil), fbo.msaaBuffer ? gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n fbo.multisample,\n stencilFormat,\n framebuffer.width,\n framebuffer.height\n ) : gl.renderbufferStorage(gl.RENDERBUFFER, stencilFormat, framebuffer.width, framebuffer.height), gl.framebufferRenderbuffer(gl.FRAMEBUFFER, stencilAttachment, gl.RENDERBUFFER, fbo.stencil);\n } else\n fbo.stencil && (gl.deleteRenderbuffer(fbo.stencil), fbo.stencil = null);\n }\n /**\n * Returns true if the frame buffer can be multisampled.\n * @param framebuffer\n */\n canMultisampleFramebuffer(framebuffer) {\n return this.renderer.context.webGLVersion !== 1 && framebuffer.colorTextures.length <= 1 && !framebuffer.depthTexture;\n }\n /**\n * Detects number of samples that is not more than a param but as close to it as possible\n * @param samples - number of samples\n * @returns - recommended number of samples\n */\n detectSamples(samples) {\n const { msaaSamples } = this;\n let res = MSAA_QUALITY.NONE;\n if (samples <= 1 || msaaSamples === null)\n return res;\n for (let i = 0; i < msaaSamples.length; i++)\n if (msaaSamples[i] <= samples) {\n res = msaaSamples[i];\n break;\n }\n return res === 1 && (res = MSAA_QUALITY.NONE), res;\n }\n /**\n * Only works with WebGL2\n *\n * blits framebuffer to another of the same or bigger size\n * after that target framebuffer is bound\n *\n * Fails with WebGL warning if blits multisample framebuffer to different size\n * @param framebuffer - by default it blits \"into itself\", from renderBuffer to texture.\n * @param sourcePixels - source rectangle in pixels\n * @param destPixels - dest rectangle in pixels, assumed to be the same as sourcePixels\n */\n blit(framebuffer, sourcePixels, destPixels) {\n const { current, renderer, gl, CONTEXT_UID } = this;\n if (renderer.context.webGLVersion !== 2 || !current)\n return;\n const fbo = current.glFramebuffers[CONTEXT_UID];\n if (!fbo)\n return;\n if (!framebuffer) {\n if (!fbo.msaaBuffer)\n return;\n const colorTexture = current.colorTextures[0];\n if (!colorTexture)\n return;\n fbo.blitFramebuffer || (fbo.blitFramebuffer = new Framebuffer(current.width, current.height), fbo.blitFramebuffer.addColorTexture(0, colorTexture)), framebuffer = fbo.blitFramebuffer, framebuffer.colorTextures[0] !== colorTexture && (framebuffer.colorTextures[0] = colorTexture, framebuffer.dirtyId++, framebuffer.dirtyFormat++), (framebuffer.width !== current.width || framebuffer.height !== current.height) && (framebuffer.width = current.width, framebuffer.height = current.height, framebuffer.dirtyId++, framebuffer.dirtySize++);\n }\n sourcePixels || (sourcePixels = tempRectangle, sourcePixels.width = current.width, sourcePixels.height = current.height), destPixels || (destPixels = sourcePixels);\n const sameSize = sourcePixels.width === destPixels.width && sourcePixels.height === destPixels.height;\n this.bind(framebuffer), gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbo.framebuffer), gl.blitFramebuffer(\n sourcePixels.left,\n sourcePixels.top,\n sourcePixels.right,\n sourcePixels.bottom,\n destPixels.left,\n destPixels.top,\n destPixels.right,\n destPixels.bottom,\n gl.COLOR_BUFFER_BIT,\n sameSize ? gl.NEAREST : gl.LINEAR\n ), gl.bindFramebuffer(gl.READ_FRAMEBUFFER, framebuffer.glFramebuffers[this.CONTEXT_UID].framebuffer);\n }\n /**\n * Disposes framebuffer.\n * @param framebuffer - framebuffer that has to be disposed of\n * @param contextLost - If context was lost, we suppress all delete function calls\n */\n disposeFramebuffer(framebuffer, contextLost) {\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID], gl = this.gl;\n if (!fbo)\n return;\n delete framebuffer.glFramebuffers[this.CONTEXT_UID];\n const index = this.managedFramebuffers.indexOf(framebuffer);\n index >= 0 && this.managedFramebuffers.splice(index, 1), framebuffer.disposeRunner.remove(this), contextLost || (gl.deleteFramebuffer(fbo.framebuffer), fbo.msaaBuffer && gl.deleteRenderbuffer(fbo.msaaBuffer), fbo.stencil && gl.deleteRenderbuffer(fbo.stencil)), fbo.blitFramebuffer && this.disposeFramebuffer(fbo.blitFramebuffer, contextLost);\n }\n /**\n * Disposes all framebuffers, but not textures bound to them.\n * @param [contextLost=false] - If context was lost, we suppress all delete function calls\n */\n disposeAll(contextLost) {\n const list = this.managedFramebuffers;\n this.managedFramebuffers = [];\n for (let i = 0; i < list.length; i++)\n this.disposeFramebuffer(list[i], contextLost);\n }\n /**\n * Forcing creation of stencil buffer for current framebuffer, if it wasn't done before.\n * Used by MaskSystem, when its time to use stencil mask for Graphics element.\n *\n * Its an alternative for public lazy `framebuffer.enableStencil`, in case we need stencil without rebind.\n * @private\n */\n forceStencil() {\n const framebuffer = this.current;\n if (!framebuffer)\n return;\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n if (!fbo || fbo.stencil && framebuffer.stencil)\n return;\n framebuffer.stencil = !0;\n const w = framebuffer.width, h = framebuffer.height, gl = this.gl, stencil = fbo.stencil = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, stencil);\n let stencilAttachment, stencilFormat;\n this.renderer.context.webGLVersion === 1 ? (stencilAttachment = gl.DEPTH_STENCIL_ATTACHMENT, stencilFormat = gl.DEPTH_STENCIL) : framebuffer.depth ? (stencilAttachment = gl.DEPTH_STENCIL_ATTACHMENT, stencilFormat = gl.DEPTH24_STENCIL8) : (stencilAttachment = gl.STENCIL_ATTACHMENT, stencilFormat = gl.STENCIL_INDEX8), fbo.msaaBuffer ? gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, stencilFormat, w, h) : gl.renderbufferStorage(gl.RENDERBUFFER, stencilFormat, w, h), gl.framebufferRenderbuffer(gl.FRAMEBUFFER, stencilAttachment, gl.RENDERBUFFER, stencil);\n }\n /** Resets framebuffer stored state, binds screen framebuffer. Should be called before renderTexture reset(). */\n reset() {\n this.current = this.unknownFramebuffer, this.viewport = new Rectangle();\n }\n destroy() {\n this.renderer = null;\n }\n}\nFramebufferSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"framebuffer\"\n};\nextensions.add(FramebufferSystem);\nexport {\n FramebufferSystem\n};\n//# sourceMappingURL=FramebufferSystem.mjs.map\n","import { ENV, BUFFER_TYPE } from \"@pixi/constants\";\nimport { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { settings } from \"@pixi/settings\";\nconst byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 };\nclass GeometrySystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this.renderer = renderer, this._activeGeometry = null, this._activeVao = null, this.hasVao = !0, this.hasInstance = !0, this.canUseUInt32ElementIndex = !1, this.managedGeometries = {};\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n this.disposeAll(!0);\n const gl = this.gl = this.renderer.gl, context = this.renderer.context;\n if (this.CONTEXT_UID = this.renderer.CONTEXT_UID, context.webGLVersion !== 2) {\n let nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject;\n settings.PREFER_ENV === ENV.WEBGL_LEGACY && (nativeVaoExtension = null), nativeVaoExtension ? (gl.createVertexArray = () => nativeVaoExtension.createVertexArrayOES(), gl.bindVertexArray = (vao) => nativeVaoExtension.bindVertexArrayOES(vao), gl.deleteVertexArray = (vao) => nativeVaoExtension.deleteVertexArrayOES(vao)) : (this.hasVao = !1, gl.createVertexArray = () => null, gl.bindVertexArray = () => null, gl.deleteVertexArray = () => null);\n }\n if (context.webGLVersion !== 2) {\n const instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n instanceExt ? (gl.vertexAttribDivisor = (a, b) => instanceExt.vertexAttribDivisorANGLE(a, b), gl.drawElementsInstanced = (a, b, c, d, e) => instanceExt.drawElementsInstancedANGLE(a, b, c, d, e), gl.drawArraysInstanced = (a, b, c, d) => instanceExt.drawArraysInstancedANGLE(a, b, c, d)) : this.hasInstance = !1;\n }\n this.canUseUInt32ElementIndex = context.webGLVersion === 2 || !!context.extensions.uint32ElementIndex;\n }\n /**\n * Binds geometry so that is can be drawn. Creating a Vao if required\n * @param geometry - Instance of geometry to bind.\n * @param shader - Instance of shader to use vao for.\n */\n bind(geometry, shader) {\n shader = shader || this.renderer.shader.shader;\n const { gl } = this;\n let vaos = geometry.glVertexArrayObjects[this.CONTEXT_UID], incRefCount = !1;\n vaos || (this.managedGeometries[geometry.id] = geometry, geometry.disposeRunner.add(this), geometry.glVertexArrayObjects[this.CONTEXT_UID] = vaos = {}, incRefCount = !0);\n const vao = vaos[shader.program.id] || this.initGeometryVao(geometry, shader, incRefCount);\n this._activeGeometry = geometry, this._activeVao !== vao && (this._activeVao = vao, this.hasVao ? gl.bindVertexArray(vao) : this.activateVao(geometry, shader.program)), this.updateBuffers();\n }\n /** Reset and unbind any active VAO and geometry. */\n reset() {\n this.unbind();\n }\n /** Update buffers of the currently bound geometry. */\n updateBuffers() {\n const geometry = this._activeGeometry, bufferSystem = this.renderer.buffer;\n for (let i = 0; i < geometry.buffers.length; i++) {\n const buffer = geometry.buffers[i];\n bufferSystem.update(buffer);\n }\n }\n /**\n * Check compatibility between a geometry and a program\n * @param geometry - Geometry instance.\n * @param program - Program instance.\n */\n checkCompatibility(geometry, program) {\n const geometryAttributes = geometry.attributes, shaderAttributes = program.attributeData;\n for (const j in shaderAttributes)\n if (!geometryAttributes[j])\n throw new Error(`shader and geometry incompatible, geometry missing the \"${j}\" attribute`);\n }\n /**\n * Takes a geometry and program and generates a unique signature for them.\n * @param geometry - To get signature from.\n * @param program - To test geometry against.\n * @returns - Unique signature of the geometry and program\n */\n getSignature(geometry, program) {\n const attribs = geometry.attributes, shaderAttributes = program.attributeData, strings = [\"g\", geometry.id];\n for (const i in attribs)\n shaderAttributes[i] && strings.push(i, shaderAttributes[i].location);\n return strings.join(\"-\");\n }\n /**\n * Creates or gets Vao with the same structure as the geometry and stores it on the geometry.\n * If vao is created, it is bound automatically. We use a shader to infer what and how to set up the\n * attribute locations.\n * @param geometry - Instance of geometry to to generate Vao for.\n * @param shader - Instance of the shader.\n * @param incRefCount - Increment refCount of all geometry buffers.\n */\n initGeometryVao(geometry, shader, incRefCount = !0) {\n const gl = this.gl, CONTEXT_UID = this.CONTEXT_UID, bufferSystem = this.renderer.buffer, program = shader.program;\n program.glPrograms[CONTEXT_UID] || this.renderer.shader.generateProgram(shader), this.checkCompatibility(geometry, program);\n const signature = this.getSignature(geometry, program), vaoObjectHash = geometry.glVertexArrayObjects[this.CONTEXT_UID];\n let vao = vaoObjectHash[signature];\n if (vao)\n return vaoObjectHash[program.id] = vao, vao;\n const buffers = geometry.buffers, attributes = geometry.attributes, tempStride = {}, tempStart = {};\n for (const j in buffers)\n tempStride[j] = 0, tempStart[j] = 0;\n for (const j in attributes)\n !attributes[j].size && program.attributeData[j] ? attributes[j].size = program.attributeData[j].size : attributes[j].size || console.warn(`PIXI Geometry attribute '${j}' size cannot be determined (likely the bound shader does not have the attribute)`), tempStride[attributes[j].buffer] += attributes[j].size * byteSizeMap[attributes[j].type];\n for (const j in attributes) {\n const attribute = attributes[j], attribSize = attribute.size;\n attribute.stride === void 0 && (tempStride[attribute.buffer] === attribSize * byteSizeMap[attribute.type] ? attribute.stride = 0 : attribute.stride = tempStride[attribute.buffer]), attribute.start === void 0 && (attribute.start = tempStart[attribute.buffer], tempStart[attribute.buffer] += attribSize * byteSizeMap[attribute.type]);\n }\n vao = gl.createVertexArray(), gl.bindVertexArray(vao);\n for (let i = 0; i < buffers.length; i++) {\n const buffer = buffers[i];\n bufferSystem.bind(buffer), incRefCount && buffer._glBuffers[CONTEXT_UID].refCount++;\n }\n return this.activateVao(geometry, program), vaoObjectHash[program.id] = vao, vaoObjectHash[signature] = vao, gl.bindVertexArray(null), bufferSystem.unbind(BUFFER_TYPE.ARRAY_BUFFER), vao;\n }\n /**\n * Disposes geometry.\n * @param geometry - Geometry with buffers. Only VAO will be disposed\n * @param [contextLost=false] - If context was lost, we suppress deleteVertexArray\n */\n disposeGeometry(geometry, contextLost) {\n if (!this.managedGeometries[geometry.id])\n return;\n delete this.managedGeometries[geometry.id];\n const vaos = geometry.glVertexArrayObjects[this.CONTEXT_UID], gl = this.gl, buffers = geometry.buffers, bufferSystem = this.renderer?.buffer;\n if (geometry.disposeRunner.remove(this), !!vaos) {\n if (bufferSystem)\n for (let i = 0; i < buffers.length; i++) {\n const buf = buffers[i]._glBuffers[this.CONTEXT_UID];\n buf && (buf.refCount--, buf.refCount === 0 && !contextLost && bufferSystem.dispose(buffers[i], contextLost));\n }\n if (!contextLost) {\n for (const vaoId in vaos)\n if (vaoId[0] === \"g\") {\n const vao = vaos[vaoId];\n this._activeVao === vao && this.unbind(), gl.deleteVertexArray(vao);\n }\n }\n delete geometry.glVertexArrayObjects[this.CONTEXT_UID];\n }\n }\n /**\n * Dispose all WebGL resources of all managed geometries.\n * @param [contextLost=false] - If context was lost, we suppress `gl.delete` calls\n */\n disposeAll(contextLost) {\n const all = Object.keys(this.managedGeometries);\n for (let i = 0; i < all.length; i++)\n this.disposeGeometry(this.managedGeometries[all[i]], contextLost);\n }\n /**\n * Activate vertex array object.\n * @param geometry - Geometry instance.\n * @param program - Shader program instance.\n */\n activateVao(geometry, program) {\n const gl = this.gl, CONTEXT_UID = this.CONTEXT_UID, bufferSystem = this.renderer.buffer, buffers = geometry.buffers, attributes = geometry.attributes;\n geometry.indexBuffer && bufferSystem.bind(geometry.indexBuffer);\n let lastBuffer = null;\n for (const j in attributes) {\n const attribute = attributes[j], buffer = buffers[attribute.buffer], glBuffer = buffer._glBuffers[CONTEXT_UID];\n if (program.attributeData[j]) {\n lastBuffer !== glBuffer && (bufferSystem.bind(buffer), lastBuffer = glBuffer);\n const location = program.attributeData[j].location;\n if (gl.enableVertexAttribArray(location), gl.vertexAttribPointer(\n location,\n attribute.size,\n attribute.type || gl.FLOAT,\n attribute.normalized,\n attribute.stride,\n attribute.start\n ), attribute.instance)\n if (this.hasInstance)\n gl.vertexAttribDivisor(location, attribute.divisor);\n else\n throw new Error(\"geometry error, GPU Instancing is not supported on this device\");\n }\n }\n }\n /**\n * Draws the currently bound geometry.\n * @param type - The type primitive to render.\n * @param size - The number of elements to be rendered. If not specified, all vertices after the\n * starting vertex will be drawn.\n * @param start - The starting vertex in the geometry to start drawing from. If not specified,\n * drawing will start from the first vertex.\n * @param instanceCount - The number of instances of the set of elements to execute. If not specified,\n * all instances will be drawn.\n */\n draw(type, size, start, instanceCount) {\n const { gl } = this, geometry = this._activeGeometry;\n if (geometry.indexBuffer) {\n const byteSize = geometry.indexBuffer.data.BYTES_PER_ELEMENT, glType = byteSize === 2 ? gl.UNSIGNED_SHORT : gl.UNSIGNED_INT;\n byteSize === 2 || byteSize === 4 && this.canUseUInt32ElementIndex ? geometry.instanced ? gl.drawElementsInstanced(type, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize, instanceCount || 1) : gl.drawElements(type, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize) : console.warn(\"unsupported index buffer type: uint32\");\n } else\n geometry.instanced ? gl.drawArraysInstanced(type, start, size || geometry.getSize(), instanceCount || 1) : gl.drawArrays(type, start, size || geometry.getSize());\n return this;\n }\n /** Unbind/reset everything. */\n unbind() {\n this.gl.bindVertexArray(null), this._activeVao = null, this._activeGeometry = null;\n }\n destroy() {\n this.renderer = null;\n }\n}\nGeometrySystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"geometry\"\n};\nextensions.add(GeometrySystem);\nexport {\n GeometrySystem\n};\n//# sourceMappingURL=GeometrySystem.mjs.map\n","import { Matrix } from \"@pixi/math\";\nconst tempMat = new Matrix();\nclass TextureMatrix {\n /**\n * @param texture - observed texture\n * @param clampMargin - Changes frame clamping, 0.5 by default. Use -0.5 for extra border.\n */\n constructor(texture, clampMargin) {\n this._texture = texture, this.mapCoord = new Matrix(), this.uClampFrame = new Float32Array(4), this.uClampOffset = new Float32Array(2), this._textureID = -1, this._updateID = 0, this.clampOffset = 0, this.clampMargin = typeof clampMargin > \"u\" ? 0.5 : clampMargin, this.isSimple = !1;\n }\n /** Texture property. */\n get texture() {\n return this._texture;\n }\n set texture(value) {\n this._texture = value, this._textureID = -1;\n }\n /**\n * Multiplies uvs array to transform\n * @param uvs - mesh uvs\n * @param [out=uvs] - output\n * @returns - output\n */\n multiplyUvs(uvs, out) {\n out === void 0 && (out = uvs);\n const mat = this.mapCoord;\n for (let i = 0; i < uvs.length; i += 2) {\n const x = uvs[i], y = uvs[i + 1];\n out[i] = x * mat.a + y * mat.c + mat.tx, out[i + 1] = x * mat.b + y * mat.d + mat.ty;\n }\n return out;\n }\n /**\n * Updates matrices if texture was changed.\n * @param [forceUpdate=false] - if true, matrices will be updated any case\n * @returns - Whether or not it was updated\n */\n update(forceUpdate) {\n const tex = this._texture;\n if (!tex || !tex.valid || !forceUpdate && this._textureID === tex._updateID)\n return !1;\n this._textureID = tex._updateID, this._updateID++;\n const uvs = tex._uvs;\n this.mapCoord.set(uvs.x1 - uvs.x0, uvs.y1 - uvs.y0, uvs.x3 - uvs.x0, uvs.y3 - uvs.y0, uvs.x0, uvs.y0);\n const orig = tex.orig, trim = tex.trim;\n trim && (tempMat.set(\n orig.width / trim.width,\n 0,\n 0,\n orig.height / trim.height,\n -trim.x / trim.width,\n -trim.y / trim.height\n ), this.mapCoord.append(tempMat));\n const texBase = tex.baseTexture, frame = this.uClampFrame, margin = this.clampMargin / texBase.resolution, offset = this.clampOffset;\n return frame[0] = (tex._frame.x + margin + offset) / texBase.width, frame[1] = (tex._frame.y + margin + offset) / texBase.height, frame[2] = (tex._frame.x + tex._frame.width - margin + offset) / texBase.width, frame[3] = (tex._frame.y + tex._frame.height - margin + offset) / texBase.height, this.uClampOffset[0] = offset / texBase.realWidth, this.uClampOffset[1] = offset / texBase.realHeight, this.isSimple = tex._frame.width === texBase.width && tex._frame.height === texBase.height && tex.rotate === 0, !0;\n }\n}\nexport {\n TextureMatrix\n};\n//# sourceMappingURL=TextureMatrix.mjs.map\n","var fragment = `varying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform sampler2D mask;\nuniform float alpha;\nuniform float npmAlpha;\nuniform vec4 maskClamp;\n\nvoid main(void)\n{\n float clip = step(3.5,\n step(maskClamp.x, vMaskCoord.x) +\n step(maskClamp.y, vMaskCoord.y) +\n step(vMaskCoord.x, maskClamp.z) +\n step(vMaskCoord.y, maskClamp.w));\n\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 masky = texture2D(mask, vMaskCoord);\n float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);\n\n original *= (alphaMul * masky.r * alpha * clip);\n\n gl_FragColor = original;\n}\n`;\nexport {\n fragment as default\n};\n//# sourceMappingURL=spriteMaskFilter.frag.mjs.map\n","var vertex = `attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = aTextureCoord;\n vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\n}\n`;\nexport {\n vertex as default\n};\n//# sourceMappingURL=spriteMaskFilter.vert.mjs.map\n","import { Matrix } from \"@pixi/math\";\nimport { TextureMatrix } from \"../../textures/TextureMatrix.mjs\";\nimport { Filter } from \"../Filter.mjs\";\nimport fragment from \"./spriteMaskFilter.frag.mjs\";\nimport vertex from \"./spriteMaskFilter.vert.mjs\";\nclass SpriteMaskFilter extends Filter {\n /** @ignore */\n constructor(vertexSrc, fragmentSrc, uniforms) {\n let sprite = null;\n typeof vertexSrc != \"string\" && fragmentSrc === void 0 && uniforms === void 0 && (sprite = vertexSrc, vertexSrc = void 0, fragmentSrc = void 0, uniforms = void 0), super(vertexSrc || vertex, fragmentSrc || fragment, uniforms), this.maskSprite = sprite, this.maskMatrix = new Matrix();\n }\n /**\n * Sprite mask\n * @type {PIXI.DisplayObject}\n */\n get maskSprite() {\n return this._maskSprite;\n }\n set maskSprite(value) {\n this._maskSprite = value, this._maskSprite && (this._maskSprite.renderable = !1);\n }\n /**\n * Applies the filter\n * @param filterManager - The renderer to retrieve the filter from\n * @param input - The input render target.\n * @param output - The target to output to.\n * @param clearMode - Should the output be cleared before rendering to it.\n */\n apply(filterManager, input, output, clearMode) {\n const maskSprite = this._maskSprite, tex = maskSprite._texture;\n tex.valid && (tex.uvMatrix || (tex.uvMatrix = new TextureMatrix(tex, 0)), tex.uvMatrix.update(), this.uniforms.npmAlpha = tex.baseTexture.alphaMode ? 0 : 1, this.uniforms.mask = tex, this.uniforms.otherMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, maskSprite).prepend(tex.uvMatrix.mapCoord), this.uniforms.alpha = maskSprite.worldAlpha, this.uniforms.maskClamp = tex.uvMatrix.uClampFrame, filterManager.applyFilter(this, input, output, clearMode));\n }\n}\nexport {\n SpriteMaskFilter\n};\n//# sourceMappingURL=SpriteMaskFilter.mjs.map\n","import { MASK_TYPES } from \"@pixi/constants\";\nimport { Filter } from \"../filters/Filter.mjs\";\nclass MaskData {\n /**\n * Create MaskData\n * @param {PIXI.DisplayObject} [maskObject=null] - object that describes the mask\n */\n constructor(maskObject = null) {\n this.type = MASK_TYPES.NONE, this.autoDetect = !0, this.maskObject = maskObject || null, this.pooled = !1, this.isMaskData = !0, this.resolution = null, this.multisample = Filter.defaultMultisample, this.enabled = !0, this.colorMask = 15, this._filters = null, this._stencilCounter = 0, this._scissorCounter = 0, this._scissorRect = null, this._scissorRectLocal = null, this._colorMask = 15, this._target = null;\n }\n /**\n * The sprite mask filter.\n * If set to `null`, the default sprite mask filter is used.\n * @default null\n */\n get filter() {\n return this._filters ? this._filters[0] : null;\n }\n set filter(value) {\n value ? this._filters ? this._filters[0] = value : this._filters = [value] : this._filters = null;\n }\n /** Resets the mask data after popMask(). */\n reset() {\n this.pooled && (this.maskObject = null, this.type = MASK_TYPES.NONE, this.autoDetect = !0), this._target = null, this._scissorRectLocal = null;\n }\n /**\n * Copies counters from maskData above, called from pushMask().\n * @param maskAbove\n */\n copyCountersOrReset(maskAbove) {\n maskAbove ? (this._stencilCounter = maskAbove._stencilCounter, this._scissorCounter = maskAbove._scissorCounter, this._scissorRect = maskAbove._scissorRect) : (this._stencilCounter = 0, this._scissorCounter = 0, this._scissorRect = null);\n }\n}\nexport {\n MaskData\n};\n//# sourceMappingURL=MaskData.mjs.map\n","import { MASK_TYPES } from \"@pixi/constants\";\nimport { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { SpriteMaskFilter } from \"../filters/spriteMask/SpriteMaskFilter.mjs\";\nimport { MaskData } from \"./MaskData.mjs\";\nclass MaskSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.enableScissor = !0, this.alphaMaskPool = [], this.maskDataPool = [], this.maskStack = [], this.alphaMaskIndex = 0;\n }\n /**\n * Changes the mask stack that is used by this System.\n * @param maskStack - The mask stack\n */\n setMaskStack(maskStack) {\n this.maskStack = maskStack, this.renderer.scissor.setMaskStack(maskStack), this.renderer.stencil.setMaskStack(maskStack);\n }\n /**\n * Enables the mask and appends it to the current mask stack.\n *\n * NOTE: The batch renderer should be flushed beforehand to prevent pending renders from being masked.\n * @param {PIXI.DisplayObject} target - Display Object to push the mask to\n * @param {PIXI.MaskData|PIXI.Sprite|PIXI.Graphics|PIXI.DisplayObject} maskDataOrTarget - The masking data.\n */\n push(target, maskDataOrTarget) {\n let maskData = maskDataOrTarget;\n if (!maskData.isMaskData) {\n const d = this.maskDataPool.pop() || new MaskData();\n d.pooled = !0, d.maskObject = maskDataOrTarget, maskData = d;\n }\n const maskAbove = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null;\n if (maskData.copyCountersOrReset(maskAbove), maskData._colorMask = maskAbove ? maskAbove._colorMask : 15, maskData.autoDetect && this.detect(maskData), maskData._target = target, maskData.type !== MASK_TYPES.SPRITE && this.maskStack.push(maskData), maskData.enabled)\n switch (maskData.type) {\n case MASK_TYPES.SCISSOR:\n this.renderer.scissor.push(maskData);\n break;\n case MASK_TYPES.STENCIL:\n this.renderer.stencil.push(maskData);\n break;\n case MASK_TYPES.SPRITE:\n maskData.copyCountersOrReset(null), this.pushSpriteMask(maskData);\n break;\n case MASK_TYPES.COLOR:\n this.pushColorMask(maskData);\n break;\n default:\n break;\n }\n maskData.type === MASK_TYPES.SPRITE && this.maskStack.push(maskData);\n }\n /**\n * Removes the last mask from the mask stack and doesn't return it.\n *\n * NOTE: The batch renderer should be flushed beforehand to render the masked contents before the mask is removed.\n * @param {PIXI.IMaskTarget} target - Display Object to pop the mask from\n */\n pop(target) {\n const maskData = this.maskStack.pop();\n if (!(!maskData || maskData._target !== target)) {\n if (maskData.enabled)\n switch (maskData.type) {\n case MASK_TYPES.SCISSOR:\n this.renderer.scissor.pop(maskData);\n break;\n case MASK_TYPES.STENCIL:\n this.renderer.stencil.pop(maskData.maskObject);\n break;\n case MASK_TYPES.SPRITE:\n this.popSpriteMask(maskData);\n break;\n case MASK_TYPES.COLOR:\n this.popColorMask(maskData);\n break;\n default:\n break;\n }\n if (maskData.reset(), maskData.pooled && this.maskDataPool.push(maskData), this.maskStack.length !== 0) {\n const maskCurrent = this.maskStack[this.maskStack.length - 1];\n maskCurrent.type === MASK_TYPES.SPRITE && maskCurrent._filters && (maskCurrent._filters[0].maskSprite = maskCurrent.maskObject);\n }\n }\n }\n /**\n * Sets type of MaskData based on its maskObject.\n * @param maskData\n */\n detect(maskData) {\n const maskObject = maskData.maskObject;\n maskObject ? maskObject.isSprite ? maskData.type = MASK_TYPES.SPRITE : this.enableScissor && this.renderer.scissor.testScissor(maskData) ? maskData.type = MASK_TYPES.SCISSOR : maskData.type = MASK_TYPES.STENCIL : maskData.type = MASK_TYPES.COLOR;\n }\n /**\n * Applies the Mask and adds it to the current filter stack.\n * @param maskData - Sprite to be used as the mask.\n */\n pushSpriteMask(maskData) {\n const { maskObject } = maskData, target = maskData._target;\n let alphaMaskFilter = maskData._filters;\n alphaMaskFilter || (alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex], alphaMaskFilter || (alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new SpriteMaskFilter()])), alphaMaskFilter[0].resolution = maskData.resolution, alphaMaskFilter[0].multisample = maskData.multisample, alphaMaskFilter[0].maskSprite = maskObject;\n const stashFilterArea = target.filterArea;\n target.filterArea = maskObject.getBounds(!0), this.renderer.filter.push(target, alphaMaskFilter), target.filterArea = stashFilterArea, maskData._filters || this.alphaMaskIndex++;\n }\n /**\n * Removes the last filter from the filter stack and doesn't return it.\n * @param maskData - Sprite to be used as the mask.\n */\n popSpriteMask(maskData) {\n this.renderer.filter.pop(), maskData._filters ? maskData._filters[0].maskSprite = null : (this.alphaMaskIndex--, this.alphaMaskPool[this.alphaMaskIndex][0].maskSprite = null);\n }\n /**\n * Pushes the color mask.\n * @param maskData - The mask data\n */\n pushColorMask(maskData) {\n const currColorMask = maskData._colorMask, nextColorMask = maskData._colorMask = currColorMask & maskData.colorMask;\n nextColorMask !== currColorMask && this.renderer.gl.colorMask(\n (nextColorMask & 1) !== 0,\n (nextColorMask & 2) !== 0,\n (nextColorMask & 4) !== 0,\n (nextColorMask & 8) !== 0\n );\n }\n /**\n * Pops the color mask.\n * @param maskData - The mask data\n */\n popColorMask(maskData) {\n const currColorMask = maskData._colorMask, nextColorMask = this.maskStack.length > 0 ? this.maskStack[this.maskStack.length - 1]._colorMask : 15;\n nextColorMask !== currColorMask && this.renderer.gl.colorMask(\n (nextColorMask & 1) !== 0,\n (nextColorMask & 2) !== 0,\n (nextColorMask & 4) !== 0,\n (nextColorMask & 8) !== 0\n );\n }\n destroy() {\n this.renderer = null;\n }\n}\nMaskSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"mask\"\n};\nextensions.add(MaskSystem);\nexport {\n MaskSystem\n};\n//# sourceMappingURL=MaskSystem.mjs.map\n","class AbstractMaskSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.maskStack = [], this.glConst = 0;\n }\n /** Gets count of masks of certain type. */\n getStackLength() {\n return this.maskStack.length;\n }\n /**\n * Changes the mask stack that is used by this System.\n * @param {PIXI.MaskData[]} maskStack - The mask stack\n */\n setMaskStack(maskStack) {\n const { gl } = this.renderer, curStackLen = this.getStackLength();\n this.maskStack = maskStack;\n const newStackLen = this.getStackLength();\n newStackLen !== curStackLen && (newStackLen === 0 ? gl.disable(this.glConst) : (gl.enable(this.glConst), this._useCurrent()));\n }\n /**\n * Setup renderer to use the current mask data.\n * @private\n */\n _useCurrent() {\n }\n /** Destroys the mask stack. */\n destroy() {\n this.renderer = null, this.maskStack = null;\n }\n}\nexport {\n AbstractMaskSystem\n};\n//# sourceMappingURL=AbstractMaskSystem.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { Matrix, Rectangle } from \"@pixi/math\";\nimport { settings } from \"@pixi/settings\";\nimport { AbstractMaskSystem } from \"./AbstractMaskSystem.mjs\";\nconst tempMatrix = new Matrix(), rectPool = [], _ScissorSystem = class _ScissorSystem2 extends AbstractMaskSystem {\n /**\n * @param {PIXI.Renderer} renderer - The renderer this System works for.\n */\n constructor(renderer) {\n super(renderer), this.glConst = settings.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST;\n }\n getStackLength() {\n const maskData = this.maskStack[this.maskStack.length - 1];\n return maskData ? maskData._scissorCounter : 0;\n }\n /**\n * evaluates _boundsTransformed, _scissorRect for MaskData\n * @param maskData\n */\n calcScissorRect(maskData) {\n if (maskData._scissorRectLocal)\n return;\n const prevData = maskData._scissorRect, { maskObject } = maskData, { renderer } = this, renderTextureSystem = renderer.renderTexture, rect = maskObject.getBounds(!0, rectPool.pop() ?? new Rectangle());\n this.roundFrameToPixels(\n rect,\n renderTextureSystem.current ? renderTextureSystem.current.resolution : renderer.resolution,\n renderTextureSystem.sourceFrame,\n renderTextureSystem.destinationFrame,\n renderer.projection.transform\n ), prevData && rect.fit(prevData), maskData._scissorRectLocal = rect;\n }\n static isMatrixRotated(matrix) {\n if (!matrix)\n return !1;\n const { a, b, c, d } = matrix;\n return (Math.abs(b) > 1e-4 || Math.abs(c) > 1e-4) && (Math.abs(a) > 1e-4 || Math.abs(d) > 1e-4);\n }\n /**\n * Test, whether the object can be scissor mask with current renderer projection.\n * Calls \"calcScissorRect()\" if its true.\n * @param maskData - mask data\n * @returns whether Whether the object can be scissor mask\n */\n testScissor(maskData) {\n const { maskObject } = maskData;\n if (!maskObject.isFastRect || !maskObject.isFastRect() || _ScissorSystem2.isMatrixRotated(maskObject.worldTransform) || _ScissorSystem2.isMatrixRotated(this.renderer.projection.transform))\n return !1;\n this.calcScissorRect(maskData);\n const rect = maskData._scissorRectLocal;\n return rect.width > 0 && rect.height > 0;\n }\n roundFrameToPixels(frame, resolution, bindingSourceFrame, bindingDestinationFrame, transform) {\n _ScissorSystem2.isMatrixRotated(transform) || (transform = transform ? tempMatrix.copyFrom(transform) : tempMatrix.identity(), transform.translate(-bindingSourceFrame.x, -bindingSourceFrame.y).scale(\n bindingDestinationFrame.width / bindingSourceFrame.width,\n bindingDestinationFrame.height / bindingSourceFrame.height\n ).translate(bindingDestinationFrame.x, bindingDestinationFrame.y), this.renderer.filter.transformAABB(transform, frame), frame.fit(bindingDestinationFrame), frame.x = Math.round(frame.x * resolution), frame.y = Math.round(frame.y * resolution), frame.width = Math.round(frame.width * resolution), frame.height = Math.round(frame.height * resolution));\n }\n /**\n * Applies the Mask and adds it to the current stencil stack.\n * @author alvin\n * @param maskData - The mask data.\n */\n push(maskData) {\n maskData._scissorRectLocal || this.calcScissorRect(maskData);\n const { gl } = this.renderer;\n maskData._scissorRect || gl.enable(gl.SCISSOR_TEST), maskData._scissorCounter++, maskData._scissorRect = maskData._scissorRectLocal, this._useCurrent();\n }\n /**\n * This should be called after a mask is popped off the mask stack. It will rebind the scissor box to be latest with the\n * last mask in the stack.\n *\n * This can also be called when you directly modify the scissor box and want to restore PixiJS state.\n * @param maskData - The mask data.\n */\n pop(maskData) {\n const { gl } = this.renderer;\n maskData && rectPool.push(maskData._scissorRectLocal), this.getStackLength() > 0 ? this._useCurrent() : gl.disable(gl.SCISSOR_TEST);\n }\n /**\n * Setup renderer to use the current scissor data.\n * @private\n */\n _useCurrent() {\n const rect = this.maskStack[this.maskStack.length - 1]._scissorRect;\n let y;\n this.renderer.renderTexture.current ? y = rect.y : y = this.renderer.height - rect.height - rect.y, this.renderer.gl.scissor(rect.x, y, rect.width, rect.height);\n }\n};\n_ScissorSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"scissor\"\n};\nlet ScissorSystem = _ScissorSystem;\nextensions.add(ScissorSystem);\nexport {\n ScissorSystem\n};\n//# sourceMappingURL=ScissorSystem.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { settings } from \"@pixi/settings\";\nimport { AbstractMaskSystem } from \"./AbstractMaskSystem.mjs\";\nclass StencilSystem extends AbstractMaskSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n super(renderer), this.glConst = settings.ADAPTER.getWebGLRenderingContext().STENCIL_TEST;\n }\n getStackLength() {\n const maskData = this.maskStack[this.maskStack.length - 1];\n return maskData ? maskData._stencilCounter : 0;\n }\n /**\n * Applies the Mask and adds it to the current stencil stack.\n * @param maskData - The mask data\n */\n push(maskData) {\n const maskObject = maskData.maskObject, { gl } = this.renderer, prevMaskCount = maskData._stencilCounter;\n prevMaskCount === 0 && (this.renderer.framebuffer.forceStencil(), gl.clearStencil(0), gl.clear(gl.STENCIL_BUFFER_BIT), gl.enable(gl.STENCIL_TEST)), maskData._stencilCounter++;\n const colorMask = maskData._colorMask;\n colorMask !== 0 && (maskData._colorMask = 0, gl.colorMask(!1, !1, !1, !1)), gl.stencilFunc(gl.EQUAL, prevMaskCount, 4294967295), gl.stencilOp(gl.KEEP, gl.KEEP, gl.INCR), maskObject.renderable = !0, maskObject.render(this.renderer), this.renderer.batch.flush(), maskObject.renderable = !1, colorMask !== 0 && (maskData._colorMask = colorMask, gl.colorMask(\n (colorMask & 1) !== 0,\n (colorMask & 2) !== 0,\n (colorMask & 4) !== 0,\n (colorMask & 8) !== 0\n )), this._useCurrent();\n }\n /**\n * Pops stencil mask. MaskData is already removed from stack\n * @param {PIXI.DisplayObject} maskObject - object of popped mask data\n */\n pop(maskObject) {\n const gl = this.renderer.gl;\n if (this.getStackLength() === 0)\n gl.disable(gl.STENCIL_TEST);\n else {\n const maskData = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null, colorMask = maskData ? maskData._colorMask : 15;\n colorMask !== 0 && (maskData._colorMask = 0, gl.colorMask(!1, !1, !1, !1)), gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR), maskObject.renderable = !0, maskObject.render(this.renderer), this.renderer.batch.flush(), maskObject.renderable = !1, colorMask !== 0 && (maskData._colorMask = colorMask, gl.colorMask(\n (colorMask & 1) !== 0,\n (colorMask & 2) !== 0,\n (colorMask & 4) !== 0,\n (colorMask & 8) !== 0\n )), this._useCurrent();\n }\n }\n /**\n * Setup renderer to use the current stencil data.\n * @private\n */\n _useCurrent() {\n const gl = this.renderer.gl;\n gl.stencilFunc(gl.EQUAL, this.getStackLength(), 4294967295), gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);\n }\n}\nStencilSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"stencil\"\n};\nextensions.add(StencilSystem);\nexport {\n StencilSystem\n};\n//# sourceMappingURL=StencilSystem.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { deprecation } from \"@pixi/utils\";\nclass PluginSystem {\n constructor(renderer) {\n this.renderer = renderer, this.plugins = {}, Object.defineProperties(this.plugins, {\n extract: {\n enumerable: !1,\n get() {\n return deprecation(\"7.0.0\", \"renderer.plugins.extract has moved to renderer.extract\"), renderer.extract;\n }\n },\n prepare: {\n enumerable: !1,\n get() {\n return deprecation(\"7.0.0\", \"renderer.plugins.prepare has moved to renderer.prepare\"), renderer.prepare;\n }\n },\n interaction: {\n enumerable: !1,\n get() {\n return deprecation(\"7.0.0\", \"renderer.plugins.interaction has been deprecated, use renderer.events\"), renderer.events;\n }\n }\n });\n }\n /**\n * Initialize the plugins.\n * @protected\n */\n init() {\n const staticMap = this.rendererPlugins;\n for (const o in staticMap)\n this.plugins[o] = new staticMap[o](this.renderer);\n }\n destroy() {\n for (const o in this.plugins)\n this.plugins[o].destroy(), this.plugins[o] = null;\n }\n}\nPluginSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"_plugin\"\n};\nextensions.add(PluginSystem);\nexport {\n PluginSystem\n};\n//# sourceMappingURL=PluginSystem.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { Matrix } from \"@pixi/math\";\nclass ProjectionSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this.renderer = renderer, this.destinationFrame = null, this.sourceFrame = null, this.defaultFrame = null, this.projectionMatrix = new Matrix(), this.transform = null;\n }\n /**\n * Updates the projection-matrix based on the sourceFrame → destinationFrame mapping provided.\n *\n * NOTE: It is expected you call `renderer.framebuffer.setViewport(destinationFrame)` after this. This is because\n * the framebuffer viewport converts shader vertex output in normalized device coordinates to window coordinates.\n *\n * NOTE-2: {@link PIXI.RenderTextureSystem#bind} updates the projection-matrix when you bind a render-texture.\n * It is expected\n * that you dirty the current bindings when calling this manually.\n * @param destinationFrame - The rectangle in the render-target to render the contents into. If rendering to the canvas,\n * the origin is on the top-left; if rendering to a render-texture, the origin is on the bottom-left.\n * @param sourceFrame - The rectangle in world space that contains the contents being rendered.\n * @param resolution - The resolution of the render-target, which is the ratio of\n * world-space (or CSS) pixels to physical pixels.\n * @param root - Whether the render-target is the screen. This is required because rendering to textures\n * is y-flipped (i.e. upside down relative to the screen).\n */\n update(destinationFrame, sourceFrame, resolution, root) {\n this.destinationFrame = destinationFrame || this.destinationFrame || this.defaultFrame, this.sourceFrame = sourceFrame || this.sourceFrame || destinationFrame, this.calculateProjection(this.destinationFrame, this.sourceFrame, resolution, root), this.transform && this.projectionMatrix.append(this.transform);\n const renderer = this.renderer;\n renderer.globalUniforms.uniforms.projectionMatrix = this.projectionMatrix, renderer.globalUniforms.update(), renderer.shader.shader && renderer.shader.syncUniformGroup(renderer.shader.shader.uniforms.globals);\n }\n /**\n * Calculates the `projectionMatrix` to map points inside `sourceFrame` to inside `destinationFrame`.\n * @param _destinationFrame - The destination frame in the render-target.\n * @param sourceFrame - The source frame in world space.\n * @param _resolution - The render-target's resolution, i.e. ratio of CSS to physical pixels.\n * @param root - Whether rendering into the screen. Otherwise, if rendering to a framebuffer, the projection\n * is y-flipped.\n */\n calculateProjection(_destinationFrame, sourceFrame, _resolution, root) {\n const pm = this.projectionMatrix, sign = root ? -1 : 1;\n pm.identity(), pm.a = 1 / sourceFrame.width * 2, pm.d = sign * (1 / sourceFrame.height * 2), pm.tx = -1 - sourceFrame.x * pm.a, pm.ty = -sign - sourceFrame.y * pm.d;\n }\n /**\n * Sets the transform of the active render target to the given matrix.\n * @param _matrix - The transformation matrix\n */\n setTransform(_matrix) {\n }\n destroy() {\n this.renderer = null;\n }\n}\nProjectionSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"projection\"\n};\nextensions.add(ProjectionSystem);\nexport {\n ProjectionSystem\n};\n//# sourceMappingURL=ProjectionSystem.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { Transform, Rectangle, Matrix } from \"@pixi/math\";\nimport { RenderTexture } from \"./RenderTexture.mjs\";\nconst tempTransform = new Transform(), tempRect = new Rectangle();\nclass GenerateTextureSystem {\n constructor(renderer) {\n this.renderer = renderer, this._tempMatrix = new Matrix();\n }\n /**\n * A Useful function that returns a texture of the display object that can then be used to create sprites\n * This can be quite useful if your displayObject is complicated and needs to be reused multiple times.\n * @param displayObject - The displayObject the object will be generated from.\n * @param {IGenerateTextureOptions} options - Generate texture options.\n * @param {PIXI.Rectangle} options.region - The region of the displayObject, that shall be rendered,\n * if no region is specified, defaults to the local bounds of the displayObject.\n * @param {number} [options.resolution] - If not given, the renderer's resolution is used.\n * @param {PIXI.MSAA_QUALITY} [options.multisample] - If not given, the renderer's multisample is used.\n * @returns a shiny new texture of the display object passed in\n */\n generateTexture(displayObject, options) {\n const { region: manualRegion, ...textureOptions } = options || {}, region = manualRegion?.copyTo(tempRect) || displayObject.getLocalBounds(tempRect, !0), resolution = textureOptions.resolution || this.renderer.resolution;\n region.width = Math.max(region.width, 1 / resolution), region.height = Math.max(region.height, 1 / resolution), textureOptions.width = region.width, textureOptions.height = region.height, textureOptions.resolution = resolution, textureOptions.multisample ?? (textureOptions.multisample = this.renderer.multisample);\n const renderTexture = RenderTexture.create(textureOptions);\n this._tempMatrix.tx = -region.x, this._tempMatrix.ty = -region.y;\n const transform = displayObject.transform;\n return displayObject.transform = tempTransform, this.renderer.render(displayObject, {\n renderTexture,\n transform: this._tempMatrix,\n skipUpdateTransform: !!displayObject.parent,\n blit: !0\n }), displayObject.transform = transform, renderTexture;\n }\n destroy() {\n }\n}\nGenerateTextureSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"textureGenerator\"\n};\nextensions.add(GenerateTextureSystem);\nexport {\n GenerateTextureSystem\n};\n//# sourceMappingURL=GenerateTextureSystem.mjs.map\n","import { Color } from \"@pixi/color\";\nimport { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { Rectangle } from \"@pixi/math\";\nconst tempRect = new Rectangle(), tempRect2 = new Rectangle();\nclass RenderTextureSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.defaultMaskStack = [], this.current = null, this.sourceFrame = new Rectangle(), this.destinationFrame = new Rectangle(), this.viewportFrame = new Rectangle();\n }\n contextChange() {\n const attributes = this.renderer?.gl.getContextAttributes();\n this._rendererPremultipliedAlpha = !!(attributes && attributes.alpha && attributes.premultipliedAlpha);\n }\n /**\n * Bind the current render texture.\n * @param renderTexture - RenderTexture to bind, by default its `null` - the screen.\n * @param sourceFrame - Part of world that is mapped to the renderTexture.\n * @param destinationFrame - Part of renderTexture, by default it has the same size as sourceFrame.\n */\n bind(renderTexture = null, sourceFrame, destinationFrame) {\n const renderer = this.renderer;\n this.current = renderTexture;\n let baseTexture, framebuffer, resolution;\n renderTexture ? (baseTexture = renderTexture.baseTexture, resolution = baseTexture.resolution, sourceFrame || (tempRect.width = renderTexture.frame.width, tempRect.height = renderTexture.frame.height, sourceFrame = tempRect), destinationFrame || (tempRect2.x = renderTexture.frame.x, tempRect2.y = renderTexture.frame.y, tempRect2.width = sourceFrame.width, tempRect2.height = sourceFrame.height, destinationFrame = tempRect2), framebuffer = baseTexture.framebuffer) : (resolution = renderer.resolution, sourceFrame || (tempRect.width = renderer._view.screen.width, tempRect.height = renderer._view.screen.height, sourceFrame = tempRect), destinationFrame || (destinationFrame = tempRect, destinationFrame.width = sourceFrame.width, destinationFrame.height = sourceFrame.height));\n const viewportFrame = this.viewportFrame;\n viewportFrame.x = destinationFrame.x * resolution, viewportFrame.y = destinationFrame.y * resolution, viewportFrame.width = destinationFrame.width * resolution, viewportFrame.height = destinationFrame.height * resolution, renderTexture || (viewportFrame.y = renderer.view.height - (viewportFrame.y + viewportFrame.height)), viewportFrame.ceil(), this.renderer.framebuffer.bind(framebuffer, viewportFrame), this.renderer.projection.update(destinationFrame, sourceFrame, resolution, !framebuffer), renderTexture ? this.renderer.mask.setMaskStack(baseTexture.maskStack) : this.renderer.mask.setMaskStack(this.defaultMaskStack), this.sourceFrame.copyFrom(sourceFrame), this.destinationFrame.copyFrom(destinationFrame);\n }\n /**\n * Erases the render texture and fills the drawing area with a colour.\n * @param clearColor - The color as rgba, default to use the renderer backgroundColor\n * @param [mask=BUFFER_BITS.COLOR | BUFFER_BITS.DEPTH] - Bitwise OR of masks\n * that indicate the buffers to be cleared, by default COLOR and DEPTH buffers.\n */\n clear(clearColor, mask) {\n const fallbackColor = this.current ? this.current.baseTexture.clear : this.renderer.background.backgroundColor, color = Color.shared.setValue(clearColor || fallbackColor);\n (this.current && this.current.baseTexture.alphaMode > 0 || !this.current && this._rendererPremultipliedAlpha) && color.premultiply(color.alpha);\n const destinationFrame = this.destinationFrame, baseFrame = this.current ? this.current.baseTexture : this.renderer._view.screen, clearMask = destinationFrame.width !== baseFrame.width || destinationFrame.height !== baseFrame.height;\n if (clearMask) {\n let { x, y, width, height } = this.viewportFrame;\n x = Math.round(x), y = Math.round(y), width = Math.round(width), height = Math.round(height), this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST), this.renderer.gl.scissor(x, y, width, height);\n }\n this.renderer.framebuffer.clear(color.red, color.green, color.blue, color.alpha, mask), clearMask && this.renderer.scissor.pop();\n }\n resize() {\n this.bind(null);\n }\n /** Resets render-texture state. */\n reset() {\n this.bind(null);\n }\n destroy() {\n this.renderer = null;\n }\n}\nRenderTextureSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"renderTexture\"\n};\nextensions.add(RenderTextureSystem);\nexport {\n RenderTextureSystem\n};\n//# sourceMappingURL=RenderTextureSystem.mjs.map\n","class IGLUniformData {\n}\nclass GLProgram {\n /**\n * Makes a new Pixi program.\n * @param program - webgl program\n * @param uniformData - uniforms\n */\n constructor(program, uniformData) {\n this.program = program, this.uniformData = uniformData, this.uniformGroups = {}, this.uniformDirtyGroups = {}, this.uniformBufferBindings = {};\n }\n /** Destroys this program. */\n destroy() {\n this.uniformData = null, this.uniformGroups = null, this.uniformDirtyGroups = null, this.uniformBufferBindings = null, this.program = null;\n }\n}\nexport {\n GLProgram,\n IGLUniformData\n};\n//# sourceMappingURL=GLProgram.mjs.map\n","import { mapSize } from \"./mapSize.mjs\";\nimport { mapType } from \"./mapType.mjs\";\nfunction getAttributeData(program, gl) {\n const attributes = {}, totalAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < totalAttributes; i++) {\n const attribData = gl.getActiveAttrib(program, i);\n if (attribData.name.startsWith(\"gl_\"))\n continue;\n const type = mapType(gl, attribData.type), data = {\n type,\n name: attribData.name,\n size: mapSize(type),\n location: gl.getAttribLocation(program, attribData.name)\n };\n attributes[attribData.name] = data;\n }\n return attributes;\n}\nexport {\n getAttributeData\n};\n//# sourceMappingURL=getAttributeData.mjs.map\n","import { defaultValue } from \"./defaultValue.mjs\";\nimport { mapType } from \"./mapType.mjs\";\nfunction getUniformData(program, gl) {\n const uniforms = {}, totalUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n for (let i = 0; i < totalUniforms; i++) {\n const uniformData = gl.getActiveUniform(program, i), name = uniformData.name.replace(/\\[.*?\\]$/, \"\"), isArray = !!uniformData.name.match(/\\[.*?\\]$/), type = mapType(gl, uniformData.type);\n uniforms[name] = {\n name,\n index: i,\n type,\n size: uniformData.size,\n isArray,\n value: defaultValue(type, uniformData.size)\n };\n }\n return uniforms;\n}\nexport {\n getUniformData\n};\n//# sourceMappingURL=getUniformData.mjs.map\n","import { GLProgram } from \"../GLProgram.mjs\";\nimport { compileShader } from \"./compileShader.mjs\";\nimport { defaultValue } from \"./defaultValue.mjs\";\nimport { getAttributeData } from \"./getAttributeData.mjs\";\nimport { getUniformData } from \"./getUniformData.mjs\";\nimport { logProgramError } from \"./logProgramError.mjs\";\nfunction generateProgram(gl, program) {\n const glVertShader = compileShader(gl, gl.VERTEX_SHADER, program.vertexSrc), glFragShader = compileShader(gl, gl.FRAGMENT_SHADER, program.fragmentSrc), webGLProgram = gl.createProgram();\n gl.attachShader(webGLProgram, glVertShader), gl.attachShader(webGLProgram, glFragShader);\n const transformFeedbackVaryings = program.extra?.transformFeedbackVaryings;\n if (transformFeedbackVaryings && (typeof gl.transformFeedbackVaryings != \"function\" ? console.warn(\"TransformFeedback is not supported but TransformFeedbackVaryings are given.\") : gl.transformFeedbackVaryings(\n webGLProgram,\n transformFeedbackVaryings.names,\n transformFeedbackVaryings.bufferMode === \"separate\" ? gl.SEPARATE_ATTRIBS : gl.INTERLEAVED_ATTRIBS\n )), gl.linkProgram(webGLProgram), gl.getProgramParameter(webGLProgram, gl.LINK_STATUS) || logProgramError(gl, webGLProgram, glVertShader, glFragShader), program.attributeData = getAttributeData(webGLProgram, gl), program.uniformData = getUniformData(webGLProgram, gl), !/^[ \\t]*#[ \\t]*version[ \\t]+300[ \\t]+es[ \\t]*$/m.test(program.vertexSrc)) {\n const keys = Object.keys(program.attributeData);\n keys.sort((a, b) => a > b ? 1 : -1);\n for (let i = 0; i < keys.length; i++)\n program.attributeData[keys[i]].location = i, gl.bindAttribLocation(webGLProgram, i, keys[i]);\n gl.linkProgram(webGLProgram);\n }\n gl.deleteShader(glVertShader), gl.deleteShader(glFragShader);\n const uniformData = {};\n for (const i in program.uniformData) {\n const data = program.uniformData[i];\n uniformData[i] = {\n location: gl.getUniformLocation(webGLProgram, i),\n value: defaultValue(data.type, data.size)\n };\n }\n return new GLProgram(webGLProgram, uniformData);\n}\nexport {\n generateProgram\n};\n//# sourceMappingURL=generateProgram.mjs.map\n","import \"./index.mjs\";\nimport { uniformParsers } from \"./uniformParsers.mjs\";\nimport { mapSize } from \"./mapSize.mjs\";\nfunction uboUpdate(_ud, _uv, _renderer, _syncData, buffer) {\n _renderer.buffer.update(buffer);\n}\nconst UBO_TO_SINGLE_SETTERS = {\n float: `\n data[offset] = v;\n `,\n vec2: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n `,\n vec3: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n\n `,\n vec4: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n data[offset+3] = v[3];\n `,\n mat2: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n\n data[offset+4] = v[2];\n data[offset+5] = v[3];\n `,\n mat3: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];\n `,\n mat4: `\n for(var i = 0; i < 16; i++)\n {\n data[offset + i] = v[i];\n }\n `\n}, GLSL_TO_STD40_SIZE = {\n float: 4,\n vec2: 8,\n vec3: 12,\n vec4: 16,\n int: 4,\n ivec2: 8,\n ivec3: 12,\n ivec4: 16,\n uint: 4,\n uvec2: 8,\n uvec3: 12,\n uvec4: 16,\n bool: 4,\n bvec2: 8,\n bvec3: 12,\n bvec4: 16,\n mat2: 16 * 2,\n mat3: 16 * 3,\n mat4: 16 * 4\n};\nfunction createUBOElements(uniformData) {\n const uboElements = uniformData.map((data) => ({\n data,\n offset: 0,\n dataLen: 0,\n dirty: 0\n }));\n let size = 0, chunkSize = 0, offset = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n if (size = GLSL_TO_STD40_SIZE[uboElement.data.type], uboElement.data.size > 1 && (size = Math.max(size, 16) * uboElement.data.size), uboElement.dataLen = size, chunkSize % size !== 0 && chunkSize < 16) {\n const lineUpValue = chunkSize % size % 16;\n chunkSize += lineUpValue, offset += lineUpValue;\n }\n chunkSize + size > 16 ? (offset = Math.ceil(offset / 16) * 16, uboElement.offset = offset, offset += size, chunkSize = size) : (uboElement.offset = offset, chunkSize += size, offset += size);\n }\n return offset = Math.ceil(offset / 16) * 16, { uboElements, size: offset };\n}\nfunction getUBOData(uniforms, uniformData) {\n const usedUniformDatas = [];\n for (const i in uniforms)\n uniformData[i] && usedUniformDatas.push(uniformData[i]);\n return usedUniformDatas.sort((a, b) => a.index - b.index), usedUniformDatas;\n}\nfunction generateUniformBufferSync(group, uniformData) {\n if (!group.autoManage)\n return { size: 0, syncFunc: uboUpdate };\n const usedUniformDatas = getUBOData(group.uniforms, uniformData), { uboElements, size } = createUBOElements(usedUniformDatas), funcFragments = [`\n var v = null;\n var v2 = null;\n var cv = null;\n var t = 0;\n var gl = renderer.gl\n var index = 0;\n var data = buffer.data;\n `];\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i], uniform = group.uniforms[uboElement.data.name], name = uboElement.data.name;\n let parsed = !1;\n for (let j = 0; j < uniformParsers.length; j++) {\n const uniformParser = uniformParsers[j];\n if (uniformParser.codeUbo && uniformParser.test(uboElement.data, uniform)) {\n funcFragments.push(\n `offset = ${uboElement.offset / 4};`,\n uniformParsers[j].codeUbo(uboElement.data.name, uniform)\n ), parsed = !0;\n break;\n }\n }\n if (!parsed)\n if (uboElement.data.size > 1) {\n const size2 = mapSize(uboElement.data.type), rowSize = Math.max(GLSL_TO_STD40_SIZE[uboElement.data.type] / 16, 1), elementSize = size2 / rowSize, remainder = (4 - elementSize % 4) % 4;\n funcFragments.push(`\n cv = ud.${name}.value;\n v = uv.${name};\n offset = ${uboElement.offset / 4};\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * rowSize}; i++)\n {\n for(var j = 0; j < ${elementSize}; j++)\n {\n data[offset++] = v[t++];\n }\n offset += ${remainder};\n }\n\n `);\n } else {\n const template = UBO_TO_SINGLE_SETTERS[uboElement.data.type];\n funcFragments.push(`\n cv = ud.${name}.value;\n v = uv.${name};\n offset = ${uboElement.offset / 4};\n ${template};\n `);\n }\n }\n return funcFragments.push(`\n renderer.buffer.update(buffer);\n `), {\n size,\n // eslint-disable-next-line no-new-func\n syncFunc: new Function(\n \"ud\",\n \"uv\",\n \"renderer\",\n \"syncData\",\n \"buffer\",\n funcFragments.join(`\n`)\n )\n };\n}\nexport {\n createUBOElements,\n generateUniformBufferSync,\n getUBOData\n};\n//# sourceMappingURL=generateUniformBufferSync.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/extensions\";\nimport \"./utils/index.mjs\";\nimport { generateProgram } from \"./utils/generateProgram.mjs\";\nimport { generateUniformBufferSync } from \"./utils/generateUniformBufferSync.mjs\";\nimport { unsafeEvalSupported } from \"./utils/unsafeEvalSupported.mjs\";\nimport { generateUniformsSync } from \"./utils/generateUniformsSync.mjs\";\nlet UID = 0;\nconst defaultSyncData = { textureCount: 0, uboCount: 0 };\nclass ShaderSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this.destroyed = !1, this.renderer = renderer, this.systemCheck(), this.gl = null, this.shader = null, this.program = null, this.cache = {}, this._uboCache = {}, this.id = UID++;\n }\n /**\n * Overrideable function by `@pixi/unsafe-eval` to silence\n * throwing an error if platform doesn't support unsafe-evals.\n * @private\n */\n systemCheck() {\n if (!unsafeEvalSupported())\n throw new Error(\"Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.\");\n }\n contextChange(gl) {\n this.gl = gl, this.reset();\n }\n /**\n * Changes the current shader to the one given in parameter.\n * @param shader - the new shader\n * @param dontSync - false if the shader should automatically sync its uniforms.\n * @returns the glProgram that belongs to the shader.\n */\n bind(shader, dontSync) {\n shader.disposeRunner.add(this), shader.uniforms.globals = this.renderer.globalUniforms;\n const program = shader.program, glProgram = program.glPrograms[this.renderer.CONTEXT_UID] || this.generateProgram(shader);\n return this.shader = shader, this.program !== program && (this.program = program, this.gl.useProgram(glProgram.program)), dontSync || (defaultSyncData.textureCount = 0, defaultSyncData.uboCount = 0, this.syncUniformGroup(shader.uniformGroup, defaultSyncData)), glProgram;\n }\n /**\n * Uploads the uniforms values to the currently bound shader.\n * @param uniforms - the uniforms values that be applied to the current shader\n */\n setUniforms(uniforms) {\n const shader = this.shader.program, glProgram = shader.glPrograms[this.renderer.CONTEXT_UID];\n shader.syncUniforms(glProgram.uniformData, uniforms, this.renderer);\n }\n /* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n /**\n * Syncs uniforms on the group\n * @param group - the uniform group to sync\n * @param syncData - this is data that is passed to the sync function and any nested sync functions\n */\n syncUniformGroup(group, syncData) {\n const glProgram = this.getGlProgram();\n (!group.static || group.dirtyId !== glProgram.uniformDirtyGroups[group.id]) && (glProgram.uniformDirtyGroups[group.id] = group.dirtyId, this.syncUniforms(group, glProgram, syncData));\n }\n /**\n * Overrideable by the @pixi/unsafe-eval package to use static syncUniforms instead.\n * @param group\n * @param glProgram\n * @param syncData\n */\n syncUniforms(group, glProgram, syncData) {\n (group.syncUniforms[this.shader.program.id] || this.createSyncGroups(group))(glProgram.uniformData, group.uniforms, this.renderer, syncData);\n }\n createSyncGroups(group) {\n const id = this.getSignature(group, this.shader.program.uniformData, \"u\");\n return this.cache[id] || (this.cache[id] = generateUniformsSync(group, this.shader.program.uniformData)), group.syncUniforms[this.shader.program.id] = this.cache[id], group.syncUniforms[this.shader.program.id];\n }\n /**\n * Syncs uniform buffers\n * @param group - the uniform buffer group to sync\n * @param name - the name of the uniform buffer\n */\n syncUniformBufferGroup(group, name) {\n const glProgram = this.getGlProgram();\n if (!group.static || group.dirtyId !== 0 || !glProgram.uniformGroups[group.id]) {\n group.dirtyId = 0;\n const syncFunc = glProgram.uniformGroups[group.id] || this.createSyncBufferGroup(group, glProgram, name);\n group.buffer.update(), syncFunc(\n glProgram.uniformData,\n group.uniforms,\n this.renderer,\n defaultSyncData,\n group.buffer\n );\n }\n this.renderer.buffer.bindBufferBase(group.buffer, glProgram.uniformBufferBindings[name]);\n }\n /**\n * Will create a function that uploads a uniform buffer using the STD140 standard.\n * The upload function will then be cached for future calls\n * If a group is manually managed, then a simple upload function is generated\n * @param group - the uniform buffer group to sync\n * @param glProgram - the gl program to attach the uniform bindings to\n * @param name - the name of the uniform buffer (must exist on the shader)\n */\n createSyncBufferGroup(group, glProgram, name) {\n const { gl } = this.renderer;\n this.renderer.buffer.bind(group.buffer);\n const uniformBlockIndex = this.gl.getUniformBlockIndex(glProgram.program, name);\n glProgram.uniformBufferBindings[name] = this.shader.uniformBindCount, gl.uniformBlockBinding(glProgram.program, uniformBlockIndex, this.shader.uniformBindCount), this.shader.uniformBindCount++;\n const id = this.getSignature(group, this.shader.program.uniformData, \"ubo\");\n let uboData = this._uboCache[id];\n if (uboData || (uboData = this._uboCache[id] = generateUniformBufferSync(group, this.shader.program.uniformData)), group.autoManage) {\n const data = new Float32Array(uboData.size / 4);\n group.buffer.update(data);\n }\n return glProgram.uniformGroups[group.id] = uboData.syncFunc, glProgram.uniformGroups[group.id];\n }\n /**\n * Takes a uniform group and data and generates a unique signature for them.\n * @param group - The uniform group to get signature of\n * @param group.uniforms\n * @param uniformData - Uniform information generated by the shader\n * @param preFix\n * @returns Unique signature of the uniform group\n */\n getSignature(group, uniformData, preFix) {\n const uniforms = group.uniforms, strings = [`${preFix}-`];\n for (const i in uniforms)\n strings.push(i), uniformData[i] && strings.push(uniformData[i].type);\n return strings.join(\"-\");\n }\n /**\n * Returns the underlying GLShade rof the currently bound shader.\n *\n * This can be handy for when you to have a little more control over the setting of your uniforms.\n * @returns The glProgram for the currently bound Shader for this context\n */\n getGlProgram() {\n return this.shader ? this.shader.program.glPrograms[this.renderer.CONTEXT_UID] : null;\n }\n /**\n * Generates a glProgram version of the Shader provided.\n * @param shader - The shader that the glProgram will be based on.\n * @returns A shiny new glProgram!\n */\n generateProgram(shader) {\n const gl = this.gl, program = shader.program, glProgram = generateProgram(gl, program);\n return program.glPrograms[this.renderer.CONTEXT_UID] = glProgram, glProgram;\n }\n /** Resets ShaderSystem state, does not affect WebGL state. */\n reset() {\n this.program = null, this.shader = null;\n }\n /**\n * Disposes shader.\n * If disposing one equals with current shader, set current as null.\n * @param shader - Shader object\n */\n disposeShader(shader) {\n this.shader === shader && (this.shader = null);\n }\n /** Destroys this System and removes all its textures. */\n destroy() {\n this.renderer = null, this.destroyed = !0;\n }\n}\nShaderSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"shader\"\n};\nextensions.add(ShaderSystem);\nexport {\n ShaderSystem\n};\n//# sourceMappingURL=ShaderSystem.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/extensions\";\nclass StartupSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n /**\n * It all starts here! This initiates every system, passing in the options for any system by name.\n * @param options - the config for the renderer and all its systems\n */\n run(options) {\n const { renderer } = this;\n renderer.runners.init.emit(renderer.options), options.hello && console.log(`PixiJS 7.4.0 - ${renderer.rendererLogId} - https://pixijs.com`), renderer.resize(renderer.screen.width, renderer.screen.height);\n }\n destroy() {\n }\n}\nStartupSystem.defaultOptions = {\n /**\n * {@link PIXI.IRendererOptions.hello}\n * @default false\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n hello: !1\n}, /** @ignore */\nStartupSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"startup\"\n};\nextensions.add(StartupSystem);\nexport {\n StartupSystem\n};\n//# sourceMappingURL=StartupSystem.mjs.map\n","import { BLEND_MODES } from \"@pixi/constants\";\nfunction mapWebGLBlendModesToPixi(gl, array = []) {\n return array[BLEND_MODES.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.ADD] = [gl.ONE, gl.ONE], array[BLEND_MODES.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.SCREEN] = [gl.ONE, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.NONE] = [0, 0], array[BLEND_MODES.NORMAL_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.ADD_NPM] = [gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE], array[BLEND_MODES.SCREEN_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.SRC_IN] = [gl.DST_ALPHA, gl.ZERO], array[BLEND_MODES.SRC_OUT] = [gl.ONE_MINUS_DST_ALPHA, gl.ZERO], array[BLEND_MODES.SRC_ATOP] = [gl.DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.DST_OVER] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE], array[BLEND_MODES.DST_IN] = [gl.ZERO, gl.SRC_ALPHA], array[BLEND_MODES.DST_OUT] = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.DST_ATOP] = [gl.ONE_MINUS_DST_ALPHA, gl.SRC_ALPHA], array[BLEND_MODES.XOR] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA], array[BLEND_MODES.SUBTRACT] = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.FUNC_REVERSE_SUBTRACT, gl.FUNC_ADD], array;\n}\nexport {\n mapWebGLBlendModesToPixi\n};\n//# sourceMappingURL=mapWebGLBlendModesToPixi.mjs.map\n","import { BLEND_MODES } from \"@pixi/constants\";\nimport { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { State } from \"./State.mjs\";\nimport { mapWebGLBlendModesToPixi } from \"./utils/mapWebGLBlendModesToPixi.mjs\";\nconst BLEND = 0, OFFSET = 1, CULLING = 2, DEPTH_TEST = 3, WINDING = 4, DEPTH_MASK = 5, _StateSystem = class _StateSystem2 {\n constructor() {\n this.gl = null, this.stateId = 0, this.polygonOffset = 0, this.blendMode = BLEND_MODES.NONE, this._blendEq = !1, this.map = [], this.map[BLEND] = this.setBlend, this.map[OFFSET] = this.setOffset, this.map[CULLING] = this.setCullFace, this.map[DEPTH_TEST] = this.setDepthTest, this.map[WINDING] = this.setFrontFace, this.map[DEPTH_MASK] = this.setDepthMask, this.checks = [], this.defaultState = new State(), this.defaultState.blend = !0;\n }\n contextChange(gl) {\n this.gl = gl, this.blendModes = mapWebGLBlendModesToPixi(gl), this.set(this.defaultState), this.reset();\n }\n /**\n * Sets the current state\n * @param {*} state - The state to set.\n */\n set(state) {\n if (state = state || this.defaultState, this.stateId !== state.data) {\n let diff = this.stateId ^ state.data, i = 0;\n for (; diff; )\n diff & 1 && this.map[i].call(this, !!(state.data & 1 << i)), diff = diff >> 1, i++;\n this.stateId = state.data;\n }\n for (let i = 0; i < this.checks.length; i++)\n this.checks[i](this, state);\n }\n /**\n * Sets the state, when previous state is unknown.\n * @param {*} state - The state to set\n */\n forceState(state) {\n state = state || this.defaultState;\n for (let i = 0; i < this.map.length; i++)\n this.map[i].call(this, !!(state.data & 1 << i));\n for (let i = 0; i < this.checks.length; i++)\n this.checks[i](this, state);\n this.stateId = state.data;\n }\n /**\n * Sets whether to enable or disable blending.\n * @param value - Turn on or off WebGl blending.\n */\n setBlend(value) {\n this.updateCheck(_StateSystem2.checkBlendMode, value), this.gl[value ? \"enable\" : \"disable\"](this.gl.BLEND);\n }\n /**\n * Sets whether to enable or disable polygon offset fill.\n * @param value - Turn on or off webgl polygon offset testing.\n */\n setOffset(value) {\n this.updateCheck(_StateSystem2.checkPolygonOffset, value), this.gl[value ? \"enable\" : \"disable\"](this.gl.POLYGON_OFFSET_FILL);\n }\n /**\n * Sets whether to enable or disable depth test.\n * @param value - Turn on or off webgl depth testing.\n */\n setDepthTest(value) {\n this.gl[value ? \"enable\" : \"disable\"](this.gl.DEPTH_TEST);\n }\n /**\n * Sets whether to enable or disable depth mask.\n * @param value - Turn on or off webgl depth mask.\n */\n setDepthMask(value) {\n this.gl.depthMask(value);\n }\n /**\n * Sets whether to enable or disable cull face.\n * @param {boolean} value - Turn on or off webgl cull face.\n */\n setCullFace(value) {\n this.gl[value ? \"enable\" : \"disable\"](this.gl.CULL_FACE);\n }\n /**\n * Sets the gl front face.\n * @param {boolean} value - true is clockwise and false is counter-clockwise\n */\n setFrontFace(value) {\n this.gl.frontFace(this.gl[value ? \"CW\" : \"CCW\"]);\n }\n /**\n * Sets the blend mode.\n * @param {number} value - The blend mode to set to.\n */\n setBlendMode(value) {\n if (value === this.blendMode)\n return;\n this.blendMode = value;\n const mode = this.blendModes[value], gl = this.gl;\n mode.length === 2 ? gl.blendFunc(mode[0], mode[1]) : gl.blendFuncSeparate(mode[0], mode[1], mode[2], mode[3]), mode.length === 6 ? (this._blendEq = !0, gl.blendEquationSeparate(mode[4], mode[5])) : this._blendEq && (this._blendEq = !1, gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD));\n }\n /**\n * Sets the polygon offset.\n * @param {number} value - the polygon offset\n * @param {number} scale - the polygon offset scale\n */\n setPolygonOffset(value, scale) {\n this.gl.polygonOffset(value, scale);\n }\n // used\n /** Resets all the logic and disables the VAOs. */\n reset() {\n this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, !1), this.forceState(this.defaultState), this._blendEq = !0, this.blendMode = -1, this.setBlendMode(0);\n }\n /**\n * Checks to see which updates should be checked based on which settings have been activated.\n *\n * For example, if blend is enabled then we should check the blend modes each time the state is changed\n * or if polygon fill is activated then we need to check if the polygon offset changes.\n * The idea is that we only check what we have too.\n * @param func - the checking function to add or remove\n * @param value - should the check function be added or removed.\n */\n updateCheck(func, value) {\n const index = this.checks.indexOf(func);\n value && index === -1 ? this.checks.push(func) : !value && index !== -1 && this.checks.splice(index, 1);\n }\n /**\n * A private little wrapper function that we call to check the blend mode.\n * @param system - the System to perform the state check on\n * @param state - the state that the blendMode will pulled from\n */\n static checkBlendMode(system, state) {\n system.setBlendMode(state.blendMode);\n }\n /**\n * A private little wrapper function that we call to check the polygon offset.\n * @param system - the System to perform the state check on\n * @param state - the state that the blendMode will pulled from\n */\n static checkPolygonOffset(system, state) {\n system.setPolygonOffset(1, state.polygonOffset);\n }\n /**\n * @ignore\n */\n destroy() {\n this.gl = null;\n }\n};\n_StateSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"state\"\n};\nlet StateSystem = _StateSystem;\nextensions.add(StateSystem);\nexport {\n StateSystem\n};\n//# sourceMappingURL=StateSystem.mjs.map\n","import { Runner } from \"@pixi/runner\";\nimport { EventEmitter } from \"@pixi/utils\";\nclass SystemManager extends EventEmitter {\n constructor() {\n super(...arguments), this.runners = {}, this._systemsHash = {};\n }\n /**\n * Set up a system with a collection of SystemClasses and runners.\n * Systems are attached dynamically to this class when added.\n * @param config - the config for the system manager\n */\n setup(config) {\n this.addRunners(...config.runners);\n const priority = (config.priority ?? []).filter((key) => config.systems[key]), orderByPriority = [\n ...priority,\n ...Object.keys(config.systems).filter((key) => !priority.includes(key))\n ];\n for (const i of orderByPriority)\n this.addSystem(config.systems[i], i);\n }\n /**\n * Create a bunch of runners based of a collection of ids\n * @param runnerIds - the runner ids to add\n */\n addRunners(...runnerIds) {\n runnerIds.forEach((runnerId) => {\n this.runners[runnerId] = new Runner(runnerId);\n });\n }\n /**\n * Add a new system to the renderer.\n * @param ClassRef - Class reference\n * @param name - Property name for system, if not specified\n * will use a static `name` property on the class itself. This\n * name will be assigned as s property on the Renderer so make\n * sure it doesn't collide with properties on Renderer.\n * @returns Return instance of renderer\n */\n addSystem(ClassRef, name) {\n const system = new ClassRef(this);\n if (this[name])\n throw new Error(`Whoops! The name \"${name}\" is already in use`);\n this[name] = system, this._systemsHash[name] = system;\n for (const i in this.runners)\n this.runners[i].add(system);\n return this;\n }\n /**\n * A function that will run a runner and call the runners function but pass in different options\n * to each system based on there name.\n *\n * E.g. If you have two systems added called `systemA` and `systemB` you could call do the following:\n *\n * ```js\n * system.emitWithCustomOptions(init, {\n * systemA: {...optionsForA},\n * systemB: {...optionsForB},\n * });\n * ```\n *\n * `init` would be called on system A passing `optionsForA` and on system B passing `optionsForB`.\n * @param runner - the runner to target\n * @param options - key value options for each system\n */\n emitWithCustomOptions(runner, options) {\n const systemHashKeys = Object.keys(this._systemsHash);\n runner.items.forEach((system) => {\n const systemName = systemHashKeys.find((systemId) => this._systemsHash[systemId] === system);\n system[runner.name](options[systemName]);\n });\n }\n /** destroy the all runners and systems. Its apps job to */\n destroy() {\n Object.values(this.runners).forEach((runner) => {\n runner.destroy();\n }), this._systemsHash = {};\n }\n // TODO implement!\n // removeSystem(ClassRef: ISystemConstructor, name: string): void\n // {\n // }\n}\nexport {\n SystemManager\n};\n//# sourceMappingURL=SystemManager.mjs.map\n","import { GC_MODES } from \"@pixi/constants\";\nimport { ExtensionType, extensions } from \"@pixi/extensions\";\nconst _TextureGCSystem = class _TextureGCSystem2 {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this.renderer = renderer, this.count = 0, this.checkCount = 0, this.maxIdle = _TextureGCSystem2.defaultMaxIdle, this.checkCountMax = _TextureGCSystem2.defaultCheckCountMax, this.mode = _TextureGCSystem2.defaultMode;\n }\n /**\n * Checks to see when the last time a texture was used.\n * If the texture has not been used for a specified amount of time, it will be removed from the GPU.\n */\n postrender() {\n this.renderer.objectRenderer.renderingToScreen && (this.count++, this.mode !== GC_MODES.MANUAL && (this.checkCount++, this.checkCount > this.checkCountMax && (this.checkCount = 0, this.run())));\n }\n /**\n * Checks to see when the last time a texture was used.\n * If the texture has not been used for a specified amount of time, it will be removed from the GPU.\n */\n run() {\n const tm = this.renderer.texture, managedTextures = tm.managedTextures;\n let wasRemoved = !1;\n for (let i = 0; i < managedTextures.length; i++) {\n const texture = managedTextures[i];\n texture.resource && this.count - texture.touched > this.maxIdle && (tm.destroyTexture(texture, !0), managedTextures[i] = null, wasRemoved = !0);\n }\n if (wasRemoved) {\n let j = 0;\n for (let i = 0; i < managedTextures.length; i++)\n managedTextures[i] !== null && (managedTextures[j++] = managedTextures[i]);\n managedTextures.length = j;\n }\n }\n /**\n * Removes all the textures within the specified displayObject and its children from the GPU.\n * @param {PIXI.DisplayObject} displayObject - the displayObject to remove the textures from.\n */\n unload(displayObject) {\n const tm = this.renderer.texture, texture = displayObject._texture;\n texture && !texture.framebuffer && tm.destroyTexture(texture);\n for (let i = displayObject.children.length - 1; i >= 0; i--)\n this.unload(displayObject.children[i]);\n }\n destroy() {\n this.renderer = null;\n }\n};\n_TextureGCSystem.defaultMode = GC_MODES.AUTO, /**\n* Default maximum idle frames before a texture is destroyed by garbage collection.\n* @static\n* @default 3600\n* @see PIXI.TextureGCSystem#maxIdle\n*/\n_TextureGCSystem.defaultMaxIdle = 60 * 60, /**\n* Default frames between two garbage collections.\n* @static\n* @default 600\n* @see PIXI.TextureGCSystem#checkCountMax\n*/\n_TextureGCSystem.defaultCheckCountMax = 60 * 10, /** @ignore */\n_TextureGCSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"textureGC\"\n};\nlet TextureGCSystem = _TextureGCSystem;\nextensions.add(TextureGCSystem);\nexport {\n TextureGCSystem\n};\n//# sourceMappingURL=TextureGCSystem.mjs.map\n","import { TYPES, FORMATS } from \"@pixi/constants\";\nclass GLTexture {\n constructor(texture) {\n this.texture = texture, this.width = -1, this.height = -1, this.dirtyId = -1, this.dirtyStyleId = -1, this.mipmap = !1, this.wrapMode = 33071, this.type = TYPES.UNSIGNED_BYTE, this.internalFormat = FORMATS.RGBA, this.samplerType = 0;\n }\n}\nexport {\n GLTexture\n};\n//# sourceMappingURL=GLTexture.mjs.map\n","import { SAMPLER_TYPES } from \"@pixi/constants\";\nfunction mapInternalFormatToSamplerType(gl) {\n let table;\n return \"WebGL2RenderingContext\" in globalThis && gl instanceof globalThis.WebGL2RenderingContext ? table = {\n [gl.RGB]: SAMPLER_TYPES.FLOAT,\n [gl.RGBA]: SAMPLER_TYPES.FLOAT,\n [gl.ALPHA]: SAMPLER_TYPES.FLOAT,\n [gl.LUMINANCE]: SAMPLER_TYPES.FLOAT,\n [gl.LUMINANCE_ALPHA]: SAMPLER_TYPES.FLOAT,\n [gl.R8]: SAMPLER_TYPES.FLOAT,\n [gl.R8_SNORM]: SAMPLER_TYPES.FLOAT,\n [gl.RG8]: SAMPLER_TYPES.FLOAT,\n [gl.RG8_SNORM]: SAMPLER_TYPES.FLOAT,\n [gl.RGB8]: SAMPLER_TYPES.FLOAT,\n [gl.RGB8_SNORM]: SAMPLER_TYPES.FLOAT,\n [gl.RGB565]: SAMPLER_TYPES.FLOAT,\n [gl.RGBA4]: SAMPLER_TYPES.FLOAT,\n [gl.RGB5_A1]: SAMPLER_TYPES.FLOAT,\n [gl.RGBA8]: SAMPLER_TYPES.FLOAT,\n [gl.RGBA8_SNORM]: SAMPLER_TYPES.FLOAT,\n [gl.RGB10_A2]: SAMPLER_TYPES.FLOAT,\n [gl.RGB10_A2UI]: SAMPLER_TYPES.FLOAT,\n [gl.SRGB8]: SAMPLER_TYPES.FLOAT,\n [gl.SRGB8_ALPHA8]: SAMPLER_TYPES.FLOAT,\n [gl.R16F]: SAMPLER_TYPES.FLOAT,\n [gl.RG16F]: SAMPLER_TYPES.FLOAT,\n [gl.RGB16F]: SAMPLER_TYPES.FLOAT,\n [gl.RGBA16F]: SAMPLER_TYPES.FLOAT,\n [gl.R32F]: SAMPLER_TYPES.FLOAT,\n [gl.RG32F]: SAMPLER_TYPES.FLOAT,\n [gl.RGB32F]: SAMPLER_TYPES.FLOAT,\n [gl.RGBA32F]: SAMPLER_TYPES.FLOAT,\n [gl.R11F_G11F_B10F]: SAMPLER_TYPES.FLOAT,\n [gl.RGB9_E5]: SAMPLER_TYPES.FLOAT,\n [gl.R8I]: SAMPLER_TYPES.INT,\n [gl.R8UI]: SAMPLER_TYPES.UINT,\n [gl.R16I]: SAMPLER_TYPES.INT,\n [gl.R16UI]: SAMPLER_TYPES.UINT,\n [gl.R32I]: SAMPLER_TYPES.INT,\n [gl.R32UI]: SAMPLER_TYPES.UINT,\n [gl.RG8I]: SAMPLER_TYPES.INT,\n [gl.RG8UI]: SAMPLER_TYPES.UINT,\n [gl.RG16I]: SAMPLER_TYPES.INT,\n [gl.RG16UI]: SAMPLER_TYPES.UINT,\n [gl.RG32I]: SAMPLER_TYPES.INT,\n [gl.RG32UI]: SAMPLER_TYPES.UINT,\n [gl.RGB8I]: SAMPLER_TYPES.INT,\n [gl.RGB8UI]: SAMPLER_TYPES.UINT,\n [gl.RGB16I]: SAMPLER_TYPES.INT,\n [gl.RGB16UI]: SAMPLER_TYPES.UINT,\n [gl.RGB32I]: SAMPLER_TYPES.INT,\n [gl.RGB32UI]: SAMPLER_TYPES.UINT,\n [gl.RGBA8I]: SAMPLER_TYPES.INT,\n [gl.RGBA8UI]: SAMPLER_TYPES.UINT,\n [gl.RGBA16I]: SAMPLER_TYPES.INT,\n [gl.RGBA16UI]: SAMPLER_TYPES.UINT,\n [gl.RGBA32I]: SAMPLER_TYPES.INT,\n [gl.RGBA32UI]: SAMPLER_TYPES.UINT,\n [gl.DEPTH_COMPONENT16]: SAMPLER_TYPES.FLOAT,\n [gl.DEPTH_COMPONENT24]: SAMPLER_TYPES.FLOAT,\n [gl.DEPTH_COMPONENT32F]: SAMPLER_TYPES.FLOAT,\n [gl.DEPTH_STENCIL]: SAMPLER_TYPES.FLOAT,\n [gl.DEPTH24_STENCIL8]: SAMPLER_TYPES.FLOAT,\n [gl.DEPTH32F_STENCIL8]: SAMPLER_TYPES.FLOAT\n } : table = {\n [gl.RGB]: SAMPLER_TYPES.FLOAT,\n [gl.RGBA]: SAMPLER_TYPES.FLOAT,\n [gl.ALPHA]: SAMPLER_TYPES.FLOAT,\n [gl.LUMINANCE]: SAMPLER_TYPES.FLOAT,\n [gl.LUMINANCE_ALPHA]: SAMPLER_TYPES.FLOAT,\n [gl.DEPTH_STENCIL]: SAMPLER_TYPES.FLOAT\n }, table;\n}\nexport {\n mapInternalFormatToSamplerType\n};\n//# sourceMappingURL=mapInternalFormatToSamplerType.mjs.map\n","import { TYPES, FORMATS } from \"@pixi/constants\";\nfunction mapTypeAndFormatToInternalFormat(gl) {\n let table;\n return \"WebGL2RenderingContext\" in globalThis && gl instanceof globalThis.WebGL2RenderingContext ? table = {\n [TYPES.UNSIGNED_BYTE]: {\n [FORMATS.RGBA]: gl.RGBA8,\n [FORMATS.RGB]: gl.RGB8,\n [FORMATS.RG]: gl.RG8,\n [FORMATS.RED]: gl.R8,\n [FORMATS.RGBA_INTEGER]: gl.RGBA8UI,\n [FORMATS.RGB_INTEGER]: gl.RGB8UI,\n [FORMATS.RG_INTEGER]: gl.RG8UI,\n [FORMATS.RED_INTEGER]: gl.R8UI,\n [FORMATS.ALPHA]: gl.ALPHA,\n [FORMATS.LUMINANCE]: gl.LUMINANCE,\n [FORMATS.LUMINANCE_ALPHA]: gl.LUMINANCE_ALPHA\n },\n [TYPES.BYTE]: {\n [FORMATS.RGBA]: gl.RGBA8_SNORM,\n [FORMATS.RGB]: gl.RGB8_SNORM,\n [FORMATS.RG]: gl.RG8_SNORM,\n [FORMATS.RED]: gl.R8_SNORM,\n [FORMATS.RGBA_INTEGER]: gl.RGBA8I,\n [FORMATS.RGB_INTEGER]: gl.RGB8I,\n [FORMATS.RG_INTEGER]: gl.RG8I,\n [FORMATS.RED_INTEGER]: gl.R8I\n },\n [TYPES.UNSIGNED_SHORT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA16UI,\n [FORMATS.RGB_INTEGER]: gl.RGB16UI,\n [FORMATS.RG_INTEGER]: gl.RG16UI,\n [FORMATS.RED_INTEGER]: gl.R16UI,\n [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT16\n },\n [TYPES.SHORT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA16I,\n [FORMATS.RGB_INTEGER]: gl.RGB16I,\n [FORMATS.RG_INTEGER]: gl.RG16I,\n [FORMATS.RED_INTEGER]: gl.R16I\n },\n [TYPES.UNSIGNED_INT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA32UI,\n [FORMATS.RGB_INTEGER]: gl.RGB32UI,\n [FORMATS.RG_INTEGER]: gl.RG32UI,\n [FORMATS.RED_INTEGER]: gl.R32UI,\n [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT24\n },\n [TYPES.INT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA32I,\n [FORMATS.RGB_INTEGER]: gl.RGB32I,\n [FORMATS.RG_INTEGER]: gl.RG32I,\n [FORMATS.RED_INTEGER]: gl.R32I\n },\n [TYPES.FLOAT]: {\n [FORMATS.RGBA]: gl.RGBA32F,\n [FORMATS.RGB]: gl.RGB32F,\n [FORMATS.RG]: gl.RG32F,\n [FORMATS.RED]: gl.R32F,\n [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT32F\n },\n [TYPES.HALF_FLOAT]: {\n [FORMATS.RGBA]: gl.RGBA16F,\n [FORMATS.RGB]: gl.RGB16F,\n [FORMATS.RG]: gl.RG16F,\n [FORMATS.RED]: gl.R16F\n },\n [TYPES.UNSIGNED_SHORT_5_6_5]: {\n [FORMATS.RGB]: gl.RGB565\n },\n [TYPES.UNSIGNED_SHORT_4_4_4_4]: {\n [FORMATS.RGBA]: gl.RGBA4\n },\n [TYPES.UNSIGNED_SHORT_5_5_5_1]: {\n [FORMATS.RGBA]: gl.RGB5_A1\n },\n [TYPES.UNSIGNED_INT_2_10_10_10_REV]: {\n [FORMATS.RGBA]: gl.RGB10_A2,\n [FORMATS.RGBA_INTEGER]: gl.RGB10_A2UI\n },\n [TYPES.UNSIGNED_INT_10F_11F_11F_REV]: {\n [FORMATS.RGB]: gl.R11F_G11F_B10F\n },\n [TYPES.UNSIGNED_INT_5_9_9_9_REV]: {\n [FORMATS.RGB]: gl.RGB9_E5\n },\n [TYPES.UNSIGNED_INT_24_8]: {\n [FORMATS.DEPTH_STENCIL]: gl.DEPTH24_STENCIL8\n },\n [TYPES.FLOAT_32_UNSIGNED_INT_24_8_REV]: {\n [FORMATS.DEPTH_STENCIL]: gl.DEPTH32F_STENCIL8\n }\n } : table = {\n [TYPES.UNSIGNED_BYTE]: {\n [FORMATS.RGBA]: gl.RGBA,\n [FORMATS.RGB]: gl.RGB,\n [FORMATS.ALPHA]: gl.ALPHA,\n [FORMATS.LUMINANCE]: gl.LUMINANCE,\n [FORMATS.LUMINANCE_ALPHA]: gl.LUMINANCE_ALPHA\n },\n [TYPES.UNSIGNED_SHORT_5_6_5]: {\n [FORMATS.RGB]: gl.RGB\n },\n [TYPES.UNSIGNED_SHORT_4_4_4_4]: {\n [FORMATS.RGBA]: gl.RGBA\n },\n [TYPES.UNSIGNED_SHORT_5_5_5_1]: {\n [FORMATS.RGBA]: gl.RGBA\n }\n }, table;\n}\nexport {\n mapTypeAndFormatToInternalFormat\n};\n//# sourceMappingURL=mapTypeAndFormatToInternalFormat.mjs.map\n","import { SAMPLER_TYPES, TYPES, MIPMAP_MODES, WRAP_MODES, SCALE_MODES } from \"@pixi/constants\";\nimport { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { removeItems } from \"@pixi/utils\";\nimport { BaseTexture } from \"./BaseTexture.mjs\";\nimport { GLTexture } from \"./GLTexture.mjs\";\nimport { mapInternalFormatToSamplerType } from \"./utils/mapInternalFormatToSamplerType.mjs\";\nimport { mapTypeAndFormatToInternalFormat } from \"./utils/mapTypeAndFormatToInternalFormat.mjs\";\nclass TextureSystem {\n /**\n * @param renderer - The renderer this system works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.boundTextures = [], this.currentLocation = -1, this.managedTextures = [], this._unknownBoundTextures = !1, this.unknownTexture = new BaseTexture(), this.hasIntegerTextures = !1;\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n const gl = this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID, this.webGLVersion = this.renderer.context.webGLVersion, this.internalFormats = mapTypeAndFormatToInternalFormat(gl), this.samplerTypes = mapInternalFormatToSamplerType(gl);\n const maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n this.boundTextures.length = maxTextures;\n for (let i = 0; i < maxTextures; i++)\n this.boundTextures[i] = null;\n this.emptyTextures = {};\n const emptyTexture2D = new GLTexture(gl.createTexture());\n gl.bindTexture(gl.TEXTURE_2D, emptyTexture2D.texture), gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array(4)), this.emptyTextures[gl.TEXTURE_2D] = emptyTexture2D, this.emptyTextures[gl.TEXTURE_CUBE_MAP] = new GLTexture(gl.createTexture()), gl.bindTexture(gl.TEXTURE_CUBE_MAP, this.emptyTextures[gl.TEXTURE_CUBE_MAP].texture);\n for (let i = 0; i < 6; i++)\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR), gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n for (let i = 0; i < this.boundTextures.length; i++)\n this.bind(null, i);\n }\n /**\n * Bind a texture to a specific location\n *\n * If you want to unbind something, please use `unbind(texture)` instead of `bind(null, textureLocation)`\n * @param texture - Texture to bind\n * @param [location=0] - Location to bind at\n */\n bind(texture, location = 0) {\n const { gl } = this;\n if (texture = texture?.castToBaseTexture(), texture?.valid && !texture.parentTextureArray) {\n texture.touched = this.renderer.textureGC.count;\n const glTexture = texture._glTextures[this.CONTEXT_UID] || this.initTexture(texture);\n this.boundTextures[location] !== texture && (this.currentLocation !== location && (this.currentLocation = location, gl.activeTexture(gl.TEXTURE0 + location)), gl.bindTexture(texture.target, glTexture.texture)), glTexture.dirtyId !== texture.dirtyId ? (this.currentLocation !== location && (this.currentLocation = location, gl.activeTexture(gl.TEXTURE0 + location)), this.updateTexture(texture)) : glTexture.dirtyStyleId !== texture.dirtyStyleId && this.updateTextureStyle(texture), this.boundTextures[location] = texture;\n } else\n this.currentLocation !== location && (this.currentLocation = location, gl.activeTexture(gl.TEXTURE0 + location)), gl.bindTexture(gl.TEXTURE_2D, this.emptyTextures[gl.TEXTURE_2D].texture), this.boundTextures[location] = null;\n }\n /** Resets texture location and bound textures Actual `bind(null, i)` calls will be performed at next `unbind()` call */\n reset() {\n this._unknownBoundTextures = !0, this.hasIntegerTextures = !1, this.currentLocation = -1;\n for (let i = 0; i < this.boundTextures.length; i++)\n this.boundTextures[i] = this.unknownTexture;\n }\n /**\n * Unbind a texture.\n * @param texture - Texture to bind\n */\n unbind(texture) {\n const { gl, boundTextures } = this;\n if (this._unknownBoundTextures) {\n this._unknownBoundTextures = !1;\n for (let i = 0; i < boundTextures.length; i++)\n boundTextures[i] === this.unknownTexture && this.bind(null, i);\n }\n for (let i = 0; i < boundTextures.length; i++)\n boundTextures[i] === texture && (this.currentLocation !== i && (gl.activeTexture(gl.TEXTURE0 + i), this.currentLocation = i), gl.bindTexture(texture.target, this.emptyTextures[texture.target].texture), boundTextures[i] = null);\n }\n /**\n * Ensures that current boundTextures all have FLOAT sampler type,\n * see {@link PIXI.SAMPLER_TYPES} for explanation.\n * @param maxTextures - number of locations to check\n */\n ensureSamplerType(maxTextures) {\n const { boundTextures, hasIntegerTextures, CONTEXT_UID } = this;\n if (hasIntegerTextures)\n for (let i = maxTextures - 1; i >= 0; --i) {\n const tex = boundTextures[i];\n tex && tex._glTextures[CONTEXT_UID].samplerType !== SAMPLER_TYPES.FLOAT && this.renderer.texture.unbind(tex);\n }\n }\n /**\n * Initialize a texture\n * @private\n * @param texture - Texture to initialize\n */\n initTexture(texture) {\n const glTexture = new GLTexture(this.gl.createTexture());\n return glTexture.dirtyId = -1, texture._glTextures[this.CONTEXT_UID] = glTexture, this.managedTextures.push(texture), texture.on(\"dispose\", this.destroyTexture, this), glTexture;\n }\n initTextureType(texture, glTexture) {\n glTexture.internalFormat = this.internalFormats[texture.type]?.[texture.format] ?? texture.format, glTexture.samplerType = this.samplerTypes[glTexture.internalFormat] ?? SAMPLER_TYPES.FLOAT, this.webGLVersion === 2 && texture.type === TYPES.HALF_FLOAT ? glTexture.type = this.gl.HALF_FLOAT : glTexture.type = texture.type;\n }\n /**\n * Update a texture\n * @private\n * @param {PIXI.BaseTexture} texture - Texture to initialize\n */\n updateTexture(texture) {\n const glTexture = texture._glTextures[this.CONTEXT_UID];\n if (!glTexture)\n return;\n const renderer = this.renderer;\n if (this.initTextureType(texture, glTexture), texture.resource?.upload(renderer, texture, glTexture))\n glTexture.samplerType !== SAMPLER_TYPES.FLOAT && (this.hasIntegerTextures = !0);\n else {\n const width = texture.realWidth, height = texture.realHeight, gl = renderer.gl;\n (glTexture.width !== width || glTexture.height !== height || glTexture.dirtyId < 0) && (glTexture.width = width, glTexture.height = height, gl.texImage2D(\n texture.target,\n 0,\n glTexture.internalFormat,\n width,\n height,\n 0,\n texture.format,\n glTexture.type,\n null\n ));\n }\n texture.dirtyStyleId !== glTexture.dirtyStyleId && this.updateTextureStyle(texture), glTexture.dirtyId = texture.dirtyId;\n }\n /**\n * Deletes the texture from WebGL\n * @private\n * @param texture - the texture to destroy\n * @param [skipRemove=false] - Whether to skip removing the texture from the TextureManager.\n */\n destroyTexture(texture, skipRemove) {\n const { gl } = this;\n if (texture = texture.castToBaseTexture(), texture._glTextures[this.CONTEXT_UID] && (this.unbind(texture), gl.deleteTexture(texture._glTextures[this.CONTEXT_UID].texture), texture.off(\"dispose\", this.destroyTexture, this), delete texture._glTextures[this.CONTEXT_UID], !skipRemove)) {\n const i = this.managedTextures.indexOf(texture);\n i !== -1 && removeItems(this.managedTextures, i, 1);\n }\n }\n /**\n * Update texture style such as mipmap flag\n * @private\n * @param {PIXI.BaseTexture} texture - Texture to update\n */\n updateTextureStyle(texture) {\n const glTexture = texture._glTextures[this.CONTEXT_UID];\n glTexture && ((texture.mipmap === MIPMAP_MODES.POW2 || this.webGLVersion !== 2) && !texture.isPowerOfTwo ? glTexture.mipmap = !1 : glTexture.mipmap = texture.mipmap >= 1, this.webGLVersion !== 2 && !texture.isPowerOfTwo ? glTexture.wrapMode = WRAP_MODES.CLAMP : glTexture.wrapMode = texture.wrapMode, texture.resource?.style(this.renderer, texture, glTexture) || this.setStyle(texture, glTexture), glTexture.dirtyStyleId = texture.dirtyStyleId);\n }\n /**\n * Set style for texture\n * @private\n * @param texture - Texture to update\n * @param glTexture\n */\n setStyle(texture, glTexture) {\n const gl = this.gl;\n if (glTexture.mipmap && texture.mipmap !== MIPMAP_MODES.ON_MANUAL && gl.generateMipmap(texture.target), gl.texParameteri(texture.target, gl.TEXTURE_WRAP_S, glTexture.wrapMode), gl.texParameteri(texture.target, gl.TEXTURE_WRAP_T, glTexture.wrapMode), glTexture.mipmap) {\n gl.texParameteri(texture.target, gl.TEXTURE_MIN_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR_MIPMAP_LINEAR : gl.NEAREST_MIPMAP_NEAREST);\n const anisotropicExt = this.renderer.context.extensions.anisotropicFiltering;\n if (anisotropicExt && texture.anisotropicLevel > 0 && texture.scaleMode === SCALE_MODES.LINEAR) {\n const level = Math.min(texture.anisotropicLevel, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT));\n gl.texParameterf(texture.target, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level);\n }\n } else\n gl.texParameteri(texture.target, gl.TEXTURE_MIN_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR : gl.NEAREST);\n gl.texParameteri(texture.target, gl.TEXTURE_MAG_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR : gl.NEAREST);\n }\n destroy() {\n this.renderer = null;\n }\n}\nTextureSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"texture\"\n};\nextensions.add(TextureSystem);\nexport {\n TextureSystem\n};\n//# sourceMappingURL=TextureSystem.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/extensions\";\nclass TransformFeedbackSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer;\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n this.gl = this.renderer.gl, this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n }\n /**\n * Bind TransformFeedback and buffers\n * @param transformFeedback - TransformFeedback to bind\n */\n bind(transformFeedback) {\n const { gl, CONTEXT_UID } = this, glTransformFeedback = transformFeedback._glTransformFeedbacks[CONTEXT_UID] || this.createGLTransformFeedback(transformFeedback);\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, glTransformFeedback);\n }\n /** Unbind TransformFeedback */\n unbind() {\n const { gl } = this;\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);\n }\n /**\n * Begin TransformFeedback\n * @param drawMode - DrawMode for TransformFeedback\n * @param shader - A Shader used by TransformFeedback. Current bound shader will be used if not provided.\n */\n beginTransformFeedback(drawMode, shader) {\n const { gl, renderer } = this;\n shader && renderer.shader.bind(shader), gl.beginTransformFeedback(drawMode);\n }\n /** End TransformFeedback */\n endTransformFeedback() {\n const { gl } = this;\n gl.endTransformFeedback();\n }\n /**\n * Create TransformFeedback and bind buffers\n * @param tf - TransformFeedback\n * @returns WebGLTransformFeedback\n */\n createGLTransformFeedback(tf) {\n const { gl, renderer, CONTEXT_UID } = this, glTransformFeedback = gl.createTransformFeedback();\n tf._glTransformFeedbacks[CONTEXT_UID] = glTransformFeedback, gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, glTransformFeedback);\n for (let i = 0; i < tf.buffers.length; i++) {\n const buffer = tf.buffers[i];\n buffer && (renderer.buffer.update(buffer), buffer._glBuffers[CONTEXT_UID].refCount++, gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, i, buffer._glBuffers[CONTEXT_UID].buffer || null));\n }\n return gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null), tf.disposeRunner.add(this), glTransformFeedback;\n }\n /**\n * Disposes TransfromFeedback\n * @param {PIXI.TransformFeedback} tf - TransformFeedback\n * @param {boolean} [contextLost=false] - If context was lost, we suppress delete TransformFeedback\n */\n disposeTransformFeedback(tf, contextLost) {\n const glTF = tf._glTransformFeedbacks[this.CONTEXT_UID], gl = this.gl;\n tf.disposeRunner.remove(this);\n const bufferSystem = this.renderer.buffer;\n if (bufferSystem)\n for (let i = 0; i < tf.buffers.length; i++) {\n const buffer = tf.buffers[i];\n if (!buffer)\n continue;\n const buf = buffer._glBuffers[this.CONTEXT_UID];\n buf && (buf.refCount--, buf.refCount === 0 && !contextLost && bufferSystem.dispose(buffer, contextLost));\n }\n glTF && (contextLost || gl.deleteTransformFeedback(glTF), delete tf._glTransformFeedbacks[this.CONTEXT_UID]);\n }\n destroy() {\n this.renderer = null;\n }\n}\nTransformFeedbackSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"transformFeedback\"\n};\nextensions.add(TransformFeedbackSystem);\nexport {\n TransformFeedbackSystem\n};\n//# sourceMappingURL=TransformFeedbackSystem.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { Rectangle } from \"@pixi/math\";\nimport { settings } from \"@pixi/settings\";\nclass ViewSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n /**\n * initiates the view system\n * @param {PIXI.ViewOptions} options - the options for the view\n */\n init(options) {\n this.screen = new Rectangle(0, 0, options.width, options.height), this.element = options.view || settings.ADAPTER.createCanvas(), this.resolution = options.resolution || settings.RESOLUTION, this.autoDensity = !!options.autoDensity;\n }\n /**\n * Resizes the screen and canvas to the specified dimensions.\n * @param desiredScreenWidth - The new width of the screen.\n * @param desiredScreenHeight - The new height of the screen.\n */\n resizeView(desiredScreenWidth, desiredScreenHeight) {\n this.element.width = Math.round(desiredScreenWidth * this.resolution), this.element.height = Math.round(desiredScreenHeight * this.resolution);\n const screenWidth = this.element.width / this.resolution, screenHeight = this.element.height / this.resolution;\n this.screen.width = screenWidth, this.screen.height = screenHeight, this.autoDensity && (this.element.style.width = `${screenWidth}px`, this.element.style.height = `${screenHeight}px`), this.renderer.emit(\"resize\", screenWidth, screenHeight), this.renderer.runners.resize.emit(this.screen.width, this.screen.height);\n }\n /**\n * Destroys this System and optionally removes the canvas from the dom.\n * @param {boolean} [removeView=false] - Whether to remove the canvas from the DOM.\n */\n destroy(removeView) {\n removeView && this.element.parentNode?.removeChild(this.element), this.renderer = null, this.element = null, this.screen = null;\n }\n}\nViewSystem.defaultOptions = {\n /**\n * {@link PIXI.IRendererOptions.width}\n * @default 800\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n width: 800,\n /**\n * {@link PIXI.IRendererOptions.height}\n * @default 600\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n height: 600,\n /**\n * {@link PIXI.IRendererOptions.resolution}\n * @type {number}\n * @default PIXI.settings.RESOLUTION\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n resolution: void 0,\n /**\n * {@link PIXI.IRendererOptions.autoDensity}\n * @default false\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n autoDensity: !1\n}, /** @ignore */\nViewSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"_view\"\n};\nextensions.add(ViewSystem);\nexport {\n ViewSystem\n};\n//# sourceMappingURL=ViewSystem.mjs.map\n","import { ENV } from \"@pixi/constants\";\nimport { settings } from \"@pixi/settings\";\nimport { deprecation } from \"@pixi/utils\";\nimport { BatchRenderer } from \"./batch/BatchRenderer.mjs\";\nimport { Filter } from \"./filters/Filter.mjs\";\nimport { Program } from \"./shader/Program.mjs\";\nimport \"./systems.mjs\";\nimport { BaseTexture } from \"./textures/BaseTexture.mjs\";\nimport { ContextSystem } from \"./context/ContextSystem.mjs\";\nimport { BackgroundSystem } from \"./background/BackgroundSystem.mjs\";\nimport { ViewSystem } from \"./view/ViewSystem.mjs\";\nimport { StartupSystem } from \"./startup/StartupSystem.mjs\";\nimport { TextureGCSystem } from \"./textures/TextureGCSystem.mjs\";\nsettings.PREFER_ENV = ENV.WEBGL2;\nsettings.STRICT_TEXTURE_CACHE = !1;\nsettings.RENDER_OPTIONS = {\n ...ContextSystem.defaultOptions,\n ...BackgroundSystem.defaultOptions,\n ...ViewSystem.defaultOptions,\n ...StartupSystem.defaultOptions\n};\nObject.defineProperties(settings, {\n /**\n * @static\n * @name WRAP_MODE\n * @memberof PIXI.settings\n * @type {PIXI.WRAP_MODES}\n * @deprecated since 7.1.0\n * @see PIXI.BaseTexture.defaultOptions.wrapMode\n */\n WRAP_MODE: {\n get() {\n return BaseTexture.defaultOptions.wrapMode;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.WRAP_MODE is deprecated, use BaseTexture.defaultOptions.wrapMode\"), BaseTexture.defaultOptions.wrapMode = value;\n }\n },\n /**\n * @static\n * @name SCALE_MODE\n * @memberof PIXI.settings\n * @type {PIXI.SCALE_MODES}\n * @deprecated since 7.1.0\n * @see PIXI.BaseTexture.defaultOptions.scaleMode\n */\n SCALE_MODE: {\n get() {\n return BaseTexture.defaultOptions.scaleMode;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.SCALE_MODE is deprecated, use BaseTexture.defaultOptions.scaleMode\"), BaseTexture.defaultOptions.scaleMode = value;\n }\n },\n /**\n * @static\n * @name MIPMAP_TEXTURES\n * @memberof PIXI.settings\n * @type {PIXI.MIPMAP_MODES}\n * @deprecated since 7.1.0\n * @see PIXI.BaseTexture.defaultOptions.mipmap\n */\n MIPMAP_TEXTURES: {\n get() {\n return BaseTexture.defaultOptions.mipmap;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.MIPMAP_TEXTURES is deprecated, use BaseTexture.defaultOptions.mipmap\"), BaseTexture.defaultOptions.mipmap = value;\n }\n // MIPMAP_MODES.POW2,\n },\n /**\n * @static\n * @name ANISOTROPIC_LEVEL\n * @memberof PIXI.settings\n * @type {number}\n * @deprecated since 7.1.0\n * @see PIXI.BaseTexture.defaultOptions.anisotropicLevel\n */\n ANISOTROPIC_LEVEL: {\n get() {\n return BaseTexture.defaultOptions.anisotropicLevel;\n },\n set(value) {\n deprecation(\n \"7.1.0\",\n \"settings.ANISOTROPIC_LEVEL is deprecated, use BaseTexture.defaultOptions.anisotropicLevel\"\n ), BaseTexture.defaultOptions.anisotropicLevel = value;\n }\n },\n /**\n * Default filter resolution.\n * @static\n * @name FILTER_RESOLUTION\n * @memberof PIXI.settings\n * @deprecated since 7.1.0\n * @type {number|null}\n * @see PIXI.Filter.defaultResolution\n */\n FILTER_RESOLUTION: {\n get() {\n return deprecation(\"7.1.0\", \"settings.FILTER_RESOLUTION is deprecated, use Filter.defaultResolution\"), Filter.defaultResolution;\n },\n set(value) {\n Filter.defaultResolution = value;\n }\n },\n /**\n * Default filter samples.\n * @static\n * @name FILTER_MULTISAMPLE\n * @memberof PIXI.settings\n * @deprecated since 7.1.0\n * @type {PIXI.MSAA_QUALITY}\n * @see PIXI.Filter.defaultMultisample\n */\n FILTER_MULTISAMPLE: {\n get() {\n return deprecation(\"7.1.0\", \"settings.FILTER_MULTISAMPLE is deprecated, use Filter.defaultMultisample\"), Filter.defaultMultisample;\n },\n set(value) {\n Filter.defaultMultisample = value;\n }\n },\n /**\n * The maximum textures that this device supports.\n * @static\n * @name SPRITE_MAX_TEXTURES\n * @memberof PIXI.settings\n * @deprecated since 7.1.0\n * @see PIXI.BatchRenderer.defaultMaxTextures\n * @type {number}\n */\n SPRITE_MAX_TEXTURES: {\n get() {\n return BatchRenderer.defaultMaxTextures;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.SPRITE_MAX_TEXTURES is deprecated, use BatchRenderer.defaultMaxTextures\"), BatchRenderer.defaultMaxTextures = value;\n }\n },\n /**\n * The default sprite batch size.\n *\n * The default aims to balance desktop and mobile devices.\n * @static\n * @name SPRITE_BATCH_SIZE\n * @memberof PIXI.settings\n * @see PIXI.BatchRenderer.defaultBatchSize\n * @deprecated since 7.1.0\n * @type {number}\n */\n SPRITE_BATCH_SIZE: {\n get() {\n return BatchRenderer.defaultBatchSize;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.SPRITE_BATCH_SIZE is deprecated, use BatchRenderer.defaultBatchSize\"), BatchRenderer.defaultBatchSize = value;\n }\n },\n /**\n * Can we upload the same buffer in a single frame?\n * @static\n * @name CAN_UPLOAD_SAME_BUFFER\n * @memberof PIXI.settings\n * @see PIXI.BatchRenderer.canUploadSameBuffer\n * @deprecated since 7.1.0\n * @type {boolean}\n */\n CAN_UPLOAD_SAME_BUFFER: {\n get() {\n return BatchRenderer.canUploadSameBuffer;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.CAN_UPLOAD_SAME_BUFFER is deprecated, use BatchRenderer.canUploadSameBuffer\"), BatchRenderer.canUploadSameBuffer = value;\n }\n },\n /**\n * Default Garbage Collection mode.\n * @static\n * @name GC_MODE\n * @memberof PIXI.settings\n * @type {PIXI.GC_MODES}\n * @deprecated since 7.1.0\n * @see PIXI.TextureGCSystem.defaultMode\n */\n GC_MODE: {\n get() {\n return TextureGCSystem.defaultMode;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.GC_MODE is deprecated, use TextureGCSystem.defaultMode\"), TextureGCSystem.defaultMode = value;\n }\n },\n /**\n * Default Garbage Collection max idle.\n * @static\n * @name GC_MAX_IDLE\n * @memberof PIXI.settings\n * @type {number}\n * @deprecated since 7.1.0\n * @see PIXI.TextureGCSystem.defaultMaxIdle\n */\n GC_MAX_IDLE: {\n get() {\n return TextureGCSystem.defaultMaxIdle;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.GC_MAX_IDLE is deprecated, use TextureGCSystem.defaultMaxIdle\"), TextureGCSystem.defaultMaxIdle = value;\n }\n },\n /**\n * Default Garbage Collection maximum check count.\n * @static\n * @name GC_MAX_CHECK_COUNT\n * @memberof PIXI.settings\n * @type {number}\n * @deprecated since 7.1.0\n * @see PIXI.TextureGCSystem.defaultCheckCountMax\n */\n GC_MAX_CHECK_COUNT: {\n get() {\n return TextureGCSystem.defaultCheckCountMax;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.GC_MAX_CHECK_COUNT is deprecated, use TextureGCSystem.defaultCheckCountMax\"), TextureGCSystem.defaultCheckCountMax = value;\n }\n },\n /**\n * Default specify float precision in vertex shader.\n * @static\n * @name PRECISION_VERTEX\n * @memberof PIXI.settings\n * @type {PIXI.PRECISION}\n * @deprecated since 7.1.0\n * @see PIXI.Program.defaultVertexPrecision\n */\n PRECISION_VERTEX: {\n get() {\n return Program.defaultVertexPrecision;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.PRECISION_VERTEX is deprecated, use Program.defaultVertexPrecision\"), Program.defaultVertexPrecision = value;\n }\n },\n /**\n * Default specify float precision in fragment shader.\n * @static\n * @name PRECISION_FRAGMENT\n * @memberof PIXI.settings\n * @type {PIXI.PRECISION}\n * @deprecated since 7.1.0\n * @see PIXI.Program.defaultFragmentPrecision\n */\n PRECISION_FRAGMENT: {\n get() {\n return Program.defaultFragmentPrecision;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.PRECISION_FRAGMENT is deprecated, use Program.defaultFragmentPrecision\"), Program.defaultFragmentPrecision = value;\n }\n }\n});\n//# sourceMappingURL=settings.mjs.map\n","var UPDATE_PRIORITY = /* @__PURE__ */ ((UPDATE_PRIORITY2) => (UPDATE_PRIORITY2[UPDATE_PRIORITY2.INTERACTION = 50] = \"INTERACTION\", UPDATE_PRIORITY2[UPDATE_PRIORITY2.HIGH = 25] = \"HIGH\", UPDATE_PRIORITY2[UPDATE_PRIORITY2.NORMAL = 0] = \"NORMAL\", UPDATE_PRIORITY2[UPDATE_PRIORITY2.LOW = -25] = \"LOW\", UPDATE_PRIORITY2[UPDATE_PRIORITY2.UTILITY = -50] = \"UTILITY\", UPDATE_PRIORITY2))(UPDATE_PRIORITY || {});\nexport {\n UPDATE_PRIORITY\n};\n//# sourceMappingURL=const.mjs.map\n","class TickerListener {\n /**\n * Constructor\n * @private\n * @param fn - The listener function to be added for one update\n * @param context - The listener context\n * @param priority - The priority for emitting\n * @param once - If the handler should fire once\n */\n constructor(fn, context = null, priority = 0, once = !1) {\n this.next = null, this.previous = null, this._destroyed = !1, this.fn = fn, this.context = context, this.priority = priority, this.once = once;\n }\n /**\n * Simple compare function to figure out if a function and context match.\n * @private\n * @param fn - The listener function to be added for one update\n * @param context - The listener context\n * @returns `true` if the listener match the arguments\n */\n match(fn, context = null) {\n return this.fn === fn && this.context === context;\n }\n /**\n * Emit by calling the current function.\n * @private\n * @param deltaTime - time since the last emit.\n * @returns Next ticker\n */\n emit(deltaTime) {\n this.fn && (this.context ? this.fn.call(this.context, deltaTime) : this.fn(deltaTime));\n const redirect = this.next;\n return this.once && this.destroy(!0), this._destroyed && (this.next = null), redirect;\n }\n /**\n * Connect to the list.\n * @private\n * @param previous - Input node, previous listener\n */\n connect(previous) {\n this.previous = previous, previous.next && (previous.next.previous = this), this.next = previous.next, previous.next = this;\n }\n /**\n * Destroy and don't use after this.\n * @private\n * @param hard - `true` to remove the `next` reference, this\n * is considered a hard destroy. Soft destroy maintains the next reference.\n * @returns The listener to redirect while emitting or removing.\n */\n destroy(hard = !1) {\n this._destroyed = !0, this.fn = null, this.context = null, this.previous && (this.previous.next = this.next), this.next && (this.next.previous = this.previous);\n const redirect = this.next;\n return this.next = hard ? null : redirect, this.previous = null, redirect;\n }\n}\nexport {\n TickerListener\n};\n//# sourceMappingURL=TickerListener.mjs.map\n","import { UPDATE_PRIORITY } from \"./const.mjs\";\nimport { TickerListener } from \"./TickerListener.mjs\";\nconst _Ticker = class _Ticker2 {\n constructor() {\n this.autoStart = !1, this.deltaTime = 1, this.lastTime = -1, this.speed = 1, this.started = !1, this._requestId = null, this._maxElapsedMS = 100, this._minElapsedMS = 0, this._protected = !1, this._lastFrame = -1, this._head = new TickerListener(null, null, 1 / 0), this.deltaMS = 1 / _Ticker2.targetFPMS, this.elapsedMS = 1 / _Ticker2.targetFPMS, this._tick = (time) => {\n this._requestId = null, this.started && (this.update(time), this.started && this._requestId === null && this._head.next && (this._requestId = requestAnimationFrame(this._tick)));\n };\n }\n /**\n * Conditionally requests a new animation frame.\n * If a frame has not already been requested, and if the internal\n * emitter has listeners, a new frame is requested.\n * @private\n */\n _requestIfNeeded() {\n this._requestId === null && this._head.next && (this.lastTime = performance.now(), this._lastFrame = this.lastTime, this._requestId = requestAnimationFrame(this._tick));\n }\n /**\n * Conditionally cancels a pending animation frame.\n * @private\n */\n _cancelIfNeeded() {\n this._requestId !== null && (cancelAnimationFrame(this._requestId), this._requestId = null);\n }\n /**\n * Conditionally requests a new animation frame.\n * If the ticker has been started it checks if a frame has not already\n * been requested, and if the internal emitter has listeners. If these\n * conditions are met, a new frame is requested. If the ticker has not\n * been started, but autoStart is `true`, then the ticker starts now,\n * and continues with the previous conditions to request a new frame.\n * @private\n */\n _startIfPossible() {\n this.started ? this._requestIfNeeded() : this.autoStart && this.start();\n }\n /**\n * Register a handler for tick events. Calls continuously unless\n * it is removed or the ticker is stopped.\n * @param fn - The listener function to be added for updates\n * @param context - The listener context\n * @param {number} [priority=PIXI.UPDATE_PRIORITY.NORMAL] - The priority for emitting\n * @returns This instance of a ticker\n */\n add(fn, context, priority = UPDATE_PRIORITY.NORMAL) {\n return this._addListener(new TickerListener(fn, context, priority));\n }\n /**\n * Add a handler for the tick event which is only execute once.\n * @param fn - The listener function to be added for one update\n * @param context - The listener context\n * @param {number} [priority=PIXI.UPDATE_PRIORITY.NORMAL] - The priority for emitting\n * @returns This instance of a ticker\n */\n addOnce(fn, context, priority = UPDATE_PRIORITY.NORMAL) {\n return this._addListener(new TickerListener(fn, context, priority, !0));\n }\n /**\n * Internally adds the event handler so that it can be sorted by priority.\n * Priority allows certain handler (user, AnimatedSprite, Interaction) to be run\n * before the rendering.\n * @private\n * @param listener - Current listener being added.\n * @returns This instance of a ticker\n */\n _addListener(listener) {\n let current = this._head.next, previous = this._head;\n if (!current)\n listener.connect(previous);\n else {\n for (; current; ) {\n if (listener.priority > current.priority) {\n listener.connect(previous);\n break;\n }\n previous = current, current = current.next;\n }\n listener.previous || listener.connect(previous);\n }\n return this._startIfPossible(), this;\n }\n /**\n * Removes any handlers matching the function and context parameters.\n * If no handlers are left after removing, then it cancels the animation frame.\n * @param fn - The listener function to be removed\n * @param context - The listener context to be removed\n * @returns This instance of a ticker\n */\n remove(fn, context) {\n let listener = this._head.next;\n for (; listener; )\n listener.match(fn, context) ? listener = listener.destroy() : listener = listener.next;\n return this._head.next || this._cancelIfNeeded(), this;\n }\n /**\n * The number of listeners on this ticker, calculated by walking through linked list\n * @readonly\n * @member {number}\n */\n get count() {\n if (!this._head)\n return 0;\n let count = 0, current = this._head;\n for (; current = current.next; )\n count++;\n return count;\n }\n /** Starts the ticker. If the ticker has listeners a new animation frame is requested at this point. */\n start() {\n this.started || (this.started = !0, this._requestIfNeeded());\n }\n /** Stops the ticker. If the ticker has requested an animation frame it is canceled at this point. */\n stop() {\n this.started && (this.started = !1, this._cancelIfNeeded());\n }\n /** Destroy the ticker and don't use after this. Calling this method removes all references to internal events. */\n destroy() {\n if (!this._protected) {\n this.stop();\n let listener = this._head.next;\n for (; listener; )\n listener = listener.destroy(!0);\n this._head.destroy(), this._head = null;\n }\n }\n /**\n * Triggers an update. An update entails setting the\n * current {@link PIXI.Ticker#elapsedMS},\n * the current {@link PIXI.Ticker#deltaTime},\n * invoking all listeners with current deltaTime,\n * and then finally setting {@link PIXI.Ticker#lastTime}\n * with the value of currentTime that was provided.\n * This method will be called automatically by animation\n * frame callbacks if the ticker instance has been started\n * and listeners are added.\n * @param {number} [currentTime=performance.now()] - the current time of execution\n */\n update(currentTime = performance.now()) {\n let elapsedMS;\n if (currentTime > this.lastTime) {\n if (elapsedMS = this.elapsedMS = currentTime - this.lastTime, elapsedMS > this._maxElapsedMS && (elapsedMS = this._maxElapsedMS), elapsedMS *= this.speed, this._minElapsedMS) {\n const delta = currentTime - this._lastFrame | 0;\n if (delta < this._minElapsedMS)\n return;\n this._lastFrame = currentTime - delta % this._minElapsedMS;\n }\n this.deltaMS = elapsedMS, this.deltaTime = this.deltaMS * _Ticker2.targetFPMS;\n const head = this._head;\n let listener = head.next;\n for (; listener; )\n listener = listener.emit(this.deltaTime);\n head.next || this._cancelIfNeeded();\n } else\n this.deltaTime = this.deltaMS = this.elapsedMS = 0;\n this.lastTime = currentTime;\n }\n /**\n * The frames per second at which this ticker is running.\n * The default is approximately 60 in most modern browsers.\n * **Note:** This does not factor in the value of\n * {@link PIXI.Ticker#speed}, which is specific\n * to scaling {@link PIXI.Ticker#deltaTime}.\n * @member {number}\n * @readonly\n */\n get FPS() {\n return 1e3 / this.elapsedMS;\n }\n /**\n * Manages the maximum amount of milliseconds allowed to\n * elapse between invoking {@link PIXI.Ticker#update}.\n * This value is used to cap {@link PIXI.Ticker#deltaTime},\n * but does not effect the measured value of {@link PIXI.Ticker#FPS}.\n * When setting this property it is clamped to a value between\n * `0` and `Ticker.targetFPMS * 1000`.\n * @member {number}\n * @default 10\n */\n get minFPS() {\n return 1e3 / this._maxElapsedMS;\n }\n set minFPS(fps) {\n const minFPS = Math.min(this.maxFPS, fps), minFPMS = Math.min(Math.max(0, minFPS) / 1e3, _Ticker2.targetFPMS);\n this._maxElapsedMS = 1 / minFPMS;\n }\n /**\n * Manages the minimum amount of milliseconds required to\n * elapse between invoking {@link PIXI.Ticker#update}.\n * This will effect the measured value of {@link PIXI.Ticker#FPS}.\n * If it is set to `0`, then there is no limit; PixiJS will render as many frames as it can.\n * Otherwise it will be at least `minFPS`\n * @member {number}\n * @default 0\n */\n get maxFPS() {\n return this._minElapsedMS ? Math.round(1e3 / this._minElapsedMS) : 0;\n }\n set maxFPS(fps) {\n if (fps === 0)\n this._minElapsedMS = 0;\n else {\n const maxFPS = Math.max(this.minFPS, fps);\n this._minElapsedMS = 1 / (maxFPS / 1e3);\n }\n }\n /**\n * The shared ticker instance used by {@link PIXI.AnimatedSprite} and by\n * {@link PIXI.VideoResource} to update animation frames / video textures.\n *\n * It may also be used by {@link PIXI.Application} if created with the `sharedTicker` option property set to true.\n *\n * The property {@link PIXI.Ticker#autoStart} is set to `true` for this instance.\n * Please follow the examples for usage, including how to opt-out of auto-starting the shared ticker.\n * @example\n * import { Ticker } from 'pixi.js';\n *\n * const ticker = Ticker.shared;\n * // Set this to prevent starting this ticker when listeners are added.\n * // By default this is true only for the PIXI.Ticker.shared instance.\n * ticker.autoStart = false;\n *\n * // FYI, call this to ensure the ticker is stopped. It should be stopped\n * // if you have not attempted to render anything yet.\n * ticker.stop();\n *\n * // Call this when you are ready for a running shared ticker.\n * ticker.start();\n * @example\n * import { autoDetectRenderer, Container } from 'pixi.js';\n *\n * // You may use the shared ticker to render...\n * const renderer = autoDetectRenderer();\n * const stage = new Container();\n * document.body.appendChild(renderer.view);\n * ticker.add((time) => renderer.render(stage));\n *\n * // Or you can just update it manually.\n * ticker.autoStart = false;\n * ticker.stop();\n * const animate = (time) => {\n * ticker.update(time);\n * renderer.render(stage);\n * requestAnimationFrame(animate);\n * };\n * animate(performance.now());\n * @member {PIXI.Ticker}\n * @static\n */\n static get shared() {\n if (!_Ticker2._shared) {\n const shared = _Ticker2._shared = new _Ticker2();\n shared.autoStart = !0, shared._protected = !0;\n }\n return _Ticker2._shared;\n }\n /**\n * The system ticker instance used by {@link PIXI.BasePrepare} for core timing\n * functionality that shouldn't usually need to be paused, unlike the `shared`\n * ticker which drives visual animations and rendering which may want to be paused.\n *\n * The property {@link PIXI.Ticker#autoStart} is set to `true` for this instance.\n * @member {PIXI.Ticker}\n * @static\n */\n static get system() {\n if (!_Ticker2._system) {\n const system = _Ticker2._system = new _Ticker2();\n system.autoStart = !0, system._protected = !0;\n }\n return _Ticker2._system;\n }\n};\n_Ticker.targetFPMS = 0.06;\nlet Ticker = _Ticker;\nexport {\n Ticker\n};\n//# sourceMappingURL=Ticker.mjs.map\n","import { settings } from \"@pixi/settings\";\nimport { settings as settings2 } from \"@pixi/settings\";\nimport { deprecation } from \"@pixi/utils\";\nimport { Ticker } from \"./Ticker.mjs\";\nObject.defineProperties(settings, {\n /**\n * Target frames per millisecond.\n * @static\n * @name TARGET_FPMS\n * @memberof PIXI.settings\n * @type {number}\n * @deprecated since 7.1.0\n * @see PIXI.Ticker.targetFPMS\n */\n TARGET_FPMS: {\n get() {\n return Ticker.targetFPMS;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.TARGET_FPMS is deprecated, use Ticker.targetFPMS\"), Ticker.targetFPMS = value;\n }\n }\n});\nexport {\n settings2 as settings\n};\n//# sourceMappingURL=settings.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { UPDATE_PRIORITY } from \"./const.mjs\";\nimport { Ticker } from \"./Ticker.mjs\";\nclass TickerPlugin {\n /**\n * Initialize the plugin with scope of application instance\n * @static\n * @private\n * @param {object} [options] - See application options\n */\n static init(options) {\n options = Object.assign({\n autoStart: !0,\n sharedTicker: !1\n }, options), Object.defineProperty(\n this,\n \"ticker\",\n {\n set(ticker) {\n this._ticker && this._ticker.remove(this.render, this), this._ticker = ticker, ticker && ticker.add(this.render, this, UPDATE_PRIORITY.LOW);\n },\n get() {\n return this._ticker;\n }\n }\n ), this.stop = () => {\n this._ticker.stop();\n }, this.start = () => {\n this._ticker.start();\n }, this._ticker = null, this.ticker = options.sharedTicker ? Ticker.shared : new Ticker(), options.autoStart && this.start();\n }\n /**\n * Clean up the ticker, scoped to application.\n * @static\n * @private\n */\n static destroy() {\n if (this._ticker) {\n const oldTicker = this._ticker;\n this.ticker = null, oldTicker.destroy();\n }\n }\n}\nTickerPlugin.extension = ExtensionType.Application;\nextensions.add(TickerPlugin);\nexport {\n TickerPlugin\n};\n//# sourceMappingURL=TickerPlugin.mjs.map\n","import { extensions, ExtensionType } from \"@pixi/extensions\";\nconst renderers = [];\nextensions.handleByList(ExtensionType.Renderer, renderers);\nfunction autoDetectRenderer(options) {\n for (const RendererType of renderers)\n if (RendererType.test(options))\n return new RendererType(options);\n throw new Error(\"Unable to auto-detect a suitable renderer.\");\n}\nexport {\n autoDetectRenderer\n};\n//# sourceMappingURL=autoDetectRenderer.mjs.map\n","var $defaultVertex = `attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`;\nexport {\n $defaultVertex as default\n};\n//# sourceMappingURL=default.vert.mjs.map\n","var $defaultFilterVertex = `attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n`;\nexport {\n $defaultFilterVertex as default\n};\n//# sourceMappingURL=defaultFilter.vert.mjs.map\n","import $defaultVertex from \"./default.vert.mjs\";\nimport $defaultFilterVertex from \"./defaultFilter.vert.mjs\";\nconst defaultVertex = $defaultVertex, defaultFilterVertex = $defaultFilterVertex;\nexport {\n defaultFilterVertex,\n defaultVertex\n};\n//# sourceMappingURL=index.mjs.map\n","import { MSAA_QUALITY } from \"@pixi/constants\";\nimport { ExtensionType, extensions } from \"@pixi/extensions\";\nclass MultisampleSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n contextChange(gl) {\n let samples;\n if (this.renderer.context.webGLVersion === 1) {\n const framebuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null), samples = gl.getParameter(gl.SAMPLES), gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n } else {\n const framebuffer = gl.getParameter(gl.DRAW_FRAMEBUFFER_BINDING);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null), samples = gl.getParameter(gl.SAMPLES), gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, framebuffer);\n }\n samples >= MSAA_QUALITY.HIGH ? this.multisample = MSAA_QUALITY.HIGH : samples >= MSAA_QUALITY.MEDIUM ? this.multisample = MSAA_QUALITY.MEDIUM : samples >= MSAA_QUALITY.LOW ? this.multisample = MSAA_QUALITY.LOW : this.multisample = MSAA_QUALITY.NONE;\n }\n destroy() {\n }\n}\nMultisampleSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"_multisample\"\n};\nextensions.add(MultisampleSystem);\nexport {\n MultisampleSystem\n};\n//# sourceMappingURL=MultisampleSystem.mjs.map\n","class GLBuffer {\n constructor(buffer) {\n this.buffer = buffer || null, this.updateID = -1, this.byteLength = -1, this.refCount = 0;\n }\n}\nexport {\n GLBuffer\n};\n//# sourceMappingURL=GLBuffer.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { GLBuffer } from \"./GLBuffer.mjs\";\nclass BufferSystem {\n /**\n * @param {PIXI.Renderer} renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.managedBuffers = {}, this.boundBufferBases = {};\n }\n /**\n * @ignore\n */\n destroy() {\n this.renderer = null;\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n this.disposeAll(!0), this.gl = this.renderer.gl, this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n }\n /**\n * This binds specified buffer. On first run, it will create the webGL buffers for the context too\n * @param buffer - the buffer to bind to the renderer\n */\n bind(buffer) {\n const { gl, CONTEXT_UID } = this, glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n gl.bindBuffer(buffer.type, glBuffer.buffer);\n }\n unbind(type) {\n const { gl } = this;\n gl.bindBuffer(type, null);\n }\n /**\n * Binds an uniform buffer to at the given index.\n *\n * A cache is used so a buffer will not be bound again if already bound.\n * @param buffer - the buffer to bind\n * @param index - the base index to bind it to.\n */\n bindBufferBase(buffer, index) {\n const { gl, CONTEXT_UID } = this;\n if (this.boundBufferBases[index] !== buffer) {\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n this.boundBufferBases[index] = buffer, gl.bindBufferBase(gl.UNIFORM_BUFFER, index, glBuffer.buffer);\n }\n }\n /**\n * Binds a buffer whilst also binding its range.\n * This will make the buffer start from the offset supplied rather than 0 when it is read.\n * @param buffer - the buffer to bind\n * @param index - the base index to bind at, defaults to 0\n * @param offset - the offset to bind at (this is blocks of 256). 0 = 0, 1 = 256, 2 = 512 etc\n */\n bindBufferRange(buffer, index, offset) {\n const { gl, CONTEXT_UID } = this;\n offset = offset || 0;\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n gl.bindBufferRange(gl.UNIFORM_BUFFER, index || 0, glBuffer.buffer, offset * 256, 256);\n }\n /**\n * Will ensure the data in the buffer is uploaded to the GPU.\n * @param {PIXI.Buffer} buffer - the buffer to update\n */\n update(buffer) {\n const { gl, CONTEXT_UID } = this, glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n if (buffer._updateID !== glBuffer.updateID)\n if (glBuffer.updateID = buffer._updateID, gl.bindBuffer(buffer.type, glBuffer.buffer), glBuffer.byteLength >= buffer.data.byteLength)\n gl.bufferSubData(buffer.type, 0, buffer.data);\n else {\n const drawType = buffer.static ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW;\n glBuffer.byteLength = buffer.data.byteLength, gl.bufferData(buffer.type, buffer.data, drawType);\n }\n }\n /**\n * Disposes buffer\n * @param {PIXI.Buffer} buffer - buffer with data\n * @param {boolean} [contextLost=false] - If context was lost, we suppress deleteVertexArray\n */\n dispose(buffer, contextLost) {\n if (!this.managedBuffers[buffer.id])\n return;\n delete this.managedBuffers[buffer.id];\n const glBuffer = buffer._glBuffers[this.CONTEXT_UID], gl = this.gl;\n buffer.disposeRunner.remove(this), glBuffer && (contextLost || gl.deleteBuffer(glBuffer.buffer), delete buffer._glBuffers[this.CONTEXT_UID]);\n }\n /**\n * dispose all WebGL resources of all managed buffers\n * @param {boolean} [contextLost=false] - If context was lost, we suppress `gl.delete` calls\n */\n disposeAll(contextLost) {\n const all = Object.keys(this.managedBuffers);\n for (let i = 0; i < all.length; i++)\n this.dispose(this.managedBuffers[all[i]], contextLost);\n }\n /**\n * creates and attaches a GLBuffer object tied to the current context.\n * @param buffer\n * @protected\n */\n createGLBuffer(buffer) {\n const { CONTEXT_UID, gl } = this;\n return buffer._glBuffers[CONTEXT_UID] = new GLBuffer(gl.createBuffer()), this.managedBuffers[buffer.id] = buffer, buffer.disposeRunner.add(this), buffer._glBuffers[CONTEXT_UID];\n }\n}\nBufferSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"buffer\"\n};\nextensions.add(BufferSystem);\nexport {\n BufferSystem\n};\n//# sourceMappingURL=BufferSystem.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/extensions\";\nclass ObjectRendererSystem {\n // renderers scene graph!\n constructor(renderer) {\n this.renderer = renderer;\n }\n /**\n * Renders the object to its WebGL view.\n * @param displayObject - The object to be rendered.\n * @param options - the options to be passed to the renderer\n */\n render(displayObject, options) {\n const renderer = this.renderer;\n let renderTexture, clear, transform, skipUpdateTransform;\n if (options && (renderTexture = options.renderTexture, clear = options.clear, transform = options.transform, skipUpdateTransform = options.skipUpdateTransform), this.renderingToScreen = !renderTexture, renderer.runners.prerender.emit(), renderer.emit(\"prerender\"), renderer.projection.transform = transform, !renderer.context.isLost) {\n if (renderTexture || (this.lastObjectRendered = displayObject), !skipUpdateTransform) {\n const cacheParent = displayObject.enableTempParent();\n displayObject.updateTransform(), displayObject.disableTempParent(cacheParent);\n }\n renderer.renderTexture.bind(renderTexture), renderer.batch.currentRenderer.start(), (clear ?? renderer.background.clearBeforeRender) && renderer.renderTexture.clear(), displayObject.render(renderer), renderer.batch.currentRenderer.flush(), renderTexture && (options.blit && renderer.framebuffer.blit(), renderTexture.baseTexture.update()), renderer.runners.postrender.emit(), renderer.projection.transform = null, renderer.emit(\"postrender\");\n }\n }\n destroy() {\n this.renderer = null, this.lastObjectRendered = null;\n }\n}\nObjectRendererSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"objectRenderer\"\n};\nextensions.add(ObjectRendererSystem);\nexport {\n ObjectRendererSystem\n};\n//# sourceMappingURL=ObjectRendererSystem.mjs.map\n","import { RENDERER_TYPE } from \"@pixi/constants\";\nimport { ExtensionType, extensions } from \"@pixi/extensions\";\nimport { Matrix } from \"@pixi/math\";\nimport { settings } from \"@pixi/settings\";\nimport { deprecation, isWebGLSupported } from \"@pixi/utils\";\nimport { UniformGroup } from \"./shader/UniformGroup.mjs\";\nimport { SystemManager } from \"./system/SystemManager.mjs\";\nconst _Renderer = class _Renderer2 extends SystemManager {\n /**\n * @param {PIXI.IRendererOptions} [options] - See {@link PIXI.settings.RENDER_OPTIONS} for defaults.\n */\n constructor(options) {\n super(), this.type = RENDERER_TYPE.WEBGL, options = Object.assign({}, settings.RENDER_OPTIONS, options), this.gl = null, this.CONTEXT_UID = 0, this.globalUniforms = new UniformGroup({\n projectionMatrix: new Matrix()\n }, !0);\n const systemConfig = {\n runners: [\n \"init\",\n \"destroy\",\n \"contextChange\",\n \"resolutionChange\",\n \"reset\",\n \"update\",\n \"postrender\",\n \"prerender\",\n \"resize\"\n ],\n systems: _Renderer2.__systems,\n priority: [\n \"_view\",\n \"textureGenerator\",\n \"background\",\n \"_plugin\",\n \"startup\",\n // low level WebGL systems\n \"context\",\n \"state\",\n \"texture\",\n \"buffer\",\n \"geometry\",\n \"framebuffer\",\n \"transformFeedback\",\n // high level pixi specific rendering\n \"mask\",\n \"scissor\",\n \"stencil\",\n \"projection\",\n \"textureGC\",\n \"filter\",\n \"renderTexture\",\n \"batch\",\n \"objectRenderer\",\n \"_multisample\"\n ]\n };\n this.setup(systemConfig), \"useContextAlpha\" in options && (deprecation(\"7.0.0\", \"options.useContextAlpha is deprecated, use options.premultipliedAlpha and options.backgroundAlpha instead\"), options.premultipliedAlpha = options.useContextAlpha && options.useContextAlpha !== \"notMultiplied\", options.backgroundAlpha = options.useContextAlpha === !1 ? 1 : options.backgroundAlpha), this._plugin.rendererPlugins = _Renderer2.__plugins, this.options = options, this.startup.run(this.options);\n }\n /**\n * Create renderer if WebGL is available. Overrideable\n * by the **@pixi/canvas-renderer** package to allow fallback.\n * throws error if WebGL is not available.\n * @param options\n * @private\n */\n static test(options) {\n return options?.forceCanvas ? !1 : isWebGLSupported();\n }\n /**\n * Renders the object to its WebGL view.\n * @param displayObject - The object to be rendered.\n * @param {object} [options] - Object to use for render options.\n * @param {PIXI.RenderTexture} [options.renderTexture] - The render texture to render to.\n * @param {boolean} [options.clear=true] - Should the canvas be cleared before the new render.\n * @param {PIXI.Matrix} [options.transform] - A transform to apply to the render texture before rendering.\n * @param {boolean} [options.skipUpdateTransform=false] - Should we skip the update transform pass?\n */\n render(displayObject, options) {\n this.objectRenderer.render(displayObject, options);\n }\n /**\n * Resizes the WebGL view to the specified width and height.\n * @param desiredScreenWidth - The desired width of the screen.\n * @param desiredScreenHeight - The desired height of the screen.\n */\n resize(desiredScreenWidth, desiredScreenHeight) {\n this._view.resizeView(desiredScreenWidth, desiredScreenHeight);\n }\n /**\n * Resets the WebGL state so you can render things however you fancy!\n * @returns Returns itself.\n */\n reset() {\n return this.runners.reset.emit(), this;\n }\n /** Clear the frame buffer. */\n clear() {\n this.renderTexture.bind(), this.renderTexture.clear();\n }\n /**\n * Removes everything from the renderer (event listeners, spritebatch, etc...)\n * @param [removeView=false] - Removes the Canvas element from the DOM.\n * See: https://github.com/pixijs/pixijs/issues/2233\n */\n destroy(removeView = !1) {\n this.runners.destroy.items.reverse(), this.emitWithCustomOptions(this.runners.destroy, {\n _view: removeView\n }), super.destroy();\n }\n /** Collection of plugins */\n get plugins() {\n return this._plugin.plugins;\n }\n /** The number of msaa samples of the canvas. */\n get multisample() {\n return this._multisample.multisample;\n }\n /**\n * Same as view.width, actual number of pixels in the canvas by horizontal.\n * @member {number}\n * @readonly\n * @default 800\n */\n get width() {\n return this._view.element.width;\n }\n /**\n * Same as view.height, actual number of pixels in the canvas by vertical.\n * @default 600\n */\n get height() {\n return this._view.element.height;\n }\n /** The resolution / device pixel ratio of the renderer. */\n get resolution() {\n return this._view.resolution;\n }\n set resolution(value) {\n this._view.resolution = value, this.runners.resolutionChange.emit(value);\n }\n /** Whether CSS dimensions of canvas view should be resized to screen dimensions automatically. */\n get autoDensity() {\n return this._view.autoDensity;\n }\n /** The canvas element that everything is drawn to.*/\n get view() {\n return this._view.element;\n }\n /**\n * Measurements of the screen. (0, 0, screenWidth, screenHeight).\n *\n * Its safe to use as filterArea or hitArea for the whole stage.\n * @member {PIXI.Rectangle}\n */\n get screen() {\n return this._view.screen;\n }\n /** the last object rendered by the renderer. Useful for other plugins like interaction managers */\n get lastObjectRendered() {\n return this.objectRenderer.lastObjectRendered;\n }\n /** Flag if we are rendering to the screen vs renderTexture */\n get renderingToScreen() {\n return this.objectRenderer.renderingToScreen;\n }\n /** When logging Pixi to the console, this is the name we will show */\n get rendererLogId() {\n return `WebGL ${this.context.webGLVersion}`;\n }\n /**\n * This sets weather the screen is totally cleared between each frame withthe background color and alpha\n * @deprecated since 7.0.0\n */\n get clearBeforeRender() {\n return deprecation(\"7.0.0\", \"renderer.clearBeforeRender has been deprecated, please use renderer.background.clearBeforeRender instead.\"), this.background.clearBeforeRender;\n }\n /**\n * Pass-thru setting for the canvas' context `alpha` property. This is typically\n * not something you need to fiddle with. If you want transparency, use `backgroundAlpha`.\n * @deprecated since 7.0.0\n * @member {boolean}\n */\n get useContextAlpha() {\n return deprecation(\"7.0.0\", \"renderer.useContextAlpha has been deprecated, please use renderer.context.premultipliedAlpha instead.\"), this.context.useContextAlpha;\n }\n /**\n * readonly drawing buffer preservation\n * we can only know this if Pixi created the context\n * @deprecated since 7.0.0\n */\n get preserveDrawingBuffer() {\n return deprecation(\"7.0.0\", \"renderer.preserveDrawingBuffer has been deprecated, we cannot truly know this unless pixi created the context\"), this.context.preserveDrawingBuffer;\n }\n /**\n * The background color to fill if not transparent\n * @member {number}\n * @deprecated since 7.0.0\n */\n get backgroundColor() {\n return deprecation(\"7.0.0\", \"renderer.backgroundColor has been deprecated, use renderer.background.color instead.\"), this.background.color;\n }\n set backgroundColor(value) {\n deprecation(\"7.0.0\", \"renderer.backgroundColor has been deprecated, use renderer.background.color instead.\"), this.background.color = value;\n }\n /**\n * The background color alpha. Setting this to 0 will make the canvas transparent.\n * @member {number}\n * @deprecated since 7.0.0\n */\n get backgroundAlpha() {\n return deprecation(\"7.0.0\", \"renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead.\"), this.background.alpha;\n }\n /**\n * @deprecated since 7.0.0\n */\n set backgroundAlpha(value) {\n deprecation(\"7.0.0\", \"renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead.\"), this.background.alpha = value;\n }\n /**\n * @deprecated since 7.0.0\n */\n get powerPreference() {\n return deprecation(\"7.0.0\", \"renderer.powerPreference has been deprecated, we can only know this if pixi creates the context\"), this.context.powerPreference;\n }\n /**\n * Useful function that returns a texture of the display object that can then be used to create sprites\n * This can be quite useful if your displayObject is complicated and needs to be reused multiple times.\n * @param displayObject - The displayObject the object will be generated from.\n * @param {IGenerateTextureOptions} options - Generate texture options.\n * @param {PIXI.Rectangle} options.region - The region of the displayObject, that shall be rendered,\n * if no region is specified, defaults to the local bounds of the displayObject.\n * @param {number} [options.resolution] - If not given, the renderer's resolution is used.\n * @param {PIXI.MSAA_QUALITY} [options.multisample] - If not given, the renderer's multisample is used.\n * @returns A texture of the graphics object.\n */\n generateTexture(displayObject, options) {\n return this.textureGenerator.generateTexture(displayObject, options);\n }\n};\n_Renderer.extension = {\n type: ExtensionType.Renderer,\n priority: 1\n}, /**\n* Collection of installed plugins. These are included by default in PIXI, but can be excluded\n* by creating a custom build. Consult the README for more information about creating custom\n* builds and excluding plugins.\n* @private\n*/\n_Renderer.__plugins = {}, /**\n* The collection of installed systems.\n* @private\n*/\n_Renderer.__systems = {};\nlet Renderer = _Renderer;\nextensions.handleByMap(ExtensionType.RendererPlugin, Renderer.__plugins);\nextensions.handleByMap(ExtensionType.RendererSystem, Renderer.__systems);\nextensions.add(Renderer);\nexport {\n Renderer\n};\n//# sourceMappingURL=Renderer.mjs.map\n","import { BaseTexture } from \"../BaseTexture.mjs\";\nimport { autoDetectResource } from \"./autoDetectResource.mjs\";\nimport { Resource } from \"./Resource.mjs\";\nclass AbstractMultiResource extends Resource {\n /**\n * @param length\n * @param options - Options to for Resource constructor\n * @param {number} [options.width] - Width of the resource\n * @param {number} [options.height] - Height of the resource\n */\n constructor(length, options) {\n const { width, height } = options || {};\n super(width, height), this.items = [], this.itemDirtyIds = [];\n for (let i = 0; i < length; i++) {\n const partTexture = new BaseTexture();\n this.items.push(partTexture), this.itemDirtyIds.push(-2);\n }\n this.length = length, this._load = null, this.baseTexture = null;\n }\n /**\n * Used from ArrayResource and CubeResource constructors.\n * @param resources - Can be resources, image elements, canvas, etc. ,\n * length should be same as constructor length\n * @param options - Detect options for resources\n */\n initFromArray(resources, options) {\n for (let i = 0; i < this.length; i++)\n resources[i] && (resources[i].castToBaseTexture ? this.addBaseTextureAt(resources[i].castToBaseTexture(), i) : resources[i] instanceof Resource ? this.addResourceAt(resources[i], i) : this.addResourceAt(autoDetectResource(resources[i], options), i));\n }\n /** Destroy this BaseImageResource. */\n dispose() {\n for (let i = 0, len = this.length; i < len; i++)\n this.items[i].destroy();\n this.items = null, this.itemDirtyIds = null, this._load = null;\n }\n /**\n * Set a resource by ID\n * @param resource\n * @param index - Zero-based index of resource to set\n * @returns - Instance for chaining\n */\n addResourceAt(resource, index) {\n if (!this.items[index])\n throw new Error(`Index ${index} is out of bounds`);\n return resource.valid && !this.valid && this.resize(resource.width, resource.height), this.items[index].setResource(resource), this;\n }\n /**\n * Set the parent base texture.\n * @param baseTexture\n */\n bind(baseTexture) {\n if (this.baseTexture !== null)\n throw new Error(\"Only one base texture per TextureArray is allowed\");\n super.bind(baseTexture);\n for (let i = 0; i < this.length; i++)\n this.items[i].parentTextureArray = baseTexture, this.items[i].on(\"update\", baseTexture.update, baseTexture);\n }\n /**\n * Unset the parent base texture.\n * @param baseTexture\n */\n unbind(baseTexture) {\n super.unbind(baseTexture);\n for (let i = 0; i < this.length; i++)\n this.items[i].parentTextureArray = null, this.items[i].off(\"update\", baseTexture.update, baseTexture);\n }\n /**\n * Load all the resources simultaneously\n * @returns - When load is resolved\n */\n load() {\n if (this._load)\n return this._load;\n const promises = this.items.map((item) => item.resource).filter((item) => item).map((item) => item.load());\n return this._load = Promise.all(promises).then(\n () => {\n const { realWidth, realHeight } = this.items[0];\n return this.resize(realWidth, realHeight), this.update(), Promise.resolve(this);\n }\n ), this._load;\n }\n}\nexport {\n AbstractMultiResource\n};\n//# sourceMappingURL=AbstractMultiResource.mjs.map\n","import { TARGETS } from \"@pixi/constants\";\nimport { AbstractMultiResource } from \"./AbstractMultiResource.mjs\";\nclass ArrayResource extends AbstractMultiResource {\n /**\n * @param source - Number of items in array or the collection\n * of image URLs to use. Can also be resources, image elements, canvas, etc.\n * @param options - Options to apply to {@link PIXI.autoDetectResource}\n * @param {number} [options.width] - Width of the resource\n * @param {number} [options.height] - Height of the resource\n */\n constructor(source, options) {\n const { width, height } = options || {};\n let urls, length;\n Array.isArray(source) ? (urls = source, length = source.length) : length = source, super(length, { width, height }), urls && this.initFromArray(urls, options);\n }\n /**\n * Set a baseTexture by ID,\n * ArrayResource just takes resource from it, nothing more\n * @param baseTexture\n * @param index - Zero-based index of resource to set\n * @returns - Instance for chaining\n */\n addBaseTextureAt(baseTexture, index) {\n if (baseTexture.resource)\n this.addResourceAt(baseTexture.resource, index);\n else\n throw new Error(\"ArrayResource does not support RenderTexture\");\n return this;\n }\n /**\n * Add binding\n * @param baseTexture\n */\n bind(baseTexture) {\n super.bind(baseTexture), baseTexture.target = TARGETS.TEXTURE_2D_ARRAY;\n }\n /**\n * Upload the resources to the GPU.\n * @param renderer\n * @param texture\n * @param glTexture\n * @returns - whether texture was uploaded\n */\n upload(renderer, texture, glTexture) {\n const { length, itemDirtyIds, items } = this, { gl } = renderer;\n glTexture.dirtyId < 0 && gl.texImage3D(\n gl.TEXTURE_2D_ARRAY,\n 0,\n glTexture.internalFormat,\n this._width,\n this._height,\n length,\n 0,\n texture.format,\n glTexture.type,\n null\n );\n for (let i = 0; i < length; i++) {\n const item = items[i];\n itemDirtyIds[i] < item.dirtyId && (itemDirtyIds[i] = item.dirtyId, item.valid && gl.texSubImage3D(\n gl.TEXTURE_2D_ARRAY,\n 0,\n 0,\n // xoffset\n 0,\n // yoffset\n i,\n // zoffset\n item.resource.width,\n item.resource.height,\n 1,\n texture.format,\n glTexture.type,\n item.resource.source\n ));\n }\n return !0;\n }\n}\nexport {\n ArrayResource\n};\n//# sourceMappingURL=ArrayResource.mjs.map\n","import { BaseImageResource } from \"./BaseImageResource.mjs\";\nclass CanvasResource extends BaseImageResource {\n /**\n * @param source - Canvas element to use\n */\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(source) {\n super(source);\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @returns {boolean} `true` if source is HTMLCanvasElement or OffscreenCanvas\n */\n static test(source) {\n const { OffscreenCanvas } = globalThis;\n return OffscreenCanvas && source instanceof OffscreenCanvas ? !0 : globalThis.HTMLCanvasElement && source instanceof HTMLCanvasElement;\n }\n}\nexport {\n CanvasResource\n};\n//# sourceMappingURL=CanvasResource.mjs.map\n","import { TARGETS } from \"@pixi/constants\";\nimport { AbstractMultiResource } from \"./AbstractMultiResource.mjs\";\nconst _CubeResource = class _CubeResource2 extends AbstractMultiResource {\n /**\n * @param {Array} [source] - Collection of URLs or resources\n * to use as the sides of the cube.\n * @param options - ImageResource options\n * @param {number} [options.width] - Width of resource\n * @param {number} [options.height] - Height of resource\n * @param {number} [options.autoLoad=true] - Whether to auto-load resources\n * @param {number} [options.linkBaseTexture=true] - In case BaseTextures are supplied,\n * whether to copy them or use\n */\n constructor(source, options) {\n const { width, height, autoLoad, linkBaseTexture } = options || {};\n if (source && source.length !== _CubeResource2.SIDES)\n throw new Error(`Invalid length. Got ${source.length}, expected 6`);\n super(6, { width, height });\n for (let i = 0; i < _CubeResource2.SIDES; i++)\n this.items[i].target = TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + i;\n this.linkBaseTexture = linkBaseTexture !== !1, source && this.initFromArray(source, options), autoLoad !== !1 && this.load();\n }\n /**\n * Add binding.\n * @param baseTexture - parent base texture\n */\n bind(baseTexture) {\n super.bind(baseTexture), baseTexture.target = TARGETS.TEXTURE_CUBE_MAP;\n }\n addBaseTextureAt(baseTexture, index, linkBaseTexture) {\n if (linkBaseTexture === void 0 && (linkBaseTexture = this.linkBaseTexture), !this.items[index])\n throw new Error(`Index ${index} is out of bounds`);\n if (!this.linkBaseTexture || baseTexture.parentTextureArray || Object.keys(baseTexture._glTextures).length > 0)\n if (baseTexture.resource)\n this.addResourceAt(baseTexture.resource, index);\n else\n throw new Error(\"CubeResource does not support copying of renderTexture.\");\n else\n baseTexture.target = TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + index, baseTexture.parentTextureArray = this.baseTexture, this.items[index] = baseTexture;\n return baseTexture.valid && !this.valid && this.resize(baseTexture.realWidth, baseTexture.realHeight), this.items[index] = baseTexture, this;\n }\n /**\n * Upload the resource\n * @param renderer\n * @param _baseTexture\n * @param glTexture\n * @returns {boolean} true is success\n */\n upload(renderer, _baseTexture, glTexture) {\n const dirty = this.itemDirtyIds;\n for (let i = 0; i < _CubeResource2.SIDES; i++) {\n const side = this.items[i];\n (dirty[i] < side.dirtyId || glTexture.dirtyId < _baseTexture.dirtyId) && (side.valid && side.resource ? (side.resource.upload(renderer, side, glTexture), dirty[i] = side.dirtyId) : dirty[i] < -1 && (renderer.gl.texImage2D(\n side.target,\n 0,\n glTexture.internalFormat,\n _baseTexture.realWidth,\n _baseTexture.realHeight,\n 0,\n _baseTexture.format,\n glTexture.type,\n null\n ), dirty[i] = -1));\n }\n return !0;\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @returns {boolean} `true` if source is an array of 6 elements\n */\n static test(source) {\n return Array.isArray(source) && source.length === _CubeResource2.SIDES;\n }\n};\n_CubeResource.SIDES = 6;\nlet CubeResource = _CubeResource;\nexport {\n CubeResource\n};\n//# sourceMappingURL=CubeResource.mjs.map\n","import { ALPHA_MODES } from \"@pixi/constants\";\nimport { settings } from \"@pixi/settings\";\nimport { BaseImageResource } from \"./BaseImageResource.mjs\";\nclass ImageBitmapResource extends BaseImageResource {\n /**\n * @param source - ImageBitmap or URL to use.\n * @param options - Options to use.\n */\n constructor(source, options) {\n options = options || {};\n let baseSource, url, ownsImageBitmap;\n typeof source == \"string\" ? (baseSource = ImageBitmapResource.EMPTY, url = source, ownsImageBitmap = !0) : (baseSource = source, url = null, ownsImageBitmap = !1), super(baseSource), this.url = url, this.crossOrigin = options.crossOrigin ?? !0, this.alphaMode = typeof options.alphaMode == \"number\" ? options.alphaMode : null, this.ownsImageBitmap = options.ownsImageBitmap ?? ownsImageBitmap, this._load = null, options.autoLoad !== !1 && this.load();\n }\n load() {\n return this._load ? this._load : (this._load = new Promise(async (resolve, reject) => {\n if (this.url === null) {\n resolve(this);\n return;\n }\n try {\n const response = await settings.ADAPTER.fetch(this.url, {\n mode: this.crossOrigin ? \"cors\" : \"no-cors\"\n });\n if (this.destroyed)\n return;\n const imageBlob = await response.blob();\n if (this.destroyed)\n return;\n const imageBitmap = await createImageBitmap(imageBlob, {\n premultiplyAlpha: this.alphaMode === null || this.alphaMode === ALPHA_MODES.UNPACK ? \"premultiply\" : \"none\"\n });\n if (this.destroyed) {\n imageBitmap.close();\n return;\n }\n this.source = imageBitmap, this.update(), resolve(this);\n } catch (e) {\n if (this.destroyed)\n return;\n reject(e), this.onError.emit(e);\n }\n }), this._load);\n }\n /**\n * Upload the image bitmap resource to GPU.\n * @param renderer - Renderer to upload to\n * @param baseTexture - BaseTexture for this resource\n * @param glTexture - GLTexture to use\n * @returns {boolean} true is success\n */\n upload(renderer, baseTexture, glTexture) {\n return this.source instanceof ImageBitmap ? (typeof this.alphaMode == \"number\" && (baseTexture.alphaMode = this.alphaMode), super.upload(renderer, baseTexture, glTexture)) : (this.load(), !1);\n }\n /** Destroys this resource. */\n dispose() {\n this.ownsImageBitmap && this.source instanceof ImageBitmap && this.source.close(), super.dispose(), this._load = null;\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @returns {boolean} `true` if current environment support ImageBitmap, and source is string or ImageBitmap\n */\n static test(source) {\n return !!globalThis.createImageBitmap && typeof ImageBitmap < \"u\" && (typeof source == \"string\" || source instanceof ImageBitmap);\n }\n /**\n * ImageBitmap cannot be created synchronously, so a empty placeholder canvas is needed when loading from URLs.\n * Only for internal usage.\n * @returns The cached placeholder canvas.\n */\n static get EMPTY() {\n return ImageBitmapResource._EMPTY = ImageBitmapResource._EMPTY ?? settings.ADAPTER.createCanvas(0, 0), ImageBitmapResource._EMPTY;\n }\n}\nexport {\n ImageBitmapResource\n};\n//# sourceMappingURL=ImageBitmapResource.mjs.map\n","import { settings } from \"@pixi/settings\";\nimport { uid } from \"@pixi/utils\";\nimport { BaseImageResource } from \"./BaseImageResource.mjs\";\nconst _SVGResource = class _SVGResource2 extends BaseImageResource {\n /**\n * @param sourceBase64 - Base64 encoded SVG element or URL for SVG file.\n * @param {object} [options] - Options to use\n * @param {number} [options.scale=1] - Scale to apply to SVG. Overridden by...\n * @param {number} [options.width] - Rasterize SVG this wide. Aspect ratio preserved if height not specified.\n * @param {number} [options.height] - Rasterize SVG this high. Aspect ratio preserved if width not specified.\n * @param {boolean} [options.autoLoad=true] - Start loading right away.\n */\n constructor(sourceBase64, options) {\n options = options || {}, super(settings.ADAPTER.createCanvas()), this._width = 0, this._height = 0, this.svg = sourceBase64, this.scale = options.scale || 1, this._overrideWidth = options.width, this._overrideHeight = options.height, this._resolve = null, this._crossorigin = options.crossorigin, this._load = null, options.autoLoad !== !1 && this.load();\n }\n load() {\n return this._load ? this._load : (this._load = new Promise((resolve) => {\n if (this._resolve = () => {\n this.update(), resolve(this);\n }, _SVGResource2.SVG_XML.test(this.svg.trim())) {\n if (!btoa)\n throw new Error(\"Your browser doesn't support base64 conversions.\");\n this.svg = `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`;\n }\n this._loadSvg();\n }), this._load);\n }\n /** Loads an SVG image from `imageUrl` or `data URL`. */\n _loadSvg() {\n const tempImage = new Image();\n BaseImageResource.crossOrigin(tempImage, this.svg, this._crossorigin), tempImage.src = this.svg, tempImage.onerror = (event) => {\n this._resolve && (tempImage.onerror = null, this.onError.emit(event));\n }, tempImage.onload = () => {\n if (!this._resolve)\n return;\n const svgWidth = tempImage.width, svgHeight = tempImage.height;\n if (!svgWidth || !svgHeight)\n throw new Error(\"The SVG image must have width and height defined (in pixels), canvas API needs them.\");\n let width = svgWidth * this.scale, height = svgHeight * this.scale;\n (this._overrideWidth || this._overrideHeight) && (width = this._overrideWidth || this._overrideHeight / svgHeight * svgWidth, height = this._overrideHeight || this._overrideWidth / svgWidth * svgHeight), width = Math.round(width), height = Math.round(height);\n const canvas = this.source;\n canvas.width = width, canvas.height = height, canvas._pixiId = `canvas_${uid()}`, canvas.getContext(\"2d\").drawImage(tempImage, 0, 0, svgWidth, svgHeight, 0, 0, width, height), this._resolve(), this._resolve = null;\n };\n }\n /**\n * Get size from an svg string using a regular expression.\n * @param svgString - a serialized svg element\n * @returns - image extension\n */\n static getSize(svgString) {\n const sizeMatch = _SVGResource2.SVG_SIZE.exec(svgString), size = {};\n return sizeMatch && (size[sizeMatch[1]] = Math.round(parseFloat(sizeMatch[3])), size[sizeMatch[5]] = Math.round(parseFloat(sizeMatch[7]))), size;\n }\n /** Destroys this texture. */\n dispose() {\n super.dispose(), this._resolve = null, this._crossorigin = null;\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @param {string} extension - The extension of source, if set\n * @returns {boolean} - If the source is a SVG source or data file\n */\n static test(source, extension) {\n return extension === \"svg\" || typeof source == \"string\" && source.startsWith(\"data:image/svg+xml\") || typeof source == \"string\" && _SVGResource2.SVG_XML.test(source);\n }\n // eslint-disable-line max-len\n};\n_SVGResource.SVG_XML = /^(<\\?xml[^?]+\\?>)?\\s*()]*-->)?\\s*\\]*(?:\\s(width|height)=('|\")(\\d*(?:\\.\\d+)?)(?:px)?('|\"))[^>]*(?:\\s(width|height)=('|\")(\\d*(?:\\.\\d+)?)(?:px)?('|\"))[^>]*>/i;\nlet SVGResource = _SVGResource;\nexport {\n SVGResource\n};\n//# sourceMappingURL=SVGResource.mjs.map\n","import { BaseImageResource } from \"./BaseImageResource.mjs\";\nclass VideoFrameResource extends BaseImageResource {\n /**\n * @param source - Image element to use\n */\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(source) {\n super(source);\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @returns {boolean} `true` if source is an VideoFrame\n */\n static test(source) {\n return !!globalThis.VideoFrame && source instanceof globalThis.VideoFrame;\n }\n}\nexport {\n VideoFrameResource\n};\n//# sourceMappingURL=VideoFrameResource.mjs.map\n","import { Ticker } from \"@pixi/ticker\";\nimport { BaseImageResource } from \"./BaseImageResource.mjs\";\nconst _VideoResource = class _VideoResource2 extends BaseImageResource {\n /**\n * @param {HTMLVideoElement|object|string|Array} source - Video element to use.\n * @param {object} [options] - Options to use\n * @param {boolean} [options.autoLoad=true] - Start loading the video immediately\n * @param {boolean} [options.autoPlay=true] - Start playing video immediately\n * @param {number} [options.updateFPS=0] - How many times a second to update the texture from the video.\n * If 0, `requestVideoFrameCallback` is used to update the texture.\n * If `requestVideoFrameCallback` is not available, the texture is updated every render.\n * @param {boolean} [options.crossorigin=true] - Load image using cross origin\n * @param {boolean} [options.loop=false] - Loops the video\n * @param {boolean} [options.muted=false] - Mutes the video audio, useful for autoplay\n * @param {boolean} [options.playsinline=true] - Prevents opening the video on mobile devices\n */\n constructor(source, options) {\n if (options = options || {}, !(source instanceof HTMLVideoElement)) {\n const videoElement = document.createElement(\"video\");\n options.autoLoad !== !1 && videoElement.setAttribute(\"preload\", \"auto\"), options.playsinline !== !1 && (videoElement.setAttribute(\"webkit-playsinline\", \"\"), videoElement.setAttribute(\"playsinline\", \"\")), options.muted === !0 && (videoElement.setAttribute(\"muted\", \"\"), videoElement.muted = !0), options.loop === !0 && videoElement.setAttribute(\"loop\", \"\"), options.autoPlay !== !1 && videoElement.setAttribute(\"autoplay\", \"\"), typeof source == \"string\" && (source = [source]);\n const firstSrc = source[0].src || source[0];\n BaseImageResource.crossOrigin(videoElement, firstSrc, options.crossorigin);\n for (let i = 0; i < source.length; ++i) {\n const sourceElement = document.createElement(\"source\");\n let { src, mime } = source[i];\n if (src = src || source[i], src.startsWith(\"data:\"))\n mime = src.slice(5, src.indexOf(\";\"));\n else if (!src.startsWith(\"blob:\")) {\n const baseSrc = src.split(\"?\").shift().toLowerCase(), ext = baseSrc.slice(baseSrc.lastIndexOf(\".\") + 1);\n mime = mime || _VideoResource2.MIME_TYPES[ext] || `video/${ext}`;\n }\n sourceElement.src = src, mime && (sourceElement.type = mime), videoElement.appendChild(sourceElement);\n }\n source = videoElement;\n }\n super(source), this.noSubImage = !0, this._autoUpdate = !0, this._isConnectedToTicker = !1, this._updateFPS = options.updateFPS || 0, this._msToNextUpdate = 0, this.autoPlay = options.autoPlay !== !1, this._videoFrameRequestCallback = this._videoFrameRequestCallback.bind(this), this._videoFrameRequestCallbackHandle = null, this._load = null, this._resolve = null, this._reject = null, this._onCanPlay = this._onCanPlay.bind(this), this._onError = this._onError.bind(this), this._onPlayStart = this._onPlayStart.bind(this), this._onPlayStop = this._onPlayStop.bind(this), this._onSeeked = this._onSeeked.bind(this), options.autoLoad !== !1 && this.load();\n }\n /**\n * Trigger updating of the texture.\n * @param _deltaTime - time delta since last tick\n */\n update(_deltaTime = 0) {\n if (!this.destroyed) {\n if (this._updateFPS) {\n const elapsedMS = Ticker.shared.elapsedMS * this.source.playbackRate;\n this._msToNextUpdate = Math.floor(this._msToNextUpdate - elapsedMS);\n }\n (!this._updateFPS || this._msToNextUpdate <= 0) && (super.update(\n /* deltaTime*/\n ), this._msToNextUpdate = this._updateFPS ? Math.floor(1e3 / this._updateFPS) : 0);\n }\n }\n _videoFrameRequestCallback() {\n this.update(), this.destroyed ? this._videoFrameRequestCallbackHandle = null : this._videoFrameRequestCallbackHandle = this.source.requestVideoFrameCallback(\n this._videoFrameRequestCallback\n );\n }\n /**\n * Start preloading the video resource.\n * @returns {Promise} Handle the validate event\n */\n load() {\n if (this._load)\n return this._load;\n const source = this.source;\n return (source.readyState === source.HAVE_ENOUGH_DATA || source.readyState === source.HAVE_FUTURE_DATA) && source.width && source.height && (source.complete = !0), source.addEventListener(\"play\", this._onPlayStart), source.addEventListener(\"pause\", this._onPlayStop), source.addEventListener(\"seeked\", this._onSeeked), this._isSourceReady() ? this._onCanPlay() : (source.addEventListener(\"canplay\", this._onCanPlay), source.addEventListener(\"canplaythrough\", this._onCanPlay), source.addEventListener(\"error\", this._onError, !0)), this._load = new Promise((resolve, reject) => {\n this.valid ? resolve(this) : (this._resolve = resolve, this._reject = reject, source.load());\n }), this._load;\n }\n /**\n * Handle video error events.\n * @param event\n */\n _onError(event) {\n this.source.removeEventListener(\"error\", this._onError, !0), this.onError.emit(event), this._reject && (this._reject(event), this._reject = null, this._resolve = null);\n }\n /**\n * Returns true if the underlying source is playing.\n * @returns - True if playing.\n */\n _isSourcePlaying() {\n const source = this.source;\n return !source.paused && !source.ended;\n }\n /**\n * Returns true if the underlying source is ready for playing.\n * @returns - True if ready.\n */\n _isSourceReady() {\n return this.source.readyState > 2;\n }\n /** Runs the update loop when the video is ready to play. */\n _onPlayStart() {\n this.valid || this._onCanPlay(), this._configureAutoUpdate();\n }\n /** Fired when a pause event is triggered, stops the update loop. */\n _onPlayStop() {\n this._configureAutoUpdate();\n }\n /** Fired when the video is completed seeking to the current playback position. */\n _onSeeked() {\n this._autoUpdate && !this._isSourcePlaying() && (this._msToNextUpdate = 0, this.update(), this._msToNextUpdate = 0);\n }\n /** Fired when the video is loaded and ready to play. */\n _onCanPlay() {\n const source = this.source;\n source.removeEventListener(\"canplay\", this._onCanPlay), source.removeEventListener(\"canplaythrough\", this._onCanPlay);\n const valid = this.valid;\n this._msToNextUpdate = 0, this.update(), this._msToNextUpdate = 0, !valid && this._resolve && (this._resolve(this), this._resolve = null, this._reject = null), this._isSourcePlaying() ? this._onPlayStart() : this.autoPlay && source.play();\n }\n /** Destroys this texture. */\n dispose() {\n this._configureAutoUpdate();\n const source = this.source;\n source && (source.removeEventListener(\"play\", this._onPlayStart), source.removeEventListener(\"pause\", this._onPlayStop), source.removeEventListener(\"seeked\", this._onSeeked), source.removeEventListener(\"canplay\", this._onCanPlay), source.removeEventListener(\"canplaythrough\", this._onCanPlay), source.removeEventListener(\"error\", this._onError, !0), source.pause(), source.src = \"\", source.load()), super.dispose();\n }\n /** Should the base texture automatically update itself, set to true by default. */\n get autoUpdate() {\n return this._autoUpdate;\n }\n set autoUpdate(value) {\n value !== this._autoUpdate && (this._autoUpdate = value, this._configureAutoUpdate());\n }\n /**\n * How many times a second to update the texture from the video. If 0, `requestVideoFrameCallback` is used to\n * update the texture. If `requestVideoFrameCallback` is not available, the texture is updated every render.\n * A lower fps can help performance, as updating the texture at 60fps on a 30ps video may not be efficient.\n */\n get updateFPS() {\n return this._updateFPS;\n }\n set updateFPS(value) {\n value !== this._updateFPS && (this._updateFPS = value, this._configureAutoUpdate());\n }\n _configureAutoUpdate() {\n this._autoUpdate && this._isSourcePlaying() ? !this._updateFPS && this.source.requestVideoFrameCallback ? (this._isConnectedToTicker && (Ticker.shared.remove(this.update, this), this._isConnectedToTicker = !1, this._msToNextUpdate = 0), this._videoFrameRequestCallbackHandle === null && (this._videoFrameRequestCallbackHandle = this.source.requestVideoFrameCallback(\n this._videoFrameRequestCallback\n ))) : (this._videoFrameRequestCallbackHandle !== null && (this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle), this._videoFrameRequestCallbackHandle = null), this._isConnectedToTicker || (Ticker.shared.add(this.update, this), this._isConnectedToTicker = !0, this._msToNextUpdate = 0)) : (this._videoFrameRequestCallbackHandle !== null && (this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle), this._videoFrameRequestCallbackHandle = null), this._isConnectedToTicker && (Ticker.shared.remove(this.update, this), this._isConnectedToTicker = !1, this._msToNextUpdate = 0));\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @param {string} extension - The extension of source, if set\n * @returns {boolean} `true` if video source\n */\n static test(source, extension) {\n return globalThis.HTMLVideoElement && source instanceof HTMLVideoElement || _VideoResource2.TYPES.includes(extension);\n }\n};\n_VideoResource.TYPES = [\"mp4\", \"m4v\", \"webm\", \"ogg\", \"ogv\", \"h264\", \"avi\", \"mov\"], /**\n* Map of video MIME types that can't be directly derived from file extensions.\n* @readonly\n*/\n_VideoResource.MIME_TYPES = {\n ogv: \"video/ogg\",\n mov: \"video/quicktime\",\n m4v: \"video/mp4\"\n};\nlet VideoResource = _VideoResource;\nexport {\n VideoResource\n};\n//# sourceMappingURL=VideoResource.mjs.map\n","import { ArrayResource } from \"./ArrayResource.mjs\";\nimport { INSTALLED } from \"./autoDetectResource.mjs\";\nimport { autoDetectResource } from \"./autoDetectResource.mjs\";\nimport { BufferResource } from \"./BufferResource.mjs\";\nimport { CanvasResource } from \"./CanvasResource.mjs\";\nimport { CubeResource } from \"./CubeResource.mjs\";\nimport { ImageBitmapResource } from \"./ImageBitmapResource.mjs\";\nimport { ImageResource } from \"./ImageResource.mjs\";\nimport { SVGResource } from \"./SVGResource.mjs\";\nimport { VideoFrameResource } from \"./VideoFrameResource.mjs\";\nimport { VideoResource } from \"./VideoResource.mjs\";\nimport { BaseImageResource } from \"./BaseImageResource.mjs\";\nimport { Resource } from \"./Resource.mjs\";\nimport { AbstractMultiResource } from \"./AbstractMultiResource.mjs\";\nINSTALLED.push(\n ImageBitmapResource,\n ImageResource,\n CanvasResource,\n VideoResource,\n VideoFrameResource,\n SVGResource,\n BufferResource,\n CubeResource,\n ArrayResource\n);\nexport {\n AbstractMultiResource,\n ArrayResource,\n BaseImageResource,\n BufferResource,\n CanvasResource,\n CubeResource,\n INSTALLED,\n ImageBitmapResource,\n ImageResource,\n Resource,\n SVGResource,\n VideoResource,\n autoDetectResource\n};\n//# sourceMappingURL=index.mjs.map\n","import { Rectangle } from \"@pixi/core\";\nclass Bounds {\n constructor() {\n this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0, this.rect = null, this.updateID = -1;\n }\n /**\n * Checks if bounds are empty.\n * @returns - True if empty.\n */\n isEmpty() {\n return this.minX > this.maxX || this.minY > this.maxY;\n }\n /** Clears the bounds and resets. */\n clear() {\n this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0;\n }\n /**\n * Can return Rectangle.EMPTY constant, either construct new rectangle, either use your rectangle\n * It is not guaranteed that it will return tempRect\n * @param rect - Temporary object will be used if AABB is not empty\n * @returns - A rectangle of the bounds\n */\n getRectangle(rect) {\n return this.minX > this.maxX || this.minY > this.maxY ? Rectangle.EMPTY : (rect = rect || new Rectangle(0, 0, 1, 1), rect.x = this.minX, rect.y = this.minY, rect.width = this.maxX - this.minX, rect.height = this.maxY - this.minY, rect);\n }\n /**\n * This function should be inlined when its possible.\n * @param point - The point to add.\n */\n addPoint(point) {\n this.minX = Math.min(this.minX, point.x), this.maxX = Math.max(this.maxX, point.x), this.minY = Math.min(this.minY, point.y), this.maxY = Math.max(this.maxY, point.y);\n }\n /**\n * Adds a point, after transformed. This should be inlined when its possible.\n * @param matrix\n * @param point\n */\n addPointMatrix(matrix, point) {\n const { a, b, c, d, tx, ty } = matrix, x = a * point.x + c * point.y + tx, y = b * point.x + d * point.y + ty;\n this.minX = Math.min(this.minX, x), this.maxX = Math.max(this.maxX, x), this.minY = Math.min(this.minY, y), this.maxY = Math.max(this.maxY, y);\n }\n /**\n * Adds a quad, not transformed\n * @param vertices - The verts to add.\n */\n addQuad(vertices) {\n let minX = this.minX, minY = this.minY, maxX = this.maxX, maxY = this.maxY, x = vertices[0], y = vertices[1];\n minX = x < minX ? x : minX, minY = y < minY ? y : minY, maxX = x > maxX ? x : maxX, maxY = y > maxY ? y : maxY, x = vertices[2], y = vertices[3], minX = x < minX ? x : minX, minY = y < minY ? y : minY, maxX = x > maxX ? x : maxX, maxY = y > maxY ? y : maxY, x = vertices[4], y = vertices[5], minX = x < minX ? x : minX, minY = y < minY ? y : minY, maxX = x > maxX ? x : maxX, maxY = y > maxY ? y : maxY, x = vertices[6], y = vertices[7], minX = x < minX ? x : minX, minY = y < minY ? y : minY, maxX = x > maxX ? x : maxX, maxY = y > maxY ? y : maxY, this.minX = minX, this.minY = minY, this.maxX = maxX, this.maxY = maxY;\n }\n /**\n * Adds sprite frame, transformed.\n * @param transform - transform to apply\n * @param x0 - left X of frame\n * @param y0 - top Y of frame\n * @param x1 - right X of frame\n * @param y1 - bottom Y of frame\n */\n addFrame(transform, x0, y0, x1, y1) {\n this.addFrameMatrix(transform.worldTransform, x0, y0, x1, y1);\n }\n /**\n * Adds sprite frame, multiplied by matrix\n * @param matrix - matrix to apply\n * @param x0 - left X of frame\n * @param y0 - top Y of frame\n * @param x1 - right X of frame\n * @param y1 - bottom Y of frame\n */\n addFrameMatrix(matrix, x0, y0, x1, y1) {\n const a = matrix.a, b = matrix.b, c = matrix.c, d = matrix.d, tx = matrix.tx, ty = matrix.ty;\n let minX = this.minX, minY = this.minY, maxX = this.maxX, maxY = this.maxY, x = a * x0 + c * y0 + tx, y = b * x0 + d * y0 + ty;\n minX = x < minX ? x : minX, minY = y < minY ? y : minY, maxX = x > maxX ? x : maxX, maxY = y > maxY ? y : maxY, x = a * x1 + c * y0 + tx, y = b * x1 + d * y0 + ty, minX = x < minX ? x : minX, minY = y < minY ? y : minY, maxX = x > maxX ? x : maxX, maxY = y > maxY ? y : maxY, x = a * x0 + c * y1 + tx, y = b * x0 + d * y1 + ty, minX = x < minX ? x : minX, minY = y < minY ? y : minY, maxX = x > maxX ? x : maxX, maxY = y > maxY ? y : maxY, x = a * x1 + c * y1 + tx, y = b * x1 + d * y1 + ty, minX = x < minX ? x : minX, minY = y < minY ? y : minY, maxX = x > maxX ? x : maxX, maxY = y > maxY ? y : maxY, this.minX = minX, this.minY = minY, this.maxX = maxX, this.maxY = maxY;\n }\n /**\n * Adds screen vertices from array\n * @param vertexData - calculated vertices\n * @param beginOffset - begin offset\n * @param endOffset - end offset, excluded\n */\n addVertexData(vertexData, beginOffset, endOffset) {\n let minX = this.minX, minY = this.minY, maxX = this.maxX, maxY = this.maxY;\n for (let i = beginOffset; i < endOffset; i += 2) {\n const x = vertexData[i], y = vertexData[i + 1];\n minX = x < minX ? x : minX, minY = y < minY ? y : minY, maxX = x > maxX ? x : maxX, maxY = y > maxY ? y : maxY;\n }\n this.minX = minX, this.minY = minY, this.maxX = maxX, this.maxY = maxY;\n }\n /**\n * Add an array of mesh vertices\n * @param transform - mesh transform\n * @param vertices - mesh coordinates in array\n * @param beginOffset - begin offset\n * @param endOffset - end offset, excluded\n */\n addVertices(transform, vertices, beginOffset, endOffset) {\n this.addVerticesMatrix(transform.worldTransform, vertices, beginOffset, endOffset);\n }\n /**\n * Add an array of mesh vertices.\n * @param matrix - mesh matrix\n * @param vertices - mesh coordinates in array\n * @param beginOffset - begin offset\n * @param endOffset - end offset, excluded\n * @param padX - x padding\n * @param padY - y padding\n */\n addVerticesMatrix(matrix, vertices, beginOffset, endOffset, padX = 0, padY = padX) {\n const a = matrix.a, b = matrix.b, c = matrix.c, d = matrix.d, tx = matrix.tx, ty = matrix.ty;\n let minX = this.minX, minY = this.minY, maxX = this.maxX, maxY = this.maxY;\n for (let i = beginOffset; i < endOffset; i += 2) {\n const rawX = vertices[i], rawY = vertices[i + 1], x = a * rawX + c * rawY + tx, y = d * rawY + b * rawX + ty;\n minX = Math.min(minX, x - padX), maxX = Math.max(maxX, x + padX), minY = Math.min(minY, y - padY), maxY = Math.max(maxY, y + padY);\n }\n this.minX = minX, this.minY = minY, this.maxX = maxX, this.maxY = maxY;\n }\n /**\n * Adds other {@link PIXI.Bounds}.\n * @param bounds - The Bounds to be added\n */\n addBounds(bounds) {\n const minX = this.minX, minY = this.minY, maxX = this.maxX, maxY = this.maxY;\n this.minX = bounds.minX < minX ? bounds.minX : minX, this.minY = bounds.minY < minY ? bounds.minY : minY, this.maxX = bounds.maxX > maxX ? bounds.maxX : maxX, this.maxY = bounds.maxY > maxY ? bounds.maxY : maxY;\n }\n /**\n * Adds other Bounds, masked with Bounds.\n * @param bounds - The Bounds to be added.\n * @param mask - TODO\n */\n addBoundsMask(bounds, mask) {\n const _minX = bounds.minX > mask.minX ? bounds.minX : mask.minX, _minY = bounds.minY > mask.minY ? bounds.minY : mask.minY, _maxX = bounds.maxX < mask.maxX ? bounds.maxX : mask.maxX, _maxY = bounds.maxY < mask.maxY ? bounds.maxY : mask.maxY;\n if (_minX <= _maxX && _minY <= _maxY) {\n const minX = this.minX, minY = this.minY, maxX = this.maxX, maxY = this.maxY;\n this.minX = _minX < minX ? _minX : minX, this.minY = _minY < minY ? _minY : minY, this.maxX = _maxX > maxX ? _maxX : maxX, this.maxY = _maxY > maxY ? _maxY : maxY;\n }\n }\n /**\n * Adds other Bounds, multiplied by matrix. Bounds shouldn't be empty.\n * @param bounds - other bounds\n * @param matrix - multiplicator\n */\n addBoundsMatrix(bounds, matrix) {\n this.addFrameMatrix(matrix, bounds.minX, bounds.minY, bounds.maxX, bounds.maxY);\n }\n /**\n * Adds other Bounds, masked with Rectangle.\n * @param bounds - TODO\n * @param area - TODO\n */\n addBoundsArea(bounds, area) {\n const _minX = bounds.minX > area.x ? bounds.minX : area.x, _minY = bounds.minY > area.y ? bounds.minY : area.y, _maxX = bounds.maxX < area.x + area.width ? bounds.maxX : area.x + area.width, _maxY = bounds.maxY < area.y + area.height ? bounds.maxY : area.y + area.height;\n if (_minX <= _maxX && _minY <= _maxY) {\n const minX = this.minX, minY = this.minY, maxX = this.maxX, maxY = this.maxY;\n this.minX = _minX < minX ? _minX : minX, this.minY = _minY < minY ? _minY : minY, this.maxX = _maxX > maxX ? _maxX : maxX, this.maxY = _maxY > maxY ? _maxY : maxY;\n }\n }\n /**\n * Pads bounds object, making it grow in all directions.\n * If paddingY is omitted, both paddingX and paddingY will be set to paddingX.\n * @param paddingX - The horizontal padding amount.\n * @param paddingY - The vertical padding amount.\n */\n pad(paddingX = 0, paddingY = paddingX) {\n this.isEmpty() || (this.minX -= paddingX, this.maxX += paddingX, this.minY -= paddingY, this.maxY += paddingY);\n }\n /**\n * Adds padded frame. (x0, y0) should be strictly less than (x1, y1)\n * @param x0 - left X of frame\n * @param y0 - top Y of frame\n * @param x1 - right X of frame\n * @param y1 - bottom Y of frame\n * @param padX - padding X\n * @param padY - padding Y\n */\n addFramePad(x0, y0, x1, y1, padX, padY) {\n x0 -= padX, y0 -= padY, x1 += padX, y1 += padY, this.minX = this.minX < x0 ? this.minX : x0, this.maxX = this.maxX > x1 ? this.maxX : x1, this.minY = this.minY < y0 ? this.minY : y0, this.maxY = this.maxY > y1 ? this.maxY : y1;\n }\n}\nexport {\n Bounds\n};\n//# sourceMappingURL=Bounds.mjs.map\n","import { utils, Transform, Rectangle, RAD_TO_DEG, DEG_TO_RAD } from \"@pixi/core\";\nimport { Bounds } from \"./Bounds.mjs\";\nclass DisplayObject extends utils.EventEmitter {\n constructor() {\n super(), this.tempDisplayObjectParent = null, this.transform = new Transform(), this.alpha = 1, this.visible = !0, this.renderable = !0, this.cullable = !1, this.cullArea = null, this.parent = null, this.worldAlpha = 1, this._lastSortedIndex = 0, this._zIndex = 0, this.filterArea = null, this.filters = null, this._enabledFilters = null, this._bounds = new Bounds(), this._localBounds = null, this._boundsID = 0, this._boundsRect = null, this._localBoundsRect = null, this._mask = null, this._maskRefCount = 0, this._destroyed = !1, this.isSprite = !1, this.isMask = !1;\n }\n /**\n * Mixes all enumerable properties and methods from a source object to DisplayObject.\n * @param source - The source of properties and methods to mix in.\n */\n static mixin(source) {\n const keys = Object.keys(source);\n for (let i = 0; i < keys.length; ++i) {\n const propertyName = keys[i];\n Object.defineProperty(\n DisplayObject.prototype,\n propertyName,\n Object.getOwnPropertyDescriptor(source, propertyName)\n );\n }\n }\n /**\n * Fired when this DisplayObject is added to a Container.\n * @instance\n * @event added\n * @param {PIXI.Container} container - The container added to.\n */\n /**\n * Fired when this DisplayObject is removed from a Container.\n * @instance\n * @event removed\n * @param {PIXI.Container} container - The container removed from.\n */\n /**\n * Fired when this DisplayObject is destroyed. This event is emitted once\n * destroy is finished.\n * @instance\n * @event destroyed\n */\n /** Readonly flag for destroyed display objects. */\n get destroyed() {\n return this._destroyed;\n }\n /** Recursively updates transform of all objects from the root to this one internal function for toLocal() */\n _recursivePostUpdateTransform() {\n this.parent ? (this.parent._recursivePostUpdateTransform(), this.transform.updateTransform(this.parent.transform)) : this.transform.updateTransform(this._tempDisplayObjectParent.transform);\n }\n /** Updates the object transform for rendering. TODO - Optimization pass! */\n updateTransform() {\n this._boundsID++, this.transform.updateTransform(this.parent.transform), this.worldAlpha = this.alpha * this.parent.worldAlpha;\n }\n /**\n * Calculates and returns the (world) bounds of the display object as a [Rectangle]{@link PIXI.Rectangle}.\n *\n * This method is expensive on containers with a large subtree (like the stage). This is because the bounds\n * of a container depend on its children's bounds, which recursively causes all bounds in the subtree to\n * be recalculated. The upside, however, is that calling `getBounds` once on a container will indeed update\n * the bounds of all children (the whole subtree, in fact). This side effect should be exploited by using\n * `displayObject._bounds.getRectangle()` when traversing through all the bounds in a scene graph. Otherwise,\n * calling `getBounds` on each object in a subtree will cause the total cost to increase quadratically as\n * its height increases.\n *\n * The transforms of all objects in a container's **subtree** and of all **ancestors** are updated.\n * The world bounds of all display objects in a container's **subtree** will also be recalculated.\n *\n * The `_bounds` object stores the last calculation of the bounds. You can use to entirely skip bounds\n * calculation if needed.\n *\n * ```js\n * const lastCalculatedBounds = displayObject._bounds.getRectangle(optionalRect);\n * ```\n *\n * Do know that usage of `getLocalBounds` can corrupt the `_bounds` of children (the whole subtree, actually). This\n * is a known issue that has not been solved. See [getLocalBounds]{@link PIXI.DisplayObject#getLocalBounds} for more\n * details.\n *\n * `getBounds` should be called with `skipUpdate` equal to `true` in a render() call. This is because the transforms\n * are guaranteed to be update-to-date. In fact, recalculating inside a render() call may cause corruption in certain\n * cases.\n * @param skipUpdate - Setting to `true` will stop the transforms of the scene graph from\n * being updated. This means the calculation returned MAY be out of date BUT will give you a\n * nice performance boost.\n * @param rect - Optional rectangle to store the result of the bounds calculation.\n * @returns - The minimum axis-aligned rectangle in world space that fits around this object.\n */\n getBounds(skipUpdate, rect) {\n return skipUpdate || (this.parent ? (this._recursivePostUpdateTransform(), this.updateTransform()) : (this.parent = this._tempDisplayObjectParent, this.updateTransform(), this.parent = null)), this._bounds.updateID !== this._boundsID && (this.calculateBounds(), this._bounds.updateID = this._boundsID), rect || (this._boundsRect || (this._boundsRect = new Rectangle()), rect = this._boundsRect), this._bounds.getRectangle(rect);\n }\n /**\n * Retrieves the local bounds of the displayObject as a rectangle object.\n * @param rect - Optional rectangle to store the result of the bounds calculation.\n * @returns - The rectangular bounding area.\n */\n getLocalBounds(rect) {\n rect || (this._localBoundsRect || (this._localBoundsRect = new Rectangle()), rect = this._localBoundsRect), this._localBounds || (this._localBounds = new Bounds());\n const transformRef = this.transform, parentRef = this.parent;\n this.parent = null, this._tempDisplayObjectParent.worldAlpha = parentRef?.worldAlpha ?? 1, this.transform = this._tempDisplayObjectParent.transform;\n const worldBounds = this._bounds, worldBoundsID = this._boundsID;\n this._bounds = this._localBounds;\n const bounds = this.getBounds(!1, rect);\n return this.parent = parentRef, this.transform = transformRef, this._bounds = worldBounds, this._bounds.updateID += this._boundsID - worldBoundsID, bounds;\n }\n /**\n * Calculates the global position of the display object.\n * @param position - The world origin to calculate from.\n * @param point - A Point object in which to store the value, optional\n * (otherwise will create a new Point).\n * @param skipUpdate - Should we skip the update transform.\n * @returns - A point object representing the position of this object.\n */\n toGlobal(position, point, skipUpdate = !1) {\n return skipUpdate || (this._recursivePostUpdateTransform(), this.parent ? this.displayObjectUpdateTransform() : (this.parent = this._tempDisplayObjectParent, this.displayObjectUpdateTransform(), this.parent = null)), this.worldTransform.apply(position, point);\n }\n /**\n * Calculates the local position of the display object relative to another point.\n * @param position - The world origin to calculate from.\n * @param from - The DisplayObject to calculate the global position from.\n * @param point - A Point object in which to store the value, optional\n * (otherwise will create a new Point).\n * @param skipUpdate - Should we skip the update transform\n * @returns - A point object representing the position of this object\n */\n toLocal(position, from, point, skipUpdate) {\n return from && (position = from.toGlobal(position, point, skipUpdate)), skipUpdate || (this._recursivePostUpdateTransform(), this.parent ? this.displayObjectUpdateTransform() : (this.parent = this._tempDisplayObjectParent, this.displayObjectUpdateTransform(), this.parent = null)), this.worldTransform.applyInverse(position, point);\n }\n /**\n * Set the parent Container of this DisplayObject.\n * @param container - The Container to add this DisplayObject to.\n * @returns - The Container that this DisplayObject was added to.\n */\n setParent(container) {\n if (!container || !container.addChild)\n throw new Error(\"setParent: Argument must be a Container\");\n return container.addChild(this), container;\n }\n /** Remove the DisplayObject from its parent Container. If the DisplayObject has no parent, do nothing. */\n removeFromParent() {\n this.parent?.removeChild(this);\n }\n /**\n * Convenience function to set the position, scale, skew and pivot at once.\n * @param x - The X position\n * @param y - The Y position\n * @param scaleX - The X scale value\n * @param scaleY - The Y scale value\n * @param rotation - The rotation\n * @param skewX - The X skew value\n * @param skewY - The Y skew value\n * @param pivotX - The X pivot value\n * @param pivotY - The Y pivot value\n * @returns - The DisplayObject instance\n */\n setTransform(x = 0, y = 0, scaleX = 1, scaleY = 1, rotation = 0, skewX = 0, skewY = 0, pivotX = 0, pivotY = 0) {\n return this.position.x = x, this.position.y = y, this.scale.x = scaleX || 1, this.scale.y = scaleY || 1, this.rotation = rotation, this.skew.x = skewX, this.skew.y = skewY, this.pivot.x = pivotX, this.pivot.y = pivotY, this;\n }\n /**\n * Base destroy method for generic display objects. This will automatically\n * remove the display object from its parent Container as well as remove\n * all current event listeners and internal references. Do not use a DisplayObject\n * after calling `destroy()`.\n * @param _options\n */\n destroy(_options) {\n this.removeFromParent(), this._destroyed = !0, this.transform = null, this.parent = null, this._bounds = null, this.mask = null, this.cullArea = null, this.filters = null, this.filterArea = null, this.hitArea = null, this.eventMode = \"auto\", this.interactiveChildren = !1, this.emit(\"destroyed\"), this.removeAllListeners();\n }\n /**\n * @protected\n * @member {PIXI.Container}\n */\n get _tempDisplayObjectParent() {\n return this.tempDisplayObjectParent === null && (this.tempDisplayObjectParent = new TemporaryDisplayObject()), this.tempDisplayObjectParent;\n }\n /**\n * Used in Renderer, cacheAsBitmap and other places where you call an `updateTransform` on root.\n *\n * ```js\n * const cacheParent = elem.enableTempParent();\n * elem.updateTransform();\n * elem.disableTempParent(cacheParent);\n * ```\n * @returns - Current parent\n */\n enableTempParent() {\n const myParent = this.parent;\n return this.parent = this._tempDisplayObjectParent, myParent;\n }\n /**\n * Pair method for `enableTempParent`\n * @param cacheParent - Actual parent of element\n */\n disableTempParent(cacheParent) {\n this.parent = cacheParent;\n }\n /**\n * The position of the displayObject on the x axis relative to the local coordinates of the parent.\n * An alias to position.x\n */\n get x() {\n return this.position.x;\n }\n set x(value) {\n this.transform.position.x = value;\n }\n /**\n * The position of the displayObject on the y axis relative to the local coordinates of the parent.\n * An alias to position.y\n */\n get y() {\n return this.position.y;\n }\n set y(value) {\n this.transform.position.y = value;\n }\n /**\n * Current transform of the object based on world (parent) factors.\n * @readonly\n */\n get worldTransform() {\n return this.transform.worldTransform;\n }\n /**\n * Current transform of the object based on local factors: position, scale, other stuff.\n * @readonly\n */\n get localTransform() {\n return this.transform.localTransform;\n }\n /**\n * The coordinate of the object relative to the local coordinates of the parent.\n * @since 4.0.0\n */\n get position() {\n return this.transform.position;\n }\n set position(value) {\n this.transform.position.copyFrom(value);\n }\n /**\n * The scale factors of this object along the local coordinate axes.\n *\n * The default scale is (1, 1).\n * @since 4.0.0\n */\n get scale() {\n return this.transform.scale;\n }\n set scale(value) {\n this.transform.scale.copyFrom(value);\n }\n /**\n * The center of rotation, scaling, and skewing for this display object in its local space. The `position`\n * is the projection of `pivot` in the parent's local space.\n *\n * By default, the pivot is the origin (0, 0).\n * @since 4.0.0\n */\n get pivot() {\n return this.transform.pivot;\n }\n set pivot(value) {\n this.transform.pivot.copyFrom(value);\n }\n /**\n * The skew factor for the object in radians.\n * @since 4.0.0\n */\n get skew() {\n return this.transform.skew;\n }\n set skew(value) {\n this.transform.skew.copyFrom(value);\n }\n /**\n * The rotation of the object in radians.\n * 'rotation' and 'angle' have the same effect on a display object; rotation is in radians, angle is in degrees.\n */\n get rotation() {\n return this.transform.rotation;\n }\n set rotation(value) {\n this.transform.rotation = value;\n }\n /**\n * The angle of the object in degrees.\n * 'rotation' and 'angle' have the same effect on a display object; rotation is in radians, angle is in degrees.\n */\n get angle() {\n return this.transform.rotation * RAD_TO_DEG;\n }\n set angle(value) {\n this.transform.rotation = value * DEG_TO_RAD;\n }\n /**\n * The zIndex of the displayObject.\n *\n * If a container has the sortableChildren property set to true, children will be automatically\n * sorted by zIndex value; a higher value will mean it will be moved towards the end of the array,\n * and thus rendered on top of other display objects within the same container.\n * @see PIXI.Container#sortableChildren\n */\n get zIndex() {\n return this._zIndex;\n }\n set zIndex(value) {\n this._zIndex !== value && (this._zIndex = value, this.parent && (this.parent.sortDirty = !0));\n }\n /**\n * Indicates if the object is globally visible.\n * @readonly\n */\n get worldVisible() {\n let item = this;\n do {\n if (!item.visible)\n return !1;\n item = item.parent;\n } while (item);\n return !0;\n }\n /**\n * Sets a mask for the displayObject. A mask is an object that limits the visibility of an\n * object to the shape of the mask applied to it. In PixiJS a regular mask must be a\n * {@link PIXI.Graphics} or a {@link PIXI.Sprite} object. This allows for much faster masking in canvas as it\n * utilities shape clipping. Furthermore, a mask of an object must be in the subtree of its parent.\n * Otherwise, `getLocalBounds` may calculate incorrect bounds, which makes the container's width and height wrong.\n * To remove a mask, set this property to `null`.\n *\n * For sprite mask both alpha and red channel are used. Black mask is the same as transparent mask.\n * @example\n * import { Graphics, Sprite } from 'pixi.js';\n *\n * const graphics = new Graphics();\n * graphics.beginFill(0xFF3300);\n * graphics.drawRect(50, 250, 100, 100);\n * graphics.endFill();\n *\n * const sprite = new Sprite(texture);\n * sprite.mask = graphics;\n * @todo At the moment, CanvasRenderer doesn't support Sprite as mask.\n */\n get mask() {\n return this._mask;\n }\n set mask(value) {\n if (this._mask !== value) {\n if (this._mask) {\n const maskObject = this._mask.isMaskData ? this._mask.maskObject : this._mask;\n maskObject && (maskObject._maskRefCount--, maskObject._maskRefCount === 0 && (maskObject.renderable = !0, maskObject.isMask = !1));\n }\n if (this._mask = value, this._mask) {\n const maskObject = this._mask.isMaskData ? this._mask.maskObject : this._mask;\n maskObject && (maskObject._maskRefCount === 0 && (maskObject.renderable = !1, maskObject.isMask = !0), maskObject._maskRefCount++);\n }\n }\n }\n}\nclass TemporaryDisplayObject extends DisplayObject {\n constructor() {\n super(...arguments), this.sortDirty = null;\n }\n}\nDisplayObject.prototype.displayObjectUpdateTransform = DisplayObject.prototype.updateTransform;\nexport {\n DisplayObject,\n TemporaryDisplayObject\n};\n//# sourceMappingURL=DisplayObject.mjs.map\n","import { Matrix, utils, MASK_TYPES } from \"@pixi/core\";\nimport { DisplayObject } from \"./DisplayObject.mjs\";\nconst tempMatrix = new Matrix();\nfunction sortChildren(a, b) {\n return a.zIndex === b.zIndex ? a._lastSortedIndex - b._lastSortedIndex : a.zIndex - b.zIndex;\n}\nconst _Container = class _Container2 extends DisplayObject {\n constructor() {\n super(), this.children = [], this.sortableChildren = _Container2.defaultSortableChildren, this.sortDirty = !1;\n }\n /**\n * Overridable method that can be used by Container subclasses whenever the children array is modified.\n * @param _length\n */\n onChildrenChange(_length) {\n }\n /**\n * Adds one or more children to the container.\n *\n * Multiple items can be added like so: `myContainer.addChild(thingOne, thingTwo, thingThree)`\n * @param {...PIXI.DisplayObject} children - The DisplayObject(s) to add to the container\n * @returns {PIXI.DisplayObject} - The first child that was added.\n */\n addChild(...children) {\n if (children.length > 1)\n for (let i = 0; i < children.length; i++)\n this.addChild(children[i]);\n else {\n const child = children[0];\n child.parent && child.parent.removeChild(child), child.parent = this, this.sortDirty = !0, child.transform._parentID = -1, this.children.push(child), this._boundsID++, this.onChildrenChange(this.children.length - 1), this.emit(\"childAdded\", child, this, this.children.length - 1), child.emit(\"added\", this);\n }\n return children[0];\n }\n /**\n * Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown.\n * If the child is already in this container, it will be moved to the specified index.\n * @param {PIXI.DisplayObject} child - The child to add.\n * @param {number} index - The absolute index where the child will be positioned at the end of the operation.\n * @returns {PIXI.DisplayObject} The child that was added.\n */\n addChildAt(child, index) {\n if (index < 0 || index > this.children.length)\n throw new Error(`${child}addChildAt: The index ${index} supplied is out of bounds ${this.children.length}`);\n return child.parent && child.parent.removeChild(child), child.parent = this, this.sortDirty = !0, child.transform._parentID = -1, this.children.splice(index, 0, child), this._boundsID++, this.onChildrenChange(index), child.emit(\"added\", this), this.emit(\"childAdded\", child, this, index), child;\n }\n /**\n * Swaps the position of 2 Display Objects within this container.\n * @param child - First display object to swap\n * @param child2 - Second display object to swap\n */\n swapChildren(child, child2) {\n if (child === child2)\n return;\n const index1 = this.getChildIndex(child), index2 = this.getChildIndex(child2);\n this.children[index1] = child2, this.children[index2] = child, this.onChildrenChange(index1 < index2 ? index1 : index2);\n }\n /**\n * Returns the index position of a child DisplayObject instance\n * @param child - The DisplayObject instance to identify\n * @returns - The index position of the child display object to identify\n */\n getChildIndex(child) {\n const index = this.children.indexOf(child);\n if (index === -1)\n throw new Error(\"The supplied DisplayObject must be a child of the caller\");\n return index;\n }\n /**\n * Changes the position of an existing child in the display object container\n * @param child - The child DisplayObject instance for which you want to change the index number\n * @param index - The resulting index number for the child display object\n */\n setChildIndex(child, index) {\n if (index < 0 || index >= this.children.length)\n throw new Error(`The index ${index} supplied is out of bounds ${this.children.length}`);\n const currentIndex = this.getChildIndex(child);\n utils.removeItems(this.children, currentIndex, 1), this.children.splice(index, 0, child), this.onChildrenChange(index);\n }\n /**\n * Returns the child at the specified index\n * @param index - The index to get the child at\n * @returns - The child at the given index, if any.\n */\n getChildAt(index) {\n if (index < 0 || index >= this.children.length)\n throw new Error(`getChildAt: Index (${index}) does not exist.`);\n return this.children[index];\n }\n /**\n * Removes one or more children from the container.\n * @param {...PIXI.DisplayObject} children - The DisplayObject(s) to remove\n * @returns {PIXI.DisplayObject} The first child that was removed.\n */\n removeChild(...children) {\n if (children.length > 1)\n for (let i = 0; i < children.length; i++)\n this.removeChild(children[i]);\n else {\n const child = children[0], index = this.children.indexOf(child);\n if (index === -1)\n return null;\n child.parent = null, child.transform._parentID = -1, utils.removeItems(this.children, index, 1), this._boundsID++, this.onChildrenChange(index), child.emit(\"removed\", this), this.emit(\"childRemoved\", child, this, index);\n }\n return children[0];\n }\n /**\n * Removes a child from the specified index position.\n * @param index - The index to get the child from\n * @returns The child that was removed.\n */\n removeChildAt(index) {\n const child = this.getChildAt(index);\n return child.parent = null, child.transform._parentID = -1, utils.removeItems(this.children, index, 1), this._boundsID++, this.onChildrenChange(index), child.emit(\"removed\", this), this.emit(\"childRemoved\", child, this, index), child;\n }\n /**\n * Removes all children from this container that are within the begin and end indexes.\n * @param beginIndex - The beginning position.\n * @param endIndex - The ending position. Default value is size of the container.\n * @returns - List of removed children\n */\n removeChildren(beginIndex = 0, endIndex = this.children.length) {\n const begin = beginIndex, end = endIndex, range = end - begin;\n let removed;\n if (range > 0 && range <= end) {\n removed = this.children.splice(begin, range);\n for (let i = 0; i < removed.length; ++i)\n removed[i].parent = null, removed[i].transform && (removed[i].transform._parentID = -1);\n this._boundsID++, this.onChildrenChange(beginIndex);\n for (let i = 0; i < removed.length; ++i)\n removed[i].emit(\"removed\", this), this.emit(\"childRemoved\", removed[i], this, i);\n return removed;\n } else if (range === 0 && this.children.length === 0)\n return [];\n throw new RangeError(\"removeChildren: numeric values are outside the acceptable range.\");\n }\n /** Sorts children by zIndex. Previous order is maintained for 2 children with the same zIndex. */\n sortChildren() {\n let sortRequired = !1;\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n child._lastSortedIndex = i, !sortRequired && child.zIndex !== 0 && (sortRequired = !0);\n }\n sortRequired && this.children.length > 1 && this.children.sort(sortChildren), this.sortDirty = !1;\n }\n /** Updates the transform on all children of this container for rendering. */\n updateTransform() {\n this.sortableChildren && this.sortDirty && this.sortChildren(), this._boundsID++, this.transform.updateTransform(this.parent.transform), this.worldAlpha = this.alpha * this.parent.worldAlpha;\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n child.visible && child.updateTransform();\n }\n }\n /**\n * Recalculates the bounds of the container.\n *\n * This implementation will automatically fit the children's bounds into the calculation. Each child's bounds\n * is limited to its mask's bounds or filterArea, if any is applied.\n */\n calculateBounds() {\n this._bounds.clear(), this._calculateBounds();\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n if (!(!child.visible || !child.renderable))\n if (child.calculateBounds(), child._mask) {\n const maskObject = child._mask.isMaskData ? child._mask.maskObject : child._mask;\n maskObject ? (maskObject.calculateBounds(), this._bounds.addBoundsMask(child._bounds, maskObject._bounds)) : this._bounds.addBounds(child._bounds);\n } else\n child.filterArea ? this._bounds.addBoundsArea(child._bounds, child.filterArea) : this._bounds.addBounds(child._bounds);\n }\n this._bounds.updateID = this._boundsID;\n }\n /**\n * Retrieves the local bounds of the displayObject as a rectangle object.\n *\n * Calling `getLocalBounds` may invalidate the `_bounds` of the whole subtree below. If using it inside a render()\n * call, it is advised to call `getBounds()` immediately after to recalculate the world bounds of the subtree.\n * @param rect - Optional rectangle to store the result of the bounds calculation.\n * @param skipChildrenUpdate - Setting to `true` will stop re-calculation of children transforms,\n * it was default behaviour of pixi 4.0-5.2 and caused many problems to users.\n * @returns - The rectangular bounding area.\n */\n getLocalBounds(rect, skipChildrenUpdate = !1) {\n const result = super.getLocalBounds(rect);\n if (!skipChildrenUpdate)\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n child.visible && child.updateTransform();\n }\n return result;\n }\n /**\n * Recalculates the content bounds of this object. This should be overriden to\n * calculate the bounds of this specific object (not including children).\n * @protected\n */\n _calculateBounds() {\n }\n /**\n * Renders this object and its children with culling.\n * @protected\n * @param {PIXI.Renderer} renderer - The renderer\n */\n _renderWithCulling(renderer) {\n const sourceFrame = renderer.renderTexture.sourceFrame;\n if (!(sourceFrame.width > 0 && sourceFrame.height > 0))\n return;\n let bounds, transform;\n this.cullArea ? (bounds = this.cullArea, transform = this.worldTransform) : this._render !== _Container2.prototype._render && (bounds = this.getBounds(!0));\n const projectionTransform = renderer.projection.transform;\n if (projectionTransform && (transform ? (transform = tempMatrix.copyFrom(transform), transform.prepend(projectionTransform)) : transform = projectionTransform), bounds && sourceFrame.intersects(bounds, transform))\n this._render(renderer);\n else if (this.cullArea)\n return;\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i], childCullable = child.cullable;\n child.cullable = childCullable || !this.cullArea, child.render(renderer), child.cullable = childCullable;\n }\n }\n /**\n * Renders the object using the WebGL renderer.\n *\n * The [_render]{@link PIXI.Container#_render} method is be overriden for rendering the contents of the\n * container itself. This `render` method will invoke it, and also invoke the `render` methods of all\n * children afterward.\n *\n * If `renderable` or `visible` is false or if `worldAlpha` is not positive or if `cullable` is true and\n * the bounds of this object are out of frame, this implementation will entirely skip rendering.\n * See {@link PIXI.DisplayObject} for choosing between `renderable` or `visible`. Generally,\n * setting alpha to zero is not recommended for purely skipping rendering.\n *\n * When your scene becomes large (especially when it is larger than can be viewed in a single screen), it is\n * advised to employ **culling** to automatically skip rendering objects outside of the current screen.\n * See [cullable]{@link PIXI.DisplayObject#cullable} and [cullArea]{@link PIXI.DisplayObject#cullArea}.\n * Other culling methods might be better suited for a large number static objects; see\n * [@pixi-essentials/cull]{@link https://www.npmjs.com/package/@pixi-essentials/cull} and\n * [pixi-cull]{@link https://www.npmjs.com/package/pixi-cull}.\n *\n * The [renderAdvanced]{@link PIXI.Container#renderAdvanced} method is internally used when when masking or\n * filtering is applied on a container. This does, however, break batching and can affect performance when\n * masking and filtering is applied extensively throughout the scene graph.\n * @param renderer - The renderer\n */\n render(renderer) {\n if (!(!this.visible || this.worldAlpha <= 0 || !this.renderable))\n if (this._mask || this.filters?.length)\n this.renderAdvanced(renderer);\n else if (this.cullable)\n this._renderWithCulling(renderer);\n else {\n this._render(renderer);\n for (let i = 0, j = this.children.length; i < j; ++i)\n this.children[i].render(renderer);\n }\n }\n /**\n * Render the object using the WebGL renderer and advanced features.\n * @param renderer - The renderer\n */\n renderAdvanced(renderer) {\n const filters = this.filters, mask = this._mask;\n if (filters) {\n this._enabledFilters || (this._enabledFilters = []), this._enabledFilters.length = 0;\n for (let i = 0; i < filters.length; i++)\n filters[i].enabled && this._enabledFilters.push(filters[i]);\n }\n const flush = filters && this._enabledFilters?.length || mask && (!mask.isMaskData || mask.enabled && (mask.autoDetect || mask.type !== MASK_TYPES.NONE));\n if (flush && renderer.batch.flush(), filters && this._enabledFilters?.length && renderer.filter.push(this, this._enabledFilters), mask && renderer.mask.push(this, this._mask), this.cullable)\n this._renderWithCulling(renderer);\n else {\n this._render(renderer);\n for (let i = 0, j = this.children.length; i < j; ++i)\n this.children[i].render(renderer);\n }\n flush && renderer.batch.flush(), mask && renderer.mask.pop(this), filters && this._enabledFilters?.length && renderer.filter.pop();\n }\n /**\n * To be overridden by the subclasses.\n * @param _renderer - The renderer\n */\n _render(_renderer) {\n }\n /**\n * Removes all internal references and listeners as well as removes children from the display list.\n * Do not use a Container after calling `destroy`.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.children=false] - if set to true, all the children will have their destroy\n * method called as well. 'options' will be passed on to those calls.\n * @param {boolean} [options.texture=false] - Only used for child Sprites if options.children is set to true\n * Should it destroy the texture of the child sprite\n * @param {boolean} [options.baseTexture=false] - Only used for child Sprites if options.children is set to true\n * Should it destroy the base texture of the child sprite\n */\n destroy(options) {\n super.destroy(), this.sortDirty = !1;\n const destroyChildren = typeof options == \"boolean\" ? options : options?.children, oldChildren = this.removeChildren(0, this.children.length);\n if (destroyChildren)\n for (let i = 0; i < oldChildren.length; ++i)\n oldChildren[i].destroy(options);\n }\n /** The width of the Container, setting this will actually modify the scale to achieve the value set. */\n get width() {\n return this.scale.x * this.getLocalBounds().width;\n }\n set width(value) {\n const width = this.getLocalBounds().width;\n width !== 0 ? this.scale.x = value / width : this.scale.x = 1, this._width = value;\n }\n /** The height of the Container, setting this will actually modify the scale to achieve the value set. */\n get height() {\n return this.scale.y * this.getLocalBounds().height;\n }\n set height(value) {\n const height = this.getLocalBounds().height;\n height !== 0 ? this.scale.y = value / height : this.scale.y = 1, this._height = value;\n }\n};\n_Container.defaultSortableChildren = !1;\nlet Container = _Container;\nContainer.prototype.containerUpdateTransform = Container.prototype.updateTransform;\nexport {\n Container\n};\n//# sourceMappingURL=Container.mjs.map\n","import { settings, utils } from \"@pixi/core\";\nimport { settings as settings2 } from \"@pixi/core\";\nimport { Container } from \"./Container.mjs\";\nObject.defineProperties(settings, {\n /**\n * Sets the default value for the container property 'sortableChildren'.\n * @static\n * @name SORTABLE_CHILDREN\n * @memberof PIXI.settings\n * @deprecated since 7.1.0\n * @type {boolean}\n * @see PIXI.Container.defaultSortableChildren\n */\n SORTABLE_CHILDREN: {\n get() {\n return Container.defaultSortableChildren;\n },\n set(value) {\n utils.deprecation(\"7.1.0\", \"settings.SORTABLE_CHILDREN is deprecated, use Container.defaultSortableChildren\"), Container.defaultSortableChildren = value;\n }\n }\n});\nexport {\n settings2 as settings\n};\n//# sourceMappingURL=settings.mjs.map\n","import { Point, ObservablePoint, Color, BLEND_MODES, Texture, settings, utils, Rectangle } from \"@pixi/core\";\nimport { Container, Bounds } from \"@pixi/display\";\nconst tempPoint = new Point(), indices = new Uint16Array([0, 1, 2, 0, 2, 3]);\nclass Sprite extends Container {\n /** @param texture - The texture for this sprite. */\n constructor(texture) {\n super(), this._anchor = new ObservablePoint(\n this._onAnchorUpdate,\n this,\n texture ? texture.defaultAnchor.x : 0,\n texture ? texture.defaultAnchor.y : 0\n ), this._texture = null, this._width = 0, this._height = 0, this._tintColor = new Color(16777215), this._tintRGB = null, this.tint = 16777215, this.blendMode = BLEND_MODES.NORMAL, this._cachedTint = 16777215, this.uvs = null, this.texture = texture || Texture.EMPTY, this.vertexData = new Float32Array(8), this.vertexTrimmedData = null, this._transformID = -1, this._textureID = -1, this._transformTrimmedID = -1, this._textureTrimmedID = -1, this.indices = indices, this.pluginName = \"batch\", this.isSprite = !0, this._roundPixels = settings.ROUND_PIXELS;\n }\n /** When the texture is updated, this event will fire to update the scale and frame. */\n _onTextureUpdate() {\n this._textureID = -1, this._textureTrimmedID = -1, this._cachedTint = 16777215, this._width && (this.scale.x = utils.sign(this.scale.x) * this._width / this._texture.orig.width), this._height && (this.scale.y = utils.sign(this.scale.y) * this._height / this._texture.orig.height);\n }\n /** Called when the anchor position updates. */\n _onAnchorUpdate() {\n this._transformID = -1, this._transformTrimmedID = -1;\n }\n /** Calculates worldTransform * vertices, store it in vertexData. */\n calculateVertices() {\n const texture = this._texture;\n if (this._transformID === this.transform._worldID && this._textureID === texture._updateID)\n return;\n this._textureID !== texture._updateID && (this.uvs = this._texture._uvs.uvsFloat32), this._transformID = this.transform._worldID, this._textureID = texture._updateID;\n const wt = this.transform.worldTransform, a = wt.a, b = wt.b, c = wt.c, d = wt.d, tx = wt.tx, ty = wt.ty, vertexData = this.vertexData, trim = texture.trim, orig = texture.orig, anchor = this._anchor;\n let w0 = 0, w1 = 0, h0 = 0, h1 = 0;\n if (trim ? (w1 = trim.x - anchor._x * orig.width, w0 = w1 + trim.width, h1 = trim.y - anchor._y * orig.height, h0 = h1 + trim.height) : (w1 = -anchor._x * orig.width, w0 = w1 + orig.width, h1 = -anchor._y * orig.height, h0 = h1 + orig.height), vertexData[0] = a * w1 + c * h1 + tx, vertexData[1] = d * h1 + b * w1 + ty, vertexData[2] = a * w0 + c * h1 + tx, vertexData[3] = d * h1 + b * w0 + ty, vertexData[4] = a * w0 + c * h0 + tx, vertexData[5] = d * h0 + b * w0 + ty, vertexData[6] = a * w1 + c * h0 + tx, vertexData[7] = d * h0 + b * w1 + ty, this._roundPixels) {\n const resolution = settings.RESOLUTION;\n for (let i = 0; i < vertexData.length; ++i)\n vertexData[i] = Math.round(vertexData[i] * resolution) / resolution;\n }\n }\n /**\n * Calculates worldTransform * vertices for a non texture with a trim. store it in vertexTrimmedData.\n *\n * This is used to ensure that the true width and height of a trimmed texture is respected.\n */\n calculateTrimmedVertices() {\n if (!this.vertexTrimmedData)\n this.vertexTrimmedData = new Float32Array(8);\n else if (this._transformTrimmedID === this.transform._worldID && this._textureTrimmedID === this._texture._updateID)\n return;\n this._transformTrimmedID = this.transform._worldID, this._textureTrimmedID = this._texture._updateID;\n const texture = this._texture, vertexData = this.vertexTrimmedData, orig = texture.orig, anchor = this._anchor, wt = this.transform.worldTransform, a = wt.a, b = wt.b, c = wt.c, d = wt.d, tx = wt.tx, ty = wt.ty, w1 = -anchor._x * orig.width, w0 = w1 + orig.width, h1 = -anchor._y * orig.height, h0 = h1 + orig.height;\n if (vertexData[0] = a * w1 + c * h1 + tx, vertexData[1] = d * h1 + b * w1 + ty, vertexData[2] = a * w0 + c * h1 + tx, vertexData[3] = d * h1 + b * w0 + ty, vertexData[4] = a * w0 + c * h0 + tx, vertexData[5] = d * h0 + b * w0 + ty, vertexData[6] = a * w1 + c * h0 + tx, vertexData[7] = d * h0 + b * w1 + ty, this._roundPixels) {\n const resolution = settings.RESOLUTION;\n for (let i = 0; i < vertexData.length; ++i)\n vertexData[i] = Math.round(vertexData[i] * resolution) / resolution;\n }\n }\n /**\n *\n * Renders the object using the WebGL renderer\n * @param renderer - The webgl renderer to use.\n */\n _render(renderer) {\n this.calculateVertices(), renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]), renderer.plugins[this.pluginName].render(this);\n }\n /** Updates the bounds of the sprite. */\n _calculateBounds() {\n const trim = this._texture.trim, orig = this._texture.orig;\n !trim || trim.width === orig.width && trim.height === orig.height ? (this.calculateVertices(), this._bounds.addQuad(this.vertexData)) : (this.calculateTrimmedVertices(), this._bounds.addQuad(this.vertexTrimmedData));\n }\n /**\n * Gets the local bounds of the sprite object.\n * @param rect - Optional output rectangle.\n * @returns The bounds.\n */\n getLocalBounds(rect) {\n return this.children.length === 0 ? (this._localBounds || (this._localBounds = new Bounds()), this._localBounds.minX = this._texture.orig.width * -this._anchor._x, this._localBounds.minY = this._texture.orig.height * -this._anchor._y, this._localBounds.maxX = this._texture.orig.width * (1 - this._anchor._x), this._localBounds.maxY = this._texture.orig.height * (1 - this._anchor._y), rect || (this._localBoundsRect || (this._localBoundsRect = new Rectangle()), rect = this._localBoundsRect), this._localBounds.getRectangle(rect)) : super.getLocalBounds.call(this, rect);\n }\n /**\n * Tests if a point is inside this sprite\n * @param point - the point to test\n * @returns The result of the test\n */\n containsPoint(point) {\n this.worldTransform.applyInverse(point, tempPoint);\n const width = this._texture.orig.width, height = this._texture.orig.height, x1 = -width * this.anchor.x;\n let y1 = 0;\n return tempPoint.x >= x1 && tempPoint.x < x1 + width && (y1 = -height * this.anchor.y, tempPoint.y >= y1 && tempPoint.y < y1 + height);\n }\n /**\n * Destroys this sprite and optionally its texture and children.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param [options.children=false] - if set to true, all the children will have their destroy\n * method called as well. 'options' will be passed on to those calls.\n * @param [options.texture=false] - Should it destroy the current texture of the sprite as well\n * @param [options.baseTexture=false] - Should it destroy the base texture of the sprite as well\n */\n destroy(options) {\n if (super.destroy(options), this._texture.off(\"update\", this._onTextureUpdate, this), this._anchor = null, typeof options == \"boolean\" ? options : options?.texture) {\n const destroyBaseTexture = typeof options == \"boolean\" ? options : options?.baseTexture;\n this._texture.destroy(!!destroyBaseTexture);\n }\n this._texture = null;\n }\n // some helper functions..\n /**\n * Helper function that creates a new sprite based on the source you provide.\n * The source can be - frame id, image url, video url, canvas element, video element, base texture\n * @param {string|PIXI.Texture|HTMLImageElement|HTMLVideoElement|ImageBitmap|PIXI.ICanvas} source\n * - Source to create texture from\n * @param {object} [options] - See {@link PIXI.BaseTexture}'s constructor for options.\n * @returns The newly created sprite\n */\n static from(source, options) {\n const texture = source instanceof Texture ? source : Texture.from(source, options);\n return new Sprite(texture);\n }\n /**\n * If true PixiJS will Math.floor() x/y values when rendering, stopping pixel interpolation.\n *\n * Advantages can include sharper image quality (like text) and faster rendering on canvas.\n * The main disadvantage is movement of objects may appear less smooth.\n *\n * To set the global default, change {@link PIXI.settings.ROUND_PIXELS}.\n * @default false\n */\n set roundPixels(value) {\n this._roundPixels !== value && (this._transformID = -1, this._transformTrimmedID = -1), this._roundPixels = value;\n }\n get roundPixels() {\n return this._roundPixels;\n }\n /** The width of the sprite, setting this will actually modify the scale to achieve the value set. */\n get width() {\n return Math.abs(this.scale.x) * this._texture.orig.width;\n }\n set width(value) {\n const s = utils.sign(this.scale.x) || 1;\n this.scale.x = s * value / this._texture.orig.width, this._width = value;\n }\n /** The height of the sprite, setting this will actually modify the scale to achieve the value set. */\n get height() {\n return Math.abs(this.scale.y) * this._texture.orig.height;\n }\n set height(value) {\n const s = utils.sign(this.scale.y) || 1;\n this.scale.y = s * value / this._texture.orig.height, this._height = value;\n }\n /**\n * The anchor sets the origin point of the sprite. The default value is taken from the {@link PIXI.Texture|Texture}\n * and passed to the constructor.\n *\n * The default is `(0,0)`, this means the sprite's origin is the top left.\n *\n * Setting the anchor to `(0.5,0.5)` means the sprite's origin is centered.\n *\n * Setting the anchor to `(1,1)` would mean the sprite's origin point will be the bottom right corner.\n *\n * If you pass only single parameter, it will set both x and y to the same value as shown in the example below.\n * @example\n * import { Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite(Texture.WHITE);\n * sprite.anchor.set(0.5); // This will set the origin to center. (0.5) is same as (0.5, 0.5).\n */\n get anchor() {\n return this._anchor;\n }\n set anchor(value) {\n this._anchor.copyFrom(value);\n }\n /**\n * The tint applied to the sprite. This is a hex value.\n *\n * A value of 0xFFFFFF will remove any tint effect.\n * @default 0xFFFFFF\n */\n get tint() {\n return this._tintColor.value;\n }\n set tint(value) {\n this._tintColor.setValue(value), this._tintRGB = this._tintColor.toLittleEndianNumber();\n }\n /**\n * Get the tint as a RGB integer.\n * @ignore\n */\n get tintValue() {\n return this._tintColor.toNumber();\n }\n /** The texture that the sprite is using. */\n get texture() {\n return this._texture;\n }\n set texture(value) {\n this._texture !== value && (this._texture && this._texture.off(\"update\", this._onTextureUpdate, this), this._texture = value || Texture.EMPTY, this._cachedTint = 16777215, this._textureID = -1, this._textureTrimmedID = -1, value && (value.baseTexture.valid ? this._onTextureUpdate() : value.once(\"update\", this._onTextureUpdate, this)));\n }\n}\nexport {\n Sprite\n};\n//# sourceMappingURL=Sprite.mjs.map\n","import { Matrix, Rectangle, RenderTexture, utils, BaseTexture, Texture } from \"@pixi/core\";\nimport { DisplayObject } from \"@pixi/display\";\nimport { Sprite } from \"@pixi/sprite\";\nconst _tempMatrix = new Matrix();\nDisplayObject.prototype._cacheAsBitmap = !1;\nDisplayObject.prototype._cacheData = null;\nDisplayObject.prototype._cacheAsBitmapResolution = null;\nDisplayObject.prototype._cacheAsBitmapMultisample = null;\nclass CacheData {\n constructor() {\n this.textureCacheId = null, this.originalRender = null, this.originalRenderCanvas = null, this.originalCalculateBounds = null, this.originalGetLocalBounds = null, this.originalUpdateTransform = null, this.originalDestroy = null, this.originalMask = null, this.originalFilterArea = null, this.originalContainsPoint = null, this.sprite = null;\n }\n}\nObject.defineProperties(DisplayObject.prototype, {\n /**\n * The resolution to use for cacheAsBitmap. By default this will use the renderer's resolution\n * but can be overriden for performance. Lower values will reduce memory usage at the expense\n * of render quality. A falsey value of `null` or `0` will default to the renderer's resolution.\n * If `cacheAsBitmap` is set to `true`, this will re-render with the new resolution.\n * @member {number|null} cacheAsBitmapResolution\n * @memberof PIXI.DisplayObject#\n * @default null\n */\n cacheAsBitmapResolution: {\n get() {\n return this._cacheAsBitmapResolution;\n },\n set(resolution) {\n resolution !== this._cacheAsBitmapResolution && (this._cacheAsBitmapResolution = resolution, this.cacheAsBitmap && (this.cacheAsBitmap = !1, this.cacheAsBitmap = !0));\n }\n },\n /**\n * The number of samples to use for cacheAsBitmap. If set to `null`, the renderer's\n * sample count is used.\n * If `cacheAsBitmap` is set to `true`, this will re-render with the new number of samples.\n * @member {number|null} cacheAsBitmapMultisample\n * @memberof PIXI.DisplayObject#\n * @default null\n */\n cacheAsBitmapMultisample: {\n get() {\n return this._cacheAsBitmapMultisample;\n },\n set(multisample) {\n multisample !== this._cacheAsBitmapMultisample && (this._cacheAsBitmapMultisample = multisample, this.cacheAsBitmap && (this.cacheAsBitmap = !1, this.cacheAsBitmap = !0));\n }\n },\n /**\n * Set this to true if you want this display object to be cached as a bitmap.\n * This basically takes a snapshot of the display object as it is at that moment. It can\n * provide a performance benefit for complex static displayObjects.\n * To remove simply set this property to `false`\n *\n * IMPORTANT GOTCHA - Make sure that all your textures are preloaded BEFORE setting this property to true\n * as it will take a snapshot of what is currently there. If the textures have not loaded then they will not appear.\n * @member {boolean}\n * @memberof PIXI.DisplayObject#\n */\n cacheAsBitmap: {\n get() {\n return this._cacheAsBitmap;\n },\n set(value) {\n if (this._cacheAsBitmap === value)\n return;\n this._cacheAsBitmap = value;\n let data;\n value ? (this._cacheData || (this._cacheData = new CacheData()), data = this._cacheData, data.originalRender = this.render, data.originalRenderCanvas = this.renderCanvas, data.originalUpdateTransform = this.updateTransform, data.originalCalculateBounds = this.calculateBounds, data.originalGetLocalBounds = this.getLocalBounds, data.originalDestroy = this.destroy, data.originalContainsPoint = this.containsPoint, data.originalMask = this._mask, data.originalFilterArea = this.filterArea, this.render = this._renderCached, this.renderCanvas = this._renderCachedCanvas, this.destroy = this._cacheAsBitmapDestroy) : (data = this._cacheData, data.sprite && this._destroyCachedDisplayObject(), this.render = data.originalRender, this.renderCanvas = data.originalRenderCanvas, this.calculateBounds = data.originalCalculateBounds, this.getLocalBounds = data.originalGetLocalBounds, this.destroy = data.originalDestroy, this.updateTransform = data.originalUpdateTransform, this.containsPoint = data.originalContainsPoint, this._mask = data.originalMask, this.filterArea = data.originalFilterArea);\n }\n }\n});\nDisplayObject.prototype._renderCached = function(renderer) {\n !this.visible || this.worldAlpha <= 0 || !this.renderable || (this._initCachedDisplayObject(renderer), this._cacheData.sprite.transform._worldID = this.transform._worldID, this._cacheData.sprite.worldAlpha = this.worldAlpha, this._cacheData.sprite._render(renderer));\n};\nDisplayObject.prototype._initCachedDisplayObject = function(renderer) {\n if (this._cacheData?.sprite)\n return;\n const cacheAlpha = this.alpha;\n this.alpha = 1, renderer.batch.flush();\n const bounds = this.getLocalBounds(new Rectangle(), !0);\n if (this.filters?.length) {\n const padding = this.filters[0].padding;\n bounds.pad(padding);\n }\n const resolution = this.cacheAsBitmapResolution || renderer.resolution;\n bounds.ceil(resolution), bounds.width = Math.max(bounds.width, 1 / resolution), bounds.height = Math.max(bounds.height, 1 / resolution);\n const cachedRenderTexture = renderer.renderTexture.current, cachedSourceFrame = renderer.renderTexture.sourceFrame.clone(), cachedDestinationFrame = renderer.renderTexture.destinationFrame.clone(), cachedProjectionTransform = renderer.projection.transform, renderTexture = RenderTexture.create({\n width: bounds.width,\n height: bounds.height,\n resolution,\n multisample: this.cacheAsBitmapMultisample ?? renderer.multisample\n }), textureCacheId = `cacheAsBitmap_${utils.uid()}`;\n this._cacheData.textureCacheId = textureCacheId, BaseTexture.addToCache(renderTexture.baseTexture, textureCacheId), Texture.addToCache(renderTexture, textureCacheId);\n const m = this.transform.localTransform.copyTo(_tempMatrix).invert().translate(-bounds.x, -bounds.y);\n this.render = this._cacheData.originalRender, renderer.render(this, { renderTexture, clear: !0, transform: m, skipUpdateTransform: !1 }), renderer.framebuffer.blit(), renderer.projection.transform = cachedProjectionTransform, renderer.renderTexture.bind(cachedRenderTexture, cachedSourceFrame, cachedDestinationFrame), this.render = this._renderCached, this.updateTransform = this.displayObjectUpdateTransform, this.calculateBounds = this._calculateCachedBounds, this.getLocalBounds = this._getCachedLocalBounds, this._mask = null, this.filterArea = null, this.alpha = cacheAlpha;\n const cachedSprite = new Sprite(renderTexture);\n cachedSprite.transform.worldTransform = this.transform.worldTransform, cachedSprite.anchor.x = -(bounds.x / bounds.width), cachedSprite.anchor.y = -(bounds.y / bounds.height), cachedSprite.alpha = cacheAlpha, cachedSprite._bounds = this._bounds, this._cacheData.sprite = cachedSprite, this.transform._parentID = -1, this.parent ? this.updateTransform() : (this.enableTempParent(), this.updateTransform(), this.disableTempParent(null)), this.containsPoint = cachedSprite.containsPoint.bind(cachedSprite);\n};\nDisplayObject.prototype._renderCachedCanvas = function(renderer) {\n !this.visible || this.worldAlpha <= 0 || !this.renderable || (this._initCachedDisplayObjectCanvas(renderer), this._cacheData.sprite.worldAlpha = this.worldAlpha, this._cacheData.sprite._renderCanvas(renderer));\n};\nDisplayObject.prototype._initCachedDisplayObjectCanvas = function(renderer) {\n if (this._cacheData?.sprite)\n return;\n const bounds = this.getLocalBounds(new Rectangle(), !0), cacheAlpha = this.alpha;\n this.alpha = 1;\n const cachedRenderTarget = renderer.canvasContext.activeContext, cachedProjectionTransform = renderer._projTransform, resolution = this.cacheAsBitmapResolution || renderer.resolution;\n bounds.ceil(resolution), bounds.width = Math.max(bounds.width, 1 / resolution), bounds.height = Math.max(bounds.height, 1 / resolution);\n const renderTexture = RenderTexture.create({\n width: bounds.width,\n height: bounds.height,\n resolution\n }), textureCacheId = `cacheAsBitmap_${utils.uid()}`;\n this._cacheData.textureCacheId = textureCacheId, BaseTexture.addToCache(renderTexture.baseTexture, textureCacheId), Texture.addToCache(renderTexture, textureCacheId);\n const m = _tempMatrix;\n this.transform.localTransform.copyTo(m), m.invert(), m.tx -= bounds.x, m.ty -= bounds.y, this.renderCanvas = this._cacheData.originalRenderCanvas, renderer.render(this, { renderTexture, clear: !0, transform: m, skipUpdateTransform: !1 }), renderer.canvasContext.activeContext = cachedRenderTarget, renderer._projTransform = cachedProjectionTransform, this.renderCanvas = this._renderCachedCanvas, this.updateTransform = this.displayObjectUpdateTransform, this.calculateBounds = this._calculateCachedBounds, this.getLocalBounds = this._getCachedLocalBounds, this._mask = null, this.filterArea = null, this.alpha = cacheAlpha;\n const cachedSprite = new Sprite(renderTexture);\n cachedSprite.transform.worldTransform = this.transform.worldTransform, cachedSprite.anchor.x = -(bounds.x / bounds.width), cachedSprite.anchor.y = -(bounds.y / bounds.height), cachedSprite.alpha = cacheAlpha, cachedSprite._bounds = this._bounds, this._cacheData.sprite = cachedSprite, this.transform._parentID = -1, this.parent ? this.updateTransform() : (this.parent = renderer._tempDisplayObjectParent, this.updateTransform(), this.parent = null), this.containsPoint = cachedSprite.containsPoint.bind(cachedSprite);\n};\nDisplayObject.prototype._calculateCachedBounds = function() {\n this._bounds.clear(), this._cacheData.sprite.transform._worldID = this.transform._worldID, this._cacheData.sprite._calculateBounds(), this._bounds.updateID = this._boundsID;\n};\nDisplayObject.prototype._getCachedLocalBounds = function() {\n return this._cacheData.sprite.getLocalBounds(null);\n};\nDisplayObject.prototype._destroyCachedDisplayObject = function() {\n this._cacheData.sprite._texture.destroy(!0), this._cacheData.sprite = null, BaseTexture.removeFromCache(this._cacheData.textureCacheId), Texture.removeFromCache(this._cacheData.textureCacheId), this._cacheData.textureCacheId = null;\n};\nDisplayObject.prototype._cacheAsBitmapDestroy = function(options) {\n this.cacheAsBitmap = !1, this.destroy(options);\n};\nexport {\n CacheData\n};\n//# sourceMappingURL=index.mjs.map\n","import { DisplayObject, Container } from \"@pixi/display\";\nDisplayObject.prototype.name = null;\nContainer.prototype.getChildByName = function(name, deep) {\n for (let i = 0, j = this.children.length; i < j; i++)\n if (this.children[i].name === name)\n return this.children[i];\n if (deep)\n for (let i = 0, j = this.children.length; i < j; i++) {\n const child = this.children[i];\n if (!child.getChildByName)\n continue;\n const target = child.getChildByName(name, !0);\n if (target)\n return target;\n }\n return null;\n};\n//# sourceMappingURL=index.mjs.map\n","import { Point } from \"@pixi/core\";\nimport { DisplayObject } from \"@pixi/display\";\nDisplayObject.prototype.getGlobalPosition = function(point = new Point(), skipUpdate = !1) {\n return this.parent ? this.parent.toGlobal(this.position, point, skipUpdate) : (point.x = this.position.x, point.y = this.position.y), point;\n};\n//# sourceMappingURL=index.mjs.map\n","var fragment = `varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float uAlpha;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uAlpha;\n}\n`;\nexport {\n fragment as default\n};\n//# sourceMappingURL=alpha.frag.mjs.map\n","import { Filter, defaultVertex } from \"@pixi/core\";\nimport fragment from \"./alpha.frag.mjs\";\nclass AlphaFilter extends Filter {\n /**\n * @param alpha - Amount of alpha from 0 to 1, where 0 is transparent\n */\n constructor(alpha = 1) {\n super(defaultVertex, fragment, { uAlpha: 1 }), this.alpha = alpha;\n }\n /**\n * Coefficient for alpha multiplication\n * @default 1\n */\n get alpha() {\n return this.uniforms.uAlpha;\n }\n set alpha(value) {\n this.uniforms.uAlpha = value;\n }\n}\nexport {\n AlphaFilter\n};\n//# sourceMappingURL=AlphaFilter.mjs.map\n","const GAUSSIAN_VALUES = {\n 5: [0.153388, 0.221461, 0.250301],\n 7: [0.071303, 0.131514, 0.189879, 0.214607],\n 9: [0.028532, 0.067234, 0.124009, 0.179044, 0.20236],\n 11: [93e-4, 0.028002, 0.065984, 0.121703, 0.175713, 0.198596],\n 13: [2406e-6, 9255e-6, 0.027867, 0.065666, 0.121117, 0.174868, 0.197641],\n 15: [489e-6, 2403e-6, 9246e-6, 0.02784, 0.065602, 0.120999, 0.174697, 0.197448]\n}, fragTemplate = [\n \"varying vec2 vBlurTexCoords[%size%];\",\n \"uniform sampler2D uSampler;\",\n \"void main(void)\",\n \"{\",\n \" gl_FragColor = vec4(0.0);\",\n \" %blur%\",\n \"}\"\n].join(`\n`);\nfunction generateBlurFragSource(kernelSize) {\n const kernel = GAUSSIAN_VALUES[kernelSize], halfLength = kernel.length;\n let fragSource = fragTemplate, blurLoop = \"\";\n const template = \"gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;\";\n let value;\n for (let i = 0; i < kernelSize; i++) {\n let blur = template.replace(\"%index%\", i.toString());\n value = i, i >= halfLength && (value = kernelSize - i - 1), blur = blur.replace(\"%value%\", kernel[value].toString()), blurLoop += blur, blurLoop += `\n`;\n }\n return fragSource = fragSource.replace(\"%blur%\", blurLoop), fragSource = fragSource.replace(\"%size%\", kernelSize.toString()), fragSource;\n}\nexport {\n generateBlurFragSource\n};\n//# sourceMappingURL=generateBlurFragSource.mjs.map\n","const vertTemplate = `\n attribute vec2 aVertexPosition;\n\n uniform mat3 projectionMatrix;\n\n uniform float strength;\n\n varying vec2 vBlurTexCoords[%size%];\n\n uniform vec4 inputSize;\n uniform vec4 outputFrame;\n\n vec4 filterVertexPosition( void )\n {\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n }\n\n vec2 filterTextureCoord( void )\n {\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n }\n\n void main(void)\n {\n gl_Position = filterVertexPosition();\n\n vec2 textureCoord = filterTextureCoord();\n %blur%\n }`;\nfunction generateBlurVertSource(kernelSize, x) {\n const halfLength = Math.ceil(kernelSize / 2);\n let vertSource = vertTemplate, blurLoop = \"\", template;\n x ? template = \"vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * strength, 0.0);\" : template = \"vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * strength);\";\n for (let i = 0; i < kernelSize; i++) {\n let blur = template.replace(\"%index%\", i.toString());\n blur = blur.replace(\"%sampleIndex%\", `${i - (halfLength - 1)}.0`), blurLoop += blur, blurLoop += `\n`;\n }\n return vertSource = vertSource.replace(\"%blur%\", blurLoop), vertSource = vertSource.replace(\"%size%\", kernelSize.toString()), vertSource;\n}\nexport {\n generateBlurVertSource\n};\n//# sourceMappingURL=generateBlurVertSource.mjs.map\n","import { Filter, CLEAR_MODES } from \"@pixi/core\";\nimport { generateBlurFragSource } from \"./generateBlurFragSource.mjs\";\nimport { generateBlurVertSource } from \"./generateBlurVertSource.mjs\";\nclass BlurFilterPass extends Filter {\n /**\n * @param horizontal - Do pass along the x-axis (`true`) or y-axis (`false`).\n * @param strength - The strength of the blur filter.\n * @param quality - The quality of the blur filter.\n * @param {number|null} [resolution=PIXI.Filter.defaultResolution] - The resolution of the blur filter.\n * @param kernelSize - The kernelSize of the blur filter.Options: 5, 7, 9, 11, 13, 15.\n */\n constructor(horizontal, strength = 8, quality = 4, resolution = Filter.defaultResolution, kernelSize = 5) {\n const vertSrc = generateBlurVertSource(kernelSize, horizontal), fragSrc = generateBlurFragSource(kernelSize);\n super(\n // vertex shader\n vertSrc,\n // fragment shader\n fragSrc\n ), this.horizontal = horizontal, this.resolution = resolution, this._quality = 0, this.quality = quality, this.blur = strength;\n }\n /**\n * Applies the filter.\n * @param filterManager - The manager.\n * @param input - The input target.\n * @param output - The output target.\n * @param clearMode - How to clear\n */\n apply(filterManager, input, output, clearMode) {\n if (output ? this.horizontal ? this.uniforms.strength = 1 / output.width * (output.width / input.width) : this.uniforms.strength = 1 / output.height * (output.height / input.height) : this.horizontal ? this.uniforms.strength = 1 / filterManager.renderer.width * (filterManager.renderer.width / input.width) : this.uniforms.strength = 1 / filterManager.renderer.height * (filterManager.renderer.height / input.height), this.uniforms.strength *= this.strength, this.uniforms.strength /= this.passes, this.passes === 1)\n filterManager.applyFilter(this, input, output, clearMode);\n else {\n const renderTarget = filterManager.getFilterTexture(), renderer = filterManager.renderer;\n let flip = input, flop = renderTarget;\n this.state.blend = !1, filterManager.applyFilter(this, flip, flop, CLEAR_MODES.CLEAR);\n for (let i = 1; i < this.passes - 1; i++) {\n filterManager.bindAndClear(flip, CLEAR_MODES.BLIT), this.uniforms.uSampler = flop;\n const temp = flop;\n flop = flip, flip = temp, renderer.shader.bind(this), renderer.geometry.draw(5);\n }\n this.state.blend = !0, filterManager.applyFilter(this, flop, output, clearMode), filterManager.returnFilterTexture(renderTarget);\n }\n }\n /**\n * Sets the strength of both the blur.\n * @default 16\n */\n get blur() {\n return this.strength;\n }\n set blur(value) {\n this.padding = 1 + Math.abs(value) * 2, this.strength = value;\n }\n /**\n * Sets the quality of the blur by modifying the number of passes. More passes means higher\n * quality bluring but the lower the performance.\n * @default 4\n */\n get quality() {\n return this._quality;\n }\n set quality(value) {\n this._quality = value, this.passes = value;\n }\n}\nexport {\n BlurFilterPass\n};\n//# sourceMappingURL=BlurFilterPass.mjs.map\n","import { Filter, CLEAR_MODES } from \"@pixi/core\";\nimport { BlurFilterPass } from \"./BlurFilterPass.mjs\";\nclass BlurFilter extends Filter {\n /**\n * @param strength - The strength of the blur filter.\n * @param quality - The quality of the blur filter.\n * @param {number|null} [resolution=PIXI.Filter.defaultResolution] - The resolution of the blur filter.\n * @param kernelSize - The kernelSize of the blur filter.Options: 5, 7, 9, 11, 13, 15.\n */\n constructor(strength = 8, quality = 4, resolution = Filter.defaultResolution, kernelSize = 5) {\n super(), this._repeatEdgePixels = !1, this.blurXFilter = new BlurFilterPass(!0, strength, quality, resolution, kernelSize), this.blurYFilter = new BlurFilterPass(!1, strength, quality, resolution, kernelSize), this.resolution = resolution, this.quality = quality, this.blur = strength, this.repeatEdgePixels = !1;\n }\n /**\n * Applies the filter.\n * @param filterManager - The manager.\n * @param input - The input target.\n * @param output - The output target.\n * @param clearMode - How to clear\n */\n apply(filterManager, input, output, clearMode) {\n const xStrength = Math.abs(this.blurXFilter.strength), yStrength = Math.abs(this.blurYFilter.strength);\n if (xStrength && yStrength) {\n const renderTarget = filterManager.getFilterTexture();\n this.blurXFilter.apply(filterManager, input, renderTarget, CLEAR_MODES.CLEAR), this.blurYFilter.apply(filterManager, renderTarget, output, clearMode), filterManager.returnFilterTexture(renderTarget);\n } else\n yStrength ? this.blurYFilter.apply(filterManager, input, output, clearMode) : this.blurXFilter.apply(filterManager, input, output, clearMode);\n }\n updatePadding() {\n this._repeatEdgePixels ? this.padding = 0 : this.padding = Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength)) * 2;\n }\n /**\n * Sets the strength of both the blurX and blurY properties simultaneously\n * @default 2\n */\n get blur() {\n return this.blurXFilter.blur;\n }\n set blur(value) {\n this.blurXFilter.blur = this.blurYFilter.blur = value, this.updatePadding();\n }\n /**\n * Sets the number of passes for blur. More passes means higher quality bluring.\n * @default 1\n */\n get quality() {\n return this.blurXFilter.quality;\n }\n set quality(value) {\n this.blurXFilter.quality = this.blurYFilter.quality = value;\n }\n /**\n * Sets the strength of the blurX property\n * @default 2\n */\n get blurX() {\n return this.blurXFilter.blur;\n }\n set blurX(value) {\n this.blurXFilter.blur = value, this.updatePadding();\n }\n /**\n * Sets the strength of the blurY property\n * @default 2\n */\n get blurY() {\n return this.blurYFilter.blur;\n }\n set blurY(value) {\n this.blurYFilter.blur = value, this.updatePadding();\n }\n /**\n * Sets the blendmode of the filter\n * @default PIXI.BLEND_MODES.NORMAL\n */\n get blendMode() {\n return this.blurYFilter.blendMode;\n }\n set blendMode(value) {\n this.blurYFilter.blendMode = value;\n }\n /**\n * If set to true the edge of the target will be clamped\n * @default false\n */\n get repeatEdgePixels() {\n return this._repeatEdgePixels;\n }\n set repeatEdgePixels(value) {\n this._repeatEdgePixels = value, this.updatePadding();\n }\n}\nexport {\n BlurFilter\n};\n//# sourceMappingURL=BlurFilter.mjs.map\n","var fragment = `varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform float m[20];\nuniform float uAlpha;\n\nvoid main(void)\n{\n vec4 c = texture2D(uSampler, vTextureCoord);\n\n if (uAlpha == 0.0) {\n gl_FragColor = c;\n return;\n }\n\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\n if (c.a > 0.0) {\n c.rgb /= c.a;\n }\n\n vec4 result;\n\n result.r = (m[0] * c.r);\n result.r += (m[1] * c.g);\n result.r += (m[2] * c.b);\n result.r += (m[3] * c.a);\n result.r += m[4];\n\n result.g = (m[5] * c.r);\n result.g += (m[6] * c.g);\n result.g += (m[7] * c.b);\n result.g += (m[8] * c.a);\n result.g += m[9];\n\n result.b = (m[10] * c.r);\n result.b += (m[11] * c.g);\n result.b += (m[12] * c.b);\n result.b += (m[13] * c.a);\n result.b += m[14];\n\n result.a = (m[15] * c.r);\n result.a += (m[16] * c.g);\n result.a += (m[17] * c.b);\n result.a += (m[18] * c.a);\n result.a += m[19];\n\n vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\n\n // Premultiply alpha again.\n rgb *= result.a;\n\n gl_FragColor = vec4(rgb, result.a);\n}\n`;\nexport {\n fragment as default\n};\n//# sourceMappingURL=colorMatrix.frag.mjs.map\n","import { Filter, defaultFilterVertex, Color } from \"@pixi/core\";\nimport fragment from \"./colorMatrix.frag.mjs\";\nclass ColorMatrixFilter extends Filter {\n constructor() {\n const uniforms = {\n m: new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ]),\n uAlpha: 1\n };\n super(defaultFilterVertex, fragment, uniforms), this.alpha = 1;\n }\n /**\n * Transforms current matrix and set the new one\n * @param {number[]} matrix - 5x4 matrix\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n _loadMatrix(matrix, multiply = !1) {\n let newMatrix = matrix;\n multiply && (this._multiply(newMatrix, this.uniforms.m, matrix), newMatrix = this._colorMatrix(newMatrix)), this.uniforms.m = newMatrix;\n }\n /**\n * Multiplies two mat5's\n * @private\n * @param out - 5x4 matrix the receiving matrix\n * @param a - 5x4 matrix the first operand\n * @param b - 5x4 matrix the second operand\n * @returns {number[]} 5x4 matrix\n */\n _multiply(out, a, b) {\n return out[0] = a[0] * b[0] + a[1] * b[5] + a[2] * b[10] + a[3] * b[15], out[1] = a[0] * b[1] + a[1] * b[6] + a[2] * b[11] + a[3] * b[16], out[2] = a[0] * b[2] + a[1] * b[7] + a[2] * b[12] + a[3] * b[17], out[3] = a[0] * b[3] + a[1] * b[8] + a[2] * b[13] + a[3] * b[18], out[4] = a[0] * b[4] + a[1] * b[9] + a[2] * b[14] + a[3] * b[19] + a[4], out[5] = a[5] * b[0] + a[6] * b[5] + a[7] * b[10] + a[8] * b[15], out[6] = a[5] * b[1] + a[6] * b[6] + a[7] * b[11] + a[8] * b[16], out[7] = a[5] * b[2] + a[6] * b[7] + a[7] * b[12] + a[8] * b[17], out[8] = a[5] * b[3] + a[6] * b[8] + a[7] * b[13] + a[8] * b[18], out[9] = a[5] * b[4] + a[6] * b[9] + a[7] * b[14] + a[8] * b[19] + a[9], out[10] = a[10] * b[0] + a[11] * b[5] + a[12] * b[10] + a[13] * b[15], out[11] = a[10] * b[1] + a[11] * b[6] + a[12] * b[11] + a[13] * b[16], out[12] = a[10] * b[2] + a[11] * b[7] + a[12] * b[12] + a[13] * b[17], out[13] = a[10] * b[3] + a[11] * b[8] + a[12] * b[13] + a[13] * b[18], out[14] = a[10] * b[4] + a[11] * b[9] + a[12] * b[14] + a[13] * b[19] + a[14], out[15] = a[15] * b[0] + a[16] * b[5] + a[17] * b[10] + a[18] * b[15], out[16] = a[15] * b[1] + a[16] * b[6] + a[17] * b[11] + a[18] * b[16], out[17] = a[15] * b[2] + a[16] * b[7] + a[17] * b[12] + a[18] * b[17], out[18] = a[15] * b[3] + a[16] * b[8] + a[17] * b[13] + a[18] * b[18], out[19] = a[15] * b[4] + a[16] * b[9] + a[17] * b[14] + a[18] * b[19] + a[19], out;\n }\n /**\n * Create a Float32 Array and normalize the offset component to 0-1\n * @param {number[]} matrix - 5x4 matrix\n * @returns {number[]} 5x4 matrix with all values between 0-1\n */\n _colorMatrix(matrix) {\n const m = new Float32Array(matrix);\n return m[4] /= 255, m[9] /= 255, m[14] /= 255, m[19] /= 255, m;\n }\n /**\n * Adjusts brightness\n * @param b - value of the brigthness (0-1, where 0 is black)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n brightness(b, multiply) {\n const matrix = [\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Sets each channel on the diagonal of the color matrix.\n * This can be used to achieve a tinting effect on Containers similar to the tint field of some\n * display objects like Sprite, Text, Graphics, and Mesh.\n * @param color - Color of the tint. This is a hex value.\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n tint(color, multiply) {\n const [r, g, b] = Color.shared.setValue(color).toArray(), matrix = [\n r,\n 0,\n 0,\n 0,\n 0,\n 0,\n g,\n 0,\n 0,\n 0,\n 0,\n 0,\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Set the matrices in grey scales\n * @param scale - value of the grey (0-1, where 0 is black)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n greyscale(scale, multiply) {\n const matrix = [\n scale,\n scale,\n scale,\n 0,\n 0,\n scale,\n scale,\n scale,\n 0,\n 0,\n scale,\n scale,\n scale,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Set the black and white matrice.\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n blackAndWhite(multiply) {\n const matrix = [\n 0.3,\n 0.6,\n 0.1,\n 0,\n 0,\n 0.3,\n 0.6,\n 0.1,\n 0,\n 0,\n 0.3,\n 0.6,\n 0.1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Set the hue property of the color\n * @param rotation - in degrees\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n hue(rotation, multiply) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cosR = Math.cos(rotation), sinR = Math.sin(rotation), sqrt = Math.sqrt, w = 1 / 3, sqrW = sqrt(w), a00 = cosR + (1 - cosR) * w, a01 = w * (1 - cosR) - sqrW * sinR, a02 = w * (1 - cosR) + sqrW * sinR, a10 = w * (1 - cosR) + sqrW * sinR, a11 = cosR + w * (1 - cosR), a12 = w * (1 - cosR) - sqrW * sinR, a20 = w * (1 - cosR) - sqrW * sinR, a21 = w * (1 - cosR) + sqrW * sinR, a22 = cosR + w * (1 - cosR), matrix = [\n a00,\n a01,\n a02,\n 0,\n 0,\n a10,\n a11,\n a12,\n 0,\n 0,\n a20,\n a21,\n a22,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Set the contrast matrix, increase the separation between dark and bright\n * Increase contrast : shadows darker and highlights brighter\n * Decrease contrast : bring the shadows up and the highlights down\n * @param amount - value of the contrast (0-1)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n contrast(amount, multiply) {\n const v = (amount || 0) + 1, o = -0.5 * (v - 1), matrix = [\n v,\n 0,\n 0,\n 0,\n o,\n 0,\n v,\n 0,\n 0,\n o,\n 0,\n 0,\n v,\n 0,\n o,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Set the saturation matrix, increase the separation between colors\n * Increase saturation : increase contrast, brightness, and sharpness\n * @param amount - The saturation amount (0-1)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n saturate(amount = 0, multiply) {\n const x = amount * 2 / 3 + 1, y = (x - 1) * -0.5, matrix = [\n x,\n y,\n y,\n 0,\n 0,\n y,\n x,\n y,\n 0,\n 0,\n y,\n y,\n x,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /** Desaturate image (remove color) Call the saturate function */\n desaturate() {\n this.saturate(-1);\n }\n /**\n * Negative image (inverse of classic rgb matrix)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n negative(multiply) {\n const matrix = [\n -1,\n 0,\n 0,\n 1,\n 0,\n 0,\n -1,\n 0,\n 1,\n 0,\n 0,\n 0,\n -1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Sepia image\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n sepia(multiply) {\n const matrix = [\n 0.393,\n 0.7689999,\n 0.18899999,\n 0,\n 0,\n 0.349,\n 0.6859999,\n 0.16799999,\n 0,\n 0,\n 0.272,\n 0.5339999,\n 0.13099999,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Color motion picture process invented in 1916 (thanks Dominic Szablewski)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n technicolor(multiply) {\n const matrix = [\n 1.9125277891456083,\n -0.8545344976951645,\n -0.09155508482755585,\n 0,\n 11.793603434377337,\n -0.3087833385928097,\n 1.7658908555458428,\n -0.10601743074722245,\n 0,\n -70.35205161461398,\n -0.231103377548616,\n -0.7501899197440212,\n 1.847597816108189,\n 0,\n 30.950940869491138,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Polaroid filter\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n polaroid(multiply) {\n const matrix = [\n 1.438,\n -0.062,\n -0.062,\n 0,\n 0,\n -0.122,\n 1.378,\n -0.122,\n 0,\n 0,\n -0.016,\n -0.016,\n 1.483,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Filter who transforms : Red -> Blue and Blue -> Red\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n toBGR(multiply) {\n const matrix = [\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Color reversal film introduced by Eastman Kodak in 1935. (thanks Dominic Szablewski)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n kodachrome(multiply) {\n const matrix = [\n 1.1285582396593525,\n -0.3967382283601348,\n -0.03992559172921793,\n 0,\n 63.72958762196502,\n -0.16404339962244616,\n 1.0835251566291304,\n -0.05498805115633132,\n 0,\n 24.732407896706203,\n -0.16786010706155763,\n -0.5603416277695248,\n 1.6014850761964943,\n 0,\n 35.62982807460946,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Brown delicious browni filter (thanks Dominic Szablewski)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n browni(multiply) {\n const matrix = [\n 0.5997023498159715,\n 0.34553243048391263,\n -0.2708298674538042,\n 0,\n 47.43192855600873,\n -0.037703249837783157,\n 0.8609577587992641,\n 0.15059552388459913,\n 0,\n -36.96841498319127,\n 0.24113635128153335,\n -0.07441037908422492,\n 0.44972182064877153,\n 0,\n -7.562075277591283,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Vintage filter (thanks Dominic Szablewski)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n vintage(multiply) {\n const matrix = [\n 0.6279345635605994,\n 0.3202183420819367,\n -0.03965408211312453,\n 0,\n 9.651285835294123,\n 0.02578397704808868,\n 0.6441188644374771,\n 0.03259127616149294,\n 0,\n 7.462829176470591,\n 0.0466055556782719,\n -0.0851232987247891,\n 0.5241648018700465,\n 0,\n 5.159190588235296,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * We don't know exactly what it does, kind of gradient map, but funny to play with!\n * @param desaturation - Tone values.\n * @param toned - Tone values.\n * @param lightColor - Tone values, example: `0xFFE580`\n * @param darkColor - Tone values, example: `0xFFE580`\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n colorTone(desaturation, toned, lightColor, darkColor, multiply) {\n desaturation = desaturation || 0.2, toned = toned || 0.15, lightColor = lightColor || 16770432, darkColor = darkColor || 3375104;\n const temp = Color.shared, [lR, lG, lB] = temp.setValue(lightColor).toArray(), [dR, dG, dB] = temp.setValue(darkColor).toArray(), matrix = [\n 0.3,\n 0.59,\n 0.11,\n 0,\n 0,\n lR,\n lG,\n lB,\n desaturation,\n 0,\n dR,\n dG,\n dB,\n toned,\n 0,\n lR - dR,\n lG - dG,\n lB - dB,\n 0,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Night effect\n * @param intensity - The intensity of the night effect.\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n night(intensity, multiply) {\n intensity = intensity || 0.1;\n const matrix = [\n intensity * -2,\n -intensity,\n 0,\n 0,\n 0,\n -intensity,\n 0,\n intensity,\n 0,\n 0,\n 0,\n intensity,\n intensity * 2,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * Predator effect\n *\n * Erase the current matrix by setting a new indepent one\n * @param amount - how much the predator feels his future victim\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n predator(amount, multiply) {\n const matrix = [\n // row 1\n 11.224130630493164 * amount,\n -4.794486999511719 * amount,\n -2.8746118545532227 * amount,\n 0 * amount,\n 0.40342438220977783 * amount,\n // row 2\n -3.6330697536468506 * amount,\n 9.193157196044922 * amount,\n -2.951810836791992 * amount,\n 0 * amount,\n -1.316135048866272 * amount,\n // row 3\n -3.2184197902679443 * amount,\n -4.2375030517578125 * amount,\n 7.476448059082031 * amount,\n 0 * amount,\n 0.8044459223747253 * amount,\n // row 4\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /**\n * LSD effect\n *\n * Multiply the current matrix\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n lsd(multiply) {\n const matrix = [\n 2,\n -0.4,\n 0.5,\n 0,\n 0,\n -0.5,\n 2,\n -0.4,\n 0,\n 0,\n -0.4,\n -0.5,\n 3,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n /** Erase the current matrix by setting the default one. */\n reset() {\n const matrix = [\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, !1);\n }\n /**\n * The matrix of the color matrix filter\n * @member {number[]}\n * @default [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]\n */\n get matrix() {\n return this.uniforms.m;\n }\n set matrix(value) {\n this.uniforms.m = value;\n }\n /**\n * The opacity value to use when mixing the original and resultant colors.\n *\n * When the value is 0, the original color is used without modification.\n * When the value is 1, the result color is used.\n * When in the range (0, 1) the color is interpolated between the original and result by this amount.\n * @default 1\n */\n get alpha() {\n return this.uniforms.uAlpha;\n }\n set alpha(value) {\n this.uniforms.uAlpha = value;\n }\n}\nColorMatrixFilter.prototype.grayscale = ColorMatrixFilter.prototype.greyscale;\nexport {\n ColorMatrixFilter\n};\n//# sourceMappingURL=ColorMatrixFilter.mjs.map\n","var fragment = `varying vec2 vFilterCoord;\nvarying vec2 vTextureCoord;\n\nuniform vec2 scale;\nuniform mat2 rotation;\nuniform sampler2D uSampler;\nuniform sampler2D mapSampler;\n\nuniform highp vec4 inputSize;\nuniform vec4 inputClamp;\n\nvoid main(void)\n{\n vec4 map = texture2D(mapSampler, vFilterCoord);\n\n map -= 0.5;\n map.xy = scale * inputSize.zw * (rotation * map.xy);\n\n gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));\n}\n`;\nexport {\n fragment as default\n};\n//# sourceMappingURL=displacement.frag.mjs.map\n","var vertex = `attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\nuniform mat3 filterMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vFilterCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n\tgl_Position = filterVertexPosition();\n\tvTextureCoord = filterTextureCoord();\n\tvFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy;\n}\n`;\nexport {\n vertex as default\n};\n//# sourceMappingURL=displacement.vert.mjs.map\n","import { Filter, Matrix, Point } from \"@pixi/core\";\nimport fragment from \"./displacement.frag.mjs\";\nimport vertex from \"./displacement.vert.mjs\";\nclass DisplacementFilter extends Filter {\n /**\n * @param {PIXI.Sprite} sprite - The sprite used for the displacement map. (make sure its added to the scene!)\n * @param scale - The scale of the displacement\n */\n constructor(sprite, scale) {\n const maskMatrix = new Matrix();\n sprite.renderable = !1, super(vertex, fragment, {\n mapSampler: sprite._texture,\n filterMatrix: maskMatrix,\n scale: { x: 1, y: 1 },\n rotation: new Float32Array([1, 0, 0, 1])\n }), this.maskSprite = sprite, this.maskMatrix = maskMatrix, scale == null && (scale = 20), this.scale = new Point(scale, scale);\n }\n /**\n * Applies the filter.\n * @param filterManager - The manager.\n * @param input - The input target.\n * @param output - The output target.\n * @param clearMode - clearMode.\n */\n apply(filterManager, input, output, clearMode) {\n this.uniforms.filterMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, this.maskSprite), this.uniforms.scale.x = this.scale.x, this.uniforms.scale.y = this.scale.y;\n const wt = this.maskSprite.worldTransform, lenX = Math.sqrt(wt.a * wt.a + wt.b * wt.b), lenY = Math.sqrt(wt.c * wt.c + wt.d * wt.d);\n lenX !== 0 && lenY !== 0 && (this.uniforms.rotation[0] = wt.a / lenX, this.uniforms.rotation[1] = wt.b / lenX, this.uniforms.rotation[2] = wt.c / lenY, this.uniforms.rotation[3] = wt.d / lenY), filterManager.applyFilter(this, input, output, clearMode);\n }\n /** The texture used for the displacement map. Must be power of 2 sized texture. */\n get map() {\n return this.uniforms.mapSampler;\n }\n set map(value) {\n this.uniforms.mapSampler = value;\n }\n}\nexport {\n DisplacementFilter\n};\n//# sourceMappingURL=DisplacementFilter.mjs.map\n","var fragment = `varying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\nuniform sampler2D uSampler;\nuniform highp vec4 inputSize;\n\n\n/**\n Basic FXAA implementation based on the code on geeks3d.com with the\n modification that the texture2DLod stuff was removed since it's\n unsupported by WebGL.\n\n --\n\n From:\n https://github.com/mitsuhiko/webgl-meincraft\n\n Copyright (c) 2011 by Armin Ronacher.\n\n Some rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials provided\n with the distribution.\n\n * The names of the contributors may not be used to endorse or\n promote products derived from this software without specific\n prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#ifndef FXAA_REDUCE_MIN\n#define FXAA_REDUCE_MIN (1.0/ 128.0)\n#endif\n#ifndef FXAA_REDUCE_MUL\n#define FXAA_REDUCE_MUL (1.0 / 8.0)\n#endif\n#ifndef FXAA_SPAN_MAX\n#define FXAA_SPAN_MAX 8.0\n#endif\n\n//optimized version for mobile, where dependent\n//texture reads can be a bottleneck\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP,\n vec2 v_rgbNW, vec2 v_rgbNE,\n vec2 v_rgbSW, vec2 v_rgbSE,\n vec2 v_rgbM) {\n vec4 color;\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\n vec4 texColor = texture2D(tex, v_rgbM);\n vec3 rgbM = texColor.xyz;\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float lumaNW = dot(rgbNW, luma);\n float lumaNE = dot(rgbNE, luma);\n float lumaSW = dot(rgbSW, luma);\n float lumaSE = dot(rgbSE, luma);\n float lumaM = dot(rgbM, luma);\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n mediump vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * inverseVP;\n\n vec3 rgbA = 0.5 * (\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\n\n float lumaB = dot(rgbB, luma);\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n color = vec4(rgbA, texColor.a);\n else\n color = vec4(rgbB, texColor.a);\n return color;\n}\n\nvoid main() {\n\n vec4 color;\n\n color = fxaa(uSampler, vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n\n gl_FragColor = color;\n}\n`;\nexport {\n fragment as default\n};\n//# sourceMappingURL=fxaa.frag.mjs.map\n","var vertex = `\nattribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvoid texcoords(vec2 fragCoord, vec2 inverseVP,\n out vec2 v_rgbNW, out vec2 v_rgbNE,\n out vec2 v_rgbSW, out vec2 v_rgbSE,\n out vec2 v_rgbM) {\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\n v_rgbM = vec2(fragCoord * inverseVP);\n}\n\nvoid main(void) {\n\n gl_Position = filterVertexPosition();\n\n vFragCoord = aVertexPosition * outputFrame.zw;\n\n texcoords(vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n}\n`;\nexport {\n vertex as default\n};\n//# sourceMappingURL=fxaa.vert.mjs.map\n","import { Filter } from \"@pixi/core\";\nimport fragment from \"./fxaa.frag.mjs\";\nimport vertex from \"./fxaa.vert.mjs\";\nclass FXAAFilter extends Filter {\n constructor() {\n super(vertex, fragment);\n }\n}\nexport {\n FXAAFilter\n};\n//# sourceMappingURL=FXAAFilter.mjs.map\n","var fragment = `precision highp float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform float uNoise;\nuniform float uSeed;\nuniform sampler2D uSampler;\n\nfloat rand(vec2 co)\n{\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n float randomValue = rand(gl_FragCoord.xy * uSeed);\n float diff = (randomValue - 0.5) * uNoise;\n\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\n if (color.a > 0.0) {\n color.rgb /= color.a;\n }\n\n color.r += diff;\n color.g += diff;\n color.b += diff;\n\n // Premultiply alpha again.\n color.rgb *= color.a;\n\n gl_FragColor = color;\n}\n`;\nexport {\n fragment as default\n};\n//# sourceMappingURL=noise.frag.mjs.map\n","import { Filter, defaultFilterVertex } from \"@pixi/core\";\nimport fragment from \"./noise.frag.mjs\";\nclass NoiseFilter extends Filter {\n /**\n * @param {number} [noise=0.5] - The noise intensity, should be a normalized value in the range [0, 1].\n * @param {number} [seed] - A random seed for the noise generation. Default is `Math.random()`.\n */\n constructor(noise = 0.5, seed = Math.random()) {\n super(defaultFilterVertex, fragment, {\n uNoise: 0,\n uSeed: 0\n }), this.noise = noise, this.seed = seed;\n }\n /**\n * The amount of noise to apply, this value should be in the range (0, 1].\n * @default 0.5\n */\n get noise() {\n return this.uniforms.uNoise;\n }\n set noise(value) {\n this.uniforms.uNoise = value;\n }\n /** A seed value to apply to the random noise generation. `Math.random()` is a good value to use. */\n get seed() {\n return this.uniforms.uSeed;\n }\n set seed(value) {\n this.uniforms.uSeed = value;\n }\n}\nexport {\n NoiseFilter\n};\n//# sourceMappingURL=NoiseFilter.mjs.map\n","import { utils } from \"@pixi/core\";\nimport { AlphaFilter } from \"@pixi/filter-alpha\";\nimport { BlurFilter, BlurFilterPass } from \"@pixi/filter-blur\";\nimport { ColorMatrixFilter } from \"@pixi/filter-color-matrix\";\nimport { DisplacementFilter } from \"@pixi/filter-displacement\";\nimport { FXAAFilter } from \"@pixi/filter-fxaa\";\nimport { NoiseFilter } from \"@pixi/filter-noise\";\nconst filters = {\n /**\n * @class\n * @memberof PIXI.filters\n * @deprecated since 7.1.0\n * @see PIXI.AlphaFilter\n */\n AlphaFilter,\n /**\n * @class\n * @memberof PIXI.filters\n * @deprecated since 7.1.0\n * @see PIXI.BlurFilter\n */\n BlurFilter,\n /**\n * @class\n * @memberof PIXI.filters\n * @deprecated since 7.1.0\n * @see PIXI.BlurFilterPass\n */\n BlurFilterPass,\n /**\n * @class\n * @memberof PIXI.filters\n * @deprecated since 7.1.0\n * @see PIXI.ColorMatrixFilter\n */\n ColorMatrixFilter,\n /**\n * @class\n * @memberof PIXI.filters\n * @deprecated since 7.1.0\n * @see PIXI.DisplacementFilter\n */\n DisplacementFilter,\n /**\n * @class\n * @memberof PIXI.filters\n * @deprecated since 7.1.0\n * @see PIXI.FXAAFilter\n */\n FXAAFilter,\n /**\n * @class\n * @memberof PIXI.filters\n * @deprecated since 7.1.0\n * @see PIXI.NoiseFilter\n */\n NoiseFilter\n};\nObject.entries(filters).forEach(([key, FilterClass]) => {\n Object.defineProperty(filters, key, {\n get() {\n return utils.deprecation(\"7.1.0\", `filters.${key} has moved to ${key}`), FilterClass;\n }\n });\n});\nexport {\n filters\n};\n//# sourceMappingURL=filters.mjs.map\n","import { Ticker, UPDATE_PRIORITY } from \"@pixi/core\";\nclass EventsTickerClass {\n constructor() {\n this.interactionFrequency = 10, this._deltaTime = 0, this._didMove = !1, this.tickerAdded = !1, this._pauseUpdate = !0;\n }\n /**\n * Initializes the event ticker.\n * @param events - The event system.\n */\n init(events) {\n this.removeTickerListener(), this.events = events, this.interactionFrequency = 10, this._deltaTime = 0, this._didMove = !1, this.tickerAdded = !1, this._pauseUpdate = !0;\n }\n /** Whether to pause the update checks or not. */\n get pauseUpdate() {\n return this._pauseUpdate;\n }\n set pauseUpdate(paused) {\n this._pauseUpdate = paused;\n }\n /** Adds the ticker listener. */\n addTickerListener() {\n this.tickerAdded || !this.domElement || (Ticker.system.add(this.tickerUpdate, this, UPDATE_PRIORITY.INTERACTION), this.tickerAdded = !0);\n }\n /** Removes the ticker listener. */\n removeTickerListener() {\n this.tickerAdded && (Ticker.system.remove(this.tickerUpdate, this), this.tickerAdded = !1);\n }\n /** Sets flag to not fire extra events when the user has already moved there mouse */\n pointerMoved() {\n this._didMove = !0;\n }\n /** Updates the state of interactive objects. */\n update() {\n if (!this.domElement || this._pauseUpdate)\n return;\n if (this._didMove) {\n this._didMove = !1;\n return;\n }\n const rootPointerEvent = this.events.rootPointerEvent;\n this.events.supportsTouchEvents && rootPointerEvent.pointerType === \"touch\" || globalThis.document.dispatchEvent(new PointerEvent(\"pointermove\", {\n clientX: rootPointerEvent.clientX,\n clientY: rootPointerEvent.clientY\n }));\n }\n /**\n * Updates the state of interactive objects if at least {@link PIXI.EventsTicker#interactionFrequency}\n * milliseconds have passed since the last invocation.\n *\n * Invoked by a throttled ticker update from {@link PIXI.Ticker.system}.\n * @param deltaTime - time delta since the last call\n */\n tickerUpdate(deltaTime) {\n this._deltaTime += deltaTime, !(this._deltaTime < this.interactionFrequency) && (this._deltaTime = 0, this.update());\n }\n}\nconst EventsTicker = new EventsTickerClass();\nexport {\n EventsTicker\n};\n//# sourceMappingURL=EventTicker.mjs.map\n","import { Point } from \"@pixi/core\";\nclass FederatedEvent {\n /**\n * @param manager - The event boundary which manages this event. Propagation can only occur\n * within the boundary's jurisdiction.\n */\n constructor(manager) {\n this.bubbles = !0, this.cancelBubble = !0, this.cancelable = !1, this.composed = !1, this.defaultPrevented = !1, this.eventPhase = FederatedEvent.prototype.NONE, this.propagationStopped = !1, this.propagationImmediatelyStopped = !1, this.layer = new Point(), this.page = new Point(), this.NONE = 0, this.CAPTURING_PHASE = 1, this.AT_TARGET = 2, this.BUBBLING_PHASE = 3, this.manager = manager;\n }\n /** @readonly */\n get layerX() {\n return this.layer.x;\n }\n /** @readonly */\n get layerY() {\n return this.layer.y;\n }\n /** @readonly */\n get pageX() {\n return this.page.x;\n }\n /** @readonly */\n get pageY() {\n return this.page.y;\n }\n /**\n * Fallback for the deprecated @code{PIXI.InteractionEvent.data}.\n * @deprecated since 7.0.0\n */\n get data() {\n return this;\n }\n /** The propagation path for this event. Alias for {@link PIXI.EventBoundary.propagationPath}. */\n composedPath() {\n return this.manager && (!this.path || this.path[this.path.length - 1] !== this.target) && (this.path = this.target ? this.manager.propagationPath(this.target) : []), this.path;\n }\n /**\n * Unimplemented method included for implementing the DOM interface {@code Event}. It will throw an {@code Error}.\n * @deprecated\n * @param _type\n * @param _bubbles\n * @param _cancelable\n */\n initEvent(_type, _bubbles, _cancelable) {\n throw new Error(\"initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.\");\n }\n /**\n * Unimplemented method included for implementing the DOM interface {@code UIEvent}. It will throw an {@code Error}.\n * @deprecated\n * @param _typeArg\n * @param _bubblesArg\n * @param _cancelableArg\n * @param _viewArg\n * @param _detailArg\n */\n initUIEvent(_typeArg, _bubblesArg, _cancelableArg, _viewArg, _detailArg) {\n throw new Error(\"initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.\");\n }\n /** Prevent default behavior of PixiJS and the user agent. */\n preventDefault() {\n this.nativeEvent instanceof Event && this.nativeEvent.cancelable && this.nativeEvent.preventDefault(), this.defaultPrevented = !0;\n }\n /**\n * Stop this event from propagating to any addition listeners, including on the\n * {@link PIXI.FederatedEventTarget.currentTarget currentTarget} and also the following\n * event targets on the propagation path.\n */\n stopImmediatePropagation() {\n this.propagationImmediatelyStopped = !0;\n }\n /**\n * Stop this event from propagating to the next {@link PIXI.FederatedEventTarget}. The rest of the listeners\n * on the {@link PIXI.FederatedEventTarget.currentTarget currentTarget} will still be notified.\n */\n stopPropagation() {\n this.propagationStopped = !0;\n }\n}\nexport {\n FederatedEvent\n};\n//# sourceMappingURL=FederatedEvent.mjs.map\n","import { Point } from \"@pixi/core\";\nimport { FederatedEvent } from \"./FederatedEvent.mjs\";\nclass FederatedMouseEvent extends FederatedEvent {\n constructor() {\n super(...arguments), this.client = new Point(), this.movement = new Point(), this.offset = new Point(), this.global = new Point(), this.screen = new Point();\n }\n /** @readonly */\n get clientX() {\n return this.client.x;\n }\n /** @readonly */\n get clientY() {\n return this.client.y;\n }\n /**\n * Alias for {@link PIXI.FederatedMouseEvent.clientX this.clientX}.\n * @readonly\n */\n get x() {\n return this.clientX;\n }\n /**\n * Alias for {@link PIXI.FederatedMouseEvent.clientY this.clientY}.\n * @readonly\n */\n get y() {\n return this.clientY;\n }\n /** @readonly */\n get movementX() {\n return this.movement.x;\n }\n /** @readonly */\n get movementY() {\n return this.movement.y;\n }\n /** @readonly */\n get offsetX() {\n return this.offset.x;\n }\n /** @readonly */\n get offsetY() {\n return this.offset.y;\n }\n /** @readonly */\n get globalX() {\n return this.global.x;\n }\n /** @readonly */\n get globalY() {\n return this.global.y;\n }\n /**\n * The pointer coordinates in the renderer's screen. Alias for {@code screen.x}.\n * @readonly\n */\n get screenX() {\n return this.screen.x;\n }\n /**\n * The pointer coordinates in the renderer's screen. Alias for {@code screen.y}.\n * @readonly\n */\n get screenY() {\n return this.screen.y;\n }\n /**\n * This will return the local coordinates of the specified displayObject for this InteractionData\n * @param {PIXI.DisplayObject} displayObject - The DisplayObject that you would like the local\n * coords off\n * @param {PIXI.IPointData} point - A Point object in which to store the value, optional (otherwise\n * will create a new point)\n * @param {PIXI.IPointData} globalPos - A Point object containing your custom global coords, optional\n * (otherwise will use the current global coords)\n * @returns - A point containing the coordinates of the InteractionData position relative\n * to the DisplayObject\n */\n getLocalPosition(displayObject, point, globalPos) {\n return displayObject.worldTransform.applyInverse(globalPos || this.global, point);\n }\n /**\n * Whether the modifier key was pressed when this event natively occurred.\n * @param key - The modifier key.\n */\n getModifierState(key) {\n return \"getModifierState\" in this.nativeEvent && this.nativeEvent.getModifierState(key);\n }\n /**\n * Not supported.\n * @param _typeArg\n * @param _canBubbleArg\n * @param _cancelableArg\n * @param _viewArg\n * @param _detailArg\n * @param _screenXArg\n * @param _screenYArg\n * @param _clientXArg\n * @param _clientYArg\n * @param _ctrlKeyArg\n * @param _altKeyArg\n * @param _shiftKeyArg\n * @param _metaKeyArg\n * @param _buttonArg\n * @param _relatedTargetArg\n * @deprecated since 7.0.0\n */\n // eslint-disable-next-line max-params\n initMouseEvent(_typeArg, _canBubbleArg, _cancelableArg, _viewArg, _detailArg, _screenXArg, _screenYArg, _clientXArg, _clientYArg, _ctrlKeyArg, _altKeyArg, _shiftKeyArg, _metaKeyArg, _buttonArg, _relatedTargetArg) {\n throw new Error(\"Method not implemented.\");\n }\n}\nexport {\n FederatedMouseEvent\n};\n//# sourceMappingURL=FederatedMouseEvent.mjs.map\n","import { FederatedMouseEvent } from \"./FederatedMouseEvent.mjs\";\nclass FederatedPointerEvent extends FederatedMouseEvent {\n constructor() {\n super(...arguments), this.width = 0, this.height = 0, this.isPrimary = !1;\n }\n // Only included for completeness for now\n getCoalescedEvents() {\n return this.type === \"pointermove\" || this.type === \"mousemove\" || this.type === \"touchmove\" ? [this] : [];\n }\n // Only included for completeness for now\n getPredictedEvents() {\n throw new Error(\"getPredictedEvents is not supported!\");\n }\n}\nexport {\n FederatedPointerEvent\n};\n//# sourceMappingURL=FederatedPointerEvent.mjs.map\n","import { FederatedMouseEvent } from \"./FederatedMouseEvent.mjs\";\nclass FederatedWheelEvent extends FederatedMouseEvent {\n constructor() {\n super(...arguments), this.DOM_DELTA_PIXEL = 0, this.DOM_DELTA_LINE = 1, this.DOM_DELTA_PAGE = 2;\n }\n}\nFederatedWheelEvent.DOM_DELTA_PIXEL = 0, /** Units specified in lines. */\nFederatedWheelEvent.DOM_DELTA_LINE = 1, /** Units specified in pages. */\nFederatedWheelEvent.DOM_DELTA_PAGE = 2;\nexport {\n FederatedWheelEvent\n};\n//# sourceMappingURL=FederatedWheelEvent.mjs.map\n","import { Point, utils } from \"@pixi/core\";\nimport { EventsTicker } from \"./EventTicker.mjs\";\nimport { FederatedMouseEvent } from \"./FederatedMouseEvent.mjs\";\nimport { FederatedPointerEvent } from \"./FederatedPointerEvent.mjs\";\nimport { FederatedWheelEvent } from \"./FederatedWheelEvent.mjs\";\nconst PROPAGATION_LIMIT = 2048, tempHitLocation = new Point(), tempLocalMapping = new Point();\nclass EventBoundary {\n /**\n * @param rootTarget - The holder of the event boundary.\n */\n constructor(rootTarget) {\n this.dispatch = new utils.EventEmitter(), this.moveOnAll = !1, this.enableGlobalMoveEvents = !0, this.mappingState = {\n trackingData: {}\n }, this.eventPool = /* @__PURE__ */ new Map(), this._allInteractiveElements = [], this._hitElements = [], this._isPointerMoveEvent = !1, this.rootTarget = rootTarget, this.hitPruneFn = this.hitPruneFn.bind(this), this.hitTestFn = this.hitTestFn.bind(this), this.mapPointerDown = this.mapPointerDown.bind(this), this.mapPointerMove = this.mapPointerMove.bind(this), this.mapPointerOut = this.mapPointerOut.bind(this), this.mapPointerOver = this.mapPointerOver.bind(this), this.mapPointerUp = this.mapPointerUp.bind(this), this.mapPointerUpOutside = this.mapPointerUpOutside.bind(this), this.mapWheel = this.mapWheel.bind(this), this.mappingTable = {}, this.addEventMapping(\"pointerdown\", this.mapPointerDown), this.addEventMapping(\"pointermove\", this.mapPointerMove), this.addEventMapping(\"pointerout\", this.mapPointerOut), this.addEventMapping(\"pointerleave\", this.mapPointerOut), this.addEventMapping(\"pointerover\", this.mapPointerOver), this.addEventMapping(\"pointerup\", this.mapPointerUp), this.addEventMapping(\"pointerupoutside\", this.mapPointerUpOutside), this.addEventMapping(\"wheel\", this.mapWheel);\n }\n /**\n * Adds an event mapping for the event `type` handled by `fn`.\n *\n * Event mappings can be used to implement additional or custom events. They take an event\n * coming from the upstream scene (or directly from the {@link PIXI.EventSystem}) and dispatch new downstream events\n * generally trickling down and bubbling up to {@link PIXI.EventBoundary.rootTarget this.rootTarget}.\n *\n * To modify the semantics of existing events, the built-in mapping methods of EventBoundary should be overridden\n * instead.\n * @param type - The type of upstream event to map.\n * @param fn - The mapping method. The context of this function must be bound manually, if desired.\n */\n addEventMapping(type, fn) {\n this.mappingTable[type] || (this.mappingTable[type] = []), this.mappingTable[type].push({\n fn,\n priority: 0\n }), this.mappingTable[type].sort((a, b) => a.priority - b.priority);\n }\n /**\n * Dispatches the given event\n * @param e\n * @param type\n */\n dispatchEvent(e, type) {\n e.propagationStopped = !1, e.propagationImmediatelyStopped = !1, this.propagate(e, type), this.dispatch.emit(type || e.type, e);\n }\n /**\n * Maps the given upstream event through the event boundary and propagates it downstream.\n * @param e\n */\n mapEvent(e) {\n if (!this.rootTarget)\n return;\n const mappers = this.mappingTable[e.type];\n if (mappers)\n for (let i = 0, j = mappers.length; i < j; i++)\n mappers[i].fn(e);\n else\n console.warn(`[EventBoundary]: Event mapping not defined for ${e.type}`);\n }\n /**\n * Finds the DisplayObject that is the target of a event at the given coordinates.\n *\n * The passed (x,y) coordinates are in the world space above this event boundary.\n * @param x\n * @param y\n */\n hitTest(x, y) {\n EventsTicker.pauseUpdate = !0;\n const fn = this._isPointerMoveEvent && this.enableGlobalMoveEvents ? \"hitTestMoveRecursive\" : \"hitTestRecursive\", invertedPath = this[fn](\n this.rootTarget,\n this.rootTarget.eventMode,\n tempHitLocation.set(x, y),\n this.hitTestFn,\n this.hitPruneFn\n );\n return invertedPath && invertedPath[0];\n }\n /**\n * Propagate the passed event from from {@link PIXI.EventBoundary.rootTarget this.rootTarget} to its\n * target {@code e.target}.\n * @param e - The event to propagate.\n * @param type\n */\n propagate(e, type) {\n if (!e.target)\n return;\n const composedPath = e.composedPath();\n e.eventPhase = e.CAPTURING_PHASE;\n for (let i = 0, j = composedPath.length - 1; i < j; i++)\n if (e.currentTarget = composedPath[i], this.notifyTarget(e, type), e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n if (e.eventPhase = e.AT_TARGET, e.currentTarget = e.target, this.notifyTarget(e, type), !(e.propagationStopped || e.propagationImmediatelyStopped)) {\n e.eventPhase = e.BUBBLING_PHASE;\n for (let i = composedPath.length - 2; i >= 0; i--)\n if (e.currentTarget = composedPath[i], this.notifyTarget(e, type), e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n }\n }\n /**\n * Emits the event {@code e} to all interactive display objects. The event is propagated in the bubbling phase always.\n *\n * This is used in the `globalpointermove` event.\n * @param e - The emitted event.\n * @param type - The listeners to notify.\n * @param targets - The targets to notify.\n */\n all(e, type, targets = this._allInteractiveElements) {\n if (targets.length === 0)\n return;\n e.eventPhase = e.BUBBLING_PHASE;\n const events = Array.isArray(type) ? type : [type];\n for (let i = targets.length - 1; i >= 0; i--)\n events.forEach((event) => {\n e.currentTarget = targets[i], this.notifyTarget(e, event);\n });\n }\n /**\n * Finds the propagation path from {@link PIXI.EventBoundary.rootTarget rootTarget} to the passed\n * {@code target}. The last element in the path is {@code target}.\n * @param target\n */\n propagationPath(target) {\n const propagationPath = [target];\n for (let i = 0; i < PROPAGATION_LIMIT && target !== this.rootTarget; i++) {\n if (!target.parent)\n throw new Error(\"Cannot find propagation path to disconnected target\");\n propagationPath.push(target.parent), target = target.parent;\n }\n return propagationPath.reverse(), propagationPath;\n }\n hitTestMoveRecursive(currentTarget, eventMode, location, testFn, pruneFn, ignore = !1) {\n let shouldReturn = !1;\n if (this._interactivePrune(currentTarget))\n return null;\n if ((currentTarget.eventMode === \"dynamic\" || eventMode === \"dynamic\") && (EventsTicker.pauseUpdate = !1), currentTarget.interactiveChildren && currentTarget.children) {\n const children = currentTarget.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i], nestedHit = this.hitTestMoveRecursive(\n child,\n this._isInteractive(eventMode) ? eventMode : child.eventMode,\n location,\n testFn,\n pruneFn,\n ignore || pruneFn(currentTarget, location)\n );\n if (nestedHit) {\n if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent)\n continue;\n const isInteractive = currentTarget.isInteractive();\n (nestedHit.length > 0 || isInteractive) && (isInteractive && this._allInteractiveElements.push(currentTarget), nestedHit.push(currentTarget)), this._hitElements.length === 0 && (this._hitElements = nestedHit), shouldReturn = !0;\n }\n }\n }\n const isInteractiveMode = this._isInteractive(eventMode), isInteractiveTarget = currentTarget.isInteractive();\n return isInteractiveMode && isInteractiveTarget && this._allInteractiveElements.push(currentTarget), ignore || this._hitElements.length > 0 ? null : shouldReturn ? this._hitElements : isInteractiveMode && !pruneFn(currentTarget, location) && testFn(currentTarget, location) ? isInteractiveTarget ? [currentTarget] : [] : null;\n }\n /**\n * Recursive implementation for {@link PIXI.EventBoundary.hitTest hitTest}.\n * @param currentTarget - The DisplayObject that is to be hit tested.\n * @param eventMode - The event mode for the `currentTarget` or one of its parents.\n * @param location - The location that is being tested for overlap.\n * @param testFn - Callback that determines whether the target passes hit testing. This callback\n * can assume that `pruneFn` failed to prune the display object.\n * @param pruneFn - Callback that determiness whether the target and all of its children\n * cannot pass the hit test. It is used as a preliminary optimization to prune entire subtrees\n * of the scene graph.\n * @returns An array holding the hit testing target and all its ancestors in order. The first element\n * is the target itself and the last is {@link PIXI.EventBoundary.rootTarget rootTarget}. This is the opposite\n * order w.r.t. the propagation path. If no hit testing target is found, null is returned.\n */\n hitTestRecursive(currentTarget, eventMode, location, testFn, pruneFn) {\n if (this._interactivePrune(currentTarget) || pruneFn(currentTarget, location))\n return null;\n if ((currentTarget.eventMode === \"dynamic\" || eventMode === \"dynamic\") && (EventsTicker.pauseUpdate = !1), currentTarget.interactiveChildren && currentTarget.children) {\n const children = currentTarget.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i], nestedHit = this.hitTestRecursive(\n child,\n this._isInteractive(eventMode) ? eventMode : child.eventMode,\n location,\n testFn,\n pruneFn\n );\n if (nestedHit) {\n if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent)\n continue;\n const isInteractive = currentTarget.isInteractive();\n return (nestedHit.length > 0 || isInteractive) && nestedHit.push(currentTarget), nestedHit;\n }\n }\n }\n const isInteractiveMode = this._isInteractive(eventMode), isInteractiveTarget = currentTarget.isInteractive();\n return isInteractiveMode && testFn(currentTarget, location) ? isInteractiveTarget ? [currentTarget] : [] : null;\n }\n _isInteractive(int) {\n return int === \"static\" || int === \"dynamic\";\n }\n _interactivePrune(displayObject) {\n return !!(!displayObject || displayObject.isMask || !displayObject.visible || !displayObject.renderable || displayObject.eventMode === \"none\" || displayObject.eventMode === \"passive\" && !displayObject.interactiveChildren || displayObject.isMask);\n }\n /**\n * Checks whether the display object or any of its children cannot pass the hit test at all.\n *\n * {@link PIXI.EventBoundary}'s implementation uses the {@link PIXI.DisplayObject.hitArea hitArea}\n * and {@link PIXI.DisplayObject._mask} for pruning.\n * @param displayObject\n * @param location\n */\n hitPruneFn(displayObject, location) {\n if (displayObject.hitArea && (displayObject.worldTransform.applyInverse(location, tempLocalMapping), !displayObject.hitArea.contains(tempLocalMapping.x, tempLocalMapping.y)))\n return !0;\n if (displayObject._mask) {\n const maskObject = displayObject._mask.isMaskData ? displayObject._mask.maskObject : displayObject._mask;\n if (maskObject && !maskObject.containsPoint?.(location))\n return !0;\n }\n return !1;\n }\n /**\n * Checks whether the display object passes hit testing for the given location.\n * @param displayObject\n * @param location\n * @returns - Whether `displayObject` passes hit testing for `location`.\n */\n hitTestFn(displayObject, location) {\n return displayObject.eventMode === \"passive\" ? !1 : displayObject.hitArea ? !0 : displayObject.containsPoint ? displayObject.containsPoint(location) : !1;\n }\n /**\n * Notify all the listeners to the event's `currentTarget`.\n *\n * If the `currentTarget` contains the property `on`, then it is called here,\n * simulating the behavior from version 6.x and prior.\n * @param e - The event passed to the target.\n * @param type\n */\n notifyTarget(e, type) {\n type = type ?? e.type;\n const handlerKey = `on${type}`;\n e.currentTarget[handlerKey]?.(e);\n const key = e.eventPhase === e.CAPTURING_PHASE || e.eventPhase === e.AT_TARGET ? `${type}capture` : type;\n this.notifyListeners(e, key), e.eventPhase === e.AT_TARGET && this.notifyListeners(e, type);\n }\n /**\n * Maps the upstream `pointerdown` events to a downstream `pointerdown` event.\n *\n * `touchstart`, `rightdown`, `mousedown` events are also dispatched for specific pointer types.\n * @param from\n */\n mapPointerDown(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const e = this.createPointerEvent(from);\n if (this.dispatchEvent(e, \"pointerdown\"), e.pointerType === \"touch\")\n this.dispatchEvent(e, \"touchstart\");\n else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.dispatchEvent(e, isRightButton ? \"rightdown\" : \"mousedown\");\n }\n const trackingData = this.trackingData(from.pointerId);\n trackingData.pressTargetsByButton[from.button] = e.composedPath(), this.freeEvent(e);\n }\n /**\n * Maps the upstream `pointermove` to downstream `pointerout`, `pointerover`, and `pointermove` events, in that order.\n *\n * The tracking data for the specific pointer has an updated `overTarget`. `mouseout`, `mouseover`,\n * `mousemove`, and `touchmove` events are fired as well for specific pointer types.\n * @param from - The upstream `pointermove` event.\n */\n mapPointerMove(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n this._allInteractiveElements.length = 0, this._hitElements.length = 0, this._isPointerMoveEvent = !0;\n const e = this.createPointerEvent(from);\n this._isPointerMoveEvent = !1;\n const isMouse = e.pointerType === \"mouse\" || e.pointerType === \"pen\", trackingData = this.trackingData(from.pointerId), outTarget = this.findMountedTarget(trackingData.overTargets);\n if (trackingData.overTargets?.length > 0 && outTarget !== e.target) {\n const outType = from.type === \"mousemove\" ? \"mouseout\" : \"pointerout\", outEvent = this.createPointerEvent(from, outType, outTarget);\n if (this.dispatchEvent(outEvent, \"pointerout\"), isMouse && this.dispatchEvent(outEvent, \"mouseout\"), !e.composedPath().includes(outTarget)) {\n const leaveEvent = this.createPointerEvent(from, \"pointerleave\", outTarget);\n for (leaveEvent.eventPhase = leaveEvent.AT_TARGET; leaveEvent.target && !e.composedPath().includes(leaveEvent.target); )\n leaveEvent.currentTarget = leaveEvent.target, this.notifyTarget(leaveEvent), isMouse && this.notifyTarget(leaveEvent, \"mouseleave\"), leaveEvent.target = leaveEvent.target.parent;\n this.freeEvent(leaveEvent);\n }\n this.freeEvent(outEvent);\n }\n if (outTarget !== e.target) {\n const overType = from.type === \"mousemove\" ? \"mouseover\" : \"pointerover\", overEvent = this.clonePointerEvent(e, overType);\n this.dispatchEvent(overEvent, \"pointerover\"), isMouse && this.dispatchEvent(overEvent, \"mouseover\");\n let overTargetAncestor = outTarget?.parent;\n for (; overTargetAncestor && overTargetAncestor !== this.rootTarget.parent && overTargetAncestor !== e.target; )\n overTargetAncestor = overTargetAncestor.parent;\n if (!overTargetAncestor || overTargetAncestor === this.rootTarget.parent) {\n const enterEvent = this.clonePointerEvent(e, \"pointerenter\");\n for (enterEvent.eventPhase = enterEvent.AT_TARGET; enterEvent.target && enterEvent.target !== outTarget && enterEvent.target !== this.rootTarget.parent; )\n enterEvent.currentTarget = enterEvent.target, this.notifyTarget(enterEvent), isMouse && this.notifyTarget(enterEvent, \"mouseenter\"), enterEvent.target = enterEvent.target.parent;\n this.freeEvent(enterEvent);\n }\n this.freeEvent(overEvent);\n }\n const allMethods = [], allowGlobalPointerEvents = this.enableGlobalMoveEvents ?? !0;\n this.moveOnAll ? allMethods.push(\"pointermove\") : this.dispatchEvent(e, \"pointermove\"), allowGlobalPointerEvents && allMethods.push(\"globalpointermove\"), e.pointerType === \"touch\" && (this.moveOnAll ? allMethods.splice(1, 0, \"touchmove\") : this.dispatchEvent(e, \"touchmove\"), allowGlobalPointerEvents && allMethods.push(\"globaltouchmove\")), isMouse && (this.moveOnAll ? allMethods.splice(1, 0, \"mousemove\") : this.dispatchEvent(e, \"mousemove\"), allowGlobalPointerEvents && allMethods.push(\"globalmousemove\"), this.cursor = e.target?.cursor), allMethods.length > 0 && this.all(e, allMethods), this._allInteractiveElements.length = 0, this._hitElements.length = 0, trackingData.overTargets = e.composedPath(), this.freeEvent(e);\n }\n /**\n * Maps the upstream `pointerover` to downstream `pointerover` and `pointerenter` events, in that order.\n *\n * The tracking data for the specific pointer gets a new `overTarget`.\n * @param from - The upstream `pointerover` event.\n */\n mapPointerOver(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId), e = this.createPointerEvent(from), isMouse = e.pointerType === \"mouse\" || e.pointerType === \"pen\";\n this.dispatchEvent(e, \"pointerover\"), isMouse && this.dispatchEvent(e, \"mouseover\"), e.pointerType === \"mouse\" && (this.cursor = e.target?.cursor);\n const enterEvent = this.clonePointerEvent(e, \"pointerenter\");\n for (enterEvent.eventPhase = enterEvent.AT_TARGET; enterEvent.target && enterEvent.target !== this.rootTarget.parent; )\n enterEvent.currentTarget = enterEvent.target, this.notifyTarget(enterEvent), isMouse && this.notifyTarget(enterEvent, \"mouseenter\"), enterEvent.target = enterEvent.target.parent;\n trackingData.overTargets = e.composedPath(), this.freeEvent(e), this.freeEvent(enterEvent);\n }\n /**\n * Maps the upstream `pointerout` to downstream `pointerout`, `pointerleave` events, in that order.\n *\n * The tracking data for the specific pointer is cleared of a `overTarget`.\n * @param from - The upstream `pointerout` event.\n */\n mapPointerOut(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n if (trackingData.overTargets) {\n const isMouse = from.pointerType === \"mouse\" || from.pointerType === \"pen\", outTarget = this.findMountedTarget(trackingData.overTargets), outEvent = this.createPointerEvent(from, \"pointerout\", outTarget);\n this.dispatchEvent(outEvent), isMouse && this.dispatchEvent(outEvent, \"mouseout\");\n const leaveEvent = this.createPointerEvent(from, \"pointerleave\", outTarget);\n for (leaveEvent.eventPhase = leaveEvent.AT_TARGET; leaveEvent.target && leaveEvent.target !== this.rootTarget.parent; )\n leaveEvent.currentTarget = leaveEvent.target, this.notifyTarget(leaveEvent), isMouse && this.notifyTarget(leaveEvent, \"mouseleave\"), leaveEvent.target = leaveEvent.target.parent;\n trackingData.overTargets = null, this.freeEvent(outEvent), this.freeEvent(leaveEvent);\n }\n this.cursor = null;\n }\n /**\n * Maps the upstream `pointerup` event to downstream `pointerup`, `pointerupoutside`,\n * and `click`/`rightclick`/`pointertap` events, in that order.\n *\n * The `pointerupoutside` event bubbles from the original `pointerdown` target to the most specific\n * ancestor of the `pointerdown` and `pointerup` targets, which is also the `click` event's target. `touchend`,\n * `rightup`, `mouseup`, `touchendoutside`, `rightupoutside`, `mouseupoutside`, and `tap` are fired as well for\n * specific pointer types.\n * @param from - The upstream `pointerup` event.\n */\n mapPointerUp(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const now = performance.now(), e = this.createPointerEvent(from);\n if (this.dispatchEvent(e, \"pointerup\"), e.pointerType === \"touch\")\n this.dispatchEvent(e, \"touchend\");\n else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.dispatchEvent(e, isRightButton ? \"rightup\" : \"mouseup\");\n }\n const trackingData = this.trackingData(from.pointerId), pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n let clickTarget = pressTarget;\n if (pressTarget && !e.composedPath().includes(pressTarget)) {\n let currentTarget = pressTarget;\n for (; currentTarget && !e.composedPath().includes(currentTarget); ) {\n if (e.currentTarget = currentTarget, this.notifyTarget(e, \"pointerupoutside\"), e.pointerType === \"touch\")\n this.notifyTarget(e, \"touchendoutside\");\n else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.notifyTarget(e, isRightButton ? \"rightupoutside\" : \"mouseupoutside\");\n }\n currentTarget = currentTarget.parent;\n }\n delete trackingData.pressTargetsByButton[from.button], clickTarget = currentTarget;\n }\n if (clickTarget) {\n const clickEvent = this.clonePointerEvent(e, \"click\");\n clickEvent.target = clickTarget, clickEvent.path = null, trackingData.clicksByButton[from.button] || (trackingData.clicksByButton[from.button] = {\n clickCount: 0,\n target: clickEvent.target,\n timeStamp: now\n });\n const clickHistory = trackingData.clicksByButton[from.button];\n if (clickHistory.target === clickEvent.target && now - clickHistory.timeStamp < 200 ? ++clickHistory.clickCount : clickHistory.clickCount = 1, clickHistory.target = clickEvent.target, clickHistory.timeStamp = now, clickEvent.detail = clickHistory.clickCount, clickEvent.pointerType === \"mouse\") {\n const isRightButton = clickEvent.button === 2;\n this.dispatchEvent(clickEvent, isRightButton ? \"rightclick\" : \"click\");\n } else\n clickEvent.pointerType === \"touch\" && this.dispatchEvent(clickEvent, \"tap\");\n this.dispatchEvent(clickEvent, \"pointertap\"), this.freeEvent(clickEvent);\n }\n this.freeEvent(e);\n }\n /**\n * Maps the upstream `pointerupoutside` event to a downstream `pointerupoutside` event, bubbling from the original\n * `pointerdown` target to `rootTarget`.\n *\n * (The most specific ancestor of the `pointerdown` event and the `pointerup` event must the\n * `{@link PIXI.EventBoundary}'s root because the `pointerup` event occurred outside of the boundary.)\n *\n * `touchendoutside`, `mouseupoutside`, and `rightupoutside` events are fired as well for specific pointer\n * types. The tracking data for the specific pointer is cleared of a `pressTarget`.\n * @param from - The upstream `pointerupoutside` event.\n */\n mapPointerUpOutside(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId), pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]), e = this.createPointerEvent(from);\n if (pressTarget) {\n let currentTarget = pressTarget;\n for (; currentTarget; )\n e.currentTarget = currentTarget, this.notifyTarget(e, \"pointerupoutside\"), e.pointerType === \"touch\" ? this.notifyTarget(e, \"touchendoutside\") : (e.pointerType === \"mouse\" || e.pointerType === \"pen\") && this.notifyTarget(e, e.button === 2 ? \"rightupoutside\" : \"mouseupoutside\"), currentTarget = currentTarget.parent;\n delete trackingData.pressTargetsByButton[from.button];\n }\n this.freeEvent(e);\n }\n /**\n * Maps the upstream `wheel` event to a downstream `wheel` event.\n * @param from - The upstream `wheel` event.\n */\n mapWheel(from) {\n if (!(from instanceof FederatedWheelEvent)) {\n console.warn(\"EventBoundary cannot map a non-wheel event as a wheel event\");\n return;\n }\n const wheelEvent = this.createWheelEvent(from);\n this.dispatchEvent(wheelEvent), this.freeEvent(wheelEvent);\n }\n /**\n * Finds the most specific event-target in the given propagation path that is still mounted in the scene graph.\n *\n * This is used to find the correct `pointerup` and `pointerout` target in the case that the original `pointerdown`\n * or `pointerover` target was unmounted from the scene graph.\n * @param propagationPath - The propagation path was valid in the past.\n * @returns - The most specific event-target still mounted at the same location in the scene graph.\n */\n findMountedTarget(propagationPath) {\n if (!propagationPath)\n return null;\n let currentTarget = propagationPath[0];\n for (let i = 1; i < propagationPath.length && propagationPath[i].parent === currentTarget; i++)\n currentTarget = propagationPath[i];\n return currentTarget;\n }\n /**\n * Creates an event whose {@code originalEvent} is {@code from}, with an optional `type` and `target` override.\n *\n * The event is allocated using {@link PIXI.EventBoundary#allocateEvent this.allocateEvent}.\n * @param from - The {@code originalEvent} for the returned event.\n * @param [type=from.type] - The type of the returned event.\n * @param target - The target of the returned event.\n */\n createPointerEvent(from, type, target) {\n const event = this.allocateEvent(FederatedPointerEvent);\n return this.copyPointerData(from, event), this.copyMouseData(from, event), this.copyData(from, event), event.nativeEvent = from.nativeEvent, event.originalEvent = from, event.target = target ?? this.hitTest(event.global.x, event.global.y) ?? this._hitElements[0], typeof type == \"string\" && (event.type = type), event;\n }\n /**\n * Creates a wheel event whose {@code originalEvent} is {@code from}.\n *\n * The event is allocated using {@link PIXI.EventBoundary#allocateEvent this.allocateEvent}.\n * @param from - The upstream wheel event.\n */\n createWheelEvent(from) {\n const event = this.allocateEvent(FederatedWheelEvent);\n return this.copyWheelData(from, event), this.copyMouseData(from, event), this.copyData(from, event), event.nativeEvent = from.nativeEvent, event.originalEvent = from, event.target = this.hitTest(event.global.x, event.global.y), event;\n }\n /**\n * Clones the event {@code from}, with an optional {@code type} override.\n *\n * The event is allocated using {@link PIXI.EventBoundary#allocateEvent this.allocateEvent}.\n * @param from - The event to clone.\n * @param [type=from.type] - The type of the returned event.\n */\n clonePointerEvent(from, type) {\n const event = this.allocateEvent(FederatedPointerEvent);\n return event.nativeEvent = from.nativeEvent, event.originalEvent = from.originalEvent, this.copyPointerData(from, event), this.copyMouseData(from, event), this.copyData(from, event), event.target = from.target, event.path = from.composedPath().slice(), event.type = type ?? event.type, event;\n }\n /**\n * Copies wheel {@link PIXI.FederatedWheelEvent} data from {@code from} into {@code to}.\n *\n * The following properties are copied:\n * + deltaMode\n * + deltaX\n * + deltaY\n * + deltaZ\n * @param from\n * @param to\n */\n copyWheelData(from, to) {\n to.deltaMode = from.deltaMode, to.deltaX = from.deltaX, to.deltaY = from.deltaY, to.deltaZ = from.deltaZ;\n }\n /**\n * Copies pointer {@link PIXI.FederatedPointerEvent} data from {@code from} into {@code to}.\n *\n * The following properties are copied:\n * + pointerId\n * + width\n * + height\n * + isPrimary\n * + pointerType\n * + pressure\n * + tangentialPressure\n * + tiltX\n * + tiltY\n * @param from\n * @param to\n */\n copyPointerData(from, to) {\n from instanceof FederatedPointerEvent && to instanceof FederatedPointerEvent && (to.pointerId = from.pointerId, to.width = from.width, to.height = from.height, to.isPrimary = from.isPrimary, to.pointerType = from.pointerType, to.pressure = from.pressure, to.tangentialPressure = from.tangentialPressure, to.tiltX = from.tiltX, to.tiltY = from.tiltY, to.twist = from.twist);\n }\n /**\n * Copies mouse {@link PIXI.FederatedMouseEvent} data from {@code from} to {@code to}.\n *\n * The following properties are copied:\n * + altKey\n * + button\n * + buttons\n * + clientX\n * + clientY\n * + metaKey\n * + movementX\n * + movementY\n * + pageX\n * + pageY\n * + x\n * + y\n * + screen\n * + shiftKey\n * + global\n * @param from\n * @param to\n */\n copyMouseData(from, to) {\n from instanceof FederatedMouseEvent && to instanceof FederatedMouseEvent && (to.altKey = from.altKey, to.button = from.button, to.buttons = from.buttons, to.client.copyFrom(from.client), to.ctrlKey = from.ctrlKey, to.metaKey = from.metaKey, to.movement.copyFrom(from.movement), to.screen.copyFrom(from.screen), to.shiftKey = from.shiftKey, to.global.copyFrom(from.global));\n }\n /**\n * Copies base {@link PIXI.FederatedEvent} data from {@code from} into {@code to}.\n *\n * The following properties are copied:\n * + isTrusted\n * + srcElement\n * + timeStamp\n * + type\n * @param from - The event to copy data from.\n * @param to - The event to copy data into.\n */\n copyData(from, to) {\n to.isTrusted = from.isTrusted, to.srcElement = from.srcElement, to.timeStamp = performance.now(), to.type = from.type, to.detail = from.detail, to.view = from.view, to.which = from.which, to.layer.copyFrom(from.layer), to.page.copyFrom(from.page);\n }\n /**\n * @param id - The pointer ID.\n * @returns The tracking data stored for the given pointer. If no data exists, a blank\n * state will be created.\n */\n trackingData(id) {\n return this.mappingState.trackingData[id] || (this.mappingState.trackingData[id] = {\n pressTargetsByButton: {},\n clicksByButton: {},\n overTarget: null\n }), this.mappingState.trackingData[id];\n }\n /**\n * Allocate a specific type of event from {@link PIXI.EventBoundary#eventPool this.eventPool}.\n *\n * This allocation is constructor-agnostic, as long as it only takes one argument - this event\n * boundary.\n * @param constructor - The event's constructor.\n */\n allocateEvent(constructor) {\n this.eventPool.has(constructor) || this.eventPool.set(constructor, []);\n const event = this.eventPool.get(constructor).pop() || new constructor(this);\n return event.eventPhase = event.NONE, event.currentTarget = null, event.path = null, event.target = null, event;\n }\n /**\n * Frees the event and puts it back into the event pool.\n *\n * It is illegal to reuse the event until it is allocated again, using `this.allocateEvent`.\n *\n * It is also advised that events not allocated from {@link PIXI.EventBoundary#allocateEvent this.allocateEvent}\n * not be freed. This is because of the possibility that the same event is freed twice, which can cause\n * it to be allocated twice & result in overwriting.\n * @param event - The event to be freed.\n * @throws Error if the event is managed by another event boundary.\n */\n freeEvent(event) {\n if (event.manager !== this)\n throw new Error(\"It is illegal to free an event not managed by this EventBoundary!\");\n const constructor = event.constructor;\n this.eventPool.has(constructor) || this.eventPool.set(constructor, []), this.eventPool.get(constructor).push(event);\n }\n /**\n * Similar to {@link PIXI.EventEmitter.emit}, except it stops if the `propagationImmediatelyStopped` flag\n * is set on the event.\n * @param e - The event to call each listener with.\n * @param type - The event key.\n */\n notifyListeners(e, type) {\n const listeners = e.currentTarget._events[type];\n if (listeners && e.currentTarget.isInteractive())\n if (\"fn\" in listeners)\n listeners.once && e.currentTarget.removeListener(type, listeners.fn, void 0, !0), listeners.fn.call(listeners.context, e);\n else\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++)\n listeners[i].once && e.currentTarget.removeListener(type, listeners[i].fn, void 0, !0), listeners[i].fn.call(listeners[i].context, e);\n }\n}\nexport {\n EventBoundary\n};\n//# sourceMappingURL=EventBoundary.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/core\";\nimport { EventBoundary } from \"./EventBoundary.mjs\";\nimport { EventsTicker } from \"./EventTicker.mjs\";\nimport { FederatedPointerEvent } from \"./FederatedPointerEvent.mjs\";\nimport { FederatedWheelEvent } from \"./FederatedWheelEvent.mjs\";\nconst MOUSE_POINTER_ID = 1, TOUCH_TO_POINTER = {\n touchstart: \"pointerdown\",\n touchend: \"pointerup\",\n touchendoutside: \"pointerupoutside\",\n touchmove: \"pointermove\",\n touchcancel: \"pointercancel\"\n}, _EventSystem = class _EventSystem2 {\n /**\n * @param {PIXI.Renderer} renderer\n */\n constructor(renderer) {\n this.supportsTouchEvents = \"ontouchstart\" in globalThis, this.supportsPointerEvents = !!globalThis.PointerEvent, this.domElement = null, this.resolution = 1, this.renderer = renderer, this.rootBoundary = new EventBoundary(null), EventsTicker.init(this), this.autoPreventDefault = !0, this.eventsAdded = !1, this.rootPointerEvent = new FederatedPointerEvent(null), this.rootWheelEvent = new FederatedWheelEvent(null), this.cursorStyles = {\n default: \"inherit\",\n pointer: \"pointer\"\n }, this.features = new Proxy({ ..._EventSystem2.defaultEventFeatures }, {\n set: (target, key, value) => (key === \"globalMove\" && (this.rootBoundary.enableGlobalMoveEvents = value), target[key] = value, !0)\n }), this.onPointerDown = this.onPointerDown.bind(this), this.onPointerMove = this.onPointerMove.bind(this), this.onPointerUp = this.onPointerUp.bind(this), this.onPointerOverOut = this.onPointerOverOut.bind(this), this.onWheel = this.onWheel.bind(this);\n }\n /**\n * The default interaction mode for all display objects.\n * @see PIXI.DisplayObject.eventMode\n * @type {PIXI.EventMode}\n * @readonly\n * @since 7.2.0\n */\n static get defaultEventMode() {\n return this._defaultEventMode;\n }\n /**\n * Runner init called, view is available at this point.\n * @ignore\n */\n init(options) {\n const { view, resolution } = this.renderer;\n this.setTargetElement(view), this.resolution = resolution, _EventSystem2._defaultEventMode = options.eventMode ?? \"auto\", Object.assign(this.features, options.eventFeatures ?? {}), this.rootBoundary.enableGlobalMoveEvents = this.features.globalMove;\n }\n /**\n * Handle changing resolution.\n * @ignore\n */\n resolutionChange(resolution) {\n this.resolution = resolution;\n }\n /** Destroys all event listeners and detaches the renderer. */\n destroy() {\n this.setTargetElement(null), this.renderer = null;\n }\n /**\n * Sets the current cursor mode, handling any callbacks or CSS style changes.\n * @param mode - cursor mode, a key from the cursorStyles dictionary\n */\n setCursor(mode) {\n mode = mode || \"default\";\n let applyStyles = !0;\n if (globalThis.OffscreenCanvas && this.domElement instanceof OffscreenCanvas && (applyStyles = !1), this.currentCursor === mode)\n return;\n this.currentCursor = mode;\n const style = this.cursorStyles[mode];\n if (style)\n switch (typeof style) {\n case \"string\":\n applyStyles && (this.domElement.style.cursor = style);\n break;\n case \"function\":\n style(mode);\n break;\n case \"object\":\n applyStyles && Object.assign(this.domElement.style, style);\n break;\n }\n else\n applyStyles && typeof mode == \"string\" && !Object.prototype.hasOwnProperty.call(this.cursorStyles, mode) && (this.domElement.style.cursor = mode);\n }\n /**\n * The global pointer event.\n * Useful for getting the pointer position without listening to events.\n * @since 7.2.0\n */\n get pointer() {\n return this.rootPointerEvent;\n }\n /**\n * Event handler for pointer down events on {@link PIXI.EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch event.\n */\n onPointerDown(nativeEvent) {\n if (!this.features.click)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n const events = this.normalizeToPointerData(nativeEvent);\n this.autoPreventDefault && events[0].isNormalized && (nativeEvent.cancelable || !(\"cancelable\" in nativeEvent)) && nativeEvent.preventDefault();\n for (let i = 0, j = events.length; i < j; i++) {\n const nativeEvent2 = events[i], federatedEvent = this.bootstrapEvent(this.rootPointerEvent, nativeEvent2);\n this.rootBoundary.mapEvent(federatedEvent);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n /**\n * Event handler for pointer move events on on {@link PIXI.EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch events.\n */\n onPointerMove(nativeEvent) {\n if (!this.features.move)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered, EventsTicker.pointerMoved();\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n /**\n * Event handler for pointer up events on {@link PIXI.EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch event.\n */\n onPointerUp(nativeEvent) {\n if (!this.features.click)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n let target = nativeEvent.target;\n nativeEvent.composedPath && nativeEvent.composedPath().length > 0 && (target = nativeEvent.composedPath()[0]);\n const outside = target !== this.domElement ? \"outside\" : \"\", normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n event.type += outside, this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n /**\n * Event handler for pointer over & out events on {@link PIXI.EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch event.\n */\n onPointerOverOut(nativeEvent) {\n if (!this.features.click)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n /**\n * Passive handler for `wheel` events on {@link PIXI.EventSystem.domElement this.domElement}.\n * @param nativeEvent - The native wheel event.\n */\n onWheel(nativeEvent) {\n if (!this.features.wheel)\n return;\n const wheelEvent = this.normalizeWheelEvent(nativeEvent);\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered, this.rootBoundary.mapEvent(wheelEvent);\n }\n /**\n * Sets the {@link PIXI.EventSystem#domElement domElement} and binds event listeners.\n *\n * To deregister the current DOM element without setting a new one, pass {@code null}.\n * @param element - The new DOM element.\n */\n setTargetElement(element) {\n this.removeEvents(), this.domElement = element, EventsTicker.domElement = element, this.addEvents();\n }\n /** Register event listeners on {@link PIXI.Renderer#domElement this.domElement}. */\n addEvents() {\n if (this.eventsAdded || !this.domElement)\n return;\n EventsTicker.addTickerListener();\n const style = this.domElement.style;\n style && (globalThis.navigator.msPointerEnabled ? (style.msContentZooming = \"none\", style.msTouchAction = \"none\") : this.supportsPointerEvents && (style.touchAction = \"none\")), this.supportsPointerEvents ? (globalThis.document.addEventListener(\"pointermove\", this.onPointerMove, !0), this.domElement.addEventListener(\"pointerdown\", this.onPointerDown, !0), this.domElement.addEventListener(\"pointerleave\", this.onPointerOverOut, !0), this.domElement.addEventListener(\"pointerover\", this.onPointerOverOut, !0), globalThis.addEventListener(\"pointerup\", this.onPointerUp, !0)) : (globalThis.document.addEventListener(\"mousemove\", this.onPointerMove, !0), this.domElement.addEventListener(\"mousedown\", this.onPointerDown, !0), this.domElement.addEventListener(\"mouseout\", this.onPointerOverOut, !0), this.domElement.addEventListener(\"mouseover\", this.onPointerOverOut, !0), globalThis.addEventListener(\"mouseup\", this.onPointerUp, !0), this.supportsTouchEvents && (this.domElement.addEventListener(\"touchstart\", this.onPointerDown, !0), this.domElement.addEventListener(\"touchend\", this.onPointerUp, !0), this.domElement.addEventListener(\"touchmove\", this.onPointerMove, !0))), this.domElement.addEventListener(\"wheel\", this.onWheel, {\n passive: !0,\n capture: !0\n }), this.eventsAdded = !0;\n }\n /** Unregister event listeners on {@link PIXI.EventSystem#domElement this.domElement}. */\n removeEvents() {\n if (!this.eventsAdded || !this.domElement)\n return;\n EventsTicker.removeTickerListener();\n const style = this.domElement.style;\n globalThis.navigator.msPointerEnabled ? (style.msContentZooming = \"\", style.msTouchAction = \"\") : this.supportsPointerEvents && (style.touchAction = \"\"), this.supportsPointerEvents ? (globalThis.document.removeEventListener(\"pointermove\", this.onPointerMove, !0), this.domElement.removeEventListener(\"pointerdown\", this.onPointerDown, !0), this.domElement.removeEventListener(\"pointerleave\", this.onPointerOverOut, !0), this.domElement.removeEventListener(\"pointerover\", this.onPointerOverOut, !0), globalThis.removeEventListener(\"pointerup\", this.onPointerUp, !0)) : (globalThis.document.removeEventListener(\"mousemove\", this.onPointerMove, !0), this.domElement.removeEventListener(\"mousedown\", this.onPointerDown, !0), this.domElement.removeEventListener(\"mouseout\", this.onPointerOverOut, !0), this.domElement.removeEventListener(\"mouseover\", this.onPointerOverOut, !0), globalThis.removeEventListener(\"mouseup\", this.onPointerUp, !0), this.supportsTouchEvents && (this.domElement.removeEventListener(\"touchstart\", this.onPointerDown, !0), this.domElement.removeEventListener(\"touchend\", this.onPointerUp, !0), this.domElement.removeEventListener(\"touchmove\", this.onPointerMove, !0))), this.domElement.removeEventListener(\"wheel\", this.onWheel, !0), this.domElement = null, this.eventsAdded = !1;\n }\n /**\n * Maps x and y coords from a DOM object and maps them correctly to the PixiJS view. The\n * resulting value is stored in the point. This takes into account the fact that the DOM\n * element could be scaled and positioned anywhere on the screen.\n * @param {PIXI.IPointData} point - the point that the result will be stored in\n * @param {number} x - the x coord of the position to map\n * @param {number} y - the y coord of the position to map\n */\n mapPositionToPoint(point, x, y) {\n const rect = this.domElement.isConnected ? this.domElement.getBoundingClientRect() : {\n x: 0,\n y: 0,\n width: this.domElement.width,\n height: this.domElement.height,\n left: 0,\n top: 0\n }, resolutionMultiplier = 1 / this.resolution;\n point.x = (x - rect.left) * (this.domElement.width / rect.width) * resolutionMultiplier, point.y = (y - rect.top) * (this.domElement.height / rect.height) * resolutionMultiplier;\n }\n /**\n * Ensures that the original event object contains all data that a regular pointer event would have\n * @param event - The original event data from a touch or mouse event\n * @returns An array containing a single normalized pointer event, in the case of a pointer\n * or mouse event, or a multiple normalized pointer events if there are multiple changed touches\n */\n normalizeToPointerData(event) {\n const normalizedEvents = [];\n if (this.supportsTouchEvents && event instanceof TouchEvent)\n for (let i = 0, li = event.changedTouches.length; i < li; i++) {\n const touch = event.changedTouches[i];\n typeof touch.button > \"u\" && (touch.button = 0), typeof touch.buttons > \"u\" && (touch.buttons = 1), typeof touch.isPrimary > \"u\" && (touch.isPrimary = event.touches.length === 1 && event.type === \"touchstart\"), typeof touch.width > \"u\" && (touch.width = touch.radiusX || 1), typeof touch.height > \"u\" && (touch.height = touch.radiusY || 1), typeof touch.tiltX > \"u\" && (touch.tiltX = 0), typeof touch.tiltY > \"u\" && (touch.tiltY = 0), typeof touch.pointerType > \"u\" && (touch.pointerType = \"touch\"), typeof touch.pointerId > \"u\" && (touch.pointerId = touch.identifier || 0), typeof touch.pressure > \"u\" && (touch.pressure = touch.force || 0.5), typeof touch.twist > \"u\" && (touch.twist = 0), typeof touch.tangentialPressure > \"u\" && (touch.tangentialPressure = 0), typeof touch.layerX > \"u\" && (touch.layerX = touch.offsetX = touch.clientX), typeof touch.layerY > \"u\" && (touch.layerY = touch.offsetY = touch.clientY), touch.isNormalized = !0, touch.type = event.type, normalizedEvents.push(touch);\n }\n else if (!globalThis.MouseEvent || event instanceof MouseEvent && (!this.supportsPointerEvents || !(event instanceof globalThis.PointerEvent))) {\n const tempEvent = event;\n typeof tempEvent.isPrimary > \"u\" && (tempEvent.isPrimary = !0), typeof tempEvent.width > \"u\" && (tempEvent.width = 1), typeof tempEvent.height > \"u\" && (tempEvent.height = 1), typeof tempEvent.tiltX > \"u\" && (tempEvent.tiltX = 0), typeof tempEvent.tiltY > \"u\" && (tempEvent.tiltY = 0), typeof tempEvent.pointerType > \"u\" && (tempEvent.pointerType = \"mouse\"), typeof tempEvent.pointerId > \"u\" && (tempEvent.pointerId = MOUSE_POINTER_ID), typeof tempEvent.pressure > \"u\" && (tempEvent.pressure = 0.5), typeof tempEvent.twist > \"u\" && (tempEvent.twist = 0), typeof tempEvent.tangentialPressure > \"u\" && (tempEvent.tangentialPressure = 0), tempEvent.isNormalized = !0, normalizedEvents.push(tempEvent);\n } else\n normalizedEvents.push(event);\n return normalizedEvents;\n }\n /**\n * Normalizes the native {@link https://w3c.github.io/uievents/#interface-wheelevent WheelEvent}.\n *\n * The returned {@link PIXI.FederatedWheelEvent} is a shared instance. It will not persist across\n * multiple native wheel events.\n * @param nativeEvent - The native wheel event that occurred on the canvas.\n * @returns A federated wheel event.\n */\n normalizeWheelEvent(nativeEvent) {\n const event = this.rootWheelEvent;\n return this.transferMouseData(event, nativeEvent), event.deltaX = nativeEvent.deltaX, event.deltaY = nativeEvent.deltaY, event.deltaZ = nativeEvent.deltaZ, event.deltaMode = nativeEvent.deltaMode, this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY), event.global.copyFrom(event.screen), event.offset.copyFrom(event.screen), event.nativeEvent = nativeEvent, event.type = nativeEvent.type, event;\n }\n /**\n * Normalizes the `nativeEvent` into a federateed {@link PIXI.FederatedPointerEvent}.\n * @param event\n * @param nativeEvent\n */\n bootstrapEvent(event, nativeEvent) {\n return event.originalEvent = null, event.nativeEvent = nativeEvent, event.pointerId = nativeEvent.pointerId, event.width = nativeEvent.width, event.height = nativeEvent.height, event.isPrimary = nativeEvent.isPrimary, event.pointerType = nativeEvent.pointerType, event.pressure = nativeEvent.pressure, event.tangentialPressure = nativeEvent.tangentialPressure, event.tiltX = nativeEvent.tiltX, event.tiltY = nativeEvent.tiltY, event.twist = nativeEvent.twist, this.transferMouseData(event, nativeEvent), this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY), event.global.copyFrom(event.screen), event.offset.copyFrom(event.screen), event.isTrusted = nativeEvent.isTrusted, event.type === \"pointerleave\" && (event.type = \"pointerout\"), event.type.startsWith(\"mouse\") && (event.type = event.type.replace(\"mouse\", \"pointer\")), event.type.startsWith(\"touch\") && (event.type = TOUCH_TO_POINTER[event.type] || event.type), event;\n }\n /**\n * Transfers base & mouse event data from the {@code nativeEvent} to the federated event.\n * @param event\n * @param nativeEvent\n */\n transferMouseData(event, nativeEvent) {\n event.isTrusted = nativeEvent.isTrusted, event.srcElement = nativeEvent.srcElement, event.timeStamp = performance.now(), event.type = nativeEvent.type, event.altKey = nativeEvent.altKey, event.button = nativeEvent.button, event.buttons = nativeEvent.buttons, event.client.x = nativeEvent.clientX, event.client.y = nativeEvent.clientY, event.ctrlKey = nativeEvent.ctrlKey, event.metaKey = nativeEvent.metaKey, event.movement.x = nativeEvent.movementX, event.movement.y = nativeEvent.movementY, event.page.x = nativeEvent.pageX, event.page.y = nativeEvent.pageY, event.relatedTarget = null, event.shiftKey = nativeEvent.shiftKey;\n }\n};\n_EventSystem.extension = {\n name: \"events\",\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ]\n}, /**\n* The event features that are enabled by the EventSystem\n* This option only is available when using **@pixi/events** package\n* (included in the **pixi.js** and **pixi.js-legacy** bundle), otherwise it will be ignored.\n* @since 7.2.0\n*/\n_EventSystem.defaultEventFeatures = {\n move: !0,\n globalMove: !0,\n click: !0,\n wheel: !0\n};\nlet EventSystem = _EventSystem;\nextensions.add(EventSystem);\nexport {\n EventSystem\n};\n//# sourceMappingURL=EventSystem.mjs.map\n","import { utils } from \"@pixi/core\";\nimport { DisplayObject } from \"@pixi/display\";\nimport { EventSystem } from \"./EventSystem.mjs\";\nimport { FederatedEvent } from \"./FederatedEvent.mjs\";\nfunction convertEventModeToInteractiveMode(mode) {\n return mode === \"dynamic\" || mode === \"static\";\n}\nconst FederatedDisplayObject = {\n /**\n * Property-based event handler for the `click` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onclick = (event) => {\n * //some function here that happens on click\n * }\n */\n onclick: null,\n /**\n * Property-based event handler for the `mousedown` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onmousedown = (event) => {\n * //some function here that happens on mousedown\n * }\n */\n onmousedown: null,\n /**\n * Property-based event handler for the `mouseenter` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onmouseenter = (event) => {\n * //some function here that happens on mouseenter\n * }\n */\n onmouseenter: null,\n /**\n * Property-based event handler for the `mouseleave` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onmouseleave = (event) => {\n * //some function here that happens on mouseleave\n * }\n */\n onmouseleave: null,\n /**\n * Property-based event handler for the `mousemove` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onmousemove = (event) => {\n * //some function here that happens on mousemove\n * }\n */\n onmousemove: null,\n /**\n * Property-based event handler for the `globalmousemove` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onglobalmousemove = (event) => {\n * //some function here that happens on globalmousemove\n * }\n */\n onglobalmousemove: null,\n /**\n * Property-based event handler for the `mouseout` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onmouseout = (event) => {\n * //some function here that happens on mouseout\n * }\n */\n onmouseout: null,\n /**\n * Property-based event handler for the `mouseover` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onmouseover = (event) => {\n * //some function here that happens on mouseover\n * }\n */\n onmouseover: null,\n /**\n * Property-based event handler for the `mouseup` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onmouseup = (event) => {\n * //some function here that happens on mouseup\n * }\n */\n onmouseup: null,\n /**\n * Property-based event handler for the `mouseupoutside` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onmouseupoutside = (event) => {\n * //some function here that happens on mouseupoutside\n * }\n */\n onmouseupoutside: null,\n /**\n * Property-based event handler for the `pointercancel` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onpointercancel = (event) => {\n * //some function here that happens on pointercancel\n * }\n */\n onpointercancel: null,\n /**\n * Property-based event handler for the `pointerdown` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onpointerdown = (event) => {\n * //some function here that happens on pointerdown\n * }\n */\n onpointerdown: null,\n /**\n * Property-based event handler for the `pointerenter` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onpointerenter = (event) => {\n * //some function here that happens on pointerenter\n * }\n */\n onpointerenter: null,\n /**\n * Property-based event handler for the `pointerleave` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onpointerleave = (event) => {\n * //some function here that happens on pointerleave\n * }\n */\n onpointerleave: null,\n /**\n * Property-based event handler for the `pointermove` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onpointermove = (event) => {\n * //some function here that happens on pointermove\n * }\n */\n onpointermove: null,\n /**\n * Property-based event handler for the `globalpointermove` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onglobalpointermove = (event) => {\n * //some function here that happens on globalpointermove\n * }\n */\n onglobalpointermove: null,\n /**\n * Property-based event handler for the `pointerout` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onpointerout = (event) => {\n * //some function here that happens on pointerout\n * }\n */\n onpointerout: null,\n /**\n * Property-based event handler for the `pointerover` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onpointerover = (event) => {\n * //some function here that happens on pointerover\n * }\n */\n onpointerover: null,\n /**\n * Property-based event handler for the `pointertap` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onpointertap = (event) => {\n * //some function here that happens on pointertap\n * }\n */\n onpointertap: null,\n /**\n * Property-based event handler for the `pointerup` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onpointerup = (event) => {\n * //some function here that happens on pointerup\n * }\n */\n onpointerup: null,\n /**\n * Property-based event handler for the `pointerupoutside` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onpointerupoutside = (event) => {\n * //some function here that happens on pointerupoutside\n * }\n */\n onpointerupoutside: null,\n /**\n * Property-based event handler for the `rightclick` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onrightclick = (event) => {\n * //some function here that happens on rightclick\n * }\n */\n onrightclick: null,\n /**\n * Property-based event handler for the `rightdown` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onrightdown = (event) => {\n * //some function here that happens on rightdown\n * }\n */\n onrightdown: null,\n /**\n * Property-based event handler for the `rightup` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onrightup = (event) => {\n * //some function here that happens on rightup\n * }\n */\n onrightup: null,\n /**\n * Property-based event handler for the `rightupoutside` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onrightupoutside = (event) => {\n * //some function here that happens on rightupoutside\n * }\n */\n onrightupoutside: null,\n /**\n * Property-based event handler for the `tap` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.ontap = (event) => {\n * //some function here that happens on tap\n * }\n */\n ontap: null,\n /**\n * Property-based event handler for the `touchcancel` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.ontouchcancel = (event) => {\n * //some function here that happens on touchcancel\n * }\n */\n ontouchcancel: null,\n /**\n * Property-based event handler for the `touchend` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.ontouchend = (event) => {\n * //some function here that happens on touchend\n * }\n */\n ontouchend: null,\n /**\n * Property-based event handler for the `touchendoutside` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.ontouchendoutside = (event) => {\n * //some function here that happens on touchendoutside\n * }\n */\n ontouchendoutside: null,\n /**\n * Property-based event handler for the `touchmove` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.ontouchmove = (event) => {\n * //some function here that happens on touchmove\n * }\n */\n ontouchmove: null,\n /**\n * Property-based event handler for the `globaltouchmove` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onglobaltouchmove = (event) => {\n * //some function here that happens on globaltouchmove\n * }\n */\n onglobaltouchmove: null,\n /**\n * Property-based event handler for the `touchstart` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.ontouchstart = (event) => {\n * //some function here that happens on touchstart\n * }\n */\n ontouchstart: null,\n /**\n * Property-based event handler for the `wheel` event.\n * @memberof PIXI.DisplayObject#\n * @default null\n * @example\n * this.onwheel = (event) => {\n * //some function here that happens on wheel\n * }\n */\n onwheel: null,\n /**\n * @ignore\n */\n _internalInteractive: void 0,\n /**\n * Enable interaction events for the DisplayObject. Touch, pointer and mouse\n * @memberof PIXI.DisplayObject#\n */\n get interactive() {\n return this._internalInteractive ?? convertEventModeToInteractiveMode(EventSystem.defaultEventMode);\n },\n set interactive(value) {\n utils.deprecation(\n \"7.2.0\",\n // eslint-disable-next-line max-len\n \"Setting interactive is deprecated, use eventMode = 'none'/'passive'/'auto'/'static'/'dynamic' instead.\"\n ), this._internalInteractive = value, this.eventMode = value ? \"static\" : \"auto\";\n },\n /**\n * @ignore\n */\n _internalEventMode: void 0,\n /**\n * Enable interaction events for the DisplayObject. Touch, pointer and mouse.\n * This now replaces the `interactive` property.\n * There are 5 types of interaction settings:\n * - `'none'`: Ignores all interaction events, even on its children.\n * - `'passive'`: Does not emit events and ignores all hit testing on itself and non-interactive children.\n * Interactive children will still emit events.\n * - `'auto'`: Does not emit events but is hit tested if parent is interactive. Same as `interactive = false` in v7\n * - `'static'`: Emit events and is hit tested. Same as `interaction = true` in v7\n * - `'dynamic'`: Emits events and is hit tested but will also receive mock interaction events fired from a ticker to\n * allow for interaction when the mouse isn't moving\n * @example\n * import { Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite(texture);\n * sprite.eventMode = 'static';\n * sprite.on('tap', (event) => {\n * // Handle event\n * });\n * @memberof PIXI.DisplayObject#\n * @since 7.2.0\n */\n get eventMode() {\n return this._internalEventMode ?? EventSystem.defaultEventMode;\n },\n set eventMode(value) {\n this._internalInteractive = convertEventModeToInteractiveMode(value), this._internalEventMode = value;\n },\n /**\n * Determines if the displayObject is interactive or not\n * @returns {boolean} Whether the displayObject is interactive or not\n * @memberof PIXI.DisplayObject#\n * @since 7.2.0\n * @example\n * import { Sprite } from 'pixi.js';\n * const sprite = new Sprite(texture);\n * sprite.eventMode = 'static';\n * sprite.isInteractive(); // true\n *\n * sprite.eventMode = 'dynamic';\n * sprite.isInteractive(); // true\n *\n * sprite.eventMode = 'none';\n * sprite.isInteractive(); // false\n *\n * sprite.eventMode = 'passive';\n * sprite.isInteractive(); // false\n *\n * sprite.eventMode = 'auto';\n * sprite.isInteractive(); // false\n */\n isInteractive() {\n return this.eventMode === \"static\" || this.eventMode === \"dynamic\";\n },\n /**\n * Determines if the children to the displayObject can be clicked/touched\n * Setting this to false allows PixiJS to bypass a recursive `hitTest` function\n * @memberof PIXI.Container#\n */\n interactiveChildren: !0,\n /**\n * Interaction shape. Children will be hit first, then this shape will be checked.\n * Setting this will cause this shape to be checked in hit tests rather than the displayObject's bounds.\n * @example\n * import { Rectangle, Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite(texture);\n * sprite.interactive = true;\n * sprite.hitArea = new Rectangle(0, 0, 100, 100);\n * @member {PIXI.IHitArea}\n * @memberof PIXI.DisplayObject#\n */\n hitArea: null,\n /**\n * Unlike `on` or `addListener` which are methods from EventEmitter, `addEventListener`\n * seeks to be compatible with the DOM's `addEventListener` with support for options.\n * **IMPORTANT:** _Only_ available if using the `@pixi/events` package.\n * @memberof PIXI.DisplayObject\n * @param type - The type of event to listen to.\n * @param listener - The listener callback or object.\n * @param options - Listener options, used for capture phase.\n * @example\n * // Tell the user whether they did a single, double, triple, or nth click.\n * button.addEventListener('click', {\n * handleEvent(e): {\n * let prefix;\n *\n * switch (e.detail) {\n * case 1: prefix = 'single'; break;\n * case 2: prefix = 'double'; break;\n * case 3: prefix = 'triple'; break;\n * default: prefix = e.detail + 'th'; break;\n * }\n *\n * console.log('That was a ' + prefix + 'click');\n * }\n * });\n *\n * // But skip the first click!\n * button.parent.addEventListener('click', function blockClickOnce(e) {\n * e.stopImmediatePropagation();\n * button.parent.removeEventListener('click', blockClickOnce, true);\n * }, {\n * capture: true,\n * });\n */\n addEventListener(type, listener, options) {\n const capture = typeof options == \"boolean\" && options || typeof options == \"object\" && options.capture, signal = typeof options == \"object\" ? options.signal : void 0, once = typeof options == \"object\" ? options.once === !0 : !1, context = typeof listener == \"function\" ? void 0 : listener;\n type = capture ? `${type}capture` : type;\n const listenerFn = typeof listener == \"function\" ? listener : listener.handleEvent, emitter = this;\n signal && signal.addEventListener(\"abort\", () => {\n emitter.off(type, listenerFn, context);\n }), once ? emitter.once(type, listenerFn, context) : emitter.on(type, listenerFn, context);\n },\n /**\n * Unlike `off` or `removeListener` which are methods from EventEmitter, `removeEventListener`\n * seeks to be compatible with the DOM's `removeEventListener` with support for options.\n * **IMPORTANT:** _Only_ available if using the `@pixi/events` package.\n * @memberof PIXI.DisplayObject\n * @param type - The type of event the listener is bound to.\n * @param listener - The listener callback or object.\n * @param options - The original listener options. This is required to deregister a capture phase listener.\n */\n removeEventListener(type, listener, options) {\n const capture = typeof options == \"boolean\" && options || typeof options == \"object\" && options.capture, context = typeof listener == \"function\" ? void 0 : listener;\n type = capture ? `${type}capture` : type, listener = typeof listener == \"function\" ? listener : listener.handleEvent, this.off(type, listener, context);\n },\n /**\n * Dispatch the event on this {@link PIXI.DisplayObject} using the event's {@link PIXI.EventBoundary}.\n *\n * The target of the event is set to `this` and the `defaultPrevented` flag is cleared before dispatch.\n *\n * **IMPORTANT:** _Only_ available if using the `@pixi/events` package.\n * @memberof PIXI.DisplayObject\n * @param e - The event to dispatch.\n * @returns Whether the {@link PIXI.FederatedEvent.preventDefault preventDefault}() method was not invoked.\n * @example\n * // Reuse a click event!\n * button.dispatchEvent(clickEvent);\n */\n dispatchEvent(e) {\n if (!(e instanceof FederatedEvent))\n throw new Error(\"DisplayObject cannot propagate events outside of the Federated Events API\");\n return e.defaultPrevented = !1, e.path = null, e.target = this, e.manager.dispatchEvent(e), !e.defaultPrevented;\n }\n};\nDisplayObject.mixin(FederatedDisplayObject);\nexport {\n FederatedDisplayObject\n};\n//# sourceMappingURL=FederatedEventTarget.mjs.map\n","const accessibleTarget = {\n /**\n * Flag for if the object is accessible. If true AccessibilityManager will overlay a\n * shadow div with attributes set\n * @member {boolean}\n * @memberof PIXI.DisplayObject#\n */\n accessible: !1,\n /**\n * Sets the title attribute of the shadow div\n * If accessibleTitle AND accessibleHint has not been this will default to 'displayObject [tabIndex]'\n * @member {?string}\n * @memberof PIXI.DisplayObject#\n */\n accessibleTitle: null,\n /**\n * Sets the aria-label attribute of the shadow div\n * @member {string}\n * @memberof PIXI.DisplayObject#\n */\n accessibleHint: null,\n /**\n * @member {number}\n * @memberof PIXI.DisplayObject#\n * @private\n * @todo Needs docs.\n */\n tabIndex: 0,\n /**\n * @member {boolean}\n * @memberof PIXI.DisplayObject#\n * @todo Needs docs.\n */\n _accessibleActive: !1,\n /**\n * @member {boolean}\n * @memberof PIXI.DisplayObject#\n * @todo Needs docs.\n */\n _accessibleDiv: null,\n /**\n * Specify the type of div the accessible layer is. Screen readers treat the element differently\n * depending on this type. Defaults to button.\n * @member {string}\n * @memberof PIXI.DisplayObject#\n * @default 'button'\n */\n accessibleType: \"button\",\n /**\n * Specify the pointer-events the accessible div will use\n * Defaults to auto.\n * @member {string}\n * @memberof PIXI.DisplayObject#\n * @default 'auto'\n */\n accessiblePointerEvents: \"auto\",\n /**\n * Setting to false will prevent any children inside this container to\n * be accessible. Defaults to true.\n * @member {boolean}\n * @memberof PIXI.DisplayObject#\n * @default true\n */\n accessibleChildren: !0,\n renderId: -1\n};\nexport {\n accessibleTarget\n};\n//# sourceMappingURL=accessibleTarget.mjs.map\n","import { utils, ExtensionType, extensions } from \"@pixi/core\";\nimport { DisplayObject } from \"@pixi/display\";\nimport { FederatedEvent } from \"@pixi/events\";\nimport { accessibleTarget } from \"./accessibleTarget.mjs\";\nDisplayObject.mixin(accessibleTarget);\nconst KEY_CODE_TAB = 9, DIV_TOUCH_SIZE = 100, DIV_TOUCH_POS_X = 0, DIV_TOUCH_POS_Y = 0, DIV_TOUCH_ZINDEX = 2, DIV_HOOK_SIZE = 1, DIV_HOOK_POS_X = -1e3, DIV_HOOK_POS_Y = -1e3, DIV_HOOK_ZINDEX = 2;\nclass AccessibilityManager {\n // 2fps\n /**\n * @param {PIXI.CanvasRenderer|PIXI.Renderer} renderer - A reference to the current renderer\n */\n constructor(renderer) {\n this.debug = !1, this._isActive = !1, this._isMobileAccessibility = !1, this.pool = [], this.renderId = 0, this.children = [], this.androidUpdateCount = 0, this.androidUpdateFrequency = 500, this._hookDiv = null, (utils.isMobile.tablet || utils.isMobile.phone) && this.createTouchHook();\n const div = document.createElement(\"div\");\n div.style.width = `${DIV_TOUCH_SIZE}px`, div.style.height = `${DIV_TOUCH_SIZE}px`, div.style.position = \"absolute\", div.style.top = `${DIV_TOUCH_POS_X}px`, div.style.left = `${DIV_TOUCH_POS_Y}px`, div.style.zIndex = DIV_TOUCH_ZINDEX.toString(), this.div = div, this.renderer = renderer, this._onKeyDown = this._onKeyDown.bind(this), this._onMouseMove = this._onMouseMove.bind(this), globalThis.addEventListener(\"keydown\", this._onKeyDown, !1);\n }\n /**\n * Value of `true` if accessibility is currently active and accessibility layers are showing.\n * @member {boolean}\n * @readonly\n */\n get isActive() {\n return this._isActive;\n }\n /**\n * Value of `true` if accessibility is enabled for touch devices.\n * @member {boolean}\n * @readonly\n */\n get isMobileAccessibility() {\n return this._isMobileAccessibility;\n }\n /**\n * Creates the touch hooks.\n * @private\n */\n createTouchHook() {\n const hookDiv = document.createElement(\"button\");\n hookDiv.style.width = `${DIV_HOOK_SIZE}px`, hookDiv.style.height = `${DIV_HOOK_SIZE}px`, hookDiv.style.position = \"absolute\", hookDiv.style.top = `${DIV_HOOK_POS_X}px`, hookDiv.style.left = `${DIV_HOOK_POS_Y}px`, hookDiv.style.zIndex = DIV_HOOK_ZINDEX.toString(), hookDiv.style.backgroundColor = \"#FF0000\", hookDiv.title = \"select to enable accessibility for this content\", hookDiv.addEventListener(\"focus\", () => {\n this._isMobileAccessibility = !0, this.activate(), this.destroyTouchHook();\n }), document.body.appendChild(hookDiv), this._hookDiv = hookDiv;\n }\n /**\n * Destroys the touch hooks.\n * @private\n */\n destroyTouchHook() {\n this._hookDiv && (document.body.removeChild(this._hookDiv), this._hookDiv = null);\n }\n /**\n * Activating will cause the Accessibility layer to be shown.\n * This is called when a user presses the tab key.\n * @private\n */\n activate() {\n this._isActive || (this._isActive = !0, globalThis.document.addEventListener(\"mousemove\", this._onMouseMove, !0), globalThis.removeEventListener(\"keydown\", this._onKeyDown, !1), this.renderer.on(\"postrender\", this.update, this), this.renderer.view.parentNode?.appendChild(this.div));\n }\n /**\n * Deactivating will cause the Accessibility layer to be hidden.\n * This is called when a user moves the mouse.\n * @private\n */\n deactivate() {\n !this._isActive || this._isMobileAccessibility || (this._isActive = !1, globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, !0), globalThis.addEventListener(\"keydown\", this._onKeyDown, !1), this.renderer.off(\"postrender\", this.update), this.div.parentNode?.removeChild(this.div));\n }\n /**\n * This recursive function will run through the scene graph and add any new accessible objects to the DOM layer.\n * @private\n * @param {PIXI.Container} displayObject - The DisplayObject to check.\n */\n updateAccessibleObjects(displayObject) {\n if (!displayObject.visible || !displayObject.accessibleChildren)\n return;\n displayObject.accessible && displayObject.isInteractive() && (displayObject._accessibleActive || this.addChild(displayObject), displayObject.renderId = this.renderId);\n const children = displayObject.children;\n if (children)\n for (let i = 0; i < children.length; i++)\n this.updateAccessibleObjects(children[i]);\n }\n /**\n * Before each render this function will ensure that all divs are mapped correctly to their DisplayObjects.\n * @private\n */\n update() {\n const now = performance.now();\n if (utils.isMobile.android.device && now < this.androidUpdateCount || (this.androidUpdateCount = now + this.androidUpdateFrequency, !this.renderer.renderingToScreen))\n return;\n this.renderer.lastObjectRendered && this.updateAccessibleObjects(this.renderer.lastObjectRendered);\n const { x, y, width, height } = this.renderer.view.getBoundingClientRect(), { width: viewWidth, height: viewHeight, resolution } = this.renderer, sx = width / viewWidth * resolution, sy = height / viewHeight * resolution;\n let div = this.div;\n div.style.left = `${x}px`, div.style.top = `${y}px`, div.style.width = `${viewWidth}px`, div.style.height = `${viewHeight}px`;\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n if (child.renderId !== this.renderId)\n child._accessibleActive = !1, utils.removeItems(this.children, i, 1), this.div.removeChild(child._accessibleDiv), this.pool.push(child._accessibleDiv), child._accessibleDiv = null, i--;\n else {\n div = child._accessibleDiv;\n let hitArea = child.hitArea;\n const wt = child.worldTransform;\n child.hitArea ? (div.style.left = `${(wt.tx + hitArea.x * wt.a) * sx}px`, div.style.top = `${(wt.ty + hitArea.y * wt.d) * sy}px`, div.style.width = `${hitArea.width * wt.a * sx}px`, div.style.height = `${hitArea.height * wt.d * sy}px`) : (hitArea = child.getBounds(), this.capHitArea(hitArea), div.style.left = `${hitArea.x * sx}px`, div.style.top = `${hitArea.y * sy}px`, div.style.width = `${hitArea.width * sx}px`, div.style.height = `${hitArea.height * sy}px`, div.title !== child.accessibleTitle && child.accessibleTitle !== null && (div.title = child.accessibleTitle), div.getAttribute(\"aria-label\") !== child.accessibleHint && child.accessibleHint !== null && div.setAttribute(\"aria-label\", child.accessibleHint)), (child.accessibleTitle !== div.title || child.tabIndex !== div.tabIndex) && (div.title = child.accessibleTitle, div.tabIndex = child.tabIndex, this.debug && this.updateDebugHTML(div));\n }\n }\n this.renderId++;\n }\n /**\n * private function that will visually add the information to the\n * accessability div\n * @param {HTMLElement} div -\n */\n updateDebugHTML(div) {\n div.innerHTML = `type: ${div.type}
title : ${div.title}
tabIndex: ${div.tabIndex}`;\n }\n /**\n * Adjust the hit area based on the bounds of a display object\n * @param {PIXI.Rectangle} hitArea - Bounds of the child\n */\n capHitArea(hitArea) {\n hitArea.x < 0 && (hitArea.width += hitArea.x, hitArea.x = 0), hitArea.y < 0 && (hitArea.height += hitArea.y, hitArea.y = 0);\n const { width: viewWidth, height: viewHeight } = this.renderer;\n hitArea.x + hitArea.width > viewWidth && (hitArea.width = viewWidth - hitArea.x), hitArea.y + hitArea.height > viewHeight && (hitArea.height = viewHeight - hitArea.y);\n }\n /**\n * Adds a DisplayObject to the accessibility manager\n * @private\n * @param {PIXI.DisplayObject} displayObject - The child to make accessible.\n */\n addChild(displayObject) {\n let div = this.pool.pop();\n div || (div = document.createElement(\"button\"), div.style.width = `${DIV_TOUCH_SIZE}px`, div.style.height = `${DIV_TOUCH_SIZE}px`, div.style.backgroundColor = this.debug ? \"rgba(255,255,255,0.5)\" : \"transparent\", div.style.position = \"absolute\", div.style.zIndex = DIV_TOUCH_ZINDEX.toString(), div.style.borderStyle = \"none\", navigator.userAgent.toLowerCase().includes(\"chrome\") ? div.setAttribute(\"aria-live\", \"off\") : div.setAttribute(\"aria-live\", \"polite\"), navigator.userAgent.match(/rv:.*Gecko\\//) ? div.setAttribute(\"aria-relevant\", \"additions\") : div.setAttribute(\"aria-relevant\", \"text\"), div.addEventListener(\"click\", this._onClick.bind(this)), div.addEventListener(\"focus\", this._onFocus.bind(this)), div.addEventListener(\"focusout\", this._onFocusOut.bind(this))), div.style.pointerEvents = displayObject.accessiblePointerEvents, div.type = displayObject.accessibleType, displayObject.accessibleTitle && displayObject.accessibleTitle !== null ? div.title = displayObject.accessibleTitle : (!displayObject.accessibleHint || displayObject.accessibleHint === null) && (div.title = `displayObject ${displayObject.tabIndex}`), displayObject.accessibleHint && displayObject.accessibleHint !== null && div.setAttribute(\"aria-label\", displayObject.accessibleHint), this.debug && this.updateDebugHTML(div), displayObject._accessibleActive = !0, displayObject._accessibleDiv = div, div.displayObject = displayObject, this.children.push(displayObject), this.div.appendChild(displayObject._accessibleDiv), displayObject._accessibleDiv.tabIndex = displayObject.tabIndex;\n }\n /**\n * Dispatch events with the EventSystem.\n * @param e\n * @param type\n * @private\n */\n _dispatchEvent(e, type) {\n const { displayObject: target } = e.target, boundry = this.renderer.events.rootBoundary, event = Object.assign(new FederatedEvent(boundry), { target });\n boundry.rootTarget = this.renderer.lastObjectRendered, type.forEach((type2) => boundry.dispatchEvent(event, type2));\n }\n /**\n * Maps the div button press to pixi's EventSystem (click)\n * @private\n * @param {MouseEvent} e - The click event.\n */\n _onClick(e) {\n this._dispatchEvent(e, [\"click\", \"pointertap\", \"tap\"]);\n }\n /**\n * Maps the div focus events to pixi's EventSystem (mouseover)\n * @private\n * @param {FocusEvent} e - The focus event.\n */\n _onFocus(e) {\n e.target.getAttribute(\"aria-live\") || e.target.setAttribute(\"aria-live\", \"assertive\"), this._dispatchEvent(e, [\"mouseover\"]);\n }\n /**\n * Maps the div focus events to pixi's EventSystem (mouseout)\n * @private\n * @param {FocusEvent} e - The focusout event.\n */\n _onFocusOut(e) {\n e.target.getAttribute(\"aria-live\") || e.target.setAttribute(\"aria-live\", \"polite\"), this._dispatchEvent(e, [\"mouseout\"]);\n }\n /**\n * Is called when a key is pressed\n * @private\n * @param {KeyboardEvent} e - The keydown event.\n */\n _onKeyDown(e) {\n e.keyCode === KEY_CODE_TAB && this.activate();\n }\n /**\n * Is called when the mouse moves across the renderer element\n * @private\n * @param {MouseEvent} e - The mouse event.\n */\n _onMouseMove(e) {\n e.movementX === 0 && e.movementY === 0 || this.deactivate();\n }\n /** Destroys the accessibility manager */\n destroy() {\n this.destroyTouchHook(), this.div = null, globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, !0), globalThis.removeEventListener(\"keydown\", this._onKeyDown), this.pool = null, this.children = null, this.renderer = null;\n }\n}\nAccessibilityManager.extension = {\n name: \"accessibility\",\n type: [\n ExtensionType.RendererPlugin,\n ExtensionType.CanvasRendererPlugin\n ]\n};\nextensions.add(AccessibilityManager);\nexport {\n AccessibilityManager\n};\n//# sourceMappingURL=AccessibilityManager.mjs.map\n","import { autoDetectRenderer, extensions, ExtensionType } from \"@pixi/core\";\nimport { Container } from \"@pixi/display\";\nconst _Application = class _Application2 {\n /**\n * @param options - The optional application and renderer parameters.\n */\n constructor(options) {\n this.stage = new Container(), options = Object.assign({\n forceCanvas: !1\n }, options), this.renderer = autoDetectRenderer(options), _Application2._plugins.forEach((plugin) => {\n plugin.init.call(this, options);\n });\n }\n /** Render the current stage. */\n render() {\n this.renderer.render(this.stage);\n }\n /**\n * Reference to the renderer's canvas element.\n * @member {PIXI.ICanvas}\n * @readonly\n */\n get view() {\n return this.renderer?.view;\n }\n /**\n * Reference to the renderer's screen rectangle. Its safe to use as `filterArea` or `hitArea` for the whole screen.\n * @member {PIXI.Rectangle}\n * @readonly\n */\n get screen() {\n return this.renderer?.screen;\n }\n /**\n * Destroy and don't use after this.\n * @param {boolean} [removeView=false] - Automatically remove canvas from DOM.\n * @param {object|boolean} [stageOptions] - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [stageOptions.children=false] - if set to true, all the children will have their destroy\n * method called as well. 'stageOptions' will be passed on to those calls.\n * @param {boolean} [stageOptions.texture=false] - Only used for child Sprites if stageOptions.children is set\n * to true. Should it destroy the texture of the child sprite\n * @param {boolean} [stageOptions.baseTexture=false] - Only used for child Sprites if stageOptions.children is set\n * to true. Should it destroy the base texture of the child sprite\n */\n destroy(removeView, stageOptions) {\n const plugins = _Application2._plugins.slice(0);\n plugins.reverse(), plugins.forEach((plugin) => {\n plugin.destroy.call(this);\n }), this.stage.destroy(stageOptions), this.stage = null, this.renderer.destroy(removeView), this.renderer = null;\n }\n};\n_Application._plugins = [];\nlet Application = _Application;\nextensions.handleByList(ExtensionType.Application, Application._plugins);\nexport {\n Application\n};\n//# sourceMappingURL=Application.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/core\";\nclass ResizePlugin {\n /**\n * Initialize the plugin with scope of application instance\n * @static\n * @private\n * @param {object} [options] - See application options\n */\n static init(options) {\n Object.defineProperty(\n this,\n \"resizeTo\",\n /**\n * The HTML element or window to automatically resize the\n * renderer's view element to match width and height.\n * @member {Window|HTMLElement}\n * @name resizeTo\n * @memberof PIXI.Application#\n */\n {\n set(dom) {\n globalThis.removeEventListener(\"resize\", this.queueResize), this._resizeTo = dom, dom && (globalThis.addEventListener(\"resize\", this.queueResize), this.resize());\n },\n get() {\n return this._resizeTo;\n }\n }\n ), this.queueResize = () => {\n this._resizeTo && (this.cancelResize(), this._resizeId = requestAnimationFrame(() => this.resize()));\n }, this.cancelResize = () => {\n this._resizeId && (cancelAnimationFrame(this._resizeId), this._resizeId = null);\n }, this.resize = () => {\n if (!this._resizeTo)\n return;\n this.cancelResize();\n let width, height;\n if (this._resizeTo === globalThis.window)\n width = globalThis.innerWidth, height = globalThis.innerHeight;\n else {\n const { clientWidth, clientHeight } = this._resizeTo;\n width = clientWidth, height = clientHeight;\n }\n this.renderer.resize(width, height), this.render();\n }, this._resizeId = null, this._resizeTo = null, this.resizeTo = options.resizeTo || null;\n }\n /**\n * Clean up the ticker, scoped to application\n * @static\n * @private\n */\n static destroy() {\n globalThis.removeEventListener(\"resize\", this.queueResize), this.cancelResize(), this.cancelResize = null, this.queueResize = null, this.resizeTo = null, this.resize = null;\n }\n}\nResizePlugin.extension = ExtensionType.Application;\nextensions.add(ResizePlugin);\nexport {\n ResizePlugin\n};\n//# sourceMappingURL=ResizePlugin.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/core\";\nconst assetKeyMap = {\n loader: ExtensionType.LoadParser,\n resolver: ExtensionType.ResolveParser,\n cache: ExtensionType.CacheParser,\n detection: ExtensionType.DetectionParser\n};\nextensions.handle(ExtensionType.Asset, (extension) => {\n const ref = extension.ref;\n Object.entries(assetKeyMap).filter(([key]) => !!ref[key]).forEach(([key, type]) => extensions.add(Object.assign(\n ref[key],\n // Allow the function to optionally define it's own\n // ExtensionMetadata, the use cases here is priority for LoaderParsers\n { extension: ref[key].extension ?? type }\n )));\n}, (extension) => {\n const ref = extension.ref;\n Object.keys(assetKeyMap).filter((key) => !!ref[key]).forEach((key) => extensions.remove(ref[key]));\n});\n//# sourceMappingURL=AssetExtension.mjs.map\n","class BackgroundLoader {\n /**\n * @param loader\n * @param verbose - should the loader log to the console\n */\n constructor(loader, verbose = !1) {\n this._loader = loader, this._assetList = [], this._isLoading = !1, this._maxConcurrent = 1, this.verbose = verbose;\n }\n /**\n * Adds an array of assets to load.\n * @param assetUrls - assets to load\n */\n add(assetUrls) {\n assetUrls.forEach((a) => {\n this._assetList.push(a);\n }), this.verbose && console.log(\"[BackgroundLoader] assets: \", this._assetList), this._isActive && !this._isLoading && this._next();\n }\n /**\n * Loads the next set of assets. Will try to load as many assets as it can at the same time.\n *\n * The max assets it will try to load at one time will be 4.\n */\n async _next() {\n if (this._assetList.length && this._isActive) {\n this._isLoading = !0;\n const toLoad = [], toLoadAmount = Math.min(this._assetList.length, this._maxConcurrent);\n for (let i = 0; i < toLoadAmount; i++)\n toLoad.push(this._assetList.pop());\n await this._loader.load(toLoad), this._isLoading = !1, this._next();\n }\n }\n /**\n * Activate/Deactivate the loading. If set to true then it will immediately continue to load the next asset.\n * @returns whether the class is active\n */\n get active() {\n return this._isActive;\n }\n set active(value) {\n this._isActive !== value && (this._isActive = value, value && !this._isLoading && this._next());\n }\n}\nexport {\n BackgroundLoader\n};\n//# sourceMappingURL=BackgroundLoader.mjs.map\n","function checkDataUrl(url, mimes) {\n if (Array.isArray(mimes)) {\n for (const mime of mimes)\n if (url.startsWith(`data:${mime}`))\n return !0;\n return !1;\n }\n return url.startsWith(`data:${mimes}`);\n}\nexport {\n checkDataUrl\n};\n//# sourceMappingURL=checkDataUrl.mjs.map\n","import { utils } from \"@pixi/core\";\nfunction checkExtension(url, extension) {\n const tempURL = url.split(\"?\")[0], ext = utils.path.extname(tempURL).toLowerCase();\n return Array.isArray(extension) ? extension.includes(ext) : ext === extension;\n}\nexport {\n checkExtension\n};\n//# sourceMappingURL=checkExtension.mjs.map\n","const convertToList = (input, transform, forceTransform = !1) => (Array.isArray(input) || (input = [input]), transform ? input.map((item) => typeof item == \"string\" || forceTransform ? transform(item) : item) : input);\nexport {\n convertToList\n};\n//# sourceMappingURL=convertToList.mjs.map\n","const copySearchParams = (targetUrl, sourceUrl) => {\n const searchParams = sourceUrl.split(\"?\")[1];\n return searchParams && (targetUrl += `?${searchParams}`), targetUrl;\n};\nexport {\n copySearchParams\n};\n//# sourceMappingURL=copySearchParams.mjs.map\n","function processX(base, ids, depth, result, tags) {\n const id = ids[depth];\n for (let i = 0; i < id.length; i++) {\n const value = id[i];\n depth < ids.length - 1 ? processX(base.replace(result[depth], value), ids, depth + 1, result, tags) : tags.push(base.replace(result[depth], value));\n }\n}\nfunction createStringVariations(string) {\n const regex = /\\{(.*?)\\}/g, result = string.match(regex), tags = [];\n if (result) {\n const ids = [];\n result.forEach((vars) => {\n const split = vars.substring(1, vars.length - 1).split(\",\");\n ids.push(split);\n }), processX(string, ids, 0, result, tags);\n } else\n tags.push(string);\n return tags;\n}\nexport {\n createStringVariations\n};\n//# sourceMappingURL=createStringVariations.mjs.map\n","const isSingleItem = (item) => !Array.isArray(item);\nexport {\n isSingleItem\n};\n//# sourceMappingURL=isSingleItem.mjs.map\n","import { Texture, BaseTexture } from \"@pixi/core\";\nimport \"../utils/index.mjs\";\nimport { convertToList } from \"../utils/convertToList.mjs\";\nclass CacheClass {\n constructor() {\n this._parsers = [], this._cache = /* @__PURE__ */ new Map(), this._cacheMap = /* @__PURE__ */ new Map();\n }\n /** Clear all entries. */\n reset() {\n this._cacheMap.clear(), this._cache.clear();\n }\n /**\n * Check if the key exists\n * @param key - The key to check\n */\n has(key) {\n return this._cache.has(key);\n }\n /**\n * Fetch entry by key\n * @param key - The key of the entry to get\n */\n get(key) {\n const result = this._cache.get(key);\n return result || console.warn(`[Assets] Asset id ${key} was not found in the Cache`), result;\n }\n /**\n * Set a value by key or keys name\n * @param key - The key or keys to set\n * @param value - The value to store in the cache or from which cacheable assets will be derived.\n */\n set(key, value) {\n const keys = convertToList(key);\n let cacheableAssets;\n for (let i = 0; i < this.parsers.length; i++) {\n const parser = this.parsers[i];\n if (parser.test(value)) {\n cacheableAssets = parser.getCacheableAssets(keys, value);\n break;\n }\n }\n cacheableAssets || (cacheableAssets = {}, keys.forEach((key2) => {\n cacheableAssets[key2] = value;\n }));\n const cacheKeys = Object.keys(cacheableAssets), cachedAssets = {\n cacheKeys,\n keys\n };\n if (keys.forEach((key2) => {\n this._cacheMap.set(key2, cachedAssets);\n }), cacheKeys.forEach((key2) => {\n this._cache.has(key2) && this._cache.get(key2) !== value && console.warn(\"[Cache] already has key:\", key2), this._cache.set(key2, cacheableAssets[key2]);\n }), value instanceof Texture) {\n const texture = value;\n keys.forEach((key2) => {\n texture.baseTexture !== Texture.EMPTY.baseTexture && BaseTexture.addToCache(texture.baseTexture, key2), Texture.addToCache(texture, key2);\n });\n }\n }\n /**\n * Remove entry by key\n *\n * This function will also remove any associated alias from the cache also.\n * @param key - The key of the entry to remove\n */\n remove(key) {\n if (!this._cacheMap.has(key)) {\n console.warn(`[Assets] Asset id ${key} was not found in the Cache`);\n return;\n }\n const cacheMap = this._cacheMap.get(key);\n cacheMap.cacheKeys.forEach((key2) => {\n this._cache.delete(key2);\n }), cacheMap.keys.forEach((key2) => {\n this._cacheMap.delete(key2);\n });\n }\n /** All loader parsers registered */\n get parsers() {\n return this._parsers;\n }\n}\nconst Cache = new CacheClass();\nexport {\n Cache\n};\n//# sourceMappingURL=Cache.mjs.map\n","import { utils } from \"@pixi/core\";\nimport \"../utils/index.mjs\";\nimport { isSingleItem } from \"../utils/isSingleItem.mjs\";\nimport { convertToList } from \"../utils/convertToList.mjs\";\nclass Loader {\n constructor() {\n this._parsers = [], this._parsersValidated = !1, this.parsers = new Proxy(this._parsers, {\n set: (target, key, value) => (this._parsersValidated = !1, target[key] = value, !0)\n }), this.promiseCache = {};\n }\n /** function used for testing */\n reset() {\n this._parsersValidated = !1, this.promiseCache = {};\n }\n /**\n * Used internally to generate a promise for the asset to be loaded.\n * @param url - The URL to be loaded\n * @param data - any custom additional information relevant to the asset being loaded\n * @returns - a promise that will resolve to an Asset for example a Texture of a JSON object\n */\n _getLoadPromiseAndParser(url, data) {\n const result = {\n promise: null,\n parser: null\n };\n return result.promise = (async () => {\n let asset = null, parser = null;\n if (data.loadParser && (parser = this._parserHash[data.loadParser], parser || console.warn(`[Assets] specified load parser \"${data.loadParser}\" not found while loading ${url}`)), !parser) {\n for (let i = 0; i < this.parsers.length; i++) {\n const parserX = this.parsers[i];\n if (parserX.load && parserX.test?.(url, data, this)) {\n parser = parserX;\n break;\n }\n }\n if (!parser)\n return console.warn(`[Assets] ${url} could not be loaded as we don't know how to parse it, ensure the correct parser has been added`), null;\n }\n asset = await parser.load(url, data, this), result.parser = parser;\n for (let i = 0; i < this.parsers.length; i++) {\n const parser2 = this.parsers[i];\n parser2.parse && parser2.parse && await parser2.testParse?.(asset, data, this) && (asset = await parser2.parse(asset, data, this) || asset, result.parser = parser2);\n }\n return asset;\n })(), result;\n }\n async load(assetsToLoadIn, onProgress) {\n this._parsersValidated || this._validateParsers();\n let count = 0;\n const assets = {}, singleAsset = isSingleItem(assetsToLoadIn), assetsToLoad = convertToList(assetsToLoadIn, (item) => ({\n alias: [item],\n src: item\n })), total = assetsToLoad.length, promises = assetsToLoad.map(async (asset) => {\n const url = utils.path.toAbsolute(asset.src);\n if (!assets[asset.src])\n try {\n this.promiseCache[url] || (this.promiseCache[url] = this._getLoadPromiseAndParser(url, asset)), assets[asset.src] = await this.promiseCache[url].promise, onProgress && onProgress(++count / total);\n } catch (e) {\n throw delete this.promiseCache[url], delete assets[asset.src], new Error(`[Loader.load] Failed to load ${url}.\n${e}`);\n }\n });\n return await Promise.all(promises), singleAsset ? assets[assetsToLoad[0].src] : assets;\n }\n /**\n * Unloads one or more assets. Any unloaded assets will be destroyed, freeing up memory for your app.\n * The parser that created the asset, will be the one that unloads it.\n * @example\n * // Single asset:\n * const asset = await Loader.load('cool.png');\n *\n * await Loader.unload('cool.png');\n *\n * console.log(asset.destroyed); // true\n * @param assetsToUnloadIn - urls that you want to unload, or a single one!\n */\n async unload(assetsToUnloadIn) {\n const promises = convertToList(assetsToUnloadIn, (item) => ({\n alias: [item],\n src: item\n })).map(async (asset) => {\n const url = utils.path.toAbsolute(asset.src), loadPromise = this.promiseCache[url];\n if (loadPromise) {\n const loadedAsset = await loadPromise.promise;\n delete this.promiseCache[url], loadPromise.parser?.unload?.(loadedAsset, asset, this);\n }\n });\n await Promise.all(promises);\n }\n /** validates our parsers, right now it only checks for name conflicts but we can add more here as required! */\n _validateParsers() {\n this._parsersValidated = !0, this._parserHash = this._parsers.filter((parser) => parser.name).reduce((hash, parser) => (hash[parser.name] && console.warn(`[Assets] loadParser name conflict \"${parser.name}\"`), { ...hash, [parser.name]: parser }), {});\n }\n}\nexport {\n Loader\n};\n//# sourceMappingURL=Loader.mjs.map\n","var LoaderParserPriority = /* @__PURE__ */ ((LoaderParserPriority2) => (LoaderParserPriority2[LoaderParserPriority2.Low = 0] = \"Low\", LoaderParserPriority2[LoaderParserPriority2.Normal = 1] = \"Normal\", LoaderParserPriority2[LoaderParserPriority2.High = 2] = \"High\", LoaderParserPriority2))(LoaderParserPriority || {});\nexport {\n LoaderParserPriority\n};\n//# sourceMappingURL=LoaderParser.mjs.map\n","import { ExtensionType, settings, extensions } from \"@pixi/core\";\nimport { checkDataUrl } from \"../../utils/checkDataUrl.mjs\";\nimport { checkExtension } from \"../../utils/checkExtension.mjs\";\nimport { LoaderParserPriority } from \"./LoaderParser.mjs\";\nconst validJSONExtension = \".json\", validJSONMIME = \"application/json\", loadJson = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low\n },\n name: \"loadJson\",\n test(url) {\n return checkDataUrl(url, validJSONMIME) || checkExtension(url, validJSONExtension);\n },\n async load(url) {\n return await (await settings.ADAPTER.fetch(url)).json();\n }\n};\nextensions.add(loadJson);\nexport {\n loadJson\n};\n//# sourceMappingURL=loadJson.mjs.map\n","import { ExtensionType, settings, extensions } from \"@pixi/core\";\nimport { checkDataUrl } from \"../../utils/checkDataUrl.mjs\";\nimport { checkExtension } from \"../../utils/checkExtension.mjs\";\nimport { LoaderParserPriority } from \"./LoaderParser.mjs\";\nconst validTXTExtension = \".txt\", validTXTMIME = \"text/plain\", loadTxt = {\n name: \"loadTxt\",\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low\n },\n test(url) {\n return checkDataUrl(url, validTXTMIME) || checkExtension(url, validTXTExtension);\n },\n async load(url) {\n return await (await settings.ADAPTER.fetch(url)).text();\n }\n};\nextensions.add(loadTxt);\nexport {\n loadTxt\n};\n//# sourceMappingURL=loadTxt.mjs.map\n","import { utils, ExtensionType, settings, extensions } from \"@pixi/core\";\nimport { checkDataUrl } from \"../../utils/checkDataUrl.mjs\";\nimport { checkExtension } from \"../../utils/checkExtension.mjs\";\nimport { LoaderParserPriority } from \"./LoaderParser.mjs\";\nconst validWeights = [\n \"normal\",\n \"bold\",\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\"\n], validFontExtensions = [\".ttf\", \".otf\", \".woff\", \".woff2\"], validFontMIMEs = [\n \"font/ttf\",\n \"font/otf\",\n \"font/woff\",\n \"font/woff2\"\n], CSS_IDENT_TOKEN_REGEX = /^(--|-?[A-Z_])[0-9A-Z_-]*$/i;\nfunction getFontFamilyName(url) {\n const ext = utils.path.extname(url), nameTokens = utils.path.basename(url, ext).replace(/(-|_)/g, \" \").toLowerCase().split(\" \").map((word) => word.charAt(0).toUpperCase() + word.slice(1));\n let valid = nameTokens.length > 0;\n for (const token of nameTokens)\n if (!token.match(CSS_IDENT_TOKEN_REGEX)) {\n valid = !1;\n break;\n }\n let fontFamilyName = nameTokens.join(\" \");\n return valid || (fontFamilyName = `\"${fontFamilyName.replace(/[\\\\\"]/g, \"\\\\$&\")}\"`), fontFamilyName;\n}\nconst validURICharactersRegex = /^[0-9A-Za-z%:/?#\\[\\]@!\\$&'()\\*\\+,;=\\-._~]*$/;\nfunction encodeURIWhenNeeded(uri) {\n return validURICharactersRegex.test(uri) ? uri : encodeURI(uri);\n}\nconst loadWebFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low\n },\n name: \"loadWebFont\",\n test(url) {\n return checkDataUrl(url, validFontMIMEs) || checkExtension(url, validFontExtensions);\n },\n async load(url, options) {\n const fonts = settings.ADAPTER.getFontFaceSet();\n if (fonts) {\n const fontFaces = [], name = options.data?.family ?? getFontFamilyName(url), weights = options.data?.weights?.filter((weight) => validWeights.includes(weight)) ?? [\"normal\"], data = options.data ?? {};\n for (let i = 0; i < weights.length; i++) {\n const weight = weights[i], font = new FontFace(name, `url(${encodeURIWhenNeeded(url)})`, {\n ...data,\n weight\n });\n await font.load(), fonts.add(font), fontFaces.push(font);\n }\n return fontFaces.length === 1 ? fontFaces[0] : fontFaces;\n }\n return console.warn(\"[loadWebFont] FontFace API is not supported. Skipping loading font\"), null;\n },\n unload(font) {\n (Array.isArray(font) ? font : [font]).forEach((t) => settings.ADAPTER.getFontFaceSet().delete(t));\n }\n};\nextensions.add(loadWebFont);\nexport {\n getFontFamilyName,\n loadWebFont\n};\n//# sourceMappingURL=loadWebFont.mjs.map\n","const WORKER_CODE = `(function() {\n \"use strict\";\n const WHITE_PNG = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=\";\n async function checkImageBitmap() {\n try {\n if (typeof createImageBitmap != \"function\")\n return !1;\n const imageBlob = await (await fetch(WHITE_PNG)).blob(), imageBitmap = await createImageBitmap(imageBlob);\n return imageBitmap.width === 1 && imageBitmap.height === 1;\n } catch {\n return !1;\n }\n }\n checkImageBitmap().then((result) => {\n self.postMessage(result);\n });\n})();\n`;\nlet WORKER_URL = null;\nclass WorkerInstance extends Worker {\n constructor() {\n WORKER_URL || (WORKER_URL = URL.createObjectURL(new Blob([WORKER_CODE], { type: \"application/javascript\" }))), super(WORKER_URL);\n }\n}\nWorkerInstance.revokeObjectURL = function() {\n WORKER_URL && (URL.revokeObjectURL(WORKER_URL), WORKER_URL = null);\n};\nexport {\n WorkerInstance as default\n};\n//# sourceMappingURL=checkImageBitmap.worker.mjs.map\n","const WORKER_CODE = `(function() {\n \"use strict\";\n async function loadImageBitmap(url) {\n const response = await fetch(url);\n if (!response.ok)\n throw new Error(\\`[WorkerManager.loadImageBitmap] Failed to fetch \\${url}: \\${response.status} \\${response.statusText}\\`);\n const imageBlob = await response.blob();\n return await createImageBitmap(imageBlob);\n }\n self.onmessage = async (event) => {\n try {\n const imageBitmap = await loadImageBitmap(event.data.data[0]);\n self.postMessage({\n data: imageBitmap,\n uuid: event.data.uuid,\n id: event.data.id\n }, [imageBitmap]);\n } catch (e) {\n self.postMessage({\n error: e,\n uuid: event.data.uuid,\n id: event.data.id\n });\n }\n };\n})();\n`;\nlet WORKER_URL = null;\nclass WorkerInstance extends Worker {\n constructor() {\n WORKER_URL || (WORKER_URL = URL.createObjectURL(new Blob([WORKER_CODE], { type: \"application/javascript\" }))), super(WORKER_URL);\n }\n}\nWorkerInstance.revokeObjectURL = function() {\n WORKER_URL && (URL.revokeObjectURL(WORKER_URL), WORKER_URL = null);\n};\nexport {\n WorkerInstance as default\n};\n//# sourceMappingURL=loadImageBitmap.worker.mjs.map\n","import WorkerInstance from \"../../_virtual/checkImageBitmap.worker.mjs\";\nimport WorkerInstance$1 from \"../../_virtual/loadImageBitmap.worker.mjs\";\nlet UUID = 0, MAX_WORKERS;\nclass WorkerManagerClass {\n constructor() {\n this._initialized = !1, this._createdWorkers = 0, this.workerPool = [], this.queue = [], this.resolveHash = {};\n }\n isImageBitmapSupported() {\n return this._isImageBitmapSupported !== void 0 ? this._isImageBitmapSupported : (this._isImageBitmapSupported = new Promise((resolve) => {\n const worker = new WorkerInstance();\n worker.addEventListener(\"message\", (event) => {\n worker.terminate(), WorkerInstance.revokeObjectURL(), resolve(event.data);\n });\n }), this._isImageBitmapSupported);\n }\n loadImageBitmap(src) {\n return this._run(\"loadImageBitmap\", [src]);\n }\n async _initWorkers() {\n this._initialized || (this._initialized = !0);\n }\n getWorker() {\n MAX_WORKERS === void 0 && (MAX_WORKERS = navigator.hardwareConcurrency || 4);\n let worker = this.workerPool.pop();\n return !worker && this._createdWorkers < MAX_WORKERS && (this._createdWorkers++, worker = new WorkerInstance$1(), worker.addEventListener(\"message\", (event) => {\n this.complete(event.data), this.returnWorker(event.target), this.next();\n })), worker;\n }\n returnWorker(worker) {\n this.workerPool.push(worker);\n }\n complete(data) {\n data.error !== void 0 ? this.resolveHash[data.uuid].reject(data.error) : this.resolveHash[data.uuid].resolve(data.data), this.resolveHash[data.uuid] = null;\n }\n async _run(id, args) {\n await this._initWorkers();\n const promise = new Promise((resolve, reject) => {\n this.queue.push({ id, arguments: args, resolve, reject });\n });\n return this.next(), promise;\n }\n next() {\n if (!this.queue.length)\n return;\n const worker = this.getWorker();\n if (!worker)\n return;\n const toDo = this.queue.pop(), id = toDo.id;\n this.resolveHash[UUID] = { resolve: toDo.resolve, reject: toDo.reject }, worker.postMessage({\n data: toDo.arguments,\n uuid: UUID++,\n id\n });\n }\n}\nconst WorkerManager = new WorkerManagerClass();\nexport {\n WorkerManager\n};\n//# sourceMappingURL=WorkerManager.mjs.map\n","import { Texture } from \"@pixi/core\";\nimport { Cache } from \"../../../../cache/Cache.mjs\";\nfunction createTexture(base, loader, url) {\n base.resource.internal = !0;\n const texture = new Texture(base), unload = () => {\n delete loader.promiseCache[url], Cache.has(url) && Cache.remove(url);\n };\n return texture.baseTexture.once(\"destroyed\", () => {\n url in loader.promiseCache && (console.warn(\"[Assets] A BaseTexture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the BaseTexture.\"), unload());\n }), texture.once(\"destroyed\", () => {\n base.destroyed || (console.warn(\"[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture.\"), unload());\n }), texture;\n}\nexport {\n createTexture\n};\n//# sourceMappingURL=createTexture.mjs.map\n","import { settings, ExtensionType, utils, BaseTexture, extensions } from \"@pixi/core\";\nimport { checkDataUrl } from \"../../../utils/checkDataUrl.mjs\";\nimport { checkExtension } from \"../../../utils/checkExtension.mjs\";\nimport { LoaderParserPriority } from \"../LoaderParser.mjs\";\nimport { WorkerManager } from \"../WorkerManager.mjs\";\nimport { createTexture } from \"./utils/createTexture.mjs\";\nconst validImageExtensions = [\".jpeg\", \".jpg\", \".png\", \".webp\", \".avif\"], validImageMIMEs = [\n \"image/jpeg\",\n \"image/png\",\n \"image/webp\",\n \"image/avif\"\n];\nasync function loadImageBitmap(url) {\n const response = await settings.ADAPTER.fetch(url);\n if (!response.ok)\n throw new Error(`[loadImageBitmap] Failed to fetch ${url}: ${response.status} ${response.statusText}`);\n const imageBlob = await response.blob();\n return await createImageBitmap(imageBlob);\n}\nconst loadTextures = {\n name: \"loadTextures\",\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n config: {\n preferWorkers: !0,\n preferCreateImageBitmap: !0,\n crossOrigin: \"anonymous\"\n },\n test(url) {\n return checkDataUrl(url, validImageMIMEs) || checkExtension(url, validImageExtensions);\n },\n async load(url, asset, loader) {\n const useImageBitmap = globalThis.createImageBitmap && this.config.preferCreateImageBitmap;\n let src;\n useImageBitmap ? this.config.preferWorkers && await WorkerManager.isImageBitmapSupported() ? src = await WorkerManager.loadImageBitmap(url) : src = await loadImageBitmap(url) : src = await new Promise((resolve, reject) => {\n const src2 = new Image();\n src2.crossOrigin = this.config.crossOrigin, src2.src = url, src2.complete ? resolve(src2) : (src2.onload = () => resolve(src2), src2.onerror = (e) => reject(e));\n });\n const options = { ...asset.data };\n options.resolution ?? (options.resolution = utils.getResolutionOfUrl(url)), useImageBitmap && options.resourceOptions?.ownsImageBitmap === void 0 && (options.resourceOptions = { ...options.resourceOptions }, options.resourceOptions.ownsImageBitmap = !0);\n const base = new BaseTexture(src, options);\n return base.resource.src = url, createTexture(base, loader, url);\n },\n unload(texture) {\n texture.destroy(!0);\n }\n};\nextensions.add(loadTextures);\nexport {\n loadImageBitmap,\n loadTextures\n};\n//# sourceMappingURL=loadTextures.mjs.map\n","import { ExtensionType, SVGResource, BaseTexture, utils, settings, extensions } from \"@pixi/core\";\nimport { checkDataUrl } from \"../../../utils/checkDataUrl.mjs\";\nimport { checkExtension } from \"../../../utils/checkExtension.mjs\";\nimport { LoaderParserPriority } from \"../LoaderParser.mjs\";\nimport { loadTextures } from \"./loadTextures.mjs\";\nimport { createTexture } from \"./utils/createTexture.mjs\";\nconst validSVGExtension = \".svg\", validSVGMIME = \"image/svg+xml\", loadSVG = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n name: \"loadSVG\",\n test(url) {\n return checkDataUrl(url, validSVGMIME) || checkExtension(url, validSVGExtension);\n },\n async testParse(data) {\n return SVGResource.test(data);\n },\n async parse(asset, data, loader) {\n const src = new SVGResource(asset, data?.data?.resourceOptions);\n await src.load();\n const base = new BaseTexture(src, {\n resolution: utils.getResolutionOfUrl(asset),\n ...data?.data\n });\n return base.resource.src = data.src, createTexture(base, loader, data.src);\n },\n async load(url, _options) {\n return (await settings.ADAPTER.fetch(url)).text();\n },\n unload: loadTextures.unload\n};\nextensions.add(loadSVG);\nexport {\n loadSVG\n};\n//# sourceMappingURL=loadSVG.mjs.map\n","import { ExtensionType, settings, VideoResource, BaseTexture, utils, extensions } from \"@pixi/core\";\nimport { checkDataUrl } from \"../../../utils/checkDataUrl.mjs\";\nimport { checkExtension } from \"../../../utils/checkExtension.mjs\";\nimport { LoaderParserPriority } from \"../LoaderParser.mjs\";\nimport { createTexture } from \"./utils/createTexture.mjs\";\nconst validVideoExtensions = [\".mp4\", \".m4v\", \".webm\", \".ogv\"], validVideoMIMEs = [\n \"video/mp4\",\n \"video/webm\",\n \"video/ogg\"\n], loadVideo = {\n name: \"loadVideo\",\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n config: {\n defaultAutoPlay: !0,\n defaultUpdateFPS: 0,\n defaultLoop: !1,\n defaultMuted: !1,\n defaultPlaysinline: !0\n },\n test(url) {\n return checkDataUrl(url, validVideoMIMEs) || checkExtension(url, validVideoExtensions);\n },\n async load(url, loadAsset, loader) {\n let texture;\n const blob = await (await settings.ADAPTER.fetch(url)).blob(), blobURL = URL.createObjectURL(blob);\n try {\n const options = {\n autoPlay: this.config.defaultAutoPlay,\n updateFPS: this.config.defaultUpdateFPS,\n loop: this.config.defaultLoop,\n muted: this.config.defaultMuted,\n playsinline: this.config.defaultPlaysinline,\n ...loadAsset?.data?.resourceOptions,\n autoLoad: !0\n }, src = new VideoResource(blobURL, options);\n await src.load();\n const base = new BaseTexture(src, {\n alphaMode: await utils.detectVideoAlphaMode(),\n resolution: utils.getResolutionOfUrl(url),\n ...loadAsset?.data\n });\n base.resource.src = url, texture = createTexture(base, loader, url), texture.baseTexture.once(\"destroyed\", () => {\n URL.revokeObjectURL(blobURL);\n });\n } catch (e) {\n throw URL.revokeObjectURL(blobURL), e;\n }\n return texture;\n },\n unload(texture) {\n texture.destroy(!0);\n }\n};\nextensions.add(loadVideo);\nexport {\n loadVideo\n};\n//# sourceMappingURL=loadVideo.mjs.map\n","import { utils } from \"@pixi/core\";\nimport { convertToList } from \"../utils/convertToList.mjs\";\nimport { createStringVariations } from \"../utils/createStringVariations.mjs\";\nimport { isSingleItem } from \"../utils/isSingleItem.mjs\";\nclass Resolver {\n constructor() {\n this._defaultBundleIdentifierOptions = {\n connector: \"-\",\n createBundleAssetId: (bundleId, assetId) => `${bundleId}${this._bundleIdConnector}${assetId}`,\n extractAssetIdFromBundle: (bundleId, assetBundleId) => assetBundleId.replace(`${bundleId}${this._bundleIdConnector}`, \"\")\n }, this._bundleIdConnector = this._defaultBundleIdentifierOptions.connector, this._createBundleAssetId = this._defaultBundleIdentifierOptions.createBundleAssetId, this._extractAssetIdFromBundle = this._defaultBundleIdentifierOptions.extractAssetIdFromBundle, this._assetMap = {}, this._preferredOrder = [], this._parsers = [], this._resolverHash = {}, this._bundles = {};\n }\n /**\n * Override how the resolver deals with generating bundle ids.\n * must be called before any bundles are added\n * @param bundleIdentifier - the bundle identifier options\n */\n setBundleIdentifier(bundleIdentifier) {\n if (this._bundleIdConnector = bundleIdentifier.connector ?? this._bundleIdConnector, this._createBundleAssetId = bundleIdentifier.createBundleAssetId ?? this._createBundleAssetId, this._extractAssetIdFromBundle = bundleIdentifier.extractAssetIdFromBundle ?? this._extractAssetIdFromBundle, this._extractAssetIdFromBundle(\"foo\", this._createBundleAssetId(\"foo\", \"bar\")) !== \"bar\")\n throw new Error(\"[Resolver] GenerateBundleAssetId are not working correctly\");\n }\n /**\n * Let the resolver know which assets you prefer to use when resolving assets.\n * Multiple prefer user defined rules can be added.\n * @example\n * resolver.prefer({\n * // first look for something with the correct format, and then then correct resolution\n * priority: ['format', 'resolution'],\n * params:{\n * format:'webp', // prefer webp images\n * resolution: 2, // prefer a resolution of 2\n * }\n * })\n * resolver.add('foo', ['bar@2x.webp', 'bar@2x.png', 'bar.webp', 'bar.png']);\n * resolver.resolveUrl('foo') // => 'bar@2x.webp'\n * @param preferOrders - the prefer options\n */\n prefer(...preferOrders) {\n preferOrders.forEach((prefer) => {\n this._preferredOrder.push(prefer), prefer.priority || (prefer.priority = Object.keys(prefer.params));\n }), this._resolverHash = {};\n }\n /**\n * Set the base path to prepend to all urls when resolving\n * @example\n * resolver.basePath = 'https://home.com/';\n * resolver.add('foo', 'bar.ong');\n * resolver.resolveUrl('foo', 'bar.png'); // => 'https://home.com/bar.png'\n * @param basePath - the base path to use\n */\n set basePath(basePath) {\n this._basePath = basePath;\n }\n get basePath() {\n return this._basePath;\n }\n /**\n * Set the root path for root-relative URLs. By default the `basePath`'s root is used. If no `basePath` is set, then the\n * default value for browsers is `window.location.origin`\n * @example\n * // Application hosted on https://home.com/some-path/index.html\n * resolver.basePath = 'https://home.com/some-path/';\n * resolver.rootPath = 'https://home.com/';\n * resolver.add('foo', '/bar.png');\n * resolver.resolveUrl('foo', '/bar.png'); // => 'https://home.com/bar.png'\n * @param rootPath - the root path to use\n */\n set rootPath(rootPath) {\n this._rootPath = rootPath;\n }\n get rootPath() {\n return this._rootPath;\n }\n /**\n * All the active URL parsers that help the parser to extract information and create\n * an asset object-based on parsing the URL itself.\n *\n * Can be added using the extensions API\n * @example\n * resolver.add('foo', [\n * {\n * resolution: 2,\n * format: 'png',\n * src: 'image@2x.png',\n * },\n * {\n * resolution:1,\n * format:'png',\n * src: 'image.png',\n * },\n * ]);\n *\n * // With a url parser the information such as resolution and file format could extracted from the url itself:\n * extensions.add({\n * extension: ExtensionType.ResolveParser,\n * test: loadTextures.test, // test if url ends in an image\n * parse: (value: string) =>\n * ({\n * resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? '1'),\n * format: value.split('.').pop(),\n * src: value,\n * }),\n * });\n *\n * // Now resolution and format can be extracted from the url\n * resolver.add('foo', [\n * 'image@2x.png',\n * 'image.png',\n * ]);\n */\n get parsers() {\n return this._parsers;\n }\n /** Used for testing, this resets the resolver to its initial state */\n reset() {\n this.setBundleIdentifier(this._defaultBundleIdentifierOptions), this._assetMap = {}, this._preferredOrder = [], this._resolverHash = {}, this._rootPath = null, this._basePath = null, this._manifest = null, this._bundles = {}, this._defaultSearchParams = null;\n }\n /**\n * Sets the default URL search parameters for the URL resolver. The urls can be specified as a string or an object.\n * @param searchParams - the default url parameters to append when resolving urls\n */\n setDefaultSearchParams(searchParams) {\n if (typeof searchParams == \"string\")\n this._defaultSearchParams = searchParams;\n else {\n const queryValues = searchParams;\n this._defaultSearchParams = Object.keys(queryValues).map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(queryValues[key])}`).join(\"&\");\n }\n }\n /**\n * Returns the aliases for a given asset\n * @param asset - the asset to get the aliases for\n */\n getAlias(asset) {\n const { alias, name, src, srcs } = asset;\n return convertToList(\n alias || name || src || srcs,\n (value) => typeof value == \"string\" ? value : Array.isArray(value) ? value.map((v) => v?.src ?? v?.srcs ?? v) : value?.src || value?.srcs ? value.src ?? value.srcs : value,\n !0\n );\n }\n /**\n * Add a manifest to the asset resolver. This is a nice way to add all the asset information in one go.\n * generally a manifest would be built using a tool.\n * @param manifest - the manifest to add to the resolver\n */\n addManifest(manifest) {\n this._manifest && console.warn(\"[Resolver] Manifest already exists, this will be overwritten\"), this._manifest = manifest, manifest.bundles.forEach((bundle) => {\n this.addBundle(bundle.name, bundle.assets);\n });\n }\n /**\n * This adds a bundle of assets in one go so that you can resolve them as a group.\n * For example you could add a bundle for each screen in you pixi app\n * @example\n * resolver.addBundle('animals', {\n * bunny: 'bunny.png',\n * chicken: 'chicken.png',\n * thumper: 'thumper.png',\n * });\n *\n * const resolvedAssets = await resolver.resolveBundle('animals');\n * @param bundleId - The id of the bundle to add\n * @param assets - A record of the asset or assets that will be chosen from when loading via the specified key\n */\n addBundle(bundleId, assets) {\n const assetNames = [];\n Array.isArray(assets) ? assets.forEach((asset) => {\n const srcs = asset.src ?? asset.srcs, aliases = asset.alias ?? asset.name;\n let ids;\n if (typeof aliases == \"string\") {\n const bundleAssetId = this._createBundleAssetId(bundleId, aliases);\n assetNames.push(bundleAssetId), ids = [aliases, bundleAssetId];\n } else {\n const bundleIds = aliases.map((name) => this._createBundleAssetId(bundleId, name));\n assetNames.push(...bundleIds), ids = [...aliases, ...bundleIds];\n }\n this.add({\n ...asset,\n alias: ids,\n src: srcs\n });\n }) : Object.keys(assets).forEach((key) => {\n const aliases = [key, this._createBundleAssetId(bundleId, key)];\n if (typeof assets[key] == \"string\")\n this.add({\n alias: aliases,\n src: assets[key]\n });\n else if (Array.isArray(assets[key]))\n this.add({\n alias: aliases,\n src: assets[key]\n });\n else {\n const asset = assets[key], assetSrc = asset.src ?? asset.srcs;\n this.add({\n ...asset,\n alias: aliases,\n src: Array.isArray(assetSrc) ? assetSrc : [assetSrc]\n });\n }\n assetNames.push(...aliases);\n }), this._bundles[bundleId] = assetNames;\n }\n add(aliases, srcs, data, format, loadParser) {\n const assets = [];\n typeof aliases == \"string\" || Array.isArray(aliases) && typeof aliases[0] == \"string\" ? (utils.deprecation(\"7.2.0\", `Assets.add now uses an object instead of individual parameters.\nPlease use Assets.add({ alias, src, data, format, loadParser }) instead.`), assets.push({ alias: aliases, src: srcs, data, format, loadParser })) : Array.isArray(aliases) ? assets.push(...aliases) : assets.push(aliases);\n let keyCheck;\n keyCheck = (key) => {\n this.hasKey(key) && console.warn(`[Resolver] already has key: ${key} overwriting`);\n }, convertToList(assets).forEach((asset) => {\n const { src, srcs: srcs2 } = asset;\n let { data: data2, format: format2, loadParser: loadParser2 } = asset;\n const srcsToUse = convertToList(src || srcs2).map((src2) => typeof src2 == \"string\" ? createStringVariations(src2) : Array.isArray(src2) ? src2 : [src2]), aliasesToUse = this.getAlias(asset);\n Array.isArray(aliasesToUse) ? aliasesToUse.forEach(keyCheck) : keyCheck(aliasesToUse);\n const resolvedAssets = [];\n srcsToUse.forEach((srcs3) => {\n srcs3.forEach((src2) => {\n let formattedAsset = {};\n if (typeof src2 != \"object\") {\n formattedAsset.src = src2;\n for (let i = 0; i < this._parsers.length; i++) {\n const parser = this._parsers[i];\n if (parser.test(src2)) {\n formattedAsset = parser.parse(src2);\n break;\n }\n }\n } else\n data2 = src2.data ?? data2, format2 = src2.format ?? format2, loadParser2 = src2.loadParser ?? loadParser2, formattedAsset = {\n ...formattedAsset,\n ...src2\n };\n if (!aliasesToUse)\n throw new Error(`[Resolver] alias is undefined for this asset: ${formattedAsset.src}`);\n formattedAsset = this.buildResolvedAsset(formattedAsset, {\n aliases: aliasesToUse,\n data: data2,\n format: format2,\n loadParser: loadParser2\n }), resolvedAssets.push(formattedAsset);\n });\n }), aliasesToUse.forEach((alias) => {\n this._assetMap[alias] = resolvedAssets;\n });\n });\n }\n // TODO: this needs an overload like load did in Assets\n /**\n * If the resolver has had a manifest set via setManifest, this will return the assets urls for\n * a given bundleId or bundleIds.\n * @example\n * // Manifest Example\n * const manifest = {\n * bundles: [\n * {\n * name: 'load-screen',\n * assets: [\n * {\n * alias: 'background',\n * src: 'sunset.png',\n * },\n * {\n * alias: 'bar',\n * src: 'load-bar.{png,webp}',\n * },\n * ],\n * },\n * {\n * name: 'game-screen',\n * assets: [\n * {\n * alias: 'character',\n * src: 'robot.png',\n * },\n * {\n * alias: 'enemy',\n * src: 'bad-guy.png',\n * },\n * ],\n * },\n * ]\n * };\n *\n * resolver.setManifest(manifest);\n * const resolved = resolver.resolveBundle('load-screen');\n * @param bundleIds - The bundle ids to resolve\n * @returns All the bundles assets or a hash of assets for each bundle specified\n */\n resolveBundle(bundleIds) {\n const singleAsset = isSingleItem(bundleIds);\n bundleIds = convertToList(bundleIds);\n const out = {};\n return bundleIds.forEach((bundleId) => {\n const assetNames = this._bundles[bundleId];\n if (assetNames) {\n const results = this.resolve(assetNames), assets = {};\n for (const key in results) {\n const asset = results[key];\n assets[this._extractAssetIdFromBundle(bundleId, key)] = asset;\n }\n out[bundleId] = assets;\n }\n }), singleAsset ? out[bundleIds[0]] : out;\n }\n /**\n * Does exactly what resolve does, but returns just the URL rather than the whole asset object\n * @param key - The key or keys to resolve\n * @returns - The URLs associated with the key(s)\n */\n resolveUrl(key) {\n const result = this.resolve(key);\n if (typeof key != \"string\") {\n const out = {};\n for (const i in result)\n out[i] = result[i].src;\n return out;\n }\n return result.src;\n }\n resolve(keys) {\n const singleAsset = isSingleItem(keys);\n keys = convertToList(keys);\n const result = {};\n return keys.forEach((key) => {\n if (!this._resolverHash[key])\n if (this._assetMap[key]) {\n let assets = this._assetMap[key];\n const bestAsset = assets[0], preferredOrder = this._getPreferredOrder(assets);\n preferredOrder?.priority.forEach((priorityKey) => {\n preferredOrder.params[priorityKey].forEach((value) => {\n const filteredAssets = assets.filter((asset) => asset[priorityKey] ? asset[priorityKey] === value : !1);\n filteredAssets.length && (assets = filteredAssets);\n });\n }), this._resolverHash[key] = assets[0] ?? bestAsset;\n } else\n this._resolverHash[key] = this.buildResolvedAsset({\n alias: [key],\n src: key\n }, {});\n result[key] = this._resolverHash[key];\n }), singleAsset ? result[keys[0]] : result;\n }\n /**\n * Checks if an asset with a given key exists in the resolver\n * @param key - The key of the asset\n */\n hasKey(key) {\n return !!this._assetMap[key];\n }\n /**\n * Checks if a bundle with the given key exists in the resolver\n * @param key - The key of the bundle\n */\n hasBundle(key) {\n return !!this._bundles[key];\n }\n /**\n * Internal function for figuring out what prefer criteria an asset should use.\n * @param assets\n */\n _getPreferredOrder(assets) {\n for (let i = 0; i < assets.length; i++) {\n const asset = assets[0], preferred = this._preferredOrder.find((preference) => preference.params.format.includes(asset.format));\n if (preferred)\n return preferred;\n }\n return this._preferredOrder[0];\n }\n /**\n * Appends the default url parameters to the url\n * @param url - The url to append the default parameters to\n * @returns - The url with the default parameters appended\n */\n _appendDefaultSearchParams(url) {\n if (!this._defaultSearchParams)\n return url;\n const paramConnector = /\\?/.test(url) ? \"&\" : \"?\";\n return `${url}${paramConnector}${this._defaultSearchParams}`;\n }\n buildResolvedAsset(formattedAsset, data) {\n const { aliases, data: assetData, loadParser, format } = data;\n return (this._basePath || this._rootPath) && (formattedAsset.src = utils.path.toAbsolute(formattedAsset.src, this._basePath, this._rootPath)), formattedAsset.alias = aliases ?? formattedAsset.alias ?? [formattedAsset.src], formattedAsset.src = this._appendDefaultSearchParams(formattedAsset.src), formattedAsset.data = { ...assetData || {}, ...formattedAsset.data }, formattedAsset.loadParser = loadParser ?? formattedAsset.loadParser, formattedAsset.format = format ?? utils.path.extname(formattedAsset.src).slice(1), formattedAsset.srcs = formattedAsset.src, formattedAsset.name = formattedAsset.alias, formattedAsset;\n }\n}\nexport {\n Resolver\n};\n//# sourceMappingURL=Resolver.mjs.map\n","import { utils, extensions, ExtensionType } from \"@pixi/core\";\nimport { BackgroundLoader } from \"./BackgroundLoader.mjs\";\nimport { Cache } from \"./cache/Cache.mjs\";\nimport { Loader } from \"./loader/Loader.mjs\";\nimport \"./loader/parsers/index.mjs\";\nimport { Resolver } from \"./resolver/Resolver.mjs\";\nimport { convertToList } from \"./utils/convertToList.mjs\";\nimport { isSingleItem } from \"./utils/isSingleItem.mjs\";\nimport { loadTextures } from \"./loader/parsers/textures/loadTextures.mjs\";\nclass AssetsClass {\n constructor() {\n this._detections = [], this._initialized = !1, this.resolver = new Resolver(), this.loader = new Loader(), this.cache = Cache, this._backgroundLoader = new BackgroundLoader(this.loader), this._backgroundLoader.active = !0, this.reset();\n }\n /**\n * Best practice is to call this function before any loading commences\n * Initiating is the best time to add any customization to the way things are loaded.\n *\n * you do not need to call this for the Asset class to work, only if you want to set any initial properties\n * @param options - options to initialize the Asset manager with\n */\n async init(options = {}) {\n if (this._initialized) {\n console.warn(\"[Assets]AssetManager already initialized, did you load before calling this Assets.init()?\");\n return;\n }\n if (this._initialized = !0, options.defaultSearchParams && this.resolver.setDefaultSearchParams(options.defaultSearchParams), options.basePath && (this.resolver.basePath = options.basePath), options.bundleIdentifier && this.resolver.setBundleIdentifier(options.bundleIdentifier), options.manifest) {\n let manifest = options.manifest;\n typeof manifest == \"string\" && (manifest = await this.load(manifest)), this.resolver.addManifest(manifest);\n }\n const resolutionPref = options.texturePreference?.resolution ?? 1, resolution = typeof resolutionPref == \"number\" ? [resolutionPref] : resolutionPref, formats = await this._detectFormats({\n preferredFormats: options.texturePreference?.format,\n skipDetections: options.skipDetections,\n detections: this._detections\n });\n this.resolver.prefer({\n params: {\n format: formats,\n resolution\n }\n }), options.preferences && this.setPreferences(options.preferences);\n }\n add(aliases, srcs, data, format, loadParser) {\n this.resolver.add(aliases, srcs, data, format, loadParser);\n }\n async load(urls, onProgress) {\n this._initialized || await this.init();\n const singleAsset = isSingleItem(urls), urlArray = convertToList(urls).map((url) => {\n if (typeof url != \"string\") {\n const aliases = this.resolver.getAlias(url);\n return aliases.some((alias) => !this.resolver.hasKey(alias)) && this.add(url), Array.isArray(aliases) ? aliases[0] : aliases;\n }\n return this.resolver.hasKey(url) || this.add({ alias: url, src: url }), url;\n }), resolveResults = this.resolver.resolve(urlArray), out = await this._mapLoadToResolve(resolveResults, onProgress);\n return singleAsset ? out[urlArray[0]] : out;\n }\n /**\n * This adds a bundle of assets in one go so that you can load them as a group.\n * For example you could add a bundle for each screen in you pixi app\n * @example\n * import { Assets } from 'pixi.js';\n *\n * Assets.addBundle('animals', {\n * bunny: 'bunny.png',\n * chicken: 'chicken.png',\n * thumper: 'thumper.png',\n * });\n *\n * const assets = await Assets.loadBundle('animals');\n * @param bundleId - the id of the bundle to add\n * @param assets - a record of the asset or assets that will be chosen from when loading via the specified key\n */\n addBundle(bundleId, assets) {\n this.resolver.addBundle(bundleId, assets);\n }\n /**\n * Bundles are a way to load multiple assets at once.\n * If a manifest has been provided to the init function then you can load a bundle, or bundles.\n * you can also add bundles via `addBundle`\n * @example\n * import { Assets } from 'pixi.js';\n *\n * // Manifest Example\n * const manifest = {\n * bundles: [\n * {\n * name: 'load-screen',\n * assets: [\n * {\n * alias: 'background',\n * src: 'sunset.png',\n * },\n * {\n * alias: 'bar',\n * src: 'load-bar.{png,webp}',\n * },\n * ],\n * },\n * {\n * name: 'game-screen',\n * assets: [\n * {\n * alias: 'character',\n * src: 'robot.png',\n * },\n * {\n * alias: 'enemy',\n * src: 'bad-guy.png',\n * },\n * ],\n * },\n * ]\n * };\n *\n * await Assets.init({ manifest });\n *\n * // Load a bundle...\n * loadScreenAssets = await Assets.loadBundle('load-screen');\n * // Load another bundle...\n * gameScreenAssets = await Assets.loadBundle('game-screen');\n * @param bundleIds - the bundle id or ids to load\n * @param onProgress - Optional function that is called when progress on asset loading is made.\n * The function is passed a single parameter, `progress`, which represents the percentage (0.0 - 1.0)\n * of the assets loaded. Do not use this function to detect when assets are complete and available,\n * instead use the Promise returned by this function.\n * @returns all the bundles assets or a hash of assets for each bundle specified\n */\n async loadBundle(bundleIds, onProgress) {\n this._initialized || await this.init();\n let singleAsset = !1;\n typeof bundleIds == \"string\" && (singleAsset = !0, bundleIds = [bundleIds]);\n const resolveResults = this.resolver.resolveBundle(bundleIds), out = {}, keys = Object.keys(resolveResults);\n let count = 0, total = 0;\n const _onProgress = () => {\n onProgress?.(++count / total);\n }, promises = keys.map((bundleId) => {\n const resolveResult = resolveResults[bundleId];\n return total += Object.keys(resolveResult).length, this._mapLoadToResolve(resolveResult, _onProgress).then((resolveResult2) => {\n out[bundleId] = resolveResult2;\n });\n });\n return await Promise.all(promises), singleAsset ? out[bundleIds[0]] : out;\n }\n /**\n * Initiate a background load of some assets. It will passively begin to load these assets in the background.\n * So when you actually come to loading them you will get a promise that resolves to the loaded assets immediately\n *\n * An example of this might be that you would background load game assets after your inital load.\n * then when you got to actually load your game screen assets when a player goes to the game - the loading\n * would already have stared or may even be complete, saving you having to show an interim load bar.\n * @example\n * import { Assets } from 'pixi.js';\n *\n * Assets.backgroundLoad('bunny.png');\n *\n * // later on in your app...\n * await Assets.loadBundle('bunny.png'); // Will resolve quicker as loading may have completed!\n * @param urls - the url / urls you want to background load\n */\n async backgroundLoad(urls) {\n this._initialized || await this.init(), typeof urls == \"string\" && (urls = [urls]);\n const resolveResults = this.resolver.resolve(urls);\n this._backgroundLoader.add(Object.values(resolveResults));\n }\n /**\n * Initiate a background of a bundle, works exactly like backgroundLoad but for bundles.\n * this can only be used if the loader has been initiated with a manifest\n * @example\n * import { Assets } from 'pixi.js';\n *\n * await Assets.init({\n * manifest: {\n * bundles: [\n * {\n * name: 'load-screen',\n * assets: [...],\n * },\n * ...\n * ],\n * },\n * });\n *\n * Assets.backgroundLoadBundle('load-screen');\n *\n * // Later on in your app...\n * await Assets.loadBundle('load-screen'); // Will resolve quicker as loading may have completed!\n * @param bundleIds - the bundleId / bundleIds you want to background load\n */\n async backgroundLoadBundle(bundleIds) {\n this._initialized || await this.init(), typeof bundleIds == \"string\" && (bundleIds = [bundleIds]);\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n Object.values(resolveResults).forEach((resolveResult) => {\n this._backgroundLoader.add(Object.values(resolveResult));\n });\n }\n /**\n * Only intended for development purposes.\n * This will wipe the resolver and caches.\n * You will need to reinitialize the Asset\n */\n reset() {\n this.resolver.reset(), this.loader.reset(), this.cache.reset(), this._initialized = !1;\n }\n get(keys) {\n if (typeof keys == \"string\")\n return Cache.get(keys);\n const assets = {};\n for (let i = 0; i < keys.length; i++)\n assets[i] = Cache.get(keys[i]);\n return assets;\n }\n /**\n * helper function to map resolved assets back to loaded assets\n * @param resolveResults - the resolve results from the resolver\n * @param onProgress - the progress callback\n */\n async _mapLoadToResolve(resolveResults, onProgress) {\n const resolveArray = Object.values(resolveResults), resolveKeys = Object.keys(resolveResults);\n this._backgroundLoader.active = !1;\n const loadedAssets = await this.loader.load(resolveArray, onProgress);\n this._backgroundLoader.active = !0;\n const out = {};\n return resolveArray.forEach((resolveResult, i) => {\n const asset = loadedAssets[resolveResult.src], keys = [resolveResult.src];\n resolveResult.alias && keys.push(...resolveResult.alias), out[resolveKeys[i]] = asset, Cache.set(keys, asset);\n }), out;\n }\n /**\n * Unload an asset or assets. As the Assets class is responsible for creating the assets via the `load` function\n * this will make sure to destroy any assets and release them from memory.\n * Once unloaded, you will need to load the asset again.\n *\n * Use this to help manage assets if you find that you have a large app and you want to free up memory.\n *\n * - it's up to you as the developer to make sure that textures are not actively being used when you unload them,\n * Pixi won't break but you will end up with missing assets. Not a good look for the user!\n * @example\n * import { Assets } from 'pixi.js';\n *\n * // Load a URL:\n * const myImageTexture = await Assets.load('http://some.url.com/image.png'); // => returns a texture\n *\n * await Assets.unload('http://some.url.com/image.png')\n *\n * // myImageTexture will be destroyed now.\n *\n * // Unload multiple assets:\n * const textures = await Assets.unload(['thumper', 'chicko']);\n * @param urls - the urls to unload\n */\n async unload(urls) {\n this._initialized || await this.init();\n const urlArray = convertToList(urls).map((url) => typeof url != \"string\" ? url.src : url), resolveResults = this.resolver.resolve(urlArray);\n await this._unloadFromResolved(resolveResults);\n }\n /**\n * Bundles are a way to manage multiple assets at once.\n * this will unload all files in a bundle.\n *\n * once a bundle has been unloaded, you need to load it again to have access to the assets.\n * @example\n * import { Assets } from 'pixi.js';\n *\n * Assets.addBundle({\n * 'thumper': 'http://some.url.com/thumper.png',\n * })\n *\n * const assets = await Assets.loadBundle('thumper');\n *\n * // Now to unload...\n *\n * await Assets.unloadBundle('thumper');\n *\n * // All assets in the assets object will now have been destroyed and purged from the cache\n * @param bundleIds - the bundle id or ids to unload\n */\n async unloadBundle(bundleIds) {\n this._initialized || await this.init(), bundleIds = convertToList(bundleIds);\n const resolveResults = this.resolver.resolveBundle(bundleIds), promises = Object.keys(resolveResults).map((bundleId) => this._unloadFromResolved(resolveResults[bundleId]));\n await Promise.all(promises);\n }\n async _unloadFromResolved(resolveResult) {\n const resolveArray = Object.values(resolveResult);\n resolveArray.forEach((resolveResult2) => {\n Cache.remove(resolveResult2.src);\n }), await this.loader.unload(resolveArray);\n }\n /**\n * Detects the supported formats for the browser, and returns an array of supported formats, respecting\n * the users preferred formats order.\n * @param options - the options to use when detecting formats\n * @param options.preferredFormats - the preferred formats to use\n * @param options.skipDetections - if we should skip the detections altogether\n * @param options.detections - the detections to use\n * @returns - the detected formats\n */\n async _detectFormats(options) {\n let formats = [];\n options.preferredFormats && (formats = Array.isArray(options.preferredFormats) ? options.preferredFormats : [options.preferredFormats]);\n for (const detection of options.detections)\n options.skipDetections || await detection.test() ? formats = await detection.add(formats) : options.skipDetections || (formats = await detection.remove(formats));\n return formats = formats.filter((format, index) => formats.indexOf(format) === index), formats;\n }\n /** All the detection parsers currently added to the Assets class. */\n get detections() {\n return this._detections;\n }\n /**\n * @deprecated since 7.2.0\n * @see {@link Assets.setPreferences}\n */\n get preferWorkers() {\n return loadTextures.config.preferWorkers;\n }\n set preferWorkers(value) {\n utils.deprecation(\"7.2.0\", \"Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead.\"), this.setPreferences({ preferWorkers: value });\n }\n /**\n * General setter for preferences. This is a helper function to set preferences on all parsers.\n * @param preferences - the preferences to set\n */\n setPreferences(preferences) {\n this.loader.parsers.forEach((parser) => {\n parser.config && Object.keys(parser.config).filter((key) => key in preferences).forEach((key) => {\n parser.config[key] = preferences[key];\n });\n });\n }\n}\nconst Assets = new AssetsClass();\nextensions.handleByList(ExtensionType.LoadParser, Assets.loader.parsers).handleByList(ExtensionType.ResolveParser, Assets.resolver.parsers).handleByList(ExtensionType.CacheParser, Assets.cache.parsers).handleByList(ExtensionType.DetectionParser, Assets.detections);\nexport {\n Assets,\n AssetsClass\n};\n//# sourceMappingURL=Assets.mjs.map\n","import { ExtensionType, Texture, extensions } from \"@pixi/core\";\nconst cacheTextureArray = {\n extension: ExtensionType.CacheParser,\n test: (asset) => Array.isArray(asset) && asset.every((t) => t instanceof Texture),\n getCacheableAssets: (keys, asset) => {\n const out = {};\n return keys.forEach((key) => {\n asset.forEach((item, i) => {\n out[key + (i === 0 ? \"\" : i + 1)] = item;\n });\n }), out;\n }\n};\nextensions.add(cacheTextureArray);\nexport {\n cacheTextureArray\n};\n//# sourceMappingURL=cacheTextureArray.mjs.map\n","async function testImageFormat(imageData) {\n if (\"Image\" in globalThis)\n return new Promise((resolve) => {\n const image = new Image();\n image.onload = () => {\n resolve(!0);\n }, image.onerror = () => {\n resolve(!1);\n }, image.src = imageData;\n });\n if (\"createImageBitmap\" in globalThis && \"fetch\" in globalThis) {\n try {\n const blob = await (await fetch(imageData)).blob();\n await createImageBitmap(blob);\n } catch {\n return !1;\n }\n return !0;\n }\n return !1;\n}\nexport {\n testImageFormat\n};\n//# sourceMappingURL=testImageFormat.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/core\";\nimport { testImageFormat } from \"../utils/testImageFormat.mjs\";\nconst detectAvif = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 1\n },\n test: async () => testImageFormat(\n // eslint-disable-next-line max-len\n \"data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=\"\n ),\n add: async (formats) => [...formats, \"avif\"],\n remove: async (formats) => formats.filter((f) => f !== \"avif\")\n};\nextensions.add(detectAvif);\nexport {\n detectAvif\n};\n//# sourceMappingURL=detectAvif.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/core\";\nimport { testImageFormat } from \"../utils/testImageFormat.mjs\";\nconst detectWebp = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 0\n },\n test: async () => testImageFormat(\n \"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=\"\n ),\n add: async (formats) => [...formats, \"webp\"],\n remove: async (formats) => formats.filter((f) => f !== \"webp\")\n};\nextensions.add(detectWebp);\nexport {\n detectWebp\n};\n//# sourceMappingURL=detectWebp.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/core\";\nconst imageFormats = [\"png\", \"jpg\", \"jpeg\"], detectDefaults = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: -1\n },\n test: () => Promise.resolve(!0),\n add: async (formats) => [...formats, ...imageFormats],\n remove: async (formats) => formats.filter((f) => !imageFormats.includes(f))\n};\nextensions.add(detectDefaults);\nexport {\n detectDefaults\n};\n//# sourceMappingURL=detectDefaults.mjs.map\n","const inWorker = \"WorkerGlobalScope\" in globalThis && globalThis instanceof globalThis.WorkerGlobalScope;\nfunction testVideoFormat(mimeType) {\n return inWorker ? !1 : document.createElement(\"video\").canPlayType(mimeType) !== \"\";\n}\nexport {\n testVideoFormat\n};\n//# sourceMappingURL=testVideoFormat.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/core\";\nimport { testVideoFormat } from \"../utils/testVideoFormat.mjs\";\nconst detectWebm = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 0\n },\n test: async () => testVideoFormat(\"video/webm\"),\n add: async (formats) => [...formats, \"webm\"],\n remove: async (formats) => formats.filter((f) => f !== \"webm\")\n};\nextensions.add(detectWebm);\nexport {\n detectWebm\n};\n//# sourceMappingURL=detectWebm.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/core\";\nimport { testVideoFormat } from \"../utils/testVideoFormat.mjs\";\nconst detectMp4 = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 0\n },\n test: async () => testVideoFormat(\"video/mp4\"),\n add: async (formats) => [...formats, \"mp4\", \"m4v\"],\n remove: async (formats) => formats.filter((f) => f !== \"mp4\" && f !== \"m4v\")\n};\nextensions.add(detectMp4);\nexport {\n detectMp4\n};\n//# sourceMappingURL=detectMp4.mjs.map\n","import { ExtensionType, extensions } from \"@pixi/core\";\nimport { testVideoFormat } from \"../utils/testVideoFormat.mjs\";\nconst detectOgv = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 0\n },\n test: async () => testVideoFormat(\"video/ogg\"),\n add: async (formats) => [...formats, \"ogv\"],\n remove: async (formats) => formats.filter((f) => f !== \"ogv\")\n};\nextensions.add(detectOgv);\nexport {\n detectOgv\n};\n//# sourceMappingURL=detectOgv.mjs.map\n","import { ExtensionType, settings, utils, extensions } from \"@pixi/core\";\nimport \"../../loader/index.mjs\";\nimport { loadTextures } from \"../../loader/parsers/textures/loadTextures.mjs\";\nconst resolveTextureUrl = {\n extension: ExtensionType.ResolveParser,\n test: loadTextures.test,\n parse: (value) => ({\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: utils.path.extname(value).slice(1),\n src: value\n })\n};\nextensions.add(resolveTextureUrl);\nexport {\n resolveTextureUrl\n};\n//# sourceMappingURL=resolveTextureUrl.mjs.map\n","var INTERNAL_FORMATS = /* @__PURE__ */ ((INTERNAL_FORMATS2) => (INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_S3TC_DXT1_EXT = 33776] = \"COMPRESSED_RGB_S3TC_DXT1_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777] = \"COMPRESSED_RGBA_S3TC_DXT1_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778] = \"COMPRESSED_RGBA_S3TC_DXT3_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779] = \"COMPRESSED_RGBA_S3TC_DXT5_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 35917] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 35918] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 35919] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_S3TC_DXT1_EXT = 35916] = \"COMPRESSED_SRGB_S3TC_DXT1_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_R11_EAC = 37488] = \"COMPRESSED_R11_EAC\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SIGNED_R11_EAC = 37489] = \"COMPRESSED_SIGNED_R11_EAC\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RG11_EAC = 37490] = \"COMPRESSED_RG11_EAC\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SIGNED_RG11_EAC = 37491] = \"COMPRESSED_SIGNED_RG11_EAC\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB8_ETC2 = 37492] = \"COMPRESSED_RGB8_ETC2\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA8_ETC2_EAC = 37496] = \"COMPRESSED_RGBA8_ETC2_EAC\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_ETC2 = 37493] = \"COMPRESSED_SRGB8_ETC2\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497] = \"COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494] = \"COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495] = \"COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840] = \"COMPRESSED_RGB_PVRTC_4BPPV1_IMG\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842] = \"COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841] = \"COMPRESSED_RGB_PVRTC_2BPPV1_IMG\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843] = \"COMPRESSED_RGBA_PVRTC_2BPPV1_IMG\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_ETC1_WEBGL = 36196] = \"COMPRESSED_RGB_ETC1_WEBGL\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_ATC_WEBGL = 35986] = \"COMPRESSED_RGB_ATC_WEBGL\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35987] = \"COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798] = \"COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ASTC_4x4_KHR = 37808] = \"COMPRESSED_RGBA_ASTC_4x4_KHR\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_BPTC_UNORM_EXT = 36492] = \"COMPRESSED_RGBA_BPTC_UNORM_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT = 36493] = \"COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT = 36494] = \"COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT = 36495] = \"COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT\", INTERNAL_FORMATS2))(INTERNAL_FORMATS || {});\nconst INTERNAL_FORMAT_TO_BYTES_PER_PIXEL = {\n // WEBGL_compressed_texture_s3tc\n 33776: 0.5,\n 33777: 0.5,\n 33778: 1,\n 33779: 1,\n // WEBGL_compressed_texture_s3tc\n 35916: 0.5,\n 35917: 0.5,\n 35918: 1,\n 35919: 1,\n // WEBGL_compressed_texture_etc\n 37488: 0.5,\n 37489: 0.5,\n 37490: 1,\n 37491: 1,\n 37492: 0.5,\n 37496: 1,\n 37493: 0.5,\n 37497: 1,\n 37494: 0.5,\n // ~~\n 37495: 0.5,\n // ~~\n // WEBGL_compressed_texture_pvrtc\n 35840: 0.5,\n 35842: 0.5,\n 35841: 0.25,\n 35843: 0.25,\n // WEBGL_compressed_texture_etc1\n 36196: 0.5,\n // @see https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_compressed_ATC_texture.txt\n // WEBGL_compressed_texture_atc\n 35986: 0.5,\n 35987: 1,\n 34798: 1,\n // @see https://registry.khronos.org/OpenGL/extensions/KHR/KHR_texture_compression_astc_hdr.txt\n // WEBGL_compressed_texture_astc\n /* eslint-disable-next-line camelcase */\n 37808: 1,\n // @see https://registry.khronos.org/OpenGL/extensions/EXT/EXT_texture_compression_bptc.txt\n // EXT_texture_compression_bptc\n 36492: 1,\n 36493: 1,\n 36494: 1,\n 36495: 1\n};\nexport {\n INTERNAL_FORMATS,\n INTERNAL_FORMAT_TO_BYTES_PER_PIXEL\n};\n//# sourceMappingURL=const.mjs.map\n","import { ExtensionType, settings, extensions as extensions$1 } from \"@pixi/core\";\nlet storedGl, extensions;\nfunction getCompressedTextureExtensions() {\n extensions = {\n s3tc: storedGl.getExtension(\"WEBGL_compressed_texture_s3tc\"),\n s3tc_sRGB: storedGl.getExtension(\"WEBGL_compressed_texture_s3tc_srgb\"),\n /* eslint-disable-line camelcase */\n etc: storedGl.getExtension(\"WEBGL_compressed_texture_etc\"),\n etc1: storedGl.getExtension(\"WEBGL_compressed_texture_etc1\"),\n pvrtc: storedGl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || storedGl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),\n atc: storedGl.getExtension(\"WEBGL_compressed_texture_atc\"),\n astc: storedGl.getExtension(\"WEBGL_compressed_texture_astc\"),\n bptc: storedGl.getExtension(\"EXT_texture_compression_bptc\")\n };\n}\nconst detectCompressedTextures = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 2\n },\n test: async () => {\n const gl = settings.ADAPTER.createCanvas().getContext(\"webgl\");\n return gl ? (storedGl = gl, !0) : (console.warn(\"WebGL not available for compressed textures.\"), !1);\n },\n add: async (formats) => {\n extensions || getCompressedTextureExtensions();\n const textureFormats = [];\n for (const extensionName in extensions)\n extensions[extensionName] && textureFormats.push(extensionName);\n return [...textureFormats, ...formats];\n },\n remove: async (formats) => (extensions || getCompressedTextureExtensions(), formats.filter((f) => !(f in extensions)))\n};\nextensions$1.add(detectCompressedTextures);\nexport {\n detectCompressedTextures\n};\n//# sourceMappingURL=detectCompressedTextures.mjs.map\n","import { BufferResource, ViewableBuffer } from \"@pixi/core\";\nclass BlobResource extends BufferResource {\n /**\n * @param source - The buffer/URL of the texture file.\n * @param {PIXI.IBlobResourceOptions} [options]\n * @param {boolean} [options.autoLoad=false] - Whether to fetch the data immediately;\n * you can fetch it later via {@link PIXI.BlobResource#load}.\n * @param {number} [options.width=1] - The width in pixels.\n * @param {number} [options.height=1] - The height in pixels.\n * @param {1|2|4|8} [options.unpackAlignment=4] - The alignment of the pixel rows.\n */\n constructor(source, options = { width: 1, height: 1, autoLoad: !0 }) {\n let origin, data;\n typeof source == \"string\" ? (origin = source, data = new Uint8Array()) : (origin = null, data = source), super(data, options), this.origin = origin, this.buffer = data ? new ViewableBuffer(data) : null, this._load = null, this.loaded = !1, this.origin !== null && options.autoLoad !== !1 && this.load(), this.origin === null && this.buffer && (this._load = Promise.resolve(this), this.loaded = !0, this.onBlobLoaded(this.buffer.rawBinaryData));\n }\n onBlobLoaded(_data) {\n }\n /** Loads the blob */\n load() {\n return this._load ? this._load : (this._load = fetch(this.origin).then((response) => response.blob()).then((blob) => blob.arrayBuffer()).then((arrayBuffer) => (this.data = new Uint32Array(arrayBuffer), this.buffer = new ViewableBuffer(arrayBuffer), this.loaded = !0, this.onBlobLoaded(arrayBuffer), this.update(), this)), this._load);\n }\n}\nexport {\n BlobResource\n};\n//# sourceMappingURL=BlobResource.mjs.map\n","import { INTERNAL_FORMAT_TO_BYTES_PER_PIXEL } from \"../const.mjs\";\nimport { BlobResource } from \"./BlobResource.mjs\";\nclass CompressedTextureResource extends BlobResource {\n /**\n * @param source - the buffer/URL holding the compressed texture data\n * @param options\n * @param {PIXI.INTERNAL_FORMATS} options.format - the compression format\n * @param {number} options.width - the image width in pixels.\n * @param {number} options.height - the image height in pixels.\n * @param {number} [options.level=1] - the mipmap levels stored in the compressed texture, including level 0.\n * @param {number} [options.levelBuffers] - the buffers for each mipmap level. `CompressedTextureResource` can allows you\n * to pass `null` for `source`, for cases where each level is stored in non-contiguous memory.\n */\n constructor(source, options) {\n super(source, options), this.format = options.format, this.levels = options.levels || 1, this._width = options.width, this._height = options.height, this._extension = CompressedTextureResource._formatToExtension(this.format), (options.levelBuffers || this.buffer) && (this._levelBuffers = options.levelBuffers || CompressedTextureResource._createLevelBuffers(\n source instanceof Uint8Array ? source : this.buffer.uint8View,\n this.format,\n this.levels,\n 4,\n 4,\n // PVRTC has 8x4 blocks in 2bpp mode\n this.width,\n this.height\n ));\n }\n /**\n * @override\n * @param renderer - A reference to the current renderer\n * @param _texture - the texture\n * @param _glTexture - texture instance for this webgl context\n */\n upload(renderer, _texture, _glTexture) {\n const gl = renderer.gl;\n if (!renderer.context.extensions[this._extension])\n throw new Error(`${this._extension} textures are not supported on the current machine`);\n if (!this._levelBuffers)\n return !1;\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 4);\n for (let i = 0, j = this.levels; i < j; i++) {\n const { levelID, levelWidth, levelHeight, levelBuffer } = this._levelBuffers[i];\n gl.compressedTexImage2D(gl.TEXTURE_2D, levelID, this.format, levelWidth, levelHeight, 0, levelBuffer);\n }\n return !0;\n }\n /** @protected */\n onBlobLoaded() {\n this._levelBuffers = CompressedTextureResource._createLevelBuffers(\n this.buffer.uint8View,\n this.format,\n this.levels,\n 4,\n 4,\n // PVRTC has 8x4 blocks in 2bpp mode\n this.width,\n this.height\n );\n }\n /**\n * Returns the key (to ContextSystem#extensions) for the WebGL extension supporting the compression format\n * @private\n * @param format - the compression format to get the extension for.\n */\n static _formatToExtension(format) {\n if (format >= 33776 && format <= 33779)\n return \"s3tc\";\n if (format >= 35916 && format <= 35919)\n return \"s3tc_sRGB\";\n if (format >= 37488 && format <= 37497)\n return \"etc\";\n if (format >= 35840 && format <= 35843)\n return \"pvrtc\";\n if (format === 36196)\n return \"etc1\";\n if (format === 35986 || format === 35987 || format === 34798)\n return \"atc\";\n if (format >= 36492 && format <= 36495)\n return \"bptc\";\n if (format === 37808)\n return \"astc\";\n throw new Error(`Invalid (compressed) texture format given: ${format}`);\n }\n /**\n * Pre-creates buffer views for each mipmap level\n * @private\n * @param buffer -\n * @param format - compression formats\n * @param levels - mipmap levels\n * @param blockWidth -\n * @param blockHeight -\n * @param imageWidth - width of the image in pixels\n * @param imageHeight - height of the image in pixels\n */\n static _createLevelBuffers(buffer, format, levels, blockWidth, blockHeight, imageWidth, imageHeight) {\n const buffers = new Array(levels);\n let offset = buffer.byteOffset, levelWidth = imageWidth, levelHeight = imageHeight, alignedLevelWidth = levelWidth + blockWidth - 1 & ~(blockWidth - 1), alignedLevelHeight = levelHeight + blockHeight - 1 & ~(blockHeight - 1), levelSize = alignedLevelWidth * alignedLevelHeight * INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[format];\n for (let i = 0; i < levels; i++)\n buffers[i] = {\n levelID: i,\n levelWidth: levels > 1 ? levelWidth : alignedLevelWidth,\n levelHeight: levels > 1 ? levelHeight : alignedLevelHeight,\n levelBuffer: new Uint8Array(buffer.buffer, offset, levelSize)\n }, offset += levelSize, levelWidth = levelWidth >> 1 || 1, levelHeight = levelHeight >> 1 || 1, alignedLevelWidth = levelWidth + blockWidth - 1 & ~(blockWidth - 1), alignedLevelHeight = levelHeight + blockHeight - 1 & ~(blockHeight - 1), levelSize = alignedLevelWidth * alignedLevelHeight * INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[format];\n return buffers;\n }\n}\nexport {\n CompressedTextureResource\n};\n//# sourceMappingURL=CompressedTextureResource.mjs.map\n","import { INTERNAL_FORMATS, INTERNAL_FORMAT_TO_BYTES_PER_PIXEL } from \"../const.mjs\";\nimport \"../resources/index.mjs\";\nimport { CompressedTextureResource } from \"../resources/CompressedTextureResource.mjs\";\nconst DDS_MAGIC_SIZE = 4, DDS_HEADER_SIZE = 124, DDS_HEADER_PF_SIZE = 32, DDS_HEADER_DX10_SIZE = 20, DDS_MAGIC = 542327876, DDS_FIELDS = {\n SIZE: 1,\n FLAGS: 2,\n HEIGHT: 3,\n WIDTH: 4,\n MIPMAP_COUNT: 7,\n PIXEL_FORMAT: 19\n}, DDS_PF_FIELDS = {\n SIZE: 0,\n FLAGS: 1,\n FOURCC: 2,\n RGB_BITCOUNT: 3,\n R_BIT_MASK: 4,\n G_BIT_MASK: 5,\n B_BIT_MASK: 6,\n A_BIT_MASK: 7\n}, DDS_DX10_FIELDS = {\n DXGI_FORMAT: 0,\n RESOURCE_DIMENSION: 1,\n MISC_FLAG: 2,\n ARRAY_SIZE: 3,\n MISC_FLAGS2: 4\n}, PF_FLAGS = 1, DDPF_ALPHA = 2, DDPF_FOURCC = 4, DDPF_RGB = 64, DDPF_YUV = 512, DDPF_LUMINANCE = 131072, FOURCC_DXT1 = 827611204, FOURCC_DXT3 = 861165636, FOURCC_DXT5 = 894720068, FOURCC_DX10 = 808540228, DDS_RESOURCE_MISC_TEXTURECUBE = 4, FOURCC_TO_FORMAT = {\n [FOURCC_DXT1]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n [FOURCC_DXT3]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n [FOURCC_DXT5]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT\n}, DXGI_TO_FORMAT = {\n // WEBGL_compressed_texture_s3tc\n 70: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n 71: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n 73: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n 74: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n 76: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n 77: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n // WEBGL_compressed_texture_s3tc_srgb\n 72: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,\n 75: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\n 78: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,\n // EXT_texture_compression_bptc\n // BC6H\n 96: INTERNAL_FORMATS.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,\n 95: INTERNAL_FORMATS.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,\n // BC7\n 98: INTERNAL_FORMATS.COMPRESSED_RGBA_BPTC_UNORM_EXT,\n 99: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT\n};\nfunction parseDDS(arrayBuffer) {\n const data = new Uint32Array(arrayBuffer);\n if (data[0] !== DDS_MAGIC)\n throw new Error(\"Invalid DDS file magic word\");\n const header = new Uint32Array(arrayBuffer, 0, DDS_HEADER_SIZE / Uint32Array.BYTES_PER_ELEMENT), height = header[DDS_FIELDS.HEIGHT], width = header[DDS_FIELDS.WIDTH], mipmapCount = header[DDS_FIELDS.MIPMAP_COUNT], pixelFormat = new Uint32Array(\n arrayBuffer,\n DDS_FIELDS.PIXEL_FORMAT * Uint32Array.BYTES_PER_ELEMENT,\n DDS_HEADER_PF_SIZE / Uint32Array.BYTES_PER_ELEMENT\n ), formatFlags = pixelFormat[PF_FLAGS];\n if (formatFlags & DDPF_FOURCC) {\n const fourCC = pixelFormat[DDS_PF_FIELDS.FOURCC];\n if (fourCC !== FOURCC_DX10) {\n const internalFormat2 = FOURCC_TO_FORMAT[fourCC], dataOffset2 = DDS_MAGIC_SIZE + DDS_HEADER_SIZE, texData = new Uint8Array(arrayBuffer, dataOffset2);\n return [new CompressedTextureResource(texData, {\n format: internalFormat2,\n width,\n height,\n levels: mipmapCount\n // CompressedTextureResource will separate the levelBuffers for us!\n })];\n }\n const dx10Offset = DDS_MAGIC_SIZE + DDS_HEADER_SIZE, dx10Header = new Uint32Array(\n data.buffer,\n dx10Offset,\n DDS_HEADER_DX10_SIZE / Uint32Array.BYTES_PER_ELEMENT\n ), dxgiFormat = dx10Header[DDS_DX10_FIELDS.DXGI_FORMAT], resourceDimension = dx10Header[DDS_DX10_FIELDS.RESOURCE_DIMENSION], miscFlag = dx10Header[DDS_DX10_FIELDS.MISC_FLAG], arraySize = dx10Header[DDS_DX10_FIELDS.ARRAY_SIZE], internalFormat = DXGI_TO_FORMAT[dxgiFormat];\n if (internalFormat === void 0)\n throw new Error(`DDSParser cannot parse texture data with DXGI format ${dxgiFormat}`);\n if (miscFlag === DDS_RESOURCE_MISC_TEXTURECUBE)\n throw new Error(\"DDSParser does not support cubemap textures\");\n if (resourceDimension === 6)\n throw new Error(\"DDSParser does not supported 3D texture data\");\n const imageBuffers = new Array(), dataOffset = DDS_MAGIC_SIZE + DDS_HEADER_SIZE + DDS_HEADER_DX10_SIZE;\n if (arraySize === 1)\n imageBuffers.push(new Uint8Array(arrayBuffer, dataOffset));\n else {\n const pixelSize = INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[internalFormat];\n let imageSize = 0, levelWidth = width, levelHeight = height;\n for (let i = 0; i < mipmapCount; i++) {\n const alignedLevelWidth = Math.max(1, levelWidth + 3 & -4), alignedLevelHeight = Math.max(1, levelHeight + 3 & -4), levelSize = alignedLevelWidth * alignedLevelHeight * pixelSize;\n imageSize += levelSize, levelWidth = levelWidth >>> 1, levelHeight = levelHeight >>> 1;\n }\n let imageOffset = dataOffset;\n for (let i = 0; i < arraySize; i++)\n imageBuffers.push(new Uint8Array(arrayBuffer, imageOffset, imageSize)), imageOffset += imageSize;\n }\n return imageBuffers.map((buffer) => new CompressedTextureResource(buffer, {\n format: internalFormat,\n width,\n height,\n levels: mipmapCount\n }));\n }\n throw formatFlags & DDPF_RGB ? new Error(\"DDSParser does not support uncompressed texture data.\") : formatFlags & DDPF_YUV ? new Error(\"DDSParser does not supported YUV uncompressed texture data.\") : formatFlags & DDPF_LUMINANCE ? new Error(\"DDSParser does not support single-channel (lumninance) texture data!\") : formatFlags & DDPF_ALPHA ? new Error(\"DDSParser does not support single-channel (alpha) texture data!\") : new Error(\"DDSParser failed to load a texture file due to an unknown reason!\");\n}\nexport {\n parseDDS\n};\n//# sourceMappingURL=parseDDS.mjs.map\n","import { TYPES, FORMATS, BufferResource } from \"@pixi/core\";\nimport { INTERNAL_FORMAT_TO_BYTES_PER_PIXEL } from \"../const.mjs\";\nimport \"../resources/index.mjs\";\nimport { CompressedTextureResource } from \"../resources/CompressedTextureResource.mjs\";\nconst FILE_IDENTIFIER = [171, 75, 84, 88, 32, 49, 49, 187, 13, 10, 26, 10], ENDIANNESS = 67305985, KTX_FIELDS = {\n FILE_IDENTIFIER: 0,\n ENDIANNESS: 12,\n GL_TYPE: 16,\n GL_TYPE_SIZE: 20,\n GL_FORMAT: 24,\n GL_INTERNAL_FORMAT: 28,\n GL_BASE_INTERNAL_FORMAT: 32,\n PIXEL_WIDTH: 36,\n PIXEL_HEIGHT: 40,\n PIXEL_DEPTH: 44,\n NUMBER_OF_ARRAY_ELEMENTS: 48,\n NUMBER_OF_FACES: 52,\n NUMBER_OF_MIPMAP_LEVELS: 56,\n BYTES_OF_KEY_VALUE_DATA: 60\n}, FILE_HEADER_SIZE = 64, TYPES_TO_BYTES_PER_COMPONENT = {\n [TYPES.UNSIGNED_BYTE]: 1,\n [TYPES.UNSIGNED_SHORT]: 2,\n [TYPES.INT]: 4,\n [TYPES.UNSIGNED_INT]: 4,\n [TYPES.FLOAT]: 4,\n [TYPES.HALF_FLOAT]: 8\n}, FORMATS_TO_COMPONENTS = {\n [FORMATS.RGBA]: 4,\n [FORMATS.RGB]: 3,\n [FORMATS.RG]: 2,\n [FORMATS.RED]: 1,\n [FORMATS.LUMINANCE]: 1,\n [FORMATS.LUMINANCE_ALPHA]: 2,\n [FORMATS.ALPHA]: 1\n}, TYPES_TO_BYTES_PER_PIXEL = {\n [TYPES.UNSIGNED_SHORT_4_4_4_4]: 2,\n [TYPES.UNSIGNED_SHORT_5_5_5_1]: 2,\n [TYPES.UNSIGNED_SHORT_5_6_5]: 2\n};\nfunction parseKTX(url, arrayBuffer, loadKeyValueData = !1) {\n const dataView = new DataView(arrayBuffer);\n if (!validate(url, dataView))\n return null;\n const littleEndian = dataView.getUint32(KTX_FIELDS.ENDIANNESS, !0) === ENDIANNESS, glType = dataView.getUint32(KTX_FIELDS.GL_TYPE, littleEndian), glFormat = dataView.getUint32(KTX_FIELDS.GL_FORMAT, littleEndian), glInternalFormat = dataView.getUint32(KTX_FIELDS.GL_INTERNAL_FORMAT, littleEndian), pixelWidth = dataView.getUint32(KTX_FIELDS.PIXEL_WIDTH, littleEndian), pixelHeight = dataView.getUint32(KTX_FIELDS.PIXEL_HEIGHT, littleEndian) || 1, pixelDepth = dataView.getUint32(KTX_FIELDS.PIXEL_DEPTH, littleEndian) || 1, numberOfArrayElements = dataView.getUint32(KTX_FIELDS.NUMBER_OF_ARRAY_ELEMENTS, littleEndian) || 1, numberOfFaces = dataView.getUint32(KTX_FIELDS.NUMBER_OF_FACES, littleEndian), numberOfMipmapLevels = dataView.getUint32(KTX_FIELDS.NUMBER_OF_MIPMAP_LEVELS, littleEndian), bytesOfKeyValueData = dataView.getUint32(KTX_FIELDS.BYTES_OF_KEY_VALUE_DATA, littleEndian);\n if (pixelHeight === 0 || pixelDepth !== 1)\n throw new Error(\"Only 2D textures are supported\");\n if (numberOfFaces !== 1)\n throw new Error(\"CubeTextures are not supported by KTXLoader yet!\");\n if (numberOfArrayElements !== 1)\n throw new Error(\"WebGL does not support array textures\");\n const blockWidth = 4, blockHeight = 4, alignedWidth = pixelWidth + 3 & -4, alignedHeight = pixelHeight + 3 & -4, imageBuffers = new Array(numberOfArrayElements);\n let imagePixels = pixelWidth * pixelHeight;\n glType === 0 && (imagePixels = alignedWidth * alignedHeight);\n let imagePixelByteSize;\n if (glType !== 0 ? TYPES_TO_BYTES_PER_COMPONENT[glType] ? imagePixelByteSize = TYPES_TO_BYTES_PER_COMPONENT[glType] * FORMATS_TO_COMPONENTS[glFormat] : imagePixelByteSize = TYPES_TO_BYTES_PER_PIXEL[glType] : imagePixelByteSize = INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[glInternalFormat], imagePixelByteSize === void 0)\n throw new Error(\"Unable to resolve the pixel format stored in the *.ktx file!\");\n const kvData = loadKeyValueData ? parseKvData(dataView, bytesOfKeyValueData, littleEndian) : null;\n let mipByteSize = imagePixels * imagePixelByteSize, mipWidth = pixelWidth, mipHeight = pixelHeight, alignedMipWidth = alignedWidth, alignedMipHeight = alignedHeight, imageOffset = FILE_HEADER_SIZE + bytesOfKeyValueData;\n for (let mipmapLevel = 0; mipmapLevel < numberOfMipmapLevels; mipmapLevel++) {\n const imageSize = dataView.getUint32(imageOffset, littleEndian);\n let elementOffset = imageOffset + 4;\n for (let arrayElement = 0; arrayElement < numberOfArrayElements; arrayElement++) {\n let mips = imageBuffers[arrayElement];\n mips || (mips = imageBuffers[arrayElement] = new Array(numberOfMipmapLevels)), mips[mipmapLevel] = {\n levelID: mipmapLevel,\n // don't align mipWidth when texture not compressed! (glType not zero)\n levelWidth: numberOfMipmapLevels > 1 || glType !== 0 ? mipWidth : alignedMipWidth,\n levelHeight: numberOfMipmapLevels > 1 || glType !== 0 ? mipHeight : alignedMipHeight,\n levelBuffer: new Uint8Array(arrayBuffer, elementOffset, mipByteSize)\n }, elementOffset += mipByteSize;\n }\n imageOffset += imageSize + 4, imageOffset = imageOffset % 4 !== 0 ? imageOffset + 4 - imageOffset % 4 : imageOffset, mipWidth = mipWidth >> 1 || 1, mipHeight = mipHeight >> 1 || 1, alignedMipWidth = mipWidth + blockWidth - 1 & ~(blockWidth - 1), alignedMipHeight = mipHeight + blockHeight - 1 & ~(blockHeight - 1), mipByteSize = alignedMipWidth * alignedMipHeight * imagePixelByteSize;\n }\n return glType !== 0 ? {\n uncompressed: imageBuffers.map((levelBuffers) => {\n let buffer = levelBuffers[0].levelBuffer, convertToInt = !1;\n return glType === TYPES.FLOAT ? buffer = new Float32Array(\n levelBuffers[0].levelBuffer.buffer,\n levelBuffers[0].levelBuffer.byteOffset,\n levelBuffers[0].levelBuffer.byteLength / 4\n ) : glType === TYPES.UNSIGNED_INT ? (convertToInt = !0, buffer = new Uint32Array(\n levelBuffers[0].levelBuffer.buffer,\n levelBuffers[0].levelBuffer.byteOffset,\n levelBuffers[0].levelBuffer.byteLength / 4\n )) : glType === TYPES.INT && (convertToInt = !0, buffer = new Int32Array(\n levelBuffers[0].levelBuffer.buffer,\n levelBuffers[0].levelBuffer.byteOffset,\n levelBuffers[0].levelBuffer.byteLength / 4\n )), {\n resource: new BufferResource(\n buffer,\n {\n width: levelBuffers[0].levelWidth,\n height: levelBuffers[0].levelHeight\n }\n ),\n type: glType,\n format: convertToInt ? convertFormatToInteger(glFormat) : glFormat\n };\n }),\n kvData\n } : {\n compressed: imageBuffers.map((levelBuffers) => new CompressedTextureResource(null, {\n format: glInternalFormat,\n width: pixelWidth,\n height: pixelHeight,\n levels: numberOfMipmapLevels,\n levelBuffers\n })),\n kvData\n };\n}\nfunction validate(url, dataView) {\n for (let i = 0; i < FILE_IDENTIFIER.length; i++)\n if (dataView.getUint8(i) !== FILE_IDENTIFIER[i])\n return console.error(`${url} is not a valid *.ktx file!`), !1;\n return !0;\n}\nfunction convertFormatToInteger(format) {\n switch (format) {\n case FORMATS.RGBA:\n return FORMATS.RGBA_INTEGER;\n case FORMATS.RGB:\n return FORMATS.RGB_INTEGER;\n case FORMATS.RG:\n return FORMATS.RG_INTEGER;\n case FORMATS.RED:\n return FORMATS.RED_INTEGER;\n default:\n return format;\n }\n}\nfunction parseKvData(dataView, bytesOfKeyValueData, littleEndian) {\n const kvData = /* @__PURE__ */ new Map();\n let bytesIntoKeyValueData = 0;\n for (; bytesIntoKeyValueData < bytesOfKeyValueData; ) {\n const keyAndValueByteSize = dataView.getUint32(FILE_HEADER_SIZE + bytesIntoKeyValueData, littleEndian), keyAndValueByteOffset = FILE_HEADER_SIZE + bytesIntoKeyValueData + 4, valuePadding = 3 - (keyAndValueByteSize + 3) % 4;\n if (keyAndValueByteSize === 0 || keyAndValueByteSize > bytesOfKeyValueData - bytesIntoKeyValueData) {\n console.error(\"KTXLoader: keyAndValueByteSize out of bounds\");\n break;\n }\n let keyNulByte = 0;\n for (; keyNulByte < keyAndValueByteSize && dataView.getUint8(keyAndValueByteOffset + keyNulByte) !== 0; keyNulByte++)\n ;\n if (keyNulByte === -1) {\n console.error(\"KTXLoader: Failed to find null byte terminating kvData key\");\n break;\n }\n const key = new TextDecoder().decode(\n new Uint8Array(dataView.buffer, keyAndValueByteOffset, keyNulByte)\n ), value = new DataView(\n dataView.buffer,\n keyAndValueByteOffset + keyNulByte + 1,\n keyAndValueByteSize - keyNulByte - 1\n );\n kvData.set(key, value), bytesIntoKeyValueData += 4 + keyAndValueByteSize + valuePadding;\n }\n return kvData;\n}\nexport {\n FORMATS_TO_COMPONENTS,\n TYPES_TO_BYTES_PER_COMPONENT,\n TYPES_TO_BYTES_PER_PIXEL,\n parseKTX\n};\n//# sourceMappingURL=parseKTX.mjs.map\n","import { LoaderParserPriority, checkExtension, createTexture } from \"@pixi/assets\";\nimport { ExtensionType, settings, BaseTexture, MIPMAP_MODES, ALPHA_MODES, utils, extensions } from \"@pixi/core\";\nimport \"../parsers/index.mjs\";\nimport { parseDDS } from \"../parsers/parseDDS.mjs\";\nconst loadDDS = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n name: \"loadDDS\",\n test(url) {\n return checkExtension(url, \".dds\");\n },\n async load(url, asset, loader) {\n const arrayBuffer = await (await settings.ADAPTER.fetch(url)).arrayBuffer(), textures = parseDDS(arrayBuffer).map((resource) => {\n const base = new BaseTexture(resource, {\n mipmap: MIPMAP_MODES.OFF,\n alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data\n });\n return createTexture(base, loader, url);\n });\n return textures.length === 1 ? textures[0] : textures;\n },\n unload(texture) {\n Array.isArray(texture) ? texture.forEach((t) => t.destroy(!0)) : texture.destroy(!0);\n }\n};\nextensions.add(loadDDS);\nexport {\n loadDDS\n};\n//# sourceMappingURL=loadDDS.mjs.map\n","import { LoaderParserPriority, checkExtension, createTexture } from \"@pixi/assets\";\nimport { ExtensionType, settings, MIPMAP_MODES, ALPHA_MODES, utils, BaseTexture, extensions } from \"@pixi/core\";\nimport \"../parsers/index.mjs\";\nimport { parseKTX } from \"../parsers/parseKTX.mjs\";\nconst loadKTX = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n name: \"loadKTX\",\n test(url) {\n return checkExtension(url, \".ktx\");\n },\n async load(url, asset, loader) {\n const arrayBuffer = await (await settings.ADAPTER.fetch(url)).arrayBuffer(), { compressed, uncompressed, kvData } = parseKTX(url, arrayBuffer), resources = compressed ?? uncompressed, options = {\n mipmap: MIPMAP_MODES.OFF,\n alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data\n }, textures = resources.map((resource) => {\n resources === uncompressed && Object.assign(options, {\n type: resource.type,\n format: resource.format\n });\n const res = resource.resource ?? resource, base = new BaseTexture(res, options);\n return base.ktxKeyValueData = kvData, createTexture(base, loader, url);\n });\n return textures.length === 1 ? textures[0] : textures;\n },\n unload(texture) {\n Array.isArray(texture) ? texture.forEach((t) => t.destroy(!0)) : texture.destroy(!0);\n }\n};\nextensions.add(loadKTX);\nexport {\n loadKTX\n};\n//# sourceMappingURL=loadKTX.mjs.map\n","import { ExtensionType, utils, settings, extensions } from \"@pixi/core\";\nconst resolveCompressedTextureUrl = {\n extension: ExtensionType.ResolveParser,\n test: (value) => {\n const extension = utils.path.extname(value).slice(1);\n return [\"basis\", \"ktx\", \"dds\"].includes(extension);\n },\n parse: (value) => {\n const extension = utils.path.extname(value).slice(1);\n if (extension === \"ktx\") {\n const extensions2 = [\n \".s3tc.ktx\",\n \".s3tc_sRGB.ktx\",\n \".etc.ktx\",\n \".etc1.ktx\",\n \".pvrt.ktx\",\n \".atc.ktx\",\n \".astc.ktx\",\n \".bptc.ktx\"\n ];\n if (extensions2.some((ext) => value.endsWith(ext)))\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: extensions2.find((ext) => value.endsWith(ext)),\n src: value\n };\n }\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: extension,\n src: value\n };\n }\n};\nextensions.add(resolveCompressedTextureUrl);\nexport {\n resolveCompressedTextureUrl\n};\n//# sourceMappingURL=resolveCompressedTextureUrl.mjs.map\n","import { Rectangle, utils, RenderTexture, FORMATS, ExtensionType, extensions } from \"@pixi/core\";\nconst TEMP_RECT = new Rectangle(), BYTES_PER_PIXEL = 4, _Extract = class _Extract2 {\n /**\n * @param renderer - A reference to the current renderer\n */\n constructor(renderer) {\n this.renderer = renderer, this._rendererPremultipliedAlpha = !1;\n }\n contextChange() {\n const attributes = this.renderer?.gl.getContextAttributes();\n this._rendererPremultipliedAlpha = !!(attributes && attributes.alpha && attributes.premultipliedAlpha);\n }\n /**\n * Will return a HTML Image of the target\n * @param target - A displayObject or renderTexture\n * to convert. If left empty will use the main renderer\n * @param format - Image format, e.g. \"image/jpeg\" or \"image/webp\".\n * @param quality - JPEG or Webp compression from 0 to 1. Default is 0.92.\n * @param frame - The frame the extraction is restricted to.\n * @returns - HTML Image of the target\n */\n async image(target, format, quality, frame) {\n const image = new Image();\n return image.src = await this.base64(target, format, quality, frame), image;\n }\n /**\n * Will return a base64 encoded string of this target. It works by calling\n * `Extract.canvas` and then running toDataURL on that.\n * @param target - A displayObject or renderTexture\n * to convert. If left empty will use the main renderer\n * @param format - Image format, e.g. \"image/jpeg\" or \"image/webp\".\n * @param quality - JPEG or Webp compression from 0 to 1. Default is 0.92.\n * @param frame - The frame the extraction is restricted to.\n * @returns - A base64 encoded string of the texture.\n */\n async base64(target, format, quality, frame) {\n const canvas = this.canvas(target, frame);\n if (canvas.toBlob !== void 0)\n return new Promise((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (!blob) {\n reject(new Error(\"ICanvas.toBlob failed!\"));\n return;\n }\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result), reader.onerror = reject, reader.readAsDataURL(blob);\n }, format, quality);\n });\n if (canvas.toDataURL !== void 0)\n return canvas.toDataURL(format, quality);\n if (canvas.convertToBlob !== void 0) {\n const blob = await canvas.convertToBlob({ type: format, quality });\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result), reader.onerror = reject, reader.readAsDataURL(blob);\n });\n }\n throw new Error(\"Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented\");\n }\n /**\n * Creates a Canvas element, renders this target to it and then returns it.\n * @param target - A displayObject or renderTexture\n * to convert. If left empty will use the main renderer\n * @param frame - The frame the extraction is restricted to.\n * @returns - A Canvas element with the texture rendered on.\n */\n canvas(target, frame) {\n const { pixels, width, height, flipY, premultipliedAlpha } = this._rawPixels(target, frame);\n flipY && _Extract2._flipY(pixels, width, height), premultipliedAlpha && _Extract2._unpremultiplyAlpha(pixels);\n const canvasBuffer = new utils.CanvasRenderTarget(width, height, 1), imageData = new ImageData(new Uint8ClampedArray(pixels.buffer), width, height);\n return canvasBuffer.context.putImageData(imageData, 0, 0), canvasBuffer.canvas;\n }\n /**\n * Will return a one-dimensional array containing the pixel data of the entire texture in RGBA\n * order, with integer values between 0 and 255 (included).\n * @param target - A displayObject or renderTexture\n * to convert. If left empty will use the main renderer\n * @param frame - The frame the extraction is restricted to.\n * @returns - One-dimensional array containing the pixel data of the entire texture\n */\n pixels(target, frame) {\n const { pixels, width, height, flipY, premultipliedAlpha } = this._rawPixels(target, frame);\n return flipY && _Extract2._flipY(pixels, width, height), premultipliedAlpha && _Extract2._unpremultiplyAlpha(pixels), pixels;\n }\n _rawPixels(target, frame) {\n const renderer = this.renderer;\n if (!renderer)\n throw new Error(\"The Extract has already been destroyed\");\n let resolution, flipY = !1, premultipliedAlpha = !1, renderTexture, generated = !1;\n target && (target instanceof RenderTexture ? renderTexture = target : (renderTexture = renderer.generateTexture(target, {\n region: frame,\n resolution: renderer.resolution,\n multisample: renderer.multisample\n }), generated = !0, frame && (TEMP_RECT.width = frame.width, TEMP_RECT.height = frame.height, frame = TEMP_RECT)));\n const gl = renderer.gl;\n if (renderTexture) {\n if (resolution = renderTexture.baseTexture.resolution, frame = frame ?? renderTexture.frame, flipY = !1, premultipliedAlpha = renderTexture.baseTexture.alphaMode > 0 && renderTexture.baseTexture.format === FORMATS.RGBA, !generated) {\n renderer.renderTexture.bind(renderTexture);\n const fbo = renderTexture.framebuffer.glFramebuffers[renderer.CONTEXT_UID];\n fbo.blitFramebuffer && renderer.framebuffer.bind(fbo.blitFramebuffer);\n }\n } else\n resolution = renderer.resolution, frame || (frame = TEMP_RECT, frame.width = renderer.width / resolution, frame.height = renderer.height / resolution), flipY = !0, premultipliedAlpha = this._rendererPremultipliedAlpha, renderer.renderTexture.bind();\n const width = Math.max(Math.round(frame.width * resolution), 1), height = Math.max(Math.round(frame.height * resolution), 1), pixels = new Uint8Array(BYTES_PER_PIXEL * width * height);\n return gl.readPixels(\n Math.round(frame.x * resolution),\n Math.round(frame.y * resolution),\n width,\n height,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n pixels\n ), generated && renderTexture?.destroy(!0), { pixels, width, height, flipY, premultipliedAlpha };\n }\n /** Destroys the extract. */\n destroy() {\n this.renderer = null;\n }\n static _flipY(pixels, width, height) {\n const w = width << 2, h = height >> 1, temp = new Uint8Array(w);\n for (let y = 0; y < h; y++) {\n const t = y * w, b = (height - y - 1) * w;\n temp.set(pixels.subarray(t, t + w)), pixels.copyWithin(t, b, b + w), pixels.set(temp, b);\n }\n }\n static _unpremultiplyAlpha(pixels) {\n pixels instanceof Uint8ClampedArray && (pixels = new Uint8Array(pixels.buffer));\n const n = pixels.length;\n for (let i = 0; i < n; i += 4) {\n const alpha = pixels[i + 3];\n if (alpha !== 0) {\n const a = 255.001 / alpha;\n pixels[i] = pixels[i] * a + 0.5, pixels[i + 1] = pixels[i + 1] * a + 0.5, pixels[i + 2] = pixels[i + 2] * a + 0.5;\n }\n }\n }\n};\n_Extract.extension = {\n name: \"extract\",\n type: ExtensionType.RendererSystem\n};\nlet Extract = _Extract;\nextensions.add(Extract);\nexport {\n Extract\n};\n//# sourceMappingURL=Extract.mjs.map\n","import { SHAPES } from \"@pixi/core\";\nconst buildCircle = {\n build(graphicsData) {\n const points = graphicsData.points;\n let x, y, dx, dy, rx, ry;\n if (graphicsData.type === SHAPES.CIRC) {\n const circle = graphicsData.shape;\n x = circle.x, y = circle.y, rx = ry = circle.radius, dx = dy = 0;\n } else if (graphicsData.type === SHAPES.ELIP) {\n const ellipse = graphicsData.shape;\n x = ellipse.x, y = ellipse.y, rx = ellipse.width, ry = ellipse.height, dx = dy = 0;\n } else {\n const roundedRect = graphicsData.shape, halfWidth = roundedRect.width / 2, halfHeight = roundedRect.height / 2;\n x = roundedRect.x + halfWidth, y = roundedRect.y + halfHeight, rx = ry = Math.max(0, Math.min(roundedRect.radius, Math.min(halfWidth, halfHeight))), dx = halfWidth - rx, dy = halfHeight - ry;\n }\n if (!(rx >= 0 && ry >= 0 && dx >= 0 && dy >= 0)) {\n points.length = 0;\n return;\n }\n const n = Math.ceil(2.3 * Math.sqrt(rx + ry)), m = n * 8 + (dx ? 4 : 0) + (dy ? 4 : 0);\n if (points.length = m, m === 0)\n return;\n if (n === 0) {\n points.length = 8, points[0] = points[6] = x + dx, points[1] = points[3] = y + dy, points[2] = points[4] = x - dx, points[5] = points[7] = y - dy;\n return;\n }\n let j1 = 0, j2 = n * 4 + (dx ? 2 : 0) + 2, j3 = j2, j4 = m;\n {\n const x0 = dx + rx, y0 = dy, x1 = x + x0, x2 = x - x0, y1 = y + y0;\n if (points[j1++] = x1, points[j1++] = y1, points[--j2] = y1, points[--j2] = x2, dy) {\n const y2 = y - y0;\n points[j3++] = x2, points[j3++] = y2, points[--j4] = y2, points[--j4] = x1;\n }\n }\n for (let i = 1; i < n; i++) {\n const a = Math.PI / 2 * (i / n), x0 = dx + Math.cos(a) * rx, y0 = dy + Math.sin(a) * ry, x1 = x + x0, x2 = x - x0, y1 = y + y0, y2 = y - y0;\n points[j1++] = x1, points[j1++] = y1, points[--j2] = y1, points[--j2] = x2, points[j3++] = x2, points[j3++] = y2, points[--j4] = y2, points[--j4] = x1;\n }\n {\n const x0 = dx, y0 = dy + ry, x1 = x + x0, x2 = x - x0, y1 = y + y0, y2 = y - y0;\n points[j1++] = x1, points[j1++] = y1, points[--j4] = y2, points[--j4] = x1, dx && (points[j1++] = x2, points[j1++] = y1, points[--j4] = y2, points[--j4] = x2);\n }\n },\n triangulate(graphicsData, graphicsGeometry) {\n const points = graphicsData.points, verts = graphicsGeometry.points, indices = graphicsGeometry.indices;\n if (points.length === 0)\n return;\n let vertPos = verts.length / 2;\n const center = vertPos;\n let x, y;\n if (graphicsData.type !== SHAPES.RREC) {\n const circle = graphicsData.shape;\n x = circle.x, y = circle.y;\n } else {\n const roundedRect = graphicsData.shape;\n x = roundedRect.x + roundedRect.width / 2, y = roundedRect.y + roundedRect.height / 2;\n }\n const matrix = graphicsData.matrix;\n verts.push(\n graphicsData.matrix ? matrix.a * x + matrix.c * y + matrix.tx : x,\n graphicsData.matrix ? matrix.b * x + matrix.d * y + matrix.ty : y\n ), vertPos++, verts.push(points[0], points[1]);\n for (let i = 2; i < points.length; i += 2)\n verts.push(points[i], points[i + 1]), indices.push(vertPos++, center, vertPos);\n indices.push(center + 1, center, vertPos);\n }\n};\nexport {\n buildCircle\n};\n//# sourceMappingURL=buildCircle.mjs.map\n","import { utils } from \"@pixi/core\";\nfunction fixOrientation(points, hole = !1) {\n const m = points.length;\n if (m < 6)\n return;\n let area = 0;\n for (let i = 0, x1 = points[m - 2], y1 = points[m - 1]; i < m; i += 2) {\n const x2 = points[i], y2 = points[i + 1];\n area += (x2 - x1) * (y2 + y1), x1 = x2, y1 = y2;\n }\n if (!hole && area > 0 || hole && area <= 0) {\n const n = m / 2;\n for (let i = n + n % 2; i < m; i += 2) {\n const i1 = m - i - 2, i2 = m - i - 1, i3 = i, i4 = i + 1;\n [points[i1], points[i3]] = [points[i3], points[i1]], [points[i2], points[i4]] = [points[i4], points[i2]];\n }\n }\n}\nconst buildPoly = {\n build(graphicsData) {\n graphicsData.points = graphicsData.shape.points.slice();\n },\n triangulate(graphicsData, graphicsGeometry) {\n let points = graphicsData.points;\n const holes = graphicsData.holes, verts = graphicsGeometry.points, indices = graphicsGeometry.indices;\n if (points.length >= 6) {\n fixOrientation(points, !1);\n const holeArray = [];\n for (let i = 0; i < holes.length; i++) {\n const hole = holes[i];\n fixOrientation(hole.points, !0), holeArray.push(points.length / 2), points = points.concat(hole.points);\n }\n const triangles = utils.earcut(points, holeArray, 2);\n if (!triangles)\n return;\n const vertPos = verts.length / 2;\n for (let i = 0; i < triangles.length; i += 3)\n indices.push(triangles[i] + vertPos), indices.push(triangles[i + 1] + vertPos), indices.push(triangles[i + 2] + vertPos);\n for (let i = 0; i < points.length; i++)\n verts.push(points[i]);\n }\n }\n};\nexport {\n buildPoly\n};\n//# sourceMappingURL=buildPoly.mjs.map\n","const buildRectangle = {\n build(graphicsData) {\n const rectData = graphicsData.shape, x = rectData.x, y = rectData.y, width = rectData.width, height = rectData.height, points = graphicsData.points;\n points.length = 0, width >= 0 && height >= 0 && points.push(\n x,\n y,\n x + width,\n y,\n x + width,\n y + height,\n x,\n y + height\n );\n },\n triangulate(graphicsData, graphicsGeometry) {\n const points = graphicsData.points, verts = graphicsGeometry.points;\n if (points.length === 0)\n return;\n const vertPos = verts.length / 2;\n verts.push(\n points[0],\n points[1],\n points[2],\n points[3],\n points[6],\n points[7],\n points[4],\n points[5]\n ), graphicsGeometry.indices.push(\n vertPos,\n vertPos + 1,\n vertPos + 2,\n vertPos + 1,\n vertPos + 2,\n vertPos + 3\n );\n }\n};\nexport {\n buildRectangle\n};\n//# sourceMappingURL=buildRectangle.mjs.map\n","import { buildCircle } from \"./buildCircle.mjs\";\nconst buildRoundedRectangle = {\n build(graphicsData) {\n buildCircle.build(graphicsData);\n },\n triangulate(graphicsData, graphicsGeometry) {\n buildCircle.triangulate(graphicsData, graphicsGeometry);\n }\n};\nexport {\n buildRoundedRectangle\n};\n//# sourceMappingURL=buildRoundedRectangle.mjs.map\n","var LINE_JOIN = /* @__PURE__ */ ((LINE_JOIN2) => (LINE_JOIN2.MITER = \"miter\", LINE_JOIN2.BEVEL = \"bevel\", LINE_JOIN2.ROUND = \"round\", LINE_JOIN2))(LINE_JOIN || {}), LINE_CAP = /* @__PURE__ */ ((LINE_CAP2) => (LINE_CAP2.BUTT = \"butt\", LINE_CAP2.ROUND = \"round\", LINE_CAP2.SQUARE = \"square\", LINE_CAP2))(LINE_CAP || {});\nconst curves = {\n adaptive: !0,\n maxLength: 10,\n minSegments: 8,\n maxSegments: 2048,\n epsilon: 1e-4,\n _segmentsCount(length, defaultSegments = 20) {\n if (!this.adaptive || !length || isNaN(length))\n return defaultSegments;\n let result = Math.ceil(length / this.maxLength);\n return result < this.minSegments ? result = this.minSegments : result > this.maxSegments && (result = this.maxSegments), result;\n }\n}, GRAPHICS_CURVES = curves;\nexport {\n GRAPHICS_CURVES,\n LINE_CAP,\n LINE_JOIN,\n curves\n};\n//# sourceMappingURL=const.mjs.map\n","import { PI_2 } from \"@pixi/core\";\nimport { curves } from \"../const.mjs\";\nclass ArcUtils {\n /**\n * Calculate information of the arc for {@link PIXI.Graphics.arcTo}.\n * @private\n * @param x1 - The x-coordinate of the first control point of the arc\n * @param y1 - The y-coordinate of the first control point of the arc\n * @param x2 - The x-coordinate of the second control point of the arc\n * @param y2 - The y-coordinate of the second control point of the arc\n * @param radius - The radius of the arc\n * @param points - Collection of points to add to\n * @returns - If the arc length is valid, return center of circle, radius and other info otherwise `null`.\n */\n static curveTo(x1, y1, x2, y2, radius, points) {\n const fromX = points[points.length - 2], a1 = points[points.length - 1] - y1, b1 = fromX - x1, a2 = y2 - y1, b2 = x2 - x1, mm = Math.abs(a1 * b2 - b1 * a2);\n if (mm < 1e-8 || radius === 0)\n return (points[points.length - 2] !== x1 || points[points.length - 1] !== y1) && points.push(x1, y1), null;\n const dd = a1 * a1 + b1 * b1, cc = a2 * a2 + b2 * b2, tt = a1 * a2 + b1 * b2, k1 = radius * Math.sqrt(dd) / mm, k2 = radius * Math.sqrt(cc) / mm, j1 = k1 * tt / dd, j2 = k2 * tt / cc, cx = k1 * b2 + k2 * b1, cy = k1 * a2 + k2 * a1, px = b1 * (k2 + j1), py = a1 * (k2 + j1), qx = b2 * (k1 + j2), qy = a2 * (k1 + j2), startAngle = Math.atan2(py - cy, px - cx), endAngle = Math.atan2(qy - cy, qx - cx);\n return {\n cx: cx + x1,\n cy: cy + y1,\n radius,\n startAngle,\n endAngle,\n anticlockwise: b1 * a2 > b2 * a1\n };\n }\n /**\n * The arc method creates an arc/curve (used to create circles, or parts of circles).\n * @private\n * @param _startX - Start x location of arc\n * @param _startY - Start y location of arc\n * @param cx - The x-coordinate of the center of the circle\n * @param cy - The y-coordinate of the center of the circle\n * @param radius - The radius of the circle\n * @param startAngle - The starting angle, in radians (0 is at the 3 o'clock position\n * of the arc's circle)\n * @param endAngle - The ending angle, in radians\n * @param _anticlockwise - Specifies whether the drawing should be\n * counter-clockwise or clockwise. False is default, and indicates clockwise, while true\n * indicates counter-clockwise.\n * @param points - Collection of points to add to\n */\n static arc(_startX, _startY, cx, cy, radius, startAngle, endAngle, _anticlockwise, points) {\n const sweep = endAngle - startAngle, n = curves._segmentsCount(\n Math.abs(sweep) * radius,\n Math.ceil(Math.abs(sweep) / PI_2) * 40\n ), theta = sweep / (n * 2), theta2 = theta * 2, cTheta = Math.cos(theta), sTheta = Math.sin(theta), segMinus = n - 1, remainder = segMinus % 1 / segMinus;\n for (let i = 0; i <= segMinus; ++i) {\n const real = i + remainder * i, angle = theta + startAngle + theta2 * real, c = Math.cos(angle), s = -Math.sin(angle);\n points.push(\n (cTheta * c + sTheta * s) * radius + cx,\n (cTheta * -s + sTheta * c) * radius + cy\n );\n }\n }\n}\nexport {\n ArcUtils\n};\n//# sourceMappingURL=ArcUtils.mjs.map\n","class BatchPart {\n constructor() {\n this.reset();\n }\n /**\n * Begin batch part.\n * @param style\n * @param startIndex\n * @param attribStart\n */\n begin(style, startIndex, attribStart) {\n this.reset(), this.style = style, this.start = startIndex, this.attribStart = attribStart;\n }\n /**\n * End batch part.\n * @param endIndex\n * @param endAttrib\n */\n end(endIndex, endAttrib) {\n this.attribSize = endAttrib - this.attribStart, this.size = endIndex - this.start;\n }\n reset() {\n this.style = null, this.size = 0, this.start = 0, this.attribStart = 0, this.attribSize = 0;\n }\n}\nexport {\n BatchPart\n};\n//# sourceMappingURL=BatchPart.mjs.map\n","import { curves } from \"../const.mjs\";\nclass BezierUtils {\n /**\n * Calculate length of bezier curve.\n * Analytical solution is impossible, since it involves an integral that does not integrate in general.\n * Therefore numerical solution is used.\n * @private\n * @param fromX - Starting point x\n * @param fromY - Starting point y\n * @param cpX - Control point x\n * @param cpY - Control point y\n * @param cpX2 - Second Control point x\n * @param cpY2 - Second Control point y\n * @param toX - Destination point x\n * @param toY - Destination point y\n * @returns - Length of bezier curve\n */\n static curveLength(fromX, fromY, cpX, cpY, cpX2, cpY2, toX, toY) {\n let result = 0, t = 0, t2 = 0, t3 = 0, nt = 0, nt2 = 0, nt3 = 0, x = 0, y = 0, dx = 0, dy = 0, prevX = fromX, prevY = fromY;\n for (let i = 1; i <= 10; ++i)\n t = i / 10, t2 = t * t, t3 = t2 * t, nt = 1 - t, nt2 = nt * nt, nt3 = nt2 * nt, x = nt3 * fromX + 3 * nt2 * t * cpX + 3 * nt * t2 * cpX2 + t3 * toX, y = nt3 * fromY + 3 * nt2 * t * cpY + 3 * nt * t2 * cpY2 + t3 * toY, dx = prevX - x, dy = prevY - y, prevX = x, prevY = y, result += Math.sqrt(dx * dx + dy * dy);\n return result;\n }\n /**\n * Calculate the points for a bezier curve and then draws it.\n *\n * Ignored from docs since it is not directly exposed.\n * @ignore\n * @param cpX - Control point x\n * @param cpY - Control point y\n * @param cpX2 - Second Control point x\n * @param cpY2 - Second Control point y\n * @param toX - Destination point x\n * @param toY - Destination point y\n * @param points - Path array to push points into\n */\n static curveTo(cpX, cpY, cpX2, cpY2, toX, toY, points) {\n const fromX = points[points.length - 2], fromY = points[points.length - 1];\n points.length -= 2;\n const n = curves._segmentsCount(\n BezierUtils.curveLength(fromX, fromY, cpX, cpY, cpX2, cpY2, toX, toY)\n );\n let dt = 0, dt2 = 0, dt3 = 0, t2 = 0, t3 = 0;\n points.push(fromX, fromY);\n for (let i = 1, j = 0; i <= n; ++i)\n j = i / n, dt = 1 - j, dt2 = dt * dt, dt3 = dt2 * dt, t2 = j * j, t3 = t2 * j, points.push(\n dt3 * fromX + 3 * dt2 * j * cpX + 3 * dt * t2 * cpX2 + t3 * toX,\n dt3 * fromY + 3 * dt2 * j * cpY + 3 * dt * t2 * cpY2 + t3 * toY\n );\n }\n}\nexport {\n BezierUtils\n};\n//# sourceMappingURL=BezierUtils.mjs.map\n","import { Point, SHAPES } from \"@pixi/core\";\nimport { LINE_CAP, LINE_JOIN, curves } from \"../const.mjs\";\nfunction square(x, y, nx, ny, innerWeight, outerWeight, clockwise, verts) {\n const ix = x - nx * innerWeight, iy = y - ny * innerWeight, ox = x + nx * outerWeight, oy = y + ny * outerWeight;\n let exx, eyy;\n clockwise ? (exx = ny, eyy = -nx) : (exx = -ny, eyy = nx);\n const eix = ix + exx, eiy = iy + eyy, eox = ox + exx, eoy = oy + eyy;\n return verts.push(\n eix,\n eiy,\n eox,\n eoy\n ), 2;\n}\nfunction round(cx, cy, sx, sy, ex, ey, verts, clockwise) {\n const cx2p0x = sx - cx, cy2p0y = sy - cy;\n let angle0 = Math.atan2(cx2p0x, cy2p0y), angle1 = Math.atan2(ex - cx, ey - cy);\n clockwise && angle0 < angle1 ? angle0 += Math.PI * 2 : !clockwise && angle0 > angle1 && (angle1 += Math.PI * 2);\n let startAngle = angle0;\n const angleDiff = angle1 - angle0, absAngleDiff = Math.abs(angleDiff), radius = Math.sqrt(cx2p0x * cx2p0x + cy2p0y * cy2p0y), segCount = (15 * absAngleDiff * Math.sqrt(radius) / Math.PI >> 0) + 1, angleInc = angleDiff / segCount;\n if (startAngle += angleInc, clockwise) {\n verts.push(\n cx,\n cy,\n sx,\n sy\n );\n for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc)\n verts.push(\n cx,\n cy,\n cx + Math.sin(angle) * radius,\n cy + Math.cos(angle) * radius\n );\n verts.push(\n cx,\n cy,\n ex,\n ey\n );\n } else {\n verts.push(\n sx,\n sy,\n cx,\n cy\n );\n for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc)\n verts.push(\n cx + Math.sin(angle) * radius,\n cy + Math.cos(angle) * radius,\n cx,\n cy\n );\n verts.push(\n ex,\n ey,\n cx,\n cy\n );\n }\n return segCount * 2;\n}\nfunction buildNonNativeLine(graphicsData, graphicsGeometry) {\n const shape = graphicsData.shape;\n let points = graphicsData.points || shape.points.slice();\n const eps = graphicsGeometry.closePointEps;\n if (points.length === 0)\n return;\n const style = graphicsData.lineStyle, firstPoint = new Point(points[0], points[1]), lastPoint = new Point(points[points.length - 2], points[points.length - 1]), closedShape = shape.type !== SHAPES.POLY || shape.closeStroke, closedPath = Math.abs(firstPoint.x - lastPoint.x) < eps && Math.abs(firstPoint.y - lastPoint.y) < eps;\n if (closedShape) {\n points = points.slice(), closedPath && (points.pop(), points.pop(), lastPoint.set(points[points.length - 2], points[points.length - 1]));\n const midPointX = (firstPoint.x + lastPoint.x) * 0.5, midPointY = (lastPoint.y + firstPoint.y) * 0.5;\n points.unshift(midPointX, midPointY), points.push(midPointX, midPointY);\n }\n const verts = graphicsGeometry.points, length = points.length / 2;\n let indexCount = points.length;\n const indexStart = verts.length / 2, width = style.width / 2, widthSquared = width * width, miterLimitSquared = style.miterLimit * style.miterLimit;\n let x0 = points[0], y0 = points[1], x1 = points[2], y1 = points[3], x2 = 0, y2 = 0, perpx = -(y0 - y1), perpy = x0 - x1, perp1x = 0, perp1y = 0, dist = Math.sqrt(perpx * perpx + perpy * perpy);\n perpx /= dist, perpy /= dist, perpx *= width, perpy *= width;\n const ratio = style.alignment, innerWeight = (1 - ratio) * 2, outerWeight = ratio * 2;\n closedShape || (style.cap === LINE_CAP.ROUND ? indexCount += round(\n x0 - perpx * (innerWeight - outerWeight) * 0.5,\n y0 - perpy * (innerWeight - outerWeight) * 0.5,\n x0 - perpx * innerWeight,\n y0 - perpy * innerWeight,\n x0 + perpx * outerWeight,\n y0 + perpy * outerWeight,\n verts,\n !0\n ) + 2 : style.cap === LINE_CAP.SQUARE && (indexCount += square(x0, y0, perpx, perpy, innerWeight, outerWeight, !0, verts))), verts.push(\n x0 - perpx * innerWeight,\n y0 - perpy * innerWeight,\n x0 + perpx * outerWeight,\n y0 + perpy * outerWeight\n );\n for (let i = 1; i < length - 1; ++i) {\n x0 = points[(i - 1) * 2], y0 = points[(i - 1) * 2 + 1], x1 = points[i * 2], y1 = points[i * 2 + 1], x2 = points[(i + 1) * 2], y2 = points[(i + 1) * 2 + 1], perpx = -(y0 - y1), perpy = x0 - x1, dist = Math.sqrt(perpx * perpx + perpy * perpy), perpx /= dist, perpy /= dist, perpx *= width, perpy *= width, perp1x = -(y1 - y2), perp1y = x1 - x2, dist = Math.sqrt(perp1x * perp1x + perp1y * perp1y), perp1x /= dist, perp1y /= dist, perp1x *= width, perp1y *= width;\n const dx0 = x1 - x0, dy0 = y0 - y1, dx1 = x1 - x2, dy1 = y2 - y1, dot = dx0 * dx1 + dy0 * dy1, cross = dy0 * dx1 - dy1 * dx0, clockwise = cross < 0;\n if (Math.abs(cross) < 1e-3 * Math.abs(dot)) {\n verts.push(\n x1 - perpx * innerWeight,\n y1 - perpy * innerWeight,\n x1 + perpx * outerWeight,\n y1 + perpy * outerWeight\n ), dot >= 0 && (style.join === LINE_JOIN.ROUND ? indexCount += round(\n x1,\n y1,\n x1 - perpx * innerWeight,\n y1 - perpy * innerWeight,\n x1 - perp1x * innerWeight,\n y1 - perp1y * innerWeight,\n verts,\n !1\n ) + 4 : indexCount += 2, verts.push(\n x1 - perp1x * outerWeight,\n y1 - perp1y * outerWeight,\n x1 + perp1x * innerWeight,\n y1 + perp1y * innerWeight\n ));\n continue;\n }\n const c1 = (-perpx + x0) * (-perpy + y1) - (-perpx + x1) * (-perpy + y0), c2 = (-perp1x + x2) * (-perp1y + y1) - (-perp1x + x1) * (-perp1y + y2), px = (dx0 * c2 - dx1 * c1) / cross, py = (dy1 * c1 - dy0 * c2) / cross, pdist = (px - x1) * (px - x1) + (py - y1) * (py - y1), imx = x1 + (px - x1) * innerWeight, imy = y1 + (py - y1) * innerWeight, omx = x1 - (px - x1) * outerWeight, omy = y1 - (py - y1) * outerWeight, smallerInsideSegmentSq = Math.min(dx0 * dx0 + dy0 * dy0, dx1 * dx1 + dy1 * dy1), insideWeight = clockwise ? innerWeight : outerWeight, smallerInsideDiagonalSq = smallerInsideSegmentSq + insideWeight * insideWeight * widthSquared, insideMiterOk = pdist <= smallerInsideDiagonalSq;\n let join = style.join;\n if (join === LINE_JOIN.MITER && pdist / widthSquared > miterLimitSquared && (join = LINE_JOIN.BEVEL), insideMiterOk)\n switch (join) {\n case LINE_JOIN.MITER: {\n verts.push(\n imx,\n imy,\n omx,\n omy\n );\n break;\n }\n case LINE_JOIN.BEVEL: {\n clockwise ? verts.push(\n imx,\n imy,\n // inner miter point\n x1 + perpx * outerWeight,\n y1 + perpy * outerWeight,\n // first segment's outer vertex\n imx,\n imy,\n // inner miter point\n x1 + perp1x * outerWeight,\n y1 + perp1y * outerWeight\n ) : verts.push(\n x1 - perpx * innerWeight,\n y1 - perpy * innerWeight,\n // first segment's inner vertex\n omx,\n omy,\n // outer miter point\n x1 - perp1x * innerWeight,\n y1 - perp1y * innerWeight,\n // second segment's outer vertex\n omx,\n omy\n ), indexCount += 2;\n break;\n }\n case LINE_JOIN.ROUND: {\n clockwise ? (verts.push(\n imx,\n imy,\n x1 + perpx * outerWeight,\n y1 + perpy * outerWeight\n ), indexCount += round(\n x1,\n y1,\n x1 + perpx * outerWeight,\n y1 + perpy * outerWeight,\n x1 + perp1x * outerWeight,\n y1 + perp1y * outerWeight,\n verts,\n !0\n ) + 4, verts.push(\n imx,\n imy,\n x1 + perp1x * outerWeight,\n y1 + perp1y * outerWeight\n )) : (verts.push(\n x1 - perpx * innerWeight,\n y1 - perpy * innerWeight,\n omx,\n omy\n ), indexCount += round(\n x1,\n y1,\n x1 - perpx * innerWeight,\n y1 - perpy * innerWeight,\n x1 - perp1x * innerWeight,\n y1 - perp1y * innerWeight,\n verts,\n !1\n ) + 4, verts.push(\n x1 - perp1x * innerWeight,\n y1 - perp1y * innerWeight,\n omx,\n omy\n ));\n break;\n }\n }\n else {\n switch (verts.push(\n x1 - perpx * innerWeight,\n y1 - perpy * innerWeight,\n // first segment's inner vertex\n x1 + perpx * outerWeight,\n y1 + perpy * outerWeight\n ), join) {\n case LINE_JOIN.MITER: {\n clockwise ? verts.push(\n omx,\n omy,\n // inner miter point\n omx,\n omy\n ) : verts.push(\n imx,\n imy,\n // outer miter point\n imx,\n imy\n ), indexCount += 2;\n break;\n }\n case LINE_JOIN.ROUND: {\n clockwise ? indexCount += round(\n x1,\n y1,\n x1 + perpx * outerWeight,\n y1 + perpy * outerWeight,\n x1 + perp1x * outerWeight,\n y1 + perp1y * outerWeight,\n verts,\n !0\n ) + 2 : indexCount += round(\n x1,\n y1,\n x1 - perpx * innerWeight,\n y1 - perpy * innerWeight,\n x1 - perp1x * innerWeight,\n y1 - perp1y * innerWeight,\n verts,\n !1\n ) + 2;\n break;\n }\n }\n verts.push(\n x1 - perp1x * innerWeight,\n y1 - perp1y * innerWeight,\n // second segment's inner vertex\n x1 + perp1x * outerWeight,\n y1 + perp1y * outerWeight\n ), indexCount += 2;\n }\n }\n x0 = points[(length - 2) * 2], y0 = points[(length - 2) * 2 + 1], x1 = points[(length - 1) * 2], y1 = points[(length - 1) * 2 + 1], perpx = -(y0 - y1), perpy = x0 - x1, dist = Math.sqrt(perpx * perpx + perpy * perpy), perpx /= dist, perpy /= dist, perpx *= width, perpy *= width, verts.push(\n x1 - perpx * innerWeight,\n y1 - perpy * innerWeight,\n x1 + perpx * outerWeight,\n y1 + perpy * outerWeight\n ), closedShape || (style.cap === LINE_CAP.ROUND ? indexCount += round(\n x1 - perpx * (innerWeight - outerWeight) * 0.5,\n y1 - perpy * (innerWeight - outerWeight) * 0.5,\n x1 - perpx * innerWeight,\n y1 - perpy * innerWeight,\n x1 + perpx * outerWeight,\n y1 + perpy * outerWeight,\n verts,\n !1\n ) + 2 : style.cap === LINE_CAP.SQUARE && (indexCount += square(x1, y1, perpx, perpy, innerWeight, outerWeight, !1, verts)));\n const indices = graphicsGeometry.indices, eps2 = curves.epsilon * curves.epsilon;\n for (let i = indexStart; i < indexCount + indexStart - 2; ++i)\n x0 = verts[i * 2], y0 = verts[i * 2 + 1], x1 = verts[(i + 1) * 2], y1 = verts[(i + 1) * 2 + 1], x2 = verts[(i + 2) * 2], y2 = verts[(i + 2) * 2 + 1], !(Math.abs(x0 * (y1 - y2) + x1 * (y2 - y0) + x2 * (y0 - y1)) < eps2) && indices.push(i, i + 1, i + 2);\n}\nfunction buildNativeLine(graphicsData, graphicsGeometry) {\n let i = 0;\n const shape = graphicsData.shape, points = graphicsData.points || shape.points, closedShape = shape.type !== SHAPES.POLY || shape.closeStroke;\n if (points.length === 0)\n return;\n const verts = graphicsGeometry.points, indices = graphicsGeometry.indices, length = points.length / 2, startIndex = verts.length / 2;\n let currentIndex = startIndex;\n for (verts.push(points[0], points[1]), i = 1; i < length; i++)\n verts.push(points[i * 2], points[i * 2 + 1]), indices.push(currentIndex, currentIndex + 1), currentIndex++;\n closedShape && indices.push(currentIndex, startIndex);\n}\nfunction buildLine(graphicsData, graphicsGeometry) {\n graphicsData.lineStyle.native ? buildNativeLine(graphicsData, graphicsGeometry) : buildNonNativeLine(graphicsData, graphicsGeometry);\n}\nexport {\n buildLine\n};\n//# sourceMappingURL=buildLine.mjs.map\n","import { curves } from \"../const.mjs\";\nclass QuadraticUtils {\n /**\n * Calculate length of quadratic curve\n * @see {@link http://www.malczak.linuxpl.com/blog/quadratic-bezier-curve-length/}\n * for the detailed explanation of math behind this.\n * @private\n * @param fromX - x-coordinate of curve start point\n * @param fromY - y-coordinate of curve start point\n * @param cpX - x-coordinate of curve control point\n * @param cpY - y-coordinate of curve control point\n * @param toX - x-coordinate of curve end point\n * @param toY - y-coordinate of curve end point\n * @returns - Length of quadratic curve\n */\n static curveLength(fromX, fromY, cpX, cpY, toX, toY) {\n const ax = fromX - 2 * cpX + toX, ay = fromY - 2 * cpY + toY, bx = 2 * cpX - 2 * fromX, by = 2 * cpY - 2 * fromY, a = 4 * (ax * ax + ay * ay), b = 4 * (ax * bx + ay * by), c = bx * bx + by * by, s = 2 * Math.sqrt(a + b + c), a2 = Math.sqrt(a), a32 = 2 * a * a2, c2 = 2 * Math.sqrt(c), ba = b / a2;\n return (a32 * s + a2 * b * (s - c2) + (4 * c * a - b * b) * Math.log((2 * a2 + ba + s) / (ba + c2))) / (4 * a32);\n }\n /**\n * Calculate the points for a quadratic bezier curve and then draws it.\n * Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier-curve-in-c\n * @private\n * @param cpX - Control point x\n * @param cpY - Control point y\n * @param toX - Destination point x\n * @param toY - Destination point y\n * @param points - Points to add segments to.\n */\n static curveTo(cpX, cpY, toX, toY, points) {\n const fromX = points[points.length - 2], fromY = points[points.length - 1], n = curves._segmentsCount(\n QuadraticUtils.curveLength(fromX, fromY, cpX, cpY, toX, toY)\n );\n let xa = 0, ya = 0;\n for (let i = 1; i <= n; ++i) {\n const j = i / n;\n xa = fromX + (cpX - fromX) * j, ya = fromY + (cpY - fromY) * j, points.push(\n xa + (cpX + (toX - cpX) * j - xa) * j,\n ya + (cpY + (toY - cpY) * j - ya) * j\n );\n }\n }\n}\nexport {\n QuadraticUtils\n};\n//# sourceMappingURL=QuadraticUtils.mjs.map\n","import { SHAPES } from \"@pixi/core\";\nimport { buildCircle } from \"./buildCircle.mjs\";\nimport { buildPoly } from \"./buildPoly.mjs\";\nimport { buildRectangle } from \"./buildRectangle.mjs\";\nimport { buildRoundedRectangle } from \"./buildRoundedRectangle.mjs\";\nimport { ArcUtils } from \"./ArcUtils.mjs\";\nimport { BatchPart } from \"./BatchPart.mjs\";\nimport { BezierUtils } from \"./BezierUtils.mjs\";\nimport { buildLine } from \"./buildLine.mjs\";\nimport { QuadraticUtils } from \"./QuadraticUtils.mjs\";\nconst FILL_COMMANDS = {\n [SHAPES.POLY]: buildPoly,\n [SHAPES.CIRC]: buildCircle,\n [SHAPES.ELIP]: buildCircle,\n [SHAPES.RECT]: buildRectangle,\n [SHAPES.RREC]: buildRoundedRectangle\n}, BATCH_POOL = [], DRAW_CALL_POOL = [];\nexport {\n ArcUtils,\n BATCH_POOL,\n BatchPart,\n BezierUtils,\n DRAW_CALL_POOL,\n FILL_COMMANDS,\n QuadraticUtils,\n buildCircle,\n buildLine,\n buildPoly,\n buildRectangle,\n buildRoundedRectangle\n};\n//# sourceMappingURL=index.mjs.map\n","class GraphicsData {\n /**\n * @param {PIXI.Circle|PIXI.Ellipse|PIXI.Polygon|PIXI.Rectangle|PIXI.RoundedRectangle} shape - The shape object to draw.\n * @param fillStyle - the width of the line to draw\n * @param lineStyle - the color of the line to draw\n * @param matrix - Transform matrix\n */\n constructor(shape, fillStyle = null, lineStyle = null, matrix = null) {\n this.points = [], this.holes = [], this.shape = shape, this.lineStyle = lineStyle, this.fillStyle = fillStyle, this.matrix = matrix, this.type = shape.type;\n }\n /**\n * Creates a new GraphicsData object with the same values as this one.\n * @returns - Cloned GraphicsData object\n */\n clone() {\n return new GraphicsData(\n this.shape,\n this.fillStyle,\n this.lineStyle,\n this.matrix\n );\n }\n /** Destroys the Graphics data. */\n destroy() {\n this.shape = null, this.holes.length = 0, this.holes = null, this.points.length = 0, this.points = null, this.lineStyle = null, this.fillStyle = null;\n }\n}\nexport {\n GraphicsData\n};\n//# sourceMappingURL=GraphicsData.mjs.map\n","import { Point, BatchGeometry, WRAP_MODES, BaseTexture, BatchDrawCall, BatchTextureArray, DRAW_MODES, Color } from \"@pixi/core\";\nimport { Bounds } from \"@pixi/display\";\nimport { GraphicsData } from \"./GraphicsData.mjs\";\nimport { DRAW_CALL_POOL, BATCH_POOL, FILL_COMMANDS } from \"./utils/index.mjs\";\nimport { BatchPart } from \"./utils/BatchPart.mjs\";\nimport { buildPoly } from \"./utils/buildPoly.mjs\";\nimport { buildLine } from \"./utils/buildLine.mjs\";\nconst tmpPoint = new Point(), _GraphicsGeometry = class _GraphicsGeometry2 extends BatchGeometry {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor() {\n super(), this.closePointEps = 1e-4, this.boundsPadding = 0, this.uvsFloat32 = null, this.indicesUint16 = null, this.batchable = !1, this.points = [], this.colors = [], this.uvs = [], this.indices = [], this.textureIds = [], this.graphicsData = [], this.drawCalls = [], this.batchDirty = -1, this.batches = [], this.dirty = 0, this.cacheDirty = -1, this.clearDirty = 0, this.shapeIndex = 0, this._bounds = new Bounds(), this.boundsDirty = -1;\n }\n /**\n * Get the current bounds of the graphic geometry.\n *\n * Since 6.5.0, bounds of the graphics geometry are calculated based on the vertices of generated geometry.\n * Since shapes or strokes with full transparency (`alpha: 0`) will not generate geometry, they are not considered\n * when calculating bounds for the graphics geometry. See PR [#8343]{@link https://github.com/pixijs/pixijs/pull/8343}\n * and issue [#8623]{@link https://github.com/pixijs/pixijs/pull/8623}.\n * @readonly\n */\n get bounds() {\n return this.updateBatches(), this.boundsDirty !== this.dirty && (this.boundsDirty = this.dirty, this.calculateBounds()), this._bounds;\n }\n /** Call if you changed graphicsData manually. Empties all batch buffers. */\n invalidate() {\n this.boundsDirty = -1, this.dirty++, this.batchDirty++, this.shapeIndex = 0, this.points.length = 0, this.colors.length = 0, this.uvs.length = 0, this.indices.length = 0, this.textureIds.length = 0;\n for (let i = 0; i < this.drawCalls.length; i++)\n this.drawCalls[i].texArray.clear(), DRAW_CALL_POOL.push(this.drawCalls[i]);\n this.drawCalls.length = 0;\n for (let i = 0; i < this.batches.length; i++) {\n const batchPart = this.batches[i];\n batchPart.reset(), BATCH_POOL.push(batchPart);\n }\n this.batches.length = 0;\n }\n /**\n * Clears the graphics that were drawn to this Graphics object, and resets fill and line style settings.\n * @returns - This GraphicsGeometry object. Good for chaining method calls\n */\n clear() {\n return this.graphicsData.length > 0 && (this.invalidate(), this.clearDirty++, this.graphicsData.length = 0), this;\n }\n /**\n * Draws the given shape to this Graphics object. Can be any of Circle, Rectangle, Ellipse, Line or Polygon.\n * @param {PIXI.Circle|PIXI.Ellipse|PIXI.Polygon|PIXI.Rectangle|PIXI.RoundedRectangle} shape - The shape object to draw.\n * @param fillStyle - Defines style of the fill.\n * @param lineStyle - Defines style of the lines.\n * @param matrix - Transform applied to the points of the shape.\n * @returns - Returns geometry for chaining.\n */\n drawShape(shape, fillStyle = null, lineStyle = null, matrix = null) {\n const data = new GraphicsData(shape, fillStyle, lineStyle, matrix);\n return this.graphicsData.push(data), this.dirty++, this;\n }\n /**\n * Draws the given shape to this Graphics object. Can be any of Circle, Rectangle, Ellipse, Line or Polygon.\n * @param {PIXI.Circle|PIXI.Ellipse|PIXI.Polygon|PIXI.Rectangle|PIXI.RoundedRectangle} shape - The shape object to draw.\n * @param matrix - Transform applied to the points of the shape.\n * @returns - Returns geometry for chaining.\n */\n drawHole(shape, matrix = null) {\n if (!this.graphicsData.length)\n return null;\n const data = new GraphicsData(shape, null, null, matrix), lastShape = this.graphicsData[this.graphicsData.length - 1];\n return data.lineStyle = lastShape.lineStyle, lastShape.holes.push(data), this.dirty++, this;\n }\n /** Destroys the GraphicsGeometry object. */\n destroy() {\n super.destroy();\n for (let i = 0; i < this.graphicsData.length; ++i)\n this.graphicsData[i].destroy();\n this.points.length = 0, this.points = null, this.colors.length = 0, this.colors = null, this.uvs.length = 0, this.uvs = null, this.indices.length = 0, this.indices = null, this.indexBuffer.destroy(), this.indexBuffer = null, this.graphicsData.length = 0, this.graphicsData = null, this.drawCalls.length = 0, this.drawCalls = null, this.batches.length = 0, this.batches = null, this._bounds = null;\n }\n /**\n * Check to see if a point is contained within this geometry.\n * @param point - Point to check if it's contained.\n * @returns {boolean} `true` if the point is contained within geometry.\n */\n containsPoint(point) {\n const graphicsData = this.graphicsData;\n for (let i = 0; i < graphicsData.length; ++i) {\n const data = graphicsData[i];\n if (data.fillStyle.visible && data.shape && (data.matrix ? data.matrix.applyInverse(point, tmpPoint) : tmpPoint.copyFrom(point), data.shape.contains(tmpPoint.x, tmpPoint.y))) {\n let hitHole = !1;\n if (data.holes) {\n for (let i2 = 0; i2 < data.holes.length; i2++)\n if (data.holes[i2].shape.contains(tmpPoint.x, tmpPoint.y)) {\n hitHole = !0;\n break;\n }\n }\n if (!hitHole)\n return !0;\n }\n }\n return !1;\n }\n /**\n * Generates intermediate batch data. Either gets converted to drawCalls\n * or used to convert to batch objects directly by the Graphics object.\n */\n updateBatches() {\n if (!this.graphicsData.length) {\n this.batchable = !0;\n return;\n }\n if (!this.validateBatching())\n return;\n this.cacheDirty = this.dirty;\n const uvs = this.uvs, graphicsData = this.graphicsData;\n let batchPart = null, currentStyle = null;\n this.batches.length > 0 && (batchPart = this.batches[this.batches.length - 1], currentStyle = batchPart.style);\n for (let i = this.shapeIndex; i < graphicsData.length; i++) {\n this.shapeIndex++;\n const data = graphicsData[i], fillStyle = data.fillStyle, lineStyle = data.lineStyle;\n FILL_COMMANDS[data.type].build(data), data.matrix && this.transformPoints(data.points, data.matrix), (fillStyle.visible || lineStyle.visible) && this.processHoles(data.holes);\n for (let j = 0; j < 2; j++) {\n const style = j === 0 ? fillStyle : lineStyle;\n if (!style.visible)\n continue;\n const nextTexture = style.texture.baseTexture, index2 = this.indices.length, attribIndex = this.points.length / 2;\n nextTexture.wrapMode = WRAP_MODES.REPEAT, j === 0 ? this.processFill(data) : this.processLine(data);\n const size = this.points.length / 2 - attribIndex;\n size !== 0 && (batchPart && !this._compareStyles(currentStyle, style) && (batchPart.end(index2, attribIndex), batchPart = null), batchPart || (batchPart = BATCH_POOL.pop() || new BatchPart(), batchPart.begin(style, index2, attribIndex), this.batches.push(batchPart), currentStyle = style), this.addUvs(this.points, uvs, style.texture, attribIndex, size, style.matrix));\n }\n }\n const index = this.indices.length, attrib = this.points.length / 2;\n if (batchPart && batchPart.end(index, attrib), this.batches.length === 0) {\n this.batchable = !0;\n return;\n }\n const need32 = attrib > 65535;\n this.indicesUint16 && this.indices.length === this.indicesUint16.length && need32 === this.indicesUint16.BYTES_PER_ELEMENT > 2 ? this.indicesUint16.set(this.indices) : this.indicesUint16 = need32 ? new Uint32Array(this.indices) : new Uint16Array(this.indices), this.batchable = this.isBatchable(), this.batchable ? this.packBatches() : this.buildDrawCalls();\n }\n /**\n * Affinity check\n * @param styleA\n * @param styleB\n */\n _compareStyles(styleA, styleB) {\n return !(!styleA || !styleB || styleA.texture.baseTexture !== styleB.texture.baseTexture || styleA.color + styleA.alpha !== styleB.color + styleB.alpha || !!styleA.native != !!styleB.native);\n }\n /** Test geometry for batching process. */\n validateBatching() {\n if (this.dirty === this.cacheDirty || !this.graphicsData.length)\n return !1;\n for (let i = 0, l = this.graphicsData.length; i < l; i++) {\n const data = this.graphicsData[i], fill = data.fillStyle, line = data.lineStyle;\n if (fill && !fill.texture.baseTexture.valid || line && !line.texture.baseTexture.valid)\n return !1;\n }\n return !0;\n }\n /** Offset the indices so that it works with the batcher. */\n packBatches() {\n this.batchDirty++, this.uvsFloat32 = new Float32Array(this.uvs);\n const batches = this.batches;\n for (let i = 0, l = batches.length; i < l; i++) {\n const batch = batches[i];\n for (let j = 0; j < batch.size; j++) {\n const index = batch.start + j;\n this.indicesUint16[index] = this.indicesUint16[index] - batch.attribStart;\n }\n }\n }\n /**\n * Checks to see if this graphics geometry can be batched.\n * Currently it needs to be small enough and not contain any native lines.\n */\n isBatchable() {\n if (this.points.length > 65535 * 2)\n return !1;\n const batches = this.batches;\n for (let i = 0; i < batches.length; i++)\n if (batches[i].style.native)\n return !1;\n return this.points.length < _GraphicsGeometry2.BATCHABLE_SIZE * 2;\n }\n /** Converts intermediate batches data to drawCalls. */\n buildDrawCalls() {\n let TICK = ++BaseTexture._globalBatch;\n for (let i = 0; i < this.drawCalls.length; i++)\n this.drawCalls[i].texArray.clear(), DRAW_CALL_POOL.push(this.drawCalls[i]);\n this.drawCalls.length = 0;\n const colors = this.colors, textureIds = this.textureIds;\n let currentGroup = DRAW_CALL_POOL.pop();\n currentGroup || (currentGroup = new BatchDrawCall(), currentGroup.texArray = new BatchTextureArray()), currentGroup.texArray.count = 0, currentGroup.start = 0, currentGroup.size = 0, currentGroup.type = DRAW_MODES.TRIANGLES;\n let textureCount = 0, currentTexture = null, textureId = 0, native = !1, drawMode = DRAW_MODES.TRIANGLES, index = 0;\n this.drawCalls.push(currentGroup);\n for (let i = 0; i < this.batches.length; i++) {\n const data = this.batches[i], maxTextures = 8, style = data.style, nextTexture = style.texture.baseTexture;\n native !== !!style.native && (native = !!style.native, drawMode = native ? DRAW_MODES.LINES : DRAW_MODES.TRIANGLES, currentTexture = null, textureCount = maxTextures, TICK++), currentTexture !== nextTexture && (currentTexture = nextTexture, nextTexture._batchEnabled !== TICK && (textureCount === maxTextures && (TICK++, textureCount = 0, currentGroup.size > 0 && (currentGroup = DRAW_CALL_POOL.pop(), currentGroup || (currentGroup = new BatchDrawCall(), currentGroup.texArray = new BatchTextureArray()), this.drawCalls.push(currentGroup)), currentGroup.start = index, currentGroup.size = 0, currentGroup.texArray.count = 0, currentGroup.type = drawMode), nextTexture.touched = 1, nextTexture._batchEnabled = TICK, nextTexture._batchLocation = textureCount, nextTexture.wrapMode = WRAP_MODES.REPEAT, currentGroup.texArray.elements[currentGroup.texArray.count++] = nextTexture, textureCount++)), currentGroup.size += data.size, index += data.size, textureId = nextTexture._batchLocation, this.addColors(colors, style.color, style.alpha, data.attribSize, data.attribStart), this.addTextureIds(textureIds, textureId, data.attribSize, data.attribStart);\n }\n BaseTexture._globalBatch = TICK, this.packAttributes();\n }\n /** Packs attributes to single buffer. */\n packAttributes() {\n const verts = this.points, uvs = this.uvs, colors = this.colors, textureIds = this.textureIds, glPoints = new ArrayBuffer(verts.length * 3 * 4), f32 = new Float32Array(glPoints), u32 = new Uint32Array(glPoints);\n let p = 0;\n for (let i = 0; i < verts.length / 2; i++)\n f32[p++] = verts[i * 2], f32[p++] = verts[i * 2 + 1], f32[p++] = uvs[i * 2], f32[p++] = uvs[i * 2 + 1], u32[p++] = colors[i], f32[p++] = textureIds[i];\n this._buffer.update(glPoints), this._indexBuffer.update(this.indicesUint16);\n }\n /**\n * Process fill part of Graphics.\n * @param data\n */\n processFill(data) {\n data.holes.length ? buildPoly.triangulate(data, this) : FILL_COMMANDS[data.type].triangulate(data, this);\n }\n /**\n * Process line part of Graphics.\n * @param data\n */\n processLine(data) {\n buildLine(data, this);\n for (let i = 0; i < data.holes.length; i++)\n buildLine(data.holes[i], this);\n }\n /**\n * Process the holes data.\n * @param holes\n */\n processHoles(holes) {\n for (let i = 0; i < holes.length; i++) {\n const hole = holes[i];\n FILL_COMMANDS[hole.type].build(hole), hole.matrix && this.transformPoints(hole.points, hole.matrix);\n }\n }\n /** Update the local bounds of the object. Expensive to use performance-wise. */\n calculateBounds() {\n const bounds = this._bounds;\n bounds.clear(), bounds.addVertexData(this.points, 0, this.points.length), bounds.pad(this.boundsPadding, this.boundsPadding);\n }\n /**\n * Transform points using matrix.\n * @param points - Points to transform\n * @param matrix - Transform matrix\n */\n transformPoints(points, matrix) {\n for (let i = 0; i < points.length / 2; i++) {\n const x = points[i * 2], y = points[i * 2 + 1];\n points[i * 2] = matrix.a * x + matrix.c * y + matrix.tx, points[i * 2 + 1] = matrix.b * x + matrix.d * y + matrix.ty;\n }\n }\n /**\n * Add colors.\n * @param colors - List of colors to add to\n * @param color - Color to add\n * @param alpha - Alpha to use\n * @param size - Number of colors to add\n * @param offset\n */\n addColors(colors, color, alpha, size, offset = 0) {\n const bgr = Color.shared.setValue(color).toLittleEndianNumber(), result = Color.shared.setValue(bgr).toPremultiplied(alpha);\n colors.length = Math.max(colors.length, offset + size);\n for (let i = 0; i < size; i++)\n colors[offset + i] = result;\n }\n /**\n * Add texture id that the shader/fragment wants to use.\n * @param textureIds\n * @param id\n * @param size\n * @param offset\n */\n addTextureIds(textureIds, id, size, offset = 0) {\n textureIds.length = Math.max(textureIds.length, offset + size);\n for (let i = 0; i < size; i++)\n textureIds[offset + i] = id;\n }\n /**\n * Generates the UVs for a shape.\n * @param verts - Vertices\n * @param uvs - UVs\n * @param texture - Reference to Texture\n * @param start - Index buffer start index.\n * @param size - The size/length for index buffer.\n * @param matrix - Optional transform for all points.\n */\n addUvs(verts, uvs, texture, start, size, matrix = null) {\n let index = 0;\n const uvsStart = uvs.length, frame = texture.frame;\n for (; index < size; ) {\n let x = verts[(start + index) * 2], y = verts[(start + index) * 2 + 1];\n if (matrix) {\n const nx = matrix.a * x + matrix.c * y + matrix.tx;\n y = matrix.b * x + matrix.d * y + matrix.ty, x = nx;\n }\n index++, uvs.push(x / frame.width, y / frame.height);\n }\n const baseTexture = texture.baseTexture;\n (frame.width < baseTexture.width || frame.height < baseTexture.height) && this.adjustUvs(uvs, texture, uvsStart, size);\n }\n /**\n * Modify uvs array according to position of texture region\n * Does not work with rotated or trimmed textures\n * @param uvs - array\n * @param texture - region\n * @param start - starting index for uvs\n * @param size - how many points to adjust\n */\n adjustUvs(uvs, texture, start, size) {\n const baseTexture = texture.baseTexture, eps = 1e-6, finish = start + size * 2, frame = texture.frame, scaleX = frame.width / baseTexture.width, scaleY = frame.height / baseTexture.height;\n let offsetX = frame.x / frame.width, offsetY = frame.y / frame.height, minX = Math.floor(uvs[start] + eps), minY = Math.floor(uvs[start + 1] + eps);\n for (let i = start + 2; i < finish; i += 2)\n minX = Math.min(minX, Math.floor(uvs[i] + eps)), minY = Math.min(minY, Math.floor(uvs[i + 1] + eps));\n offsetX -= minX, offsetY -= minY;\n for (let i = start; i < finish; i += 2)\n uvs[i] = (uvs[i] + offsetX) * scaleX, uvs[i + 1] = (uvs[i + 1] + offsetY) * scaleY;\n }\n};\n_GraphicsGeometry.BATCHABLE_SIZE = 100;\nlet GraphicsGeometry = _GraphicsGeometry;\nexport {\n GraphicsGeometry\n};\n//# sourceMappingURL=GraphicsGeometry.mjs.map\n","import { Texture } from \"@pixi/core\";\nclass FillStyle {\n constructor() {\n this.color = 16777215, this.alpha = 1, this.texture = Texture.WHITE, this.matrix = null, this.visible = !1, this.reset();\n }\n /** Clones the object */\n clone() {\n const obj = new FillStyle();\n return obj.color = this.color, obj.alpha = this.alpha, obj.texture = this.texture, obj.matrix = this.matrix, obj.visible = this.visible, obj;\n }\n /** Reset */\n reset() {\n this.color = 16777215, this.alpha = 1, this.texture = Texture.WHITE, this.matrix = null, this.visible = !1;\n }\n /** Destroy and don't use after this. */\n destroy() {\n this.texture = null, this.matrix = null;\n }\n}\nexport {\n FillStyle\n};\n//# sourceMappingURL=FillStyle.mjs.map\n","import { LINE_CAP, LINE_JOIN } from \"../const.mjs\";\nimport { FillStyle } from \"./FillStyle.mjs\";\nclass LineStyle extends FillStyle {\n constructor() {\n super(...arguments), this.width = 0, this.alignment = 0.5, this.native = !1, this.cap = LINE_CAP.BUTT, this.join = LINE_JOIN.MITER, this.miterLimit = 10;\n }\n /** Clones the object. */\n clone() {\n const obj = new LineStyle();\n return obj.color = this.color, obj.alpha = this.alpha, obj.texture = this.texture, obj.matrix = this.matrix, obj.visible = this.visible, obj.width = this.width, obj.alignment = this.alignment, obj.native = this.native, obj.cap = this.cap, obj.join = this.join, obj.miterLimit = this.miterLimit, obj;\n }\n /** Reset the line style to default. */\n reset() {\n super.reset(), this.color = 0, this.alignment = 0.5, this.width = 0, this.native = !1, this.cap = LINE_CAP.BUTT, this.join = LINE_JOIN.MITER, this.miterLimit = 10;\n }\n}\nexport {\n LineStyle\n};\n//# sourceMappingURL=LineStyle.mjs.map\n","import { State, Color, BLEND_MODES, Texture, Polygon, PI_2, Rectangle, RoundedRectangle, Circle, Ellipse, SHAPES, Matrix, UniformGroup, Shader, Point } from \"@pixi/core\";\nimport { Container } from \"@pixi/display\";\nimport { LINE_CAP, LINE_JOIN, curves } from \"./const.mjs\";\nimport { GraphicsGeometry } from \"./GraphicsGeometry.mjs\";\nimport { FillStyle } from \"./styles/FillStyle.mjs\";\nimport { LineStyle } from \"./styles/LineStyle.mjs\";\nimport \"./utils/index.mjs\";\nimport { QuadraticUtils } from \"./utils/QuadraticUtils.mjs\";\nimport { BezierUtils } from \"./utils/BezierUtils.mjs\";\nimport { ArcUtils } from \"./utils/ArcUtils.mjs\";\nconst DEFAULT_SHADERS = {}, _Graphics = class _Graphics2 extends Container {\n /**\n * @param geometry - Geometry to use, if omitted will create a new GraphicsGeometry instance.\n */\n constructor(geometry = null) {\n super(), this.shader = null, this.pluginName = \"batch\", this.currentPath = null, this.batches = [], this.batchTint = -1, this.batchDirty = -1, this.vertexData = null, this._fillStyle = new FillStyle(), this._lineStyle = new LineStyle(), this._matrix = null, this._holeMode = !1, this.state = State.for2d(), this._geometry = geometry || new GraphicsGeometry(), this._geometry.refCount++, this._transformID = -1, this._tintColor = new Color(16777215), this.blendMode = BLEND_MODES.NORMAL;\n }\n /**\n * Includes vertex positions, face indices, normals, colors, UVs, and\n * custom attributes within buffers, reducing the cost of passing all\n * this data to the GPU. Can be shared between multiple Mesh or Graphics objects.\n * @readonly\n */\n get geometry() {\n return this._geometry;\n }\n /**\n * Creates a new Graphics object with the same values as this one.\n * Note that only the geometry of the object is cloned, not its transform (position,scale,etc)\n * @returns - A clone of the graphics object\n */\n clone() {\n return this.finishPoly(), new _Graphics2(this._geometry);\n }\n /**\n * The blend mode to be applied to the graphic shape. Apply a value of\n * `PIXI.BLEND_MODES.NORMAL` to reset the blend mode. Note that, since each\n * primitive in the GraphicsGeometry list is rendered sequentially, modes\n * such as `PIXI.BLEND_MODES.ADD` and `PIXI.BLEND_MODES.MULTIPLY` will\n * be applied per-primitive.\n * @default PIXI.BLEND_MODES.NORMAL\n */\n set blendMode(value) {\n this.state.blendMode = value;\n }\n get blendMode() {\n return this.state.blendMode;\n }\n /**\n * The tint applied to each graphic shape. This is a hex value. A value of\n * 0xFFFFFF will remove any tint effect.\n * @default 0xFFFFFF\n */\n get tint() {\n return this._tintColor.value;\n }\n set tint(value) {\n this._tintColor.setValue(value);\n }\n /**\n * The current fill style.\n * @readonly\n */\n get fill() {\n return this._fillStyle;\n }\n /**\n * The current line style.\n * @readonly\n */\n get line() {\n return this._lineStyle;\n }\n lineStyle(options = null, color = 0, alpha, alignment = 0.5, native = !1) {\n return typeof options == \"number\" && (options = { width: options, color, alpha, alignment, native }), this.lineTextureStyle(options);\n }\n /**\n * Like line style but support texture for line fill.\n * @param [options] - Collection of options for setting line style.\n * @param {number} [options.width=0] - width of the line to draw, will update the objects stored style\n * @param {PIXI.Texture} [options.texture=PIXI.Texture.WHITE] - Texture to use\n * @param {PIXI.ColorSource} [options.color=0x0] - color of the line to draw, will update the objects stored style.\n * Default 0xFFFFFF if texture present.\n * @param {number} [options.alpha=1] - alpha of the line to draw, will update the objects stored style\n * @param {PIXI.Matrix} [options.matrix=null] - Texture matrix to transform texture\n * @param {number} [options.alignment=0.5] - alignment of the line to draw, (0 = inner, 0.5 = middle, 1 = outer).\n * WebGL only.\n * @param {boolean} [options.native=false] - If true the lines will be draw using LINES instead of TRIANGLE_STRIP\n * @param {PIXI.LINE_CAP}[options.cap=PIXI.LINE_CAP.BUTT] - line cap style\n * @param {PIXI.LINE_JOIN}[options.join=PIXI.LINE_JOIN.MITER] - line join style\n * @param {number}[options.miterLimit=10] - miter limit ratio\n * @returns {PIXI.Graphics} This Graphics object. Good for chaining method calls\n */\n lineTextureStyle(options) {\n const defaultLineStyleOptions = {\n width: 0,\n texture: Texture.WHITE,\n color: options?.texture ? 16777215 : 0,\n matrix: null,\n alignment: 0.5,\n native: !1,\n cap: LINE_CAP.BUTT,\n join: LINE_JOIN.MITER,\n miterLimit: 10\n };\n options = Object.assign(defaultLineStyleOptions, options), this.normalizeColor(options), this.currentPath && this.startPoly();\n const visible = options.width > 0 && options.alpha > 0;\n return visible ? (options.matrix && (options.matrix = options.matrix.clone(), options.matrix.invert()), Object.assign(this._lineStyle, { visible }, options)) : this._lineStyle.reset(), this;\n }\n /**\n * Start a polygon object internally.\n * @protected\n */\n startPoly() {\n if (this.currentPath) {\n const points = this.currentPath.points, len = this.currentPath.points.length;\n len > 2 && (this.drawShape(this.currentPath), this.currentPath = new Polygon(), this.currentPath.closeStroke = !1, this.currentPath.points.push(points[len - 2], points[len - 1]));\n } else\n this.currentPath = new Polygon(), this.currentPath.closeStroke = !1;\n }\n /**\n * Finish the polygon object.\n * @protected\n */\n finishPoly() {\n this.currentPath && (this.currentPath.points.length > 2 ? (this.drawShape(this.currentPath), this.currentPath = null) : this.currentPath.points.length = 0);\n }\n /**\n * Moves the current drawing position to x, y.\n * @param x - the X coordinate to move to\n * @param y - the Y coordinate to move to\n * @returns - This Graphics object. Good for chaining method calls\n */\n moveTo(x, y) {\n return this.startPoly(), this.currentPath.points[0] = x, this.currentPath.points[1] = y, this;\n }\n /**\n * Draws a line using the current line style from the current drawing position to (x, y);\n * The current drawing position is then set to (x, y).\n * @param x - the X coordinate to draw to\n * @param y - the Y coordinate to draw to\n * @returns - This Graphics object. Good for chaining method calls\n */\n lineTo(x, y) {\n this.currentPath || this.moveTo(0, 0);\n const points = this.currentPath.points, fromX = points[points.length - 2], fromY = points[points.length - 1];\n return (fromX !== x || fromY !== y) && points.push(x, y), this;\n }\n /**\n * Initialize the curve\n * @param x\n * @param y\n */\n _initCurve(x = 0, y = 0) {\n this.currentPath ? this.currentPath.points.length === 0 && (this.currentPath.points = [x, y]) : this.moveTo(x, y);\n }\n /**\n * Calculate the points for a quadratic bezier curve and then draws it.\n * Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier-curve-in-c\n * @param cpX - Control point x\n * @param cpY - Control point y\n * @param toX - Destination point x\n * @param toY - Destination point y\n * @returns - This Graphics object. Good for chaining method calls\n */\n quadraticCurveTo(cpX, cpY, toX, toY) {\n this._initCurve();\n const points = this.currentPath.points;\n return points.length === 0 && this.moveTo(0, 0), QuadraticUtils.curveTo(cpX, cpY, toX, toY, points), this;\n }\n /**\n * Calculate the points for a bezier curve and then draws it.\n * @param cpX - Control point x\n * @param cpY - Control point y\n * @param cpX2 - Second Control point x\n * @param cpY2 - Second Control point y\n * @param toX - Destination point x\n * @param toY - Destination point y\n * @returns This Graphics object. Good for chaining method calls\n */\n bezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY) {\n return this._initCurve(), BezierUtils.curveTo(cpX, cpY, cpX2, cpY2, toX, toY, this.currentPath.points), this;\n }\n /**\n * The `arcTo` method creates an arc/curve between two tangents on the canvas.\n * The first tangent is from the start point to the first control point,\n * and the second tangent is from the first control point to the second control point.\n * Note that the second control point is not necessarily the end point of the arc.\n *\n * \"borrowed\" from https://code.google.com/p/fxcanvas/ - thanks google!\n * @param x1 - The x-coordinate of the first control point of the arc\n * @param y1 - The y-coordinate of the first control point of the arc\n * @param x2 - The x-coordinate of the second control point of the arc\n * @param y2 - The y-coordinate of the second control point of the arc\n * @param radius - The radius of the arc\n * @returns - This Graphics object. Good for chaining method calls\n */\n arcTo(x1, y1, x2, y2, radius) {\n this._initCurve(x1, y1);\n const points = this.currentPath.points, result = ArcUtils.curveTo(x1, y1, x2, y2, radius, points);\n if (result) {\n const { cx, cy, radius: radius2, startAngle, endAngle, anticlockwise } = result;\n this.arc(cx, cy, radius2, startAngle, endAngle, anticlockwise);\n }\n return this;\n }\n /**\n * The arc method creates an arc/curve (used to create circles, or parts of circles).\n * @param cx - The x-coordinate of the center of the circle\n * @param cy - The y-coordinate of the center of the circle\n * @param radius - The radius of the circle\n * @param startAngle - The starting angle, in radians (0 is at the 3 o'clock position\n * of the arc's circle)\n * @param endAngle - The ending angle, in radians\n * @param anticlockwise - Specifies whether the drawing should be\n * counter-clockwise or clockwise. False is default, and indicates clockwise, while true\n * indicates counter-clockwise.\n * @returns - This Graphics object. Good for chaining method calls\n */\n arc(cx, cy, radius, startAngle, endAngle, anticlockwise = !1) {\n if (startAngle === endAngle)\n return this;\n if (!anticlockwise && endAngle <= startAngle ? endAngle += PI_2 : anticlockwise && startAngle <= endAngle && (startAngle += PI_2), endAngle - startAngle === 0)\n return this;\n const startX = cx + Math.cos(startAngle) * radius, startY = cy + Math.sin(startAngle) * radius, eps = this._geometry.closePointEps;\n let points = this.currentPath ? this.currentPath.points : null;\n if (points) {\n const xDiff = Math.abs(points[points.length - 2] - startX), yDiff = Math.abs(points[points.length - 1] - startY);\n xDiff < eps && yDiff < eps || points.push(startX, startY);\n } else\n this.moveTo(startX, startY), points = this.currentPath.points;\n return ArcUtils.arc(startX, startY, cx, cy, radius, startAngle, endAngle, anticlockwise, points), this;\n }\n /**\n * Specifies a simple one-color fill that subsequent calls to other Graphics methods\n * (such as lineTo() or drawCircle()) use when drawing.\n * @param {PIXI.ColorSource} color - the color of the fill\n * @param alpha - the alpha of the fill, will override the color's alpha\n * @returns - This Graphics object. Suitable for chaining method calls\n */\n beginFill(color = 0, alpha) {\n return this.beginTextureFill({ texture: Texture.WHITE, color, alpha });\n }\n /**\n * Normalize the color input from options for line style or fill\n * @param {PIXI.IFillStyleOptions} options - Fill style object.\n */\n normalizeColor(options) {\n const temp = Color.shared.setValue(options.color ?? 0);\n options.color = temp.toNumber(), options.alpha ?? (options.alpha = temp.alpha);\n }\n /**\n * Begin the texture fill.\n * Note: The wrap mode of the texture is forced to REPEAT on render.\n * @param options - Fill style object.\n * @param {PIXI.Texture} [options.texture=PIXI.Texture.WHITE] - Texture to fill\n * @param {PIXI.ColorSource} [options.color=0xffffff] - Background to fill behind texture\n * @param {number} [options.alpha] - Alpha of fill, overrides the color's alpha\n * @param {PIXI.Matrix} [options.matrix=null] - Transform matrix\n * @returns {PIXI.Graphics} This Graphics object. Good for chaining method calls\n */\n beginTextureFill(options) {\n const defaultOptions = {\n texture: Texture.WHITE,\n color: 16777215,\n matrix: null\n };\n options = Object.assign(defaultOptions, options), this.normalizeColor(options), this.currentPath && this.startPoly();\n const visible = options.alpha > 0;\n return visible ? (options.matrix && (options.matrix = options.matrix.clone(), options.matrix.invert()), Object.assign(this._fillStyle, { visible }, options)) : this._fillStyle.reset(), this;\n }\n /**\n * Applies a fill to the lines and shapes that were added since the last call to the beginFill() method.\n * @returns - This Graphics object. Good for chaining method calls\n */\n endFill() {\n return this.finishPoly(), this._fillStyle.reset(), this;\n }\n /**\n * Draws a rectangle shape.\n * @param x - The X coord of the top-left of the rectangle\n * @param y - The Y coord of the top-left of the rectangle\n * @param width - The width of the rectangle\n * @param height - The height of the rectangle\n * @returns - This Graphics object. Good for chaining method calls\n */\n drawRect(x, y, width, height) {\n return this.drawShape(new Rectangle(x, y, width, height));\n }\n /**\n * Draw a rectangle shape with rounded/beveled corners.\n * @param x - The X coord of the top-left of the rectangle\n * @param y - The Y coord of the top-left of the rectangle\n * @param width - The width of the rectangle\n * @param height - The height of the rectangle\n * @param radius - Radius of the rectangle corners\n * @returns - This Graphics object. Good for chaining method calls\n */\n drawRoundedRect(x, y, width, height, radius) {\n return this.drawShape(new RoundedRectangle(x, y, width, height, radius));\n }\n /**\n * Draws a circle.\n * @param x - The X coordinate of the center of the circle\n * @param y - The Y coordinate of the center of the circle\n * @param radius - The radius of the circle\n * @returns - This Graphics object. Good for chaining method calls\n */\n drawCircle(x, y, radius) {\n return this.drawShape(new Circle(x, y, radius));\n }\n /**\n * Draws an ellipse.\n * @param x - The X coordinate of the center of the ellipse\n * @param y - The Y coordinate of the center of the ellipse\n * @param width - The half width of the ellipse\n * @param height - The half height of the ellipse\n * @returns - This Graphics object. Good for chaining method calls\n */\n drawEllipse(x, y, width, height) {\n return this.drawShape(new Ellipse(x, y, width, height));\n }\n /**\n * Draws a polygon using the given path.\n * @param {number[]|PIXI.IPointData[]|PIXI.Polygon} path - The path data used to construct the polygon.\n * @returns - This Graphics object. Good for chaining method calls\n */\n drawPolygon(...path) {\n let points, closeStroke = !0;\n const poly = path[0];\n poly.points ? (closeStroke = poly.closeStroke, points = poly.points) : Array.isArray(path[0]) ? points = path[0] : points = path;\n const shape = new Polygon(points);\n return shape.closeStroke = closeStroke, this.drawShape(shape), this;\n }\n /**\n * Draw any shape.\n * @param {PIXI.Circle|PIXI.Ellipse|PIXI.Polygon|PIXI.Rectangle|PIXI.RoundedRectangle} shape - Shape to draw\n * @returns - This Graphics object. Good for chaining method calls\n */\n drawShape(shape) {\n return this._holeMode ? this._geometry.drawHole(shape, this._matrix) : this._geometry.drawShape(\n shape,\n this._fillStyle.clone(),\n this._lineStyle.clone(),\n this._matrix\n ), this;\n }\n /**\n * Clears the graphics that were drawn to this Graphics object, and resets fill and line style settings.\n * @returns - This Graphics object. Good for chaining method calls\n */\n clear() {\n return this._geometry.clear(), this._lineStyle.reset(), this._fillStyle.reset(), this._boundsID++, this._matrix = null, this._holeMode = !1, this.currentPath = null, this;\n }\n /**\n * True if graphics consists of one rectangle, and thus, can be drawn like a Sprite and\n * masked with gl.scissor.\n * @returns - True if only 1 rect.\n */\n isFastRect() {\n const data = this._geometry.graphicsData;\n return data.length === 1 && data[0].shape.type === SHAPES.RECT && !data[0].matrix && !data[0].holes.length && !(data[0].lineStyle.visible && data[0].lineStyle.width);\n }\n /**\n * Renders the object using the WebGL renderer\n * @param renderer - The renderer\n */\n _render(renderer) {\n this.finishPoly();\n const geometry = this._geometry;\n geometry.updateBatches(), geometry.batchable ? (this.batchDirty !== geometry.batchDirty && this._populateBatches(), this._renderBatched(renderer)) : (renderer.batch.flush(), this._renderDirect(renderer));\n }\n /** Populating batches for rendering. */\n _populateBatches() {\n const geometry = this._geometry, blendMode = this.blendMode, len = geometry.batches.length;\n this.batchTint = -1, this._transformID = -1, this.batchDirty = geometry.batchDirty, this.batches.length = len, this.vertexData = new Float32Array(geometry.points);\n for (let i = 0; i < len; i++) {\n const gI = geometry.batches[i], color = gI.style.color, vertexData = new Float32Array(\n this.vertexData.buffer,\n gI.attribStart * 4 * 2,\n gI.attribSize * 2\n ), uvs = new Float32Array(\n geometry.uvsFloat32.buffer,\n gI.attribStart * 4 * 2,\n gI.attribSize * 2\n ), indices = new Uint16Array(\n geometry.indicesUint16.buffer,\n gI.start * 2,\n gI.size\n ), batch = {\n vertexData,\n blendMode,\n indices,\n uvs,\n _batchRGB: Color.shared.setValue(color).toRgbArray(),\n _tintRGB: color,\n _texture: gI.style.texture,\n alpha: gI.style.alpha,\n worldAlpha: 1\n };\n this.batches[i] = batch;\n }\n }\n /**\n * Renders the batches using the BathedRenderer plugin\n * @param renderer - The renderer\n */\n _renderBatched(renderer) {\n if (this.batches.length) {\n renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]), this.calculateVertices(), this.calculateTints();\n for (let i = 0, l = this.batches.length; i < l; i++) {\n const batch = this.batches[i];\n batch.worldAlpha = this.worldAlpha * batch.alpha, renderer.plugins[this.pluginName].render(batch);\n }\n }\n }\n /**\n * Renders the graphics direct\n * @param renderer - The renderer\n */\n _renderDirect(renderer) {\n const shader = this._resolveDirectShader(renderer), geometry = this._geometry, worldAlpha = this.worldAlpha, uniforms = shader.uniforms, drawCalls = geometry.drawCalls;\n uniforms.translationMatrix = this.transform.worldTransform, Color.shared.setValue(this._tintColor).premultiply(worldAlpha).toArray(uniforms.tint), renderer.shader.bind(shader), renderer.geometry.bind(geometry, shader), renderer.state.set(this.state);\n for (let i = 0, l = drawCalls.length; i < l; i++)\n this._renderDrawCallDirect(renderer, geometry.drawCalls[i]);\n }\n /**\n * Renders specific DrawCall\n * @param renderer\n * @param drawCall\n */\n _renderDrawCallDirect(renderer, drawCall) {\n const { texArray, type, size, start } = drawCall, groupTextureCount = texArray.count;\n for (let j = 0; j < groupTextureCount; j++)\n renderer.texture.bind(texArray.elements[j], j);\n renderer.geometry.draw(type, size, start);\n }\n /**\n * Resolves shader for direct rendering\n * @param renderer - The renderer\n */\n _resolveDirectShader(renderer) {\n let shader = this.shader;\n const pluginName = this.pluginName;\n if (!shader) {\n if (!DEFAULT_SHADERS[pluginName]) {\n const { maxTextures } = renderer.plugins[pluginName], sampleValues = new Int32Array(maxTextures);\n for (let i = 0; i < maxTextures; i++)\n sampleValues[i] = i;\n const uniforms = {\n tint: new Float32Array([1, 1, 1, 1]),\n translationMatrix: new Matrix(),\n default: UniformGroup.from({ uSamplers: sampleValues }, !0)\n }, program = renderer.plugins[pluginName]._shader.program;\n DEFAULT_SHADERS[pluginName] = new Shader(program, uniforms);\n }\n shader = DEFAULT_SHADERS[pluginName];\n }\n return shader;\n }\n /**\n * Retrieves the bounds of the graphic shape as a rectangle object.\n * @see PIXI.GraphicsGeometry#bounds\n */\n _calculateBounds() {\n this.finishPoly();\n const geometry = this._geometry;\n if (!geometry.graphicsData.length)\n return;\n const { minX, minY, maxX, maxY } = geometry.bounds;\n this._bounds.addFrame(this.transform, minX, minY, maxX, maxY);\n }\n /**\n * Tests if a point is inside this graphics object\n * @param point - the point to test\n * @returns - the result of the test\n */\n containsPoint(point) {\n return this.worldTransform.applyInverse(point, _Graphics2._TEMP_POINT), this._geometry.containsPoint(_Graphics2._TEMP_POINT);\n }\n /** Recalculate the tint by applying tint to batches using Graphics tint. */\n calculateTints() {\n if (this.batchTint !== this.tint) {\n this.batchTint = this._tintColor.toNumber();\n for (let i = 0; i < this.batches.length; i++) {\n const batch = this.batches[i];\n batch._tintRGB = Color.shared.setValue(this._tintColor).multiply(batch._batchRGB).toLittleEndianNumber();\n }\n }\n }\n /** If there's a transform update or a change to the shape of the geometry, recalculate the vertices. */\n calculateVertices() {\n const wtID = this.transform._worldID;\n if (this._transformID === wtID)\n return;\n this._transformID = wtID;\n const wt = this.transform.worldTransform, a = wt.a, b = wt.b, c = wt.c, d = wt.d, tx = wt.tx, ty = wt.ty, data = this._geometry.points, vertexData = this.vertexData;\n let count = 0;\n for (let i = 0; i < data.length; i += 2) {\n const x = data[i], y = data[i + 1];\n vertexData[count++] = a * x + c * y + tx, vertexData[count++] = d * y + b * x + ty;\n }\n }\n /**\n * Closes the current path.\n * @returns - Returns itself.\n */\n closePath() {\n const currentPath = this.currentPath;\n return currentPath && (currentPath.closeStroke = !0, this.finishPoly()), this;\n }\n /**\n * Apply a matrix to the positional data.\n * @param matrix - Matrix to use for transform current shape.\n * @returns - Returns itself.\n */\n setMatrix(matrix) {\n return this._matrix = matrix, this;\n }\n /**\n * Begin adding holes to the last draw shape\n * IMPORTANT: holes must be fully inside a shape to work\n * Also weirdness ensues if holes overlap!\n * Ellipses, Circles, Rectangles and Rounded Rectangles cannot be holes or host for holes in CanvasRenderer,\n * please use `moveTo` `lineTo`, `quadraticCurveTo` if you rely on pixi-legacy bundle.\n * @returns - Returns itself.\n */\n beginHole() {\n return this.finishPoly(), this._holeMode = !0, this;\n }\n /**\n * End adding holes to the last draw shape.\n * @returns - Returns itself.\n */\n endHole() {\n return this.finishPoly(), this._holeMode = !1, this;\n }\n /**\n * Destroys the Graphics object.\n * @param options - Options parameter. A boolean will act as if all\n * options have been set to that value\n * @param {boolean} [options.children=false] - if set to true, all the children will have\n * their destroy method called as well. 'options' will be passed on to those calls.\n * @param {boolean} [options.texture=false] - Only used for child Sprites if options.children is set to true\n * Should it destroy the texture of the child sprite\n * @param {boolean} [options.baseTexture=false] - Only used for child Sprites if options.children is set to true\n * Should it destroy the base texture of the child sprite\n */\n destroy(options) {\n this._geometry.refCount--, this._geometry.refCount === 0 && this._geometry.dispose(), this._matrix = null, this.currentPath = null, this._lineStyle.destroy(), this._lineStyle = null, this._fillStyle.destroy(), this._fillStyle = null, this._geometry = null, this.shader = null, this.vertexData = null, this.batches.length = 0, this.batches = null, super.destroy(options);\n }\n};\n_Graphics.curves = curves, /**\n* Temporary point to use for containsPoint.\n* @private\n*/\n_Graphics._TEMP_POINT = new Point();\nlet Graphics = _Graphics;\nexport {\n Graphics\n};\n//# sourceMappingURL=Graphics.mjs.map\n","class MeshBatchUvs {\n /**\n * @param uvBuffer - Buffer with normalized uv's\n * @param uvMatrix - Material UV matrix\n */\n constructor(uvBuffer, uvMatrix) {\n this.uvBuffer = uvBuffer, this.uvMatrix = uvMatrix, this.data = null, this._bufferUpdateId = -1, this._textureUpdateId = -1, this._updateID = 0;\n }\n /**\n * Updates\n * @param forceUpdate - force the update\n */\n update(forceUpdate) {\n if (!forceUpdate && this._bufferUpdateId === this.uvBuffer._updateID && this._textureUpdateId === this.uvMatrix._updateID)\n return;\n this._bufferUpdateId = this.uvBuffer._updateID, this._textureUpdateId = this.uvMatrix._updateID;\n const data = this.uvBuffer.data;\n (!this.data || this.data.length !== data.length) && (this.data = new Float32Array(data.length)), this.uvMatrix.multiplyUvs(data, this.data), this._updateID++;\n }\n}\nexport {\n MeshBatchUvs\n};\n//# sourceMappingURL=MeshBatchUvs.mjs.map\n","import { Point, Polygon, State, settings, DRAW_MODES } from \"@pixi/core\";\nimport { Container } from \"@pixi/display\";\nimport { MeshBatchUvs } from \"./MeshBatchUvs.mjs\";\nconst tempPoint = new Point(), tempPolygon = new Polygon(), _Mesh = class _Mesh2 extends Container {\n /**\n * @param geometry - The geometry the mesh will use.\n * @param {PIXI.MeshMaterial} shader - The shader the mesh will use.\n * @param state - The state that the WebGL context is required to be in to render the mesh\n * if no state is provided, uses {@link PIXI.State.for2d} to create a 2D state for PixiJS.\n * @param drawMode - The drawMode, can be any of the {@link PIXI.DRAW_MODES} constants.\n */\n constructor(geometry, shader, state, drawMode = DRAW_MODES.TRIANGLES) {\n super(), this.geometry = geometry, this.shader = shader, this.state = state || State.for2d(), this.drawMode = drawMode, this.start = 0, this.size = 0, this.uvs = null, this.indices = null, this.vertexData = new Float32Array(1), this.vertexDirty = -1, this._transformID = -1, this._roundPixels = settings.ROUND_PIXELS, this.batchUvs = null;\n }\n /**\n * Includes vertex positions, face indices, normals, colors, UVs, and\n * custom attributes within buffers, reducing the cost of passing all\n * this data to the GPU. Can be shared between multiple Mesh objects.\n */\n get geometry() {\n return this._geometry;\n }\n set geometry(value) {\n this._geometry !== value && (this._geometry && (this._geometry.refCount--, this._geometry.refCount === 0 && this._geometry.dispose()), this._geometry = value, this._geometry && this._geometry.refCount++, this.vertexDirty = -1);\n }\n /**\n * To change mesh uv's, change its uvBuffer data and increment its _updateID.\n * @readonly\n */\n get uvBuffer() {\n return this.geometry.buffers[1];\n }\n /**\n * To change mesh vertices, change its uvBuffer data and increment its _updateID.\n * Incrementing _updateID is optional because most of Mesh objects do it anyway.\n * @readonly\n */\n get verticesBuffer() {\n return this.geometry.buffers[0];\n }\n /** Alias for {@link PIXI.Mesh#shader}. */\n set material(value) {\n this.shader = value;\n }\n get material() {\n return this.shader;\n }\n /**\n * The blend mode to be applied to the Mesh. Apply a value of\n * `PIXI.BLEND_MODES.NORMAL` to reset the blend mode.\n * @default PIXI.BLEND_MODES.NORMAL;\n */\n set blendMode(value) {\n this.state.blendMode = value;\n }\n get blendMode() {\n return this.state.blendMode;\n }\n /**\n * If true PixiJS will Math.floor() x/y values when rendering, stopping pixel interpolation.\n * Advantages can include sharper image quality (like text) and faster rendering on canvas.\n * The main disadvantage is movement of objects may appear less smooth.\n * To set the global default, change {@link PIXI.settings.ROUND_PIXELS}\n * @default false\n */\n set roundPixels(value) {\n this._roundPixels !== value && (this._transformID = -1), this._roundPixels = value;\n }\n get roundPixels() {\n return this._roundPixels;\n }\n /**\n * The multiply tint applied to the Mesh. This is a hex value. A value of\n * `0xFFFFFF` will remove any tint effect.\n *\n * Null for non-MeshMaterial shaders\n * @default 0xFFFFFF\n */\n get tint() {\n return \"tint\" in this.shader ? this.shader.tint : null;\n }\n set tint(value) {\n this.shader.tint = value;\n }\n /**\n * The tint color as a RGB integer\n * @ignore\n */\n get tintValue() {\n return this.shader.tintValue;\n }\n /** The texture that the Mesh uses. Null for non-MeshMaterial shaders */\n get texture() {\n return \"texture\" in this.shader ? this.shader.texture : null;\n }\n set texture(value) {\n this.shader.texture = value;\n }\n /**\n * Standard renderer draw.\n * @param renderer - Instance to renderer.\n */\n _render(renderer) {\n const vertices = this.geometry.buffers[0].data;\n this.shader.batchable && this.drawMode === DRAW_MODES.TRIANGLES && vertices.length < _Mesh2.BATCHABLE_SIZE * 2 ? this._renderToBatch(renderer) : this._renderDefault(renderer);\n }\n /**\n * Standard non-batching way of rendering.\n * @param renderer - Instance to renderer.\n */\n _renderDefault(renderer) {\n const shader = this.shader;\n shader.alpha = this.worldAlpha, shader.update && shader.update(), renderer.batch.flush(), shader.uniforms.translationMatrix = this.transform.worldTransform.toArray(!0), renderer.shader.bind(shader), renderer.state.set(this.state), renderer.geometry.bind(this.geometry, shader), renderer.geometry.draw(this.drawMode, this.size, this.start, this.geometry.instanceCount);\n }\n /**\n * Rendering by using the Batch system.\n * @param renderer - Instance to renderer.\n */\n _renderToBatch(renderer) {\n const geometry = this.geometry, shader = this.shader;\n shader.uvMatrix && (shader.uvMatrix.update(), this.calculateUvs()), this.calculateVertices(), this.indices = geometry.indexBuffer.data, this._tintRGB = shader._tintRGB, this._texture = shader.texture;\n const pluginName = this.material.pluginName;\n renderer.batch.setObjectRenderer(renderer.plugins[pluginName]), renderer.plugins[pluginName].render(this);\n }\n /** Updates vertexData field based on transform and vertices. */\n calculateVertices() {\n const verticesBuffer = this.geometry.buffers[0], vertices = verticesBuffer.data, vertexDirtyId = verticesBuffer._updateID;\n if (vertexDirtyId === this.vertexDirty && this._transformID === this.transform._worldID)\n return;\n this._transformID = this.transform._worldID, this.vertexData.length !== vertices.length && (this.vertexData = new Float32Array(vertices.length));\n const wt = this.transform.worldTransform, a = wt.a, b = wt.b, c = wt.c, d = wt.d, tx = wt.tx, ty = wt.ty, vertexData = this.vertexData;\n for (let i = 0; i < vertexData.length / 2; i++) {\n const x = vertices[i * 2], y = vertices[i * 2 + 1];\n vertexData[i * 2] = a * x + c * y + tx, vertexData[i * 2 + 1] = b * x + d * y + ty;\n }\n if (this._roundPixels) {\n const resolution = settings.RESOLUTION;\n for (let i = 0; i < vertexData.length; ++i)\n vertexData[i] = Math.round(vertexData[i] * resolution) / resolution;\n }\n this.vertexDirty = vertexDirtyId;\n }\n /** Updates uv field based on from geometry uv's or batchUvs. */\n calculateUvs() {\n const geomUvs = this.geometry.buffers[1], shader = this.shader;\n shader.uvMatrix.isSimple ? this.uvs = geomUvs.data : (this.batchUvs || (this.batchUvs = new MeshBatchUvs(geomUvs, shader.uvMatrix)), this.batchUvs.update(), this.uvs = this.batchUvs.data);\n }\n /**\n * Updates the bounds of the mesh as a rectangle. The bounds calculation takes the worldTransform into account.\n * there must be a aVertexPosition attribute present in the geometry for bounds to be calculated correctly.\n */\n _calculateBounds() {\n this.calculateVertices(), this._bounds.addVertexData(this.vertexData, 0, this.vertexData.length);\n }\n /**\n * Tests if a point is inside this mesh. Works only for PIXI.DRAW_MODES.TRIANGLES.\n * @param point - The point to test.\n * @returns - The result of the test.\n */\n containsPoint(point) {\n if (!this.getBounds().contains(point.x, point.y))\n return !1;\n this.worldTransform.applyInverse(point, tempPoint);\n const vertices = this.geometry.getBuffer(\"aVertexPosition\").data, points = tempPolygon.points, indices = this.geometry.getIndex().data, len = indices.length, step = this.drawMode === 4 ? 3 : 1;\n for (let i = 0; i + 2 < len; i += step) {\n const ind0 = indices[i] * 2, ind1 = indices[i + 1] * 2, ind2 = indices[i + 2] * 2;\n if (points[0] = vertices[ind0], points[1] = vertices[ind0 + 1], points[2] = vertices[ind1], points[3] = vertices[ind1 + 1], points[4] = vertices[ind2], points[5] = vertices[ind2 + 1], tempPolygon.contains(tempPoint.x, tempPoint.y))\n return !0;\n }\n return !1;\n }\n destroy(options) {\n super.destroy(options), this._cachedTexture && (this._cachedTexture.destroy(), this._cachedTexture = null), this.geometry = null, this.shader = null, this.state = null, this.uvs = null, this.indices = null, this.vertexData = null;\n }\n};\n_Mesh.BATCHABLE_SIZE = 100;\nlet Mesh = _Mesh;\nexport {\n Mesh\n};\n//# sourceMappingURL=Mesh.mjs.map\n","import { Geometry, Buffer, TYPES } from \"@pixi/core\";\nclass MeshGeometry extends Geometry {\n /**\n * @param {Float32Array|number[]} [vertices] - Positional data on geometry.\n * @param {Float32Array|number[]} [uvs] - Texture UVs.\n * @param {Uint16Array|number[]} [index] - IndexBuffer\n */\n constructor(vertices, uvs, index) {\n super();\n const verticesBuffer = new Buffer(vertices), uvsBuffer = new Buffer(uvs, !0), indexBuffer = new Buffer(index, !0, !0);\n this.addAttribute(\"aVertexPosition\", verticesBuffer, 2, !1, TYPES.FLOAT).addAttribute(\"aTextureCoord\", uvsBuffer, 2, !1, TYPES.FLOAT).addIndex(indexBuffer), this._updateId = -1;\n }\n /**\n * If the vertex position is updated.\n * @readonly\n * @private\n */\n get vertexDirtyId() {\n return this.buffers[0]._updateID;\n }\n}\nexport {\n MeshGeometry\n};\n//# sourceMappingURL=MeshGeometry.mjs.map\n","var fragment = `varying vec2 vTextureCoord;\nuniform vec4 uColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\n}\n`;\nexport {\n fragment as default\n};\n//# sourceMappingURL=mesh.frag.mjs.map\n","var vertex = `attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTextureMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\n}\n`;\nexport {\n vertex as default\n};\n//# sourceMappingURL=mesh.vert.mjs.map\n","import { Shader, Matrix, Program, TextureMatrix, Color } from \"@pixi/core\";\nimport fragment from \"./shader/mesh.frag.mjs\";\nimport vertex from \"./shader/mesh.vert.mjs\";\nclass MeshMaterial extends Shader {\n /**\n * @param uSampler - Texture that material uses to render.\n * @param options - Additional options\n * @param {number} [options.alpha=1] - Default alpha.\n * @param {PIXI.ColorSource} [options.tint=0xFFFFFF] - Default tint.\n * @param {string} [options.pluginName='batch'] - Renderer plugin for batching.\n * @param {PIXI.Program} [options.program=0xFFFFFF] - Custom program.\n * @param {object} [options.uniforms] - Custom uniforms.\n */\n constructor(uSampler, options) {\n const uniforms = {\n uSampler,\n alpha: 1,\n uTextureMatrix: Matrix.IDENTITY,\n uColor: new Float32Array([1, 1, 1, 1])\n };\n options = Object.assign({\n tint: 16777215,\n alpha: 1,\n pluginName: \"batch\"\n }, options), options.uniforms && Object.assign(uniforms, options.uniforms), super(options.program || Program.from(vertex, fragment), uniforms), this._colorDirty = !1, this.uvMatrix = new TextureMatrix(uSampler), this.batchable = options.program === void 0, this.pluginName = options.pluginName, this._tintColor = new Color(options.tint), this._tintRGB = this._tintColor.toLittleEndianNumber(), this._colorDirty = !0, this.alpha = options.alpha;\n }\n /** Reference to the texture being rendered. */\n get texture() {\n return this.uniforms.uSampler;\n }\n set texture(value) {\n this.uniforms.uSampler !== value && (!this.uniforms.uSampler.baseTexture.alphaMode != !value.baseTexture.alphaMode && (this._colorDirty = !0), this.uniforms.uSampler = value, this.uvMatrix.texture = value);\n }\n /**\n * This gets automatically set by the object using this.\n * @default 1\n */\n set alpha(value) {\n value !== this._alpha && (this._alpha = value, this._colorDirty = !0);\n }\n get alpha() {\n return this._alpha;\n }\n /**\n * Multiply tint for the material.\n * @default 0xFFFFFF\n */\n set tint(value) {\n value !== this.tint && (this._tintColor.setValue(value), this._tintRGB = this._tintColor.toLittleEndianNumber(), this._colorDirty = !0);\n }\n get tint() {\n return this._tintColor.value;\n }\n /**\n * Get the internal number from tint color\n * @ignore\n */\n get tintValue() {\n return this._tintColor.toNumber();\n }\n /** Gets called automatically by the Mesh. Intended to be overridden for custom {@link PIXI.MeshMaterial} objects. */\n update() {\n if (this._colorDirty) {\n this._colorDirty = !1;\n const applyToChannels = this.texture.baseTexture.alphaMode;\n Color.shared.setValue(this._tintColor).premultiply(this._alpha, applyToChannels).toArray(this.uniforms.uColor);\n }\n this.uvMatrix.update() && (this.uniforms.uTextureMatrix = this.uvMatrix.mapCoord);\n }\n}\nexport {\n MeshMaterial\n};\n//# sourceMappingURL=MeshMaterial.mjs.map\n","import { Geometry, TYPES, Buffer, utils } from \"@pixi/core\";\nclass ParticleBuffer {\n /**\n * @param {object} properties - The properties to upload.\n * @param {boolean[]} dynamicPropertyFlags - Flags for which properties are dynamic.\n * @param {number} size - The size of the batch.\n */\n constructor(properties, dynamicPropertyFlags, size) {\n this.geometry = new Geometry(), this.indexBuffer = null, this.size = size, this.dynamicProperties = [], this.staticProperties = [];\n for (let i = 0; i < properties.length; ++i) {\n let property = properties[i];\n property = {\n attributeName: property.attributeName,\n size: property.size,\n uploadFunction: property.uploadFunction,\n type: property.type || TYPES.FLOAT,\n offset: property.offset\n }, dynamicPropertyFlags[i] ? this.dynamicProperties.push(property) : this.staticProperties.push(property);\n }\n this.staticStride = 0, this.staticBuffer = null, this.staticData = null, this.staticDataUint32 = null, this.dynamicStride = 0, this.dynamicBuffer = null, this.dynamicData = null, this.dynamicDataUint32 = null, this._updateID = 0, this.initBuffers();\n }\n /** Sets up the renderer context and necessary buffers. */\n initBuffers() {\n const geometry = this.geometry;\n let dynamicOffset = 0;\n this.indexBuffer = new Buffer(utils.createIndicesForQuads(this.size), !0, !0), geometry.addIndex(this.indexBuffer), this.dynamicStride = 0;\n for (let i = 0; i < this.dynamicProperties.length; ++i) {\n const property = this.dynamicProperties[i];\n property.offset = dynamicOffset, dynamicOffset += property.size, this.dynamicStride += property.size;\n }\n const dynBuffer = new ArrayBuffer(this.size * this.dynamicStride * 4 * 4);\n this.dynamicData = new Float32Array(dynBuffer), this.dynamicDataUint32 = new Uint32Array(dynBuffer), this.dynamicBuffer = new Buffer(this.dynamicData, !1, !1);\n let staticOffset = 0;\n this.staticStride = 0;\n for (let i = 0; i < this.staticProperties.length; ++i) {\n const property = this.staticProperties[i];\n property.offset = staticOffset, staticOffset += property.size, this.staticStride += property.size;\n }\n const statBuffer = new ArrayBuffer(this.size * this.staticStride * 4 * 4);\n this.staticData = new Float32Array(statBuffer), this.staticDataUint32 = new Uint32Array(statBuffer), this.staticBuffer = new Buffer(this.staticData, !0, !1);\n for (let i = 0; i < this.dynamicProperties.length; ++i) {\n const property = this.dynamicProperties[i];\n geometry.addAttribute(\n property.attributeName,\n this.dynamicBuffer,\n 0,\n property.type === TYPES.UNSIGNED_BYTE,\n property.type,\n this.dynamicStride * 4,\n property.offset * 4\n );\n }\n for (let i = 0; i < this.staticProperties.length; ++i) {\n const property = this.staticProperties[i];\n geometry.addAttribute(\n property.attributeName,\n this.staticBuffer,\n 0,\n property.type === TYPES.UNSIGNED_BYTE,\n property.type,\n this.staticStride * 4,\n property.offset * 4\n );\n }\n }\n /**\n * Uploads the dynamic properties.\n * @param children - The children to upload.\n * @param startIndex - The index to start at.\n * @param amount - The number to upload.\n */\n uploadDynamic(children, startIndex, amount) {\n for (let i = 0; i < this.dynamicProperties.length; i++) {\n const property = this.dynamicProperties[i];\n property.uploadFunction(\n children,\n startIndex,\n amount,\n property.type === TYPES.UNSIGNED_BYTE ? this.dynamicDataUint32 : this.dynamicData,\n this.dynamicStride,\n property.offset\n );\n }\n this.dynamicBuffer._updateID++;\n }\n /**\n * Uploads the static properties.\n * @param children - The children to upload.\n * @param startIndex - The index to start at.\n * @param amount - The number to upload.\n */\n uploadStatic(children, startIndex, amount) {\n for (let i = 0; i < this.staticProperties.length; i++) {\n const property = this.staticProperties[i];\n property.uploadFunction(\n children,\n startIndex,\n amount,\n property.type === TYPES.UNSIGNED_BYTE ? this.staticDataUint32 : this.staticData,\n this.staticStride,\n property.offset\n );\n }\n this.staticBuffer._updateID++;\n }\n /** Destroys the ParticleBuffer. */\n destroy() {\n this.indexBuffer = null, this.dynamicProperties = null, this.dynamicBuffer = null, this.dynamicData = null, this.dynamicDataUint32 = null, this.staticProperties = null, this.staticBuffer = null, this.staticData = null, this.staticDataUint32 = null, this.geometry.destroy();\n }\n}\nexport {\n ParticleBuffer\n};\n//# sourceMappingURL=ParticleBuffer.mjs.map\n","var fragment = `varying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n vec4 color = texture2D(uSampler, vTextureCoord) * vColor;\n gl_FragColor = color;\n}`;\nexport {\n fragment as default\n};\n//# sourceMappingURL=particles.frag.mjs.map\n","var vertex = `attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nattribute vec2 aPositionCoord;\nattribute float aRotation;\n\nuniform mat3 translationMatrix;\nuniform vec4 uColor;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nvoid main(void){\n float x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);\n float y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);\n\n vec2 v = vec2(x, y);\n v = v + aPositionCoord;\n\n gl_Position = vec4((translationMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = aTextureCoord;\n vColor = aColor * uColor;\n}\n`;\nexport {\n vertex as default\n};\n//# sourceMappingURL=particles.vert.mjs.map\n","import { ObjectRenderer, Matrix, TYPES, Shader, State, utils, Color, ExtensionType, extensions } from \"@pixi/core\";\nimport { ParticleBuffer } from \"./ParticleBuffer.mjs\";\nimport fragment from \"./particles.frag.mjs\";\nimport vertex from \"./particles.vert.mjs\";\nclass ParticleRenderer extends ObjectRenderer {\n /**\n * @param renderer - The renderer this sprite batch works for.\n */\n constructor(renderer) {\n super(renderer), this.shader = null, this.properties = null, this.tempMatrix = new Matrix(), this.properties = [\n // verticesData\n {\n attributeName: \"aVertexPosition\",\n size: 2,\n uploadFunction: this.uploadVertices,\n offset: 0\n },\n // positionData\n {\n attributeName: \"aPositionCoord\",\n size: 2,\n uploadFunction: this.uploadPosition,\n offset: 0\n },\n // rotationData\n {\n attributeName: \"aRotation\",\n size: 1,\n uploadFunction: this.uploadRotation,\n offset: 0\n },\n // uvsData\n {\n attributeName: \"aTextureCoord\",\n size: 2,\n uploadFunction: this.uploadUvs,\n offset: 0\n },\n // tintData\n {\n attributeName: \"aColor\",\n size: 1,\n type: TYPES.UNSIGNED_BYTE,\n uploadFunction: this.uploadTint,\n offset: 0\n }\n ], this.shader = Shader.from(vertex, fragment, {}), this.state = State.for2d();\n }\n /**\n * Renders the particle container object.\n * @param container - The container to render using this ParticleRenderer.\n */\n render(container) {\n const children = container.children, maxSize = container._maxSize, batchSize = container._batchSize, renderer = this.renderer;\n let totalChildren = children.length;\n if (totalChildren === 0)\n return;\n totalChildren > maxSize && !container.autoResize && (totalChildren = maxSize);\n let buffers = container._buffers;\n buffers || (buffers = container._buffers = this.generateBuffers(container));\n const baseTexture = children[0]._texture.baseTexture, premultiplied = baseTexture.alphaMode > 0;\n this.state.blendMode = utils.correctBlendMode(container.blendMode, premultiplied), renderer.state.set(this.state);\n const gl = renderer.gl, m = container.worldTransform.copyTo(this.tempMatrix);\n m.prepend(renderer.globalUniforms.uniforms.projectionMatrix), this.shader.uniforms.translationMatrix = m.toArray(!0), this.shader.uniforms.uColor = Color.shared.setValue(container.tintRgb).premultiply(container.worldAlpha, premultiplied).toArray(this.shader.uniforms.uColor), this.shader.uniforms.uSampler = baseTexture, this.renderer.shader.bind(this.shader);\n let updateStatic = !1;\n for (let i = 0, j = 0; i < totalChildren; i += batchSize, j += 1) {\n let amount = totalChildren - i;\n amount > batchSize && (amount = batchSize), j >= buffers.length && buffers.push(this._generateOneMoreBuffer(container));\n const buffer = buffers[j];\n buffer.uploadDynamic(children, i, amount);\n const bid = container._bufferUpdateIDs[j] || 0;\n updateStatic = updateStatic || buffer._updateID < bid, updateStatic && (buffer._updateID = container._updateID, buffer.uploadStatic(children, i, amount)), renderer.geometry.bind(buffer.geometry), gl.drawElements(gl.TRIANGLES, amount * 6, gl.UNSIGNED_SHORT, 0);\n }\n }\n /**\n * Creates one particle buffer for each child in the container we want to render and updates internal properties.\n * @param container - The container to render using this ParticleRenderer\n * @returns - The buffers\n */\n generateBuffers(container) {\n const buffers = [], size = container._maxSize, batchSize = container._batchSize, dynamicPropertyFlags = container._properties;\n for (let i = 0; i < size; i += batchSize)\n buffers.push(new ParticleBuffer(this.properties, dynamicPropertyFlags, batchSize));\n return buffers;\n }\n /**\n * Creates one more particle buffer, because container has autoResize feature.\n * @param container - The container to render using this ParticleRenderer\n * @returns - The generated buffer\n */\n _generateOneMoreBuffer(container) {\n const batchSize = container._batchSize, dynamicPropertyFlags = container._properties;\n return new ParticleBuffer(this.properties, dynamicPropertyFlags, batchSize);\n }\n /**\n * Uploads the vertices.\n * @param children - the array of sprites to render\n * @param startIndex - the index to start from in the children array\n * @param amount - the amount of children that will have their vertices uploaded\n * @param array - The vertices to upload.\n * @param stride - Stride to use for iteration.\n * @param offset - Offset to start at.\n */\n uploadVertices(children, startIndex, amount, array, stride, offset) {\n let w0 = 0, w1 = 0, h0 = 0, h1 = 0;\n for (let i = 0; i < amount; ++i) {\n const sprite = children[startIndex + i], texture = sprite._texture, sx = sprite.scale.x, sy = sprite.scale.y, trim = texture.trim, orig = texture.orig;\n trim ? (w1 = trim.x - sprite.anchor.x * orig.width, w0 = w1 + trim.width, h1 = trim.y - sprite.anchor.y * orig.height, h0 = h1 + trim.height) : (w0 = orig.width * (1 - sprite.anchor.x), w1 = orig.width * -sprite.anchor.x, h0 = orig.height * (1 - sprite.anchor.y), h1 = orig.height * -sprite.anchor.y), array[offset] = w1 * sx, array[offset + 1] = h1 * sy, array[offset + stride] = w0 * sx, array[offset + stride + 1] = h1 * sy, array[offset + stride * 2] = w0 * sx, array[offset + stride * 2 + 1] = h0 * sy, array[offset + stride * 3] = w1 * sx, array[offset + stride * 3 + 1] = h0 * sy, offset += stride * 4;\n }\n }\n /**\n * Uploads the position.\n * @param children - the array of sprites to render\n * @param startIndex - the index to start from in the children array\n * @param amount - the amount of children that will have their positions uploaded\n * @param array - The vertices to upload.\n * @param stride - Stride to use for iteration.\n * @param offset - Offset to start at.\n */\n uploadPosition(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; i++) {\n const spritePosition = children[startIndex + i].position;\n array[offset] = spritePosition.x, array[offset + 1] = spritePosition.y, array[offset + stride] = spritePosition.x, array[offset + stride + 1] = spritePosition.y, array[offset + stride * 2] = spritePosition.x, array[offset + stride * 2 + 1] = spritePosition.y, array[offset + stride * 3] = spritePosition.x, array[offset + stride * 3 + 1] = spritePosition.y, offset += stride * 4;\n }\n }\n /**\n * Uploads the rotation.\n * @param children - the array of sprites to render\n * @param startIndex - the index to start from in the children array\n * @param amount - the amount of children that will have their rotation uploaded\n * @param array - The vertices to upload.\n * @param stride - Stride to use for iteration.\n * @param offset - Offset to start at.\n */\n uploadRotation(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; i++) {\n const spriteRotation = children[startIndex + i].rotation;\n array[offset] = spriteRotation, array[offset + stride] = spriteRotation, array[offset + stride * 2] = spriteRotation, array[offset + stride * 3] = spriteRotation, offset += stride * 4;\n }\n }\n /**\n * Uploads the UVs.\n * @param children - the array of sprites to render\n * @param startIndex - the index to start from in the children array\n * @param amount - the amount of children that will have their rotation uploaded\n * @param array - The vertices to upload.\n * @param stride - Stride to use for iteration.\n * @param offset - Offset to start at.\n */\n uploadUvs(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; ++i) {\n const textureUvs = children[startIndex + i]._texture._uvs;\n textureUvs ? (array[offset] = textureUvs.x0, array[offset + 1] = textureUvs.y0, array[offset + stride] = textureUvs.x1, array[offset + stride + 1] = textureUvs.y1, array[offset + stride * 2] = textureUvs.x2, array[offset + stride * 2 + 1] = textureUvs.y2, array[offset + stride * 3] = textureUvs.x3, array[offset + stride * 3 + 1] = textureUvs.y3, offset += stride * 4) : (array[offset] = 0, array[offset + 1] = 0, array[offset + stride] = 0, array[offset + stride + 1] = 0, array[offset + stride * 2] = 0, array[offset + stride * 2 + 1] = 0, array[offset + stride * 3] = 0, array[offset + stride * 3 + 1] = 0, offset += stride * 4);\n }\n }\n /**\n * Uploads the tint.\n * @param children - the array of sprites to render\n * @param startIndex - the index to start from in the children array\n * @param amount - the amount of children that will have their rotation uploaded\n * @param array - The vertices to upload.\n * @param stride - Stride to use for iteration.\n * @param offset - Offset to start at.\n */\n uploadTint(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; ++i) {\n const sprite = children[startIndex + i], result = Color.shared.setValue(sprite._tintRGB).toPremultiplied(sprite.alpha, sprite.texture.baseTexture.alphaMode > 0);\n array[offset] = result, array[offset + stride] = result, array[offset + stride * 2] = result, array[offset + stride * 3] = result, offset += stride * 4;\n }\n }\n /** Destroys the ParticleRenderer. */\n destroy() {\n super.destroy(), this.shader && (this.shader.destroy(), this.shader = null), this.tempMatrix = null;\n }\n}\nParticleRenderer.extension = {\n name: \"particle\",\n type: ExtensionType.RendererPlugin\n};\nextensions.add(ParticleRenderer);\nexport {\n ParticleRenderer\n};\n//# sourceMappingURL=ParticleRenderer.mjs.map\n","var TEXT_GRADIENT = /* @__PURE__ */ ((TEXT_GRADIENT2) => (TEXT_GRADIENT2[TEXT_GRADIENT2.LINEAR_VERTICAL = 0] = \"LINEAR_VERTICAL\", TEXT_GRADIENT2[TEXT_GRADIENT2.LINEAR_HORIZONTAL = 1] = \"LINEAR_HORIZONTAL\", TEXT_GRADIENT2))(TEXT_GRADIENT || {});\nexport {\n TEXT_GRADIENT\n};\n//# sourceMappingURL=const.mjs.map\n","import { settings } from \"@pixi/core\";\nconst contextSettings = {\n // TextMetrics requires getImageData readback for measuring fonts.\n willReadFrequently: !0\n}, _TextMetrics = class _TextMetrics2 {\n /**\n * Checking that we can use modern canvas 2D API.\n *\n * Note: This is an unstable API, Chrome < 94 use `textLetterSpacing`, later versions use `letterSpacing`.\n * @see PIXI.TextMetrics.experimentalLetterSpacing\n * @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/letterSpacing\n * @see https://developer.chrome.com/origintrials/#/view_trial/3585991203293757441\n */\n static get experimentalLetterSpacingSupported() {\n let result = _TextMetrics2._experimentalLetterSpacingSupported;\n if (result !== void 0) {\n const proto = settings.ADAPTER.getCanvasRenderingContext2D().prototype;\n result = _TextMetrics2._experimentalLetterSpacingSupported = \"letterSpacing\" in proto || \"textLetterSpacing\" in proto;\n }\n return result;\n }\n /**\n * @param text - the text that was measured\n * @param style - the style that was measured\n * @param width - the measured width of the text\n * @param height - the measured height of the text\n * @param lines - an array of the lines of text broken by new lines and wrapping if specified in style\n * @param lineWidths - an array of the line widths for each line matched to `lines`\n * @param lineHeight - the measured line height for this style\n * @param maxLineWidth - the maximum line width for all measured lines\n * @param {PIXI.IFontMetrics} fontProperties - the font properties object from TextMetrics.measureFont\n */\n constructor(text, style, width, height, lines, lineWidths, lineHeight, maxLineWidth, fontProperties) {\n this.text = text, this.style = style, this.width = width, this.height = height, this.lines = lines, this.lineWidths = lineWidths, this.lineHeight = lineHeight, this.maxLineWidth = maxLineWidth, this.fontProperties = fontProperties;\n }\n /**\n * Measures the supplied string of text and returns a Rectangle.\n * @param text - The text to measure.\n * @param style - The text style to use for measuring\n * @param wordWrap - Override for if word-wrap should be applied to the text.\n * @param canvas - optional specification of the canvas to use for measuring.\n * @returns Measured width and height of the text.\n */\n static measureText(text, style, wordWrap, canvas = _TextMetrics2._canvas) {\n wordWrap = wordWrap ?? style.wordWrap;\n const font = style.toFontString(), fontProperties = _TextMetrics2.measureFont(font);\n fontProperties.fontSize === 0 && (fontProperties.fontSize = style.fontSize, fontProperties.ascent = style.fontSize);\n const context = canvas.getContext(\"2d\", contextSettings);\n context.font = font;\n const lines = (wordWrap ? _TextMetrics2.wordWrap(text, style, canvas) : text).split(/(?:\\r\\n|\\r|\\n)/), lineWidths = new Array(lines.length);\n let maxLineWidth = 0;\n for (let i = 0; i < lines.length; i++) {\n const lineWidth = _TextMetrics2._measureText(lines[i], style.letterSpacing, context);\n lineWidths[i] = lineWidth, maxLineWidth = Math.max(maxLineWidth, lineWidth);\n }\n let width = maxLineWidth + style.strokeThickness;\n style.dropShadow && (width += style.dropShadowDistance);\n const lineHeight = style.lineHeight || fontProperties.fontSize + style.strokeThickness;\n let height = Math.max(lineHeight, fontProperties.fontSize + style.strokeThickness * 2) + style.leading + (lines.length - 1) * (lineHeight + style.leading);\n return style.dropShadow && (height += style.dropShadowDistance), new _TextMetrics2(\n text,\n style,\n width,\n height,\n lines,\n lineWidths,\n lineHeight + style.leading,\n maxLineWidth,\n fontProperties\n );\n }\n static _measureText(text, letterSpacing, context) {\n let useExperimentalLetterSpacing = !1;\n _TextMetrics2.experimentalLetterSpacingSupported && (_TextMetrics2.experimentalLetterSpacing ? (context.letterSpacing = `${letterSpacing}px`, context.textLetterSpacing = `${letterSpacing}px`, useExperimentalLetterSpacing = !0) : (context.letterSpacing = \"0px\", context.textLetterSpacing = \"0px\"));\n let width = context.measureText(text).width;\n return width > 0 && (useExperimentalLetterSpacing ? width -= letterSpacing : width += (_TextMetrics2.graphemeSegmenter(text).length - 1) * letterSpacing), width;\n }\n /**\n * Applies newlines to a string to have it optimally fit into the horizontal\n * bounds set by the Text object's wordWrapWidth property.\n * @param text - String to apply word wrapping to\n * @param style - the style to use when wrapping\n * @param canvas - optional specification of the canvas to use for measuring.\n * @returns New string with new lines applied where required\n */\n static wordWrap(text, style, canvas = _TextMetrics2._canvas) {\n const context = canvas.getContext(\"2d\", contextSettings);\n let width = 0, line = \"\", lines = \"\";\n const cache = /* @__PURE__ */ Object.create(null), { letterSpacing, whiteSpace } = style, collapseSpaces = _TextMetrics2.collapseSpaces(whiteSpace), collapseNewlines = _TextMetrics2.collapseNewlines(whiteSpace);\n let canPrependSpaces = !collapseSpaces;\n const wordWrapWidth = style.wordWrapWidth + letterSpacing, tokens = _TextMetrics2.tokenize(text);\n for (let i = 0; i < tokens.length; i++) {\n let token = tokens[i];\n if (_TextMetrics2.isNewline(token)) {\n if (!collapseNewlines) {\n lines += _TextMetrics2.addLine(line), canPrependSpaces = !collapseSpaces, line = \"\", width = 0;\n continue;\n }\n token = \" \";\n }\n if (collapseSpaces) {\n const currIsBreakingSpace = _TextMetrics2.isBreakingSpace(token), lastIsBreakingSpace = _TextMetrics2.isBreakingSpace(line[line.length - 1]);\n if (currIsBreakingSpace && lastIsBreakingSpace)\n continue;\n }\n const tokenWidth = _TextMetrics2.getFromCache(token, letterSpacing, cache, context);\n if (tokenWidth > wordWrapWidth)\n if (line !== \"\" && (lines += _TextMetrics2.addLine(line), line = \"\", width = 0), _TextMetrics2.canBreakWords(token, style.breakWords)) {\n const characters = _TextMetrics2.wordWrapSplit(token);\n for (let j = 0; j < characters.length; j++) {\n let char = characters[j], lastChar = char, k = 1;\n for (; characters[j + k]; ) {\n const nextChar = characters[j + k];\n if (!_TextMetrics2.canBreakChars(lastChar, nextChar, token, j, style.breakWords))\n char += nextChar;\n else\n break;\n lastChar = nextChar, k++;\n }\n j += k - 1;\n const characterWidth = _TextMetrics2.getFromCache(char, letterSpacing, cache, context);\n characterWidth + width > wordWrapWidth && (lines += _TextMetrics2.addLine(line), canPrependSpaces = !1, line = \"\", width = 0), line += char, width += characterWidth;\n }\n } else {\n line.length > 0 && (lines += _TextMetrics2.addLine(line), line = \"\", width = 0);\n const isLastToken = i === tokens.length - 1;\n lines += _TextMetrics2.addLine(token, !isLastToken), canPrependSpaces = !1, line = \"\", width = 0;\n }\n else\n tokenWidth + width > wordWrapWidth && (canPrependSpaces = !1, lines += _TextMetrics2.addLine(line), line = \"\", width = 0), (line.length > 0 || !_TextMetrics2.isBreakingSpace(token) || canPrependSpaces) && (line += token, width += tokenWidth);\n }\n return lines += _TextMetrics2.addLine(line, !1), lines;\n }\n /**\n * Convienience function for logging each line added during the wordWrap method.\n * @param line - The line of text to add\n * @param newLine - Add new line character to end\n * @returns A formatted line\n */\n static addLine(line, newLine = !0) {\n return line = _TextMetrics2.trimRight(line), line = newLine ? `${line}\n` : line, line;\n }\n /**\n * Gets & sets the widths of calculated characters in a cache object\n * @param key - The key\n * @param letterSpacing - The letter spacing\n * @param cache - The cache\n * @param context - The canvas context\n * @returns The from cache.\n */\n static getFromCache(key, letterSpacing, cache, context) {\n let width = cache[key];\n return typeof width != \"number\" && (width = _TextMetrics2._measureText(key, letterSpacing, context) + letterSpacing, cache[key] = width), width;\n }\n /**\n * Determines whether we should collapse breaking spaces.\n * @param whiteSpace - The TextStyle property whiteSpace\n * @returns Should collapse\n */\n static collapseSpaces(whiteSpace) {\n return whiteSpace === \"normal\" || whiteSpace === \"pre-line\";\n }\n /**\n * Determines whether we should collapse newLine chars.\n * @param whiteSpace - The white space\n * @returns should collapse\n */\n static collapseNewlines(whiteSpace) {\n return whiteSpace === \"normal\";\n }\n /**\n * Trims breaking whitespaces from string.\n * @param text - The text\n * @returns Trimmed string\n */\n static trimRight(text) {\n if (typeof text != \"string\")\n return \"\";\n for (let i = text.length - 1; i >= 0; i--) {\n const char = text[i];\n if (!_TextMetrics2.isBreakingSpace(char))\n break;\n text = text.slice(0, -1);\n }\n return text;\n }\n /**\n * Determines if char is a newline.\n * @param char - The character\n * @returns True if newline, False otherwise.\n */\n static isNewline(char) {\n return typeof char != \"string\" ? !1 : _TextMetrics2._newlines.includes(char.charCodeAt(0));\n }\n /**\n * Determines if char is a breaking whitespace.\n *\n * It allows one to determine whether char should be a breaking whitespace\n * For example certain characters in CJK langs or numbers.\n * It must return a boolean.\n * @param char - The character\n * @param [_nextChar] - The next character\n * @returns True if whitespace, False otherwise.\n */\n static isBreakingSpace(char, _nextChar) {\n return typeof char != \"string\" ? !1 : _TextMetrics2._breakingSpaces.includes(char.charCodeAt(0));\n }\n /**\n * Splits a string into words, breaking-spaces and newLine characters\n * @param text - The text\n * @returns A tokenized array\n */\n static tokenize(text) {\n const tokens = [];\n let token = \"\";\n if (typeof text != \"string\")\n return tokens;\n for (let i = 0; i < text.length; i++) {\n const char = text[i], nextChar = text[i + 1];\n if (_TextMetrics2.isBreakingSpace(char, nextChar) || _TextMetrics2.isNewline(char)) {\n token !== \"\" && (tokens.push(token), token = \"\"), tokens.push(char);\n continue;\n }\n token += char;\n }\n return token !== \"\" && tokens.push(token), tokens;\n }\n /**\n * Overridable helper method used internally by TextMetrics, exposed to allow customizing the class's behavior.\n *\n * It allows one to customise which words should break\n * Examples are if the token is CJK or numbers.\n * It must return a boolean.\n * @param _token - The token\n * @param breakWords - The style attr break words\n * @returns Whether to break word or not\n */\n static canBreakWords(_token, breakWords) {\n return breakWords;\n }\n /**\n * Overridable helper method used internally by TextMetrics, exposed to allow customizing the class's behavior.\n *\n * It allows one to determine whether a pair of characters\n * should be broken by newlines\n * For example certain characters in CJK langs or numbers.\n * It must return a boolean.\n * @param _char - The character\n * @param _nextChar - The next character\n * @param _token - The token/word the characters are from\n * @param _index - The index in the token of the char\n * @param _breakWords - The style attr break words\n * @returns whether to break word or not\n */\n static canBreakChars(_char, _nextChar, _token, _index, _breakWords) {\n return !0;\n }\n /**\n * Overridable helper method used internally by TextMetrics, exposed to allow customizing the class's behavior.\n *\n * It is called when a token (usually a word) has to be split into separate pieces\n * in order to determine the point to break a word.\n * It must return an array of characters.\n * @param token - The token to split\n * @returns The characters of the token\n * @see TextMetrics.graphemeSegmenter\n */\n static wordWrapSplit(token) {\n return _TextMetrics2.graphemeSegmenter(token);\n }\n /**\n * Calculates the ascent, descent and fontSize of a given font-style\n * @param font - String representing the style of the font\n * @returns Font properties object\n */\n static measureFont(font) {\n if (_TextMetrics2._fonts[font])\n return _TextMetrics2._fonts[font];\n const properties = {\n ascent: 0,\n descent: 0,\n fontSize: 0\n }, canvas = _TextMetrics2._canvas, context = _TextMetrics2._context;\n context.font = font;\n const metricsString = _TextMetrics2.METRICS_STRING + _TextMetrics2.BASELINE_SYMBOL, width = Math.ceil(context.measureText(metricsString).width);\n let baseline = Math.ceil(context.measureText(_TextMetrics2.BASELINE_SYMBOL).width);\n const height = Math.ceil(_TextMetrics2.HEIGHT_MULTIPLIER * baseline);\n if (baseline = baseline * _TextMetrics2.BASELINE_MULTIPLIER | 0, width === 0 || height === 0)\n return _TextMetrics2._fonts[font] = properties, properties;\n canvas.width = width, canvas.height = height, context.fillStyle = \"#f00\", context.fillRect(0, 0, width, height), context.font = font, context.textBaseline = \"alphabetic\", context.fillStyle = \"#000\", context.fillText(metricsString, 0, baseline);\n const imagedata = context.getImageData(0, 0, width, height).data, pixels = imagedata.length, line = width * 4;\n let i = 0, idx = 0, stop = !1;\n for (i = 0; i < baseline; ++i) {\n for (let j = 0; j < line; j += 4)\n if (imagedata[idx + j] !== 255) {\n stop = !0;\n break;\n }\n if (!stop)\n idx += line;\n else\n break;\n }\n for (properties.ascent = baseline - i, idx = pixels - line, stop = !1, i = height; i > baseline; --i) {\n for (let j = 0; j < line; j += 4)\n if (imagedata[idx + j] !== 255) {\n stop = !0;\n break;\n }\n if (!stop)\n idx -= line;\n else\n break;\n }\n return properties.descent = i - baseline, properties.fontSize = properties.ascent + properties.descent, _TextMetrics2._fonts[font] = properties, properties;\n }\n /**\n * Clear font metrics in metrics cache.\n * @param {string} [font] - font name. If font name not set then clear cache for all fonts.\n */\n static clearMetrics(font = \"\") {\n font ? delete _TextMetrics2._fonts[font] : _TextMetrics2._fonts = {};\n }\n /**\n * Cached canvas element for measuring text\n * TODO: this should be private, but isn't because of backward compat, will fix later.\n * @ignore\n */\n static get _canvas() {\n if (!_TextMetrics2.__canvas) {\n let canvas;\n try {\n const c = new OffscreenCanvas(0, 0);\n if (c.getContext(\"2d\", contextSettings)?.measureText)\n return _TextMetrics2.__canvas = c, c;\n canvas = settings.ADAPTER.createCanvas();\n } catch {\n canvas = settings.ADAPTER.createCanvas();\n }\n canvas.width = canvas.height = 10, _TextMetrics2.__canvas = canvas;\n }\n return _TextMetrics2.__canvas;\n }\n /**\n * TODO: this should be private, but isn't because of backward compat, will fix later.\n * @ignore\n */\n static get _context() {\n return _TextMetrics2.__context || (_TextMetrics2.__context = _TextMetrics2._canvas.getContext(\"2d\", contextSettings)), _TextMetrics2.__context;\n }\n};\n_TextMetrics.METRICS_STRING = \"|\\xC9q\\xC5\", /** Baseline symbol for calculate font metrics. */\n_TextMetrics.BASELINE_SYMBOL = \"M\", /** Baseline multiplier for calculate font metrics. */\n_TextMetrics.BASELINE_MULTIPLIER = 1.4, /** Height multiplier for setting height of canvas to calculate font metrics. */\n_TextMetrics.HEIGHT_MULTIPLIER = 2, /**\n* A Unicode \"character\", or \"grapheme cluster\", can be composed of multiple Unicode code points,\n* such as letters with diacritical marks (e.g. `'\\u0065\\u0301'`, letter e with acute)\n* or emojis with modifiers (e.g. `'\\uD83E\\uDDD1\\u200D\\uD83D\\uDCBB'`, technologist).\n* The new `Intl.Segmenter` API in ES2022 can split the string into grapheme clusters correctly. If it is not available,\n* PixiJS will fallback to use the iterator of String, which can only spilt the string into code points.\n* If you want to get full functionality in environments that don't support `Intl.Segmenter` (such as Firefox),\n* you can use other libraries such as [grapheme-splitter]{@link https://www.npmjs.com/package/grapheme-splitter}\n* or [graphemer]{@link https://www.npmjs.com/package/graphemer} to create a polyfill. Since these libraries can be\n* relatively large in size to handle various Unicode grapheme clusters properly, PixiJS won't use them directly.\n*/\n_TextMetrics.graphemeSegmenter = (() => {\n if (typeof Intl?.Segmenter == \"function\") {\n const segmenter = new Intl.Segmenter();\n return (s) => [...segmenter.segment(s)].map((x) => x.segment);\n }\n return (s) => [...s];\n})(), /**\n* New rendering behavior for letter-spacing which uses Chrome's new native API. This will\n* lead to more accurate letter-spacing results because it does not try to manually draw\n* each character. However, this Chrome API is experimental and may not serve all cases yet.\n* @see PIXI.TextMetrics.experimentalLetterSpacingSupported\n*/\n_TextMetrics.experimentalLetterSpacing = !1, /** Cache of {@see PIXI.TextMetrics.FontMetrics} objects. */\n_TextMetrics._fonts = {}, /** Cache of new line chars. */\n_TextMetrics._newlines = [\n 10,\n // line feed\n 13\n // carriage return\n], /** Cache of breaking spaces. */\n_TextMetrics._breakingSpaces = [\n 9,\n // character tabulation\n 32,\n // space\n 8192,\n // en quad\n 8193,\n // em quad\n 8194,\n // en space\n 8195,\n // em space\n 8196,\n // three-per-em space\n 8197,\n // four-per-em space\n 8198,\n // six-per-em space\n 8200,\n // punctuation space\n 8201,\n // thin space\n 8202,\n // hair space\n 8287,\n // medium mathematical space\n 12288\n // ideographic space\n];\nlet TextMetrics = _TextMetrics;\nexport {\n TextMetrics\n};\n//# sourceMappingURL=TextMetrics.mjs.map\n","import { TEXT_GRADIENT } from \"./const.mjs\";\nimport { Color } from \"@pixi/core\";\nconst genericFontFamilies = [\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\"\n], _TextStyle = class _TextStyle2 {\n /**\n * @param style - TextStyle properties to be set on the text. See {@link PIXI.TextStyle.defaultStyle}\n * for the default values.\n */\n constructor(style) {\n this.styleID = 0, this.reset(), deepCopyProperties(this, style, style);\n }\n /**\n * Creates a new TextStyle object with the same values as this one.\n * Note that the only the properties of the object are cloned.\n *\n * @return New cloned TextStyle object\n */\n clone() {\n const clonedProperties = {};\n return deepCopyProperties(clonedProperties, this, _TextStyle2.defaultStyle), new _TextStyle2(clonedProperties);\n }\n /** Resets all properties to the defaults specified in TextStyle.prototype._default */\n reset() {\n deepCopyProperties(this, _TextStyle2.defaultStyle, _TextStyle2.defaultStyle);\n }\n /**\n * Alignment for multiline text, does not affect single line text.\n *\n * @member {'left'|'center'|'right'|'justify'}\n */\n get align() {\n return this._align;\n }\n set align(align) {\n this._align !== align && (this._align = align, this.styleID++);\n }\n /** Indicates if lines can be wrapped within words, it needs wordWrap to be set to true. */\n get breakWords() {\n return this._breakWords;\n }\n set breakWords(breakWords) {\n this._breakWords !== breakWords && (this._breakWords = breakWords, this.styleID++);\n }\n /** Set a drop shadow for the text. */\n get dropShadow() {\n return this._dropShadow;\n }\n set dropShadow(dropShadow) {\n this._dropShadow !== dropShadow && (this._dropShadow = dropShadow, this.styleID++);\n }\n /** Set alpha for the drop shadow. */\n get dropShadowAlpha() {\n return this._dropShadowAlpha;\n }\n set dropShadowAlpha(dropShadowAlpha) {\n this._dropShadowAlpha !== dropShadowAlpha && (this._dropShadowAlpha = dropShadowAlpha, this.styleID++);\n }\n /** Set a angle of the drop shadow. */\n get dropShadowAngle() {\n return this._dropShadowAngle;\n }\n set dropShadowAngle(dropShadowAngle) {\n this._dropShadowAngle !== dropShadowAngle && (this._dropShadowAngle = dropShadowAngle, this.styleID++);\n }\n /** Set a shadow blur radius. */\n get dropShadowBlur() {\n return this._dropShadowBlur;\n }\n set dropShadowBlur(dropShadowBlur) {\n this._dropShadowBlur !== dropShadowBlur && (this._dropShadowBlur = dropShadowBlur, this.styleID++);\n }\n /** A fill style to be used on the dropshadow e.g., 'red', '#00FF00'. */\n get dropShadowColor() {\n return this._dropShadowColor;\n }\n set dropShadowColor(dropShadowColor) {\n const outputColor = getColor(dropShadowColor);\n this._dropShadowColor !== outputColor && (this._dropShadowColor = outputColor, this.styleID++);\n }\n /** Set a distance of the drop shadow. */\n get dropShadowDistance() {\n return this._dropShadowDistance;\n }\n set dropShadowDistance(dropShadowDistance) {\n this._dropShadowDistance !== dropShadowDistance && (this._dropShadowDistance = dropShadowDistance, this.styleID++);\n }\n /**\n * A canvas fillstyle that will be used on the text e.g., 'red', '#00FF00'.\n *\n * Can be an array to create a gradient e.g., `['#000000','#FFFFFF']`\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/fillStyle|MDN}\n *\n * @member {string|string[]|number|number[]|CanvasGradient|CanvasPattern}\n */\n get fill() {\n return this._fill;\n }\n set fill(fill) {\n const outputColor = getColor(fill);\n this._fill !== outputColor && (this._fill = outputColor, this.styleID++);\n }\n /**\n * If fill is an array of colours to create a gradient, this can change the type/direction of the gradient.\n *\n * @type {PIXI.TEXT_GRADIENT}\n */\n get fillGradientType() {\n return this._fillGradientType;\n }\n set fillGradientType(fillGradientType) {\n this._fillGradientType !== fillGradientType && (this._fillGradientType = fillGradientType, this.styleID++);\n }\n /**\n * If fill is an array of colours to create a gradient, this array can set the stop points\n * (numbers between 0 and 1) for the color, overriding the default behaviour of evenly spacing them.\n */\n get fillGradientStops() {\n return this._fillGradientStops;\n }\n set fillGradientStops(fillGradientStops) {\n areArraysEqual(this._fillGradientStops, fillGradientStops) || (this._fillGradientStops = fillGradientStops, this.styleID++);\n }\n /**\n * The font family, can be a single font name, or a list of names where the first\n * is the preferred font.\n */\n get fontFamily() {\n return this._fontFamily;\n }\n set fontFamily(fontFamily) {\n this.fontFamily !== fontFamily && (this._fontFamily = fontFamily, this.styleID++);\n }\n /**\n * The font size\n * (as a number it converts to px, but as a string, equivalents are '26px','20pt','160%' or '1.6em')\n */\n get fontSize() {\n return this._fontSize;\n }\n set fontSize(fontSize) {\n this._fontSize !== fontSize && (this._fontSize = fontSize, this.styleID++);\n }\n /**\n * The font style.\n *\n * @member {'normal'|'italic'|'oblique'}\n */\n get fontStyle() {\n return this._fontStyle;\n }\n set fontStyle(fontStyle) {\n this._fontStyle !== fontStyle && (this._fontStyle = fontStyle, this.styleID++);\n }\n /**\n * The font variant.\n *\n * @member {'normal'|'small-caps'}\n */\n get fontVariant() {\n return this._fontVariant;\n }\n set fontVariant(fontVariant) {\n this._fontVariant !== fontVariant && (this._fontVariant = fontVariant, this.styleID++);\n }\n /**\n * The font weight.\n *\n * @member {'normal'|'bold'|'bolder'|'lighter'|'100'|'200'|'300'|'400'|'500'|'600'|'700'|'800'|'900'}\n */\n get fontWeight() {\n return this._fontWeight;\n }\n set fontWeight(fontWeight) {\n this._fontWeight !== fontWeight && (this._fontWeight = fontWeight, this.styleID++);\n }\n /** The amount of spacing between letters, default is 0. */\n get letterSpacing() {\n return this._letterSpacing;\n }\n set letterSpacing(letterSpacing) {\n this._letterSpacing !== letterSpacing && (this._letterSpacing = letterSpacing, this.styleID++);\n }\n /** The line height, a number that represents the vertical space that a letter uses. */\n get lineHeight() {\n return this._lineHeight;\n }\n set lineHeight(lineHeight) {\n this._lineHeight !== lineHeight && (this._lineHeight = lineHeight, this.styleID++);\n }\n /** The space between lines. */\n get leading() {\n return this._leading;\n }\n set leading(leading) {\n this._leading !== leading && (this._leading = leading, this.styleID++);\n }\n /**\n * The lineJoin property sets the type of corner created, it can resolve spiked text issues.\n * Default is 'miter' (creates a sharp corner).\n *\n * @member {'miter'|'round'|'bevel'}\n */\n get lineJoin() {\n return this._lineJoin;\n }\n set lineJoin(lineJoin) {\n this._lineJoin !== lineJoin && (this._lineJoin = lineJoin, this.styleID++);\n }\n /**\n * The miter limit to use when using the 'miter' lineJoin mode.\n *\n * This can reduce or increase the spikiness of rendered text.\n */\n get miterLimit() {\n return this._miterLimit;\n }\n set miterLimit(miterLimit) {\n this._miterLimit !== miterLimit && (this._miterLimit = miterLimit, this.styleID++);\n }\n /**\n * Occasionally some fonts are cropped. Adding some padding will prevent this from happening\n * by adding padding to all sides of the text.\n */\n get padding() {\n return this._padding;\n }\n set padding(padding) {\n this._padding !== padding && (this._padding = padding, this.styleID++);\n }\n /**\n * A canvas fillstyle that will be used on the text stroke, e.g., 'blue', '#FCFF00'\n */\n get stroke() {\n return this._stroke;\n }\n set stroke(stroke) {\n const outputColor = getColor(stroke);\n this._stroke !== outputColor && (this._stroke = outputColor, this.styleID++);\n }\n /**\n * A number that represents the thickness of the stroke.\n *\n * @default 0\n */\n get strokeThickness() {\n return this._strokeThickness;\n }\n set strokeThickness(strokeThickness) {\n this._strokeThickness !== strokeThickness && (this._strokeThickness = strokeThickness, this.styleID++);\n }\n /**\n * The baseline of the text that is rendered.\n *\n * @member {'alphabetic'|'top'|'hanging'|'middle'|'ideographic'|'bottom'}\n */\n get textBaseline() {\n return this._textBaseline;\n }\n set textBaseline(textBaseline) {\n this._textBaseline !== textBaseline && (this._textBaseline = textBaseline, this.styleID++);\n }\n /** Trim transparent borders. */\n get trim() {\n return this._trim;\n }\n set trim(trim) {\n this._trim !== trim && (this._trim = trim, this.styleID++);\n }\n /**\n * How newlines and spaces should be handled.\n * Default is 'pre' (preserve, preserve).\n *\n * value | New lines | Spaces\n * --- | --- | ---\n * 'normal' | Collapse | Collapse\n * 'pre' | Preserve | Preserve\n * 'pre-line' | Preserve | Collapse\n *\n * @member {'normal'|'pre'|'pre-line'}\n */\n get whiteSpace() {\n return this._whiteSpace;\n }\n set whiteSpace(whiteSpace) {\n this._whiteSpace !== whiteSpace && (this._whiteSpace = whiteSpace, this.styleID++);\n }\n /** Indicates if word wrap should be used. */\n get wordWrap() {\n return this._wordWrap;\n }\n set wordWrap(wordWrap) {\n this._wordWrap !== wordWrap && (this._wordWrap = wordWrap, this.styleID++);\n }\n /** The width at which text will wrap, it needs wordWrap to be set to true. */\n get wordWrapWidth() {\n return this._wordWrapWidth;\n }\n set wordWrapWidth(wordWrapWidth) {\n this._wordWrapWidth !== wordWrapWidth && (this._wordWrapWidth = wordWrapWidth, this.styleID++);\n }\n /**\n * Generates a font style string to use for `TextMetrics.measureFont()`.\n *\n * @return Font style string, for passing to `TextMetrics.measureFont()`\n */\n toFontString() {\n const fontSizeString = typeof this.fontSize == \"number\" ? `${this.fontSize}px` : this.fontSize;\n let fontFamilies = this.fontFamily;\n Array.isArray(this.fontFamily) || (fontFamilies = this.fontFamily.split(\",\"));\n for (let i = fontFamilies.length - 1; i >= 0; i--) {\n let fontFamily = fontFamilies[i].trim();\n !/([\\\"\\'])[^\\'\\\"]+\\1/.test(fontFamily) && !genericFontFamilies.includes(fontFamily) && (fontFamily = `\"${fontFamily}\"`), fontFamilies[i] = fontFamily;\n }\n return `${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${fontSizeString} ${fontFamilies.join(\",\")}`;\n }\n};\n_TextStyle.defaultStyle = {\n /**\n * See {@link PIXI.TextStyle.align}\n * @type {'left'|'center'|'right'|'justify'}\n */\n align: \"left\",\n /** See {@link PIXI.TextStyle.breakWords} */\n breakWords: !1,\n /** See {@link PIXI.TextStyle.dropShadow} */\n dropShadow: !1,\n /** See {@link PIXI.TextStyle.dropShadowAlpha} */\n dropShadowAlpha: 1,\n /**\n * See {@link PIXI.TextStyle.dropShadowAngle}\n * @type {number}\n * @default Math.PI / 6\n */\n dropShadowAngle: Math.PI / 6,\n /** See {@link PIXI.TextStyle.dropShadowBlur} */\n dropShadowBlur: 0,\n /**\n * See {@link PIXI.TextStyle.dropShadowColor}\n * @type {string|number}\n */\n dropShadowColor: \"black\",\n /** See {@link PIXI.TextStyle.dropShadowDistance} */\n dropShadowDistance: 5,\n /**\n * See {@link PIXI.TextStyle.fill}\n * @type {string|string[]|number|number[]|CanvasGradient|CanvasPattern}\n */\n fill: \"black\",\n /**\n * See {@link PIXI.TextStyle.fillGradientType}\n * @type {PIXI.TEXT_GRADIENT}\n * @default PIXI.TEXT_GRADIENT.LINEAR_VERTICAL\n */\n fillGradientType: TEXT_GRADIENT.LINEAR_VERTICAL,\n /**\n * See {@link PIXI.TextStyle.fillGradientStops}\n * @type {number[]}\n * @default []\n */\n fillGradientStops: [],\n /**\n * See {@link PIXI.TextStyle.fontFamily}\n * @type {string|string[]}\n */\n fontFamily: \"Arial\",\n /**\n * See {@link PIXI.TextStyle.fontSize}\n * @type {number|string} \n */\n fontSize: 26,\n /**\n * See {@link PIXI.TextStyle.fontStyle}\n * @type {'normal'|'italic'|'oblique'}\n */\n fontStyle: \"normal\",\n /**\n * See {@link PIXI.TextStyle.fontVariant}\n * @type {'normal'|'small-caps'}\n */\n fontVariant: \"normal\",\n /**\n * See {@link PIXI.TextStyle.fontWeight}\n * @type {'normal'|'bold'|'bolder'|'lighter'|'100'|'200'|'300'|'400'|'500'|'600'|'700'|'800'|'900'}\n */\n fontWeight: \"normal\",\n /** See {@link PIXI.TextStyle.leading} */\n leading: 0,\n /** See {@link PIXI.TextStyle.letterSpacing} */\n letterSpacing: 0,\n /** See {@link PIXI.TextStyle.lineHeight} */\n lineHeight: 0,\n /**\n * See {@link PIXI.TextStyle.lineJoin}\n * @type {'miter'|'round'|'bevel'}\n */\n lineJoin: \"miter\",\n /** See {@link PIXI.TextStyle.miterLimit} */\n miterLimit: 10,\n /** See {@link PIXI.TextStyle.padding} */\n padding: 0,\n /**\n * See {@link PIXI.TextStyle.stroke}\n * @type {string|number}\n */\n stroke: \"black\",\n /** See {@link PIXI.TextStyle.strokeThickness} */\n strokeThickness: 0,\n /**\n * See {@link PIXI.TextStyle.textBaseline} \n * @type {'alphabetic'|'top'|'hanging'|'middle'|'ideographic'|'bottom'}\n */\n textBaseline: \"alphabetic\",\n /** See {@link PIXI.TextStyle.trim} */\n trim: !1,\n /**\n * See {@link PIXI.TextStyle.whiteSpace}\n * @type {'normal'|'pre'|'pre-line'}\n */\n whiteSpace: \"pre\",\n /** See {@link PIXI.TextStyle.wordWrap} */\n wordWrap: !1,\n /** See {@link PIXI.TextStyle.wordWrapWidth} */\n wordWrapWidth: 100\n};\nlet TextStyle = _TextStyle;\nfunction getColor(color) {\n const temp = Color.shared, format = (color2) => {\n const res = temp.setValue(color2);\n return res.alpha === 1 ? res.toHex() : res.toRgbaString();\n };\n return Array.isArray(color) ? color.map(format) : format(color);\n}\nfunction areArraysEqual(array1, array2) {\n if (!Array.isArray(array1) || !Array.isArray(array2) || array1.length !== array2.length)\n return !1;\n for (let i = 0; i < array1.length; ++i)\n if (array1[i] !== array2[i])\n return !1;\n return !0;\n}\nfunction deepCopyProperties(target, source, propertyObj) {\n for (const prop in propertyObj)\n Array.isArray(source[prop]) ? target[prop] = source[prop].slice() : target[prop] = source[prop];\n}\nexport {\n TextStyle\n};\n//# sourceMappingURL=TextStyle.mjs.map\n","import { settings, Texture, Rectangle, utils, Color } from \"@pixi/core\";\nimport { Sprite } from \"@pixi/sprite\";\nimport { TEXT_GRADIENT } from \"./const.mjs\";\nimport { TextMetrics } from \"./TextMetrics.mjs\";\nimport { TextStyle } from \"./TextStyle.mjs\";\nconst defaultDestroyOptions = {\n texture: !0,\n children: !1,\n baseTexture: !0\n}, _Text = class _Text2 extends Sprite {\n /**\n * @param text - The string that you would like the text to display\n * @param style - The style parameters\n * @param canvas - The canvas element for drawing text\n */\n constructor(text, style, canvas) {\n let ownCanvas = !1;\n canvas || (canvas = settings.ADAPTER.createCanvas(), ownCanvas = !0), canvas.width = 3, canvas.height = 3;\n const texture = Texture.from(canvas);\n texture.orig = new Rectangle(), texture.trim = new Rectangle(), super(texture), this._ownCanvas = ownCanvas, this.canvas = canvas, this.context = canvas.getContext(\"2d\", {\n // required for trimming to work without warnings\n willReadFrequently: !0\n }), this._resolution = _Text2.defaultResolution ?? settings.RESOLUTION, this._autoResolution = _Text2.defaultAutoResolution, this._text = null, this._style = null, this._styleListener = null, this._font = \"\", this.text = text, this.style = style, this.localStyleID = -1;\n }\n /**\n * @see PIXI.TextMetrics.experimentalLetterSpacing\n * @deprecated since 7.1.0\n */\n static get experimentalLetterSpacing() {\n return TextMetrics.experimentalLetterSpacing;\n }\n static set experimentalLetterSpacing(value) {\n utils.deprecation(\n \"7.1.0\",\n \"Text.experimentalLetterSpacing is deprecated, use TextMetrics.experimentalLetterSpacing\"\n ), TextMetrics.experimentalLetterSpacing = value;\n }\n /**\n * Renders text to its canvas, and updates its texture.\n *\n * By default this is used internally to ensure the texture is correct before rendering,\n * but it can be used called externally, for example from this class to 'pre-generate' the texture from a piece of text,\n * and then shared across multiple Sprites.\n * @param respectDirty - Whether to abort updating the text if the Text isn't dirty and the function is called.\n */\n updateText(respectDirty) {\n const style = this._style;\n if (this.localStyleID !== style.styleID && (this.dirty = !0, this.localStyleID = style.styleID), !this.dirty && respectDirty)\n return;\n this._font = this._style.toFontString();\n const context = this.context, measured = TextMetrics.measureText(this._text || \" \", this._style, this._style.wordWrap, this.canvas), width = measured.width, height = measured.height, lines = measured.lines, lineHeight = measured.lineHeight, lineWidths = measured.lineWidths, maxLineWidth = measured.maxLineWidth, fontProperties = measured.fontProperties;\n this.canvas.width = Math.ceil(Math.ceil(Math.max(1, width) + style.padding * 2) * this._resolution), this.canvas.height = Math.ceil(Math.ceil(Math.max(1, height) + style.padding * 2) * this._resolution), context.scale(this._resolution, this._resolution), context.clearRect(0, 0, this.canvas.width, this.canvas.height), context.font = this._font, context.lineWidth = style.strokeThickness, context.textBaseline = style.textBaseline, context.lineJoin = style.lineJoin, context.miterLimit = style.miterLimit;\n let linePositionX, linePositionY;\n const passesCount = style.dropShadow ? 2 : 1;\n for (let i = 0; i < passesCount; ++i) {\n const isShadowPass = style.dropShadow && i === 0, dsOffsetText = isShadowPass ? Math.ceil(Math.max(1, height) + style.padding * 2) : 0, dsOffsetShadow = dsOffsetText * this._resolution;\n if (isShadowPass) {\n context.fillStyle = \"black\", context.strokeStyle = \"black\";\n const dropShadowColor = style.dropShadowColor, dropShadowBlur = style.dropShadowBlur * this._resolution, dropShadowDistance = style.dropShadowDistance * this._resolution;\n context.shadowColor = Color.shared.setValue(dropShadowColor).setAlpha(style.dropShadowAlpha).toRgbaString(), context.shadowBlur = dropShadowBlur, context.shadowOffsetX = Math.cos(style.dropShadowAngle) * dropShadowDistance, context.shadowOffsetY = Math.sin(style.dropShadowAngle) * dropShadowDistance + dsOffsetShadow;\n } else\n context.fillStyle = this._generateFillStyle(style, lines, measured), context.strokeStyle = style.stroke, context.shadowColor = \"black\", context.shadowBlur = 0, context.shadowOffsetX = 0, context.shadowOffsetY = 0;\n let linePositionYShift = (lineHeight - fontProperties.fontSize) / 2;\n lineHeight - fontProperties.fontSize < 0 && (linePositionYShift = 0);\n for (let i2 = 0; i2 < lines.length; i2++)\n linePositionX = style.strokeThickness / 2, linePositionY = style.strokeThickness / 2 + i2 * lineHeight + fontProperties.ascent + linePositionYShift, style.align === \"right\" ? linePositionX += maxLineWidth - lineWidths[i2] : style.align === \"center\" && (linePositionX += (maxLineWidth - lineWidths[i2]) / 2), style.stroke && style.strokeThickness && this.drawLetterSpacing(\n lines[i2],\n linePositionX + style.padding,\n linePositionY + style.padding - dsOffsetText,\n !0\n ), style.fill && this.drawLetterSpacing(\n lines[i2],\n linePositionX + style.padding,\n linePositionY + style.padding - dsOffsetText\n );\n }\n this.updateTexture();\n }\n /**\n * Render the text with letter-spacing.\n * @param text - The text to draw\n * @param x - Horizontal position to draw the text\n * @param y - Vertical position to draw the text\n * @param isStroke - Is this drawing for the outside stroke of the\n * text? If not, it's for the inside fill\n */\n drawLetterSpacing(text, x, y, isStroke = !1) {\n const letterSpacing = this._style.letterSpacing;\n let useExperimentalLetterSpacing = !1;\n if (TextMetrics.experimentalLetterSpacingSupported && (TextMetrics.experimentalLetterSpacing ? (this.context.letterSpacing = `${letterSpacing}px`, this.context.textLetterSpacing = `${letterSpacing}px`, useExperimentalLetterSpacing = !0) : (this.context.letterSpacing = \"0px\", this.context.textLetterSpacing = \"0px\")), letterSpacing === 0 || useExperimentalLetterSpacing) {\n isStroke ? this.context.strokeText(text, x, y) : this.context.fillText(text, x, y);\n return;\n }\n let currentPosition = x;\n const stringArray = TextMetrics.graphemeSegmenter(text);\n let previousWidth = this.context.measureText(text).width, currentWidth = 0;\n for (let i = 0; i < stringArray.length; ++i) {\n const currentChar = stringArray[i];\n isStroke ? this.context.strokeText(currentChar, currentPosition, y) : this.context.fillText(currentChar, currentPosition, y);\n let textStr = \"\";\n for (let j = i + 1; j < stringArray.length; ++j)\n textStr += stringArray[j];\n currentWidth = this.context.measureText(textStr).width, currentPosition += previousWidth - currentWidth + letterSpacing, previousWidth = currentWidth;\n }\n }\n /** Updates texture size based on canvas size. */\n updateTexture() {\n const canvas = this.canvas;\n if (this._style.trim) {\n const trimmed = utils.trimCanvas(canvas);\n trimmed.data && (canvas.width = trimmed.width, canvas.height = trimmed.height, this.context.putImageData(trimmed.data, 0, 0));\n }\n const texture = this._texture, style = this._style, padding = style.trim ? 0 : style.padding, baseTexture = texture.baseTexture;\n texture.trim.width = texture._frame.width = canvas.width / this._resolution, texture.trim.height = texture._frame.height = canvas.height / this._resolution, texture.trim.x = -padding, texture.trim.y = -padding, texture.orig.width = texture._frame.width - padding * 2, texture.orig.height = texture._frame.height - padding * 2, this._onTextureUpdate(), baseTexture.setRealSize(canvas.width, canvas.height, this._resolution), texture.updateUvs(), this.dirty = !1;\n }\n /**\n * Renders the object using the WebGL renderer\n * @param renderer - The renderer\n */\n _render(renderer) {\n this._autoResolution && this._resolution !== renderer.resolution && (this._resolution = renderer.resolution, this.dirty = !0), this.updateText(!0), super._render(renderer);\n }\n /** Updates the transform on all children of this container for rendering. */\n updateTransform() {\n this.updateText(!0), super.updateTransform();\n }\n getBounds(skipUpdate, rect) {\n return this.updateText(!0), this._textureID === -1 && (skipUpdate = !1), super.getBounds(skipUpdate, rect);\n }\n /**\n * Gets the local bounds of the text object.\n * @param rect - The output rectangle.\n * @returns The bounds.\n */\n getLocalBounds(rect) {\n return this.updateText(!0), super.getLocalBounds.call(this, rect);\n }\n /** Calculates the bounds of the Text as a rectangle. The bounds calculation takes the worldTransform into account. */\n _calculateBounds() {\n this.calculateVertices(), this._bounds.addQuad(this.vertexData);\n }\n /**\n * Generates the fill style. Can automatically generate a gradient based on the fill style being an array\n * @param style - The style.\n * @param lines - The lines of text.\n * @param metrics\n * @returns The fill style\n */\n _generateFillStyle(style, lines, metrics) {\n const fillStyle = style.fill;\n if (Array.isArray(fillStyle)) {\n if (fillStyle.length === 1)\n return fillStyle[0];\n } else\n return fillStyle;\n let gradient;\n const dropShadowCorrection = style.dropShadow ? style.dropShadowDistance : 0, padding = style.padding || 0, width = this.canvas.width / this._resolution - dropShadowCorrection - padding * 2, height = this.canvas.height / this._resolution - dropShadowCorrection - padding * 2, fill = fillStyle.slice(), fillGradientStops = style.fillGradientStops.slice();\n if (!fillGradientStops.length) {\n const lengthPlus1 = fill.length + 1;\n for (let i = 1; i < lengthPlus1; ++i)\n fillGradientStops.push(i / lengthPlus1);\n }\n if (fill.unshift(fillStyle[0]), fillGradientStops.unshift(0), fill.push(fillStyle[fillStyle.length - 1]), fillGradientStops.push(1), style.fillGradientType === TEXT_GRADIENT.LINEAR_VERTICAL) {\n gradient = this.context.createLinearGradient(width / 2, padding, width / 2, height + padding);\n const textHeight = metrics.fontProperties.fontSize + style.strokeThickness;\n for (let i = 0; i < lines.length; i++) {\n const lastLineBottom = metrics.lineHeight * (i - 1) + textHeight, thisLineTop = metrics.lineHeight * i;\n let thisLineGradientStart = thisLineTop;\n i > 0 && lastLineBottom > thisLineTop && (thisLineGradientStart = (thisLineTop + lastLineBottom) / 2);\n const thisLineBottom = thisLineTop + textHeight, nextLineTop = metrics.lineHeight * (i + 1);\n let thisLineGradientEnd = thisLineBottom;\n i + 1 < lines.length && nextLineTop < thisLineBottom && (thisLineGradientEnd = (thisLineBottom + nextLineTop) / 2);\n const gradStopLineHeight = (thisLineGradientEnd - thisLineGradientStart) / height;\n for (let j = 0; j < fill.length; j++) {\n let lineStop = 0;\n typeof fillGradientStops[j] == \"number\" ? lineStop = fillGradientStops[j] : lineStop = j / fill.length;\n let globalStop = Math.min(1, Math.max(\n 0,\n thisLineGradientStart / height + lineStop * gradStopLineHeight\n ));\n globalStop = Number(globalStop.toFixed(5)), gradient.addColorStop(globalStop, fill[j]);\n }\n }\n } else {\n gradient = this.context.createLinearGradient(padding, height / 2, width + padding, height / 2);\n const totalIterations = fill.length + 1;\n let currentIteration = 1;\n for (let i = 0; i < fill.length; i++) {\n let stop;\n typeof fillGradientStops[i] == \"number\" ? stop = fillGradientStops[i] : stop = currentIteration / totalIterations, gradient.addColorStop(stop, fill[i]), currentIteration++;\n }\n }\n return gradient;\n }\n /**\n * Destroys this text object.\n *\n * Note* Unlike a Sprite, a Text object will automatically destroy its baseTexture and texture as\n * the majority of the time the texture will not be shared with any other Sprites.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.children=false] - if set to true, all the children will have their\n * destroy method called as well. 'options' will be passed on to those calls.\n * @param {boolean} [options.texture=true] - Should it destroy the current texture of the sprite as well\n * @param {boolean} [options.baseTexture=true] - Should it destroy the base texture of the sprite as well\n */\n destroy(options) {\n typeof options == \"boolean\" && (options = { children: options }), options = Object.assign({}, defaultDestroyOptions, options), super.destroy(options), this._ownCanvas && (this.canvas.height = this.canvas.width = 0), this.context = null, this.canvas = null, this._style = null;\n }\n /** The width of the Text, setting this will actually modify the scale to achieve the value set. */\n get width() {\n return this.updateText(!0), Math.abs(this.scale.x) * this._texture.orig.width;\n }\n set width(value) {\n this.updateText(!0);\n const s = utils.sign(this.scale.x) || 1;\n this.scale.x = s * value / this._texture.orig.width, this._width = value;\n }\n /** The height of the Text, setting this will actually modify the scale to achieve the value set. */\n get height() {\n return this.updateText(!0), Math.abs(this.scale.y) * this._texture.orig.height;\n }\n set height(value) {\n this.updateText(!0);\n const s = utils.sign(this.scale.y) || 1;\n this.scale.y = s * value / this._texture.orig.height, this._height = value;\n }\n /**\n * Set the style of the text.\n *\n * Set up an event listener to listen for changes on the style object and mark the text as dirty.\n *\n * If setting the `style` can also be partial {@link PIXI.ITextStyle}.\n */\n get style() {\n return this._style;\n }\n set style(style) {\n style = style || {}, style instanceof TextStyle ? this._style = style : this._style = new TextStyle(style), this.localStyleID = -1, this.dirty = !0;\n }\n /** Set the copy for the text object. To split a line you can use '\\n'. */\n get text() {\n return this._text;\n }\n set text(text) {\n text = String(text ?? \"\"), this._text !== text && (this._text = text, this.dirty = !0);\n }\n /**\n * The resolution / device pixel ratio of the canvas.\n *\n * This is set to automatically match the renderer resolution by default, but can be overridden by setting manually.\n * @default 1\n */\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._autoResolution = !1, this._resolution !== value && (this._resolution = value, this.dirty = !0);\n }\n};\n_Text.defaultAutoResolution = !0;\nlet Text = _Text;\nexport {\n Text\n};\n//# sourceMappingURL=Text.mjs.map\n","class CountLimiter {\n /**\n * @param maxItemsPerFrame - The maximum number of items that can be prepared each frame.\n */\n constructor(maxItemsPerFrame) {\n this.maxItemsPerFrame = maxItemsPerFrame, this.itemsLeft = 0;\n }\n /** Resets any counting properties to start fresh on a new frame. */\n beginFrame() {\n this.itemsLeft = this.maxItemsPerFrame;\n }\n /**\n * Checks to see if another item can be uploaded. This should only be called once per item.\n * @returns If the item is allowed to be uploaded.\n */\n allowedToUpload() {\n return this.itemsLeft-- > 0;\n }\n}\nexport {\n CountLimiter\n};\n//# sourceMappingURL=CountLimiter.mjs.map\n","import { Texture, BaseTexture, Ticker, UPDATE_PRIORITY } from \"@pixi/core\";\nimport { Container } from \"@pixi/display\";\nimport { Text, TextStyle, TextMetrics } from \"@pixi/text\";\nimport { CountLimiter } from \"./CountLimiter.mjs\";\nfunction findMultipleBaseTextures(item, queue) {\n let result = !1;\n if (item?._textures?.length) {\n for (let i = 0; i < item._textures.length; i++)\n if (item._textures[i] instanceof Texture) {\n const baseTexture = item._textures[i].baseTexture;\n queue.includes(baseTexture) || (queue.push(baseTexture), result = !0);\n }\n }\n return result;\n}\nfunction findBaseTexture(item, queue) {\n if (item.baseTexture instanceof BaseTexture) {\n const texture = item.baseTexture;\n return queue.includes(texture) || queue.push(texture), !0;\n }\n return !1;\n}\nfunction findTexture(item, queue) {\n if (item._texture && item._texture instanceof Texture) {\n const texture = item._texture.baseTexture;\n return queue.includes(texture) || queue.push(texture), !0;\n }\n return !1;\n}\nfunction drawText(_helper, item) {\n return item instanceof Text ? (item.updateText(!0), !0) : !1;\n}\nfunction calculateTextStyle(_helper, item) {\n if (item instanceof TextStyle) {\n const font = item.toFontString();\n return TextMetrics.measureFont(font), !0;\n }\n return !1;\n}\nfunction findText(item, queue) {\n if (item instanceof Text) {\n queue.includes(item.style) || queue.push(item.style), queue.includes(item) || queue.push(item);\n const texture = item._texture.baseTexture;\n return queue.includes(texture) || queue.push(texture), !0;\n }\n return !1;\n}\nfunction findTextStyle(item, queue) {\n return item instanceof TextStyle ? (queue.includes(item) || queue.push(item), !0) : !1;\n}\nconst _BasePrepare = class _BasePrepare2 {\n /**\n * @param {PIXI.IRenderer} renderer - A reference to the current renderer\n */\n constructor(renderer) {\n this.limiter = new CountLimiter(_BasePrepare2.uploadsPerFrame), this.renderer = renderer, this.uploadHookHelper = null, this.queue = [], this.addHooks = [], this.uploadHooks = [], this.completes = [], this.ticking = !1, this.delayedTick = () => {\n this.queue && this.prepareItems();\n }, this.registerFindHook(findText), this.registerFindHook(findTextStyle), this.registerFindHook(findMultipleBaseTextures), this.registerFindHook(findBaseTexture), this.registerFindHook(findTexture), this.registerUploadHook(drawText), this.registerUploadHook(calculateTextStyle);\n }\n /**\n * Upload all the textures and graphics to the GPU.\n * @method PIXI.BasePrepare#upload\n * @param {PIXI.DisplayObject|PIXI.Container|PIXI.BaseTexture|PIXI.Texture|PIXI.Graphics|PIXI.Text} [item] -\n * Container or display object to search for items to upload or the items to upload themselves,\n * or optionally ommitted, if items have been added using {@link PIXI.BasePrepare#add `prepare.add`}.\n */\n upload(item) {\n return new Promise((resolve) => {\n item && this.add(item), this.queue.length ? (this.completes.push(resolve), this.ticking || (this.ticking = !0, Ticker.system.addOnce(this.tick, this, UPDATE_PRIORITY.UTILITY))) : resolve();\n });\n }\n /**\n * Handle tick update\n * @private\n */\n tick() {\n setTimeout(this.delayedTick, 0);\n }\n /**\n * Actually prepare items. This is handled outside of the tick because it will take a while\n * and we do NOT want to block the current animation frame from rendering.\n * @private\n */\n prepareItems() {\n for (this.limiter.beginFrame(); this.queue.length && this.limiter.allowedToUpload(); ) {\n const item = this.queue[0];\n let uploaded = !1;\n if (item && !item._destroyed) {\n for (let i = 0, len = this.uploadHooks.length; i < len; i++)\n if (this.uploadHooks[i](this.uploadHookHelper, item)) {\n this.queue.shift(), uploaded = !0;\n break;\n }\n }\n uploaded || this.queue.shift();\n }\n if (this.queue.length)\n Ticker.system.addOnce(this.tick, this, UPDATE_PRIORITY.UTILITY);\n else {\n this.ticking = !1;\n const completes = this.completes.slice(0);\n this.completes.length = 0;\n for (let i = 0, len = completes.length; i < len; i++)\n completes[i]();\n }\n }\n /**\n * Adds hooks for finding items.\n * @param {Function} addHook - Function call that takes two parameters: `item:*, queue:Array`\n * function must return `true` if it was able to add item to the queue.\n * @returns Instance of plugin for chaining.\n */\n registerFindHook(addHook) {\n return addHook && this.addHooks.push(addHook), this;\n }\n /**\n * Adds hooks for uploading items.\n * @param {Function} uploadHook - Function call that takes two parameters: `prepare:CanvasPrepare, item:*` and\n * function must return `true` if it was able to handle upload of item.\n * @returns Instance of plugin for chaining.\n */\n registerUploadHook(uploadHook) {\n return uploadHook && this.uploadHooks.push(uploadHook), this;\n }\n /**\n * Manually add an item to the uploading queue.\n * @param {PIXI.DisplayObject|PIXI.Container|PIXI.BaseTexture|PIXI.Texture|PIXI.Graphics|PIXI.Text|*} item - Object to\n * add to the queue\n * @returns Instance of plugin for chaining.\n */\n add(item) {\n for (let i = 0, len = this.addHooks.length; i < len && !this.addHooks[i](item, this.queue); i++)\n ;\n if (item instanceof Container)\n for (let i = item.children.length - 1; i >= 0; i--)\n this.add(item.children[i]);\n return this;\n }\n /** Destroys the plugin, don't use after this. */\n destroy() {\n this.ticking && Ticker.system.remove(this.tick, this), this.ticking = !1, this.addHooks = null, this.uploadHooks = null, this.renderer = null, this.completes = null, this.queue = null, this.limiter = null, this.uploadHookHelper = null;\n }\n};\n_BasePrepare.uploadsPerFrame = 4;\nlet BasePrepare = _BasePrepare;\nexport {\n BasePrepare\n};\n//# sourceMappingURL=BasePrepare.mjs.map\n","import { settings, utils } from \"@pixi/core\";\nimport { settings as settings2 } from \"@pixi/core\";\nimport { BasePrepare } from \"./BasePrepare.mjs\";\nObject.defineProperties(settings, {\n /**\n * Default number of uploads per frame using prepare plugin.\n * @static\n * @memberof PIXI.settings\n * @name UPLOADS_PER_FRAME\n * @deprecated since 7.1.0\n * @see PIXI.BasePrepare.uploadsPerFrame\n * @type {number}\n */\n UPLOADS_PER_FRAME: {\n get() {\n return BasePrepare.uploadsPerFrame;\n },\n set(value) {\n utils.deprecation(\"7.1.0\", \"settings.UPLOADS_PER_FRAME is deprecated, use prepare.BasePrepare.uploadsPerFrame\"), BasePrepare.uploadsPerFrame = value;\n }\n }\n});\nexport {\n settings2 as settings\n};\n//# sourceMappingURL=settings.mjs.map\n","import { BaseTexture, ExtensionType, extensions } from \"@pixi/core\";\nimport { Graphics } from \"@pixi/graphics\";\nimport { BasePrepare } from \"./BasePrepare.mjs\";\nfunction uploadBaseTextures(renderer, item) {\n return item instanceof BaseTexture ? (item._glTextures[renderer.CONTEXT_UID] || renderer.texture.bind(item), !0) : !1;\n}\nfunction uploadGraphics(renderer, item) {\n if (!(item instanceof Graphics))\n return !1;\n const { geometry } = item;\n item.finishPoly(), geometry.updateBatches();\n const { batches } = geometry;\n for (let i = 0; i < batches.length; i++) {\n const { texture } = batches[i].style;\n texture && uploadBaseTextures(renderer, texture.baseTexture);\n }\n return geometry.batchable || renderer.geometry.bind(geometry, item._resolveDirectShader(renderer)), !0;\n}\nfunction findGraphics(item, queue) {\n return item instanceof Graphics ? (queue.push(item), !0) : !1;\n}\nclass Prepare extends BasePrepare {\n /**\n * @param {PIXI.Renderer} renderer - A reference to the current renderer\n */\n constructor(renderer) {\n super(renderer), this.uploadHookHelper = this.renderer, this.registerFindHook(findGraphics), this.registerUploadHook(uploadBaseTextures), this.registerUploadHook(uploadGraphics);\n }\n}\nPrepare.extension = {\n name: \"prepare\",\n type: ExtensionType.RendererSystem\n};\nextensions.add(Prepare);\nexport {\n Prepare\n};\n//# sourceMappingURL=Prepare.mjs.map\n","var gl2FragmentSrc = `#version 300 es\n#define SHADER_NAME Tiling-Sprite-100\n\nprecision lowp float;\n\nin vec2 vTextureCoord;\n\nout vec4 fragmentColor;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n vec2 unclamped = coord;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n vec4 texSample = texture(uSampler, coord, unclamped == coord ? 0.0f : -32.0f);// lod-bias very negative to force lod 0\n\n fragmentColor = texSample * uColor;\n}\n`;\nexport {\n gl2FragmentSrc as default\n};\n//# sourceMappingURL=sprite-tiling.frag.mjs.map\n","var gl2VertexSrc = `#version 300 es\n#define SHADER_NAME Tiling-Sprite-300\n\nprecision lowp float;\n\nin vec2 aVertexPosition;\nin vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nout vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n`;\nexport {\n gl2VertexSrc as default\n};\n//# sourceMappingURL=sprite-tiling.vert.mjs.map\n","var gl1FragmentSrc = `#version 100\n#ifdef GL_EXT_shader_texture_lod\n #extension GL_EXT_shader_texture_lod : enable\n#endif\n#define SHADER_NAME Tiling-Sprite-100\n\nprecision lowp float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n vec2 unclamped = coord;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n #ifdef GL_EXT_shader_texture_lod\n vec4 texSample = unclamped == coord\n ? texture2D(uSampler, coord) \n : texture2DLodEXT(uSampler, coord, 0);\n #else\n vec4 texSample = texture2D(uSampler, coord);\n #endif\n\n gl_FragColor = texSample * uColor;\n}\n`;\nexport {\n gl1FragmentSrc as default\n};\n//# sourceMappingURL=sprite-tiling-fallback.frag.mjs.map\n","var gl1VertexSrc = `#version 100\n#define SHADER_NAME Tiling-Sprite-100\n\nprecision lowp float;\n\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n`;\nexport {\n gl1VertexSrc as default\n};\n//# sourceMappingURL=sprite-tiling-fallback.vert.mjs.map\n","var fragmentSimpleSrc = `#version 100\n#define SHADER_NAME Tiling-Sprite-Simple-100\n\nprecision lowp float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n vec4 texSample = texture2D(uSampler, vTextureCoord);\n gl_FragColor = texSample * uColor;\n}\n`;\nexport {\n fragmentSimpleSrc as default\n};\n//# sourceMappingURL=sprite-tiling-simple.frag.mjs.map\n","import { Matrix, ObjectRenderer, QuadUv, State, Shader, WRAP_MODES, Color, utils, ExtensionType, extensions } from \"@pixi/core\";\nimport gl2FragmentSrc from \"./sprite-tiling.frag.mjs\";\nimport gl2VertexSrc from \"./sprite-tiling.vert.mjs\";\nimport gl1FragmentSrc from \"./sprite-tiling-fallback.frag.mjs\";\nimport gl1VertexSrc from \"./sprite-tiling-fallback.vert.mjs\";\nimport fragmentSimpleSrc from \"./sprite-tiling-simple.frag.mjs\";\nconst tempMat = new Matrix();\nclass TilingSpriteRenderer extends ObjectRenderer {\n /**\n * constructor for renderer\n * @param {PIXI.Renderer} renderer - The renderer this tiling awesomeness works for.\n */\n constructor(renderer) {\n super(renderer), renderer.runners.contextChange.add(this), this.quad = new QuadUv(), this.state = State.for2d();\n }\n /** Creates shaders when context is initialized. */\n contextChange() {\n const renderer = this.renderer, uniforms = { globals: renderer.globalUniforms };\n this.simpleShader = Shader.from(gl1VertexSrc, fragmentSimpleSrc, uniforms), this.shader = renderer.context.webGLVersion > 1 ? Shader.from(gl2VertexSrc, gl2FragmentSrc, uniforms) : Shader.from(gl1VertexSrc, gl1FragmentSrc, uniforms);\n }\n /**\n * @param {PIXI.TilingSprite} ts - tilingSprite to be rendered\n */\n render(ts) {\n const renderer = this.renderer, quad = this.quad;\n let vertices = quad.vertices;\n vertices[0] = vertices[6] = ts._width * -ts.anchor.x, vertices[1] = vertices[3] = ts._height * -ts.anchor.y, vertices[2] = vertices[4] = ts._width * (1 - ts.anchor.x), vertices[5] = vertices[7] = ts._height * (1 - ts.anchor.y);\n const anchorX = ts.uvRespectAnchor ? ts.anchor.x : 0, anchorY = ts.uvRespectAnchor ? ts.anchor.y : 0;\n vertices = quad.uvs, vertices[0] = vertices[6] = -anchorX, vertices[1] = vertices[3] = -anchorY, vertices[2] = vertices[4] = 1 - anchorX, vertices[5] = vertices[7] = 1 - anchorY, quad.invalidate();\n const tex = ts._texture, baseTex = tex.baseTexture, premultiplied = baseTex.alphaMode > 0, lt = ts.tileTransform.localTransform, uv = ts.uvMatrix;\n let isSimple = baseTex.isPowerOfTwo && tex.frame.width === baseTex.width && tex.frame.height === baseTex.height;\n isSimple && (baseTex._glTextures[renderer.CONTEXT_UID] ? isSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP : baseTex.wrapMode === WRAP_MODES.CLAMP && (baseTex.wrapMode = WRAP_MODES.REPEAT));\n const shader = isSimple ? this.simpleShader : this.shader, w = tex.width, h = tex.height, W = ts._width, H = ts._height;\n tempMat.set(\n lt.a * w / W,\n lt.b * w / H,\n lt.c * h / W,\n lt.d * h / H,\n lt.tx / W,\n lt.ty / H\n ), tempMat.invert(), isSimple ? tempMat.prepend(uv.mapCoord) : (shader.uniforms.uMapCoord = uv.mapCoord.toArray(!0), shader.uniforms.uClampFrame = uv.uClampFrame, shader.uniforms.uClampOffset = uv.uClampOffset), shader.uniforms.uTransform = tempMat.toArray(!0), shader.uniforms.uColor = Color.shared.setValue(ts.tint).premultiply(ts.worldAlpha, premultiplied).toArray(shader.uniforms.uColor), shader.uniforms.translationMatrix = ts.transform.worldTransform.toArray(!0), shader.uniforms.uSampler = tex, renderer.shader.bind(shader), renderer.geometry.bind(quad), this.state.blendMode = utils.correctBlendMode(ts.blendMode, premultiplied), renderer.state.set(this.state), renderer.geometry.draw(this.renderer.gl.TRIANGLES, 6, 0);\n }\n}\nTilingSpriteRenderer.extension = {\n name: \"tilingSprite\",\n type: ExtensionType.RendererPlugin\n};\nextensions.add(TilingSpriteRenderer);\nexport {\n TilingSpriteRenderer\n};\n//# sourceMappingURL=TilingSpriteRenderer.mjs.map\n","import { BaseTexture, Texture, utils, Rectangle } from \"@pixi/core\";\nconst _Spritesheet = class _Spritesheet2 {\n /** @ignore */\n constructor(optionsOrTexture, arg1, arg2) {\n this.linkedSheets = [], (optionsOrTexture instanceof BaseTexture || optionsOrTexture instanceof Texture) && (optionsOrTexture = { texture: optionsOrTexture, data: arg1, resolutionFilename: arg2 });\n const { texture, data, resolutionFilename = null, cachePrefix = \"\" } = optionsOrTexture;\n this.cachePrefix = cachePrefix, this._texture = texture instanceof Texture ? texture : null, this.baseTexture = texture instanceof BaseTexture ? texture : this._texture.baseTexture, this.textures = {}, this.animations = {}, this.data = data;\n const resource = this.baseTexture.resource;\n this.resolution = this._updateResolution(resolutionFilename || (resource ? resource.url : null)), this._frames = this.data.frames, this._frameKeys = Object.keys(this._frames), this._batchIndex = 0, this._callback = null;\n }\n /**\n * Generate the resolution from the filename or fallback\n * to the meta.scale field of the JSON data.\n * @param resolutionFilename - The filename to use for resolving\n * the default resolution.\n * @returns Resolution to use for spritesheet.\n */\n _updateResolution(resolutionFilename = null) {\n const { scale } = this.data.meta;\n let resolution = utils.getResolutionOfUrl(resolutionFilename, null);\n return resolution === null && (resolution = typeof scale == \"number\" ? scale : parseFloat(scale ?? \"1\")), resolution !== 1 && this.baseTexture.setResolution(resolution), resolution;\n }\n /**\n * Parser spritesheet from loaded data. This is done asynchronously\n * to prevent creating too many Texture within a single process.\n * @method PIXI.Spritesheet#parse\n */\n parse() {\n return new Promise((resolve) => {\n this._callback = resolve, this._batchIndex = 0, this._frameKeys.length <= _Spritesheet2.BATCH_SIZE ? (this._processFrames(0), this._processAnimations(), this._parseComplete()) : this._nextBatch();\n });\n }\n /**\n * Process a batch of frames\n * @param initialFrameIndex - The index of frame to start.\n */\n _processFrames(initialFrameIndex) {\n let frameIndex = initialFrameIndex;\n const maxFrames = _Spritesheet2.BATCH_SIZE;\n for (; frameIndex - initialFrameIndex < maxFrames && frameIndex < this._frameKeys.length; ) {\n const i = this._frameKeys[frameIndex], data = this._frames[i], rect = data.frame;\n if (rect) {\n let frame = null, trim = null;\n const sourceSize = data.trimmed !== !1 && data.sourceSize ? data.sourceSize : data.frame, orig = new Rectangle(\n 0,\n 0,\n Math.floor(sourceSize.w) / this.resolution,\n Math.floor(sourceSize.h) / this.resolution\n );\n data.rotated ? frame = new Rectangle(\n Math.floor(rect.x) / this.resolution,\n Math.floor(rect.y) / this.resolution,\n Math.floor(rect.h) / this.resolution,\n Math.floor(rect.w) / this.resolution\n ) : frame = new Rectangle(\n Math.floor(rect.x) / this.resolution,\n Math.floor(rect.y) / this.resolution,\n Math.floor(rect.w) / this.resolution,\n Math.floor(rect.h) / this.resolution\n ), data.trimmed !== !1 && data.spriteSourceSize && (trim = new Rectangle(\n Math.floor(data.spriteSourceSize.x) / this.resolution,\n Math.floor(data.spriteSourceSize.y) / this.resolution,\n Math.floor(rect.w) / this.resolution,\n Math.floor(rect.h) / this.resolution\n )), this.textures[i] = new Texture(\n this.baseTexture,\n frame,\n orig,\n trim,\n data.rotated ? 2 : 0,\n data.anchor,\n data.borders\n ), Texture.addToCache(this.textures[i], this.cachePrefix + i.toString());\n }\n frameIndex++;\n }\n }\n /** Parse animations config. */\n _processAnimations() {\n const animations = this.data.animations || {};\n for (const animName in animations) {\n this.animations[animName] = [];\n for (let i = 0; i < animations[animName].length; i++) {\n const frameName = animations[animName][i];\n this.animations[animName].push(this.textures[frameName]);\n }\n }\n }\n /** The parse has completed. */\n _parseComplete() {\n const callback = this._callback;\n this._callback = null, this._batchIndex = 0, callback.call(this, this.textures);\n }\n /** Begin the next batch of textures. */\n _nextBatch() {\n this._processFrames(this._batchIndex * _Spritesheet2.BATCH_SIZE), this._batchIndex++, setTimeout(() => {\n this._batchIndex * _Spritesheet2.BATCH_SIZE < this._frameKeys.length ? this._nextBatch() : (this._processAnimations(), this._parseComplete());\n }, 0);\n }\n /**\n * Destroy Spritesheet and don't use after this.\n * @param {boolean} [destroyBase=false] - Whether to destroy the base texture as well\n */\n destroy(destroyBase = !1) {\n for (const i in this.textures)\n this.textures[i].destroy();\n this._frames = null, this._frameKeys = null, this.data = null, this.textures = null, destroyBase && (this._texture?.destroy(), this.baseTexture.destroy()), this._texture = null, this.baseTexture = null, this.linkedSheets = [];\n }\n};\n_Spritesheet.BATCH_SIZE = 1e3;\nlet Spritesheet = _Spritesheet;\nexport {\n Spritesheet\n};\n//# sourceMappingURL=Spritesheet.mjs.map\n","import { LoaderParserPriority, copySearchParams } from \"@pixi/assets\";\nimport { utils, ExtensionType, settings, extensions } from \"@pixi/core\";\nimport { Spritesheet } from \"./Spritesheet.mjs\";\nconst validImages = [\"jpg\", \"png\", \"jpeg\", \"avif\", \"webp\"];\nfunction getCacheableAssets(keys, asset, ignoreMultiPack) {\n const out = {};\n if (keys.forEach((key) => {\n out[key] = asset;\n }), Object.keys(asset.textures).forEach((key) => {\n out[`${asset.cachePrefix}${key}`] = asset.textures[key];\n }), !ignoreMultiPack) {\n const basePath = utils.path.dirname(keys[0]);\n asset.linkedSheets.forEach((item, i) => {\n Object.assign(out, getCacheableAssets(\n [`${basePath}/${asset.data.meta.related_multi_packs[i]}`],\n item,\n !0\n ));\n });\n }\n return out;\n}\nconst spritesheetAsset = {\n extension: ExtensionType.Asset,\n /** Handle the caching of the related Spritesheet Textures */\n cache: {\n test: (asset) => asset instanceof Spritesheet,\n getCacheableAssets: (keys, asset) => getCacheableAssets(keys, asset, !1)\n },\n /** Resolve the the resolution of the asset. */\n resolver: {\n test: (value) => {\n const split = value.split(\"?\")[0].split(\".\"), extension = split.pop(), format = split.pop();\n return extension === \"json\" && validImages.includes(format);\n },\n parse: (value) => {\n const split = value.split(\".\");\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: split[split.length - 2],\n src: value\n };\n }\n },\n /**\n * Loader plugin that parses sprite sheets!\n * once the JSON has been loaded this checks to see if the JSON is spritesheet data.\n * If it is, we load the spritesheets image and parse the data into PIXI.Spritesheet\n * All textures in the sprite sheet are then added to the cache\n * @ignore\n */\n loader: {\n name: \"spritesheetLoader\",\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal\n },\n async testParse(asset, options) {\n return utils.path.extname(options.src).toLowerCase() === \".json\" && !!asset.frames;\n },\n async parse(asset, options, loader) {\n const {\n texture: imageTexture,\n // if user need to use preloaded texture\n imageFilename,\n // if user need to use custom filename (not from jsonFile.meta.image)\n cachePrefix\n // if user need to use custom cache prefix\n } = options?.data ?? {};\n let basePath = utils.path.dirname(options.src);\n basePath && basePath.lastIndexOf(\"/\") !== basePath.length - 1 && (basePath += \"/\");\n let texture;\n if (imageTexture && imageTexture.baseTexture)\n texture = imageTexture;\n else {\n const imagePath = copySearchParams(basePath + (imageFilename ?? asset.meta.image), options.src);\n texture = (await loader.load([imagePath]))[imagePath];\n }\n const spritesheet = new Spritesheet({\n texture: texture.baseTexture,\n data: asset,\n resolutionFilename: options.src,\n cachePrefix\n });\n await spritesheet.parse();\n const multiPacks = asset?.meta?.related_multi_packs;\n if (Array.isArray(multiPacks)) {\n const promises = [];\n for (const item of multiPacks) {\n if (typeof item != \"string\")\n continue;\n let itemUrl = basePath + item;\n options.data?.ignoreMultiPack || (itemUrl = copySearchParams(itemUrl, options.src), promises.push(loader.load({\n src: itemUrl,\n data: {\n ignoreMultiPack: !0\n }\n })));\n }\n const res = await Promise.all(promises);\n spritesheet.linkedSheets = res, res.forEach((item) => {\n item.linkedSheets = [spritesheet].concat(spritesheet.linkedSheets.filter((sp) => sp !== item));\n });\n }\n return spritesheet;\n },\n unload(spritesheet) {\n spritesheet.destroy(!0);\n }\n }\n};\nextensions.add(spritesheetAsset);\nexport {\n spritesheetAsset\n};\n//# sourceMappingURL=spritesheetAsset.mjs.map\n","class BitmapFontData {\n constructor() {\n this.info = [], this.common = [], this.page = [], this.char = [], this.kerning = [], this.distanceField = [];\n }\n}\nexport {\n BitmapFontData\n};\n//# sourceMappingURL=BitmapFontData.mjs.map\n","import { BitmapFontData } from \"../BitmapFontData.mjs\";\nclass TextFormat {\n /**\n * Check if resource refers to txt font data.\n * @param data\n * @returns - True if resource could be treated as font data, false otherwise.\n */\n static test(data) {\n return typeof data == \"string\" && data.startsWith(\"info face=\");\n }\n /**\n * Convert text font data to a javascript object.\n * @param txt - Raw string data to be converted\n * @returns - Parsed font data\n */\n static parse(txt) {\n const items = txt.match(/^[a-z]+\\s+.+$/gm), rawData = {\n info: [],\n common: [],\n page: [],\n char: [],\n chars: [],\n kerning: [],\n kernings: [],\n distanceField: []\n };\n for (const i in items) {\n const name = items[i].match(/^[a-z]+/gm)[0], attributeList = items[i].match(/[a-zA-Z]+=([^\\s\"']+|\"([^\"]*)\")/gm), itemData = {};\n for (const i2 in attributeList) {\n const split = attributeList[i2].split(\"=\"), key = split[0], strValue = split[1].replace(/\"/gm, \"\"), floatValue = parseFloat(strValue), value = isNaN(floatValue) ? strValue : floatValue;\n itemData[key] = value;\n }\n rawData[name].push(itemData);\n }\n const font = new BitmapFontData();\n return rawData.info.forEach((info) => font.info.push({\n face: info.face,\n size: parseInt(info.size, 10)\n })), rawData.common.forEach((common) => font.common.push({\n lineHeight: parseInt(common.lineHeight, 10)\n })), rawData.page.forEach((page) => font.page.push({\n id: parseInt(page.id, 10),\n file: page.file\n })), rawData.char.forEach((char) => font.char.push({\n id: parseInt(char.id, 10),\n page: parseInt(char.page, 10),\n x: parseInt(char.x, 10),\n y: parseInt(char.y, 10),\n width: parseInt(char.width, 10),\n height: parseInt(char.height, 10),\n xoffset: parseInt(char.xoffset, 10),\n yoffset: parseInt(char.yoffset, 10),\n xadvance: parseInt(char.xadvance, 10)\n })), rawData.kerning.forEach((kerning) => font.kerning.push({\n first: parseInt(kerning.first, 10),\n second: parseInt(kerning.second, 10),\n amount: parseInt(kerning.amount, 10)\n })), rawData.distanceField.forEach((df) => font.distanceField.push({\n distanceRange: parseInt(df.distanceRange, 10),\n fieldType: df.fieldType\n })), font;\n }\n}\nexport {\n TextFormat\n};\n//# sourceMappingURL=TextFormat.mjs.map\n","import { BitmapFontData } from \"../BitmapFontData.mjs\";\nclass XMLFormat {\n /**\n * Check if resource refers to xml font data.\n * @param data\n * @returns - True if resource could be treated as font data, false otherwise.\n */\n static test(data) {\n const xml = data;\n return typeof data != \"string\" && \"getElementsByTagName\" in data && xml.getElementsByTagName(\"page\").length && xml.getElementsByTagName(\"info\")[0].getAttribute(\"face\") !== null;\n }\n /**\n * Convert the XML into BitmapFontData that we can use.\n * @param xml\n * @returns - Data to use for BitmapFont\n */\n static parse(xml) {\n const data = new BitmapFontData(), info = xml.getElementsByTagName(\"info\"), common = xml.getElementsByTagName(\"common\"), page = xml.getElementsByTagName(\"page\"), char = xml.getElementsByTagName(\"char\"), kerning = xml.getElementsByTagName(\"kerning\"), distanceField = xml.getElementsByTagName(\"distanceField\");\n for (let i = 0; i < info.length; i++)\n data.info.push({\n face: info[i].getAttribute(\"face\"),\n size: parseInt(info[i].getAttribute(\"size\"), 10)\n });\n for (let i = 0; i < common.length; i++)\n data.common.push({\n lineHeight: parseInt(common[i].getAttribute(\"lineHeight\"), 10)\n });\n for (let i = 0; i < page.length; i++)\n data.page.push({\n id: parseInt(page[i].getAttribute(\"id\"), 10) || 0,\n file: page[i].getAttribute(\"file\")\n });\n for (let i = 0; i < char.length; i++) {\n const letter = char[i];\n data.char.push({\n id: parseInt(letter.getAttribute(\"id\"), 10),\n page: parseInt(letter.getAttribute(\"page\"), 10) || 0,\n x: parseInt(letter.getAttribute(\"x\"), 10),\n y: parseInt(letter.getAttribute(\"y\"), 10),\n width: parseInt(letter.getAttribute(\"width\"), 10),\n height: parseInt(letter.getAttribute(\"height\"), 10),\n xoffset: parseInt(letter.getAttribute(\"xoffset\"), 10),\n yoffset: parseInt(letter.getAttribute(\"yoffset\"), 10),\n xadvance: parseInt(letter.getAttribute(\"xadvance\"), 10)\n });\n }\n for (let i = 0; i < kerning.length; i++)\n data.kerning.push({\n first: parseInt(kerning[i].getAttribute(\"first\"), 10),\n second: parseInt(kerning[i].getAttribute(\"second\"), 10),\n amount: parseInt(kerning[i].getAttribute(\"amount\"), 10)\n });\n for (let i = 0; i < distanceField.length; i++)\n data.distanceField.push({\n fieldType: distanceField[i].getAttribute(\"fieldType\"),\n distanceRange: parseInt(distanceField[i].getAttribute(\"distanceRange\"), 10)\n });\n return data;\n }\n}\nexport {\n XMLFormat\n};\n//# sourceMappingURL=XMLFormat.mjs.map\n","import { settings } from \"@pixi/core\";\nimport { XMLFormat } from \"./XMLFormat.mjs\";\nclass XMLStringFormat {\n /**\n * Check if resource refers to text xml font data.\n * @param data\n * @returns - True if resource could be treated as font data, false otherwise.\n */\n static test(data) {\n return typeof data == \"string\" && data.includes(\"\") ? XMLFormat.test(settings.ADAPTER.parseXML(data)) : !1;\n }\n /**\n * Convert the text XML into BitmapFontData that we can use.\n * @param xmlTxt\n * @returns - Data to use for BitmapFont\n */\n static parse(xmlTxt) {\n return XMLFormat.parse(settings.ADAPTER.parseXML(xmlTxt));\n }\n}\nexport {\n XMLStringFormat\n};\n//# sourceMappingURL=XMLStringFormat.mjs.map\n","import { TextFormat } from \"./TextFormat.mjs\";\nimport { XMLFormat } from \"./XMLFormat.mjs\";\nimport { XMLStringFormat } from \"./XMLStringFormat.mjs\";\nconst formats = [\n TextFormat,\n XMLFormat,\n XMLStringFormat\n];\nfunction autoDetectFormat(data) {\n for (let i = 0; i < formats.length; i++)\n if (formats[i].test(data))\n return formats[i];\n return null;\n}\nexport {\n TextFormat,\n XMLFormat,\n XMLStringFormat,\n autoDetectFormat\n};\n//# sourceMappingURL=index.mjs.map\n","import { TEXT_GRADIENT } from \"@pixi/text\";\nfunction generateFillStyle(canvas, context, style, resolution, lines, metrics) {\n const fillStyle = style.fill;\n if (Array.isArray(fillStyle)) {\n if (fillStyle.length === 1)\n return fillStyle[0];\n } else\n return fillStyle;\n let gradient;\n const dropShadowCorrection = style.dropShadow ? style.dropShadowDistance : 0, padding = style.padding || 0, width = canvas.width / resolution - dropShadowCorrection - padding * 2, height = canvas.height / resolution - dropShadowCorrection - padding * 2, fill = fillStyle.slice(), fillGradientStops = style.fillGradientStops.slice();\n if (!fillGradientStops.length) {\n const lengthPlus1 = fill.length + 1;\n for (let i = 1; i < lengthPlus1; ++i)\n fillGradientStops.push(i / lengthPlus1);\n }\n if (fill.unshift(fillStyle[0]), fillGradientStops.unshift(0), fill.push(fillStyle[fillStyle.length - 1]), fillGradientStops.push(1), style.fillGradientType === TEXT_GRADIENT.LINEAR_VERTICAL) {\n gradient = context.createLinearGradient(width / 2, padding, width / 2, height + padding);\n let lastIterationStop = 0;\n const gradStopLineHeight = (metrics.fontProperties.fontSize + style.strokeThickness) / height;\n for (let i = 0; i < lines.length; i++) {\n const thisLineTop = metrics.lineHeight * i;\n for (let j = 0; j < fill.length; j++) {\n let lineStop = 0;\n typeof fillGradientStops[j] == \"number\" ? lineStop = fillGradientStops[j] : lineStop = j / fill.length;\n const globalStop = thisLineTop / height + lineStop * gradStopLineHeight;\n let clampedStop = Math.max(lastIterationStop, globalStop);\n clampedStop = Math.min(clampedStop, 1), gradient.addColorStop(clampedStop, fill[j]), lastIterationStop = clampedStop;\n }\n }\n } else {\n gradient = context.createLinearGradient(padding, height / 2, width + padding, height / 2);\n const totalIterations = fill.length + 1;\n let currentIteration = 1;\n for (let i = 0; i < fill.length; i++) {\n let stop;\n typeof fillGradientStops[i] == \"number\" ? stop = fillGradientStops[i] : stop = currentIteration / totalIterations, gradient.addColorStop(stop, fill[i]), currentIteration++;\n }\n }\n return gradient;\n}\nexport {\n generateFillStyle\n};\n//# sourceMappingURL=generateFillStyle.mjs.map\n","import { Color } from \"@pixi/core\";\nimport { generateFillStyle } from \"./generateFillStyle.mjs\";\nfunction drawGlyph(canvas, context, metrics, x, y, resolution, style) {\n const char = metrics.text, fontProperties = metrics.fontProperties;\n context.translate(x, y), context.scale(resolution, resolution);\n const tx = style.strokeThickness / 2, ty = -(style.strokeThickness / 2);\n if (context.font = style.toFontString(), context.lineWidth = style.strokeThickness, context.textBaseline = style.textBaseline, context.lineJoin = style.lineJoin, context.miterLimit = style.miterLimit, context.fillStyle = generateFillStyle(canvas, context, style, resolution, [char], metrics), context.strokeStyle = style.stroke, style.dropShadow) {\n const dropShadowColor = style.dropShadowColor, dropShadowBlur = style.dropShadowBlur * resolution, dropShadowDistance = style.dropShadowDistance * resolution;\n context.shadowColor = Color.shared.setValue(dropShadowColor).setAlpha(style.dropShadowAlpha).toRgbaString(), context.shadowBlur = dropShadowBlur, context.shadowOffsetX = Math.cos(style.dropShadowAngle) * dropShadowDistance, context.shadowOffsetY = Math.sin(style.dropShadowAngle) * dropShadowDistance;\n } else\n context.shadowColor = \"black\", context.shadowBlur = 0, context.shadowOffsetX = 0, context.shadowOffsetY = 0;\n style.stroke && style.strokeThickness && context.strokeText(char, tx, ty + metrics.lineHeight - fontProperties.descent), style.fill && context.fillText(char, tx, ty + metrics.lineHeight - fontProperties.descent), context.setTransform(1, 0, 0, 1, 0, 0), context.fillStyle = \"rgba(0, 0, 0, 0)\";\n}\nexport {\n drawGlyph\n};\n//# sourceMappingURL=drawGlyph.mjs.map\n","function extractCharCode(str) {\n return str.codePointAt ? str.codePointAt(0) : str.charCodeAt(0);\n}\nexport {\n extractCharCode\n};\n//# sourceMappingURL=extractCharCode.mjs.map\n","function splitTextToCharacters(text) {\n return Array.from ? Array.from(text) : text.split(\"\");\n}\nexport {\n splitTextToCharacters\n};\n//# sourceMappingURL=splitTextToCharacters.mjs.map\n","import { splitTextToCharacters } from \"./splitTextToCharacters.mjs\";\nfunction resolveCharacters(chars) {\n typeof chars == \"string\" && (chars = [chars]);\n const result = [];\n for (let i = 0, j = chars.length; i < j; i++) {\n const item = chars[i];\n if (Array.isArray(item)) {\n if (item.length !== 2)\n throw new Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${item.length}.`);\n const startCode = item[0].charCodeAt(0), endCode = item[1].charCodeAt(0);\n if (endCode < startCode)\n throw new Error(\"[BitmapFont]: Invalid character range.\");\n for (let i2 = startCode, j2 = endCode; i2 <= j2; i2++)\n result.push(String.fromCharCode(i2));\n } else\n result.push(...splitTextToCharacters(item));\n }\n if (result.length === 0)\n throw new Error(\"[BitmapFont]: Empty set when resolving characters.\");\n return result;\n}\nexport {\n resolveCharacters\n};\n//# sourceMappingURL=resolveCharacters.mjs.map\n","import { utils, ALPHA_MODES, MIPMAP_MODES, Rectangle, Texture, settings, BaseTexture } from \"@pixi/core\";\nimport { TextStyle, TextMetrics } from \"@pixi/text\";\nimport { BitmapFontData } from \"./BitmapFontData.mjs\";\nimport { autoDetectFormat } from \"./formats/index.mjs\";\nimport \"./utils/index.mjs\";\nimport { resolveCharacters } from \"./utils/resolveCharacters.mjs\";\nimport { drawGlyph } from \"./utils/drawGlyph.mjs\";\nimport { extractCharCode } from \"./utils/extractCharCode.mjs\";\nconst _BitmapFont = class _BitmapFont2 {\n /**\n * @param data\n * @param textures\n * @param ownsTextures - Setting to `true` will destroy page textures\n * when the font is uninstalled.\n */\n constructor(data, textures, ownsTextures) {\n const [info] = data.info, [common] = data.common, [page] = data.page, [distanceField] = data.distanceField, res = utils.getResolutionOfUrl(page.file), pageTextures = {};\n this._ownsTextures = ownsTextures, this.font = info.face, this.size = info.size, this.lineHeight = common.lineHeight / res, this.chars = {}, this.pageTextures = pageTextures;\n for (let i = 0; i < data.page.length; i++) {\n const { id, file } = data.page[i];\n pageTextures[id] = textures instanceof Array ? textures[i] : textures[file], distanceField?.fieldType && distanceField.fieldType !== \"none\" && (pageTextures[id].baseTexture.alphaMode = ALPHA_MODES.NO_PREMULTIPLIED_ALPHA, pageTextures[id].baseTexture.mipmap = MIPMAP_MODES.OFF);\n }\n for (let i = 0; i < data.char.length; i++) {\n const { id, page: page2 } = data.char[i];\n let { x, y, width, height, xoffset, yoffset, xadvance } = data.char[i];\n x /= res, y /= res, width /= res, height /= res, xoffset /= res, yoffset /= res, xadvance /= res;\n const rect = new Rectangle(\n x + pageTextures[page2].frame.x / res,\n y + pageTextures[page2].frame.y / res,\n width,\n height\n );\n this.chars[id] = {\n xOffset: xoffset,\n yOffset: yoffset,\n xAdvance: xadvance,\n kerning: {},\n texture: new Texture(\n pageTextures[page2].baseTexture,\n rect\n ),\n page: page2\n };\n }\n for (let i = 0; i < data.kerning.length; i++) {\n let { first, second, amount } = data.kerning[i];\n first /= res, second /= res, amount /= res, this.chars[second] && (this.chars[second].kerning[first] = amount);\n }\n this.distanceFieldRange = distanceField?.distanceRange, this.distanceFieldType = distanceField?.fieldType?.toLowerCase() ?? \"none\";\n }\n /** Remove references to created glyph textures. */\n destroy() {\n for (const id in this.chars)\n this.chars[id].texture.destroy(), this.chars[id].texture = null;\n for (const id in this.pageTextures)\n this._ownsTextures && this.pageTextures[id].destroy(!0), this.pageTextures[id] = null;\n this.chars = null, this.pageTextures = null;\n }\n /**\n * Register a new bitmap font.\n * @param data - The\n * characters map that could be provided as xml or raw string.\n * @param textures - List of textures for each page.\n * @param ownsTextures - Set to `true` to destroy page textures\n * when the font is uninstalled. By default fonts created with\n * `BitmapFont.from` or from the `BitmapFontLoader` are `true`.\n * @returns {PIXI.BitmapFont} Result font object with font, size, lineHeight\n * and char fields.\n */\n static install(data, textures, ownsTextures) {\n let fontData;\n if (data instanceof BitmapFontData)\n fontData = data;\n else {\n const format = autoDetectFormat(data);\n if (!format)\n throw new Error(\"Unrecognized data format for font.\");\n fontData = format.parse(data);\n }\n textures instanceof Texture && (textures = [textures]);\n const font = new _BitmapFont2(fontData, textures, ownsTextures);\n return _BitmapFont2.available[font.font] = font, font;\n }\n /**\n * Remove bitmap font by name.\n * @param name - Name of the font to uninstall.\n */\n static uninstall(name) {\n const font = _BitmapFont2.available[name];\n if (!font)\n throw new Error(`No font found named '${name}'`);\n font.destroy(), delete _BitmapFont2.available[name];\n }\n /**\n * Generates a bitmap-font for the given style and character set. This does not support\n * kernings yet. With `style` properties, only the following non-layout properties are used:\n *\n * - {@link PIXI.TextStyle#dropShadow|dropShadow}\n * - {@link PIXI.TextStyle#dropShadowDistance|dropShadowDistance}\n * - {@link PIXI.TextStyle#dropShadowColor|dropShadowColor}\n * - {@link PIXI.TextStyle#dropShadowBlur|dropShadowBlur}\n * - {@link PIXI.TextStyle#dropShadowAngle|dropShadowAngle}\n * - {@link PIXI.TextStyle#fill|fill}\n * - {@link PIXI.TextStyle#fillGradientStops|fillGradientStops}\n * - {@link PIXI.TextStyle#fillGradientType|fillGradientType}\n * - {@link PIXI.TextStyle#fontFamily|fontFamily}\n * - {@link PIXI.TextStyle#fontSize|fontSize}\n * - {@link PIXI.TextStyle#fontVariant|fontVariant}\n * - {@link PIXI.TextStyle#fontWeight|fontWeight}\n * - {@link PIXI.TextStyle#lineJoin|lineJoin}\n * - {@link PIXI.TextStyle#miterLimit|miterLimit}\n * - {@link PIXI.TextStyle#stroke|stroke}\n * - {@link PIXI.TextStyle#strokeThickness|strokeThickness}\n * - {@link PIXI.TextStyle#textBaseline|textBaseline}\n * @param name - The name of the custom font to use with BitmapText.\n * @param textStyle - Style options to render with BitmapFont.\n * @param options - Setup options for font or name of the font.\n * @returns Font generated by style options.\n * @example\n * import { BitmapFont, BitmapText } from 'pixi.js';\n *\n * BitmapFont.from('TitleFont', {\n * fontFamily: 'Arial',\n * fontSize: 12,\n * strokeThickness: 2,\n * fill: 'purple',\n * });\n *\n * const title = new BitmapText('This is the title', { fontName: 'TitleFont' });\n */\n static from(name, textStyle, options) {\n if (!name)\n throw new Error(\"[BitmapFont] Property `name` is required.\");\n const {\n chars,\n padding,\n resolution,\n textureWidth,\n textureHeight,\n ...baseOptions\n } = Object.assign({}, _BitmapFont2.defaultOptions, options), charsList = resolveCharacters(chars), style = textStyle instanceof TextStyle ? textStyle : new TextStyle(textStyle), lineWidth = textureWidth, fontData = new BitmapFontData();\n fontData.info[0] = {\n face: style.fontFamily,\n size: style.fontSize\n }, fontData.common[0] = {\n lineHeight: style.fontSize\n };\n let positionX = 0, positionY = 0, canvas, context, baseTexture, maxCharHeight = 0;\n const baseTextures = [], textures = [];\n for (let i = 0; i < charsList.length; i++) {\n canvas || (canvas = settings.ADAPTER.createCanvas(), canvas.width = textureWidth, canvas.height = textureHeight, context = canvas.getContext(\"2d\"), baseTexture = new BaseTexture(canvas, { resolution, ...baseOptions }), baseTextures.push(baseTexture), textures.push(new Texture(baseTexture)), fontData.page.push({\n id: textures.length - 1,\n file: \"\"\n }));\n const character = charsList[i], metrics = TextMetrics.measureText(character, style, !1, canvas), width = metrics.width, height = Math.ceil(metrics.height), textureGlyphWidth = Math.ceil((style.fontStyle === \"italic\" ? 2 : 1) * width);\n if (positionY >= textureHeight - height * resolution) {\n if (positionY === 0)\n throw new Error(`[BitmapFont] textureHeight ${textureHeight}px is too small (fontFamily: '${style.fontFamily}', fontSize: ${style.fontSize}px, char: '${character}')`);\n --i, canvas = null, context = null, baseTexture = null, positionY = 0, positionX = 0, maxCharHeight = 0;\n continue;\n }\n if (maxCharHeight = Math.max(height + metrics.fontProperties.descent, maxCharHeight), textureGlyphWidth * resolution + positionX >= lineWidth) {\n if (positionX === 0)\n throw new Error(`[BitmapFont] textureWidth ${textureWidth}px is too small (fontFamily: '${style.fontFamily}', fontSize: ${style.fontSize}px, char: '${character}')`);\n --i, positionY += maxCharHeight * resolution, positionY = Math.ceil(positionY), positionX = 0, maxCharHeight = 0;\n continue;\n }\n drawGlyph(canvas, context, metrics, positionX, positionY, resolution, style);\n const id = extractCharCode(metrics.text);\n fontData.char.push({\n id,\n page: textures.length - 1,\n x: positionX / resolution,\n y: positionY / resolution,\n width: textureGlyphWidth,\n height,\n xoffset: 0,\n yoffset: 0,\n xadvance: width - (style.dropShadow ? style.dropShadowDistance : 0) - (style.stroke ? style.strokeThickness : 0)\n }), positionX += (textureGlyphWidth + 2 * padding) * resolution, positionX = Math.ceil(positionX);\n }\n if (!options?.skipKerning)\n for (let i = 0, len = charsList.length; i < len; i++) {\n const first = charsList[i];\n for (let j = 0; j < len; j++) {\n const second = charsList[j], c1 = context.measureText(first).width, c2 = context.measureText(second).width, amount = context.measureText(first + second).width - (c1 + c2);\n amount && fontData.kerning.push({\n first: extractCharCode(first),\n second: extractCharCode(second),\n amount\n });\n }\n }\n const font = new _BitmapFont2(fontData, textures, !0);\n return _BitmapFont2.available[name] !== void 0 && _BitmapFont2.uninstall(name), _BitmapFont2.available[name] = font, font;\n }\n};\n_BitmapFont.ALPHA = [[\"a\", \"z\"], [\"A\", \"Z\"], \" \"], /**\n* This character set includes all decimal digits (from 0 to 9).\n* @type {string[][]}\n* @example\n* BitmapFont.from('ExampleFont', style, { chars: BitmapFont.NUMERIC })\n*/\n_BitmapFont.NUMERIC = [[\"0\", \"9\"]], /**\n* This character set is the union of `BitmapFont.ALPHA` and `BitmapFont.NUMERIC`.\n* @type {string[][]}\n*/\n_BitmapFont.ALPHANUMERIC = [[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \" \"], /**\n* This character set consists of all the ASCII table.\n* @member {string[][]}\n* @see http://www.asciitable.com/\n*/\n_BitmapFont.ASCII = [[\" \", \"~\"]], /**\n* Collection of default options when using `BitmapFont.from`.\n* @property {number} [resolution=1] -\n* @property {number} [textureWidth=512] -\n* @property {number} [textureHeight=512] -\n* @property {number} [padding=4] -\n* @property {string|string[]|string[][]} chars = PIXI.BitmapFont.ALPHANUMERIC\n*/\n_BitmapFont.defaultOptions = {\n resolution: 1,\n textureWidth: 512,\n textureHeight: 512,\n padding: 4,\n chars: _BitmapFont.ALPHANUMERIC\n}, /** Collection of available/installed fonts. */\n_BitmapFont.available = {};\nlet BitmapFont = _BitmapFont;\nexport {\n BitmapFont\n};\n//# sourceMappingURL=BitmapFont.mjs.map\n","var msdfFrag = `// Pixi texture info\\r\nvarying vec2 vTextureCoord;\\r\nuniform sampler2D uSampler;\\r\n\\r\n// Tint\\r\nuniform vec4 uColor;\\r\n\\r\n// on 2D applications fwidth is screenScale / glyphAtlasScale * distanceFieldRange\\r\nuniform float uFWidth;\\r\n\\r\nvoid main(void) {\\r\n\\r\n // To stack MSDF and SDF we need a non-pre-multiplied-alpha texture.\\r\n vec4 texColor = texture2D(uSampler, vTextureCoord);\\r\n\\r\n // MSDF\\r\n float median = texColor.r + texColor.g + texColor.b -\\r\n min(texColor.r, min(texColor.g, texColor.b)) -\\r\n max(texColor.r, max(texColor.g, texColor.b));\\r\n // SDF\\r\n median = min(median, texColor.a);\\r\n\\r\n float screenPxDistance = uFWidth * (median - 0.5);\\r\n float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\\r\n if (median < 0.01) {\\r\n alpha = 0.0;\\r\n } else if (median > 0.99) {\\r\n alpha = 1.0;\\r\n }\\r\n\\r\n // Gamma correction for coverage-like alpha\\r\n float luma = dot(uColor.rgb, vec3(0.299, 0.587, 0.114));\\r\n float gamma = mix(1.0, 1.0 / 2.2, luma);\\r\n float coverage = pow(uColor.a * alpha, gamma); \\r\n\\r\n // NPM Textures, NPM outputs\\r\n gl_FragColor = vec4(uColor.rgb, coverage);\\r\n}\\r\n`;\nexport {\n msdfFrag as default\n};\n//# sourceMappingURL=msdf.frag.mjs.map\n","var msdfVert = `// Mesh material default fragment\\r\nattribute vec2 aVertexPosition;\\r\nattribute vec2 aTextureCoord;\\r\n\\r\nuniform mat3 projectionMatrix;\\r\nuniform mat3 translationMatrix;\\r\nuniform mat3 uTextureMatrix;\\r\n\\r\nvarying vec2 vTextureCoord;\\r\n\\r\nvoid main(void)\\r\n{\\r\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\r\n\\r\n vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\\r\n}\\r\n`;\nexport {\n msdfVert as default\n};\n//# sourceMappingURL=msdf.vert.mjs.map\n","import { Color, ObservablePoint, settings, Point, Texture, utils, BLEND_MODES, Program } from \"@pixi/core\";\nimport { Container } from \"@pixi/display\";\nimport { MeshGeometry, MeshMaterial, Mesh } from \"@pixi/mesh\";\nimport { BitmapFont } from \"./BitmapFont.mjs\";\nimport msdfFrag from \"./shader/msdf.frag.mjs\";\nimport msdfVert from \"./shader/msdf.vert.mjs\";\nimport \"./utils/index.mjs\";\nimport { splitTextToCharacters } from \"./utils/splitTextToCharacters.mjs\";\nimport { extractCharCode } from \"./utils/extractCharCode.mjs\";\nconst pageMeshDataDefaultPageMeshData = [], pageMeshDataMSDFPageMeshData = [], charRenderDataPool = [], _BitmapText = class _BitmapText2 extends Container {\n /**\n * @param text - A string that you would like the text to display.\n * @param style - The style parameters.\n * @param {string} style.fontName - The installed BitmapFont name.\n * @param {number} [style.fontSize] - The size of the font in pixels, e.g. 24. If undefined,\n *. this will default to the BitmapFont size.\n * @param {string} [style.align='left'] - Alignment for multiline text ('left', 'center', 'right' or 'justify'),\n * does not affect single line text.\n * @param {PIXI.ColorSource} [style.tint=0xFFFFFF] - The tint color.\n * @param {number} [style.letterSpacing=0] - The amount of spacing between letters.\n * @param {number} [style.maxWidth=0] - The max width of the text before line wrapping.\n */\n constructor(text, style = {}) {\n super();\n const { align, tint, maxWidth, letterSpacing, fontName, fontSize } = Object.assign(\n {},\n _BitmapText2.styleDefaults,\n style\n );\n if (!BitmapFont.available[fontName])\n throw new Error(`Missing BitmapFont \"${fontName}\"`);\n this._activePagesMeshData = [], this._textWidth = 0, this._textHeight = 0, this._align = align, this._tintColor = new Color(tint), this._font = void 0, this._fontName = fontName, this._fontSize = fontSize, this.text = text, this._maxWidth = maxWidth, this._maxLineHeight = 0, this._letterSpacing = letterSpacing, this._anchor = new ObservablePoint(() => {\n this.dirty = !0;\n }, this, 0, 0), this._roundPixels = settings.ROUND_PIXELS, this.dirty = !0, this._resolution = settings.RESOLUTION, this._autoResolution = !0, this._textureCache = {};\n }\n /** Renders text and updates it when needed. This should only be called if the BitmapFont is regenerated. */\n updateText() {\n const data = BitmapFont.available[this._fontName], fontSize = this.fontSize, scale = fontSize / data.size, pos = new Point(), chars = [], lineWidths = [], lineSpaces = [], text = this._text.replace(/(?:\\r\\n|\\r)/g, `\n`) || \" \", charsInput = splitTextToCharacters(text), maxWidth = this._maxWidth * data.size / fontSize, pageMeshDataPool = data.distanceFieldType === \"none\" ? pageMeshDataDefaultPageMeshData : pageMeshDataMSDFPageMeshData;\n let prevCharCode = null, lastLineWidth = 0, maxLineWidth = 0, line = 0, lastBreakPos = -1, lastBreakWidth = 0, spacesRemoved = 0, maxLineHeight = 0, spaceCount = 0;\n for (let i = 0; i < charsInput.length; i++) {\n const char = charsInput[i], charCode = extractCharCode(char);\n if (/(?:\\s)/.test(char) && (lastBreakPos = i, lastBreakWidth = lastLineWidth, spaceCount++), char === \"\\r\" || char === `\n`) {\n lineWidths.push(lastLineWidth), lineSpaces.push(-1), maxLineWidth = Math.max(maxLineWidth, lastLineWidth), ++line, ++spacesRemoved, pos.x = 0, pos.y += data.lineHeight, prevCharCode = null, spaceCount = 0;\n continue;\n }\n const charData = data.chars[charCode];\n if (!charData)\n continue;\n prevCharCode && charData.kerning[prevCharCode] && (pos.x += charData.kerning[prevCharCode]);\n const charRenderData = charRenderDataPool.pop() || {\n texture: Texture.EMPTY,\n line: 0,\n charCode: 0,\n prevSpaces: 0,\n position: new Point()\n };\n charRenderData.texture = charData.texture, charRenderData.line = line, charRenderData.charCode = charCode, charRenderData.position.x = Math.round(pos.x + charData.xOffset + this._letterSpacing / 2), charRenderData.position.y = Math.round(pos.y + charData.yOffset), charRenderData.prevSpaces = spaceCount, chars.push(charRenderData), lastLineWidth = charRenderData.position.x + Math.max(charData.xAdvance - charData.xOffset, charData.texture.orig.width), pos.x += charData.xAdvance + this._letterSpacing, maxLineHeight = Math.max(maxLineHeight, charData.yOffset + charData.texture.height), prevCharCode = charCode, lastBreakPos !== -1 && maxWidth > 0 && pos.x > maxWidth && (++spacesRemoved, utils.removeItems(chars, 1 + lastBreakPos - spacesRemoved, 1 + i - lastBreakPos), i = lastBreakPos, lastBreakPos = -1, lineWidths.push(lastBreakWidth), lineSpaces.push(chars.length > 0 ? chars[chars.length - 1].prevSpaces : 0), maxLineWidth = Math.max(maxLineWidth, lastBreakWidth), line++, pos.x = 0, pos.y += data.lineHeight, prevCharCode = null, spaceCount = 0);\n }\n const lastChar = charsInput[charsInput.length - 1];\n lastChar !== \"\\r\" && lastChar !== `\n` && (/(?:\\s)/.test(lastChar) && (lastLineWidth = lastBreakWidth), lineWidths.push(lastLineWidth), maxLineWidth = Math.max(maxLineWidth, lastLineWidth), lineSpaces.push(-1));\n const lineAlignOffsets = [];\n for (let i = 0; i <= line; i++) {\n let alignOffset = 0;\n this._align === \"right\" ? alignOffset = maxLineWidth - lineWidths[i] : this._align === \"center\" ? alignOffset = (maxLineWidth - lineWidths[i]) / 2 : this._align === \"justify\" && (alignOffset = lineSpaces[i] < 0 ? 0 : (maxLineWidth - lineWidths[i]) / lineSpaces[i]), lineAlignOffsets.push(alignOffset);\n }\n const lenChars = chars.length, pagesMeshData = {}, newPagesMeshData = [], activePagesMeshData = this._activePagesMeshData;\n pageMeshDataPool.push(...activePagesMeshData);\n for (let i = 0; i < lenChars; i++) {\n const texture = chars[i].texture, baseTextureUid = texture.baseTexture.uid;\n if (!pagesMeshData[baseTextureUid]) {\n let pageMeshData = pageMeshDataPool.pop();\n if (!pageMeshData) {\n const geometry = new MeshGeometry();\n let material, meshBlendMode;\n data.distanceFieldType === \"none\" ? (material = new MeshMaterial(Texture.EMPTY), meshBlendMode = BLEND_MODES.NORMAL) : (material = new MeshMaterial(\n Texture.EMPTY,\n { program: Program.from(msdfVert, msdfFrag), uniforms: { uFWidth: 0 } }\n ), meshBlendMode = BLEND_MODES.NORMAL_NPM);\n const mesh = new Mesh(geometry, material);\n mesh.blendMode = meshBlendMode, pageMeshData = {\n index: 0,\n indexCount: 0,\n vertexCount: 0,\n uvsCount: 0,\n total: 0,\n mesh,\n vertices: null,\n uvs: null,\n indices: null\n };\n }\n pageMeshData.index = 0, pageMeshData.indexCount = 0, pageMeshData.vertexCount = 0, pageMeshData.uvsCount = 0, pageMeshData.total = 0;\n const { _textureCache } = this;\n _textureCache[baseTextureUid] = _textureCache[baseTextureUid] || new Texture(texture.baseTexture), pageMeshData.mesh.texture = _textureCache[baseTextureUid], pageMeshData.mesh.tint = this._tintColor.value, newPagesMeshData.push(pageMeshData), pagesMeshData[baseTextureUid] = pageMeshData;\n }\n pagesMeshData[baseTextureUid].total++;\n }\n for (let i = 0; i < activePagesMeshData.length; i++)\n newPagesMeshData.includes(activePagesMeshData[i]) || this.removeChild(activePagesMeshData[i].mesh);\n for (let i = 0; i < newPagesMeshData.length; i++)\n newPagesMeshData[i].mesh.parent !== this && this.addChild(newPagesMeshData[i].mesh);\n this._activePagesMeshData = newPagesMeshData;\n for (const i in pagesMeshData) {\n const pageMeshData = pagesMeshData[i], total = pageMeshData.total;\n if (!(pageMeshData.indices?.length > 6 * total) || pageMeshData.vertices.length < Mesh.BATCHABLE_SIZE * 2)\n pageMeshData.vertices = new Float32Array(4 * 2 * total), pageMeshData.uvs = new Float32Array(4 * 2 * total), pageMeshData.indices = new Uint16Array(6 * total);\n else {\n const total2 = pageMeshData.total, vertices = pageMeshData.vertices;\n for (let i2 = total2 * 4 * 2; i2 < vertices.length; i2++)\n vertices[i2] = 0;\n }\n pageMeshData.mesh.size = 6 * total;\n }\n for (let i = 0; i < lenChars; i++) {\n const char = chars[i];\n let offset = char.position.x + lineAlignOffsets[char.line] * (this._align === \"justify\" ? char.prevSpaces : 1);\n this._roundPixels && (offset = Math.round(offset));\n const xPos = offset * scale, yPos = char.position.y * scale, texture = char.texture, pageMesh = pagesMeshData[texture.baseTexture.uid], textureFrame = texture.frame, textureUvs = texture._uvs, index = pageMesh.index++;\n pageMesh.indices[index * 6 + 0] = 0 + index * 4, pageMesh.indices[index * 6 + 1] = 1 + index * 4, pageMesh.indices[index * 6 + 2] = 2 + index * 4, pageMesh.indices[index * 6 + 3] = 0 + index * 4, pageMesh.indices[index * 6 + 4] = 2 + index * 4, pageMesh.indices[index * 6 + 5] = 3 + index * 4, pageMesh.vertices[index * 8 + 0] = xPos, pageMesh.vertices[index * 8 + 1] = yPos, pageMesh.vertices[index * 8 + 2] = xPos + textureFrame.width * scale, pageMesh.vertices[index * 8 + 3] = yPos, pageMesh.vertices[index * 8 + 4] = xPos + textureFrame.width * scale, pageMesh.vertices[index * 8 + 5] = yPos + textureFrame.height * scale, pageMesh.vertices[index * 8 + 6] = xPos, pageMesh.vertices[index * 8 + 7] = yPos + textureFrame.height * scale, pageMesh.uvs[index * 8 + 0] = textureUvs.x0, pageMesh.uvs[index * 8 + 1] = textureUvs.y0, pageMesh.uvs[index * 8 + 2] = textureUvs.x1, pageMesh.uvs[index * 8 + 3] = textureUvs.y1, pageMesh.uvs[index * 8 + 4] = textureUvs.x2, pageMesh.uvs[index * 8 + 5] = textureUvs.y2, pageMesh.uvs[index * 8 + 6] = textureUvs.x3, pageMesh.uvs[index * 8 + 7] = textureUvs.y3;\n }\n this._textWidth = maxLineWidth * scale, this._textHeight = (pos.y + data.lineHeight) * scale;\n for (const i in pagesMeshData) {\n const pageMeshData = pagesMeshData[i];\n if (this.anchor.x !== 0 || this.anchor.y !== 0) {\n let vertexCount = 0;\n const anchorOffsetX = this._textWidth * this.anchor.x, anchorOffsetY = this._textHeight * this.anchor.y;\n for (let i2 = 0; i2 < pageMeshData.total; i2++)\n pageMeshData.vertices[vertexCount++] -= anchorOffsetX, pageMeshData.vertices[vertexCount++] -= anchorOffsetY, pageMeshData.vertices[vertexCount++] -= anchorOffsetX, pageMeshData.vertices[vertexCount++] -= anchorOffsetY, pageMeshData.vertices[vertexCount++] -= anchorOffsetX, pageMeshData.vertices[vertexCount++] -= anchorOffsetY, pageMeshData.vertices[vertexCount++] -= anchorOffsetX, pageMeshData.vertices[vertexCount++] -= anchorOffsetY;\n }\n this._maxLineHeight = maxLineHeight * scale;\n const vertexBuffer = pageMeshData.mesh.geometry.getBuffer(\"aVertexPosition\"), textureBuffer = pageMeshData.mesh.geometry.getBuffer(\"aTextureCoord\"), indexBuffer = pageMeshData.mesh.geometry.getIndex();\n vertexBuffer.data = pageMeshData.vertices, textureBuffer.data = pageMeshData.uvs, indexBuffer.data = pageMeshData.indices, vertexBuffer.update(), textureBuffer.update(), indexBuffer.update();\n }\n for (let i = 0; i < chars.length; i++)\n charRenderDataPool.push(chars[i]);\n this._font = data, this.dirty = !1;\n }\n updateTransform() {\n this.validate(), this.containerUpdateTransform();\n }\n _render(renderer) {\n this._autoResolution && this._resolution !== renderer.resolution && (this._resolution = renderer.resolution, this.dirty = !0);\n const { distanceFieldRange, distanceFieldType, size } = BitmapFont.available[this._fontName];\n if (distanceFieldType !== \"none\") {\n const { a, b, c, d } = this.worldTransform, dx = Math.sqrt(a * a + b * b), dy = Math.sqrt(c * c + d * d), worldScale = (Math.abs(dx) + Math.abs(dy)) / 2, fontScale = this.fontSize / size, resolution = renderer._view.resolution;\n for (const mesh of this._activePagesMeshData)\n mesh.mesh.shader.uniforms.uFWidth = worldScale * distanceFieldRange * fontScale * resolution;\n }\n super._render(renderer);\n }\n /**\n * Validates text before calling parent's getLocalBounds\n * @returns - The rectangular bounding area\n */\n getLocalBounds() {\n return this.validate(), super.getLocalBounds();\n }\n /**\n * Updates text when needed\n * @private\n */\n validate() {\n const font = BitmapFont.available[this._fontName];\n if (!font)\n throw new Error(`Missing BitmapFont \"${this._fontName}\"`);\n this._font !== font && (this.dirty = !0), this.dirty && this.updateText();\n }\n /**\n * The tint of the BitmapText object.\n * @default 0xffffff\n */\n get tint() {\n return this._tintColor.value;\n }\n set tint(value) {\n if (this.tint !== value) {\n this._tintColor.setValue(value);\n for (let i = 0; i < this._activePagesMeshData.length; i++)\n this._activePagesMeshData[i].mesh.tint = value;\n }\n }\n /**\n * The alignment of the BitmapText object.\n * @member {string}\n * @default 'left'\n */\n get align() {\n return this._align;\n }\n set align(value) {\n this._align !== value && (this._align = value, this.dirty = !0);\n }\n /** The name of the BitmapFont. */\n get fontName() {\n return this._fontName;\n }\n set fontName(value) {\n if (!BitmapFont.available[value])\n throw new Error(`Missing BitmapFont \"${value}\"`);\n this._fontName !== value && (this._fontName = value, this.dirty = !0);\n }\n /** The size of the font to display. */\n get fontSize() {\n return this._fontSize ?? BitmapFont.available[this._fontName].size;\n }\n set fontSize(value) {\n this._fontSize !== value && (this._fontSize = value, this.dirty = !0);\n }\n /**\n * The anchor sets the origin point of the text.\n *\n * The default is `(0,0)`, this means the text's origin is the top left.\n *\n * Setting the anchor to `(0.5,0.5)` means the text's origin is centered.\n *\n * Setting the anchor to `(1,1)` would mean the text's origin point will be the bottom right corner.\n */\n get anchor() {\n return this._anchor;\n }\n set anchor(value) {\n typeof value == \"number\" ? this._anchor.set(value) : this._anchor.copyFrom(value);\n }\n /** The text of the BitmapText object. */\n get text() {\n return this._text;\n }\n set text(text) {\n text = String(text ?? \"\"), this._text !== text && (this._text = text, this.dirty = !0);\n }\n /**\n * The max width of this bitmap text in pixels. If the text provided is longer than the\n * value provided, line breaks will be automatically inserted in the last whitespace.\n * Disable by setting the value to 0.\n */\n get maxWidth() {\n return this._maxWidth;\n }\n set maxWidth(value) {\n this._maxWidth !== value && (this._maxWidth = value, this.dirty = !0);\n }\n /**\n * The max line height. This is useful when trying to use the total height of the Text,\n * i.e. when trying to vertically align.\n * @readonly\n */\n get maxLineHeight() {\n return this.validate(), this._maxLineHeight;\n }\n /**\n * The width of the overall text, different from fontSize,\n * which is defined in the style object.\n * @readonly\n */\n get textWidth() {\n return this.validate(), this._textWidth;\n }\n /** Additional space between characters. */\n get letterSpacing() {\n return this._letterSpacing;\n }\n set letterSpacing(value) {\n this._letterSpacing !== value && (this._letterSpacing = value, this.dirty = !0);\n }\n /**\n * If true PixiJS will Math.floor() x/y values when rendering, stopping pixel interpolation.\n * Advantages can include sharper image quality (like text) and faster rendering on canvas.\n * The main disadvantage is movement of objects may appear less smooth.\n * To set the global default, change {@link PIXI.settings.ROUND_PIXELS}\n * @default PIXI.settings.ROUND_PIXELS\n */\n get roundPixels() {\n return this._roundPixels;\n }\n set roundPixels(value) {\n value !== this._roundPixels && (this._roundPixels = value, this.dirty = !0);\n }\n /**\n * The height of the overall text, different from fontSize,\n * which is defined in the style object.\n * @readonly\n */\n get textHeight() {\n return this.validate(), this._textHeight;\n }\n /**\n * The resolution / device pixel ratio of the canvas.\n *\n * This is set to automatically match the renderer resolution by default, but can be overridden by setting manually.\n * @default 1\n */\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._autoResolution = !1, this._resolution !== value && (this._resolution = value, this.dirty = !0);\n }\n destroy(options) {\n const { _textureCache } = this, pageMeshDataPool = BitmapFont.available[this._fontName].distanceFieldType === \"none\" ? pageMeshDataDefaultPageMeshData : pageMeshDataMSDFPageMeshData;\n pageMeshDataPool.push(...this._activePagesMeshData);\n for (const pageMeshData of this._activePagesMeshData)\n this.removeChild(pageMeshData.mesh);\n this._activePagesMeshData = [], pageMeshDataPool.filter((page) => _textureCache[page.mesh.texture.baseTexture.uid]).forEach((page) => {\n page.mesh.texture = Texture.EMPTY;\n });\n for (const id in _textureCache)\n _textureCache[id].destroy(), delete _textureCache[id];\n this._font = null, this._tintColor = null, this._textureCache = null, super.destroy(options);\n }\n};\n_BitmapText.styleDefaults = {\n align: \"left\",\n tint: 16777215,\n maxWidth: 0,\n letterSpacing: 0\n};\nlet BitmapText = _BitmapText;\nexport {\n BitmapText\n};\n//# sourceMappingURL=BitmapText.mjs.map\n","import { LoaderParserPriority, copySearchParams } from \"@pixi/assets\";\nimport { ExtensionType, utils, settings, extensions } from \"@pixi/core\";\nimport { BitmapFont } from \"./BitmapFont.mjs\";\nimport \"./formats/index.mjs\";\nimport { TextFormat } from \"./formats/TextFormat.mjs\";\nimport { XMLStringFormat } from \"./formats/XMLStringFormat.mjs\";\nconst validExtensions = [\".xml\", \".fnt\"], loadBitmapFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal\n },\n name: \"loadBitmapFont\",\n test(url) {\n return validExtensions.includes(utils.path.extname(url).toLowerCase());\n },\n async testParse(data) {\n return TextFormat.test(data) || XMLStringFormat.test(data);\n },\n async parse(asset, data, loader) {\n const fontData = TextFormat.test(asset) ? TextFormat.parse(asset) : XMLStringFormat.parse(asset), { src } = data, { page: pages } = fontData, textureUrls = [];\n for (let i = 0; i < pages.length; ++i) {\n const pageFile = pages[i].file;\n let imagePath = utils.path.join(utils.path.dirname(src), pageFile);\n imagePath = copySearchParams(imagePath, src), textureUrls.push(imagePath);\n }\n const loadedTextures = await loader.load(textureUrls), textures = textureUrls.map((url) => loadedTextures[url]);\n return BitmapFont.install(fontData, textures, !0);\n },\n async load(url, _options) {\n return (await settings.ADAPTER.fetch(url)).text();\n },\n unload(bitmapFont) {\n bitmapFont.destroy();\n }\n};\nextensions.add(loadBitmapFont);\nexport {\n loadBitmapFont\n};\n//# sourceMappingURL=loadBitmapFont.mjs.map\n","import { settings, utils } from \"@pixi/core\";\nimport { TextStyle } from \"@pixi/text\";\nconst _HTMLTextStyle = class _HTMLTextStyle2 extends TextStyle {\n constructor() {\n super(...arguments), this._fonts = [], this._overrides = [], this._stylesheet = \"\", this.fontsDirty = !1;\n }\n /**\n * Convert a TextStyle to HTMLTextStyle\n * @param originalStyle\n * @example\n * import {TextStyle } from 'pixi.js';\n * import {HTMLTextStyle} from '@pixi/text-html';\n * const style = new TextStyle();\n * const htmlStyle = HTMLTextStyle.from(style);\n */\n static from(originalStyle) {\n return new _HTMLTextStyle2(\n Object.keys(_HTMLTextStyle2.defaultOptions).reduce((obj, prop) => ({ ...obj, [prop]: originalStyle[prop] }), {})\n );\n }\n /** Clear the current font */\n cleanFonts() {\n this._fonts.length > 0 && (this._fonts.forEach((font) => {\n URL.revokeObjectURL(font.src), font.refs--, font.refs === 0 && (font.fontFace && document.fonts.delete(font.fontFace), delete _HTMLTextStyle2.availableFonts[font.originalUrl]);\n }), this.fontFamily = \"Arial\", this._fonts.length = 0, this.styleID++, this.fontsDirty = !0);\n }\n /**\n * Because of how HTMLText renders, fonts need to be imported\n * @param url\n * @param options\n */\n loadFont(url, options = {}) {\n const { availableFonts } = _HTMLTextStyle2;\n if (availableFonts[url]) {\n const font = availableFonts[url];\n return this._fonts.push(font), font.refs++, this.styleID++, this.fontsDirty = !0, Promise.resolve();\n }\n return settings.ADAPTER.fetch(url).then((response) => response.blob()).then(async (blob) => new Promise((resolve, reject) => {\n const src = URL.createObjectURL(blob), reader = new FileReader();\n reader.onload = () => resolve([src, reader.result]), reader.onerror = reject, reader.readAsDataURL(blob);\n })).then(async ([src, dataSrc]) => {\n const font = Object.assign({\n family: utils.path.basename(url, utils.path.extname(url)),\n weight: \"normal\",\n style: \"normal\",\n display: \"auto\",\n src,\n dataSrc,\n refs: 1,\n originalUrl: url,\n fontFace: null\n }, options);\n availableFonts[url] = font, this._fonts.push(font), this.styleID++;\n const fontFace = new FontFace(font.family, `url(${font.src})`, {\n weight: font.weight,\n style: font.style,\n display: font.display\n });\n font.fontFace = fontFace, await fontFace.load(), document.fonts.add(fontFace), await document.fonts.ready, this.styleID++, this.fontsDirty = !0;\n });\n }\n /**\n * Add a style override, this can be any CSS property\n * it will override any built-in style. This is the\n * property and the value as a string (e.g., `color: red`).\n * This will override any other internal style.\n * @param {string} value - CSS style(s) to add.\n * @example\n * style.addOverride('background-color: red');\n */\n addOverride(...value) {\n const toAdd = value.filter((v) => !this._overrides.includes(v));\n toAdd.length > 0 && (this._overrides.push(...toAdd), this.styleID++);\n }\n /**\n * Remove any overrides that match the value.\n * @param {string} value - CSS style to remove.\n * @example\n * style.removeOverride('background-color: red');\n */\n removeOverride(...value) {\n const toRemove = value.filter((v) => this._overrides.includes(v));\n toRemove.length > 0 && (this._overrides = this._overrides.filter((v) => !toRemove.includes(v)), this.styleID++);\n }\n /**\n * Internally converts all of the style properties into CSS equivalents.\n * @param scale\n * @returns The CSS style string, for setting `style` property of root HTMLElement.\n */\n toCSS(scale) {\n return [\n `transform: scale(${scale})`,\n \"transform-origin: top left\",\n \"display: inline-block\",\n `color: ${this.normalizeColor(this.fill)}`,\n `font-size: ${this.fontSize}px`,\n `font-family: ${this.fontFamily}`,\n `font-weight: ${this.fontWeight}`,\n `font-style: ${this.fontStyle}`,\n `font-variant: ${this.fontVariant}`,\n `letter-spacing: ${this.letterSpacing}px`,\n `text-align: ${this.align}`,\n `padding: ${this.padding}px`,\n `white-space: ${this.whiteSpace}`,\n ...this.lineHeight ? [`line-height: ${this.lineHeight}px`] : [],\n ...this.wordWrap ? [\n `word-wrap: ${this.breakWords ? \"break-all\" : \"break-word\"}`,\n `max-width: ${this.wordWrapWidth}px`\n ] : [],\n ...this.strokeThickness ? [\n `-webkit-text-stroke-width: ${this.strokeThickness}px`,\n `-webkit-text-stroke-color: ${this.normalizeColor(this.stroke)}`,\n `text-stroke-width: ${this.strokeThickness}px`,\n `text-stroke-color: ${this.normalizeColor(this.stroke)}`,\n \"paint-order: stroke\"\n ] : [],\n ...this.dropShadow ? [this.dropShadowToCSS()] : [],\n ...this._overrides\n ].join(\";\");\n }\n /** Get the font CSS styles from the loaded font, If available. */\n toGlobalCSS() {\n return this._fonts.reduce((result, font) => `${result}\n @font-face {\n font-family: \"${font.family}\";\n src: url('${font.dataSrc}');\n font-weight: ${font.weight};\n font-style: ${font.style};\n font-display: ${font.display};\n }`, this._stylesheet);\n }\n /** Internal stylesheet contents, useful for creating rules for rendering */\n get stylesheet() {\n return this._stylesheet;\n }\n set stylesheet(value) {\n this._stylesheet !== value && (this._stylesheet = value, this.styleID++);\n }\n /**\n * Convert numerical colors into hex-strings\n * @param color\n */\n normalizeColor(color) {\n return Array.isArray(color) && (color = utils.rgb2hex(color)), typeof color == \"number\" ? utils.hex2string(color) : color;\n }\n /** Convert the internal drop-shadow settings to CSS text-shadow */\n dropShadowToCSS() {\n let color = this.normalizeColor(this.dropShadowColor);\n const alpha = this.dropShadowAlpha, x = Math.round(Math.cos(this.dropShadowAngle) * this.dropShadowDistance), y = Math.round(Math.sin(this.dropShadowAngle) * this.dropShadowDistance);\n color.startsWith(\"#\") && alpha < 1 && (color += (alpha * 255 | 0).toString(16).padStart(2, \"0\"));\n const position = `${x}px ${y}px`;\n return this.dropShadowBlur > 0 ? `text-shadow: ${position} ${this.dropShadowBlur}px ${color}` : `text-shadow: ${position} ${color}`;\n }\n /** Resets all properties to the defaults specified in TextStyle.prototype._default */\n reset() {\n Object.assign(this, _HTMLTextStyle2.defaultOptions);\n }\n /**\n * Called after the image is loaded but before drawing to the canvas.\n * Mostly used to handle Safari's font loading bug.\n * @ignore\n */\n onBeforeDraw() {\n const { fontsDirty: prevFontsDirty } = this;\n return this.fontsDirty = !1, this.isSafari && this._fonts.length > 0 && prevFontsDirty ? new Promise((resolve) => setTimeout(resolve, 100)) : Promise.resolve();\n }\n /**\n * Proving that Safari is the new IE\n * @ignore\n */\n get isSafari() {\n const { userAgent } = settings.ADAPTER.getNavigator();\n return /^((?!chrome|android).)*safari/i.test(userAgent);\n }\n set fillGradientStops(_value) {\n console.warn(\"[HTMLTextStyle] fillGradientStops is not supported by HTMLText\");\n }\n get fillGradientStops() {\n return super.fillGradientStops;\n }\n set fillGradientType(_value) {\n console.warn(\"[HTMLTextStyle] fillGradientType is not supported by HTMLText\");\n }\n get fillGradientType() {\n return super.fillGradientType;\n }\n set miterLimit(_value) {\n console.warn(\"[HTMLTextStyle] miterLimit is not supported by HTMLText\");\n }\n get miterLimit() {\n return super.miterLimit;\n }\n set trim(_value) {\n console.warn(\"[HTMLTextStyle] trim is not supported by HTMLText\");\n }\n get trim() {\n return super.trim;\n }\n set textBaseline(_value) {\n console.warn(\"[HTMLTextStyle] textBaseline is not supported by HTMLText\");\n }\n get textBaseline() {\n return super.textBaseline;\n }\n set leading(_value) {\n console.warn(\"[HTMLTextStyle] leading is not supported by HTMLText\");\n }\n get leading() {\n return super.leading;\n }\n set lineJoin(_value) {\n console.warn(\"[HTMLTextStyle] lineJoin is not supported by HTMLText\");\n }\n get lineJoin() {\n return super.lineJoin;\n }\n};\n_HTMLTextStyle.availableFonts = {}, /**\n* List of default options, these are largely the same as TextStyle,\n* with the exception of whiteSpace, which is set to 'normal' by default.\n*/\n_HTMLTextStyle.defaultOptions = {\n /** Align */\n align: \"left\",\n /** Break words */\n breakWords: !1,\n /** Drop shadow */\n dropShadow: !1,\n /** Drop shadow alpha */\n dropShadowAlpha: 1,\n /**\n * Drop shadow angle\n * @type {number}\n * @default Math.PI / 6\n */\n dropShadowAngle: Math.PI / 6,\n /** Drop shadow blur */\n dropShadowBlur: 0,\n /** Drop shadow color */\n dropShadowColor: \"black\",\n /** Drop shadow distance */\n dropShadowDistance: 5,\n /** Fill */\n fill: \"black\",\n /** Font family */\n fontFamily: \"Arial\",\n /** Font size */\n fontSize: 26,\n /** Font style */\n fontStyle: \"normal\",\n /** Font variant */\n fontVariant: \"normal\",\n /** Font weight */\n fontWeight: \"normal\",\n /** Letter spacing */\n letterSpacing: 0,\n /** Line height */\n lineHeight: 0,\n /** Padding */\n padding: 0,\n /** Stroke */\n stroke: \"black\",\n /** Stroke thickness */\n strokeThickness: 0,\n /** White space */\n whiteSpace: \"normal\",\n /** Word wrap */\n wordWrap: !1,\n /** Word wrap width */\n wordWrapWidth: 100\n};\nlet HTMLTextStyle = _HTMLTextStyle;\nexport {\n HTMLTextStyle\n};\n//# sourceMappingURL=HTMLTextStyle.mjs.map\n","import { Texture, settings, Rectangle, utils } from \"@pixi/core\";\nimport { Sprite } from \"@pixi/sprite\";\nimport { TextStyle } from \"@pixi/text\";\nimport { HTMLTextStyle } from \"./HTMLTextStyle.mjs\";\nconst _HTMLText = class _HTMLText2 extends Sprite {\n /**\n * @param {string} [text] - Text contents\n * @param {PIXI.HTMLTextStyle|PIXI.TextStyle|PIXI.ITextStyle} [style] - Style setting to use.\n * Strongly recommend using an HTMLTextStyle object. Providing a PIXI.TextStyle\n * will convert the TextStyle to an HTMLTextStyle and will no longer be linked.\n */\n constructor(text = \"\", style = {}) {\n super(Texture.EMPTY), this._text = null, this._style = null, this._autoResolution = !0, this.localStyleID = -1, this.dirty = !1, this._updateID = 0, this.ownsStyle = !1;\n const image = new Image(), texture = Texture.from(image, {\n scaleMode: settings.SCALE_MODE,\n resourceOptions: {\n autoLoad: !1\n }\n });\n texture.orig = new Rectangle(), texture.trim = new Rectangle(), this.texture = texture;\n const nssvg = \"http://www.w3.org/2000/svg\", nsxhtml = \"http://www.w3.org/1999/xhtml\", svgRoot = document.createElementNS(nssvg, \"svg\"), foreignObject = document.createElementNS(nssvg, \"foreignObject\"), domElement = document.createElementNS(nsxhtml, \"div\"), styleElement = document.createElementNS(nsxhtml, \"style\");\n foreignObject.setAttribute(\"width\", \"10000\"), foreignObject.setAttribute(\"height\", \"10000\"), foreignObject.style.overflow = \"hidden\", svgRoot.appendChild(foreignObject), this.maxWidth = _HTMLText2.defaultMaxWidth, this.maxHeight = _HTMLText2.defaultMaxHeight, this._domElement = domElement, this._styleElement = styleElement, this._svgRoot = svgRoot, this._foreignObject = foreignObject, this._foreignObject.appendChild(styleElement), this._foreignObject.appendChild(domElement), this._image = image, this._loadImage = new Image(), this._autoResolution = _HTMLText2.defaultAutoResolution, this._resolution = _HTMLText2.defaultResolution ?? settings.RESOLUTION, this.text = text, this.style = style;\n }\n /**\n * Calculate the size of the output text without actually drawing it.\n * This includes the `padding` in the `style` object.\n * This can be used as a fast-pass to do things like text-fitting.\n * @param {object} [overrides] - Overrides for the text, style, and resolution.\n * @param {string} [overrides.text] - The text to measure, if not specified, the current text is used.\n * @param {PIXI.HTMLTextStyle} [overrides.style] - The style to measure, if not specified, the current style is used.\n * @param {number} [overrides.resolution] - The resolution to measure, if not specified, the current resolution is used.\n * @returns {PIXI.ISize} Width and height of the measured text.\n */\n measureText(overrides) {\n const { text, style, resolution } = Object.assign({\n text: this._text,\n style: this._style,\n resolution: this._resolution\n }, overrides);\n Object.assign(this._domElement, {\n innerHTML: text,\n style: style.toCSS(resolution)\n }), this._styleElement.textContent = style.toGlobalCSS(), document.body.appendChild(this._svgRoot);\n const contentBounds = this._domElement.getBoundingClientRect();\n this._svgRoot.remove();\n const { width, height } = contentBounds;\n (width > this.maxWidth || height > this.maxHeight) && console.warn(\"[HTMLText] Large expanse of text, increase HTMLText.maxWidth or HTMLText.maxHeight property.\");\n const contentWidth = Math.min(this.maxWidth, Math.ceil(width)), contentHeight = Math.min(this.maxHeight, Math.ceil(height));\n return this._svgRoot.setAttribute(\"width\", contentWidth.toString()), this._svgRoot.setAttribute(\"height\", contentHeight.toString()), text !== this._text && (this._domElement.innerHTML = this._text), style !== this._style && (Object.assign(this._domElement, { style: this._style?.toCSS(resolution) }), this._styleElement.textContent = this._style?.toGlobalCSS()), {\n width: contentWidth + style.padding * 2,\n height: contentHeight + style.padding * 2\n };\n }\n /**\n * Manually refresh the text.\n * @public\n * @param {boolean} respectDirty - Whether to abort updating the\n * text if the Text isn't dirty and the function is called.\n */\n async updateText(respectDirty = !0) {\n const { style, _image: image, _loadImage: loadImage } = this;\n if (this.localStyleID !== style.styleID && (this.dirty = !0, this.localStyleID = style.styleID), !this.dirty && respectDirty)\n return;\n const { width, height } = this.measureText();\n image.width = loadImage.width = Math.ceil(Math.max(1, width)), image.height = loadImage.height = Math.ceil(Math.max(1, height)), this._updateID++;\n const updateID = this._updateID;\n await new Promise((resolve) => {\n loadImage.onload = async () => {\n if (updateID < this._updateID) {\n resolve();\n return;\n }\n await style.onBeforeDraw(), image.src = loadImage.src, loadImage.onload = null, loadImage.src = \"\", this.updateTexture(), resolve();\n };\n const svgURL = new XMLSerializer().serializeToString(this._svgRoot);\n loadImage.src = `data:image/svg+xml;charset=utf8,${encodeURIComponent(svgURL)}`;\n });\n }\n /** The raw image element that is rendered under-the-hood. */\n get source() {\n return this._image;\n }\n /**\n * Update the texture resource.\n * @private\n */\n updateTexture() {\n const { style, texture, _image: image, resolution } = this, { padding } = style, { baseTexture } = texture;\n texture.trim.width = texture._frame.width = image.width / resolution, texture.trim.height = texture._frame.height = image.height / resolution, texture.trim.x = -padding, texture.trim.y = -padding, texture.orig.width = texture._frame.width - padding * 2, texture.orig.height = texture._frame.height - padding * 2, this._onTextureUpdate(), baseTexture.setRealSize(image.width, image.height, resolution), this.dirty = !1;\n }\n /**\n * Renders the object using the WebGL renderer\n * @param {PIXI.Renderer} renderer - The renderer\n * @private\n */\n _render(renderer) {\n this._autoResolution && this._resolution !== renderer.resolution && (this._resolution = renderer.resolution, this.dirty = !0), this.updateText(!0), super._render(renderer);\n }\n /**\n * Renders the object using the Canvas Renderer.\n * @private\n * @param {PIXI.CanvasRenderer} renderer - The renderer\n */\n _renderCanvas(renderer) {\n this._autoResolution && this._resolution !== renderer.resolution && (this._resolution = renderer.resolution, this.dirty = !0), this.updateText(!0), super._renderCanvas(renderer);\n }\n /**\n * Get the local bounds.\n * @param {PIXI.Rectangle} rect - Input rectangle.\n * @returns {PIXI.Rectangle} Local bounds\n */\n getLocalBounds(rect) {\n return this.updateText(!0), super.getLocalBounds(rect);\n }\n _calculateBounds() {\n this.updateText(!0), this.calculateVertices(), this._bounds.addQuad(this.vertexData);\n }\n /**\n * Handle dirty style changes\n * @private\n */\n _onStyleChange() {\n this.dirty = !0;\n }\n /**\n * Destroy this Text object. Don't use after calling.\n * @param {boolean|object} options - Same as Sprite destroy options.\n */\n destroy(options) {\n typeof options == \"boolean\" && (options = { children: options }), options = Object.assign({}, _HTMLText2.defaultDestroyOptions, options), super.destroy(options);\n const forceClear = null;\n this.ownsStyle && this._style?.cleanFonts(), this._style = forceClear, this._svgRoot?.remove(), this._svgRoot = forceClear, this._domElement?.remove(), this._domElement = forceClear, this._foreignObject?.remove(), this._foreignObject = forceClear, this._styleElement?.remove(), this._styleElement = forceClear, this._loadImage.src = \"\", this._loadImage.onload = null, this._loadImage = forceClear, this._image.src = \"\", this._image = forceClear;\n }\n /**\n * Get the width in pixels.\n * @member {number}\n */\n get width() {\n return this.updateText(!0), Math.abs(this.scale.x) * this._image.width / this.resolution;\n }\n set width(value) {\n this.updateText(!0);\n const s = utils.sign(this.scale.x) || 1;\n this.scale.x = s * value / this._image.width / this.resolution, this._width = value;\n }\n /**\n * Get the height in pixels.\n * @member {number}\n */\n get height() {\n return this.updateText(!0), Math.abs(this.scale.y) * this._image.height / this.resolution;\n }\n set height(value) {\n this.updateText(!0);\n const s = utils.sign(this.scale.y) || 1;\n this.scale.y = s * value / this._image.height / this.resolution, this._height = value;\n }\n /** The base style to render with text. */\n get style() {\n return this._style;\n }\n set style(style) {\n this._style !== style && (style = style || {}, style instanceof HTMLTextStyle ? (this.ownsStyle = !1, this._style = style) : style instanceof TextStyle ? (console.warn(\"[HTMLText] Cloning TextStyle, if this is not what you want, use HTMLTextStyle\"), this.ownsStyle = !0, this._style = HTMLTextStyle.from(style)) : (this.ownsStyle = !0, this._style = new HTMLTextStyle(style)), this.localStyleID = -1, this.dirty = !0);\n }\n /**\n * Contents of text. This can be HTML text and include tags.\n * @example\n * const text = new HTMLText('This is a
styled text!');\n * @member {string}\n */\n get text() {\n return this._text;\n }\n set text(text) {\n text = String(text === \"\" || text === null || text === void 0 ? \" \" : text), text = this.sanitiseText(text), this._text !== text && (this._text = text, this.dirty = !0);\n }\n /**\n * The resolution / device pixel ratio of the canvas.\n * This is set to automatically match the renderer resolution by default, but can be overridden by setting manually.\n * @member {number}\n * @default 1\n */\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._autoResolution = !1, this._resolution !== value && (this._resolution = value, this.dirty = !0);\n }\n /**\n * Sanitise text - replace `
` with `
`, ` ` with ` `\n * @param text\n * @see https://www.sitepoint.com/community/t/xhtml-1-0-transitional-xml-parsing-error-entity-nbsp-not-defined/3392/3\n */\n sanitiseText(text) {\n return text.replace(/
/gi, \"
\").replace(/
/gi, \"
\").replace(/ /gi, \" \");\n }\n};\n_HTMLText.defaultDestroyOptions = {\n texture: !0,\n children: !1,\n baseTexture: !0\n}, /** Default maxWidth, set at construction */\n_HTMLText.defaultMaxWidth = 2024, /** Default maxHeight, set at construction */\n_HTMLText.defaultMaxHeight = 2024, /** Default autoResolution for all HTMLText objects */\n_HTMLText.defaultAutoResolution = !0;\nlet HTMLText = _HTMLText;\nexport {\n HTMLText\n};\n//# sourceMappingURL=HTMLText.mjs.map\n","function drawChamferRect(x, y, width, height, chamfer) {\n if (chamfer <= 0)\n return this.drawRect(x, y, width, height);\n const inset = Math.min(chamfer, Math.min(width, height) / 2), right = x + width, bottom = y + height, points = [\n x + inset,\n y,\n right - inset,\n y,\n right,\n y + inset,\n right,\n bottom - inset,\n right - inset,\n bottom,\n x + inset,\n bottom,\n x,\n bottom - inset,\n x,\n y + inset\n ];\n for (let i = points.length - 1; i >= 2; i -= 2)\n points[i] === points[i - 2] && points[i - 1] === points[i - 3] && points.splice(i - 1, 2);\n return this.drawPolygon(points);\n}\nexport {\n drawChamferRect\n};\n//# sourceMappingURL=drawChamferRect.mjs.map\n","function drawFilletRect(x, y, width, height, fillet) {\n if (fillet === 0)\n return this.drawRect(x, y, width, height);\n const maxFillet = Math.min(width, height) / 2, inset = Math.min(maxFillet, Math.max(-maxFillet, fillet)), right = x + width, bottom = y + height, dir = inset < 0 ? -inset : 0, size = Math.abs(inset);\n return this.moveTo(x, y + size).arcTo(x + dir, y + dir, x + size, y, size).lineTo(right - size, y).arcTo(right - dir, y + dir, right, y + size, size).lineTo(right, bottom - size).arcTo(right - dir, bottom - dir, x + width - size, bottom, size).lineTo(x + size, bottom).arcTo(x + dir, bottom - dir, x, bottom - size, size).closePath();\n}\nexport {\n drawFilletRect\n};\n//# sourceMappingURL=drawFilletRect.mjs.map\n","function drawRegularPolygon(x, y, radius, sides, rotation = 0) {\n sides = Math.max(sides | 0, 3);\n const startAngle = -1 * Math.PI / 2 + rotation, delta = Math.PI * 2 / sides, polygon = [];\n for (let i = 0; i < sides; i++) {\n const angle = i * delta + startAngle;\n polygon.push(\n x + radius * Math.cos(angle),\n y + radius * Math.sin(angle)\n );\n }\n return this.drawPolygon(polygon);\n}\nexport {\n drawRegularPolygon\n};\n//# sourceMappingURL=drawRegularPolygon.mjs.map\n","function drawRoundedPolygon(x, y, radius, sides, corner, rotation = 0) {\n if (sides = Math.max(sides | 0, 3), corner <= 0)\n return this.drawRegularPolygon(x, y, radius, sides, rotation);\n const sideLength = radius * Math.sin(Math.PI / sides) - 1e-3;\n corner = Math.min(corner, sideLength);\n const startAngle = -1 * Math.PI / 2 + rotation, delta = Math.PI * 2 / sides, internalAngle = (sides - 2) * Math.PI / sides / 2;\n for (let i = 0; i < sides; i++) {\n const angle = i * delta + startAngle, x0 = x + radius * Math.cos(angle), y0 = y + radius * Math.sin(angle), a1 = angle + Math.PI + internalAngle, a2 = angle - Math.PI - internalAngle, x1 = x0 + corner * Math.cos(a1), y1 = y0 + corner * Math.sin(a1), x3 = x0 + corner * Math.cos(a2), y3 = y0 + corner * Math.sin(a2);\n i === 0 ? this.moveTo(x1, y1) : this.lineTo(x1, y1), this.quadraticCurveTo(x0, y0, x3, y3);\n }\n return this.closePath();\n}\nexport {\n drawRoundedPolygon\n};\n//# sourceMappingURL=drawRoundedPolygon.mjs.map\n","function roundedShapeArc(g, points, radius) {\n const vecFrom = (p, pp) => {\n const x = pp.x - p.x, y = pp.y - p.y, len = Math.sqrt(x * x + y * y), nx = x / len, ny = y / len;\n return { len, nx, ny };\n }, sharpCorner = (i, p) => {\n i === 0 ? g.moveTo(p.x, p.y) : g.lineTo(p.x, p.y);\n };\n let p1 = points[points.length - 1];\n for (let i = 0; i < points.length; i++) {\n const p2 = points[i % points.length], pRadius = p2.radius ?? radius;\n if (pRadius <= 0) {\n sharpCorner(i, p2), p1 = p2;\n continue;\n }\n const p3 = points[(i + 1) % points.length], v1 = vecFrom(p2, p1), v2 = vecFrom(p2, p3);\n if (v1.len < 1e-4 || v2.len < 1e-4) {\n sharpCorner(i, p2), p1 = p2;\n continue;\n }\n let angle = Math.asin(v1.nx * v2.ny - v1.ny * v2.nx), radDirection = 1, drawDirection = !1;\n v1.nx * v2.nx - v1.ny * -v2.ny < 0 ? angle < 0 ? angle = Math.PI + angle : (angle = Math.PI - angle, radDirection = -1, drawDirection = !0) : angle > 0 && (radDirection = -1, drawDirection = !0);\n const halfAngle = angle / 2;\n let cRadius, lenOut = Math.abs(\n Math.cos(halfAngle) * pRadius / Math.sin(halfAngle)\n );\n lenOut > Math.min(v1.len / 2, v2.len / 2) ? (lenOut = Math.min(v1.len / 2, v2.len / 2), cRadius = Math.abs(lenOut * Math.sin(halfAngle) / Math.cos(halfAngle))) : cRadius = pRadius;\n const cX = p2.x + v2.nx * lenOut + -v2.ny * cRadius * radDirection, cY = p2.y + v2.ny * lenOut + v2.nx * cRadius * radDirection, startAngle = Math.atan2(v1.ny, v1.nx) + Math.PI / 2 * radDirection, endAngle = Math.atan2(v2.ny, v2.nx) - Math.PI / 2 * radDirection;\n i === 0 && g.moveTo(\n cX + Math.cos(startAngle) * cRadius,\n cY + Math.sin(startAngle) * cRadius\n ), g.arc(cX, cY, cRadius, startAngle, endAngle, drawDirection), p1 = p2;\n }\n}\nfunction roundedShapeQuadraticCurve(g, points, radius) {\n const distance = (p1, p2) => Math.sqrt((p1.x - p2.x) ** 2 + (p1.y - p2.y) ** 2), pointLerp = (p1, p2, t) => ({\n x: p1.x + (p2.x - p1.x) * t,\n y: p1.y + (p2.y - p1.y) * t\n }), numPoints = points.length;\n for (let i = 0; i < numPoints; i++) {\n const thisPoint = points[(i + 1) % numPoints], pRadius = thisPoint.radius ?? radius;\n if (pRadius <= 0) {\n i === 0 ? g.moveTo(thisPoint.x, thisPoint.y) : g.lineTo(thisPoint.x, thisPoint.y);\n continue;\n }\n const lastPoint = points[i], nextPoint = points[(i + 2) % numPoints], lastEdgeLength = distance(lastPoint, thisPoint);\n let start;\n if (lastEdgeLength < 1e-4)\n start = thisPoint;\n else {\n const lastOffsetDistance = Math.min(lastEdgeLength / 2, pRadius);\n start = pointLerp(\n thisPoint,\n lastPoint,\n lastOffsetDistance / lastEdgeLength\n );\n }\n const nextEdgeLength = distance(nextPoint, thisPoint);\n let end;\n if (nextEdgeLength < 1e-4)\n end = thisPoint;\n else {\n const nextOffsetDistance = Math.min(nextEdgeLength / 2, pRadius);\n end = pointLerp(\n thisPoint,\n nextPoint,\n nextOffsetDistance / nextEdgeLength\n );\n }\n i === 0 ? g.moveTo(start.x, start.y) : g.lineTo(start.x, start.y), g.quadraticCurveTo(thisPoint.x, thisPoint.y, end.x, end.y);\n }\n}\nfunction drawRoundedShape(points, radius, useQuadraticCurve) {\n return points.length < 3 ? this : (useQuadraticCurve ? roundedShapeQuadraticCurve(this, points, radius) : roundedShapeArc(this, points, radius), this.closePath());\n}\nexport {\n drawRoundedShape\n};\n//# sourceMappingURL=drawRoundedShape.mjs.map\n","import { Polygon, PI_2 } from \"@pixi/core\";\nclass Star extends Polygon {\n /**\n * @param x - Center X position of the star\n * @param y - Center Y position of the star\n * @param points - The number of points of the star, must be > 1\n * @param radius - The outer radius of the star\n * @param innerRadius - The inner radius between points, default half `radius`\n * @param rotation - The rotation of the star in radians, where 0 is vertical\n */\n constructor(x, y, points, radius, innerRadius, rotation = 0) {\n innerRadius = innerRadius || radius / 2;\n const startAngle = -1 * Math.PI / 2 + rotation, len = points * 2, delta = PI_2 / len, polygon = [];\n for (let i = 0; i < len; i++) {\n const r = i % 2 ? innerRadius : radius, angle = i * delta + startAngle;\n polygon.push(\n x + r * Math.cos(angle),\n y + r * Math.sin(angle)\n );\n }\n super(polygon);\n }\n}\nfunction drawStar(x, y, points, radius, innerRadius, rotation = 0) {\n return this.drawPolygon(new Star(x, y, points, radius, innerRadius, rotation));\n}\nexport {\n drawStar\n};\n//# sourceMappingURL=drawStar.mjs.map\n","function drawTorus(x, y, innerRadius, outerRadius, startArc = 0, endArc = Math.PI * 2) {\n return Math.abs(endArc - startArc) >= Math.PI * 2 ? this.drawCircle(x, y, outerRadius).beginHole().drawCircle(x, y, innerRadius).endHole() : (this.finishPoly(), this.arc(x, y, innerRadius, endArc, startArc, !0).arc(x, y, outerRadius, startArc, endArc, !1).finishPoly(), this);\n}\nexport {\n drawTorus\n};\n//# sourceMappingURL=drawTorus.mjs.map\n","import { Graphics } from \"@pixi/graphics\";\nimport { drawChamferRect } from \"./drawChamferRect.mjs\";\nimport { drawFilletRect } from \"./drawFilletRect.mjs\";\nimport { drawRegularPolygon } from \"./drawRegularPolygon.mjs\";\nimport { drawRoundedPolygon } from \"./drawRoundedPolygon.mjs\";\nimport { drawRoundedShape } from \"./drawRoundedShape.mjs\";\nimport { drawStar } from \"./drawStar.mjs\";\nimport { drawTorus } from \"./drawTorus.mjs\";\nObject.defineProperties(Graphics.prototype, {\n drawTorus: { value: drawTorus },\n drawChamferRect: { value: drawChamferRect },\n drawFilletRect: { value: drawFilletRect },\n drawRegularPolygon: { value: drawRegularPolygon },\n drawRoundedPolygon: { value: drawRoundedPolygon },\n drawRoundedShape: { value: drawRoundedShape },\n drawStar: { value: drawStar }\n});\n//# sourceMappingURL=index.mjs.map\n","async function r(e) {\n if (!e.app && !e.renderer && !e.stage)\n throw new Error(\"You must provide either an app or a renderer and stage\");\n e.app && (e.renderer = e.app.renderer, e.stage = e.app.stage), e.pixi || (e.pixi = await import(\"pixi.js\")), window.__PIXI_DEVTOOLS__ = {\n pixi: e.pixi,\n app: e.app,\n stage: e.stage,\n renderer: e.renderer,\n plugins: e.plugins\n };\n}\nexport {\n r as initDevtools\n};\n","\r\nexport default class DetectionData\r\n{\r\n public completeDeviceName:string = \"\";\r\n public formFactor:string = \"\";\r\n public height:number = 0;\r\n public iOS:boolean = false;\r\n public isHD:boolean = false;\r\n public isMobile:boolean = false;\r\n public isTouchDevice:boolean = false;\r\n public orientation:string = \"\";\r\n public width:number = 0;\r\n}","import {Application} from \"pixi.js\";\r\nimport DetectionData from \"../types/DetectionData.ts\";\r\n\r\nexport default class ConjugationModel\r\n{\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public app:Application | undefined;\r\n public assetPath:string;\r\n public assets:any;\r\n public attempts:number = 1;\r\n public fontFamilyA:string = \"sweaterschoolreg\";\r\n public fontFamilyB:string = \"guavacandy\";\r\n public iconFont:string = \"cpicons\";\r\n public includeVosotros:boolean;\r\n public practiceId:number = 3;\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private static _instance: ConjugationModel = new ConjugationModel();\r\n\r\n private _centerX:number = 0;\r\n private _centerY:number = 0;\r\n private _detectionData:DetectionData = new DetectionData();\r\n private _practiceData:any;\r\n private _stageHeight:number = 0;\r\n private _stageWidth:number = 0;\r\n private _urlParams:URLSearchParams = new URLSearchParams(window.location.search);\r\n\r\n public get centerX():number\r\n {\r\n if(this._centerX == 0)\r\n {\r\n this._centerX = this.app!.screen.width/2;\r\n }\r\n return this._centerX;\r\n }\r\n\r\n public get centerY():number\r\n {\r\n if(this._centerY == 0)\r\n {\r\n this._centerY = this.app!.screen.height/2;\r\n }\r\n return this._centerY;\r\n }\r\n\r\n public get orientation():string\r\n {\r\n return this._detectionData.orientation;\r\n }\r\n\r\n public set orientation(value:string)\r\n {\r\n this._detectionData.orientation = value;\r\n }\r\n\r\n public get detectionData():DetectionData\r\n {\r\n return this._detectionData;\r\n }\r\n\r\n public set detectionData(value:DetectionData)\r\n {\r\n this._detectionData.orientation = value.orientation;\r\n }\r\n\r\n public get isHD():boolean\r\n {\r\n return this._detectionData.isHD;\r\n }\r\n\r\n public set isHD(value:boolean)\r\n {\r\n this._detectionData.isHD = value;\r\n }\r\n\r\n public get isTouchDevice():boolean\r\n {\r\n return this._detectionData.isTouchDevice;\r\n }\r\n\r\n public set isTouchDevice(value:boolean)\r\n {\r\n this._detectionData.isTouchDevice = value;\r\n }\r\n\r\n public get practiceData():any\r\n {\r\n return this._practiceData;\r\n }\r\n\r\n public set practiceData(value:any)\r\n {\r\n this._practiceData = value;\r\n }\r\n\r\n public get screenHeight():number\r\n {\r\n if(this._stageHeight == 0)\r\n {\r\n this._stageHeight = this.app!.screen.height;\r\n }\r\n return this._stageHeight;\r\n }\r\n\r\n public get screenWidth():number\r\n {\r\n if(this._stageWidth == 0)\r\n {\r\n this._stageWidth = this.app!.screen.width;\r\n }\r\n return this._stageWidth;\r\n }\r\n\r\n public get urlParams():URLSearchParams\r\n {\r\n return this._urlParams;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public configValue(key:string, value:string):any\r\n {\r\n if(this.assets.assetsConfig && this.assets.assetsConfig[key] && this.assets.assetsConfig[key][value])\r\n {\r\n let val = this.assets.assetsConfig[key][value];\r\n switch(val)\r\n {\r\n case \"centerX\":\r\n val = this.centerX;\r\n break;\r\n case \"centerY\":\r\n val = this.centerY;\r\n break;\r\n }\r\n return val;\r\n }\r\n else\r\n {\r\n console.log(`ConjugationModel.configValue: No value found for key: ${key} and value: ${value}`);\r\n return 0;\r\n }\r\n }\r\n\r\n public static getInstance(): ConjugationModel\r\n {\r\n return this._instance;\r\n }\r\n\r\n}","import {Container} from \"pixi.js\";\r\nimport ConjugationModel from \"../models/ConjugationModel.ts\";\r\nimport IDisplayContainer from \"../interfaces/IDisplayContainer.ts\";\r\n\r\nexport default class DisplayContainer extends Container implements IDisplayContainer\r\n{\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private lastEventMode:any;\r\n\r\n //----------------------------------\r\n // Protected:\r\n //----------------------------------\r\n\r\n protected DEBUG_ALPHA:number = 1;\r\n protected DEBUG_COLOR_BB:number = 0x00ff00;\r\n protected DEBUG_COLOR_PP:number = 0xe600ff;\r\n protected DEBUG_LINE_WIDTH:number = 1;\r\n\r\n protected appModel:ConjugationModel;\r\n protected eventDispatcher:EventTarget = new EventTarget();\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Constructor\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n constructor()\r\n {\r\n super();\r\n this.name = \"DisplayContainer\"\r\n this.visible = false;\r\n this.appModel = ConjugationModel.getInstance();\r\n //this.lastEventMode = this.eventMode;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public addEvntListener(type:string, listener:EventListenerOrEventListenerObject, options?:boolean | AddEventListenerOptions):void\r\n {\r\n this.eventDispatcher.addEventListener(type, listener, options);\r\n }\r\n\r\n public create(creationCompleteCallback?:Function, show=true, enabled=true):void\r\n {\r\n if(show)\r\n {\r\n this.show();\r\n }\r\n if(!enabled)\r\n {\r\n this.disable();\r\n }\r\n //console.log(`${this.name} created`);\r\n }\r\n\r\n public destroy():void\r\n {\r\n let curChild:any;\r\n const len = this.children.length;\r\n for(let i:number=0; i\r\n {\r\n try\r\n {\r\n //@ts-ignore\r\n bfgccExit();\r\n }\r\n catch(e)\r\n {\r\n console.log(\"Error trying to exit: \", e);\r\n }\r\n };\r\n this.exitBtn.pivot.set(this.exitBtn.width/2, this.exitBtn.height/2);\r\n this.exitBtn.x = this.appModel.configValue(\"menu\", \"exitBtnX\");\r\n this.exitBtn.y = this.appModel.configValue(\"menu\", \"exitBtnY\");\r\n this.addChild(this.exitBtn);\r\n }\r\n\r\n private createLogo():void\r\n {\r\n this.logo = Sprite.from(\"menuLogo.png\");\r\n this.logo.pivot.set(this.logo.width/2, this.logo.height/2);\r\n this.logo.x = this.appModel.centerX;\r\n this.logo.y = this.appModel.centerY + this.appModel.configValue(\"menu\", \"logoCenterYOffset\");\r\n this.addChild(this.logo);\r\n }\r\n\r\n private destroyExitButton():void\r\n {\r\n if(this.exitBtn)\r\n {\r\n this.exitBtn.onclick = null;\r\n this.exitBtn.destroy();\r\n this.exitBtn = null;\r\n }\r\n }\r\n\r\n private handleClick = (e:MouseEvent):void =>\r\n {\r\n this.eventDispatcher.dispatchEvent(new CustomEvent(ConjugationPracticeEvent.MOVE_TO_OPTIONS));\r\n }\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public override create(creationCompleteCallback?:Function, show=true, enabled=true):void\r\n {\r\n this.createBackground();\r\n this.createLogo();\r\n this.createBeginButton();\r\n /*if(this.appModel.orientation === \"portrait\")\r\n {\r\n this.createExitButton();\r\n }*/\r\n super.create(creationCompleteCallback, show, enabled);\r\n }\r\n\r\n public override destroy():void\r\n {\r\n this.disable();\r\n this.destroyExitButton();\r\n super.destroy();\r\n }\r\n}","import DisplayContainer from \"../components/DisplayContainer.ts\";\r\nimport {RoundedRectangle, Sprite, ColorMatrixFilter} from \"pixi.js\";\r\nimport ConjugationPracticeEvent from \"../events/ConjugationPracticeEvent.ts\";\r\n\r\nexport default class Options extends DisplayContainer\r\n{\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private bg:Sprite;\r\n private logo:Sprite;\r\n private noBtn:Sprite;\r\n private yesBtn:Sprite;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Constructor\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n constructor()\r\n {\r\n super();\r\n this._init();\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private _init()\r\n {\r\n this.name = \"optionsCP\";\r\n }\r\n\r\n private createBackground()\r\n {\r\n const colorMatrix = new ColorMatrixFilter();\r\n this.bg = Sprite.from(\"bg_main\");\r\n this.bg.filters = [colorMatrix];\r\n this.addChild(this.bg);\r\n colorMatrix.hue(80, true);\r\n }\r\n\r\n private createBtns():void\r\n {\r\n this.yesBtn = Sprite.from(\"yesBtn.png\");\r\n this.yesBtn.pivot.set(this.yesBtn.width/2, this.yesBtn.height/2);\r\n this.yesBtn.x = this.appModel.centerX + this.appModel.configValue(\"options\", \"yesBtnCenterXOffset\");\r\n this.yesBtn.y = this.appModel.centerY + this.appModel.configValue(\"options\", \"yesBtnCenterYOffset\");\r\n this.yesBtn.ontap = this.handleClick;\r\n this.yesBtn.onclick = this.handleClick;\r\n this.addChild(this.yesBtn);\r\n /*const gr = new Graphics();\r\n gr.beginFill(0x00FF00);\r\n gr.drawRoundedRect(4, 0, 180, 75, 36);\r\n gr.endFill();\r\n gr.alpha = .5;\r\n this.yesBtn.addChild(gr);*/\r\n this.yesBtn.cursor = \"pointer\";\r\n this.yesBtn.eventMode = \"static\";\r\n this.yesBtn.hitArea = new RoundedRectangle(4, 0, 180, 75, 36);\r\n\r\n this.noBtn = Sprite.from(\"noBtn.png\");\r\n this.noBtn.pivot.set(this.noBtn.width/2, this.noBtn.height/2);\r\n this.noBtn.x = this.appModel.centerX + this.appModel.configValue(\"options\", \"noBtnCenterXOffset\");\r\n this.noBtn.y = this.appModel.centerY + this.appModel.configValue(\"options\", \"noBtnCenterYOffset\");\r\n this.noBtn.ontap = this.handleClick;\r\n this.noBtn.onclick = this.handleClick;\r\n this.addChild(this.noBtn);\r\n /*const gr2 = new Graphics();\r\n gr2.beginFill(0x00FF00);\r\n gr2.drawRoundedRect(4, 0, 180, 75, 36);\r\n gr2.endFill();\r\n gr2.alpha = .5;\r\n this.noBtn.addChild(gr2);*/\r\n this.noBtn.cursor = \"pointer\";\r\n this.noBtn.eventMode = \"static\";\r\n this.noBtn.hitArea = new RoundedRectangle(4, 0, 180, 75, 36);\r\n }\r\n\r\n private createLogo():void\r\n {\r\n this.logo = Sprite.from(\"optionsLogo.png\");\r\n this.logo.pivot.set(this.logo.width/2, this.logo.height/2);\r\n this.logo.x = this.appModel.centerX;\r\n this.logo.y = this.appModel.centerY + this.appModel.configValue(\"options\", \"logoCenterYOffset\");\r\n this.addChild(this.logo);\r\n }\r\n\r\n private destroyBtns():void\r\n {\r\n if(this.noBtn)\r\n {\r\n this.noBtn.onclick = null;\r\n this.noBtn.ontap = null;\r\n this.noBtn.destroy();\r\n this.noBtn = null;\r\n }\r\n if(this.yesBtn)\r\n {\r\n this.yesBtn.onclick = null;\r\n this.yesBtn.ontap = null;\r\n this.yesBtn.destroy();\r\n this.yesBtn = null;\r\n }\r\n }\r\n\r\n private handleClick = (e:MouseEvent):void =>\r\n {\r\n if(e.target === this.yesBtn)\r\n {\r\n this.eventDispatcher.dispatchEvent(new CustomEvent(ConjugationPracticeEvent.LAUNCH_ACTIVITY, {detail:{includeVosotros:true}}));\r\n }\r\n else\r\n {\r\n this.eventDispatcher.dispatchEvent(new CustomEvent(ConjugationPracticeEvent.LAUNCH_ACTIVITY, {detail:{includeVosotros:false}}));\r\n }\r\n }\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public override create(creationCompleteCallback?:Function, show=true, enabled=true):void\r\n {\r\n this.createBackground();\r\n this.createLogo();\r\n this.createBtns();\r\n super.create(creationCompleteCallback, show, enabled);\r\n }\r\n\r\n public override destroy():void\r\n {\r\n this.disable();\r\n this.destroyBtns();\r\n super.destroy();\r\n }\r\n}","/*!\n * @pixi/filter-kawase-blur - v5.1.1\n * Compiled Wed, 11 Jan 2023 23:10:33 UTC\n *\n * @pixi/filter-kawase-blur is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{Filter as m,Point as h}from\"@pixi/core\";var c=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`,v=`\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 uOffset;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample top right pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample bottom right pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Sample bottom left pixel\n color += texture2D(uSampler, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Average\n color *= 0.25;\n\n gl_FragColor = color;\n}`,y=`\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec2 uOffset;\nuniform vec4 filterClamp;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample top right pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample bottom right pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Sample bottom left pixel\n color += texture2D(uSampler, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y), filterClamp.xy, filterClamp.zw));\n\n // Average\n color *= 0.25;\n\n gl_FragColor = color;\n}\n`;class _ extends m{constructor(e=4,t=3,i=!1){super(c,i?y:v),this._kernels=[],this._blur=4,this._quality=3,this.uniforms.uOffset=new Float32Array(2),this._pixelSize=new h,this.pixelSize=1,this._clamp=i,Array.isArray(e)?this.kernels=e:(this._blur=e,this.quality=t)}apply(e,t,i,o){const n=this._pixelSize.x/t._frame.width,l=this._pixelSize.y/t._frame.height;let r;if(this._quality===1||this._blur===0)r=this._kernels[0]+.5,this.uniforms.uOffset[0]=r*n,this.uniforms.uOffset[1]=r*l,e.applyFilter(this,t,i,o);else{const x=e.getFilterTexture();let s=t,u=x,f;const p=this._quality-1;for(let a=0;ae+t+.5,0))}_generateKernels(){const e=this._blur,t=this._quality,i=[e];if(e>0){let o=e;const n=e/t;for(let l=1;l0?(this._kernels=e,this._quality=e.length,this._blur=Math.max(...e)):(this._kernels=[0],this._quality=1)}get clamp(){return this._clamp}set pixelSize(e){typeof e==\"number\"?(this._pixelSize.x=e,this._pixelSize.y=e):Array.isArray(e)?(this._pixelSize.x=e[0],this._pixelSize.y=e[1]):e instanceof h?(this._pixelSize.x=e.x,this._pixelSize.y=e.y):(this._pixelSize.x=1,this._pixelSize.y=1)}get pixelSize(){return this._pixelSize}get quality(){return this._quality}set quality(e){this._quality=Math.max(1,Math.round(e)),this._generateKernels()}get blur(){return this._blur}set blur(e){this._blur=e,this._generateKernels()}}export{_ as KawaseBlurFilter};\n//# sourceMappingURL=filter-kawase-blur.mjs.map\n","/*!\n * @pixi/filter-advanced-bloom - v5.1.1\n * Compiled Wed, 11 Jan 2023 23:10:33 UTC\n *\n * @pixi/filter-advanced-bloom is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{Filter as n,settings as u}from\"@pixi/core\";import{KawaseBlurFilter as h}from\"@pixi/filter-kawase-blur\";var a=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`,m=`\nuniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\n\nuniform float threshold;\n\nvoid main() {\n vec4 color = texture2D(uSampler, vTextureCoord);\n\n // A simple & fast algorithm for getting brightness.\n // It's inaccuracy , but good enought for this feature.\n float _max = max(max(color.r, color.g), color.b);\n float _min = min(min(color.r, color.g), color.b);\n float brightness = (_max + _min) * 0.5;\n\n if(brightness > threshold) {\n gl_FragColor = color;\n } else {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n`;class x extends n{constructor(r=.5){super(a,m),this.threshold=r}get threshold(){return this.uniforms.threshold}set threshold(r){this.uniforms.threshold=r}}var g=`uniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D bloomTexture;\nuniform float bloomScale;\nuniform float brightness;\n\nvoid main() {\n vec4 color = texture2D(uSampler, vTextureCoord);\n color.rgb *= brightness;\n vec4 bloomColor = vec4(texture2D(bloomTexture, vTextureCoord).rgb, 0.0);\n bloomColor.rgb *= bloomScale;\n gl_FragColor = color + bloomColor;\n}\n`;const c=class extends n{constructor(t){super(a,g),this.bloomScale=1,this.brightness=1,this._resolution=u.FILTER_RESOLUTION,typeof t==\"number\"&&(t={threshold:t});const r=Object.assign(c.defaults,t);this.bloomScale=r.bloomScale,this.brightness=r.brightness;const{kernels:l,blur:i,quality:s,pixelSize:o,resolution:e}=r;this._extractFilter=new x(r.threshold),this._extractFilter.resolution=e,this._blurFilter=l?new h(l):new h(i,s),this.pixelSize=o,this.resolution=e}apply(t,r,l,i,s){const o=t.getFilterTexture();this._extractFilter.apply(t,r,o,1,s);const e=t.getFilterTexture();this._blurFilter.apply(t,o,e,1),this.uniforms.bloomScale=this.bloomScale,this.uniforms.brightness=this.brightness,this.uniforms.bloomTexture=e,t.applyFilter(this,r,l,i),t.returnFilterTexture(e),t.returnFilterTexture(o)}get resolution(){return this._resolution}set resolution(t){this._resolution=t,this._extractFilter&&(this._extractFilter.resolution=t),this._blurFilter&&(this._blurFilter.resolution=t)}get threshold(){return this._extractFilter.threshold}set threshold(t){this._extractFilter.threshold=t}get kernels(){return this._blurFilter.kernels}set kernels(t){this._blurFilter.kernels=t}get blur(){return this._blurFilter.blur}set blur(t){this._blurFilter.blur=t}get quality(){return this._blurFilter.quality}set quality(t){this._blurFilter.quality=t}get pixelSize(){return this._blurFilter.pixelSize}set pixelSize(t){this._blurFilter.pixelSize=t}};let b=c;b.defaults={threshold:.5,bloomScale:1,brightness:1,kernels:null,blur:8,quality:4,pixelSize:1,resolution:u.FILTER_RESOLUTION};export{b as AdvancedBloomFilter};\n//# sourceMappingURL=filter-advanced-bloom.mjs.map\n","/*!\n * @pixi/filter-bulge-pinch - v5.1.1\n * Compiled Wed, 11 Jan 2023 23:10:33 UTC\n *\n * @pixi/filter-bulge-pinch is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{Filter as c}from\"@pixi/core\";var d=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`,u=`uniform float radius;\nuniform float strength;\nuniform vec2 center;\nuniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\n\nvoid main()\n{\n vec2 coord = vTextureCoord * filterArea.xy;\n coord -= center * dimensions.xy;\n float distance = length(coord);\n if (distance < radius) {\n float percent = distance / radius;\n if (strength > 0.0) {\n coord *= mix(1.0, smoothstep(0.0, radius / distance, percent), strength * 0.75);\n } else {\n coord *= mix(1.0, pow(percent, 1.0 + strength * 0.75) * radius / distance, 1.0 - percent);\n }\n }\n coord += center * dimensions.xy;\n coord /= filterArea.xy;\n vec2 clampedCoord = clamp(coord, filterClamp.xy, filterClamp.zw);\n vec4 color = texture2D(uSampler, clampedCoord);\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n gl_FragColor = color;\n}\n`;const n=class extends c{constructor(e){super(d,u),this.uniforms.dimensions=new Float32Array(2),Object.assign(this,n.defaults,e)}apply(e,r,o,i){const{width:s,height:a}=r.filterFrame;this.uniforms.dimensions[0]=s,this.uniforms.dimensions[1]=a,e.applyFilter(this,r,o,i)}get radius(){return this.uniforms.radius}set radius(e){this.uniforms.radius=e}get strength(){return this.uniforms.strength}set strength(e){this.uniforms.strength=e}get center(){return this.uniforms.center}set center(e){this.uniforms.center=e}};let t=n;t.defaults={center:[.5,.5],radius:100,strength:1};export{t as BulgePinchFilter};\n//# sourceMappingURL=filter-bulge-pinch.mjs.map\n","/*!\n * @pixi/filter-color-gradient - v5.2.0\n * Compiled Tue, 28 Feb 2023 14:24:35 UTC\n *\n * @pixi/filter-color-gradient is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{utils as Z,Filter as J}from\"@pixi/core\";var Q=`const float PI = 3.1415926538;\nconst float PI_2 = PI*2.;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vFilterCoord;\nuniform sampler2D uSampler;\n\nconst int TYPE_LINEAR = 0;\nconst int TYPE_RADIAL = 1;\nconst int TYPE_CONIC = 2;\nconst int MAX_STOPS = 32;\n\nuniform int uNumStops;\nuniform float uAlphas[3*MAX_STOPS];\nuniform vec3 uColors[MAX_STOPS];\nuniform float uOffsets[MAX_STOPS];\nuniform int uType;\nuniform float uAngle;\nuniform float uAlpha;\nuniform int uMaxColors;\n\nstruct ColorStop {\n float offset;\n vec3 color;\n float alpha;\n};\n\nmat2 rotate2d(float angle){\n return mat2(cos(angle), -sin(angle),\n sin(angle), cos(angle));\n}\n\nfloat projectLinearPosition(vec2 pos, float angle){\n vec2 center = vec2(0.5);\n vec2 result = pos - center;\n result = rotate2d(angle) * result;\n result = result + center;\n return clamp(result.x, 0., 1.);\n}\n\nfloat projectRadialPosition(vec2 pos) {\n float r = distance(vFilterCoord, vec2(0.5));\n return clamp(2.*r, 0., 1.);\n}\n\nfloat projectAnglePosition(vec2 pos, float angle) {\n vec2 center = pos - vec2(0.5);\n float polarAngle=atan(-center.y, center.x);\n return mod(polarAngle + angle, PI_2) / PI_2;\n}\n\nfloat projectPosition(vec2 pos, int type, float angle) {\n if (type == TYPE_LINEAR) {\n return projectLinearPosition(pos, angle);\n } else if (type == TYPE_RADIAL) {\n return projectRadialPosition(pos);\n } else if (type == TYPE_CONIC) {\n return projectAnglePosition(pos, angle);\n }\n\n return pos.y;\n}\n\nvoid main(void) {\n // current/original color\n vec4 currentColor = texture2D(uSampler, vTextureCoord);\n\n // skip calculations if gradient alpha is 0\n if (0.0 == uAlpha) {\n gl_FragColor = currentColor;\n return;\n }\n\n // project position\n float y = projectPosition(vFilterCoord, uType, radians(uAngle));\n\n // check gradient bounds\n float offsetMin = uOffsets[0];\n float offsetMax = 0.0;\n\n for (int i = 0; i < MAX_STOPS; i++) {\n if (i == uNumStops-1){ // last index\n offsetMax = uOffsets[i];\n }\n }\n\n if (y < offsetMin || y > offsetMax) {\n gl_FragColor = currentColor;\n return;\n }\n\n // limit colors\n if (uMaxColors > 0) {\n float stepSize = 1./float(uMaxColors);\n float stepNumber = float(floor(y/stepSize));\n y = stepSize * (stepNumber + 0.5);// offset by 0.5 to use color from middle of segment\n }\n\n // find color stops\n ColorStop from;\n ColorStop to;\n\n for (int i = 0; i < MAX_STOPS; i++) {\n if (y >= uOffsets[i]) {\n from = ColorStop(uOffsets[i], uColors[i], uAlphas[i]);\n to = ColorStop(uOffsets[i+1], uColors[i+1], uAlphas[i+1]);\n }\n\n if (i == uNumStops-1){ // last index\n break;\n }\n }\n\n // mix colors from stops\n vec4 colorFrom = vec4(from.color * from.alpha, from.alpha);\n vec4 colorTo = vec4(to.color * to.alpha, to.alpha);\n\n float segmentHeight = to.offset - from.offset;\n float relativePos = y - from.offset;// position from 0 to [segmentHeight]\n float relativePercent = relativePos / segmentHeight;// position in percent between [from.offset] and [to.offset].\n\n float gradientAlpha = uAlpha * currentColor.a;\n vec4 gradientColor = mix(colorFrom, colorTo, relativePercent) * gradientAlpha;\n\n // mix resulting color with current color\n gl_FragColor = gradientColor + currentColor*(1.-gradientColor.a);\n}\n`,W=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vFilterCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n vFilterCoord = vTextureCoord * inputSize.xy / outputFrame.zw;\n}\n`,v=v||{};v.stringify=function(){var e={\"visit_linear-gradient\":function(t){return e.visit_gradient(t)},\"visit_repeating-linear-gradient\":function(t){return e.visit_gradient(t)},\"visit_radial-gradient\":function(t){return e.visit_gradient(t)},\"visit_repeating-radial-gradient\":function(t){return e.visit_gradient(t)},visit_gradient:function(t){var r=e.visit(t.orientation);return r&&(r+=\", \"),t.type+\"(\"+r+e.visit(t.colorStops)+\")\"},visit_shape:function(t){var r=t.value,o=e.visit(t.at),n=e.visit(t.style);return n&&(r+=\" \"+n),o&&(r+=\" at \"+o),r},\"visit_default-radial\":function(t){var r=\"\",o=e.visit(t.at);return o&&(r+=o),r},\"visit_extent-keyword\":function(t){var r=t.value,o=e.visit(t.at);return o&&(r+=\" at \"+o),r},\"visit_position-keyword\":function(t){return t.value},visit_position:function(t){return e.visit(t.value.x)+\" \"+e.visit(t.value.y)},\"visit_%\":function(t){return t.value+\"%\"},visit_em:function(t){return t.value+\"em\"},visit_px:function(t){return t.value+\"px\"},visit_literal:function(t){return e.visit_color(t.value,t)},visit_hex:function(t){return e.visit_color(\"#\"+t.value,t)},visit_rgb:function(t){return e.visit_color(\"rgb(\"+t.value.join(\", \")+\")\",t)},visit_rgba:function(t){return e.visit_color(\"rgba(\"+t.value.join(\", \")+\")\",t)},visit_color:function(t,r){var o=t,n=e.visit(r.length);return n&&(o+=\" \"+n),o},visit_angular:function(t){return t.value+\"deg\"},visit_directional:function(t){return\"to \"+t.value},visit_array:function(t){var r=\"\",o=t.length;return t.forEach(function(n,i){r+=e.visit(n),i0&&r(\"Invalid input not EOF\"),a}function n(){return C(i)}function i(){return l(\"linear-gradient\",e.linearGradient,s)||l(\"repeating-linear-gradient\",e.repeatingLinearGradient,s)||l(\"radial-gradient\",e.radialGradient,O)||l(\"repeating-radial-gradient\",e.repeatingRadialGradient,O)}function l(a,u,c){return f(u,function(d){var j=c();return j&&(m(e.comma)||r(\"Missing comma before color stops\")),{type:a,orientation:j,colorStops:C(V)}})}function f(a,u){var c=m(a);if(c){m(e.startCall)||r(\"Missing (\");var d=u(c);return m(e.endCall)||r(\"Missing )\"),d}}function s(){return p()||w()}function p(){return h(\"directional\",e.sideOrCorner,1)}function w(){return h(\"angular\",e.angleValue,1)}function O(){var a,u=g(),c;return u&&(a=[],a.push(u),c=t,m(e.comma)&&(u=g(),u?a.push(u):t=c)),a}function g(){var a=b()||$();if(a)a.at=F();else{var u=_();if(u){a=u;var c=F();c&&(a.at=c)}else{var d=M();d&&(a={type:\"default-radial\",at:d})}}return a}function b(){var a=h(\"shape\",/^(circle)/i,0);return a&&(a.style=I()||_()),a}function $(){var a=h(\"shape\",/^(ellipse)/i,0);return a&&(a.style=x()||_()),a}function _(){return h(\"extent-keyword\",e.extentKeywords,1)}function F(){if(h(\"position\",/^at/,0)){var a=M();return a||r(\"Missing positioning value\"),a}}function M(){var a=q();if(a.x||a.y)return{type:\"position\",value:a}}function q(){return{x:x(),y:x()}}function C(a){var u=a(),c=[];if(u)for(c.push(u);m(e.comma);)u=a(),u?c.push(u):r(\"One extra comma\");return c}function V(){var a=H();return a||r(\"Expected color definition\"),a.length=x(),a}function H(){return X()||B()||Y()||K()}function K(){return h(\"literal\",e.literalColor,0)}function X(){return h(\"hex\",e.hexColor,1)}function Y(){return f(e.rgbColor,function(){return{type:\"rgb\",value:C(T)}})}function B(){return f(e.rgbaColor,function(){return{type:\"rgba\",value:C(T)}})}function T(){return m(e.number)[1]}function x(){return h(\"%\",e.percentageValue,1)||U()||I()}function U(){return h(\"position-keyword\",e.positionKeywords,1)}function I(){return h(\"px\",e.pixelValue,1)||h(\"em\",e.emValue,1)}function h(a,u,c){var d=m(u);if(d)return{type:a,value:d[c]}}function m(a){var u,c;return c=/^[\\n\\r\\t\\s]+/.exec(t),c&&E(c[0].length),u=a.exec(t),u&&E(u[0].length),u}function E(a){t=t.substr(a)}return function(a){return t=a.toString(),o()}}();var ee=v.parse;v.stringify;var R={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},G={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function te(e){var t,r=[],o=1,n;if(typeof e==\"string\")if(R[e])r=R[e].slice(),n=\"rgb\";else if(e===\"transparent\")o=0,n=\"rgb\",r=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(e)){var i=e.slice(1),l=i.length,f=l<=4;o=1,f?(r=[parseInt(i[0]+i[0],16),parseInt(i[1]+i[1],16),parseInt(i[2]+i[2],16)],l===4&&(o=parseInt(i[3]+i[3],16)/255)):(r=[parseInt(i[0]+i[1],16),parseInt(i[2]+i[3],16),parseInt(i[4]+i[5],16)],l===8&&(o=parseInt(i[6]+i[7],16)/255)),r[0]||(r[0]=0),r[1]||(r[1]=0),r[2]||(r[2]=0),n=\"rgb\"}else if(t=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(e)){var s=t[1],p=s===\"rgb\",i=s.replace(/a$/,\"\");n=i;var l=i===\"cmyk\"?4:i===\"gray\"?1:3;r=t[2].trim().split(/\\s*[,\\/]\\s*|\\s+/).map(function(g,b){if(/%$/.test(g))return b===l?parseFloat(g)/100:i===\"rgb\"?parseFloat(g)*255/100:parseFloat(g);if(i[b]===\"h\"){if(/deg$/.test(g))return parseFloat(g);if(G[g]!==void 0)return G[g]}return parseFloat(g)}),s===i&&r.push(1),o=p||r[l]===void 0?1:r[l],r=r.slice(0,l)}else e.length>10&&/[0-9](?:\\s|\\/)/.test(e)&&(r=e.match(/([0-9]+)/g).map(function(w){return parseFloat(w)}),n=e.match(/([a-z])/ig).join(\"\").toLowerCase());else isNaN(e)?Array.isArray(e)||e.length?(r=[e[0],e[1],e[2]],n=\"rgb\",o=e.length===4?e[3]:1):e instanceof Object&&(e.r!=null||e.red!=null||e.R!=null?(n=\"rgb\",r=[e.r||e.red||e.R||0,e.g||e.green||e.G||0,e.b||e.blue||e.B||0]):(n=\"hsl\",r=[e.h||e.hue||e.H||0,e.s||e.saturation||e.S||0,e.l||e.lightness||e.L||e.b||e.brightness]),o=e.a||e.alpha||e.opacity||1,e.opacity!=null&&(o/=100)):(n=\"rgb\",r=[e>>>16,(e&65280)>>>8,e&255]);return{space:n,values:r,alpha:o}}var A={name:\"rgb\",min:[0,0,0],max:[255,255,255],channel:[\"red\",\"green\",\"blue\"],alias:[\"RGB\"]},S={name:\"hsl\",min:[0,0,0],max:[360,100,100],channel:[\"hue\",\"saturation\",\"lightness\"],alias:[\"HSL\"],rgb:function(e){var t=e[0]/360,r=e[1]/100,o=e[2]/100,n,i,l,f,s;if(r===0)return s=o*255,[s,s,s];o<.5?i=o*(1+r):i=o+r-o*r,n=2*o-i,f=[0,0,0];for(var p=0;p<3;p++)l=t+1/3*-(p-1),l<0?l++:l>1&&l--,6*l<1?s=n+(i-n)*6*l:2*l<1?s=i:3*l<2?s=n+(i-n)*(2/3-l)*6:s=n,f[p]=s*255;return f}};A.hsl=function(e){var t=e[0]/255,r=e[1]/255,o=e[2]/255,n=Math.min(t,r,o),i=Math.max(t,r,o),l=i-n,f,s,p;return i===n?f=0:t===i?f=(r-o)/l:r===i?f=2+(o-t)/l:o===i&&(f=4+(t-r)/l),f=Math.min(f*60,360),f<0&&(f+=360),p=(n+i)/2,i===n?s=0:p<=.5?s=l/(i+n):s=l/(2-i-n),[f,s*100,p*100]};function re(e){Array.isArray(e)&&e.raw&&(e=String.raw(...arguments));var t,r=te(e);if(!r.space)return[];const o=r.space[0]===\"h\"?S.min:A.min,n=r.space[0]===\"h\"?S.max:A.max;return t=Array(3),t[0]=Math.min(Math.max(r.values[0],o[0]),n[0]),t[1]=Math.min(Math.max(r.values[1],o[1]),n[1]),t[2]=Math.min(Math.max(r.values[2],o[2]),n[2]),r.space[0]===\"h\"&&(t=S.rgb(t)),t.push(Math.min(Math.max(r.alpha,0),1)),t}function L(e){switch(typeof e){case\"string\":return ne(e);case\"number\":return Z.hex2rgb(e);default:return e}}function ne(e){const t=re(e);if(!t)throw new Error(`Unable to parse color \"${e}\" as RGBA.`);return[t[0]/255,t[1]/255,t[2]/255,t[3]]}function ie(e){const t=ee(ge(e));if(t.length===0)throw new Error(\"Invalid CSS gradient.\");if(t.length!==1)throw new Error(\"Unsupported CSS gradient (multiple gradients is not supported).\");const r=t[0],o=oe(r.type),n=ae(r.colorStops),i=ce(r.orientation);return{type:o,stops:n,angle:i}}function oe(e){const t={\"linear-gradient\":0,\"radial-gradient\":1};if(!(e in t))throw new Error(`Unsupported gradient type \"${e}\"`);return t[e]}function ae(e){const t=ue(e),r=[];for(let o=0;o{for(let i=n;i6?parseFloat(e.toString().substring(0,6)):e}function ce(e){if(typeof e==\"undefined\")return 0;if(\"type\"in e&&\"value\"in e)switch(e.type){case\"angular\":return parseFloat(e.value);case\"directional\":return pe(e.value)}return 0}function pe(e){const t={left:270,top:0,bottom:180,right:90,\"left top\":315,\"top left\":315,\"left bottom\":225,\"bottom left\":225,\"right top\":45,\"top right\":45,\"right bottom\":135,\"bottom right\":135};if(!(e in t))throw new Error(`Unsupported directional value \"${e}\"`);return t[e]}function ge(e){let t=e.replace(/\\s{2,}/gu,\" \");return t=t.replace(/;/g,\"\"),t=t.replace(/ ,/g,\",\"),t=t.replace(/\\( /g,\"(\"),t=t.replace(/ \\)/g,\")\"),t.trim()}var he=Object.defineProperty,me=Object.defineProperties,de=Object.getOwnPropertyDescriptors,N=Object.getOwnPropertySymbols,ve=Object.prototype.hasOwnProperty,ye=Object.prototype.propertyIsEnumerable,z=(e,t,r)=>t in e?he(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,k=(e,t)=>{for(var r in t||(t={}))ve.call(t,r)&&z(e,r,t[r]);if(N)for(var r of N(t))ye.call(t,r)&&z(e,r,t[r]);return e},be=(e,t)=>me(e,de(t));const D=90;function Ce(e){return[...e].sort((t,r)=>t.offset-r.offset)}const P=class extends J{constructor(e){e&&\"css\"in e&&(e=be(k({},ie(e.css||\"\")),{alpha:e.alpha,maxColors:e.maxColors}));const t=k(k({},P.defaults),e);if(!t.stops||t.stops.length<2)throw new Error(\"ColorGradientFilter requires at least 2 color stops.\");super(W,Q),this._stops=[],this.autoFit=!1,Object.assign(this,t)}get stops(){return this._stops}set stops(e){const t=Ce(e),r=new Float32Array(t.length*3),o=0,n=1,i=2;for(let l=0;ll.offset),this.uniforms.uAlphas=t.map(l=>l.alpha),this.uniforms.uNumStops=t.length,this._stops=t}set type(e){this.uniforms.uType=e}get type(){return this.uniforms.uType}set angle(e){this.uniforms.uAngle=e-D}get angle(){return this.uniforms.uAngle+D}set alpha(e){this.uniforms.uAlpha=e}get alpha(){return this.uniforms.uAlpha}set maxColors(e){this.uniforms.uMaxColors=e}get maxColors(){return this.uniforms.uMaxColors}};let y=P;y.LINEAR=0,y.RADIAL=1,y.CONIC=2,y.defaults={type:P.LINEAR,stops:[{offset:0,color:16711680,alpha:1},{offset:1,color:255,alpha:1}],alpha:1,angle:90,maxColors:0};export{y as ColorGradientFilter};\n//# sourceMappingURL=filter-color-gradient.mjs.map\n","/*!\n * @pixi/filter-crt - v5.1.1\n * Compiled Wed, 11 Jan 2023 23:10:33 UTC\n *\n * @pixi/filter-crt is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{Filter as u}from\"@pixi/core\";var a=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`,g=`varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec2 dimensions;\n\nconst float SQRT_2 = 1.414213;\n\nconst float light = 1.0;\n\nuniform float curvature;\nuniform float lineWidth;\nuniform float lineContrast;\nuniform bool verticalLine;\nuniform float noise;\nuniform float noiseSize;\n\nuniform float vignetting;\nuniform float vignettingAlpha;\nuniform float vignettingBlur;\n\nuniform float seed;\nuniform float time;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main(void)\n{\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n vec2 dir = vec2(vTextureCoord.xy * filterArea.xy / dimensions - vec2(0.5, 0.5));\n \n gl_FragColor = texture2D(uSampler, vTextureCoord);\n vec3 rgb = gl_FragColor.rgb;\n\n if (noise > 0.0 && noiseSize > 0.0)\n {\n pixelCoord.x = floor(pixelCoord.x / noiseSize);\n pixelCoord.y = floor(pixelCoord.y / noiseSize);\n float _noise = rand(pixelCoord * noiseSize * seed) - 0.5;\n rgb += _noise * noise;\n }\n\n if (lineWidth > 0.0)\n {\n float _c = curvature > 0. ? curvature : 1.;\n float k = curvature > 0. ?(length(dir * dir) * 0.25 * _c * _c + 0.935 * _c) : 1.;\n vec2 uv = dir * k;\n\n float v = (verticalLine ? uv.x * dimensions.x : uv.y * dimensions.y) * min(1.0, 2.0 / lineWidth ) / _c;\n float j = 1. + cos(v * 1.2 - time) * 0.5 * lineContrast;\n rgb *= j;\n float segment = verticalLine ? mod((dir.x + .5) * dimensions.x, 4.) : mod((dir.y + .5) * dimensions.y, 4.);\n rgb *= 0.99 + ceil(segment) * 0.015;\n }\n\n if (vignetting > 0.0)\n {\n float outter = SQRT_2 - vignetting * SQRT_2;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + vignettingBlur * SQRT_2), 0.0, 1.0);\n rgb *= darker + (1.0 - darker) * (1.0 - vignettingAlpha);\n }\n\n gl_FragColor.rgb = rgb;\n}\n`;const e=class extends u{constructor(n){super(a,g),this.time=0,this.seed=0,this.uniforms.dimensions=new Float32Array(2),Object.assign(this,e.defaults,n)}apply(n,i,r,o){const{width:s,height:l}=i.filterFrame;this.uniforms.dimensions[0]=s,this.uniforms.dimensions[1]=l,this.uniforms.seed=this.seed,this.uniforms.time=this.time,n.applyFilter(this,i,r,o)}set curvature(n){this.uniforms.curvature=n}get curvature(){return this.uniforms.curvature}set lineWidth(n){this.uniforms.lineWidth=n}get lineWidth(){return this.uniforms.lineWidth}set lineContrast(n){this.uniforms.lineContrast=n}get lineContrast(){return this.uniforms.lineContrast}set verticalLine(n){this.uniforms.verticalLine=n}get verticalLine(){return this.uniforms.verticalLine}set noise(n){this.uniforms.noise=n}get noise(){return this.uniforms.noise}set noiseSize(n){this.uniforms.noiseSize=n}get noiseSize(){return this.uniforms.noiseSize}set vignetting(n){this.uniforms.vignetting=n}get vignetting(){return this.uniforms.vignetting}set vignettingAlpha(n){this.uniforms.vignettingAlpha=n}get vignettingAlpha(){return this.uniforms.vignettingAlpha}set vignettingBlur(n){this.uniforms.vignettingBlur=n}get vignettingBlur(){return this.uniforms.vignettingBlur}};let t=e;t.defaults={curvature:1,lineWidth:1,lineContrast:.25,verticalLine:!1,noise:0,noiseSize:1,seed:0,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,time:0};export{t as CRTFilter};\n//# sourceMappingURL=filter-crt.mjs.map\n","/*!\n * @pixi/filter-drop-shadow - v5.2.0\n * Compiled Tue, 28 Feb 2023 14:24:35 UTC\n *\n * @pixi/filter-drop-shadow is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{KawaseBlurFilter as h}from\"@pixi/filter-kawase-blur\";import{settings as p,Filter as d,ObservablePoint as S,utils as s,DEG_TO_RAD as f}from\"@pixi/core\";var w=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`,O=`varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform float alpha;\nuniform vec3 color;\n\nuniform vec2 shift;\nuniform vec4 inputSize;\n\nvoid main(void){\n vec4 sample = texture2D(uSampler, vTextureCoord - shift * inputSize.zw);\n\n // Premultiply alpha\n sample.rgb = color.rgb * sample.a;\n\n // alpha user alpha\n sample *= alpha;\n\n gl_FragColor = sample;\n}`,P=Object.defineProperty,c=Object.getOwnPropertySymbols,T=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable,_=(t,e,i)=>e in t?P(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,b=(t,e)=>{for(var i in e||(e={}))T.call(e,i)&&_(t,i,e[i]);if(c)for(var i of c(e))z.call(e,i)&&_(t,i,e[i]);return t};const o=class extends d{constructor(t){super(),this.angle=45,this._distance=5,this._resolution=p.FILTER_RESOLUTION;const e=t?b(b({},o.defaults),t):o.defaults,{kernels:i,blur:l,quality:r,pixelSize:g,resolution:n}=e;this._offset=new S(this._updatePadding,this),this._tintFilter=new d(w,O),this._tintFilter.uniforms.color=new Float32Array(4),this._tintFilter.uniforms.shift=this._offset,this._tintFilter.resolution=n,this._blurFilter=i?new h(i):new h(l,r),this.pixelSize=g,this.resolution=n;const{shadowOnly:m,rotation:a,distance:u,offset:v,alpha:y,color:x}=e;this.shadowOnly=m,a!==void 0&&u!==void 0?(this.rotation=a,this.distance=u):this.offset=v,this.alpha=y,this.color=x}apply(t,e,i,l){const r=t.getFilterTexture();this._tintFilter.apply(t,e,r,1),this._blurFilter.apply(t,r,i,l),this.shadowOnly!==!0&&t.applyFilter(this,e,i,0),t.returnFilterTexture(r)}_updatePadding(){const t=Math.max(Math.abs(this._offset.x),Math.abs(this._offset.y));this.padding=t+this.blur*2}_updateShift(){this._tintFilter.uniforms.shift.set(this.distance*Math.cos(this.angle),this.distance*Math.sin(this.angle))}set offset(t){this._offset.copyFrom(t),this._updatePadding()}get offset(){return this._offset}get resolution(){return this._resolution}set resolution(t){this._resolution=t,this._tintFilter&&(this._tintFilter.resolution=t),this._blurFilter&&(this._blurFilter.resolution=t)}get distance(){return this._distance}set distance(t){s.deprecation(\"5.3.0\",\"DropShadowFilter distance is deprecated, use offset\"),this._distance=t,this._updatePadding(),this._updateShift()}get rotation(){return this.angle/f}set rotation(t){s.deprecation(\"5.3.0\",\"DropShadowFilter rotation is deprecated, use offset\"),this.angle=t*f,this._updateShift()}get alpha(){return this._tintFilter.uniforms.alpha}set alpha(t){this._tintFilter.uniforms.alpha=t}get color(){return s.rgb2hex(this._tintFilter.uniforms.color)}set color(t){s.hex2rgb(t,this._tintFilter.uniforms.color)}get kernels(){return this._blurFilter.kernels}set kernels(t){this._blurFilter.kernels=t}get blur(){return this._blurFilter.blur}set blur(t){this._blurFilter.blur=t,this._updatePadding()}get quality(){return this._blurFilter.quality}set quality(t){this._blurFilter.quality=t}get pixelSize(){return this._blurFilter.pixelSize}set pixelSize(t){this._blurFilter.pixelSize=t}};let F=o;F.defaults={offset:{x:4,y:4},color:0,alpha:.5,shadowOnly:!1,kernels:null,blur:2,quality:3,pixelSize:1,resolution:p.FILTER_RESOLUTION};export{F as DropShadowFilter};\n//# sourceMappingURL=filter-drop-shadow.mjs.map\n","/*!\n * @pixi/filter-glitch - v5.1.1\n * Compiled Wed, 11 Jan 2023 23:10:33 UTC\n *\n * @pixi/filter-glitch is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{Filter as d,Texture as h,SCALE_MODES as m,DEG_TO_RAD as u}from\"@pixi/core\";var p=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`,M=`// precision highp float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\nuniform float aspect;\n\nuniform sampler2D displacementMap;\nuniform float offset;\nuniform float sinDir;\nuniform float cosDir;\nuniform int fillMode;\n\nuniform float seed;\nuniform vec2 red;\nuniform vec2 green;\nuniform vec2 blue;\n\nconst int TRANSPARENT = 0;\nconst int ORIGINAL = 1;\nconst int LOOP = 2;\nconst int CLAMP = 3;\nconst int MIRROR = 4;\n\nvoid main(void)\n{\n vec2 coord = (vTextureCoord * filterArea.xy) / dimensions;\n\n if (coord.x > 1.0 || coord.y > 1.0) {\n return;\n }\n\n float cx = coord.x - 0.5;\n float cy = (coord.y - 0.5) * aspect;\n float ny = (-sinDir * cx + cosDir * cy) / aspect + 0.5;\n\n // displacementMap: repeat\n // ny = ny > 1.0 ? ny - 1.0 : (ny < 0.0 ? 1.0 + ny : ny);\n\n // displacementMap: mirror\n ny = ny > 1.0 ? 2.0 - ny : (ny < 0.0 ? -ny : ny);\n\n vec4 dc = texture2D(displacementMap, vec2(0.5, ny));\n\n float displacement = (dc.r - dc.g) * (offset / filterArea.x);\n\n coord = vTextureCoord + vec2(cosDir * displacement, sinDir * displacement * aspect);\n\n if (fillMode == CLAMP) {\n coord = clamp(coord, filterClamp.xy, filterClamp.zw);\n } else {\n if( coord.x > filterClamp.z ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x -= filterClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x = filterClamp.z * 2.0 - coord.x;\n }\n } else if( coord.x < filterClamp.x ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x += filterClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x *= -filterClamp.z;\n }\n }\n\n if( coord.y > filterClamp.w ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y -= filterClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y = filterClamp.w * 2.0 - coord.y;\n }\n } else if( coord.y < filterClamp.y ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y += filterClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y *= -filterClamp.w;\n }\n }\n }\n\n gl_FragColor.r = texture2D(uSampler, coord + red * (1.0 - seed * 0.4) / filterArea.xy).r;\n gl_FragColor.g = texture2D(uSampler, coord + green * (1.0 - seed * 0.3) / filterArea.xy).g;\n gl_FragColor.b = texture2D(uSampler, coord + blue * (1.0 - seed * 0.2) / filterArea.xy).b;\n gl_FragColor.a = texture2D(uSampler, coord).a;\n}\n`;const c=class extends d{constructor(e){super(p,M),this.offset=100,this.fillMode=c.TRANSPARENT,this.average=!1,this.seed=0,this.minSize=8,this.sampleSize=512,this._slices=0,this._offsets=new Float32Array(1),this._sizes=new Float32Array(1),this._direction=-1,this.uniforms.dimensions=new Float32Array(2),this._canvas=document.createElement(\"canvas\"),this._canvas.width=4,this._canvas.height=this.sampleSize,this.texture=h.from(this._canvas,{scaleMode:m.NEAREST}),Object.assign(this,c.defaults,e)}apply(e,s,i,t){const{width:n,height:r}=s.filterFrame;this.uniforms.dimensions[0]=n,this.uniforms.dimensions[1]=r,this.uniforms.aspect=r/n,this.uniforms.seed=this.seed,this.uniforms.offset=this.offset,this.uniforms.fillMode=this.fillMode,e.applyFilter(this,s,i,t)}_randomizeSizes(){const e=this._sizes,s=this._slices-1,i=this.sampleSize,t=Math.min(this.minSize/i,.9/this._slices);if(this.average){const n=this._slices;let r=1;for(let o=0;o0;i--){const t=Math.random()*i>>0,n=e[i];e[i]=e[t],e[t]=n}}_randomizeOffsets(){for(let e=0;e0?t:0,f=t<0?-t:0;i.fillStyle=`rgba(${a}, ${f}, 0, 1)`,i.fillRect(0,n>>0,e,o+1>>0),n+=o}s.baseTexture.update(),this.uniforms.displacementMap=s}set sizes(e){const s=Math.min(this._slices,e.length);for(let i=0;i 0.) {\n result.rgb += (average - result.rgb) * (1. - 1. / (1.001 - uSaturation));\n } else {\n result.rgb -= (average - result.rgb) * uSaturation;\n }\n\n // lightness\n result.rgb = mix(result.rgb, vec3(ceil(uLightness)) * color.a, abs(uLightness));\n\n // alpha\n gl_FragColor = mix(color, result, uAlpha);\n}\n`;const t=class extends o{constructor(e){super(i,s),this._hue=0;const r=Object.assign({},t.defaults,e);Object.assign(this,r)}get hue(){return this._hue}set hue(e){this._hue=e,this.uniforms.uHue=this._hue*(Math.PI/180)}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}get colorize(){return this.uniforms.uColorize}set colorize(e){this.uniforms.uColorize=e}get lightness(){return this.uniforms.uLightness}set lightness(e){this.uniforms.uLightness=e}get saturation(){return this.uniforms.uSaturation}set saturation(e){this.uniforms.uSaturation=e}};let n=t;n.defaults={hue:0,saturation:0,lightness:0,colorize:!1,alpha:1};export{n as HslAdjustmentFilter};\n//# sourceMappingURL=filter-hsl-adjustment.mjs.map\n","/*!\n * @pixi/filter-old-film - v5.1.1\n * Compiled Wed, 11 Jan 2023 23:10:33 UTC\n *\n * @pixi/filter-old-film is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{Filter as c}from\"@pixi/core\";var l=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`,d=`varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\nuniform vec2 dimensions;\n\nuniform float sepia;\nuniform float noise;\nuniform float noiseSize;\nuniform float scratch;\nuniform float scratchDensity;\nuniform float scratchWidth;\nuniform float vignetting;\nuniform float vignettingAlpha;\nuniform float vignettingBlur;\nuniform float seed;\n\nconst float SQRT_2 = 1.414213;\nconst vec3 SEPIA_RGB = vec3(112.0 / 255.0, 66.0 / 255.0, 20.0 / 255.0);\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvec3 Overlay(vec3 src, vec3 dst)\n{\n // if (dst <= 0.5) then: 2 * src * dst\n // if (dst > 0.5) then: 1 - 2 * (1 - dst) * (1 - src)\n return vec3((dst.x <= 0.5) ? (2.0 * src.x * dst.x) : (1.0 - 2.0 * (1.0 - dst.x) * (1.0 - src.x)),\n (dst.y <= 0.5) ? (2.0 * src.y * dst.y) : (1.0 - 2.0 * (1.0 - dst.y) * (1.0 - src.y)),\n (dst.z <= 0.5) ? (2.0 * src.z * dst.z) : (1.0 - 2.0 * (1.0 - dst.z) * (1.0 - src.z)));\n}\n\n\nvoid main()\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n vec3 color = gl_FragColor.rgb;\n\n if (sepia > 0.0)\n {\n float gray = (color.x + color.y + color.z) / 3.0;\n vec3 grayscale = vec3(gray);\n\n color = Overlay(SEPIA_RGB, grayscale);\n\n color = grayscale + sepia * (color - grayscale);\n }\n\n vec2 coord = vTextureCoord * filterArea.xy / dimensions.xy;\n\n if (vignetting > 0.0)\n {\n float outter = SQRT_2 - vignetting * SQRT_2;\n vec2 dir = vec2(vec2(0.5, 0.5) - coord);\n dir.y *= dimensions.y / dimensions.x;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + vignettingBlur * SQRT_2), 0.0, 1.0);\n color.rgb *= darker + (1.0 - darker) * (1.0 - vignettingAlpha);\n }\n\n if (scratchDensity > seed && scratch != 0.0)\n {\n float phase = seed * 256.0;\n float s = mod(floor(phase), 2.0);\n float dist = 1.0 / scratchDensity;\n float d = distance(coord, vec2(seed * dist, abs(s - seed * dist)));\n if (d < seed * 0.6 + 0.4)\n {\n highp float period = scratchDensity * 10.0;\n\n float xx = coord.x * period + phase;\n float aa = abs(mod(xx, 0.5) * 4.0);\n float bb = mod(floor(xx / 0.5), 2.0);\n float yy = (1.0 - bb) * aa + bb * (2.0 - aa);\n\n float kk = 2.0 * period;\n float dw = scratchWidth / dimensions.x * (0.75 + seed);\n float dh = dw * kk;\n\n float tine = (yy - (2.0 - dh));\n\n if (tine > 0.0) {\n float _sign = sign(scratch);\n\n tine = s * tine / period + scratch + 0.1;\n tine = clamp(tine + 1.0, 0.5 + _sign * 0.5, 1.5 + _sign * 0.5);\n\n color.rgb *= tine;\n }\n }\n }\n\n if (noise > 0.0 && noiseSize > 0.0)\n {\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n pixelCoord.x = floor(pixelCoord.x / noiseSize);\n pixelCoord.y = floor(pixelCoord.y / noiseSize);\n // vec2 d = pixelCoord * noiseSize * vec2(1024.0 + seed * 512.0, 1024.0 - seed * 512.0);\n // float _noise = snoise(d) * 0.5;\n float _noise = rand(pixelCoord * noiseSize * seed) - 0.5;\n color += _noise * noise;\n }\n\n gl_FragColor.rgb = color;\n}\n`;const s=class extends c{constructor(n,i=0){super(l,d),this.seed=0,this.uniforms.dimensions=new Float32Array(2),typeof n==\"number\"?(this.seed=n,n=void 0):this.seed=i,Object.assign(this,s.defaults,n)}apply(n,i,o,a){var t,e;this.uniforms.dimensions[0]=(t=i.filterFrame)==null?void 0:t.width,this.uniforms.dimensions[1]=(e=i.filterFrame)==null?void 0:e.height,this.uniforms.seed=this.seed,n.applyFilter(this,i,o,a)}set sepia(n){this.uniforms.sepia=n}get sepia(){return this.uniforms.sepia}set noise(n){this.uniforms.noise=n}get noise(){return this.uniforms.noise}set noiseSize(n){this.uniforms.noiseSize=n}get noiseSize(){return this.uniforms.noiseSize}set scratch(n){this.uniforms.scratch=n}get scratch(){return this.uniforms.scratch}set scratchDensity(n){this.uniforms.scratchDensity=n}get scratchDensity(){return this.uniforms.scratchDensity}set scratchWidth(n){this.uniforms.scratchWidth=n}get scratchWidth(){return this.uniforms.scratchWidth}set vignetting(n){this.uniforms.vignetting=n}get vignetting(){return this.uniforms.vignetting}set vignettingAlpha(n){this.uniforms.vignettingAlpha=n}get vignettingAlpha(){return this.uniforms.vignettingAlpha}set vignettingBlur(n){this.uniforms.vignettingBlur=n}get vignettingBlur(){return this.uniforms.vignettingBlur}};let r=s;r.defaults={sepia:.3,noise:.3,noiseSize:1,scratch:.5,scratchDensity:.3,scratchWidth:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3};export{r as OldFilmFilter};\n//# sourceMappingURL=filter-old-film.mjs.map\n","/*!\n * @pixi/filter-outline - v5.2.0\n * Compiled Tue, 28 Feb 2023 14:24:35 UTC\n *\n * @pixi/filter-outline is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{Filter as l,utils as a}from\"@pixi/core\";var u=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`,c=`varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterClamp;\n\nuniform float uAlpha;\nuniform vec2 uThickness;\nuniform vec4 uColor;\nuniform bool uKnockout;\n\nconst float DOUBLE_PI = 2. * 3.14159265358979323846264;\nconst float ANGLE_STEP = \\${angleStep};\n\nfloat outlineMaxAlphaAtPos(vec2 pos) {\n if (uThickness.x == 0. || uThickness.y == 0.) {\n return 0.;\n }\n\n vec4 displacedColor;\n vec2 displacedPos;\n float maxAlpha = 0.;\n\n for (float angle = 0.; angle <= DOUBLE_PI; angle += ANGLE_STEP) {\n displacedPos.x = vTextureCoord.x + uThickness.x * cos(angle);\n displacedPos.y = vTextureCoord.y + uThickness.y * sin(angle);\n displacedColor = texture2D(uSampler, clamp(displacedPos, filterClamp.xy, filterClamp.zw));\n maxAlpha = max(maxAlpha, displacedColor.a);\n }\n\n return maxAlpha;\n}\n\nvoid main(void) {\n vec4 sourceColor = texture2D(uSampler, vTextureCoord);\n vec4 contentColor = sourceColor * float(!uKnockout);\n float outlineAlpha = uAlpha * outlineMaxAlphaAtPos(vTextureCoord.xy) * (1.-sourceColor.a);\n vec4 outlineColor = vec4(vec3(uColor) * outlineAlpha, outlineAlpha);\n gl_FragColor = contentColor + outlineColor;\n}\n`;const r=class extends l{constructor(o=1,t=0,n=.1,e=1,s=!1){super(u,c.replace(/\\$\\{angleStep\\}/,r.getAngleStep(n))),this._thickness=1,this._alpha=1,this._knockout=!1,this.uniforms.uThickness=new Float32Array([0,0]),this.uniforms.uColor=new Float32Array([0,0,0,1]),this.uniforms.uAlpha=e,this.uniforms.uKnockout=s,Object.assign(this,{thickness:o,color:t,quality:n,alpha:e,knockout:s})}static getAngleStep(o){const t=Math.max(o*r.MAX_SAMPLES,r.MIN_SAMPLES);return(Math.PI*2/t).toFixed(7)}apply(o,t,n,e){this.uniforms.uThickness[0]=this._thickness/t._frame.width,this.uniforms.uThickness[1]=this._thickness/t._frame.height,this.uniforms.uAlpha=this._alpha,this.uniforms.uKnockout=this._knockout,o.applyFilter(this,t,n,e)}get alpha(){return this._alpha}set alpha(o){this._alpha=o}get color(){return a.rgb2hex(this.uniforms.uColor)}set color(o){a.hex2rgb(o,this.uniforms.uColor)}get knockout(){return this._knockout}set knockout(o){this._knockout=o}get thickness(){return this._thickness}set thickness(o){this._thickness=o,this.padding=o}};let i=r;i.MIN_SAMPLES=1,i.MAX_SAMPLES=100;export{i as OutlineFilter};\n//# sourceMappingURL=filter-outline.mjs.map\n","/*!\n * @pixi/filter-reflection - v5.1.1\n * Compiled Wed, 11 Jan 2023 23:10:33 UTC\n *\n * @pixi/filter-reflection is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{Filter as l}from\"@pixi/core\";var m=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`,s=`varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\n\nuniform bool mirror;\nuniform float boundary;\nuniform vec2 amplitude;\nuniform vec2 waveLength;\nuniform vec2 alpha;\nuniform float time;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main(void)\n{\n vec2 pixelCoord = vTextureCoord.xy * filterArea.xy;\n vec2 coord = pixelCoord / dimensions;\n\n if (coord.y < boundary) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n\n float k = (coord.y - boundary) / (1. - boundary + 0.0001);\n float areaY = boundary * dimensions.y / filterArea.y;\n float v = areaY + areaY - vTextureCoord.y;\n float y = mirror ? v : vTextureCoord.y;\n\n float _amplitude = ((amplitude.y - amplitude.x) * k + amplitude.x ) / filterArea.x;\n float _waveLength = ((waveLength.y - waveLength.x) * k + waveLength.x) / filterArea.y;\n float _alpha = (alpha.y - alpha.x) * k + alpha.x;\n\n float x = vTextureCoord.x + cos(v * 6.28 / _waveLength - time) * _amplitude;\n x = clamp(x, filterClamp.x, filterClamp.z);\n\n vec4 color = texture2D(uSampler, vec2(x, y));\n\n gl_FragColor = color * _alpha;\n}\n`;const i=class extends l{constructor(r){super(m,s),this.time=0,this.uniforms.amplitude=new Float32Array(2),this.uniforms.waveLength=new Float32Array(2),this.uniforms.alpha=new Float32Array(2),this.uniforms.dimensions=new Float32Array(2),Object.assign(this,i.defaults,r)}apply(r,e,a,u){var n,t;this.uniforms.dimensions[0]=(n=e.filterFrame)==null?void 0:n.width,this.uniforms.dimensions[1]=(t=e.filterFrame)==null?void 0:t.height,this.uniforms.time=this.time,r.applyFilter(this,e,a,u)}set mirror(r){this.uniforms.mirror=r}get mirror(){return this.uniforms.mirror}set boundary(r){this.uniforms.boundary=r}get boundary(){return this.uniforms.boundary}set amplitude(r){this.uniforms.amplitude[0]=r[0],this.uniforms.amplitude[1]=r[1]}get amplitude(){return this.uniforms.amplitude}set waveLength(r){this.uniforms.waveLength[0]=r[0],this.uniforms.waveLength[1]=r[1]}get waveLength(){return this.uniforms.waveLength}set alpha(r){this.uniforms.alpha[0]=r[0],this.uniforms.alpha[1]=r[1]}get alpha(){return this.uniforms.alpha}};let o=i;o.defaults={mirror:!0,boundary:.5,amplitude:[0,20],waveLength:[30,100],alpha:[1,1],time:0};export{o as ReflectionFilter};\n//# sourceMappingURL=filter-reflection.mjs.map\n","/*!\n * @pixi/filter-shockwave - v5.1.1\n * Compiled Wed, 11 Jan 2023 23:10:33 UTC\n *\n * @pixi/filter-shockwave is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{Filter as a}from\"@pixi/core\";var s=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`,f=`varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\n\nuniform vec2 center;\n\nuniform float amplitude;\nuniform float wavelength;\n// uniform float power;\nuniform float brightness;\nuniform float speed;\nuniform float radius;\n\nuniform float time;\n\nconst float PI = 3.14159;\n\nvoid main()\n{\n float halfWavelength = wavelength * 0.5 / filterArea.x;\n float maxRadius = radius / filterArea.x;\n float currentRadius = time * speed / filterArea.x;\n\n float fade = 1.0;\n\n if (maxRadius > 0.0) {\n if (currentRadius > maxRadius) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n fade = 1.0 - pow(currentRadius / maxRadius, 2.0);\n }\n\n vec2 dir = vec2(vTextureCoord - center / filterArea.xy);\n dir.y *= filterArea.y / filterArea.x;\n float dist = length(dir);\n\n if (dist <= 0.0 || dist < currentRadius - halfWavelength || dist > currentRadius + halfWavelength) {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n\n vec2 diffUV = normalize(dir);\n\n float diff = (dist - currentRadius) / halfWavelength;\n\n float p = 1.0 - pow(abs(diff), 2.0);\n\n // float powDiff = diff * pow(p, 2.0) * ( amplitude * fade );\n float powDiff = 1.25 * sin(diff * PI) * p * ( amplitude * fade );\n\n vec2 offset = diffUV * powDiff / filterArea.xy;\n\n // Do clamp :\n vec2 coord = vTextureCoord + offset;\n vec2 clampedCoord = clamp(coord, filterClamp.xy, filterClamp.zw);\n vec4 color = texture2D(uSampler, clampedCoord);\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n // No clamp :\n // gl_FragColor = texture2D(uSampler, vTextureCoord + offset);\n\n color.rgb *= 1.0 + (brightness - 1.0) * p * fade;\n\n gl_FragColor = color;\n}\n`;const n=class extends a{constructor(e=[0,0],r,t=0){super(s,f),this.center=e,Object.assign(this,n.defaults,r),this.time=t}apply(e,r,t,o){this.uniforms.time=this.time,e.applyFilter(this,r,t,o)}get center(){return this.uniforms.center}set center(e){this.uniforms.center=e}get amplitude(){return this.uniforms.amplitude}set amplitude(e){this.uniforms.amplitude=e}get wavelength(){return this.uniforms.wavelength}set wavelength(e){this.uniforms.wavelength=e}get brightness(){return this.uniforms.brightness}set brightness(e){this.uniforms.brightness=e}get speed(){return this.uniforms.speed}set speed(e){this.uniforms.speed=e}get radius(){return this.uniforms.radius}set radius(e){this.uniforms.radius=e}};let i=n;i.defaults={amplitude:30,wavelength:160,brightness:1,speed:500,radius:-1};export{i as ShockwaveFilter};\n//# sourceMappingURL=filter-shockwave.mjs.map\n","/*!\n * @pixi/filter-tilt-shift - v5.2.0\n * Compiled Tue, 28 Feb 2023 14:24:35 UTC\n *\n * @pixi/filter-tilt-shift is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{Filter as o,Point as n,utils as f}from\"@pixi/core\";var m=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`,c=`varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float blur;\nuniform float gradientBlur;\nuniform vec2 start;\nuniform vec2 end;\nuniform vec2 delta;\nuniform vec2 texSize;\n\nfloat random(vec3 scale, float seed)\n{\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vTextureCoord * texSize - start, normal)) / gradientBlur) * blur;\n\n for (float t = -30.0; t <= 30.0; t++)\n {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 sample = texture2D(uSampler, vTextureCoord + delta / texSize * percent * radius);\n sample.rgb *= sample.a;\n color += sample * weight;\n total += weight;\n }\n\n color /= total;\n color.rgb /= color.a + 0.00001;\n\n gl_FragColor = color;\n}\n`;class l extends o{constructor(t){var r,i;super(m,c),this.uniforms.blur=t.blur,this.uniforms.gradientBlur=t.gradientBlur,this.uniforms.start=(r=t.start)!=null?r:new n(0,window.innerHeight/2),this.uniforms.end=(i=t.end)!=null?i:new n(600,window.innerHeight/2),this.uniforms.delta=new n(30,30),this.uniforms.texSize=new n(window.innerWidth,window.innerHeight),this.updateDelta()}updateDelta(){this.uniforms.delta.x=0,this.uniforms.delta.y=0}get blur(){return this.uniforms.blur}set blur(t){this.uniforms.blur=t}get gradientBlur(){return this.uniforms.gradientBlur}set gradientBlur(t){this.uniforms.gradientBlur=t}get start(){return this.uniforms.start}set start(t){this.uniforms.start=t,this.updateDelta()}get end(){return this.uniforms.end}set end(t){this.uniforms.end=t,this.updateDelta()}}class a extends l{updateDelta(){const t=this.uniforms.end.x-this.uniforms.start.x,r=this.uniforms.end.y-this.uniforms.start.y,i=Math.sqrt(t*t+r*r);this.uniforms.delta.x=t/i,this.uniforms.delta.y=r/i}}class u extends l{updateDelta(){const t=this.uniforms.end.x-this.uniforms.start.x,r=this.uniforms.end.y-this.uniforms.start.y,i=Math.sqrt(t*t+r*r);this.uniforms.delta.x=-r/i,this.uniforms.delta.y=t/i}}const d=class extends o{constructor(e,t,r,i){super(),typeof e==\"number\"&&(f.deprecation(\"5.3.0\",\"TiltShiftFilter constructor arguments is deprecated, use options.\"),e={blur:e,gradientBlur:t,start:r,end:i}),e=Object.assign({},d.defaults,e),this.tiltShiftXFilter=new a(e),this.tiltShiftYFilter=new u(e)}apply(e,t,r,i){const s=e.getFilterTexture();this.tiltShiftXFilter.apply(e,t,s,1),this.tiltShiftYFilter.apply(e,s,r,i),e.returnFilterTexture(s)}get blur(){return this.tiltShiftXFilter.blur}set blur(e){this.tiltShiftXFilter.blur=this.tiltShiftYFilter.blur=e}get gradientBlur(){return this.tiltShiftXFilter.gradientBlur}set gradientBlur(e){this.tiltShiftXFilter.gradientBlur=this.tiltShiftYFilter.gradientBlur=e}get start(){return this.tiltShiftXFilter.start}set start(e){this.tiltShiftXFilter.start=this.tiltShiftYFilter.start=e}get end(){return this.tiltShiftXFilter.end}set end(e){this.tiltShiftXFilter.end=this.tiltShiftYFilter.end=e}};let h=d;h.defaults={blur:100,gradientBlur:600,start:void 0,end:void 0};export{l as TiltShiftAxisFilter,h as TiltShiftFilter,a as TiltShiftXFilter,u as TiltShiftYFilter};\n//# sourceMappingURL=filter-tilt-shift.mjs.map\n","/*!\n * @pixi/filter-twist - v5.1.1\n * Compiled Wed, 11 Jan 2023 23:10:33 UTC\n *\n * @pixi/filter-twist is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{Point as e,Filter as t}from\"@pixi/core\";var i=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`,a=`varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float radius;\nuniform float angle;\nuniform vec2 offset;\nuniform vec4 filterArea;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 twist(vec2 coord)\n{\n coord -= offset;\n\n float dist = length(coord);\n\n if (dist < radius)\n {\n float ratioDist = (radius - dist) / radius;\n float angleMod = ratioDist * ratioDist * angle;\n float s = sin(angleMod);\n float c = cos(angleMod);\n coord = vec2(coord.x * c - coord.y * s, coord.x * s + coord.y * c);\n }\n\n coord += offset;\n\n return coord;\n}\n\nvoid main(void)\n{\n\n vec2 coord = mapCoord(vTextureCoord);\n\n coord = twist(coord);\n\n coord = unmapCoord(coord);\n\n gl_FragColor = texture2D(uSampler, coord );\n\n}\n`;const n=class extends t{constructor(o){super(i,a),Object.assign(this,n.defaults,o)}get offset(){return this.uniforms.offset}set offset(o){this.uniforms.offset=o}get radius(){return this.uniforms.radius}set radius(o){this.uniforms.radius=o}get angle(){return this.uniforms.angle}set angle(o){this.uniforms.angle=o}};let r=n;r.defaults={radius:200,angle:4,padding:20,offset:new e};export{r as TwistFilter};\n//# sourceMappingURL=filter-twist.mjs.map\n","/*!\n * @pixi/filter-zoom-blur - v5.1.1\n * Compiled Wed, 11 Jan 2023 23:10:33 UTC\n *\n * @pixi/filter-zoom-blur is licensed under the MIT License.\n * http://www.opensource.org/licenses/mit-license\n */import{Filter as s}from\"@pixi/core\";var l=`attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`,u=`varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform vec2 uCenter;\nuniform float uStrength;\nuniform float uInnerRadius;\nuniform float uRadius;\n\nconst float MAX_KERNEL_SIZE = \\${maxKernelSize};\n\n// author: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\nhighp float rand(vec2 co, float seed) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot(co + seed, vec2(a, b)), sn = mod(dt, 3.14159);\n return fract(sin(sn) * c + seed);\n}\n\nvoid main() {\n\n float minGradient = uInnerRadius * 0.3;\n float innerRadius = (uInnerRadius + minGradient * 0.5) / filterArea.x;\n\n float gradient = uRadius * 0.3;\n float radius = (uRadius - gradient * 0.5) / filterArea.x;\n\n float countLimit = MAX_KERNEL_SIZE;\n\n vec2 dir = vec2(uCenter.xy / filterArea.xy - vTextureCoord);\n float dist = length(vec2(dir.x, dir.y * filterArea.y / filterArea.x));\n\n float strength = uStrength;\n\n float delta = 0.0;\n float gap;\n if (dist < innerRadius) {\n delta = innerRadius - dist;\n gap = minGradient;\n } else if (radius >= 0.0 && dist > radius) { // radius < 0 means it's infinity\n delta = dist - radius;\n gap = gradient;\n }\n\n if (delta > 0.0) {\n float normalCount = gap / filterArea.x;\n delta = (normalCount - delta) / normalCount;\n countLimit *= delta;\n strength *= delta;\n if (countLimit < 1.0)\n {\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n return;\n }\n }\n\n // randomize the lookup values to hide the fixed number of samples\n float offset = rand(vTextureCoord, 0.0);\n\n float total = 0.0;\n vec4 color = vec4(0.0);\n\n dir *= strength;\n\n for (float t = 0.0; t < MAX_KERNEL_SIZE; t++) {\n float percent = (t + offset) / MAX_KERNEL_SIZE;\n float weight = 4.0 * (percent - percent * percent);\n vec2 p = vTextureCoord + dir * percent;\n vec4 sample = texture2D(uSampler, p);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample * weight;\n total += weight;\n\n if (t > countLimit){\n break;\n }\n }\n\n color /= total;\n // switch back from pre-multiplied alpha\n // color.rgb /= color.a + 0.00001;\n\n gl_FragColor = color;\n}\n`,i=Object.getOwnPropertySymbols,d=Object.prototype.hasOwnProperty,f=Object.prototype.propertyIsEnumerable,c=(n,t)=>{var r={};for(var e in n)d.call(n,e)&&t.indexOf(e)<0&&(r[e]=n[e]);if(n!=null&&i)for(var e of i(n))t.indexOf(e)<0&&f.call(n,e)&&(r[e]=n[e]);return r};const a=class extends s{constructor(n){const t=Object.assign(a.defaults,n),{maxKernelSize:r}=t,e=c(t,[\"maxKernelSize\"]);super(l,u.replace(\"${maxKernelSize}\",r.toFixed(1))),Object.assign(this,e)}get center(){return this.uniforms.uCenter}set center(n){this.uniforms.uCenter=n}get strength(){return this.uniforms.uStrength}set strength(n){this.uniforms.uStrength=n}get innerRadius(){return this.uniforms.uInnerRadius}set innerRadius(n){this.uniforms.uInnerRadius=n}get radius(){return this.uniforms.uRadius}set radius(n){(n<0||n===1/0)&&(n=-1),this.uniforms.uRadius=n}};let o=a;o.defaults={strength:.1,center:[0,0],innerRadius:0,radius:-1,maxKernelSize:32};export{o as ZoomBlurFilter};\n//# sourceMappingURL=filter-zoom-blur.mjs.map\n","import DisplayContainer from \"./DisplayContainer.ts\";\r\nimport {Graphics, Text} from \"pixi.js\";\r\nimport ConjugationModel from \"../models/ConjugationModel.ts\";\r\nimport {DropShadowFilter} from \"pixi-filters\";\r\n\r\nexport default class EnglishConjugation extends DisplayContainer\r\n{\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n public set text(value:string)\r\n {\r\n this.txtField.text = value;\r\n this.txtField.resolution = 2;\r\n this.checkForLongText();\r\n this.txtField.pivot.set(this.txtField.width/2, this.txtField.height/2);\r\n }\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private SIZE_HEIGHT:number;\r\n private SIZE_WIDTH:number;\r\n\r\n private fontSize:number;\r\n private sizeBox:Graphics;\r\n private txtField:Text;\r\n private txtScaled:boolean;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Constructor\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n constructor()\r\n {\r\n super();\r\n this._init();\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private _init()\r\n {\r\n this.name = \"englishConjugation\";\r\n this.SIZE_HEIGHT = this.appModel.configValue(\"activity\", \"englishConjugationH\");\r\n this.SIZE_WIDTH = this.appModel.configValue(\"activity\", \"englishConjugationW\");\r\n this.fontSize = 48;\r\n this.txtScaled = false;\r\n }\r\n\r\n private checkForLongText():void\r\n {\r\n if(this.txtField.width > this.SIZE_WIDTH)\r\n {\r\n this.scaleText();\r\n }\r\n }\r\n\r\n private createSizeBox():void\r\n {\r\n this.sizeBox = new Graphics();\r\n this.sizeBox.beginFill(0x00FF00);\r\n this.sizeBox.drawRect(0, 0, this.SIZE_WIDTH, this.SIZE_HEIGHT);\r\n this.sizeBox.endFill();\r\n this.sizeBox.pivot.set(this.sizeBox.width/2, this.sizeBox.height/2);\r\n this.addChild(this.sizeBox);\r\n }\r\n\r\n private createTextField():void\r\n {\r\n this.txtField = new Text(\"\", {fontFamily:ConjugationModel.getInstance().fontFamilyA, fontSize:this.fontSize, fill:0xFFD018, align:'center'});\r\n this.txtField.resolution = 2;\r\n this.txtField.pivot.set(this.txtField.width/2, this.txtField.height/2);\r\n this.txtField.filters = [new DropShadowFilter({resolution:2})];\r\n this.addChild(this.txtField);\r\n }\r\n\r\n private destroyTextField():void\r\n {\r\n this.removeChild(this.txtField);\r\n this.txtField.destroy();\r\n this.txtField = null;\r\n }\r\n\r\n private scaleText():void\r\n {\r\n const value = this.txtField.text;\r\n this.txtScaled = true;\r\n this.destroyTextField();\r\n this.fontSize--;\r\n if(this.fontSize < 10)\r\n {\r\n this.fontSize = 10;\r\n }\r\n this.createTextField();\r\n this.txtField.text = value;\r\n if(this.txtField.width > this.SIZE_WIDTH)\r\n {\r\n this.scaleText();\r\n }\r\n }\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public create(creationCompleteCallback?:Function, show=true):void\r\n {\r\n this.createTextField();\r\n //this.createSizeBox();\r\n super.create(creationCompleteCallback, show);\r\n }\r\n\r\n public destroy():void\r\n {\r\n super.destroy();\r\n }\r\n}","\r\nexport default class TimerEvent\r\n{\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public static TIMER:string = \"TimerEvent:timer\";\r\n public static TIMER_COMPLETE:string = \"TimerEvent:timerComplete\";\r\n\r\n}\r\n","////////////////////////////////////////////////////////////////////////////////\r\n//\r\n// Brain Fusion LLC\r\n// Copyright 2024 Joe Billman\r\n// All Rights Reserved.\r\n//\r\n////////////////////////////////////////////////////////////////////////////////\r\n\r\nimport TimerEvent from \"../events/TimerEvent.ts\";\r\n\r\nexport default class Timer\r\n{\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private _currentCount:number;\r\n private _delay:number;\r\n private _repeatCount:number;\r\n private _running:boolean;\r\n private eventDispatcher:EventTarget = new EventTarget();\r\n private interval:any;\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public id:number;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Getters/Setters\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n public get currentCount():number\r\n {\r\n return this._currentCount;\r\n }\r\n\r\n public get delay():number\r\n {\r\n return this._delay;\r\n }\r\n\r\n public set delay(value:number)\r\n {\r\n this._delay = value;\r\n }\r\n\r\n public get repeatCount():number\r\n {\r\n return this._repeatCount;\r\n }\r\n\r\n public set repeatCount(value:number)\r\n {\r\n this._repeatCount = value;\r\n }\r\n\r\n public get running():boolean\r\n {\r\n return this._running;\r\n }\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Constructor\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n constructor(delay:number, repeatCount:number=-1)\r\n {\r\n this._delay = delay;\r\n this._repeatCount = repeatCount;\r\n\r\n this._init();\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private _init():void\r\n {\r\n this._currentCount = 0;\r\n }\r\n\r\n private handleInterval = () =>\r\n {\r\n this._currentCount++;\r\n if(this._currentCount == this._repeatCount)\r\n {\r\n this.stop();\r\n this.eventDispatcher.dispatchEvent(new CustomEvent(TimerEvent.TIMER_COMPLETE, {detail:{target:this}}));\r\n return;\r\n }\r\n this.eventDispatcher.dispatchEvent(new CustomEvent(TimerEvent.TIMER, {detail:{target:this}}));\r\n }\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public addEvntListener(type:string, listener:EventListenerOrEventListenerObject, options?:boolean | AddEventListenerOptions):void\r\n {\r\n this.eventDispatcher.addEventListener(type, listener, options);\r\n }\r\n\r\n public removeEvntListener(type:string, listener:EventListenerOrEventListenerObject, options?:boolean | EventListenerOptions):void\r\n {\r\n this.eventDispatcher.removeEventListener(type, listener, options);\r\n }\r\n\r\n /**\r\n * Resets the Timer by stopping it and resetting the current count.\r\n * @public\r\n */\r\n public reset():void\r\n {\r\n this.stop();\r\n this._currentCount = 0;\r\n this.interval = null;\r\n }\r\n\r\n public start():void\r\n {\r\n if(this.interval)\r\n {\r\n clearInterval(this.interval);\r\n }\r\n this.interval = window.setInterval(this.handleInterval, this._delay);\r\n this._running = true;\r\n }\r\n\r\n public stop():void\r\n {\r\n if(this.interval)\r\n {\r\n clearInterval(this.interval);\r\n }\r\n this._running = false;\r\n }\r\n\r\n}\r\n","import DisplayContainer from \"./DisplayContainer.ts\";\r\nimport {Container, Graphics, Text, TextStyleAlign} from \"pixi.js\";\r\nimport ConjugationModel from \"../models/ConjugationModel.ts\";\r\nimport Timer from \"../utils/Timer.ts\";\r\nimport TimerEvent from \"../events/TimerEvent.ts\";\r\nimport ConjugationPracticeEvent from \"../events/ConjugationPracticeEvent.ts\";\r\n\r\nexport default class InputField extends DisplayContainer\r\n{\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private DEFAULT_HIGHLIGHT_COUNT:number = 3;\r\n\r\n private _align:TextStyleAlign;\r\n private _color:number;\r\n private _displayDebug:boolean;\r\n private _fontSize:number;\r\n private _inputWidth:number;\r\n private _inputHeight:number;\r\n private _value:string;\r\n private correctAfter:boolean;\r\n private cursorGraphic:Graphics;\r\n private cursorInterval:number;\r\n private debugContainer:Container;\r\n private grContainer:Container;\r\n private highlightField:Text;\r\n private highlightTimer:Timer;\r\n private initialFontSize:number;\r\n private isHighlighted:boolean;\r\n private paddingX:number;\r\n private paddingY:number;\r\n private placeholderText:Text;\r\n private txtField:Text;\r\n private txtMask:Graphics;\r\n private txtScaled:boolean;\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public afterValue:string;\r\n public answered:boolean;\r\n public autoScale:boolean;\r\n public drawDefaultBg:boolean;\r\n public finished:boolean;\r\n public highlightColor:number;\r\n public highlightColorCorrect:number;\r\n public highlightColorIncorrect:number;\r\n public placeholder:string;\r\n public placeholderColor:number;\r\n\r\n public get align():TextStyleAlign\r\n {\r\n return this._align;\r\n }\r\n\r\n public set align(value:TextStyleAlign)\r\n {\r\n this._align = value;\r\n }\r\n\r\n public get displayDebug():boolean\r\n {\r\n return this._displayDebug;\r\n }\r\n\r\n public set displayDebug(value:boolean)\r\n {\r\n this._displayDebug = value;\r\n /*if(this._displayDebug)\r\n {\r\n this.destroyDebugInfo();\r\n this.createDebugInfo();\r\n }\r\n else\r\n {\r\n this.destroyDebugInfo();\r\n }*/\r\n }\r\n\r\n public get color():number\r\n {\r\n return this._color;\r\n }\r\n\r\n public set color(value)\r\n {\r\n this._color = value;\r\n }\r\n\r\n public get fontSize():number\r\n {\r\n return this._fontSize;\r\n }\r\n\r\n public set fontSize(value:number)\r\n {\r\n this._fontSize = value;\r\n this.initialFontSize = value;\r\n }\r\n\r\n public get inputHeight():number\r\n {\r\n return this._inputHeight;\r\n }\r\n\r\n public set inputHeight(value:number)\r\n {\r\n this._inputHeight = value;\r\n }\r\n\r\n public get inputWidth():number\r\n {\r\n return this._inputWidth;\r\n }\r\n\r\n public set inputWidth(value:number)\r\n {\r\n this._inputWidth = value;\r\n }\r\n\r\n public get value():string\r\n {\r\n return this._value;\r\n }\r\n\r\n public set value(value:string)\r\n {\r\n let deleteDetected = false;\r\n if(value.length < this._value.length)\r\n {\r\n deleteDetected = true;\r\n }\r\n this._value = value;\r\n this.txtField.text = value;\r\n this.highlightField.text = value;\r\n if(this.autoScale)\r\n {\r\n if(deleteDetected)\r\n {\r\n if(this.txtScaled)\r\n {\r\n this.upScaleText();\r\n }\r\n else\r\n {\r\n if(this._fontSize < this.initialFontSize)\r\n {\r\n this._fontSize = this.initialFontSize-1;\r\n this.upScaleText();\r\n }\r\n }\r\n }\r\n else\r\n {\r\n if(this.txtField.width > this._inputWidth-this.paddingX*2)\r\n {\r\n this.scaleText();\r\n }\r\n }\r\n }\r\n if(this._align == \"center\")\r\n {\r\n this.centerText(this.txtField);\r\n this.centerText(this.highlightField);\r\n if(this.txtField.width > this._inputWidth-this.paddingX*2)\r\n {\r\n this.cursorGraphic.x = this._inputWidth-this.paddingX;\r\n }\r\n else\r\n {\r\n this.cursorGraphic.x = this.txtField.x + this.txtField.width/2;\r\n }\r\n }\r\n else\r\n {\r\n if(this.txtField.text == \"\")\r\n {\r\n this.cursorGraphic.x = this.paddingX;\r\n }\r\n else\r\n {\r\n if(this.txtField.width > this._inputWidth-this.paddingX*2)\r\n {\r\n this.txtField.x = this._inputWidth-this.paddingX*2-this.txtField.width;\r\n }\r\n else\r\n {\r\n this.txtField.x = this.paddingX;\r\n }\r\n this.cursorGraphic.x = this.txtField.x + this.txtField.width;\r\n }\r\n }\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Constructor\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n constructor()\r\n {\r\n super();\r\n this._init();\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private _init()\r\n {\r\n this.name = \"inputFieldCP\";\r\n this._align = \"left\";\r\n this._color = 0x222222;\r\n this._fontSize = 18;\r\n this._inputHeight = 40;\r\n this._inputWidth = 300;\r\n this._value = \"\";\r\n this.answered = false;\r\n this.autoScale = false;\r\n this.correctAfter = false;\r\n this._displayDebug = false;\r\n this.drawDefaultBg = true;\r\n this.finished = false;\r\n this.highlightColor = 0x00FFFF;\r\n this.highlightColorCorrect = 0x00FF00;\r\n this.highlightColorIncorrect = 0xFF0000;\r\n this.initialFontSize = this._fontSize;\r\n this.isHighlighted = false;\r\n this.paddingX = 8;\r\n this.paddingY = 8;\r\n this.placeholder = \"\";\r\n this.placeholderColor = 0x444444;\r\n this.txtScaled = false;\r\n }\r\n\r\n private centerText(target:Text):void\r\n {\r\n target.pivot.x = target.width/2;\r\n target.x = this._inputWidth/2;\r\n target.pivot.y = target.height/2;\r\n target.y = this._inputHeight/2;\r\n }\r\n\r\n private createBg():void\r\n {\r\n const thickness = 2;\r\n const width = this._inputWidth;\r\n const height = this._inputHeight;\r\n\r\n this.grContainer = new Container();\r\n\r\n let gr = new Graphics();\r\n gr.beginFill(0xFFFFFF);\r\n gr.drawRect(0, 0, width, height);\r\n gr.endFill();\r\n this.grContainer.addChild(gr);\r\n\r\n gr = new Graphics();\r\n gr.beginFill(0x777777);\r\n gr.drawRect(0, 0, width, thickness);\r\n gr.endFill();\r\n this.grContainer.addChild(gr);\r\n\r\n gr = new Graphics();\r\n gr.beginFill(0x777777);\r\n gr.drawRect(0, 0, thickness, height-thickness);\r\n gr.endFill();\r\n gr.y = thickness;\r\n this.grContainer.addChild(gr);\r\n\r\n gr = new Graphics();\r\n gr.beginFill(0xCCCCCC);\r\n gr.drawRect(0, 0, width-thickness*2, thickness);\r\n gr.endFill();\r\n gr.x = thickness;\r\n gr.y = height-thickness;\r\n this.grContainer.addChild(gr);\r\n\r\n gr = new Graphics();\r\n gr.beginFill(0xCCCCCC);\r\n gr.drawRect(0, 0, thickness, height-thickness);\r\n gr.endFill();\r\n gr.x = width-thickness;\r\n gr.y = thickness;\r\n this.grContainer.addChild(gr);\r\n\r\n this.addChild(this.grContainer);\r\n }\r\n\r\n private createCursor():void\r\n {\r\n const width = 2;\r\n const height = this.txtField.height+this.paddingY;\r\n const color = 0xAAAAAA;\r\n\r\n this.cursorGraphic = new Graphics();\r\n this.cursorGraphic.beginFill(color);\r\n this.cursorGraphic.drawRect(0, 0, width, height);\r\n this.cursorGraphic.endFill();\r\n if(this._align == \"center\")\r\n {\r\n this.cursorGraphic.x = this._inputWidth/2;\r\n }\r\n else\r\n {\r\n this.cursorGraphic.x = this.paddingX;\r\n }\r\n this.cursorGraphic.pivot.y = this.cursorGraphic.height/2;\r\n this.cursorGraphic.y = this._inputHeight/2;\r\n this.cursorGraphic.visible = false;\r\n this.addChild(this.cursorGraphic);\r\n }\r\n\r\n private createDebugInfo():void\r\n {\r\n this.debugContainer = new Container();\r\n\r\n const boundingBox = new Graphics();\r\n boundingBox.lineStyle(this.DEBUG_LINE_WIDTH, this.DEBUG_COLOR_BB, this.DEBUG_ALPHA);\r\n boundingBox.drawRect(0, 0, this._inputWidth, this._inputHeight);\r\n boundingBox.endFill();\r\n boundingBox.alpha = this.DEBUG_ALPHA;\r\n this.debugContainer.addChild(boundingBox);\r\n\r\n const pivotPoint = new Graphics();\r\n pivotPoint.beginFill(this.DEBUG_COLOR_PP);\r\n pivotPoint.drawCircle(0, 0, 4);\r\n pivotPoint.endFill();\r\n pivotPoint.alpha = this.DEBUG_ALPHA;\r\n pivotPoint.x = this.pivot.x;\r\n pivotPoint.y = this.pivot.y;\r\n this.debugContainer.addChild(pivotPoint);\r\n\r\n this.addChild(this.debugContainer);\r\n }\r\n\r\n private createHighlightField():void\r\n {\r\n this.highlightField = new Text(\"\", {fontFamily:ConjugationModel.getInstance().fontFamilyA, fontSize:this._fontSize, fill:this.highlightColor, align:this._align});\r\n this.highlightField.resolution = 2;\r\n if(this._align == \"center\")\r\n {\r\n this.centerText(this.highlightField);\r\n }\r\n else\r\n {\r\n this.highlightField.x = this.paddingX;\r\n this.highlightField.pivot.y = this.highlightField.height/2;\r\n this.highlightField.y = this._inputHeight/2;\r\n }\r\n this.highlightField.mask = this.txtMask;\r\n this.highlightField.visible = false;\r\n this.addChild(this.highlightField);\r\n }\r\n\r\n private createHighlightTimer():void\r\n {\r\n this.highlightTimer = new Timer(250, (this.DEFAULT_HIGHLIGHT_COUNT*2)+1);\r\n this.highlightTimer.addEvntListener(TimerEvent.TIMER, this.handleTimer);\r\n this.highlightTimer.addEvntListener(TimerEvent.TIMER_COMPLETE, this.handleTimerComplete);\r\n }\r\n\r\n private createPlaceholderText():void\r\n {\r\n this.placeholderText = new Text(this.placeholder, {fontFamily:ConjugationModel.getInstance().fontFamilyA, fontSize:this._fontSize, fill:this.placeholderColor, align:this._align});\r\n this.placeholderText.resolution = 2;\r\n if(this._align == \"center\")\r\n {\r\n this.centerText(this.placeholderText);\r\n }\r\n else\r\n {\r\n this.placeholderText.x = this.paddingX;\r\n this.placeholderText.pivot.y = this.placeholderText.height/2;\r\n this.placeholderText.y = this._inputHeight/2;\r\n }\r\n this.placeholderText.mask = this.txtMask;\r\n this.addChild(this.placeholderText);\r\n }\r\n\r\n private createTextField():void\r\n {\r\n this.txtField = new Text(\"\", {fontFamily:ConjugationModel.getInstance().fontFamilyA, fontSize:this._fontSize, fill:this._color, align:this._align});\r\n this.txtField.resolution = 2;\r\n if(this._align == \"center\")\r\n {\r\n this.centerText(this.txtField);\r\n }\r\n else\r\n {\r\n this.txtField.x = this.paddingX;\r\n this.txtField.pivot.y = this.txtField.height/2;\r\n this.txtField.y = this._inputHeight/2;\r\n }\r\n this.txtField.mask = this.txtMask;\r\n this.addChild(this.txtField);\r\n }\r\n\r\n private createTextFieldMask():void\r\n {\r\n this.txtMask = new Graphics();\r\n this.txtMask.beginFill(0x00FF00);\r\n this.txtMask.drawRect(0, 0, this._inputWidth-this.paddingX*2, this._inputHeight-this.paddingY*2);\r\n this.txtMask.endFill();\r\n this.txtMask.x = this.paddingX;\r\n this.txtMask.y = this.paddingY;\r\n this.addChild(this.txtMask);\r\n }\r\n\r\n private destroyDebugInfo():void\r\n {\r\n if(this.debugContainer)\r\n {\r\n this.debugContainer.removeChildren();\r\n this.removeChild(this.debugContainer);\r\n this.debugContainer.destroy();\r\n this.debugContainer = null;\r\n }\r\n }\r\n\r\n private destroyHighlightField():void\r\n {\r\n this.removeChild(this.highlightField);\r\n this.highlightField.destroy();\r\n this.highlightField = null;\r\n }\r\n\r\n private destroyTextField():void\r\n {\r\n this.removeChild(this.txtField);\r\n this.txtField.destroy();\r\n this.txtField = null;\r\n }\r\n\r\n private handleInterval = ():void =>\r\n {\r\n this.cursorGraphic.visible = !this.cursorGraphic.visible;\r\n }\r\n\r\n private handleTimer = (evt:CustomEvent):void =>\r\n {\r\n if(this.isHighlighted)\r\n {\r\n this.unhighlight();\r\n }\r\n else\r\n {\r\n this.highlight();\r\n }\r\n }\r\n\r\n private handleTimerComplete = (evt:CustomEvent):void =>\r\n {\r\n this.highlightTimer.reset();\r\n this.unhighlight();\r\n if(this.correctAfter)\r\n {\r\n this.correctAfter = false;\r\n if(this.afterValue)\r\n {\r\n this.value = this.afterValue;\r\n this.afterValue = null;\r\n }\r\n this.correct(2);\r\n return;\r\n }\r\n this.highlightTimer.repeatCount = (this.DEFAULT_HIGHLIGHT_COUNT*2)+1;\r\n if(this.finished)\r\n {\r\n if(this.appModel.orientation == \"portrait\")\r\n {\r\n this.eventDispatcher.dispatchEvent(new CustomEvent(ConjugationPracticeEvent.INPUT_FINISHED));\r\n }\r\n }\r\n }\r\n\r\n private scaleText():void\r\n {\r\n this.txtScaled = true;\r\n this.destroyHighlightField();\r\n this.destroyTextField();\r\n this._fontSize--;\r\n if(this._fontSize < 10)\r\n {\r\n this._fontSize = 10;\r\n }\r\n this.createTextField();\r\n this.createHighlightField();\r\n this.txtField.text = this._value;\r\n this.highlightField.text = this._value;\r\n if(this.txtField.width > this._inputWidth-this.paddingX*2 && this._fontSize > 10)\r\n {\r\n this.scaleText();\r\n }\r\n this.sizeCursor();\r\n }\r\n\r\n private sizeCursor():void\r\n {\r\n this.cursorGraphic.height = this.txtField.height+this.paddingY;\r\n this.cursorGraphic.y = this._inputHeight/2;\r\n }\r\n\r\n private upScaleText():void\r\n {\r\n if(this._fontSize < this.initialFontSize)\r\n {\r\n this._fontSize++;\r\n this.destroyHighlightField();\r\n this.destroyTextField();\r\n this.createTextField();\r\n this.createHighlightField();\r\n this.txtField.text = this._value;\r\n this.highlightField.text = this._value;\r\n }\r\n if(this._fontSize > this.initialFontSize)\r\n {\r\n this._fontSize = this.initialFontSize;\r\n }\r\n if(this._fontSize == this.initialFontSize)\r\n {\r\n this.txtScaled = false;\r\n }\r\n this.sizeCursor();\r\n //console.log(\"this._fontSize: \"+this._fontSize);\r\n }\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public blur():void\r\n {\r\n clearInterval(this.cursorInterval);\r\n this.cursorGraphic.visible = false;\r\n if(this._value == \"\" && !this.answered)\r\n {\r\n this.placeholderText.visible = true;\r\n }\r\n }\r\n\r\n public correct(highlightCount:number=3):void\r\n {\r\n this.highlightTimer.repeatCount = (highlightCount*2)+1;\r\n this.highlightColor = this.highlightColorCorrect;\r\n this.destroyHighlightField();\r\n this.createHighlightField();\r\n this.highlightField.text = this._value;\r\n if(this._align == \"center\")\r\n {\r\n this.centerText(this.highlightField);\r\n }\r\n this.highlightTimer.reset();\r\n this.highlightTimer.start();\r\n }\r\n\r\n public create(creationCompleteCallback?:Function, show=true):void\r\n {\r\n if(this.drawDefaultBg)\r\n {\r\n this.createBg();\r\n }\r\n this.createTextFieldMask();\r\n this.createTextField();\r\n this.createHighlightField();\r\n this.createPlaceholderText();\r\n this.createCursor();\r\n this.createHighlightTimer();\r\n if(this._displayDebug)\r\n {\r\n this.createDebugInfo();\r\n }\r\n super.create(creationCompleteCallback, show);\r\n }\r\n\r\n public destroy():void\r\n {\r\n super.destroy();\r\n }\r\n\r\n public focus():void\r\n {\r\n this.placeholderText.visible = false;\r\n this.cursorInterval = setInterval(this.handleInterval, 500);\r\n }\r\n\r\n public highlight():void\r\n {\r\n this.isHighlighted = true;\r\n this.highlightField.visible = true;\r\n this.txtField.visible = false;\r\n }\r\n\r\n public incorrect(highlightCount:number=3,correctAfter:boolean=false):void\r\n {\r\n this.highlightTimer.repeatCount = (highlightCount*2)+1;\r\n this.correctAfter = correctAfter;\r\n this.highlightColor = this.highlightColorIncorrect;\r\n this.destroyHighlightField();\r\n this.createHighlightField();\r\n this.highlightField.text = this._value;\r\n if(this._align == \"center\")\r\n {\r\n this.centerText(this.highlightField);\r\n }\r\n this.highlightTimer.reset();\r\n this.highlightTimer.start();\r\n }\r\n\r\n public unhighlight():void\r\n {\r\n this.isHighlighted = false;\r\n this.txtField.visible = true;\r\n this.highlightField.visible = false;\r\n }\r\n}","import DisplayContainer from \"./DisplayContainer.ts\";\r\nimport {Container, Graphics, Text} from \"pixi.js\";\r\nimport ButtonData from \"../types/ButtonData.ts\";\r\nimport ConjugationModel from \"../models/ConjugationModel.ts\";\r\n\r\nexport default class KeyboardButton extends DisplayContainer\r\n{\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private _value:string;\r\n private bg:Graphics;\r\n private bgHighlight:Graphics;\r\n private bgShadow:Graphics;\r\n private btnData:ButtonData;\r\n private calloutBg:Graphics;\r\n private calloutContainer:Container;\r\n private calloutText:Text;\r\n private controlValues:Array;\r\n private curControlIndex:number = -1;\r\n private curShiftIndex:number = -1;\r\n private idField:Text;\r\n private label:string;\r\n private shiftValues:Array;\r\n private txtField:Text;\r\n //----------------------------------\r\n\r\n // Public:\r\n //----------------------------------\r\n public btnColor:string = \"0xFFFFFF\";\r\n public btnHeight:number = 50;\r\n public btnHighlightColor:string = \"0x58efb4\";\r\n public btnRoundness:number = 8;\r\n public btnShadowColor:string = \"0x777777\"\r\n public btnWidth:number = 42;\r\n public fontColor:string = \"0x333333\";\r\n public fontSize:number = 24;\r\n public id:string;\r\n public idFontColor:string = \"0xAAAAAA\";\r\n public idFontSize:number = 12;\r\n\r\n public get btnPosition():string\r\n {\r\n return this.btnData.position;\r\n }\r\n\r\n public get value():string\r\n {\r\n return this._value;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Constructor\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //char?:string, id?:string, value?:string\r\n constructor(data:ButtonData)\r\n {\r\n super();\r\n this.btnData = data;\r\n this.label = data.label;\r\n if(data.id)\r\n {\r\n this.id = data.id;\r\n }\r\n else\r\n {\r\n this.id = data.label;\r\n }\r\n if(data.value)\r\n {\r\n this._value = data.value;\r\n }\r\n else\r\n {\r\n this._value = data.label;\r\n }\r\n if(data.shiftValues)\r\n {\r\n this.shiftValues = data.shiftValues;\r\n }\r\n this._init();\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private _init()\r\n {\r\n this.name = \"keyboardButtonCP\";\r\n }\r\n\r\n private addListeners():void\r\n {\r\n if(this.appModel.isTouchDevice)\r\n {\r\n this.onpointerdown = this.showKeyCallout;\r\n this.onpointerup = this.hideKeyCallout;\r\n this.onpointerupoutside = this.hideKeyCallout;\r\n }\r\n else\r\n {\r\n this.onmousedown = this.showKeyCallout;\r\n this.onmouseup = this.hideKeyCallout;\r\n }\r\n }\r\n\r\n private createBg():void\r\n {\r\n const roundness = this.btnRoundness;\r\n const width = this.btnWidth;\r\n const height = this.btnHeight;\r\n\r\n this.bgShadow = new Graphics();\r\n this.bgShadow.beginFill(this.btnShadowColor);\r\n this.bgShadow.drawRoundedRect(0, 0, width, height, roundness);\r\n this.bgShadow.y = 2;\r\n this.bgShadow.endFill();\r\n this.addChild(this.bgShadow);\r\n\r\n this.bg = new Graphics();\r\n this.bg.beginFill(this.btnColor);\r\n this.bg.drawRoundedRect(0, 0, width, height, roundness);\r\n this.bg.endFill();\r\n this.addChild(this.bg);\r\n\r\n this.bgHighlight = new Graphics();\r\n this.bgHighlight.beginFill(this.btnHighlightColor);\r\n this.bgHighlight.drawRoundedRect(0, 0, width, height, roundness);\r\n this.bgHighlight.endFill();\r\n this.bgHighlight.visible = false;\r\n this.addChild(this.bgHighlight);\r\n }\r\n\r\n private createIdField():void\r\n {\r\n this.idField = new Text(this.id, {fontFamily:\"Arial\", fontSize:this.idFontSize, fill:this.idFontColor, align:'center'});\r\n this.idField.anchor.set(0.5);\r\n this.idField.resolution = 2;\r\n this.idField.x = this.bg.width/2 + this.btnData.idOffsetX;\r\n this.idField.y = this.bg.height+this.btnData.idOffsetY;\r\n this.addChild(this.idField);\r\n }\r\n\r\n private createKeyCallout():void\r\n {\r\n const multiplier = 1.5;\r\n const padding = 16;\r\n this.calloutContainer = new Container();\r\n\r\n if(this.btnData.icon)\r\n {\r\n this.calloutText = new Text(this.label, {fontFamily:ConjugationModel.getInstance().iconFont, fontSize:this.fontSize-2, fill:this.fontColor, align:\"center\"});\r\n }\r\n else\r\n {\r\n this.calloutText = new Text(this.label, {fontFamily:\"Arial\", fontSize:this.fontSize*multiplier, fill:this.fontColor, align:\"center\"});\r\n }\r\n\r\n this.calloutText.anchor.set(0.5);\r\n this.calloutText.resolution = 2;\r\n\r\n this.calloutBg = new Graphics();\r\n this.calloutBg.beginFill(this.btnColor);\r\n this.calloutBg.drawRoundedRect(0, 0, this.btnWidth*multiplier, (this.btnHeight*multiplier)+padding, this.btnRoundness);\r\n this.calloutBg.endFill();\r\n this.calloutContainer.addChild(this.calloutBg);\r\n\r\n this.calloutText.x = this.calloutBg.width/2;\r\n this.calloutText.y = (this.calloutBg.height/2)-padding/2;\r\n this.calloutContainer.addChild(this.calloutText);\r\n\r\n this.calloutContainer.visible = false;\r\n //this.calloutContainer.pivot.set(0, this.calloutContainer.height/2);\r\n this.calloutContainer.x -= (this.calloutBg.width-this.bg.width)/2;\r\n this.calloutContainer.y -= (this.calloutContainer.height-6);\r\n this.addChild(this.calloutContainer);\r\n }\r\n\r\n private createTextField():void\r\n {\r\n let padding = 0;\r\n if(this.btnData.icon)\r\n {\r\n this.txtField = new Text(this.label, {fontFamily:ConjugationModel.getInstance().iconFont, fontSize:this.fontSize-2, fill:this.fontColor, align:\"center\"});\r\n padding = 4;\r\n }\r\n else\r\n {\r\n this.txtField = new Text(this.label, {fontFamily:\"Arial\", fontSize:this.fontSize, fill:this.fontColor, align:\"center\"});\r\n }\r\n this.txtField.anchor.set(0.5);\r\n //this.txtField.pivot.set(this.txtField.width/2, this.txtField.height/2);\r\n this.txtField.resolution = 2;\r\n //this.txtField.scale.set(0.5);\r\n this.txtField.x = (this.bg.width/2)+this.btnData.labelOffsetX;\r\n this.txtField.y = ((this.bg.height/2)+padding)+this.btnData.labelOffsetY;\r\n this.addChild(this.txtField);\r\n }\r\n\r\n private removeListeners():void\r\n {\r\n this.onmousedown = null;\r\n this.onpointerdown = null;\r\n this.onmouseup = null;\r\n this.onpointerup = null;\r\n this.onpointerupoutside = null;\r\n }\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public create(creationCompleteCallback?:Function, show=true):void\r\n {\r\n this.createBg();\r\n this.createTextField();\r\n if(this.btnData.displayId)\r\n {\r\n this.createIdField();\r\n }\r\n this.eventMode = \"static\";\r\n //this.hitArea = new Rectangle(0, 0, this._btnWidth, this._btnHeight);\r\n this.cursor = \"pointer\";\r\n this.createKeyCallout();\r\n this.addListeners();\r\n if(this.btnData.showDisabled)\r\n {\r\n this.disable();\r\n }\r\n super.create(creationCompleteCallback, show);\r\n }\r\n\r\n public cycleControlValue():void\r\n {\r\n if(this.controlValues)\r\n {\r\n if(this.curControlIndex < this.controlValues.length-1)\r\n {\r\n this.curControlIndex++;\r\n this.label = this.controlValues[this.curControlIndex];\r\n this._value = this.controlValues[this.curControlIndex];\r\n }\r\n else\r\n {\r\n this.curControlIndex = -1;\r\n this.label = this.btnData.label;\r\n this._value = this.btnData.value;\r\n }\r\n\r\n this.txtField.text = this.label;\r\n }\r\n }\r\n\r\n public cycleShiftValue():void\r\n {\r\n if(this.shiftValues)\r\n {\r\n if(this.curShiftIndex < this.shiftValues.length-1)\r\n {\r\n this.curShiftIndex++;\r\n this.label = this.shiftValues[this.curShiftIndex];\r\n this._value = this.shiftValues[this.curShiftIndex];\r\n }\r\n else\r\n {\r\n this.curShiftIndex = -1;\r\n this.label = this.btnData.label;\r\n this._value = this.btnData.value;\r\n }\r\n\r\n this.txtField.text = this.label;\r\n }\r\n }\r\n\r\n public destroy():void\r\n {\r\n this.removeListeners();\r\n super.destroy();\r\n }\r\n\r\n public override disable():void\r\n {\r\n this.alpha = 0.85;\r\n this.txtField.alpha = 0.35;\r\n super.disable();\r\n }\r\n\r\n public hideKeyCallout():void\r\n {\r\n this.calloutContainer.visible = false;\r\n }\r\n\r\n public highlight():void\r\n {\r\n this.bgHighlight.visible = true;\r\n }\r\n\r\n public unhighlight():void\r\n {\r\n this.bgHighlight.visible = false;\r\n }\r\n\r\n public resetControlCycle():void\r\n {\r\n this.curControlIndex = -1;\r\n }\r\n\r\n public resetShiftCycle():void\r\n {\r\n this.curShiftIndex = -1;\r\n }\r\n\r\n public showKeyCallout():void\r\n {\r\n this.calloutContainer.visible = true;\r\n }\r\n}","\r\nexport default class ButtonData\r\n{\r\n public displayId:boolean = false;\r\n public icon:boolean = false;\r\n public id:string;\r\n public idOffsetX:number = 0;\r\n public idOffsetY:number = -8;\r\n public label:string;\r\n public labelOffsetX:number = 0;\r\n public labelOffsetY:number = 0;\r\n public overridden:boolean = false;\r\n public position:string;\r\n public secondary:boolean = false;\r\n public shiftValues:Array;\r\n public showDisabled:boolean = false;\r\n public value:string;\r\n public visible:string;\r\n public widthMultiplier:number = 1;\r\n\r\n constructor(id:string, label:string, value:string, visible?:string)\r\n {\r\n this.id = id;\r\n this.label = label;\r\n this.value = value;\r\n if(visible)\r\n {\r\n this.visible = visible;\r\n }\r\n }\r\n}","export default class KeyboardEventCP\r\n{\r\n public static readonly SUBMIT:string = \"KE:SUBMIT\";\r\n}","import Timer from \"../utils/Timer.ts\";\r\n\r\n\r\nexport default class DelayData\r\n{\r\n public callback:Function;\r\n public id:string;\r\n public params:any[];\r\n public timer:Timer;\r\n}","import TimerEvent from \"../events/TimerEvent.ts\";\r\nimport Timer from \"./Timer.ts\";\r\nimport DelayData from \"../types/DelayData.ts\";\r\n\r\nexport default class Delay\r\n{\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n public static delayCalls:any[];\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private static checkForDuplicateIds(id:string):void\r\n {\r\n if(this.delayCalls)\r\n {\r\n let len:number = this.delayCalls.length;\r\n for(let i:number=0; i\r\n {\r\n let curCall:DelayData;\r\n let len:number = Delay.delayCalls.length;\r\n for(let i:number=0; i;\r\n private bottomRowContainer:Container;\r\n private config:any;\r\n private container:Container;\r\n private curInputValue:string;\r\n private curKeyboardIndex:number;\r\n private homeRowBtnData:Array;\r\n private homeRowContainer:Container;\r\n private keyboardBtns:any;\r\n private keyboardWidth:number;\r\n private keyHeightToWidthRatio:number;\r\n private lastTypedKey:string;\r\n private multipleKeyboardsFound:boolean;\r\n private numberRowBtnData:Array;\r\n private numberRowContainer:Container;\r\n private shiftKeysFound:boolean;\r\n private spaceRowBtnData:Array;\r\n private spaceRowContainer:Container;\r\n private topRowBtnData:Array;\r\n private topRowContainer:Container;\r\n private updateInputCallback:Function;\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public keyboardHeight:number;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Constructor\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n constructor(updateInputCallback?:Function)\r\n {\r\n super();\r\n this.updateInputCallback = updateInputCallback;\r\n this._init();\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private _init()\r\n {\r\n this.name = \"Keyboard\";\r\n this.curKeyboardIndex = 0;\r\n this.curInputValue = \"\";\r\n this.keyboardHeight = 0;\r\n this.lastTypedKey = \"\";\r\n this.multipleKeyboardsFound = false;\r\n this.shiftKeysFound = false;\r\n }\r\n\r\n private addBtnListeners():void\r\n {\r\n for(const key in this.keyboardBtns)\r\n {\r\n this.keyboardBtns[key].ontap = this.handleClick;\r\n this.keyboardBtns[key].onclick = this.handleClick;\r\n }\r\n }\r\n\r\n private addListeners():void\r\n {\r\n window.addEventListener(\"keydown\", this.handleKeyDown);\r\n window.addEventListener(\"keypress\", this.handleKeyPress);\r\n window.addEventListener(\"keyup\", this.handleKeyUp);\r\n }\r\n\r\n private adjustBtnsPosition(container:Container, firstPadding:number, lastPadding:number=this.config.btnPadding):void\r\n {\r\n const len = container.children.length;\r\n const padding = this.config.btnPadding;\r\n let curBtn:KeyboardButton;\r\n let curX = 0;\r\n for(let i:number=0; i):number\r\n {\r\n let activeKeyCount = 0;\r\n const len:number = row.length;\r\n for(let i:number=0; i = [numRowWidth, topRowWidth, homeRowWidth, btmRowWidth, spaceRowWidth];\r\n widths.sort(function(a, b){return b-a});\r\n this.keyboardWidth = widths[0];\r\n }\r\n\r\n private calculateRowWidth(row:Array):number\r\n {\r\n let keyCount = 0;\r\n const len:number = row.length;\r\n for(let i:number=0; i 1)\r\n {\r\n this.multipleKeyboardsFound = true;\r\n }\r\n else\r\n {\r\n if(this.keyboardBtns[\"MetaLeft\"])\r\n {\r\n this.keyboardBtns[\"MetaLeft\"].disable();\r\n }\r\n }\r\n }\r\n\r\n private checkForShiftValues():void\r\n {\r\n this.shiftKeysFound = this.rowHasShiftKeys(this.config.keys.numberRow);\r\n if(this.shiftKeysFound == false)\r\n {\r\n this.shiftKeysFound = this.rowHasShiftKeys(this.config.keys.topRow);\r\n }\r\n if(this.shiftKeysFound == false)\r\n {\r\n this.shiftKeysFound = this.rowHasShiftKeys(this.config.keys.homeRow);\r\n }\r\n if(this.shiftKeysFound == false)\r\n {\r\n this.shiftKeysFound = this.rowHasShiftKeys(this.config.keys.bottomRow);\r\n }\r\n if(this.shiftKeysFound == false)\r\n {\r\n this.shiftKeysFound = this.rowHasShiftKeys(this.config.keys.spaceRow);\r\n }\r\n\r\n if(this.shiftKeysFound == false && this.keyboardBtns[\"ShiftLeft\"])\r\n {\r\n this.keyboardBtns[\"ShiftLeft\"].disable();\r\n }\r\n }\r\n\r\n private createContainer():void\r\n {\r\n this.container = new Container();\r\n this.addChild(this.container);\r\n }\r\n\r\n private createKeyboardBtns():void\r\n {\r\n this.keyboardBtns = {};\r\n let curY = 0;\r\n\r\n if(this.config.keys.numberRow && this.rowHasKeys(this.config.keys.numberRow))\r\n {\r\n this.numberRowContainer = new Container();\r\n this.createKeyboardRowBtns(this.numberRowBtnData, this.numberRowContainer, curY);\r\n curY += this.numberRowContainer.height + this.config.btnPadding;\r\n }\r\n\r\n if(this.config.keys.topRow && this.rowHasKeys(this.config.keys.topRow))\r\n {\r\n this.topRowContainer = new Container();\r\n this.createKeyboardRowBtns(this.topRowBtnData, this.topRowContainer, curY);\r\n curY += this.topRowContainer.height + this.config.btnPadding;\r\n }\r\n\r\n if(this.config.keys.homeRow && this.rowHasKeys(this.config.keys.homeRow))\r\n {\r\n this.homeRowContainer = new Container();\r\n this.createKeyboardRowBtns(this.homeRowBtnData, this.homeRowContainer, curY);\r\n curY += this.homeRowContainer.height + this.config.btnPadding;\r\n }\r\n\r\n if(this.config.keys.bottomRow && this.rowHasKeys(this.config.keys.bottomRow))\r\n {\r\n this.bottomRowContainer = new Container();\r\n this.createKeyboardRowBtns(this.bottomRowBtnData, this.bottomRowContainer, curY);\r\n curY += this.bottomRowContainer.height + this.config.btnPadding;\r\n }\r\n\r\n if(this.config.keys.spaceRow && this.rowHasKeys(this.config.keys.spaceRow))\r\n {\r\n this.spaceRowContainer = new Container();\r\n this.createKeyboardRowBtns(this.spaceRowBtnData, this.spaceRowContainer, curY);\r\n }\r\n }\r\n\r\n private createKeyboardRowBtns(rowData:Array, container:Container, curY:number):void\r\n {\r\n let hasVisibleKeys = false;\r\n const padding = this.config.btnPadding;\r\n let curBtn:KeyboardButton;\r\n let prevBtn:KeyboardButton;\r\n const len = rowData.length;\r\n for(let i:number=0; i 0)\r\n {\r\n if(container.children.length > 0)\r\n {\r\n prevBtn = container.getChildAt(i-1) as KeyboardButton;\r\n curBtn.x = prevBtn.x + this.config.btnWidth + padding;\r\n }\r\n }\r\n\r\n if(rowData[i].widthMultiplier)\r\n {\r\n if(rowData[i].widthMultiplier > 2)\r\n {\r\n curBtn.btnWidth = (this.config.btnWidth*rowData[i].widthMultiplier) + (padding*(rowData[i].widthMultiplier-1));\r\n }\r\n else\r\n {\r\n curBtn.btnWidth = this.config.btnWidth*rowData[i].widthMultiplier;\r\n }\r\n }\r\n else\r\n {\r\n curBtn.btnWidth = this.config.btnWidth;\r\n }\r\n curBtn.btnHeight = this.config.btnHeight;\r\n curBtn.btnHighlightColor = this.config.btnHighlightColor;\r\n curBtn.fontColor = this.config.fontColor;\r\n curBtn.fontSize = this.config.fontSize;\r\n curBtn.idFontColor = this.config.idFontColor;\r\n curBtn.idFontSize = this.config.idFontSize;\r\n curBtn.y = curY;\r\n curBtn.create();\r\n this.keyboardBtns[curBtn.id] = curBtn;\r\n if(rowData[i].visible)\r\n {\r\n hasVisibleKeys = true;\r\n container.addChild(curBtn);\r\n }\r\n }\r\n if(hasVisibleKeys)\r\n {\r\n this.positionBtns(container);\r\n container.pivot.x = container.width/2;\r\n this.container.addChild(container);\r\n }\r\n }\r\n\r\n /*private cycleControlValues():void\r\n {\r\n for(const key in this.keyboardBtns)\r\n {\r\n this.keyboardBtns[key].resetShiftCycle();\r\n this.keyboardBtns[key].cycleControlValue();\r\n }\r\n }*/\r\n\r\n private cycleKeyboard():void\r\n {\r\n if(this.appModel.assets.keyboardConfig.keyboards.length > 1)\r\n {\r\n this.curKeyboardIndex++;\r\n if(this.curKeyboardIndex > this.appModel.assets.keyboardConfig.keyboards.length - 1)\r\n {\r\n this.curKeyboardIndex = 0;\r\n }\r\n this.removeListeners();\r\n this.destroyKeyboardBtns();\r\n this.create();\r\n }\r\n }\r\n\r\n private cycleShiftValues():void\r\n {\r\n for(const key in this.keyboardBtns)\r\n {\r\n this.keyboardBtns[key].resetControlCycle();\r\n this.keyboardBtns[key].cycleShiftValue();\r\n }\r\n }\r\n\r\n private destroyKeyboardBtns():void\r\n {\r\n this.destroyRowContainer(this.numberRowContainer);\r\n this.destroyRowContainer(this.topRowContainer);\r\n this.destroyRowContainer(this.homeRowContainer);\r\n this.destroyRowContainer(this.bottomRowContainer);\r\n this.destroyRowContainer(this.spaceRowContainer);\r\n }\r\n\r\n private destroyRowContainer(container:Container):void\r\n {\r\n let curChild:KeyboardButton;\r\n let len:number;\r\n if(container)\r\n {\r\n len = container.children.length;\r\n for(let i:number=0; i\r\n {\r\n let ids = [];\r\n for(const key in this.keyboardBtns)\r\n {\r\n if(this.keyboardBtns[key].value == value)\r\n {\r\n ids.push(key);\r\n }\r\n }\r\n return ids;\r\n }\r\n\r\n private handleClick = (event:MouseEvent):void =>\r\n {\r\n if(this.updateInputCallback)\r\n {\r\n const btn:KeyboardButton = event.target as KeyboardButton;\r\n if(btn.value == \"Backspace\")\r\n {\r\n this.curInputValue = this.curInputValue.substring(0, this.curInputValue.length-1);\r\n }\r\n else if(btn.value == \"ShiftLeft\")\r\n {\r\n this.cycleShiftValues();\r\n }\r\n else if(btn.value == \"MetaLeft\")\r\n {\r\n this.cycleKeyboard();\r\n }\r\n else if(btn.value == \"Enter\")\r\n {\r\n this.eventDispatcher.dispatchEvent(new CustomEvent(KeyboardEventCP.SUBMIT));\r\n return;\r\n }\r\n else\r\n {\r\n this.curInputValue += btn.value;\r\n }\r\n this.updateInputCallback(this.curInputValue);\r\n }\r\n }\r\n\r\n private handleKeyDown = (event:KeyboardEvent):void =>\r\n {\r\n if(event.code == \"ShiftLeft\")\r\n {\r\n if(this.shiftKeysFound)\r\n {\r\n const ids = this.getOverriddenIds(\"ShiftLeft\");\r\n const len = ids.length;\r\n for(let i:number=0; i\r\n {\r\n if(event.key == \"Enter\")\r\n {\r\n const ids = this.getOverriddenIds(\"Enter\");\r\n const len = ids.length;\r\n for(let i:number=0; i\r\n {\r\n if(event.code == \"ShiftLeft\")\r\n {\r\n if(this.shiftKeysFound)\r\n {\r\n const ids = this.getOverriddenIds(\"ShiftLeft\");\r\n const len = ids.length;\r\n for(let i:number=0; i, targetBtnData:Array):void\r\n {\r\n let curBtnData:ButtonData;\r\n let len = targetRow.length;\r\n for(let i:number=0; i):boolean\r\n {\r\n let keyCount = 0;\r\n const len = row.length;\r\n for(let i:number=0; i 0)\r\n {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private rowHasShiftKeys(row:Array):boolean\r\n {\r\n const len = row.length;\r\n for(let i:number=0; i {\r\n this.unhighlightKey(this.lastTypedKey);\r\n const ids = this.getOverriddenIds(\"Enter\");\r\n const len = ids.length;\r\n for(let i:number=0; i start, \"End time is before start time\");\n }\n this._speed = speed;\n this._volume = volume;\n this._loop = !!loop;\n this._muted = muted;\n this.refresh();\n if (this.loop && end !== null) {\n console.warn('Looping not support when specifying an \"end\" time');\n this.loop = false;\n }\n this._start = start;\n this._end = end || this._duration;\n this._start = Math.max(0, this._start - _HTMLAudioInstance.PADDING);\n this._end = Math.min(this._end + _HTMLAudioInstance.PADDING, this._duration);\n this._source.onloadedmetadata = () => {\n if (this._source) {\n this._source.currentTime = start;\n this._source.onloadedmetadata = null;\n this.emit(\"progress\", start, this._duration);\n Ticker.shared.add(this._onUpdate, this);\n }\n };\n this._source.onended = this._onComplete.bind(this);\n this._source.play();\n this.emit(\"start\");\n }\n /**\n * Handle time update on sound.\n * @private\n */\n _onUpdate() {\n this.emit(\"progress\", this.progress, this._duration);\n if (this._source.currentTime >= this._end && !this._source.loop) {\n this._onComplete();\n }\n }\n /**\n * Callback when completed.\n * @private\n */\n _onComplete() {\n Ticker.shared.remove(this._onUpdate, this);\n this._internalStop();\n this.emit(\"progress\", 1, this._duration);\n this.emit(\"end\", this);\n }\n /** Don't use after this. */\n destroy() {\n Ticker.shared.remove(this._onUpdate, this);\n this.removeAllListeners();\n const source = this._source;\n if (source) {\n source.onended = null;\n source.onplay = null;\n source.onpause = null;\n this._internalStop();\n }\n this._source = null;\n this._speed = 1;\n this._volume = 1;\n this._loop = false;\n this._end = null;\n this._start = 0;\n this._duration = 0;\n this._playing = false;\n this._pausedReal = false;\n this._paused = false;\n this._muted = false;\n if (this._media) {\n this._media.context.off(\"refresh\", this.refresh, this);\n this._media.context.off(\"refreshPaused\", this.refreshPaused, this);\n this._media = null;\n }\n }\n /**\n * To string method for instance.\n * @return The string representation of instance.\n */\n toString() {\n return `[HTMLAudioInstance id=${this.id}]`;\n }\n};\nlet HTMLAudioInstance = _HTMLAudioInstance;\n/** Extra padding, in seconds, to deal with low-latecy of HTMLAudio. */\nHTMLAudioInstance.PADDING = 0.1;\n\nexport { HTMLAudioInstance };\n//# sourceMappingURL=HTMLAudioInstance.mjs.map\n","import { utils } from '@pixi/core';\nimport { HTMLAudioInstance } from './HTMLAudioInstance.mjs';\n\nclass HTMLAudioMedia extends utils.EventEmitter {\n init(parent) {\n this.parent = parent;\n this._source = parent.options.source || new Audio();\n if (parent.url) {\n this._source.src = parent.url;\n }\n }\n // Implement create\n create() {\n return new HTMLAudioInstance(this);\n }\n /**\n * If the audio media is playable (ready).\n * @readonly\n */\n get isPlayable() {\n return !!this._source && this._source.readyState === 4;\n }\n /**\n * THe duration of the media in seconds.\n * @readonly\n */\n get duration() {\n return this._source.duration;\n }\n /**\n * Reference to the context.\n * @readonly\n */\n get context() {\n return this.parent.context;\n }\n /** The collection of filters, does not apply to HTML Audio. */\n get filters() {\n return null;\n }\n set filters(_filters) {\n console.warn(\"HTML Audio does not support filters\");\n }\n // Override the destroy\n destroy() {\n this.removeAllListeners();\n this.parent = null;\n if (this._source) {\n this._source.src = \"\";\n this._source.load();\n this._source = null;\n }\n }\n /**\n * Get the audio source element.\n * @type {HTMLAudioElement}\n * @readonly\n */\n get source() {\n return this._source;\n }\n // Implement the method to being preloading\n load(callback) {\n const source = this._source;\n const sound = this.parent;\n if (source.readyState === 4) {\n sound.isLoaded = true;\n const instance = sound.autoPlayStart();\n if (callback) {\n setTimeout(() => {\n callback(null, sound, instance);\n }, 0);\n }\n return;\n }\n if (!sound.url) {\n callback(new Error(\"sound.url or sound.source must be set\"));\n return;\n }\n source.src = sound.url;\n const onLoad = () => {\n removeListeners();\n sound.isLoaded = true;\n const instance = sound.autoPlayStart();\n if (callback) {\n callback(null, sound, instance);\n }\n };\n const onAbort = () => {\n removeListeners();\n if (callback) {\n callback(new Error(\"Sound loading has been aborted\"));\n }\n };\n const onError = () => {\n removeListeners();\n const message = `Failed to load audio element (code: ${source.error.code})`;\n if (callback) {\n callback(new Error(message));\n } else {\n console.error(message);\n }\n };\n const removeListeners = () => {\n source.removeEventListener(\"canplaythrough\", onLoad);\n source.removeEventListener(\"load\", onLoad);\n source.removeEventListener(\"abort\", onAbort);\n source.removeEventListener(\"error\", onError);\n };\n source.addEventListener(\"canplaythrough\", onLoad, false);\n source.addEventListener(\"load\", onLoad, false);\n source.addEventListener(\"abort\", onAbort, false);\n source.addEventListener(\"error\", onError, false);\n source.load();\n }\n}\n\nexport { HTMLAudioMedia };\n//# sourceMappingURL=HTMLAudioMedia.mjs.map\n","class SoundSprite {\n /**\n * @param parent - The parent sound\n * @param options - Data associated with object.\n */\n constructor(parent, options) {\n this.parent = parent;\n Object.assign(this, options);\n this.duration = this.end - this.start;\n console.assert(this.duration > 0, \"End time must be after start time\");\n }\n /**\n * Play the sound sprite.\n * @param {Function} [complete] - Function call when complete\n * @return Sound instance being played.\n */\n play(complete) {\n return this.parent.play({\n complete,\n speed: this.speed || this.parent.speed,\n end: this.end,\n start: this.start,\n loop: this.loop\n });\n }\n /** Destroy and don't use after this */\n destroy() {\n this.parent = null;\n }\n}\n\nexport { SoundSprite };\n//# sourceMappingURL=SoundSprite.mjs.map\n","const extensions = [\n \"ogg\",\n \"oga\",\n \"opus\",\n \"m4a\",\n \"mp3\",\n \"mpeg\",\n \"wav\",\n \"aiff\",\n \"wma\",\n \"mid\",\n \"caf\"\n];\nconst mimes = [\n \"audio/mpeg\",\n \"audio/ogg\"\n];\nconst supported = {};\nfunction validateFormats(typeOverrides) {\n const overrides = {\n m4a: \"audio/mp4\",\n oga: \"audio/ogg\",\n opus: 'audio/ogg; codecs=\"opus\"',\n caf: 'audio/x-caf; codecs=\"opus\"',\n ...typeOverrides || {}\n };\n const audio = document.createElement(\"audio\");\n const formats = {};\n const no = /^no$/;\n extensions.forEach((ext) => {\n const canByExt = audio.canPlayType(`audio/${ext}`).replace(no, \"\");\n const canByType = overrides[ext] ? audio.canPlayType(overrides[ext]).replace(no, \"\") : \"\";\n formats[ext] = !!canByExt || !!canByType;\n });\n Object.assign(supported, formats);\n}\nvalidateFormats();\n\nexport { extensions, mimes, supported, validateFormats };\n//# sourceMappingURL=supported.mjs.map\n","import { getInstance } from '../instance.mjs';\n\nclass WebAudioUtils {\n /**\n * Dezippering is removed in the future Web Audio API, instead\n * we use the `setValueAtTime` method, however, this is not available\n * in all environments (e.g., Android webview), so we fallback to the `value` setter.\n * @param param - AudioNode parameter object\n * @param value - Value to set\n * @return The value set\n */\n static setParamValue(param, value) {\n if (param.setValueAtTime) {\n const context = getInstance().context;\n param.setValueAtTime(value, context.audioContext.currentTime);\n } else {\n param.value = value;\n }\n return value;\n }\n}\n\nexport { WebAudioUtils };\n//# sourceMappingURL=WebAudioUtils.mjs.map\n","import { utils, Ticker } from '@pixi/core';\nimport { WebAudioUtils } from './WebAudioUtils.mjs';\n\nlet id = 0;\nclass WebAudioInstance extends utils.EventEmitter {\n constructor(media) {\n super();\n this.id = id++;\n this._media = null;\n this._paused = false;\n this._muted = false;\n this._elapsed = 0;\n this.init(media);\n }\n /**\n * Set a property by name, this makes it easy to chain values\n * @param name - Name of the property to set.\n * @param value - Value to set property to.\n */\n set(name, value) {\n if (this[name] === void 0) {\n throw new Error(`Property with name ${name} does not exist.`);\n } else {\n switch (name) {\n case \"speed\":\n this.speed = value;\n break;\n case \"volume\":\n this.volume = value;\n break;\n case \"muted\":\n this.muted = value;\n break;\n case \"loop\":\n this.loop = value;\n break;\n case \"paused\":\n this.paused = value;\n break;\n }\n }\n return this;\n }\n /** Stops the instance, don't use after this. */\n stop() {\n if (this._source) {\n this._internalStop();\n this.emit(\"stop\");\n }\n }\n /** Set the instance speed from 0 to 1 */\n get speed() {\n return this._speed;\n }\n set speed(speed) {\n this._speed = speed;\n this.refresh();\n this._update(true);\n }\n /** Get the set the volume for this instance from 0 to 1 */\n get volume() {\n return this._volume;\n }\n set volume(volume) {\n this._volume = volume;\n this.refresh();\n }\n /** `true` if the sound is muted */\n get muted() {\n return this._muted;\n }\n set muted(muted) {\n this._muted = muted;\n this.refresh();\n }\n /** If the sound instance should loop playback */\n get loop() {\n return this._loop;\n }\n set loop(loop) {\n this._loop = loop;\n this.refresh();\n }\n /** The collection of filters. */\n get filters() {\n return this._filters;\n }\n set filters(filters) {\n if (this._filters) {\n this._filters?.filter((filter) => filter).forEach((filter) => filter.disconnect());\n this._filters = null;\n this._source.connect(this._gain);\n }\n this._filters = filters?.length ? filters.slice(0) : null;\n this.refresh();\n }\n /** Refresh loop, volume and speed based on changes to parent */\n refresh() {\n if (!this._source) {\n return;\n }\n const global = this._media.context;\n const sound = this._media.parent;\n this._source.loop = this._loop || sound.loop;\n const globalVolume = global.volume * (global.muted ? 0 : 1);\n const soundVolume = sound.volume * (sound.muted ? 0 : 1);\n const instanceVolume = this._volume * (this._muted ? 0 : 1);\n WebAudioUtils.setParamValue(this._gain.gain, instanceVolume * soundVolume * globalVolume);\n WebAudioUtils.setParamValue(this._source.playbackRate, this._speed * sound.speed * global.speed);\n this.applyFilters();\n }\n /** Connect filters nodes to audio context */\n applyFilters() {\n if (this._filters?.length) {\n this._source.disconnect();\n let source = this._source;\n this._filters.forEach((filter) => {\n source.connect(filter.destination);\n source = filter;\n });\n source.connect(this._gain);\n }\n }\n /** Handle changes in paused state, either globally or sound or instance */\n refreshPaused() {\n const global = this._media.context;\n const sound = this._media.parent;\n const pausedReal = this._paused || sound.paused || global.paused;\n if (pausedReal !== this._pausedReal) {\n this._pausedReal = pausedReal;\n if (pausedReal) {\n this._internalStop();\n this.emit(\"paused\");\n } else {\n this.emit(\"resumed\");\n this.play({\n start: this._elapsed % this._duration,\n end: this._end,\n speed: this._speed,\n loop: this._loop,\n volume: this._volume\n });\n }\n this.emit(\"pause\", pausedReal);\n }\n }\n /**\n * Plays the sound.\n * @param options - Play options.\n */\n play(options) {\n const { start, end, speed, loop, volume, muted, filters } = options;\n if (end) {\n console.assert(end > start, \"End time is before start time\");\n }\n this._paused = false;\n const { source, gain } = this._media.nodes.cloneBufferSource();\n this._source = source;\n this._gain = gain;\n this._speed = speed;\n this._volume = volume;\n this._loop = !!loop;\n this._muted = muted;\n this._filters = filters;\n this.refresh();\n const duration = this._source.buffer.duration;\n this._duration = duration;\n this._end = end;\n this._lastUpdate = this._now();\n this._elapsed = start;\n this._source.onended = this._onComplete.bind(this);\n if (this._loop) {\n this._source.loopEnd = end;\n this._source.loopStart = start;\n this._source.start(0, start);\n } else if (end) {\n this._source.start(0, start, end - start);\n } else {\n this._source.start(0, start);\n }\n this.emit(\"start\");\n this._update(true);\n this.enableTicker(true);\n }\n /** Start the update progress. */\n enableTicker(enabled) {\n Ticker.shared.remove(this._updateListener, this);\n if (enabled) {\n Ticker.shared.add(this._updateListener, this);\n }\n }\n /** The current playback progress from 0 to 1. */\n get progress() {\n return this._progress;\n }\n /** Pauses the sound. */\n get paused() {\n return this._paused;\n }\n set paused(paused) {\n this._paused = paused;\n this.refreshPaused();\n }\n /** Don't use after this. */\n destroy() {\n this.removeAllListeners();\n this._internalStop();\n if (this._gain) {\n this._gain.disconnect();\n this._gain = null;\n }\n if (this._media) {\n this._media.context.events.off(\"refresh\", this.refresh, this);\n this._media.context.events.off(\"refreshPaused\", this.refreshPaused, this);\n this._media = null;\n }\n this._filters?.forEach((filter) => filter.disconnect());\n this._filters = null;\n this._end = null;\n this._speed = 1;\n this._volume = 1;\n this._loop = false;\n this._elapsed = 0;\n this._duration = 0;\n this._paused = false;\n this._muted = false;\n this._pausedReal = false;\n }\n /**\n * To string method for instance.\n * @return The string representation of instance.\n */\n toString() {\n return `[WebAudioInstance id=${this.id}]`;\n }\n /**\n * Get the current time in seconds.\n * @return Seconds since start of context\n */\n _now() {\n return this._media.context.audioContext.currentTime;\n }\n /** Callback for update listener */\n _updateListener() {\n this._update();\n }\n /** Internal update the progress. */\n _update(force = false) {\n if (this._source) {\n const now = this._now();\n const delta = now - this._lastUpdate;\n if (delta > 0 || force) {\n const speed = this._source.playbackRate.value;\n this._elapsed += delta * speed;\n this._lastUpdate = now;\n const duration = this._duration;\n let progress;\n if (this._source.loopStart) {\n const soundLength = this._source.loopEnd - this._source.loopStart;\n progress = (this._source.loopStart + this._elapsed % soundLength) / duration;\n } else {\n progress = this._elapsed % duration / duration;\n }\n this._progress = progress;\n this.emit(\"progress\", this._progress, duration);\n }\n }\n }\n /** Initializes the instance. */\n init(media) {\n this._media = media;\n media.context.events.on(\"refresh\", this.refresh, this);\n media.context.events.on(\"refreshPaused\", this.refreshPaused, this);\n }\n /** Stops the instance. */\n _internalStop() {\n if (this._source) {\n this.enableTicker(false);\n this._source.onended = null;\n this._source.stop(0);\n this._source.disconnect();\n try {\n this._source.buffer = null;\n } catch (err) {\n console.warn(\"Failed to set AudioBufferSourceNode.buffer to null:\", err);\n }\n this._source = null;\n }\n }\n /** Callback when completed. */\n _onComplete() {\n if (this._source) {\n this.enableTicker(false);\n this._source.onended = null;\n this._source.disconnect();\n try {\n this._source.buffer = null;\n } catch (err) {\n console.warn(\"Failed to set AudioBufferSourceNode.buffer to null:\", err);\n }\n }\n this._source = null;\n this._progress = 1;\n this.emit(\"progress\", 1, this._duration);\n this.emit(\"end\", this);\n }\n}\n\nexport { WebAudioInstance };\n//# sourceMappingURL=WebAudioInstance.mjs.map\n","class Filterable {\n /**\n * @param input - The source audio node\n * @param output - The output audio node\n */\n constructor(input, output) {\n this._output = output;\n this._input = input;\n }\n /** The destination output audio node */\n get destination() {\n return this._input;\n }\n /** The collection of filters. */\n get filters() {\n return this._filters;\n }\n set filters(filters) {\n if (this._filters) {\n this._filters.forEach((filter) => {\n if (filter) {\n filter.disconnect();\n }\n });\n this._filters = null;\n this._input.connect(this._output);\n }\n if (filters && filters.length) {\n this._filters = filters.slice(0);\n this._input.disconnect();\n let prevFilter = null;\n filters.forEach((filter) => {\n if (prevFilter === null) {\n this._input.connect(filter.destination);\n } else {\n prevFilter.connect(filter.destination);\n }\n prevFilter = filter;\n });\n prevFilter.connect(this._output);\n }\n }\n /** Cleans up. */\n destroy() {\n this.filters = null;\n this._input = null;\n this._output = null;\n }\n}\n\nexport { Filterable };\n//# sourceMappingURL=Filterable.mjs.map\n","import { Filterable } from '../Filterable.mjs';\nimport { WebAudioUtils } from './WebAudioUtils.mjs';\n\nconst _WebAudioNodes = class extends Filterable {\n /**\n * @param context - The audio context.\n */\n constructor(context) {\n const audioContext = context.audioContext;\n const bufferSource = audioContext.createBufferSource();\n const gain = audioContext.createGain();\n const analyser = audioContext.createAnalyser();\n bufferSource.connect(analyser);\n analyser.connect(gain);\n gain.connect(context.destination);\n super(analyser, gain);\n this.context = context;\n this.bufferSource = bufferSource;\n this.gain = gain;\n this.analyser = analyser;\n }\n /**\n * Get the script processor node.\n * @readonly\n */\n get script() {\n if (!this._script) {\n this._script = this.context.audioContext.createScriptProcessor(_WebAudioNodes.BUFFER_SIZE);\n this._script.connect(this.context.destination);\n }\n return this._script;\n }\n /** Cleans up. */\n destroy() {\n super.destroy();\n this.bufferSource.disconnect();\n if (this._script) {\n this._script.disconnect();\n }\n this.gain.disconnect();\n this.analyser.disconnect();\n this.bufferSource = null;\n this._script = null;\n this.gain = null;\n this.analyser = null;\n this.context = null;\n }\n /**\n * Clones the bufferSource. Used just before playing a sound.\n * @returns {SourceClone} The clone AudioBufferSourceNode.\n */\n cloneBufferSource() {\n const orig = this.bufferSource;\n const source = this.context.audioContext.createBufferSource();\n source.buffer = orig.buffer;\n WebAudioUtils.setParamValue(source.playbackRate, orig.playbackRate.value);\n source.loop = orig.loop;\n const gain = this.context.audioContext.createGain();\n source.connect(gain);\n gain.connect(this.destination);\n return { source, gain };\n }\n /**\n * Get buffer size of `ScriptProcessorNode`.\n * @readonly\n */\n get bufferSize() {\n return this.script.bufferSize;\n }\n};\nlet WebAudioNodes = _WebAudioNodes;\n/**\n * The buffer size for script processor, default is `0` which auto-detects. If you plan to use\n * script node on iOS, you'll need to provide a non-zero amount.\n * @default 0\n */\nWebAudioNodes.BUFFER_SIZE = 0;\n\nexport { WebAudioNodes };\n//# sourceMappingURL=WebAudioNodes.mjs.map\n","import { settings } from '@pixi/core';\nimport { WebAudioInstance } from './WebAudioInstance.mjs';\nimport { WebAudioNodes } from './WebAudioNodes.mjs';\n\nclass WebAudioMedia {\n /**\n * Re-initialize without constructing.\n * @param parent - - Instance of parent Sound container\n */\n init(parent) {\n this.parent = parent;\n this._nodes = new WebAudioNodes(this.context);\n this._source = this._nodes.bufferSource;\n this.source = parent.options.source;\n }\n /** Destructor, safer to use `SoundLibrary.remove(alias)` to remove this sound. */\n destroy() {\n this.parent = null;\n this._nodes.destroy();\n this._nodes = null;\n try {\n this._source.buffer = null;\n } catch (err) {\n console.warn(\"Failed to set AudioBufferSourceNode.buffer to null:\", err);\n }\n this._source = null;\n this.source = null;\n }\n // Implement create\n create() {\n return new WebAudioInstance(this);\n }\n // Implement context\n get context() {\n return this.parent.context;\n }\n // Implement isPlayable\n get isPlayable() {\n return !!this._source && !!this._source.buffer;\n }\n // Implement filters\n get filters() {\n return this._nodes.filters;\n }\n set filters(filters) {\n this._nodes.filters = filters;\n }\n // Implements duration\n get duration() {\n console.assert(this.isPlayable, \"Sound not yet playable, no duration\");\n return this._source.buffer.duration;\n }\n /** Gets and sets the buffer. */\n get buffer() {\n return this._source.buffer;\n }\n set buffer(buffer) {\n this._source.buffer = buffer;\n }\n /** Get the current chained nodes object */\n get nodes() {\n return this._nodes;\n }\n // Implements load\n load(callback) {\n if (this.source) {\n this._decode(this.source, callback);\n } else if (this.parent.url) {\n this._loadUrl(callback);\n } else if (callback) {\n callback(new Error(\"sound.url or sound.source must be set\"));\n } else {\n console.error(\"sound.url or sound.source must be set\");\n }\n }\n /** Loads a sound using XHMLHttpRequest object. */\n async _loadUrl(callback) {\n const url = this.parent.url;\n const response = await settings.ADAPTER.fetch(url);\n this._decode(await response.arrayBuffer(), callback);\n }\n /**\n * Decodes the array buffer.\n * @param arrayBuffer - From load.\n * @param {Function} callback - Callback optional\n */\n _decode(arrayBuffer, callback) {\n const audioBufferReadyFn = (err, buffer) => {\n if (err) {\n if (callback) {\n callback(err);\n }\n } else {\n this.parent.isLoaded = true;\n this.buffer = buffer;\n const instance = this.parent.autoPlayStart();\n if (callback) {\n callback(null, this.parent, instance);\n }\n }\n };\n if (arrayBuffer instanceof AudioBuffer) {\n audioBufferReadyFn(null, arrayBuffer);\n } else {\n const context = this.parent.context;\n context.decode(arrayBuffer, audioBufferReadyFn);\n }\n }\n}\n\nexport { WebAudioMedia };\n//# sourceMappingURL=WebAudioMedia.mjs.map\n","import { utils } from '@pixi/core';\nimport { HTMLAudioMedia } from './htmlaudio/HTMLAudioMedia.mjs';\nimport { getInstance } from './instance.mjs';\nimport { SoundSprite } from './SoundSprite.mjs';\nimport { supported, extensions } from './utils/supported.mjs';\nimport { WebAudioMedia } from './webaudio/WebAudioMedia.mjs';\n\nconst _Sound = class {\n /**\n * Create a new sound instance from source.\n * @param source - Either the path or url to the source file.\n * or the object of options to use.\n * @return Created sound instance.\n */\n static from(source) {\n let options = {};\n if (typeof source === \"string\") {\n options.url = source;\n } else if (source instanceof ArrayBuffer || source instanceof AudioBuffer || source instanceof HTMLAudioElement) {\n options.source = source;\n } else if (Array.isArray(source)) {\n options.url = source;\n } else {\n options = source;\n }\n options = {\n autoPlay: false,\n singleInstance: false,\n url: null,\n source: null,\n preload: false,\n volume: 1,\n speed: 1,\n complete: null,\n loaded: null,\n loop: false,\n ...options\n };\n Object.freeze(options);\n const media = getInstance().useLegacy ? new HTMLAudioMedia() : new WebAudioMedia();\n return new _Sound(media, options);\n }\n /**\n * Use `Sound.from`\n * @ignore\n */\n constructor(media, options) {\n this.media = media;\n this.options = options;\n this._instances = [];\n this._sprites = {};\n this.media.init(this);\n const complete = options.complete;\n this._autoPlayOptions = complete ? { complete } : null;\n this.isLoaded = false;\n this._preloadQueue = null;\n this.isPlaying = false;\n this.autoPlay = options.autoPlay;\n this.singleInstance = options.singleInstance;\n this.preload = options.preload || this.autoPlay;\n this.url = Array.isArray(options.url) ? this.preferUrl(options.url) : options.url;\n this.speed = options.speed;\n this.volume = options.volume;\n this.loop = options.loop;\n if (options.sprites) {\n this.addSprites(options.sprites);\n }\n if (this.preload) {\n this._preload(options.loaded);\n }\n }\n /**\n * Internal help for resolving which file to use if there are multiple provide\n * this is especially helpful for working with bundlers (non Assets loading).\n */\n preferUrl(urls) {\n const [file] = urls.map((url) => ({ url, ext: utils.path.extname(url).slice(1) })).filter(({ ext }) => supported[ext]).sort((a, b) => extensions.indexOf(a.ext) - extensions.indexOf(b.ext));\n if (!file) {\n throw new Error(\"No supported file type found\");\n }\n return file.url;\n }\n /** Instance of the media context. */\n get context() {\n return getInstance().context;\n }\n /** Stops all the instances of this sound from playing. */\n pause() {\n this.isPlaying = false;\n this.paused = true;\n return this;\n }\n /** Resuming all the instances of this sound from playing */\n resume() {\n this.isPlaying = this._instances.length > 0;\n this.paused = false;\n return this;\n }\n /** Stops all the instances of this sound from playing. */\n get paused() {\n return this._paused;\n }\n set paused(paused) {\n this._paused = paused;\n this.refreshPaused();\n }\n /** The playback rate. */\n get speed() {\n return this._speed;\n }\n set speed(speed) {\n this._speed = speed;\n this.refresh();\n }\n /** Set the filters. Only supported with WebAudio. */\n get filters() {\n return this.media.filters;\n }\n set filters(filters) {\n this.media.filters = filters;\n }\n /**\n * @ignore\n */\n addSprites(source, data) {\n if (typeof source === \"object\") {\n const results = {};\n for (const alias in source) {\n results[alias] = this.addSprites(alias, source[alias]);\n }\n return results;\n }\n console.assert(!this._sprites[source], `Alias ${source} is already taken`);\n const sprite = new SoundSprite(this, data);\n this._sprites[source] = sprite;\n return sprite;\n }\n /** Destructor, safer to use `SoundLibrary.remove(alias)` to remove this sound. */\n destroy() {\n this._removeInstances();\n this.removeSprites();\n this.media.destroy();\n this.media = null;\n this._sprites = null;\n this._instances = null;\n }\n /**\n * Remove a sound sprite.\n * @param alias - The unique name of the sound sprite, if alias is omitted, removes all sprites.\n */\n removeSprites(alias) {\n if (!alias) {\n for (const name in this._sprites) {\n this.removeSprites(name);\n }\n } else {\n const sprite = this._sprites[alias];\n if (sprite !== void 0) {\n sprite.destroy();\n delete this._sprites[alias];\n }\n }\n return this;\n }\n /** If the current sound is playable (loaded). */\n get isPlayable() {\n return this.isLoaded && this.media && this.media.isPlayable;\n }\n /** Stops all the instances of this sound from playing. */\n stop() {\n if (!this.isPlayable) {\n this.autoPlay = false;\n this._autoPlayOptions = null;\n return this;\n }\n this.isPlaying = false;\n for (let i = this._instances.length - 1; i >= 0; i--) {\n this._instances[i].stop();\n }\n return this;\n }\n // Overloaded function\n play(source, complete) {\n let options;\n if (typeof source === \"string\") {\n const sprite = source;\n options = { sprite, loop: this.loop, complete };\n } else if (typeof source === \"function\") {\n options = {};\n options.complete = source;\n } else {\n options = source;\n }\n options = {\n complete: null,\n loaded: null,\n sprite: null,\n end: null,\n start: 0,\n volume: 1,\n speed: 1,\n muted: false,\n loop: false,\n ...options || {}\n };\n if (options.sprite) {\n const alias = options.sprite;\n console.assert(!!this._sprites[alias], `Alias ${alias} is not available`);\n const sprite = this._sprites[alias];\n options.start = sprite.start + (options.start || 0);\n options.end = sprite.end;\n options.speed = sprite.speed || 1;\n options.loop = sprite.loop || options.loop;\n delete options.sprite;\n }\n if (options.offset) {\n options.start = options.offset;\n }\n if (!this.isLoaded) {\n if (this._preloadQueue) {\n return new Promise((resolve) => {\n this._preloadQueue.push(() => {\n resolve(this.play(options));\n });\n });\n }\n this._preloadQueue = [];\n this.autoPlay = true;\n this._autoPlayOptions = options;\n return new Promise((resolve, reject) => {\n this._preload((err, sound, media) => {\n this._preloadQueue.forEach((resolve2) => resolve2());\n this._preloadQueue = null;\n if (err) {\n reject(err);\n } else {\n if (options.loaded) {\n options.loaded(err, sound, media);\n }\n resolve(media);\n }\n });\n });\n }\n if (this.singleInstance || options.singleInstance) {\n this._removeInstances();\n }\n const instance = this._createInstance();\n this._instances.push(instance);\n this.isPlaying = true;\n instance.once(\"end\", () => {\n if (options.complete) {\n options.complete(this);\n }\n this._onComplete(instance);\n });\n instance.once(\"stop\", () => {\n this._onComplete(instance);\n });\n instance.play(options);\n return instance;\n }\n /** Internal only, speed, loop, volume change occured. */\n refresh() {\n const len = this._instances.length;\n for (let i = 0; i < len; i++) {\n this._instances[i].refresh();\n }\n }\n /** Handle changes in paused state. Internal only. */\n refreshPaused() {\n const len = this._instances.length;\n for (let i = 0; i < len; i++) {\n this._instances[i].refreshPaused();\n }\n }\n /** Gets and sets the volume. */\n get volume() {\n return this._volume;\n }\n set volume(volume) {\n this._volume = volume;\n this.refresh();\n }\n /** Gets and sets the muted flag. */\n get muted() {\n return this._muted;\n }\n set muted(muted) {\n this._muted = muted;\n this.refresh();\n }\n /** Gets and sets the looping. */\n get loop() {\n return this._loop;\n }\n set loop(loop) {\n this._loop = loop;\n this.refresh();\n }\n /** Starts the preloading of sound. */\n _preload(callback) {\n this.media.load(callback);\n }\n /** Gets the list of instances that are currently being played of this sound. */\n get instances() {\n return this._instances;\n }\n /** Get the map of sprites. */\n get sprites() {\n return this._sprites;\n }\n /** Get the duration of the audio in seconds. */\n get duration() {\n return this.media.duration;\n }\n /** Auto play the first instance. */\n autoPlayStart() {\n let instance;\n if (this.autoPlay) {\n instance = this.play(this._autoPlayOptions);\n }\n return instance;\n }\n /** Removes all instances. */\n _removeInstances() {\n for (let i = this._instances.length - 1; i >= 0; i--) {\n this._poolInstance(this._instances[i]);\n }\n this._instances.length = 0;\n }\n /**\n * Sound instance completed.\n * @param instance\n */\n _onComplete(instance) {\n if (this._instances) {\n const index = this._instances.indexOf(instance);\n if (index > -1) {\n this._instances.splice(index, 1);\n }\n this.isPlaying = this._instances.length > 0;\n }\n this._poolInstance(instance);\n }\n /** Create a new instance. */\n _createInstance() {\n if (_Sound._pool.length > 0) {\n const instance = _Sound._pool.pop();\n instance.init(this.media);\n return instance;\n }\n return this.media.create();\n }\n /**\n * Destroy/recycling the instance object.\n * @param instance - Instance to recycle\n */\n _poolInstance(instance) {\n instance.destroy();\n if (_Sound._pool.indexOf(instance) < 0) {\n _Sound._pool.push(instance);\n }\n }\n};\nlet Sound = _Sound;\n/** Pool of instances */\nSound._pool = [];\n\nexport { Sound };\n//# sourceMappingURL=Sound.mjs.map\n","import { utils } from '@pixi/core';\n\nclass HTMLAudioContext extends utils.EventEmitter {\n constructor() {\n super(...arguments);\n /** Current global speed from 0 to 1 */\n this.speed = 1;\n /** Current muted status of the context */\n this.muted = false;\n /** Current volume from 0 to 1 */\n this.volume = 1;\n /** Current paused status */\n this.paused = false;\n }\n /** Internal trigger when volume, mute or speed changes */\n refresh() {\n this.emit(\"refresh\");\n }\n /** Internal trigger paused changes */\n refreshPaused() {\n this.emit(\"refreshPaused\");\n }\n /**\n * HTML Audio does not support filters, this is non-functional API.\n */\n get filters() {\n console.warn(\"HTML Audio does not support filters\");\n return null;\n }\n set filters(_filters) {\n console.warn(\"HTML Audio does not support filters\");\n }\n /**\n * HTML Audio does not support `audioContext`\n * @readonly\n * @type {AudioContext}\n */\n get audioContext() {\n console.warn(\"HTML Audio does not support audioContext\");\n return null;\n }\n /**\n * Toggles the muted state.\n * @return The current muted state.\n */\n toggleMute() {\n this.muted = !this.muted;\n this.refresh();\n return this.muted;\n }\n /**\n * Toggles the paused state.\n * @return The current paused state.\n */\n togglePause() {\n this.paused = !this.paused;\n this.refreshPaused();\n return this.paused;\n }\n /** Destroy and don't use after this */\n destroy() {\n this.removeAllListeners();\n }\n}\n\nexport { HTMLAudioContext };\n//# sourceMappingURL=HTMLAudioContext.mjs.map\n","import { utils } from '@pixi/core';\nimport { Filterable } from '../Filterable.mjs';\n\nclass WebAudioContext extends Filterable {\n constructor() {\n const win = window;\n const ctx = new WebAudioContext.AudioContext();\n const compressor = ctx.createDynamicsCompressor();\n const analyser = ctx.createAnalyser();\n analyser.connect(compressor);\n compressor.connect(ctx.destination);\n super(analyser, compressor);\n /** Set to false ignore suspending when window is blurred */\n this.autoPause = true;\n this._ctx = ctx;\n this._offlineCtx = new WebAudioContext.OfflineAudioContext(\n 1,\n 2,\n win.OfflineAudioContext ? Math.max(8e3, Math.min(96e3, ctx.sampleRate)) : 44100\n );\n this.compressor = compressor;\n this.analyser = analyser;\n this.events = new utils.EventEmitter();\n this.volume = 1;\n this.speed = 1;\n this.muted = false;\n this.paused = false;\n this._locked = ctx.state === \"suspended\" && (\"ontouchstart\" in globalThis || \"onclick\" in globalThis);\n if (this._locked) {\n this._unlock();\n this._unlock = this._unlock.bind(this);\n document.addEventListener(\"mousedown\", this._unlock, true);\n document.addEventListener(\"touchstart\", this._unlock, true);\n document.addEventListener(\"touchend\", this._unlock, true);\n }\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n globalThis.addEventListener(\"focus\", this.onFocus);\n globalThis.addEventListener(\"blur\", this.onBlur);\n }\n /** Handle mobile WebAudio context resume */\n onFocus() {\n if (!this.autoPause) {\n return;\n }\n const state = this._ctx.state;\n if (state === \"suspended\" || state === \"interrupted\" || !this._locked) {\n this.paused = this._pausedOnBlur;\n this.refreshPaused();\n }\n }\n /** Handle mobile WebAudio context suspend */\n onBlur() {\n if (!this.autoPause) {\n return;\n }\n if (!this._locked) {\n this._pausedOnBlur = this._paused;\n this.paused = true;\n this.refreshPaused();\n }\n }\n /**\n * Try to unlock audio on iOS. This is triggered from either WebAudio plugin setup (which will work if inside of\n * a `mousedown` or `touchend` event stack), or the first document touchend/mousedown event. If it fails (touchend\n * will fail if the user presses for too long, indicating a scroll event instead of a click event.\n *\n * Note that earlier versions of iOS supported `touchstart` for this, but iOS9 removed this functionality. Adding\n * a `touchstart` event to support older platforms may preclude a `mousedown` even from getting fired on iOS9, so we\n * stick with `mousedown` and `touchend`.\n */\n _unlock() {\n if (!this._locked) {\n return;\n }\n this.playEmptySound();\n if (this._ctx.state === \"running\") {\n document.removeEventListener(\"mousedown\", this._unlock, true);\n document.removeEventListener(\"touchend\", this._unlock, true);\n document.removeEventListener(\"touchstart\", this._unlock, true);\n this._locked = false;\n }\n }\n /**\n * Plays an empty sound in the web audio context. This is used to enable web audio on iOS devices, as they\n * require the first sound to be played inside of a user initiated event (touch/click).\n */\n playEmptySound() {\n const source = this._ctx.createBufferSource();\n source.buffer = this._ctx.createBuffer(1, 1, 22050);\n source.connect(this._ctx.destination);\n source.start(0, 0, 0);\n if (source.context.state === \"suspended\") {\n source.context.resume();\n }\n }\n /**\n * Get AudioContext class, if not supported returns `null`\n * @type {AudioContext}\n * @readonly\n */\n static get AudioContext() {\n const win = window;\n return win.AudioContext || win.webkitAudioContext || null;\n }\n /**\n * Get OfflineAudioContext class, if not supported returns `null`\n * @type {OfflineAudioContext}\n * @readonly\n */\n static get OfflineAudioContext() {\n const win = window;\n return win.OfflineAudioContext || win.webkitOfflineAudioContext || null;\n }\n /** Destroy this context. */\n destroy() {\n super.destroy();\n const ctx = this._ctx;\n if (typeof ctx.close !== \"undefined\") {\n ctx.close();\n }\n globalThis.removeEventListener(\"focus\", this.onFocus);\n globalThis.removeEventListener(\"blur\", this.onBlur);\n this.events.removeAllListeners();\n this.analyser.disconnect();\n this.compressor.disconnect();\n this.analyser = null;\n this.compressor = null;\n this.events = null;\n this._offlineCtx = null;\n this._ctx = null;\n }\n /**\n * The WebAudio API AudioContext object.\n * @readonly\n * @type {AudioContext}\n */\n get audioContext() {\n return this._ctx;\n }\n /**\n * The WebAudio API OfflineAudioContext object.\n * @readonly\n * @type {OfflineAudioContext}\n */\n get offlineContext() {\n return this._offlineCtx;\n }\n /**\n * Pauses all sounds, even though we handle this at the instance\n * level, we'll also pause the audioContext so that the\n * time used to compute progress isn't messed up.\n * @default false\n */\n set paused(paused) {\n if (paused && this._ctx.state === \"running\") {\n this._ctx.suspend();\n } else if (!paused && this._ctx.state === \"suspended\") {\n this._ctx.resume();\n }\n this._paused = paused;\n }\n get paused() {\n return this._paused;\n }\n /** Emit event when muted, volume or speed changes */\n refresh() {\n this.events.emit(\"refresh\");\n }\n /** Emit event when muted, volume or speed changes */\n refreshPaused() {\n this.events.emit(\"refreshPaused\");\n }\n /**\n * Toggles the muted state.\n * @return The current muted state.\n */\n toggleMute() {\n this.muted = !this.muted;\n this.refresh();\n return this.muted;\n }\n /**\n * Toggles the paused state.\n * @return The current muted state.\n */\n togglePause() {\n this.paused = !this.paused;\n this.refreshPaused();\n return this._paused;\n }\n /**\n * Decode the audio data\n * @param arrayBuffer - Buffer from loader\n * @param callback - When completed, error and audioBuffer are parameters.\n */\n decode(arrayBuffer, callback) {\n const handleError = (err) => {\n callback(new Error(err?.message || \"Unable to decode file\"));\n };\n const result = this._offlineCtx.decodeAudioData(\n arrayBuffer,\n (buffer) => {\n callback(null, buffer);\n },\n handleError\n );\n if (result) {\n result.catch(handleError);\n }\n }\n}\n\nexport { WebAudioContext };\n//# sourceMappingURL=WebAudioContext.mjs.map\n","import { Sound } from './Sound.mjs';\nimport { HTMLAudioContext } from './htmlaudio/HTMLAudioContext.mjs';\nimport { WebAudioContext } from './webaudio/WebAudioContext.mjs';\n\nclass SoundLibrary {\n constructor() {\n this.init();\n }\n /**\n * Re-initialize the sound library, this will\n * recreate the AudioContext. If there's a hardware-failure\n * call `close` and then `init`.\n * @return Sound instance\n */\n init() {\n if (this.supported) {\n this._webAudioContext = new WebAudioContext();\n }\n this._htmlAudioContext = new HTMLAudioContext();\n this._sounds = {};\n this.useLegacy = !this.supported;\n return this;\n }\n /**\n * The global context to use.\n * @readonly\n */\n get context() {\n return this._context;\n }\n /**\n * Apply filters to all sounds. Can be useful\n * for setting global planning or global effects.\n * **Only supported with WebAudio.**\n * @example\n * import { sound, filters } from '@pixi/sound';\n * // Adds a filter to pan all output left\n * sound.filtersAll = [\n * new filters.StereoFilter(-1)\n * ];\n */\n get filtersAll() {\n if (!this.useLegacy) {\n return this._context.filters;\n }\n return [];\n }\n set filtersAll(filtersAll) {\n if (!this.useLegacy) {\n this._context.filters = filtersAll;\n }\n }\n /**\n * `true` if WebAudio is supported on the current browser.\n */\n get supported() {\n return WebAudioContext.AudioContext !== null;\n }\n /**\n * @ignore\n */\n add(source, sourceOptions) {\n if (typeof source === \"object\") {\n const results = {};\n for (const alias in source) {\n const options2 = this._getOptions(\n source[alias],\n sourceOptions\n );\n results[alias] = this.add(alias, options2);\n }\n return results;\n }\n console.assert(!this._sounds[source], `Sound with alias ${source} already exists.`);\n if (sourceOptions instanceof Sound) {\n this._sounds[source] = sourceOptions;\n return sourceOptions;\n }\n const options = this._getOptions(sourceOptions);\n const sound = Sound.from(options);\n this._sounds[source] = sound;\n return sound;\n }\n /**\n * Internal methods for getting the options object\n * @private\n * @param source - The source options\n * @param overrides - Override default options\n * @return The construction options\n */\n _getOptions(source, overrides) {\n let options;\n if (typeof source === \"string\") {\n options = { url: source };\n } else if (Array.isArray(source)) {\n options = { url: source };\n } else if (source instanceof ArrayBuffer || source instanceof AudioBuffer || source instanceof HTMLAudioElement) {\n options = { source };\n } else {\n options = source;\n }\n options = { ...options, ...overrides || {} };\n return options;\n }\n /**\n * Do not use WebAudio, force the use of legacy. This **must** be called before loading any files.\n */\n get useLegacy() {\n return this._useLegacy;\n }\n set useLegacy(legacy) {\n this._useLegacy = legacy;\n this._context = !legacy && this.supported ? this._webAudioContext : this._htmlAudioContext;\n }\n /**\n * This disables auto-pause all playback when the window blurs (WebAudio only).\n * This is helpful to keep from playing sounds when the user switches tabs.\n * However, if you're running content within an iframe, this may be undesirable\n * and you should disable (set to `true`) this behavior.\n * @default false\n */\n get disableAutoPause() {\n return !this._webAudioContext.autoPause;\n }\n set disableAutoPause(autoPause) {\n this._webAudioContext.autoPause = !autoPause;\n }\n /**\n * Removes a sound by alias.\n * @param alias - The sound alias reference.\n * @return Instance for chaining.\n */\n remove(alias) {\n this.exists(alias, true);\n this._sounds[alias].destroy();\n delete this._sounds[alias];\n return this;\n }\n /**\n * Set the global volume for all sounds. To set per-sound volume see {@link SoundLibrary#volume}.\n */\n get volumeAll() {\n return this._context.volume;\n }\n set volumeAll(volume) {\n this._context.volume = volume;\n this._context.refresh();\n }\n /**\n * Set the global speed for all sounds. To set per-sound speed see {@link SoundLibrary#speed}.\n */\n get speedAll() {\n return this._context.speed;\n }\n set speedAll(speed) {\n this._context.speed = speed;\n this._context.refresh();\n }\n /**\n * Toggle paused property for all sounds.\n * @return `true` if all sounds are paused.\n */\n togglePauseAll() {\n return this._context.togglePause();\n }\n /**\n * Pauses any playing sounds.\n * @return Instance for chaining.\n */\n pauseAll() {\n this._context.paused = true;\n this._context.refreshPaused();\n return this;\n }\n /**\n * Resumes any sounds.\n * @return Instance for chaining.\n */\n resumeAll() {\n this._context.paused = false;\n this._context.refreshPaused();\n return this;\n }\n /**\n * Toggle muted property for all sounds.\n * @return `true` if all sounds are muted.\n */\n toggleMuteAll() {\n return this._context.toggleMute();\n }\n /**\n * Mutes all playing sounds.\n * @return Instance for chaining.\n */\n muteAll() {\n this._context.muted = true;\n this._context.refresh();\n return this;\n }\n /**\n * Unmutes all playing sounds.\n * @return Instance for chaining.\n */\n unmuteAll() {\n this._context.muted = false;\n this._context.refresh();\n return this;\n }\n /**\n * Stops and removes all sounds. They cannot be used after this.\n * @return Instance for chaining.\n */\n removeAll() {\n for (const alias in this._sounds) {\n this._sounds[alias].destroy();\n delete this._sounds[alias];\n }\n return this;\n }\n /**\n * Stops all sounds.\n * @return Instance for chaining.\n */\n stopAll() {\n for (const alias in this._sounds) {\n this._sounds[alias].stop();\n }\n return this;\n }\n /**\n * Checks if a sound by alias exists.\n * @param alias - Check for alias.\n * @param assert - Whether enable console.assert.\n * @return true if the sound exists.\n */\n exists(alias, assert = false) {\n const exists = !!this._sounds[alias];\n if (assert) {\n console.assert(exists, `No sound matching alias '${alias}'.`);\n }\n return exists;\n }\n /**\n * Convenience function to check to see if any sound is playing.\n * @returns `true` if any sound is currently playing.\n */\n isPlaying() {\n for (const alias in this._sounds) {\n if (this._sounds[alias].isPlaying) {\n return true;\n }\n }\n return false;\n }\n /**\n * Find a sound by alias.\n * @param alias - The sound alias reference.\n * @return Sound object.\n */\n find(alias) {\n this.exists(alias, true);\n return this._sounds[alias];\n }\n /**\n * Plays a sound.\n * @method play\n * @instance\n * @param {string} alias - The sound alias reference.\n * @param {string} sprite - The alias of the sprite to play.\n * @return {IMediaInstance|null} The sound instance, this cannot be reused\n * after it is done playing. Returns `null` if the sound has not yet loaded.\n */\n /**\n * Plays a sound.\n * @param alias - The sound alias reference.\n * @param {PlayOptions|Function} options - The options or callback when done.\n * @return The sound instance,\n * this cannot be reused after it is done playing. Returns a Promise if the sound\n * has not yet loaded.\n */\n play(alias, options) {\n return this.find(alias).play(options);\n }\n /**\n * Stops a sound.\n * @param alias - The sound alias reference.\n * @return Sound object.\n */\n stop(alias) {\n return this.find(alias).stop();\n }\n /**\n * Pauses a sound.\n * @param alias - The sound alias reference.\n * @return Sound object.\n */\n pause(alias) {\n return this.find(alias).pause();\n }\n /**\n * Resumes a sound.\n * @param alias - The sound alias reference.\n * @return Instance for chaining.\n */\n resume(alias) {\n return this.find(alias).resume();\n }\n /**\n * Get or set the volume for a sound.\n * @param alias - The sound alias reference.\n * @param volume - Optional current volume to set.\n * @return The current volume.\n */\n volume(alias, volume) {\n const sound = this.find(alias);\n if (volume !== void 0) {\n sound.volume = volume;\n }\n return sound.volume;\n }\n /**\n * Get or set the speed for a sound.\n * @param alias - The sound alias reference.\n * @param speed - Optional current speed to set.\n * @return The current speed.\n */\n speed(alias, speed) {\n const sound = this.find(alias);\n if (speed !== void 0) {\n sound.speed = speed;\n }\n return sound.speed;\n }\n /**\n * Get the length of a sound in seconds.\n * @param alias - The sound alias reference.\n * @return The current duration in seconds.\n */\n duration(alias) {\n return this.find(alias).duration;\n }\n /**\n * Closes the sound library. This will release/destroy\n * the AudioContext(s). Can be used safely if you want to\n * initialize the sound library later. Use `init` method.\n */\n close() {\n this.removeAll();\n this._sounds = null;\n if (this._webAudioContext) {\n this._webAudioContext.destroy();\n this._webAudioContext = null;\n }\n if (this._htmlAudioContext) {\n this._htmlAudioContext.destroy();\n this._htmlAudioContext = null;\n }\n this._context = null;\n return this;\n }\n}\n\nexport { SoundLibrary };\n//# sourceMappingURL=SoundLibrary.mjs.map\n","import { ExtensionType, utils, extensions as extensions$1 } from '@pixi/core';\nimport { LoaderParserPriority } from '@pixi/assets';\nimport { extensions, supported, mimes } from './utils/supported.mjs';\nimport { Sound } from './Sound.mjs';\nimport { getInstance } from './instance.mjs';\n\nconst getAlias = (asset) => {\n const url = asset.src;\n return asset?.alias?.[0] ?? utils.path.basename(url, utils.path.extname(url));\n};\nconst soundAsset = {\n extension: ExtensionType.Asset,\n detection: {\n test: async () => true,\n add: async (formats) => [...formats, ...extensions.filter((ext) => supported[ext])],\n remove: async (formats) => formats.filter((ext) => formats.includes(ext))\n },\n loader: {\n extension: {\n type: [ExtensionType.LoadParser],\n priority: LoaderParserPriority.High\n },\n /** Should we attempt to load this file? */\n test(url) {\n const ext = utils.path.extname(url).slice(1);\n return !!supported[ext] || mimes.some((mime) => url.startsWith(`data:${mime}`));\n },\n /** Load the sound file, this is mostly handled by Sound.from() */\n async load(url, asset) {\n const sound = await new Promise((resolve, reject) => Sound.from({\n ...asset.data,\n url,\n preload: true,\n loaded(err, sound2) {\n if (err) {\n reject(err);\n } else {\n resolve(sound2);\n }\n asset.data?.loaded?.(err, sound2);\n }\n }));\n getInstance().add(getAlias(asset), sound);\n return sound;\n },\n /** Remove the sound from the library */\n async unload(_sound, asset) {\n getInstance().remove(getAlias(asset));\n }\n }\n};\nextensions$1.add(soundAsset);\n\nexport { soundAsset };\n//# sourceMappingURL=soundAsset.mjs.map\n","import { setInstance } from './instance.mjs';\nimport { SoundLibrary } from './SoundLibrary.mjs';\nimport * as index from './htmlaudio/index.mjs';\nexport { index as htmlaudio };\nimport * as index$1 from './filters/index.mjs';\nexport { index$1 as filters };\nimport * as index$2 from './webaudio/index.mjs';\nexport { index$2 as webaudio };\nimport * as index$3 from './utils/index.mjs';\nexport { index$3 as utils };\nexport { Sound } from './Sound.mjs';\nexport { soundAsset } from './soundAsset.mjs';\nexport { Filterable } from './Filterable.mjs';\nexport { Filter } from './filters/Filter.mjs';\nexport { SoundSprite } from './SoundSprite.mjs';\n\nconst sound = setInstance(new SoundLibrary());\n\nexport { SoundLibrary, sound };\n//# sourceMappingURL=index.mjs.map\n","\r\nexport default class TooltipPosition\r\n{\r\n public static readonly BOTTOM:string = \"bottom\";\r\n public static readonly BOTTOM_END:string = \"bottomEnd\";\r\n public static readonly BOTTOM_START:string = \"bottomStart\";\r\n public static readonly LEFT:string = \"left\";\r\n public static readonly LEFT_END:string = \"leftEnd\";\r\n public static readonly LEFT_START:string = \"leftStart\";\r\n public static readonly RIGHT:string = \"right\";\r\n public static readonly RIGHT_END:string = \"rightEnd\";\r\n public static readonly RIGHT_START:string = \"rightStart\";\r\n public static readonly TOP:string = \"top\";\r\n public static readonly TOP_END:string = \"topEnd\";\r\n public static readonly TOP_START:string = \"topStart\";\r\n}","import DisplayContainer from \"./DisplayContainer.ts\";\r\nimport {Container, Graphics, Text} from \"pixi.js\";\r\nimport {DropShadowFilter} from \"pixi-filters\";\r\nimport TooltipPosition from \"../types/TooltipPosition.ts\";\r\n\r\nexport default class Tooltip extends DisplayContainer\r\n{\r\n//--------------------------------------------------------------------------\r\n //\r\n // Properties\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private _text:string;\r\n private container:Container;\r\n private roundRect:Graphics;\r\n private textField:Text;\r\n private triangle:Graphics;\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public color:number;\r\n public fontSize:number;\r\n public maxWidth:number;\r\n public padding:number;\r\n public roundness:number;\r\n public tooltipColor:number;\r\n public tooltipPosition:TooltipPosition;\r\n public trianglePadding:number;\r\n public triangleSize:number;\r\n\r\n public get text():string\r\n {\r\n return this._text;\r\n }\r\n\r\n public set text(value:string)\r\n {\r\n this._text = value;\r\n this.textField.text = value;\r\n this.roundRect.width = this.textField.width+this.padding*2;\r\n this.roundRect.height = this.textField.height+this.padding*2;\r\n this.positionTriangle();\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Constructor\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n constructor(text?:string)\r\n {\r\n super();\r\n this._init(text);\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private _init(text:string):void\r\n {\r\n this.color = 0x00FFFF;\r\n this.fontSize = 14;\r\n this.maxWidth = 200;\r\n this.padding = 10;\r\n this.roundness = 8;\r\n if(text)\r\n {\r\n this._text = text;\r\n }\r\n else\r\n {\r\n this._text = \"Tooltip\";\r\n }\r\n this.tooltipColor = 0x000000;\r\n this.tooltipPosition = TooltipPosition.BOTTOM;\r\n this.trianglePadding = 8;\r\n this.triangleSize = 8;\r\n }\r\n\r\n private createContainer():void\r\n {\r\n this.container = new Container();\r\n this.container.filters = [new DropShadowFilter({resolution:2})];\r\n this.addChild(this.container);\r\n }\r\n\r\n private createRoundRect():void\r\n {\r\n Graphics.curves.adaptive = false;\r\n this.roundRect = new Graphics();\r\n this.roundRect.beginFill(this.color);\r\n this.roundRect.drawRoundedRect(0, 0, this.textField.width+this.padding*2, this.textField.height+this.padding*2, this.roundness);\r\n this.roundRect.endFill();\r\n this.container.addChild(this.roundRect);\r\n }\r\n\r\n private createTextField():void\r\n {\r\n this.textField = new Text(this._text, {fill:this.tooltipColor, fontSize:this.fontSize, wordWrap:true, wordWrapWidth:this.maxWidth});\r\n this.textField.resolution = 2;\r\n this.textField.x = this.padding;\r\n this.textField.y = this.padding;\r\n }\r\n\r\n private createTriangle():void\r\n {\r\n const width = this.triangleSize*2;\r\n const height = this.triangleSize;\r\n this.triangle = new Graphics();\r\n this.triangle.beginFill(this.color);\r\n this.triangle.moveTo(width/2, 0);\r\n this.triangle.lineTo(width, height);\r\n this.triangle.lineTo(0, height);\r\n this.triangle.lineTo(width/2, 0);\r\n this.triangle.endFill();\r\n this.triangle.pivot.set(width/2, height/2);\r\n this.triangle.x = 100;\r\n this.triangle.y = 100;\r\n this.container.addChild(this.triangle);\r\n }\r\n\r\n private positionTriangle():void\r\n {\r\n switch(this.tooltipPosition)\r\n {\r\n case TooltipPosition.BOTTOM:\r\n this.triangle.angle = 180;\r\n this.triangle.x = this.roundRect.width/2;\r\n this.triangle.y = this.roundRect.height+this.triangle.height/2;\r\n break;\r\n case TooltipPosition.BOTTOM_END:\r\n this.triangle.angle = 180;\r\n this.triangle.x = this.roundRect.width-this.roundness-this.trianglePadding-this.triangle.width/2;\r\n this.triangle.y = this.roundRect.height+this.triangle.height/2;\r\n break;\r\n case TooltipPosition.BOTTOM_START:\r\n this.triangle.angle = 180;\r\n this.triangle.x = this.roundness+this.trianglePadding+this.triangle.width/2;\r\n this.triangle.y = this.roundRect.height+this.triangle.height/2;\r\n break;\r\n case TooltipPosition.LEFT:\r\n this.triangle.angle = 270;\r\n this.triangle.x = -this.triangle.height/2;\r\n this.triangle.y = this.roundRect.height/2;\r\n break;\r\n case TooltipPosition.LEFT_END:\r\n this.triangle.angle = 270;\r\n this.triangle.x = -this.triangle.height/2;\r\n this.triangle.y = this.roundRect.height-this.roundness-this.trianglePadding-this.triangle.width/2;\r\n break;\r\n case TooltipPosition.LEFT_START:\r\n this.triangle.angle = 270;\r\n this.triangle.x = -this.triangle.height/2;\r\n this.triangle.y = this.roundness+this.trianglePadding+this.triangle.width/2;\r\n break;\r\n case TooltipPosition.RIGHT:\r\n this.triangle.angle = 90;\r\n this.triangle.x = this.roundRect.width+this.triangle.height/2;\r\n this.triangle.y = this.roundRect.height/2;\r\n break;\r\n case TooltipPosition.RIGHT_END:\r\n this.triangle.angle = 90;\r\n this.triangle.x = this.roundRect.width+this.triangle.height/2;\r\n this.triangle.y = this.roundRect.height-this.roundness-this.trianglePadding-this.triangle.width/2;\r\n break;\r\n case TooltipPosition.RIGHT_START:\r\n this.triangle.angle = 90;\r\n this.triangle.x = this.roundRect.width+this.triangle.height/2;\r\n this.triangle.y = this.roundness+this.trianglePadding+this.triangle.width/2;\r\n break;\r\n case TooltipPosition.TOP:\r\n this.triangle.x = this.roundRect.width/2;\r\n this.triangle.y = -this.triangle.height/2;\r\n break;\r\n case TooltipPosition.TOP_END:\r\n this.triangle.x = this.roundRect.width-this.roundness-this.trianglePadding-this.triangle.width/2;\r\n this.triangle.y = -this.triangle.height/2;\r\n break;\r\n case TooltipPosition.TOP_START:\r\n this.triangle.x = this.roundness+this.trianglePadding+this.triangle.width/2;\r\n this.triangle.y = -this.triangle.height/2;\r\n break;\r\n }\r\n }\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public override create(creationCompleteCallback?:Function, show=true):void\r\n {\r\n this.createContainer();\r\n this.createTextField();\r\n this.createRoundRect();\r\n this.container.addChild(this.textField);\r\n this.createTriangle();\r\n this.positionTriangle();\r\n super.create(creationCompleteCallback, show);\r\n }\r\n\r\n public override destroy():void\r\n {\r\n super.destroy();\r\n }\r\n}","function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/*!\n * GSAP 3.12.5\n * https://gsap.com\n *\n * @license Copyright 2008-2024, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar _config = {\n autoSleep: 120,\n force3D: \"auto\",\n nullTargetWarn: 1,\n units: {\n lineHeight: \"\"\n }\n},\n _defaults = {\n duration: .5,\n overwrite: false,\n delay: 0\n},\n _suppressOverwrites,\n _reverting,\n _context,\n _bigNum = 1e8,\n _tinyNum = 1 / _bigNum,\n _2PI = Math.PI * 2,\n _HALF_PI = _2PI / 4,\n _gsID = 0,\n _sqrt = Math.sqrt,\n _cos = Math.cos,\n _sin = Math.sin,\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n},\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n},\n _isUndefined = function _isUndefined(value) {\n return typeof value === \"undefined\";\n},\n _isObject = function _isObject(value) {\n return typeof value === \"object\";\n},\n _isNotFalse = function _isNotFalse(value) {\n return value !== false;\n},\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _isFuncOrString = function _isFuncOrString(value) {\n return _isFunction(value) || _isString(value);\n},\n _isTypedArray = typeof ArrayBuffer === \"function\" && ArrayBuffer.isView || function () {},\n // note: IE10 has ArrayBuffer, but NOT ArrayBuffer.isView().\n_isArray = Array.isArray,\n _strictNumExp = /(?:-?\\.?\\d|\\.)+/gi,\n //only numbers (including negatives and decimals) but NOT relative values.\n_numExp = /[-+=.]*\\d+[.e\\-+]*\\d*[e\\-+]*\\d*/g,\n //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\n_numWithUnitExp = /[-+=.]*\\d+[.e-]*\\d*[a-z%]*/g,\n _complexStringNumExp = /[-+=.]*\\d+\\.?\\d*(?:e-|e\\+)?\\d*/gi,\n //duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.\n_relExp = /[+-]=-?[.\\d]+/,\n _delimitedValueExp = /[^,'\"\\[\\]\\s]+/gi,\n // previously /[#\\-+.]*\\b[a-z\\d\\-=+%.]+/gi but didn't catch special characters.\n_unitExp = /^[+\\-=e\\s\\d]*\\d+[.\\d]*([a-z]*|%)\\s*$/i,\n _globalTimeline,\n _win,\n _coreInitted,\n _doc,\n _globals = {},\n _installScope = {},\n _coreReady,\n _install = function _install(scope) {\n return (_installScope = _merge(scope, _globals)) && gsap;\n},\n _missingPlugin = function _missingPlugin(property, value) {\n return console.warn(\"Invalid property\", property, \"set to\", value, \"Missing plugin? gsap.registerPlugin()\");\n},\n _warn = function _warn(message, suppress) {\n return !suppress && console.warn(message);\n},\n _addGlobal = function _addGlobal(name, obj) {\n return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;\n},\n _emptyFunc = function _emptyFunc() {\n return 0;\n},\n _startAtRevertConfig = {\n suppressEvents: true,\n isStart: true,\n kill: false\n},\n _revertConfigNoKill = {\n suppressEvents: true,\n kill: false\n},\n _revertConfig = {\n suppressEvents: true\n},\n _reservedProps = {},\n _lazyTweens = [],\n _lazyLookup = {},\n _lastRenderedFrame,\n _plugins = {},\n _effects = {},\n _nextGCFrame = 30,\n _harnessPlugins = [],\n _callbackNames = \"\",\n _harness = function _harness(targets) {\n var target = targets[0],\n harnessPlugin,\n i;\n _isObject(target) || _isFunction(target) || (targets = [targets]);\n\n if (!(harnessPlugin = (target._gsap || {}).harness)) {\n // find the first target with a harness. We assume targets passed into an animation will be of similar type, meaning the same kind of harness can be used for them all (performance optimization)\n i = _harnessPlugins.length;\n\n while (i-- && !_harnessPlugins[i].targetTest(target)) {}\n\n harnessPlugin = _harnessPlugins[i];\n }\n\n i = targets.length;\n\n while (i--) {\n targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);\n }\n\n return targets;\n},\n _getCache = function _getCache(target) {\n return target._gsap || _harness(toArray(target))[0]._gsap;\n},\n _getProperty = function _getProperty(target, property, v) {\n return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;\n},\n _forEachName = function _forEachName(names, func) {\n return (names = names.split(\",\")).forEach(func) || names;\n},\n //split a comma-delimited list of names into an array, then run a forEach() function and return the split array (this is just a way to consolidate/shorten some code).\n_round = function _round(value) {\n return Math.round(value * 100000) / 100000 || 0;\n},\n _roundPrecise = function _roundPrecise(value) {\n return Math.round(value * 10000000) / 10000000 || 0;\n},\n // increased precision mostly for timing values.\n_parseRelative = function _parseRelative(start, value) {\n var operator = value.charAt(0),\n end = parseFloat(value.substr(2));\n start = parseFloat(start);\n return operator === \"+\" ? start + end : operator === \"-\" ? start - end : operator === \"*\" ? start * end : start / end;\n},\n _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {\n //searches one array to find matches for any of the items in the toFind array. As soon as one is found, it returns true. It does NOT return all the matches; it's simply a boolean search.\n var l = toFind.length,\n i = 0;\n\n for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}\n\n return i < l;\n},\n _lazyRender = function _lazyRender() {\n var l = _lazyTweens.length,\n a = _lazyTweens.slice(0),\n i,\n tween;\n\n _lazyLookup = {};\n _lazyTweens.length = 0;\n\n for (i = 0; i < l; i++) {\n tween = a[i];\n tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);\n }\n},\n _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {\n _lazyTweens.length && !_reverting && _lazyRender();\n animation.render(time, suppressEvents, force || _reverting && time < 0 && (animation._initted || animation._startAt));\n _lazyTweens.length && !_reverting && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.\n},\n _numericIfPossible = function _numericIfPossible(value) {\n var n = parseFloat(value);\n return (n || n === 0) && (value + \"\").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;\n},\n _passThrough = function _passThrough(p) {\n return p;\n},\n _setDefaults = function _setDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || (obj[p] = defaults[p]);\n }\n\n return obj;\n},\n _setKeyframeDefaults = function _setKeyframeDefaults(excludeDuration) {\n return function (obj, defaults) {\n for (var p in defaults) {\n p in obj || p === \"duration\" && excludeDuration || p === \"ease\" || (obj[p] = defaults[p]);\n }\n };\n},\n _merge = function _merge(base, toMerge) {\n for (var p in toMerge) {\n base[p] = toMerge[p];\n }\n\n return base;\n},\n _mergeDeep = function _mergeDeep(base, toMerge) {\n for (var p in toMerge) {\n p !== \"__proto__\" && p !== \"constructor\" && p !== \"prototype\" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);\n }\n\n return base;\n},\n _copyExcluding = function _copyExcluding(obj, excluding) {\n var copy = {},\n p;\n\n for (p in obj) {\n p in excluding || (copy[p] = obj[p]);\n }\n\n return copy;\n},\n _inheritDefaults = function _inheritDefaults(vars) {\n var parent = vars.parent || _globalTimeline,\n func = vars.keyframes ? _setKeyframeDefaults(_isArray(vars.keyframes)) : _setDefaults;\n\n if (_isNotFalse(vars.inherit)) {\n while (parent) {\n func(vars, parent.vars.defaults);\n parent = parent.parent || parent._dp;\n }\n }\n\n return vars;\n},\n _arraysMatch = function _arraysMatch(a1, a2) {\n var i = a1.length,\n match = i === a2.length;\n\n while (match && i-- && a1[i] === a2[i]) {}\n\n return i < 0;\n},\n _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = parent[lastProp],\n t;\n\n if (sortBy) {\n t = child[sortBy];\n\n while (prev && prev[sortBy] > t) {\n prev = prev._prev;\n }\n }\n\n if (prev) {\n child._next = prev._next;\n prev._next = child;\n } else {\n child._next = parent[firstProp];\n parent[firstProp] = child;\n }\n\n if (child._next) {\n child._next._prev = child;\n } else {\n parent[lastProp] = child;\n }\n\n child._prev = prev;\n child.parent = child._dp = parent;\n return child;\n},\n _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = child._prev,\n next = child._next;\n\n if (prev) {\n prev._next = next;\n } else if (parent[firstProp] === child) {\n parent[firstProp] = next;\n }\n\n if (next) {\n next._prev = prev;\n } else if (parent[lastProp] === child) {\n parent[lastProp] = prev;\n }\n\n child._next = child._prev = child.parent = null; // don't delete the _dp just so we can revert if necessary. But parent should be null to indicate the item isn't in a linked list.\n},\n _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {\n child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove && child.parent.remove(child);\n child._act = 0;\n},\n _uncache = function _uncache(animation, child) {\n if (animation && (!child || child._end > animation._dur || child._start < 0)) {\n // performance optimization: if a child animation is passed in we should only uncache if that child EXTENDS the animation (its end time is beyond the end)\n var a = animation;\n\n while (a) {\n a._dirty = 1;\n a = a.parent;\n }\n }\n\n return animation;\n},\n _recacheAncestors = function _recacheAncestors(animation) {\n var parent = animation.parent;\n\n while (parent && parent.parent) {\n //sometimes we must force a re-sort of all children and update the duration/totalDuration of all ancestor timelines immediately in case, for example, in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.\n parent._dirty = 1;\n parent.totalDuration();\n parent = parent.parent;\n }\n\n return animation;\n},\n _rewindStartAt = function _rewindStartAt(tween, totalTime, suppressEvents, force) {\n return tween._startAt && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween.vars.immediateRender && !tween.vars.autoRevert || tween._startAt.render(totalTime, true, force));\n},\n _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {\n return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);\n},\n _elapsedCycleDuration = function _elapsedCycleDuration(animation) {\n return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;\n},\n // feed in the totalTime and cycleDuration and it'll return the cycle (iteration minus 1) and if the playhead is exactly at the very END, it will NOT bump up to the next cycle.\n_animationCycle = function _animationCycle(tTime, cycleDuration) {\n var whole = Math.floor(tTime /= cycleDuration);\n return tTime && whole === tTime ? whole - 1 : whole;\n},\n _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {\n return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);\n},\n _setEnd = function _setEnd(animation) {\n return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));\n},\n _alignPlayhead = function _alignPlayhead(animation, totalTime) {\n // adjusts the animation's _start and _end according to the provided totalTime (only if the parent's smoothChildTiming is true and the animation isn't paused). It doesn't do any rendering or forcing things back into parent timelines, etc. - that's what totalTime() is for.\n var parent = animation._dp;\n\n if (parent && parent.smoothChildTiming && animation._ts) {\n animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));\n\n _setEnd(animation);\n\n parent._dirty || _uncache(parent, animation); //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.\n }\n\n return animation;\n},\n\n/*\n_totalTimeToTime = (clampedTotalTime, duration, repeat, repeatDelay, yoyo) => {\n\tlet cycleDuration = duration + repeatDelay,\n\t\ttime = _round(clampedTotalTime % cycleDuration);\n\tif (time > duration) {\n\t\ttime = duration;\n\t}\n\treturn (yoyo && (~~(clampedTotalTime / cycleDuration) & 1)) ? duration - time : time;\n},\n*/\n_postAddChecks = function _postAddChecks(timeline, child) {\n var t;\n\n if (child._time || !child._dur && child._initted || child._start < timeline._time && (child._dur || !child.add)) {\n // in case, for example, the _start is moved on a tween that has already rendered, or if it's being inserted into a timeline BEFORE where the playhead is currently. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning. Special case: if it's a timeline (has .add() method) and no duration, we can skip rendering because the user may be populating it AFTER adding it to a parent timeline (unconventional, but possible, and we wouldn't want it to get removed if the parent's autoRemoveChildren is true).\n t = _parentToChildTotalTime(timeline.rawTime(), child);\n\n if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {\n child.render(t, true);\n }\n } //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.\n\n\n if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {\n //in case any of the ancestors had completed but should now be enabled...\n if (timeline._dur < timeline.duration()) {\n t = timeline;\n\n while (t._dp) {\n t.rawTime() >= 0 && t.totalTime(t._tTime); //moves the timeline (shifts its startTime) if necessary, and also enables it. If it's currently zero, though, it may not be scheduled to render until later so there's no need to force it to align with the current playhead position. Only move to catch up with the playhead.\n\n t = t._dp;\n }\n }\n\n timeline._zTime = -_tinyNum; // helps ensure that the next render() will be forced (crossingStart = true in render()), even if the duration hasn't changed (we're adding a child which would need to get rendered). Definitely an edge case. Note: we MUST do this AFTER the loop above where the totalTime() might trigger a render() because this _addToTimeline() method gets called from the Animation constructor, BEFORE tweens even record their targets, etc. so we wouldn't want things to get triggered in the wrong order.\n }\n},\n _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {\n child.parent && _removeFromParent(child);\n child._start = _roundPrecise((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay);\n child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));\n\n _addLinkedListItem(timeline, child, \"_first\", \"_last\", timeline._sort ? \"_start\" : 0);\n\n _isFromOrFromStart(child) || (timeline._recent = child);\n skipChecks || _postAddChecks(timeline, child);\n timeline._ts < 0 && _alignPlayhead(timeline, timeline._tTime); // if the timeline is reversed and the new child makes it longer, we may need to adjust the parent's _start (push it back)\n\n return timeline;\n},\n _scrollTrigger = function _scrollTrigger(animation, trigger) {\n return (_globals.ScrollTrigger || _missingPlugin(\"scrollTrigger\", trigger)) && _globals.ScrollTrigger.create(trigger, animation);\n},\n _attemptInitTween = function _attemptInitTween(tween, time, force, suppressEvents, tTime) {\n _initTween(tween, time, tTime);\n\n if (!tween._initted) {\n return 1;\n }\n\n if (!force && tween._pt && !_reverting && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {\n _lazyTweens.push(tween);\n\n tween._lazy = [tTime, suppressEvents];\n return 1;\n }\n},\n _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) {\n var parent = _ref.parent;\n return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent));\n},\n // check parent's _lock because when a timeline repeats/yoyos and does its artificial wrapping, we shouldn't force the ratio back to 0\n_isFromOrFromStart = function _isFromOrFromStart(_ref2) {\n var data = _ref2.data;\n return data === \"isFromStart\" || data === \"isStart\";\n},\n _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {\n var prevRatio = tween.ratio,\n ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1,\n // if the tween or its parent is reversed and the totalTime is 0, we should go to a ratio of 0. Edge case: if a from() or fromTo() stagger tween is placed later in a timeline, the \"startAt\" zero-duration tween could initially render at a time when the parent timeline's playhead is technically BEFORE where this tween is, so make sure that any \"from\" and \"fromTo\" startAt tweens are rendered the first time at a ratio of 1.\n repeatDelay = tween._rDelay,\n tTime = 0,\n pt,\n iteration,\n prevIteration;\n\n if (repeatDelay && tween._repeat) {\n // in case there's a zero-duration tween that has a repeat with a repeatDelay\n tTime = _clamp(0, tween._tDur, totalTime);\n iteration = _animationCycle(tTime, repeatDelay);\n tween._yoyo && iteration & 1 && (ratio = 1 - ratio);\n\n if (iteration !== _animationCycle(tween._tTime, repeatDelay)) {\n // if iteration changed\n prevRatio = 1 - ratio;\n tween.vars.repeatRefresh && tween._initted && tween.invalidate();\n }\n }\n\n if (ratio !== prevRatio || _reverting || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {\n if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents, tTime)) {\n // if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.\n return;\n }\n\n prevIteration = tween._zTime;\n tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); // when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n suppressEvents || (suppressEvents = totalTime && !prevIteration); // if it was rendered previously at exactly 0 (_zTime) and now the playhead is moving away, DON'T fire callbacks otherwise they'll seem like duplicates.\n\n tween.ratio = ratio;\n tween._from && (ratio = 1 - ratio);\n tween._time = 0;\n tween._tTime = tTime;\n pt = tween._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n totalTime < 0 && _rewindStartAt(tween, totalTime, suppressEvents, true);\n tween._onUpdate && !suppressEvents && _callback(tween, \"onUpdate\");\n tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, \"onRepeat\");\n\n if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {\n ratio && _removeFromParent(tween, 1);\n\n if (!suppressEvents && !_reverting) {\n _callback(tween, ratio ? \"onComplete\" : \"onReverseComplete\", true);\n\n tween._prom && tween._prom();\n }\n }\n } else if (!tween._zTime) {\n tween._zTime = totalTime;\n }\n},\n _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {\n var child;\n\n if (time > prevTime) {\n child = animation._first;\n\n while (child && child._start <= time) {\n if (child.data === \"isPause\" && child._start > prevTime) {\n return child;\n }\n\n child = child._next;\n }\n } else {\n child = animation._last;\n\n while (child && child._start >= time) {\n if (child.data === \"isPause\" && child._start < prevTime) {\n return child;\n }\n\n child = child._prev;\n }\n }\n},\n _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {\n var repeat = animation._repeat,\n dur = _roundPrecise(duration) || 0,\n totalProgress = animation._tTime / animation._tDur;\n totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);\n animation._dur = dur;\n animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat);\n totalProgress > 0 && !leavePlayhead && _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress);\n animation.parent && _setEnd(animation);\n skipUncache || _uncache(animation.parent, animation);\n return animation;\n},\n _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {\n return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);\n},\n _zeroPosition = {\n _start: 0,\n endTime: _emptyFunc,\n totalDuration: _emptyFunc\n},\n _parsePosition = function _parsePosition(animation, position, percentAnimation) {\n var labels = animation.labels,\n recent = animation._recent || _zeroPosition,\n clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,\n //in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.\n i,\n offset,\n isPercent;\n\n if (_isString(position) && (isNaN(position) || position in labels)) {\n //if the string is a number like \"1\", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).\n offset = position.charAt(0);\n isPercent = position.substr(-1) === \"%\";\n i = position.indexOf(\"=\");\n\n if (offset === \"<\" || offset === \">\") {\n i >= 0 && (position = position.replace(/=/, \"\"));\n return (offset === \"<\" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);\n }\n\n if (i < 0) {\n position in labels || (labels[position] = clippedDuration);\n return labels[position];\n }\n\n offset = parseFloat(position.charAt(i - 1) + position.substr(i + 1));\n\n if (isPercent && percentAnimation) {\n offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();\n }\n\n return i > 1 ? _parsePosition(animation, position.substr(0, i - 1), percentAnimation) + offset : clippedDuration + offset;\n }\n\n return position == null ? clippedDuration : +position;\n},\n _createTweenType = function _createTweenType(type, params, timeline) {\n var isLegacy = _isNumber(params[1]),\n varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),\n vars = params[varsIndex],\n irVars,\n parent;\n\n isLegacy && (vars.duration = params[1]);\n vars.parent = timeline;\n\n if (type) {\n irVars = vars;\n parent = timeline;\n\n while (parent && !(\"immediateRender\" in irVars)) {\n // inheritance hasn't happened yet, but someone may have set a default in an ancestor timeline. We could do vars.immediateRender = _isNotFalse(_inheritDefaults(vars).immediateRender) but that'd exact a slight performance penalty because _inheritDefaults() also runs in the Tween constructor. We're paying a small kb price here to gain speed.\n irVars = parent.vars.defaults || {};\n parent = _isNotFalse(parent.vars.inherit) && parent.parent;\n }\n\n vars.immediateRender = _isNotFalse(irVars.immediateRender);\n type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1]; // \"from\" vars\n }\n\n return new Tween(params[0], vars, params[varsIndex + 1]);\n},\n _conditionalReturn = function _conditionalReturn(value, func) {\n return value || value === 0 ? func(value) : func;\n},\n _clamp = function _clamp(min, max, value) {\n return value < min ? min : value > max ? max : value;\n},\n getUnit = function getUnit(value, v) {\n return !_isString(value) || !(v = _unitExp.exec(value)) ? \"\" : v[1];\n},\n // note: protect against padded numbers as strings, like \"100.100\". That shouldn't return \"00\" as the unit. If it's numeric, return no unit.\nclamp = function clamp(min, max, value) {\n return _conditionalReturn(value, function (v) {\n return _clamp(min, max, v);\n });\n},\n _slice = [].slice,\n _isArrayLike = function _isArrayLike(value, nonEmpty) {\n return value && _isObject(value) && \"length\" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;\n},\n _flatten = function _flatten(ar, leaveStrings, accumulator) {\n if (accumulator === void 0) {\n accumulator = [];\n }\n\n return ar.forEach(function (value) {\n var _accumulator;\n\n return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);\n }) || accumulator;\n},\n //takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.\ntoArray = function toArray(value, scope, leaveStrings) {\n return _context && !scope && _context.selector ? _context.selector(value) : _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];\n},\n selector = function selector(value) {\n value = toArray(value)[0] || _warn(\"Invalid scope\") || {};\n return function (v) {\n var el = value.current || value.nativeElement || value;\n return toArray(v, el.querySelectorAll ? el : el === value ? _warn(\"Invalid scope\") || _doc.createElement(\"div\") : value);\n };\n},\n shuffle = function shuffle(a) {\n return a.sort(function () {\n return .5 - Math.random();\n });\n},\n // alternative that's a bit faster and more reliably diverse but bigger: for (let j, v, i = a.length; i; j = Math.floor(Math.random() * i), v = a[--i], a[i] = a[j], a[j] = v); return a;\n//for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following\ndistribute = function distribute(v) {\n if (_isFunction(v)) {\n return v;\n }\n\n var vars = _isObject(v) ? v : {\n each: v\n },\n //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total \"amount\" that's chunked out among them all.\n ease = _parseEase(vars.ease),\n from = vars.from || 0,\n base = parseFloat(vars.base) || 0,\n cache = {},\n isDecimal = from > 0 && from < 1,\n ratios = isNaN(from) || isDecimal,\n axis = vars.axis,\n ratioX = from,\n ratioY = from;\n\n if (_isString(from)) {\n ratioX = ratioY = {\n center: .5,\n edges: .5,\n end: 1\n }[from] || 0;\n } else if (!isDecimal && ratios) {\n ratioX = from[0];\n ratioY = from[1];\n }\n\n return function (i, target, a) {\n var l = (a || vars).length,\n distances = cache[l],\n originX,\n originY,\n x,\n y,\n d,\n j,\n max,\n min,\n wrapAt;\n\n if (!distances) {\n wrapAt = vars.grid === \"auto\" ? 0 : (vars.grid || [1, _bigNum])[1];\n\n if (!wrapAt) {\n max = -_bigNum;\n\n while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}\n\n wrapAt < l && wrapAt--;\n }\n\n distances = cache[l] = [];\n originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;\n originY = wrapAt === _bigNum ? 0 : ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;\n max = 0;\n min = _bigNum;\n\n for (j = 0; j < l; j++) {\n x = j % wrapAt - originX;\n y = originY - (j / wrapAt | 0);\n distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === \"y\" ? y : x);\n d > max && (max = d);\n d < min && (min = d);\n }\n\n from === \"random\" && shuffle(distances);\n distances.max = max - min;\n distances.min = min;\n distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === \"y\" ? l / wrapAt : wrapAt) || 0) * (from === \"edges\" ? -1 : 1);\n distances.b = l < 0 ? base - l : base;\n distances.u = getUnit(vars.amount || vars.each) || 0; //unit\n\n ease = ease && l < 0 ? _invertEase(ease) : ease;\n }\n\n l = (distances[i] - distances.min) / distances.max || 0;\n return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; //round in order to work around floating point errors\n };\n},\n _roundModifier = function _roundModifier(v) {\n //pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.\n var p = Math.pow(10, ((v + \"\").split(\".\")[1] || \"\").length); //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed())\n\n return function (raw) {\n var n = _roundPrecise(Math.round(parseFloat(raw) / v) * v * p);\n\n return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw)); // n - n % 1 replaces Math.floor() in order to handle negative values properly. For example, Math.floor(-150.00000000000003) is 151!\n };\n},\n snap = function snap(snapTo, value) {\n var isArray = _isArray(snapTo),\n radius,\n is2D;\n\n if (!isArray && _isObject(snapTo)) {\n radius = isArray = snapTo.radius || _bigNum;\n\n if (snapTo.values) {\n snapTo = toArray(snapTo.values);\n\n if (is2D = !_isNumber(snapTo[0])) {\n radius *= radius; //performance optimization so we don't have to Math.sqrt() in the loop.\n }\n } else {\n snapTo = _roundModifier(snapTo.increment);\n }\n }\n\n return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {\n is2D = snapTo(raw);\n return Math.abs(is2D - raw) <= radius ? is2D : raw;\n } : function (raw) {\n var x = parseFloat(is2D ? raw.x : raw),\n y = parseFloat(is2D ? raw.y : 0),\n min = _bigNum,\n closest = 0,\n i = snapTo.length,\n dx,\n dy;\n\n while (i--) {\n if (is2D) {\n dx = snapTo[i].x - x;\n dy = snapTo[i].y - y;\n dx = dx * dx + dy * dy;\n } else {\n dx = Math.abs(snapTo[i] - x);\n }\n\n if (dx < min) {\n min = dx;\n closest = i;\n }\n }\n\n closest = !radius || min <= radius ? snapTo[closest] : raw;\n return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);\n });\n},\n random = function random(min, max, roundingIncrement, returnFunction) {\n return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {\n return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + \"\").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;\n });\n},\n pipe = function pipe() {\n for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {\n functions[_key] = arguments[_key];\n }\n\n return function (value) {\n return functions.reduce(function (v, f) {\n return f(v);\n }, value);\n };\n},\n unitize = function unitize(func, unit) {\n return function (value) {\n return func(parseFloat(value)) + (unit || getUnit(value));\n };\n},\n normalize = function normalize(min, max, value) {\n return mapRange(min, max, 0, 1, value);\n},\n _wrapArray = function _wrapArray(a, wrapper, value) {\n return _conditionalReturn(value, function (index) {\n return a[~~wrapper(index)];\n });\n},\n wrap = function wrap(min, max, value) {\n // NOTE: wrap() CANNOT be an arrow function! A very odd compiling bug causes problems (unrelated to GSAP).\n var range = max - min;\n return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {\n return (range + (value - min) % range) % range + min;\n });\n},\n wrapYoyo = function wrapYoyo(min, max, value) {\n var range = max - min,\n total = range * 2;\n return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {\n value = (total + (value - min) % total) % total || 0;\n return min + (value > range ? total - value : value);\n });\n},\n _replaceRandom = function _replaceRandom(value) {\n //replaces all occurrences of random(...) in a string with the calculated random value. can be a range like random(-100, 100, 5) or an array like random([0, 100, 500])\n var prev = 0,\n s = \"\",\n i,\n nums,\n end,\n isArray;\n\n while (~(i = value.indexOf(\"random(\", prev))) {\n end = value.indexOf(\")\", i);\n isArray = value.charAt(i + 7) === \"[\";\n nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);\n s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);\n prev = end + 1;\n }\n\n return s + value.substr(prev, value.length - prev);\n},\n mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {\n var inRange = inMax - inMin,\n outRange = outMax - outMin;\n return _conditionalReturn(value, function (value) {\n return outMin + ((value - inMin) / inRange * outRange || 0);\n });\n},\n interpolate = function interpolate(start, end, progress, mutate) {\n var func = isNaN(start + end) ? 0 : function (p) {\n return (1 - p) * start + p * end;\n };\n\n if (!func) {\n var isString = _isString(start),\n master = {},\n p,\n i,\n interpolators,\n l,\n il;\n\n progress === true && (mutate = 1) && (progress = null);\n\n if (isString) {\n start = {\n p: start\n };\n end = {\n p: end\n };\n } else if (_isArray(start) && !_isArray(end)) {\n interpolators = [];\n l = start.length;\n il = l - 2;\n\n for (i = 1; i < l; i++) {\n interpolators.push(interpolate(start[i - 1], start[i])); //build the interpolators up front as a performance optimization so that when the function is called many times, it can just reuse them.\n }\n\n l--;\n\n func = function func(p) {\n p *= l;\n var i = Math.min(il, ~~p);\n return interpolators[i](p - i);\n };\n\n progress = end;\n } else if (!mutate) {\n start = _merge(_isArray(start) ? [] : {}, start);\n }\n\n if (!interpolators) {\n for (p in end) {\n _addPropTween.call(master, start, p, \"get\", end[p]);\n }\n\n func = function func(p) {\n return _renderPropTweens(p, master) || (isString ? start.p : start);\n };\n }\n }\n\n return _conditionalReturn(progress, func);\n},\n _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {\n //used for nextLabel() and previousLabel()\n var labels = timeline.labels,\n min = _bigNum,\n p,\n distance,\n label;\n\n for (p in labels) {\n distance = labels[p] - fromTime;\n\n if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {\n label = p;\n min = distance;\n }\n }\n\n return label;\n},\n _callback = function _callback(animation, type, executeLazyFirst) {\n var v = animation.vars,\n callback = v[type],\n prevContext = _context,\n context = animation._ctx,\n params,\n scope,\n result;\n\n if (!callback) {\n return;\n }\n\n params = v[type + \"Params\"];\n scope = v.callbackScope || animation;\n executeLazyFirst && _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.\n\n context && (_context = context);\n result = params ? callback.apply(scope, params) : callback.call(scope);\n _context = prevContext;\n return result;\n},\n _interrupt = function _interrupt(animation) {\n _removeFromParent(animation);\n\n animation.scrollTrigger && animation.scrollTrigger.kill(!!_reverting);\n animation.progress() < 1 && _callback(animation, \"onInterrupt\");\n return animation;\n},\n _quickTween,\n _registerPluginQueue = [],\n _createPlugin = function _createPlugin(config) {\n if (!config) return;\n config = !config.name && config[\"default\"] || config; // UMD packaging wraps things oddly, so for example MotionPathHelper becomes {MotionPathHelper:MotionPathHelper, default:MotionPathHelper}.\n\n if (_windowExists() || config.headless) {\n // edge case: some build tools may pass in a null/undefined value\n var name = config.name,\n isFunc = _isFunction(config),\n Plugin = name && !isFunc && config.init ? function () {\n this._props = [];\n } : config,\n //in case someone passes in an object that's not a plugin, like CustomEase\n instanceDefaults = {\n init: _emptyFunc,\n render: _renderPropTweens,\n add: _addPropTween,\n kill: _killPropTweensOf,\n modifier: _addPluginModifier,\n rawVars: 0\n },\n statics = {\n targetTest: 0,\n get: 0,\n getSetter: _getSetter,\n aliases: {},\n register: 0\n };\n\n _wake();\n\n if (config !== Plugin) {\n if (_plugins[name]) {\n return;\n }\n\n _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); //static methods\n\n\n _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); //instance methods\n\n\n _plugins[Plugin.prop = name] = Plugin;\n\n if (config.targetTest) {\n _harnessPlugins.push(Plugin);\n\n _reservedProps[name] = 1;\n }\n\n name = (name === \"css\" ? \"CSS\" : name.charAt(0).toUpperCase() + name.substr(1)) + \"Plugin\"; //for the global name. \"motionPath\" should become MotionPathPlugin\n }\n\n _addGlobal(name, Plugin);\n\n config.register && config.register(gsap, Plugin, PropTween);\n } else {\n _registerPluginQueue.push(config);\n }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * COLORS\n * --------------------------------------------------------------------------------------\n */\n_255 = 255,\n _colorLookup = {\n aqua: [0, _255, _255],\n lime: [0, _255, 0],\n silver: [192, 192, 192],\n black: [0, 0, 0],\n maroon: [128, 0, 0],\n teal: [0, 128, 128],\n blue: [0, 0, _255],\n navy: [0, 0, 128],\n white: [_255, _255, _255],\n olive: [128, 128, 0],\n yellow: [_255, _255, 0],\n orange: [_255, 165, 0],\n gray: [128, 128, 128],\n purple: [128, 0, 128],\n green: [0, 128, 0],\n red: [_255, 0, 0],\n pink: [_255, 192, 203],\n cyan: [0, _255, _255],\n transparent: [_255, _255, _255, 0]\n},\n // possible future idea to replace the hard-coded color name values - put this in the ticker.wake() where we set the _doc:\n// let ctx = _doc.createElement(\"canvas\").getContext(\"2d\");\n// _forEachName(\"aqua,lime,silver,black,maroon,teal,blue,navy,white,olive,yellow,orange,gray,purple,green,red,pink,cyan\", color => {ctx.fillStyle = color; _colorLookup[color] = splitColor(ctx.fillStyle)});\n_hue = function _hue(h, m1, m2) {\n h += h < 0 ? 1 : h > 1 ? -1 : 0;\n return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;\n},\n splitColor = function splitColor(v, toHSL, forceAlpha) {\n var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,\n r,\n g,\n b,\n h,\n s,\n l,\n max,\n min,\n d,\n wasHSL;\n\n if (!a) {\n if (v.substr(-1) === \",\") {\n //sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:\"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)\" - in this example \"blue,\" has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.\n v = v.substr(0, v.length - 1);\n }\n\n if (_colorLookup[v]) {\n a = _colorLookup[v];\n } else if (v.charAt(0) === \"#\") {\n if (v.length < 6) {\n //for shorthand like #9F0 or #9F0F (could have alpha)\n r = v.charAt(1);\n g = v.charAt(2);\n b = v.charAt(3);\n v = \"#\" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : \"\");\n }\n\n if (v.length === 9) {\n // hex with alpha, like #fd5e53ff\n a = parseInt(v.substr(1, 6), 16);\n return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];\n }\n\n v = parseInt(v.substr(1), 16);\n a = [v >> 16, v >> 8 & _255, v & _255];\n } else if (v.substr(0, 3) === \"hsl\") {\n a = wasHSL = v.match(_strictNumExp);\n\n if (!toHSL) {\n h = +a[0] % 360 / 360;\n s = +a[1] / 100;\n l = +a[2] / 100;\n g = l <= .5 ? l * (s + 1) : l + s - l * s;\n r = l * 2 - g;\n a.length > 3 && (a[3] *= 1); //cast as number\n\n a[0] = _hue(h + 1 / 3, r, g);\n a[1] = _hue(h, r, g);\n a[2] = _hue(h - 1 / 3, r, g);\n } else if (~v.indexOf(\"=\")) {\n //if relative values are found, just return the raw strings with the relative prefixes in place.\n a = v.match(_numExp);\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n }\n } else {\n a = v.match(_strictNumExp) || _colorLookup.transparent;\n }\n\n a = a.map(Number);\n }\n\n if (toHSL && !wasHSL) {\n r = a[0] / _255;\n g = a[1] / _255;\n b = a[2] / _255;\n max = Math.max(r, g, b);\n min = Math.min(r, g, b);\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n h *= 60;\n }\n\n a[0] = ~~(h + .5);\n a[1] = ~~(s * 100 + .5);\n a[2] = ~~(l * 100 + .5);\n }\n\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n},\n _colorOrderData = function _colorOrderData(v) {\n // strips out the colors from the string, finds all the numeric slots (with units) and returns an array of those. The Array also has a \"c\" property which is an Array of the index values where the colors belong. This is to help work around issues where there's a mis-matched order of color/numeric data like drop-shadow(#f00 0px 1px 2px) and drop-shadow(0x 1px 2px #f00). This is basically a helper function used in _formatColors()\n var values = [],\n c = [],\n i = -1;\n v.split(_colorExp).forEach(function (v) {\n var a = v.match(_numWithUnitExp) || [];\n values.push.apply(values, a);\n c.push(i += a.length + 1);\n });\n values.c = c;\n return values;\n},\n _formatColors = function _formatColors(s, toHSL, orderMatchData) {\n var result = \"\",\n colors = (s + result).match(_colorExp),\n type = toHSL ? \"hsla(\" : \"rgba(\",\n i = 0,\n c,\n shell,\n d,\n l;\n\n if (!colors) {\n return s;\n }\n\n colors = colors.map(function (color) {\n return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + \",\" + color[1] + \"%,\" + color[2] + \"%,\" + color[3] : color.join(\",\")) + \")\";\n });\n\n if (orderMatchData) {\n d = _colorOrderData(s);\n c = orderMatchData.c;\n\n if (c.join(result) !== d.c.join(result)) {\n shell = s.replace(_colorExp, \"1\").split(_numWithUnitExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + \"0,0,0,0)\" : (d.length ? d : colors.length ? colors : orderMatchData).shift());\n }\n }\n }\n\n if (!shell) {\n shell = s.split(_colorExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + colors[i];\n }\n }\n\n return result + shell[l];\n},\n _colorExp = function () {\n var s = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3,4}){1,2}\\\\b\",\n //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.,\n p;\n\n for (p in _colorLookup) {\n s += \"|\" + p + \"\\\\b\";\n }\n\n return new RegExp(s + \")\", \"gi\");\n}(),\n _hslExp = /hsl[a]?\\(/,\n _colorStringFilter = function _colorStringFilter(a) {\n var combined = a.join(\" \"),\n toHSL;\n _colorExp.lastIndex = 0;\n\n if (_colorExp.test(combined)) {\n toHSL = _hslExp.test(combined);\n a[1] = _formatColors(a[1], toHSL);\n a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); // make sure the order of numbers/colors match with the END value.\n\n return true;\n }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TICKER\n * --------------------------------------------------------------------------------------\n */\n_tickerActive,\n _ticker = function () {\n var _getTime = Date.now,\n _lagThreshold = 500,\n _adjustedLag = 33,\n _startTime = _getTime(),\n _lastUpdate = _startTime,\n _gap = 1000 / 240,\n _nextTime = _gap,\n _listeners = [],\n _id,\n _req,\n _raf,\n _self,\n _delta,\n _i,\n _tick = function _tick(v) {\n var elapsed = _getTime() - _lastUpdate,\n manual = v === true,\n overlap,\n dispatch,\n time,\n frame;\n\n (elapsed > _lagThreshold || elapsed < 0) && (_startTime += elapsed - _adjustedLag);\n _lastUpdate += elapsed;\n time = _lastUpdate - _startTime;\n overlap = time - _nextTime;\n\n if (overlap > 0 || manual) {\n frame = ++_self.frame;\n _delta = time - _self.time * 1000;\n _self.time = time = time / 1000;\n _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);\n dispatch = 1;\n }\n\n manual || (_id = _req(_tick)); //make sure the request is made before we dispatch the \"tick\" event so that timing is maintained. Otherwise, if processing the \"tick\" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.\n\n if (dispatch) {\n for (_i = 0; _i < _listeners.length; _i++) {\n // use _i and check _listeners.length instead of a variable because a listener could get removed during the loop, and if that happens to an element less than the current index, it'd throw things off in the loop.\n _listeners[_i](time, _delta, frame, v);\n }\n }\n };\n\n _self = {\n time: 0,\n frame: 0,\n tick: function tick() {\n _tick(true);\n },\n deltaRatio: function deltaRatio(fps) {\n return _delta / (1000 / (fps || 60));\n },\n wake: function wake() {\n if (_coreReady) {\n if (!_coreInitted && _windowExists()) {\n _win = _coreInitted = window;\n _doc = _win.document || {};\n _globals.gsap = gsap;\n (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);\n\n _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});\n\n _registerPluginQueue.forEach(_createPlugin);\n }\n\n _raf = typeof requestAnimationFrame !== \"undefined\" && requestAnimationFrame;\n _id && _self.sleep();\n\n _req = _raf || function (f) {\n return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);\n };\n\n _tickerActive = 1;\n\n _tick(2);\n }\n },\n sleep: function sleep() {\n (_raf ? cancelAnimationFrame : clearTimeout)(_id);\n _tickerActive = 0;\n _req = _emptyFunc;\n },\n lagSmoothing: function lagSmoothing(threshold, adjustedLag) {\n _lagThreshold = threshold || Infinity; // zero should be interpreted as basically unlimited\n\n _adjustedLag = Math.min(adjustedLag || 33, _lagThreshold);\n },\n fps: function fps(_fps) {\n _gap = 1000 / (_fps || 240);\n _nextTime = _self.time * 1000 + _gap;\n },\n add: function add(callback, once, prioritize) {\n var func = once ? function (t, d, f, v) {\n callback(t, d, f, v);\n\n _self.remove(func);\n } : callback;\n\n _self.remove(callback);\n\n _listeners[prioritize ? \"unshift\" : \"push\"](func);\n\n _wake();\n\n return func;\n },\n remove: function remove(callback, i) {\n ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;\n },\n _listeners: _listeners\n };\n return _self;\n}(),\n _wake = function _wake() {\n return !_tickerActive && _ticker.wake();\n},\n //also ensures the core classes are initialized.\n\n/*\n* -------------------------------------------------\n* EASING\n* -------------------------------------------------\n*/\n_easeMap = {},\n _customEaseExp = /^[\\d.\\-M][\\d.\\-,\\s]/,\n _quotesExp = /[\"']/g,\n _parseObjectInString = function _parseObjectInString(value) {\n //takes a string like \"{wiggles:10, type:anticipate})\" and turns it into a real object. Notice it ends in \")\" and includes the {} wrappers. This is because we only use this function for parsing ease configs and prioritized optimization rather than reusability.\n var obj = {},\n split = value.substr(1, value.length - 3).split(\":\"),\n key = split[0],\n i = 1,\n l = split.length,\n index,\n val,\n parsedVal;\n\n for (; i < l; i++) {\n val = split[i];\n index = i !== l - 1 ? val.lastIndexOf(\",\") : val.length;\n parsedVal = val.substr(0, index);\n obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, \"\").trim() : +parsedVal;\n key = val.substr(index + 1).trim();\n }\n\n return obj;\n},\n _valueInParentheses = function _valueInParentheses(value) {\n var open = value.indexOf(\"(\") + 1,\n close = value.indexOf(\")\"),\n nested = value.indexOf(\"(\", open);\n return value.substring(open, ~nested && nested < close ? value.indexOf(\")\", close + 1) : close);\n},\n _configEaseFromString = function _configEaseFromString(name) {\n //name can be a string like \"elastic.out(1,0.5)\", and pass in _easeMap as obj and it'll parse it out and call the actual function like _easeMap.Elastic.easeOut.config(1,0.5). It will also parse custom ease strings as long as CustomEase is loaded and registered (internally as _easeMap._CE).\n var split = (name + \"\").split(\"(\"),\n ease = _easeMap[split[0]];\n return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf(\"{\") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(\",\").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE(\"\", name) : ease;\n},\n _invertEase = function _invertEase(ease) {\n return function (p) {\n return 1 - ease(1 - p);\n };\n},\n // allow yoyoEase to be set in children and have those affected when the parent/ancestor timeline yoyos.\n_propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {\n var child = timeline._first,\n ease;\n\n while (child) {\n if (child instanceof Timeline) {\n _propagateYoyoEase(child, isYoyo);\n } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {\n if (child.timeline) {\n _propagateYoyoEase(child.timeline, isYoyo);\n } else {\n ease = child._ease;\n child._ease = child._yEase;\n child._yEase = ease;\n child._yoyo = isYoyo;\n }\n }\n\n child = child._next;\n }\n},\n _parseEase = function _parseEase(ease, defaultEase) {\n return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;\n},\n _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {\n if (easeOut === void 0) {\n easeOut = function easeOut(p) {\n return 1 - easeIn(1 - p);\n };\n }\n\n if (easeInOut === void 0) {\n easeInOut = function easeInOut(p) {\n return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;\n };\n }\n\n var ease = {\n easeIn: easeIn,\n easeOut: easeOut,\n easeInOut: easeInOut\n },\n lowercaseName;\n\n _forEachName(names, function (name) {\n _easeMap[name] = _globals[name] = ease;\n _easeMap[lowercaseName = name.toLowerCase()] = easeOut;\n\n for (var p in ease) {\n _easeMap[lowercaseName + (p === \"easeIn\" ? \".in\" : p === \"easeOut\" ? \".out\" : \".inOut\")] = _easeMap[name + \".\" + p] = ease[p];\n }\n });\n\n return ease;\n},\n _easeInOutFromOut = function _easeInOutFromOut(easeOut) {\n return function (p) {\n return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;\n };\n},\n _configElastic = function _configElastic(type, amplitude, period) {\n var p1 = amplitude >= 1 ? amplitude : 1,\n //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.\n p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),\n p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),\n easeOut = function easeOut(p) {\n return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n p2 = _2PI / p2; //precalculate to optimize\n\n ease.config = function (amplitude, period) {\n return _configElastic(type, amplitude, period);\n };\n\n return ease;\n},\n _configBack = function _configBack(type, overshoot) {\n if (overshoot === void 0) {\n overshoot = 1.70158;\n }\n\n var easeOut = function easeOut(p) {\n return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n ease.config = function (overshoot) {\n return _configBack(type, overshoot);\n };\n\n return ease;\n}; // a cheaper (kb and cpu) but more mild way to get a parameterized weighted ease by feeding in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEase = ratio => {\n// \tlet y = 0.5 + ratio / 2;\n// \treturn p => (2 * (1 - p) * p * y + p * p);\n// },\n// a stronger (but more expensive kb/cpu) parameterized weighted ease that lets you feed in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEaseStrong = ratio => {\n// \tratio = .5 + ratio / 2;\n// \tlet o = 1 / 3 * (ratio < .5 ? ratio : 1 - ratio),\n// \t\tb = ratio - o,\n// \t\tc = ratio + o;\n// \treturn p => p === 1 ? p : 3 * b * (1 - p) * (1 - p) * p + 3 * c * (1 - p) * p * p + p * p * p;\n// };\n\n\n_forEachName(\"Linear,Quad,Cubic,Quart,Quint,Strong\", function (name, i) {\n var power = i < 5 ? i + 1 : i;\n\n _insertEase(name + \",Power\" + (power - 1), i ? function (p) {\n return Math.pow(p, power);\n } : function (p) {\n return p;\n }, function (p) {\n return 1 - Math.pow(1 - p, power);\n }, function (p) {\n return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;\n });\n});\n\n_easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;\n\n_insertEase(\"Elastic\", _configElastic(\"in\"), _configElastic(\"out\"), _configElastic());\n\n(function (n, c) {\n var n1 = 1 / c,\n n2 = 2 * n1,\n n3 = 2.5 * n1,\n easeOut = function easeOut(p) {\n return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;\n };\n\n _insertEase(\"Bounce\", function (p) {\n return 1 - easeOut(1 - p);\n }, easeOut);\n})(7.5625, 2.75);\n\n_insertEase(\"Expo\", function (p) {\n return p ? Math.pow(2, 10 * (p - 1)) : 0;\n});\n\n_insertEase(\"Circ\", function (p) {\n return -(_sqrt(1 - p * p) - 1);\n});\n\n_insertEase(\"Sine\", function (p) {\n return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;\n});\n\n_insertEase(\"Back\", _configBack(\"in\"), _configBack(\"out\"), _configBack());\n\n_easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {\n config: function config(steps, immediateStart) {\n if (steps === void 0) {\n steps = 1;\n }\n\n var p1 = 1 / steps,\n p2 = steps + (immediateStart ? 0 : 1),\n p3 = immediateStart ? 1 : 0,\n max = 1 - _tinyNum;\n return function (p) {\n return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;\n };\n }\n};\n_defaults.ease = _easeMap[\"quad.out\"];\n\n_forEachName(\"onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt\", function (name) {\n return _callbackNames += name + \",\" + name + \"Params,\";\n});\n/*\n * --------------------------------------------------------------------------------------\n * CACHE\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var GSCache = function GSCache(target, harness) {\n this.id = _gsID++;\n target._gsap = this;\n this.target = target;\n this.harness = harness;\n this.get = harness ? harness.get : _getProperty;\n this.set = harness ? harness.getSetter : _getSetter;\n};\n/*\n * --------------------------------------------------------------------------------------\n * ANIMATION\n * --------------------------------------------------------------------------------------\n */\n\nexport var Animation = /*#__PURE__*/function () {\n function Animation(vars) {\n this.vars = vars;\n this._delay = +vars.delay || 0;\n\n if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {\n // TODO: repeat: Infinity on a timeline's children must flag that timeline internally and affect its totalDuration, otherwise it'll stop in the negative direction when reaching the start.\n this._rDelay = vars.repeatDelay || 0;\n this._yoyo = !!vars.yoyo || !!vars.yoyoEase;\n }\n\n this._ts = 1;\n\n _setDuration(this, +vars.duration, 1, 1);\n\n this.data = vars.data;\n\n if (_context) {\n this._ctx = _context;\n\n _context.data.push(this);\n }\n\n _tickerActive || _ticker.wake();\n }\n\n var _proto = Animation.prototype;\n\n _proto.delay = function delay(value) {\n if (value || value === 0) {\n this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);\n this._delay = value;\n return this;\n }\n\n return this._delay;\n };\n\n _proto.duration = function duration(value) {\n return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;\n };\n\n _proto.totalDuration = function totalDuration(value) {\n if (!arguments.length) {\n return this._tDur;\n }\n\n this._dirty = 0;\n return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));\n };\n\n _proto.totalTime = function totalTime(_totalTime, suppressEvents) {\n _wake();\n\n if (!arguments.length) {\n return this._tTime;\n }\n\n var parent = this._dp;\n\n if (parent && parent.smoothChildTiming && this._ts) {\n _alignPlayhead(this, _totalTime);\n\n !parent._dp || parent.parent || _postAddChecks(parent, this); // edge case: if this is a child of a timeline that already completed, for example, we must re-activate the parent.\n //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The start of that child would get pushed out, but one of the ancestors may have completed.\n\n while (parent && parent.parent) {\n if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {\n parent.totalTime(parent._tTime, true);\n }\n\n parent = parent.parent;\n }\n\n if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {\n //if the animation doesn't have a parent, put it back into its last parent (recorded as _dp for exactly cases like this). Limit to parents with autoRemoveChildren (like globalTimeline) so that if the user manually removes an animation from a timeline and then alters its playhead, it doesn't get added back in.\n _addToTimeline(this._dp, this, this._start - this._delay);\n }\n }\n\n if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {\n // check for _ptLookup on a Tween instance to ensure it has actually finished being instantiated, otherwise if this.reverse() gets called in the Animation constructor, it could trigger a render() here even though the _targets weren't populated, thus when _init() is called there won't be any PropTweens (it'll act like the tween is non-functional)\n this._ts || (this._pTime = _totalTime); // otherwise, if an animation is paused, then the playhead is moved back to zero, then resumed, it'd revert back to the original time at the pause\n //if (!this._lock) { // avoid endless recursion (not sure we need this yet or if it's worth the performance hit)\n // this._lock = 1;\n\n _lazySafeRender(this, _totalTime, suppressEvents); // this._lock = 0;\n //}\n\n }\n\n return this;\n };\n\n _proto.time = function time(value, suppressEvents) {\n return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time; // note: if the modulus results in 0, the playhead could be exactly at the end or the beginning, and we always defer to the END with a non-zero value, otherwise if you set the time() to the very end (duration()), it would render at the START!\n };\n\n _proto.totalProgress = function totalProgress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.rawTime() > 0 ? 1 : 0;\n };\n\n _proto.progress = function progress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.rawTime() > 0 ? 1 : 0;\n };\n\n _proto.iteration = function iteration(value, suppressEvents) {\n var cycleDuration = this.duration() + this._rDelay;\n\n return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;\n } // potential future addition:\n // isPlayingBackwards() {\n // \tlet animation = this,\n // \t\torientation = 1; // 1 = forward, -1 = backward\n // \twhile (animation) {\n // \t\torientation *= animation.reversed() || (animation.repeat() && !(animation.iteration() & 1)) ? -1 : 1;\n // \t\tanimation = animation.parent;\n // \t}\n // \treturn orientation < 0;\n // }\n ;\n\n _proto.timeScale = function timeScale(value, suppressEvents) {\n if (!arguments.length) {\n return this._rts === -_tinyNum ? 0 : this._rts; // recorded timeScale. Special case: if someone calls reverse() on an animation with timeScale of 0, we assign it -_tinyNum to remember it's reversed.\n }\n\n if (this._rts === value) {\n return this;\n }\n\n var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; // make sure to do the parentToChildTotalTime() BEFORE setting the new _ts because the old one must be used in that calculation.\n // future addition? Up side: fast and minimal file size. Down side: only works on this animation; if a timeline is reversed, for example, its childrens' onReverse wouldn't get called.\n //(+value < 0 && this._rts >= 0) && _callback(this, \"onReverse\", true);\n // prioritize rendering where the parent's playhead lines up instead of this._tTime because there could be a tween that's animating another tween's timeScale in the same rendering loop (same parent), thus if the timeScale tween renders first, it would alter _start BEFORE _tTime was set on that tick (in the rendering loop), effectively freezing it until the timeScale tween finishes.\n\n this._rts = +value || 0;\n this._ts = this._ps || value === -_tinyNum ? 0 : this._rts; // _ts is the functional timeScale which would be 0 if the animation is paused.\n\n this.totalTime(_clamp(-Math.abs(this._delay), this._tDur, tTime), suppressEvents !== false);\n\n _setEnd(this); // if parent.smoothChildTiming was false, the end time didn't get updated in the _alignPlayhead() method, so do it here.\n\n\n return _recacheAncestors(this);\n };\n\n _proto.paused = function paused(value) {\n if (!arguments.length) {\n return this._ps;\n }\n\n if (this._ps !== value) {\n this._ps = value;\n\n if (value) {\n this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); // if the pause occurs during the delay phase, make sure that's factored in when resuming.\n\n this._ts = this._act = 0; // _ts is the functional timeScale, so a paused tween would effectively have a timeScale of 0. We record the \"real\" timeScale as _rts (recorded time scale)\n } else {\n _wake();\n\n this._ts = this._rts; //only defer to _pTime (pauseTime) if tTime is zero. Remember, someone could pause() an animation, then scrub the playhead and resume(). If the parent doesn't have smoothChildTiming, we render at the rawTime() because the startTime won't get updated.\n\n this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum)); // edge case: animation.progress(1).pause().play() wouldn't render again because the playhead is already at the end, but the call to totalTime() below will add it back to its parent...and not remove it again (since removing only happens upon rendering at a new time). Offsetting the _tTime slightly is done simply to cause the final render in totalTime() that'll pop it off its timeline (if autoRemoveChildren is true, of course). Check to make sure _zTime isn't -_tinyNum to avoid an edge case where the playhead is pushed to the end but INSIDE a tween/callback, the timeline itself is paused thus halting rendering and leaving a few unrendered. When resuming, it wouldn't render those otherwise.\n }\n }\n\n return this;\n };\n\n _proto.startTime = function startTime(value) {\n if (arguments.length) {\n this._start = value;\n var parent = this.parent || this._dp;\n parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);\n return this;\n }\n\n return this._start;\n };\n\n _proto.endTime = function endTime(includeRepeats) {\n return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);\n };\n\n _proto.rawTime = function rawTime(wrapRepeats) {\n var parent = this.parent || this._dp; // _dp = detached parent\n\n return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);\n };\n\n _proto.revert = function revert(config) {\n if (config === void 0) {\n config = _revertConfig;\n }\n\n var prevIsReverting = _reverting;\n _reverting = config;\n\n if (this._initted || this._startAt) {\n this.timeline && this.timeline.revert(config);\n this.totalTime(-0.01, config.suppressEvents);\n }\n\n this.data !== \"nested\" && config.kill !== false && this.kill();\n _reverting = prevIsReverting;\n return this;\n };\n\n _proto.globalTime = function globalTime(rawTime) {\n var animation = this,\n time = arguments.length ? rawTime : animation.rawTime();\n\n while (animation) {\n time = animation._start + time / (Math.abs(animation._ts) || 1);\n animation = animation._dp;\n }\n\n return !this.parent && this._sat ? this._sat.globalTime(rawTime) : time; // the _startAt tweens for .fromTo() and .from() that have immediateRender should always be FIRST in the timeline (important for context.revert()). \"_sat\" stands for _startAtTween, referring to the parent tween that created the _startAt. We must discern if that tween had immediateRender so that we can know whether or not to prioritize it in revert().\n };\n\n _proto.repeat = function repeat(value) {\n if (arguments.length) {\n this._repeat = value === Infinity ? -2 : value;\n return _onUpdateTotalDuration(this);\n }\n\n return this._repeat === -2 ? Infinity : this._repeat;\n };\n\n _proto.repeatDelay = function repeatDelay(value) {\n if (arguments.length) {\n var time = this._time;\n this._rDelay = value;\n\n _onUpdateTotalDuration(this);\n\n return time ? this.time(time) : this;\n }\n\n return this._rDelay;\n };\n\n _proto.yoyo = function yoyo(value) {\n if (arguments.length) {\n this._yoyo = value;\n return this;\n }\n\n return this._yoyo;\n };\n\n _proto.seek = function seek(position, suppressEvents) {\n return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));\n };\n\n _proto.restart = function restart(includeDelay, suppressEvents) {\n return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));\n };\n\n _proto.play = function play(from, suppressEvents) {\n from != null && this.seek(from, suppressEvents);\n return this.reversed(false).paused(false);\n };\n\n _proto.reverse = function reverse(from, suppressEvents) {\n from != null && this.seek(from || this.totalDuration(), suppressEvents);\n return this.reversed(true).paused(false);\n };\n\n _proto.pause = function pause(atTime, suppressEvents) {\n atTime != null && this.seek(atTime, suppressEvents);\n return this.paused(true);\n };\n\n _proto.resume = function resume() {\n return this.paused(false);\n };\n\n _proto.reversed = function reversed(value) {\n if (arguments.length) {\n !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0)); // in case timeScale is zero, reversing would have no effect so we use _tinyNum.\n\n return this;\n }\n\n return this._rts < 0;\n };\n\n _proto.invalidate = function invalidate() {\n this._initted = this._act = 0;\n this._zTime = -_tinyNum;\n return this;\n };\n\n _proto.isActive = function isActive() {\n var parent = this.parent || this._dp,\n start = this._start,\n rawTime;\n return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);\n };\n\n _proto.eventCallback = function eventCallback(type, callback, params) {\n var vars = this.vars;\n\n if (arguments.length > 1) {\n if (!callback) {\n delete vars[type];\n } else {\n vars[type] = callback;\n params && (vars[type + \"Params\"] = params);\n type === \"onUpdate\" && (this._onUpdate = callback);\n }\n\n return this;\n }\n\n return vars[type];\n };\n\n _proto.then = function then(onFulfilled) {\n var self = this;\n return new Promise(function (resolve) {\n var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,\n _resolve = function _resolve() {\n var _then = self.then;\n self.then = null; // temporarily null the then() method to avoid an infinite loop (see https://github.com/greensock/GSAP/issues/322)\n\n _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);\n resolve(f);\n self.then = _then;\n };\n\n if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {\n _resolve();\n } else {\n self._prom = _resolve;\n }\n });\n };\n\n _proto.kill = function kill() {\n _interrupt(this);\n };\n\n return Animation;\n}();\n\n_setDefaults(Animation.prototype, {\n _time: 0,\n _start: 0,\n _end: 0,\n _tTime: 0,\n _tDur: 0,\n _dirty: 0,\n _repeat: 0,\n _yoyo: false,\n parent: null,\n _initted: false,\n _rDelay: 0,\n _ts: 1,\n _dp: 0,\n ratio: 0,\n _zTime: -_tinyNum,\n _prom: 0,\n _ps: false,\n _rts: 1\n});\n/*\n * -------------------------------------------------\n * TIMELINE\n * -------------------------------------------------\n */\n\n\nexport var Timeline = /*#__PURE__*/function (_Animation) {\n _inheritsLoose(Timeline, _Animation);\n\n function Timeline(vars, position) {\n var _this;\n\n if (vars === void 0) {\n vars = {};\n }\n\n _this = _Animation.call(this, vars) || this;\n _this.labels = {};\n _this.smoothChildTiming = !!vars.smoothChildTiming;\n _this.autoRemoveChildren = !!vars.autoRemoveChildren;\n _this._sort = _isNotFalse(vars.sortChildren);\n _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);\n vars.reversed && _this.reverse();\n vars.paused && _this.paused(true);\n vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);\n return _this;\n }\n\n var _proto2 = Timeline.prototype;\n\n _proto2.to = function to(targets, vars, position) {\n _createTweenType(0, arguments, this);\n\n return this;\n };\n\n _proto2.from = function from(targets, vars, position) {\n _createTweenType(1, arguments, this);\n\n return this;\n };\n\n _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {\n _createTweenType(2, arguments, this);\n\n return this;\n };\n\n _proto2.set = function set(targets, vars, position) {\n vars.duration = 0;\n vars.parent = this;\n _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);\n vars.immediateRender = !!vars.immediateRender;\n new Tween(targets, vars, _parsePosition(this, position), 1);\n return this;\n };\n\n _proto2.call = function call(callback, params, position) {\n return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);\n } //ONLY for backward compatibility! Maybe delete?\n ;\n\n _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.duration = duration;\n vars.stagger = vars.stagger || stagger;\n vars.onComplete = onCompleteAll;\n vars.onCompleteParams = onCompleteAllParams;\n vars.parent = this;\n new Tween(targets, vars, _parsePosition(this, position));\n return this;\n };\n\n _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.runBackwards = 1;\n _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);\n return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {\n toVars.startAt = fromVars;\n _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);\n return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._dirty ? this.totalDuration() : this._tDur,\n dur = this._dur,\n tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime),\n // if a paused timeline is resumed (or its _start is updated for another reason...which rounds it), that could result in the playhead shifting a **tiny** amount and a zero-duration child at that spot may get rendered at a different ratio, like its totalTime in render() may be 1e-17 instead of 0, for example.\n crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),\n time,\n child,\n next,\n iteration,\n cycleDuration,\n prevPaused,\n pauseTween,\n timeScale,\n prevStart,\n prevIteration,\n yoyo,\n isYoyo;\n this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur);\n\n if (tTime !== this._tTime || force || crossingStart) {\n if (prevTime !== this._time && dur) {\n //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).\n tTime += this._time - prevTime;\n totalTime += this._time - prevTime;\n }\n\n time = tTime;\n prevStart = this._start;\n timeScale = this._ts;\n prevPaused = !timeScale;\n\n if (crossingStart) {\n dur || (prevTime = this._zTime); //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n (totalTime || !suppressEvents) && (this._zTime = totalTime);\n }\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n yoyo = this._yoyo;\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && totalTime < 0) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === tTime / cycleDuration) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n !prevTime && this._tTime && prevIteration !== iteration && this._tTime - prevIteration * cycleDuration - this._dur <= 0 && (prevIteration = iteration); // edge case - if someone does addPause() at the very beginning of a repeating timeline, that pause is technically at the same spot as the end which causes this._time to get set to 0 when the totalTime would normally place the playhead at the end. See https://gsap.com/forums/topic/23823-closing-nav-animation-not-working-on-ie-and-iphone-6-maybe-other-older-browser/?tab=comments#comment-113005 also, this._tTime - prevIteration * cycleDuration - this._dur <= 0 just checks to make sure it wasn't previously in the \"repeatDelay\" portion\n\n if (yoyo && iteration & 1) {\n time = dur - time;\n isYoyo = 1;\n }\n /*\n make sure children at the end/beginning of the timeline are rendered properly. If, for example,\n a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which\n would get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there\n could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So\n we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must\n ensure that zero-duration tweens at the very beginning or end of the Timeline work.\n */\n\n\n if (iteration !== prevIteration && !this._lock) {\n var rewinding = yoyo && prevIteration & 1,\n doesWrap = rewinding === (yoyo && iteration & 1);\n iteration < prevIteration && (rewinding = !rewinding);\n prevTime = rewinding ? 0 : tTime % dur ? dur : tTime; // if the playhead is landing exactly at the end of an iteration, use that totalTime rather than only the duration, otherwise it'll skip the 2nd render since it's effectively at the same time.\n\n this._lock = 1;\n this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;\n this._tTime = tTime; // if a user gets the iteration() inside the onRepeat, for example, it should be accurate.\n\n !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);\n\n if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {\n // if prevTime is 0 and we render at the very end, _time will be the end, thus won't match. So in this edge case, prevTime won't match _time but that's okay. If it gets killed in the onRepeat, eject as well.\n return this;\n }\n\n dur = this._dur; // in case the duration changed in the onRepeat\n\n tDur = this._tDur;\n\n if (doesWrap) {\n this._lock = 2;\n prevTime = rewinding ? dur : -0.0001;\n this.render(prevTime, true);\n this.vars.repeatRefresh && !isYoyo && this.invalidate();\n }\n\n this._lock = 0;\n\n if (!this._ts && !prevPaused) {\n return this;\n } //in order for yoyoEase to work properly when there's a stagger, we must swap out the ease in each sub-tween.\n\n\n _propagateYoyoEase(this, isYoyo);\n }\n }\n\n if (this._hasPause && !this._forcing && this._lock < 2) {\n pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time));\n\n if (pauseTween) {\n tTime -= time - (time = pauseTween._start);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n this._act = !timeScale; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n if (!this._initted) {\n this._onUpdate = this.vars.onUpdate;\n this._initted = 1;\n this._zTime = totalTime;\n prevTime = 0; // upon init, the playhead should always go forward; someone could invalidate() a completed timeline and then if they restart(), that would make child tweens render in reverse order which could lock in the wrong starting values if they build on each other, like tl.to(obj, {x: 100}).to(obj, {x: 0}).\n }\n\n if (!prevTime && time && !suppressEvents && !iteration) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n return this;\n }\n }\n\n if (time >= prevTime && totalTime >= 0) {\n child = this._first;\n\n while (child) {\n next = child._next;\n\n if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = -_tinyNum); // it didn't finish rendering, so flag zTime as negative so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n } else {\n child = this._last;\n var adjustedTime = totalTime < 0 ? totalTime : time; //when the playhead goes backward beyond the start of this timeline, we must pass that information down to the child animations so that zero-duration tweens know whether to render their starting or ending values.\n\n while (child) {\n next = child._prev;\n\n if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force || _reverting && (child._initted || child._startAt)); // if reverting, we should always force renders of initted tweens (but remember that .fromTo() or .from() may have a _startAt but not _initted yet). If, for example, a .fromTo() tween with a stagger (which creates an internal timeline) gets reverted BEFORE some of its child tweens render for the first time, it may not properly trigger them to revert.\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum); // it didn't finish rendering, so adjust zTime so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n }\n\n if (pauseTween && !suppressEvents) {\n this.pause();\n pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;\n\n if (this._ts) {\n //the callback resumed playback! So since we may have held back the playhead due to where the pause is positioned, go ahead and jump to where it's SUPPOSED to be (if no pause happened).\n this._start = prevStart; //if the pause was at an earlier time and the user resumed in the callback, it could reposition the timeline (changing its startTime), throwing things off slightly, so we make sure the _start doesn't shift.\n\n _setEnd(this);\n\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._onUpdate && !suppressEvents && _callback(this, \"onUpdate\", true);\n if (tTime === tDur && this._tTime >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {\n // remember, a child's callback may alter this timeline's playhead or timeScale which is why we need to add some of these checks.\n (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {\n _callback(this, tTime === tDur && totalTime >= 0 ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto2.add = function add(child, position) {\n var _this2 = this;\n\n _isNumber(position) || (position = _parsePosition(this, position, child));\n\n if (!(child instanceof Animation)) {\n if (_isArray(child)) {\n child.forEach(function (obj) {\n return _this2.add(obj, position);\n });\n return this;\n }\n\n if (_isString(child)) {\n return this.addLabel(child, position);\n }\n\n if (_isFunction(child)) {\n child = Tween.delayedCall(0, child);\n } else {\n return this;\n }\n }\n\n return this !== child ? _addToTimeline(this, child, position) : this; //don't allow a timeline to be added to itself as a child!\n };\n\n _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {\n if (nested === void 0) {\n nested = true;\n }\n\n if (tweens === void 0) {\n tweens = true;\n }\n\n if (timelines === void 0) {\n timelines = true;\n }\n\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = -_bigNum;\n }\n\n var a = [],\n child = this._first;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n if (child instanceof Tween) {\n tweens && a.push(child);\n } else {\n timelines && a.push(child);\n nested && a.push.apply(a, child.getChildren(true, tweens, timelines));\n }\n }\n\n child = child._next;\n }\n\n return a;\n };\n\n _proto2.getById = function getById(id) {\n var animations = this.getChildren(1, 1, 1),\n i = animations.length;\n\n while (i--) {\n if (animations[i].vars.id === id) {\n return animations[i];\n }\n }\n };\n\n _proto2.remove = function remove(child) {\n if (_isString(child)) {\n return this.removeLabel(child);\n }\n\n if (_isFunction(child)) {\n return this.killTweensOf(child);\n }\n\n _removeLinkedListItem(this, child);\n\n if (child === this._recent) {\n this._recent = this._last;\n }\n\n return _uncache(this);\n };\n\n _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {\n if (!arguments.length) {\n return this._tTime;\n }\n\n this._forcing = 1;\n\n if (!this._dp && this._ts) {\n //special case for the global timeline (or any other that has no parent or detached parent).\n this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));\n }\n\n _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);\n\n this._forcing = 0;\n return this;\n };\n\n _proto2.addLabel = function addLabel(label, position) {\n this.labels[label] = _parsePosition(this, position);\n return this;\n };\n\n _proto2.removeLabel = function removeLabel(label) {\n delete this.labels[label];\n return this;\n };\n\n _proto2.addPause = function addPause(position, callback, params) {\n var t = Tween.delayedCall(0, callback || _emptyFunc, params);\n t.data = \"isPause\";\n this._hasPause = 1;\n return _addToTimeline(this, t, _parsePosition(this, position));\n };\n\n _proto2.removePause = function removePause(position) {\n var child = this._first;\n position = _parsePosition(this, position);\n\n while (child) {\n if (child._start === position && child.data === \"isPause\") {\n _removeFromParent(child);\n }\n\n child = child._next;\n }\n };\n\n _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n var tweens = this.getTweensOf(targets, onlyActive),\n i = tweens.length;\n\n while (i--) {\n _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);\n }\n\n return this;\n };\n\n _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {\n var a = [],\n parsedTargets = toArray(targets),\n child = this._first,\n isGlobalTime = _isNumber(onlyActive),\n // a number is interpreted as a global time. If the animation spans\n children;\n\n while (child) {\n if (child instanceof Tween) {\n if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {\n // note: if this is for overwriting, it should only be for tweens that aren't paused and are initted.\n a.push(child);\n }\n } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {\n a.push.apply(a, children);\n }\n\n child = child._next;\n }\n\n return a;\n } // potential future feature - targets() on timelines\n // targets() {\n // \tlet result = [];\n // \tthis.getChildren(true, true, false).forEach(t => result.push(...t.targets()));\n // \treturn result.filter((v, i) => result.indexOf(v) === i);\n // }\n ;\n\n _proto2.tweenTo = function tweenTo(position, vars) {\n vars = vars || {};\n\n var tl = this,\n endTime = _parsePosition(tl, position),\n _vars = vars,\n startAt = _vars.startAt,\n _onStart = _vars.onStart,\n onStartParams = _vars.onStartParams,\n immediateRender = _vars.immediateRender,\n initted,\n tween = Tween.to(tl, _setDefaults({\n ease: vars.ease || \"none\",\n lazy: false,\n immediateRender: false,\n time: endTime,\n overwrite: \"auto\",\n duration: vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,\n onStart: function onStart() {\n tl.pause();\n\n if (!initted) {\n var duration = vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale());\n tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);\n initted = 1;\n }\n\n _onStart && _onStart.apply(tween, onStartParams || []); //in case the user had an onStart in the vars - we don't want to overwrite it.\n }\n }, vars));\n\n return immediateRender ? tween.render(0) : tween;\n };\n\n _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {\n return this.tweenTo(toPosition, _setDefaults({\n startAt: {\n time: _parsePosition(this, fromPosition)\n }\n }, vars));\n };\n\n _proto2.recent = function recent() {\n return this._recent;\n };\n\n _proto2.nextLabel = function nextLabel(afterTime) {\n if (afterTime === void 0) {\n afterTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, afterTime));\n };\n\n _proto2.previousLabel = function previousLabel(beforeTime) {\n if (beforeTime === void 0) {\n beforeTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);\n };\n\n _proto2.currentLabel = function currentLabel(value) {\n return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);\n };\n\n _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = 0;\n }\n\n var child = this._first,\n labels = this.labels,\n p;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n child._start += amount;\n child._end += amount;\n }\n\n child = child._next;\n }\n\n if (adjustLabels) {\n for (p in labels) {\n if (labels[p] >= ignoreBeforeTime) {\n labels[p] += amount;\n }\n }\n }\n\n return _uncache(this);\n };\n\n _proto2.invalidate = function invalidate(soft) {\n var child = this._first;\n this._lock = 0;\n\n while (child) {\n child.invalidate(soft);\n child = child._next;\n }\n\n return _Animation.prototype.invalidate.call(this, soft);\n };\n\n _proto2.clear = function clear(includeLabels) {\n if (includeLabels === void 0) {\n includeLabels = true;\n }\n\n var child = this._first,\n next;\n\n while (child) {\n next = child._next;\n this.remove(child);\n child = next;\n }\n\n this._dp && (this._time = this._tTime = this._pTime = 0);\n includeLabels && (this.labels = {});\n return _uncache(this);\n };\n\n _proto2.totalDuration = function totalDuration(value) {\n var max = 0,\n self = this,\n child = self._last,\n prevStart = _bigNum,\n prev,\n start,\n parent;\n\n if (arguments.length) {\n return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));\n }\n\n if (self._dirty) {\n parent = self.parent;\n\n while (child) {\n prev = child._prev; //record it here in case the tween changes position in the sequence...\n\n child._dirty && child.totalDuration(); //could change the tween._startTime, so make sure the animation's cache is clean before analyzing it.\n\n start = child._start;\n\n if (start > prevStart && self._sort && child._ts && !self._lock) {\n //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence\n self._lock = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add().\n\n _addToTimeline(self, child, start - child._delay, 1)._lock = 0;\n } else {\n prevStart = start;\n }\n\n if (start < 0 && child._ts) {\n //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.\n max -= start;\n\n if (!parent && !self._dp || parent && parent.smoothChildTiming) {\n self._start += start / self._ts;\n self._time -= start;\n self._tTime -= start;\n }\n\n self.shiftChildren(-start, false, -1e999);\n prevStart = 0;\n }\n\n child._end > max && child._ts && (max = child._end);\n child = prev;\n }\n\n _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);\n\n self._dirty = 0;\n }\n\n return self._tDur;\n };\n\n Timeline.updateRoot = function updateRoot(time) {\n if (_globalTimeline._ts) {\n _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));\n\n _lastRenderedFrame = _ticker.frame;\n }\n\n if (_ticker.frame >= _nextGCFrame) {\n _nextGCFrame += _config.autoSleep || 120;\n var child = _globalTimeline._first;\n if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {\n while (child && !child._ts) {\n child = child._next;\n }\n\n child || _ticker.sleep();\n }\n }\n };\n\n return Timeline;\n}(Animation);\n\n_setDefaults(Timeline.prototype, {\n _lock: 0,\n _hasPause: 0,\n _forcing: 0\n});\n\nvar _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {\n //note: we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),\n index = 0,\n matchIndex = 0,\n result,\n startNums,\n color,\n endNum,\n chunk,\n startNum,\n hasRandom,\n a;\n pt.b = start;\n pt.e = end;\n start += \"\"; //ensure values are strings\n\n end += \"\";\n\n if (hasRandom = ~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (stringFilter) {\n a = [start, end];\n stringFilter(a, target, prop); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.\n\n start = a[0];\n end = a[1];\n }\n\n startNums = start.match(_complexStringNumExp) || [];\n\n while (result = _complexStringNumExp.exec(end)) {\n endNum = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\") {\n color = 1;\n }\n\n if (endNum !== startNums[matchIndex++]) {\n startNum = parseFloat(startNums[matchIndex - 1]) || 0; //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: endNum.charAt(1) === \"=\" ? _parseRelative(startNum, endNum) - startNum : parseFloat(endNum) - startNum,\n m: color && color < 4 ? Math.round : 0\n };\n index = _complexStringNumExp.lastIndex;\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n\n pt.fp = funcParam;\n\n if (_relExp.test(end) || hasRandom) {\n pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n }\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n},\n _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam, optional) {\n _isFunction(end) && (end = end(index || 0, target, targets));\n var currentValue = target[prop],\n parsedStart = start !== \"get\" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf(\"set\") || !_isFunction(target[\"get\" + prop.substr(3)]) ? prop : \"get\" + prop.substr(3)](funcParam) : target[prop](),\n setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,\n pt;\n\n if (_isString(end)) {\n if (~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (end.charAt(1) === \"=\") {\n pt = _parseRelative(parsedStart, end) + (getUnit(parsedStart) || 0);\n\n if (pt || pt === 0) {\n // to avoid isNaN, like if someone passes in a value like \"!= whatever\"\n end = pt;\n }\n }\n }\n\n if (!optional || parsedStart !== end || _forceAllPropTweens) {\n if (!isNaN(parsedStart * end) && end !== \"\") {\n // fun fact: any number multiplied by \"\" is evaluated as the number 0!\n pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === \"boolean\" ? _renderBoolean : _renderPlain, 0, setter);\n funcParam && (pt.fp = funcParam);\n modifier && pt.modifier(modifier, this, target);\n return this._pt = pt;\n }\n\n !currentValue && !(prop in target) && _missingPlugin(prop, end);\n return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);\n }\n},\n //creates a copy of the vars object and processes any function-based values (putting the resulting values directly into the copy) as well as strings with \"random()\" in them. It does NOT process relative values.\n_processVars = function _processVars(vars, index, target, targets, tween) {\n _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));\n\n if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {\n return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;\n }\n\n var copy = {},\n p;\n\n for (p in vars) {\n copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);\n }\n\n return copy;\n},\n _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {\n var plugin, pt, ptLookup, i;\n\n if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n if (tween !== _quickTween) {\n ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; //note: we can't use tween._ptLookup[index] because for staggered tweens, the index from the fullTargets array won't match what it is in each individual tween that spawns from the stagger.\n\n i = plugin._props.length;\n\n while (i--) {\n ptLookup[plugin._props[i]] = pt;\n }\n }\n }\n\n return plugin;\n},\n _overwritingTween,\n //store a reference temporarily so we can avoid overwriting itself.\n_forceAllPropTweens,\n _initTween = function _initTween(tween, time, tTime) {\n var vars = tween.vars,\n ease = vars.ease,\n startAt = vars.startAt,\n immediateRender = vars.immediateRender,\n lazy = vars.lazy,\n onUpdate = vars.onUpdate,\n runBackwards = vars.runBackwards,\n yoyoEase = vars.yoyoEase,\n keyframes = vars.keyframes,\n autoRevert = vars.autoRevert,\n dur = tween._dur,\n prevStartAt = tween._startAt,\n targets = tween._targets,\n parent = tween.parent,\n fullTargets = parent && parent.data === \"nested\" ? parent.vars.targets : targets,\n autoOverwrite = tween._overwrite === \"auto\" && !_suppressOverwrites,\n tl = tween.timeline,\n cleanVars,\n i,\n p,\n pt,\n target,\n hasPriority,\n gsData,\n harness,\n plugin,\n ptLookup,\n index,\n harnessVars,\n overwritten;\n tl && (!keyframes || !ease) && (ease = \"none\");\n tween._ease = _parseEase(ease, _defaults.ease);\n tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;\n\n if (yoyoEase && tween._yoyo && !tween._repeat) {\n //there must have been a parent timeline with yoyo:true that is currently in its yoyo phase, so flip the eases.\n yoyoEase = tween._yEase;\n tween._yEase = tween._ease;\n tween._ease = yoyoEase;\n }\n\n tween._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.\n\n if (!tl || keyframes && !vars.stagger) {\n //if there's an internal timeline, skip all the parsing because we passed that task down the chain.\n harness = targets[0] ? _getCache(targets[0]).harness : 0;\n harnessVars = harness && vars[harness.prop]; //someone may need to specify CSS-specific values AND non-CSS values, like if the element has an \"x\" property plus it's a standard DOM element. We allow people to distinguish by wrapping plugin-specific stuff in a css:{} object for example.\n\n cleanVars = _copyExcluding(vars, _reservedProps);\n\n if (prevStartAt) {\n prevStartAt._zTime < 0 && prevStartAt.progress(1); // in case it's a lazy startAt that hasn't rendered yet.\n\n time < 0 && runBackwards && immediateRender && !autoRevert ? prevStartAt.render(-1, true) : prevStartAt.revert(runBackwards && dur ? _revertConfigNoKill : _startAtRevertConfig); // if it's a \"startAt\" (not \"from()\" or runBackwards: true), we only need to do a shallow revert (keep transforms cached in CSSPlugin)\n // don't just _removeFromParent(prevStartAt.render(-1, true)) because that'll leave inline styles. We're creating a new _startAt for \"startAt\" tweens that re-capture things to ensure that if the pre-tween values changed since the tween was created, they're recorded.\n\n prevStartAt._lazy = 0;\n }\n\n if (startAt) {\n _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({\n data: \"isStart\",\n overwrite: false,\n parent: parent,\n immediateRender: true,\n lazy: !prevStartAt && _isNotFalse(lazy),\n startAt: null,\n delay: 0,\n onUpdate: onUpdate && function () {\n return _callback(tween, \"onUpdate\");\n },\n stagger: 0\n }, startAt))); //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, from, to).fromTo(e, to, from);\n\n\n tween._startAt._dp = 0; // don't allow it to get put back into root timeline! Like when revert() is called and totalTime() gets set.\n\n tween._startAt._sat = tween; // used in globalTime(). _sat stands for _startAtTween\n\n time < 0 && (_reverting || !immediateRender && !autoRevert) && tween._startAt.revert(_revertConfigNoKill); // rare edge case, like if a render is forced in the negative direction of a non-initted tween.\n\n if (immediateRender) {\n if (dur && time <= 0 && tTime <= 0) {\n // check tTime here because in the case of a yoyo tween whose playhead gets pushed to the end like tween.progress(1), we should allow it through so that the onComplete gets fired properly.\n time && (tween._zTime = time);\n return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.\n }\n }\n } else if (runBackwards && dur) {\n //from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)\n if (!prevStartAt) {\n time && (immediateRender = false); //in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0\n\n p = _setDefaults({\n overwrite: false,\n data: \"isFromStart\",\n //we tag the tween with as \"isFromStart\" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a \"from()\" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:\"height\", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.\n lazy: immediateRender && !prevStartAt && _isNotFalse(lazy),\n immediateRender: immediateRender,\n //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)\n stagger: 0,\n parent: parent //ensures that nested tweens that had a stagger are handled properly, like gsap.from(\".class\", {y: gsap.utils.wrap([-100,100]), stagger: 0.5})\n\n }, cleanVars);\n harnessVars && (p[harness.prop] = harnessVars); // in case someone does something like .from(..., {css:{}})\n\n _removeFromParent(tween._startAt = Tween.set(targets, p));\n\n tween._startAt._dp = 0; // don't allow it to get put back into root timeline!\n\n tween._startAt._sat = tween; // used in globalTime()\n\n time < 0 && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween._startAt.render(-1, true));\n tween._zTime = time;\n\n if (!immediateRender) {\n _initTween(tween._startAt, _tinyNum, _tinyNum); //ensures that the initial values are recorded\n\n } else if (!time) {\n return;\n }\n }\n }\n\n tween._pt = tween._ptCache = 0;\n lazy = dur && _isNotFalse(lazy) || lazy && !dur;\n\n for (i = 0; i < targets.length; i++) {\n target = targets[i];\n gsData = target._gsap || _harness(targets)[i]._gsap;\n tween._ptLookup[i] = ptLookup = {};\n _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)\n\n index = fullTargets === targets ? i : fullTargets.indexOf(target);\n\n if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n plugin._props.forEach(function (name) {\n ptLookup[name] = pt;\n });\n\n plugin.priority && (hasPriority = 1);\n }\n\n if (!harness || harnessVars) {\n for (p in cleanVars) {\n if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {\n plugin.priority && (hasPriority = 1);\n } else {\n ptLookup[p] = pt = _addPropTween.call(tween, target, p, \"get\", cleanVars[p], index, fullTargets, 0, vars.stringFilter);\n }\n }\n }\n\n tween._op && tween._op[i] && tween.kill(target, tween._op[i]);\n\n if (autoOverwrite && tween._pt) {\n _overwritingTween = tween;\n\n _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time)); // make sure the overwriting doesn't overwrite THIS tween!!!\n\n\n overwritten = !tween.parent;\n _overwritingTween = 0;\n }\n\n tween._pt && lazy && (_lazyLookup[gsData.id] = 1);\n }\n\n hasPriority && _sortPropTweensByPriority(tween);\n tween._onInit && tween._onInit(tween); //plugins like RoundProps must wait until ALL of the PropTweens are instantiated. In the plugin's init() function, it sets the _onInit on the tween instance. May not be pretty/intuitive, but it's fast and keeps file size down.\n }\n\n tween._onUpdate = onUpdate;\n tween._initted = (!tween._op || tween._pt) && !overwritten; // if overwrittenProps resulted in the entire tween being killed, do NOT flag it as initted or else it may render for one tick.\n\n keyframes && time <= 0 && tl.render(_bigNum, true, true); // if there's a 0% keyframe, it'll render in the \"before\" state for any staggered/delayed animations thus when the following tween initializes, it'll use the \"before\" state instead of the \"after\" state as the initial values.\n},\n _updatePropTweens = function _updatePropTweens(tween, property, value, start, startIsRelative, ratio, time, skipRecursion) {\n var ptCache = (tween._pt && tween._ptCache || (tween._ptCache = {}))[property],\n pt,\n rootPT,\n lookup,\n i;\n\n if (!ptCache) {\n ptCache = tween._ptCache[property] = [];\n lookup = tween._ptLookup;\n i = tween._targets.length;\n\n while (i--) {\n pt = lookup[i][property];\n\n if (pt && pt.d && pt.d._pt) {\n // it's a plugin, so find the nested PropTween\n pt = pt.d._pt;\n\n while (pt && pt.p !== property && pt.fp !== property) {\n // \"fp\" is functionParam for things like setting CSS variables which require .setProperty(\"--var-name\", value)\n pt = pt._next;\n }\n }\n\n if (!pt) {\n // there is no PropTween associated with that property, so we must FORCE one to be created and ditch out of this\n // if the tween has other properties that already rendered at new positions, we'd normally have to rewind to put them back like tween.render(0, true) before forcing an _initTween(), but that can create another edge case like tweening a timeline's progress would trigger onUpdates to fire which could move other things around. It's better to just inform users that .resetTo() should ONLY be used for tweens that already have that property. For example, you can't gsap.to(...{ y: 0 }) and then tween.restTo(\"x\", 200) for example.\n _forceAllPropTweens = 1; // otherwise, when we _addPropTween() and it finds no change between the start and end values, it skips creating a PropTween (for efficiency...why tween when there's no difference?) but in this case we NEED that PropTween created so we can edit it.\n\n tween.vars[property] = \"+=0\";\n\n _initTween(tween, time);\n\n _forceAllPropTweens = 0;\n return skipRecursion ? _warn(property + \" not eligible for reset\") : 1; // if someone tries to do a quickTo() on a special property like borderRadius which must get split into 4 different properties, that's not eligible for .resetTo().\n }\n\n ptCache.push(pt);\n }\n }\n\n i = ptCache.length;\n\n while (i--) {\n rootPT = ptCache[i];\n pt = rootPT._pt || rootPT; // complex values may have nested PropTweens. We only accommodate the FIRST value.\n\n pt.s = (start || start === 0) && !startIsRelative ? start : pt.s + (start || 0) + ratio * pt.c;\n pt.c = value - pt.s;\n rootPT.e && (rootPT.e = _round(value) + getUnit(rootPT.e)); // mainly for CSSPlugin (end value)\n\n rootPT.b && (rootPT.b = pt.s + getUnit(rootPT.b)); // (beginning value)\n }\n},\n _addAliasesToVars = function _addAliasesToVars(targets, vars) {\n var harness = targets[0] ? _getCache(targets[0]).harness : 0,\n propertyAliases = harness && harness.aliases,\n copy,\n p,\n i,\n aliases;\n\n if (!propertyAliases) {\n return vars;\n }\n\n copy = _merge({}, vars);\n\n for (p in propertyAliases) {\n if (p in copy) {\n aliases = propertyAliases[p].split(\",\");\n i = aliases.length;\n\n while (i--) {\n copy[aliases[i]] = copy[p];\n }\n }\n }\n\n return copy;\n},\n // parses multiple formats, like {\"0%\": {x: 100}, {\"50%\": {x: -20}} and { x: {\"0%\": 100, \"50%\": -20} }, and an \"ease\" can be set on any object. We populate an \"allProps\" object with an Array for each property, like {x: [{}, {}], y:[{}, {}]} with data for each property tween. The objects have a \"t\" (time), \"v\", (value), and \"e\" (ease) property. This allows us to piece together a timeline later.\n_parseKeyframe = function _parseKeyframe(prop, obj, allProps, easeEach) {\n var ease = obj.ease || easeEach || \"power1.inOut\",\n p,\n a;\n\n if (_isArray(obj)) {\n a = allProps[prop] || (allProps[prop] = []); // t = time (out of 100), v = value, e = ease\n\n obj.forEach(function (value, i) {\n return a.push({\n t: i / (obj.length - 1) * 100,\n v: value,\n e: ease\n });\n });\n } else {\n for (p in obj) {\n a = allProps[p] || (allProps[p] = []);\n p === \"ease\" || a.push({\n t: parseFloat(prop),\n v: obj[p],\n e: ease\n });\n }\n }\n},\n _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {\n return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf(\"random(\") ? _replaceRandom(value) : value;\n},\n _staggerTweenProps = _callbackNames + \"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert\",\n _staggerPropsToSkip = {};\n\n_forEachName(_staggerTweenProps + \",id,stagger,delay,duration,paused,scrollTrigger\", function (name) {\n return _staggerPropsToSkip[name] = 1;\n});\n/*\n * --------------------------------------------------------------------------------------\n * TWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var Tween = /*#__PURE__*/function (_Animation2) {\n _inheritsLoose(Tween, _Animation2);\n\n function Tween(targets, vars, position, skipInherit) {\n var _this3;\n\n if (typeof vars === \"number\") {\n position.duration = vars;\n vars = position;\n position = null;\n }\n\n _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;\n var _this3$vars = _this3.vars,\n duration = _this3$vars.duration,\n delay = _this3$vars.delay,\n immediateRender = _this3$vars.immediateRender,\n stagger = _this3$vars.stagger,\n overwrite = _this3$vars.overwrite,\n keyframes = _this3$vars.keyframes,\n defaults = _this3$vars.defaults,\n scrollTrigger = _this3$vars.scrollTrigger,\n yoyoEase = _this3$vars.yoyoEase,\n parent = vars.parent || _globalTimeline,\n parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : \"length\" in vars) ? [targets] : toArray(targets),\n tl,\n i,\n copy,\n l,\n p,\n curTarget,\n staggerFunc,\n staggerVarsToMerge;\n _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn(\"GSAP target \" + targets + \" not found. https://gsap.com\", !_config.nullTargetWarn) || [];\n _this3._ptLookup = []; //PropTween lookup. An array containing an object for each target, having keys for each tweening property\n\n _this3._overwrite = overwrite;\n\n if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n vars = _this3.vars;\n tl = _this3.timeline = new Timeline({\n data: \"nested\",\n defaults: defaults || {},\n targets: parent && parent.data === \"nested\" ? parent.vars.targets : parsedTargets\n }); // we need to store the targets because for staggers and keyframes, we end up creating an individual tween for each but function-based values need to know the index and the whole Array of targets.\n\n tl.kill();\n tl.parent = tl._dp = _assertThisInitialized(_this3);\n tl._start = 0;\n\n if (stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n l = parsedTargets.length;\n staggerFunc = stagger && distribute(stagger);\n\n if (_isObject(stagger)) {\n //users can pass in callbacks like onStart/onComplete in the stagger object. These should fire with each individual tween.\n for (p in stagger) {\n if (~_staggerTweenProps.indexOf(p)) {\n staggerVarsToMerge || (staggerVarsToMerge = {});\n staggerVarsToMerge[p] = stagger[p];\n }\n }\n }\n\n for (i = 0; i < l; i++) {\n copy = _copyExcluding(vars, _staggerPropsToSkip);\n copy.stagger = 0;\n yoyoEase && (copy.yoyoEase = yoyoEase);\n staggerVarsToMerge && _merge(copy, staggerVarsToMerge);\n curTarget = parsedTargets[i]; //don't just copy duration or delay because if they're a string or function, we'd end up in an infinite loop because _isFuncOrString() would evaluate as true in the child tweens, entering this loop, etc. So we parse the value straight from vars and default to 0.\n\n copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);\n copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;\n\n if (!stagger && l === 1 && copy.delay) {\n // if someone does delay:\"random(1, 5)\", repeat:-1, for example, the delay shouldn't be inside the repeat.\n _this3._delay = delay = copy.delay;\n _this3._start += delay;\n copy.delay = 0;\n }\n\n tl.to(curTarget, copy, staggerFunc ? staggerFunc(i, curTarget, parsedTargets) : 0);\n tl._ease = _easeMap.none;\n }\n\n tl.duration() ? duration = delay = 0 : _this3.timeline = 0; // if the timeline's duration is 0, we don't need a timeline internally!\n } else if (keyframes) {\n _inheritDefaults(_setDefaults(tl.vars.defaults, {\n ease: \"none\"\n }));\n\n tl._ease = _parseEase(keyframes.ease || vars.ease || \"none\");\n var time = 0,\n a,\n kf,\n v;\n\n if (_isArray(keyframes)) {\n keyframes.forEach(function (frame) {\n return tl.to(parsedTargets, frame, \">\");\n });\n tl.duration(); // to ensure tl._dur is cached because we tap into it for performance purposes in the render() method.\n } else {\n copy = {};\n\n for (p in keyframes) {\n p === \"ease\" || p === \"easeEach\" || _parseKeyframe(p, keyframes[p], copy, keyframes.easeEach);\n }\n\n for (p in copy) {\n a = copy[p].sort(function (a, b) {\n return a.t - b.t;\n });\n time = 0;\n\n for (i = 0; i < a.length; i++) {\n kf = a[i];\n v = {\n ease: kf.e,\n duration: (kf.t - (i ? a[i - 1].t : 0)) / 100 * duration\n };\n v[p] = kf.v;\n tl.to(parsedTargets, v, time);\n time += v.duration;\n }\n }\n\n tl.duration() < duration && tl.to({}, {\n duration: duration - tl.duration()\n }); // in case keyframes didn't go to 100%\n }\n }\n\n duration || _this3.duration(duration = tl.duration());\n } else {\n _this3.timeline = 0; //speed optimization, faster lookups (no going up the prototype chain)\n }\n\n if (overwrite === true && !_suppressOverwrites) {\n _overwritingTween = _assertThisInitialized(_this3);\n\n _globalTimeline.killTweensOf(parsedTargets);\n\n _overwritingTween = 0;\n }\n\n _addToTimeline(parent, _assertThisInitialized(_this3), position);\n\n vars.reversed && _this3.reverse();\n vars.paused && _this3.paused(true);\n\n if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== \"nested\") {\n _this3._tTime = -_tinyNum; //forces a render without having to set the render() \"force\" parameter to true because we want to allow lazying by default (using the \"force\" parameter always forces an immediate full render)\n\n _this3.render(Math.max(0, -delay) || 0); //in case delay is negative\n\n }\n\n scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);\n return _this3;\n }\n\n var _proto3 = Tween.prototype;\n\n _proto3.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._tDur,\n dur = this._dur,\n isNegative = totalTime < 0,\n tTime = totalTime > tDur - _tinyNum && !isNegative ? tDur : totalTime < _tinyNum ? 0 : totalTime,\n time,\n pt,\n iteration,\n cycleDuration,\n prevIteration,\n isYoyo,\n ratio,\n timeline,\n yoyoEase;\n\n if (!dur) {\n _renderZeroDurationTween(this, totalTime, suppressEvents, force);\n } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== isNegative) {\n //this senses if we're crossing over the start time, in which case we must record _zTime and force the render, but we do it in this lengthy conditional way for performance reasons (usually we can skip the calculations): this._initted && (this._zTime < 0) !== (totalTime < 0)\n time = tTime;\n timeline = this.timeline;\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && isNegative) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === _roundPrecise(tTime / cycleDuration)) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n isYoyo = this._yoyo && iteration & 1;\n\n if (isYoyo) {\n yoyoEase = this._yEase;\n time = dur - time;\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n\n if (time === prevTime && !force && this._initted && iteration === prevIteration) {\n //could be during the repeatDelay part. No need to render and fire callbacks.\n this._tTime = tTime;\n return this;\n }\n\n if (iteration !== prevIteration) {\n timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo); //repeatRefresh functionality\n\n if (this.vars.repeatRefresh && !isYoyo && !this._lock && this._time !== cycleDuration && this._initted) {\n // this._time will === cycleDuration when we render at EXACTLY the end of an iteration. Without this condition, it'd often do the repeatRefresh render TWICE (again on the very next tick).\n this._lock = force = 1; //force, otherwise if lazy is true, the _attemptInitTween() will return and we'll jump out and get caught bouncing on each tick.\n\n this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0;\n }\n }\n }\n\n if (!this._initted) {\n if (_attemptInitTween(this, isNegative ? totalTime : time, force, suppressEvents, tTime)) {\n this._tTime = 0; // in constructor if immediateRender is true, we set _tTime to -_tinyNum to have the playhead cross the starting point but we can't leave _tTime as a negative number.\n\n return this;\n }\n\n if (prevTime !== this._time && !(force && this.vars.repeatRefresh && iteration !== prevIteration)) {\n // rare edge case - during initialization, an onUpdate in the _startAt (.fromTo()) might force this tween to render at a different spot in which case we should ditch this render() call so that it doesn't revert the values. But we also don't want to dump if we're doing a repeatRefresh render!\n return this;\n }\n\n if (dur !== this._dur) {\n // while initting, a plugin like InertiaPlugin might alter the duration, so rerun from the start to ensure everything renders as it should.\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n\n if (!this._act && this._ts) {\n this._act = 1; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n this._lazy = 0;\n }\n\n this.ratio = ratio = (yoyoEase || this._ease)(time / dur);\n\n if (this._from) {\n this.ratio = ratio = 1 - ratio;\n }\n\n if (time && !prevTime && !suppressEvents && !iteration) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n return this;\n }\n }\n\n pt = this._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n timeline && timeline.render(totalTime < 0 ? totalTime : timeline._dur * timeline._ease(time / this._dur), suppressEvents, force) || this._startAt && (this._zTime = totalTime);\n\n if (this._onUpdate && !suppressEvents) {\n isNegative && _rewindStartAt(this, totalTime, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.\n\n _callback(this, \"onUpdate\");\n }\n\n this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n\n if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {\n isNegative && !this._onUpdate && _rewindStartAt(this, totalTime, true, true);\n (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if we're rendering at exactly a time of 0, as there could be autoRevert values that should get set on the next tick (if the playhead goes backward beyond the startTime, negative totalTime). Don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(isNegative && !prevTime) && (tTime || prevTime || isYoyo)) {\n // if prevTime and tTime are zero, we shouldn't fire the onReverseComplete. This could happen if you gsap.to(... {paused:true}).play();\n _callback(this, tTime === tDur ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto3.targets = function targets() {\n return this._targets;\n };\n\n _proto3.invalidate = function invalidate(soft) {\n // \"soft\" gives us a way to clear out everything EXCEPT the recorded pre-\"from\" portion of from() tweens. Otherwise, for example, if you tween.progress(1).render(0, true true).invalidate(), the \"from\" values would persist and then on the next render, the from() tweens would initialize and the current value would match the \"from\" values, thus animate from the same value to the same value (no animation). We tap into this in ScrollTrigger's refresh() where we must push a tween to completion and then back again but honor its init state in case the tween is dependent on another tween further up on the page.\n (!soft || !this.vars.runBackwards) && (this._startAt = 0);\n this._pt = this._op = this._onUpdate = this._lazy = this.ratio = 0;\n this._ptLookup = [];\n this.timeline && this.timeline.invalidate(soft);\n return _Animation2.prototype.invalidate.call(this, soft);\n };\n\n _proto3.resetTo = function resetTo(property, value, start, startIsRelative, skipRecursion) {\n _tickerActive || _ticker.wake();\n this._ts || this.play();\n var time = Math.min(this._dur, (this._dp._time - this._start) * this._ts),\n ratio;\n this._initted || _initTween(this, time);\n ratio = this._ease(time / this._dur); // don't just get tween.ratio because it may not have rendered yet.\n // possible future addition to allow an object with multiple values to update, like tween.resetTo({x: 100, y: 200}); At this point, it doesn't seem worth the added kb given the fact that most users will likely opt for the convenient gsap.quickTo() way of interacting with this method.\n // if (_isObject(property)) { // performance optimization\n // \tfor (p in property) {\n // \t\tif (_updatePropTweens(this, p, property[p], value ? value[p] : null, start, ratio, time)) {\n // \t\t\treturn this.resetTo(property, value, start, startIsRelative); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n // \t\t}\n // \t}\n // } else {\n\n if (_updatePropTweens(this, property, value, start, startIsRelative, ratio, time, skipRecursion)) {\n return this.resetTo(property, value, start, startIsRelative, 1); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n } //}\n\n\n _alignPlayhead(this, 0);\n\n this.parent || _addLinkedListItem(this._dp, this, \"_first\", \"_last\", this._dp._sort ? \"_start\" : 0);\n return this.render(0);\n };\n\n _proto3.kill = function kill(targets, vars) {\n if (vars === void 0) {\n vars = \"all\";\n }\n\n if (!targets && (!vars || vars === \"all\")) {\n this._lazy = this._pt = 0;\n return this.parent ? _interrupt(this) : this;\n }\n\n if (this.timeline) {\n var tDur = this.timeline.totalDuration();\n this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); // if nothing is left tweening, interrupt.\n\n this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); // if a nested tween is killed that changes the duration, it should affect this tween's duration. We must use the ratio, though, because sometimes the internal timeline is stretched like for keyframes where they don't all add up to whatever the parent tween's duration was set to.\n\n return this;\n }\n\n var parsedTargets = this._targets,\n killingTargets = targets ? toArray(targets) : parsedTargets,\n propTweenLookup = this._ptLookup,\n firstPT = this._pt,\n overwrittenProps,\n curLookup,\n curOverwriteProps,\n props,\n p,\n pt,\n i;\n\n if ((!vars || vars === \"all\") && _arraysMatch(parsedTargets, killingTargets)) {\n vars === \"all\" && (this._pt = 0);\n return _interrupt(this);\n }\n\n overwrittenProps = this._op = this._op || [];\n\n if (vars !== \"all\") {\n //so people can pass in a comma-delimited list of property names\n if (_isString(vars)) {\n p = {};\n\n _forEachName(vars, function (name) {\n return p[name] = 1;\n });\n\n vars = p;\n }\n\n vars = _addAliasesToVars(parsedTargets, vars);\n }\n\n i = parsedTargets.length;\n\n while (i--) {\n if (~killingTargets.indexOf(parsedTargets[i])) {\n curLookup = propTweenLookup[i];\n\n if (vars === \"all\") {\n overwrittenProps[i] = vars;\n props = curLookup;\n curOverwriteProps = {};\n } else {\n curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};\n props = vars;\n }\n\n for (p in props) {\n pt = curLookup && curLookup[p];\n\n if (pt) {\n if (!(\"kill\" in pt.d) || pt.d.kill(p) === true) {\n _removeLinkedListItem(this, pt, \"_pt\");\n }\n\n delete curLookup[p];\n }\n\n if (curOverwriteProps !== \"all\") {\n curOverwriteProps[p] = 1;\n }\n }\n }\n }\n\n this._initted && !this._pt && firstPT && _interrupt(this); //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.\n\n return this;\n };\n\n Tween.to = function to(targets, vars) {\n return new Tween(targets, vars, arguments[2]);\n };\n\n Tween.from = function from(targets, vars) {\n return _createTweenType(1, arguments);\n };\n\n Tween.delayedCall = function delayedCall(delay, callback, params, scope) {\n return new Tween(callback, 0, {\n immediateRender: false,\n lazy: false,\n overwrite: false,\n delay: delay,\n onComplete: callback,\n onReverseComplete: callback,\n onCompleteParams: params,\n onReverseCompleteParams: params,\n callbackScope: scope\n }); // we must use onReverseComplete too for things like timeline.add(() => {...}) which should be triggered in BOTH directions (forward and reverse)\n };\n\n Tween.fromTo = function fromTo(targets, fromVars, toVars) {\n return _createTweenType(2, arguments);\n };\n\n Tween.set = function set(targets, vars) {\n vars.duration = 0;\n vars.repeatDelay || (vars.repeat = 0);\n return new Tween(targets, vars);\n };\n\n Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n return _globalTimeline.killTweensOf(targets, props, onlyActive);\n };\n\n return Tween;\n}(Animation);\n\n_setDefaults(Tween.prototype, {\n _targets: [],\n _lazy: 0,\n _startAt: 0,\n _op: 0,\n _onInit: 0\n}); //add the pertinent timeline methods to Tween instances so that users can chain conveniently and create a timeline automatically. (removed due to concerns that it'd ultimately add to more confusion especially for beginners)\n// _forEachName(\"to,from,fromTo,set,call,add,addLabel,addPause\", name => {\n// \tTween.prototype[name] = function() {\n// \t\tlet tl = new Timeline();\n// \t\treturn _addToTimeline(tl, this)[name].apply(tl, toArray(arguments));\n// \t}\n// });\n//for backward compatibility. Leverage the timeline calls.\n\n\n_forEachName(\"staggerTo,staggerFrom,staggerFromTo\", function (name) {\n Tween[name] = function () {\n var tl = new Timeline(),\n params = _slice.call(arguments, 0);\n\n params.splice(name === \"staggerFromTo\" ? 5 : 4, 0, 0);\n return tl[name].apply(tl, params);\n };\n});\n/*\n * --------------------------------------------------------------------------------------\n * PROPTWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _setterPlain = function _setterPlain(target, property, value) {\n return target[property] = value;\n},\n _setterFunc = function _setterFunc(target, property, value) {\n return target[property](value);\n},\n _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {\n return target[property](data.fp, value);\n},\n _setterAttribute = function _setterAttribute(target, property, value) {\n return target.setAttribute(property, value);\n},\n _getSetter = function _getSetter(target, property) {\n return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;\n},\n _renderPlain = function _renderPlain(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data);\n},\n _renderBoolean = function _renderBoolean(ratio, data) {\n return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);\n},\n _renderComplexString = function _renderComplexString(ratio, data) {\n var pt = data._pt,\n s = \"\";\n\n if (!ratio && data.b) {\n //b = beginning string\n s = data.b;\n } else if (ratio === 1 && data.e) {\n //e = ending string\n s = data.e;\n } else {\n while (pt) {\n s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s; //we use the \"p\" property for the text inbetween (like a suffix). And in the context of a complex string, the modifier (m) is typically just Math.round(), like for RGB colors.\n\n pt = pt._next;\n }\n\n s += data.c; //we use the \"c\" of the PropTween to store the final chunk of non-numeric text.\n }\n\n data.set(data.t, data.p, s, data);\n},\n _renderPropTweens = function _renderPropTweens(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n},\n _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {\n var pt = this._pt,\n next;\n\n while (pt) {\n next = pt._next;\n pt.p === property && pt.modifier(modifier, tween, target);\n pt = next;\n }\n},\n _killPropTweensOf = function _killPropTweensOf(property) {\n var pt = this._pt,\n hasNonDependentRemaining,\n next;\n\n while (pt) {\n next = pt._next;\n\n if (pt.p === property && !pt.op || pt.op === property) {\n _removeLinkedListItem(this, pt, \"_pt\");\n } else if (!pt.dep) {\n hasNonDependentRemaining = 1;\n }\n\n pt = next;\n }\n\n return !hasNonDependentRemaining;\n},\n _setterWithModifier = function _setterWithModifier(target, property, value, data) {\n data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);\n},\n _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {\n var pt = parent._pt,\n next,\n pt2,\n first,\n last; //sorts the PropTween linked list in order of priority because some plugins need to do their work after ALL of the PropTweens were created (like RoundPropsPlugin and ModifiersPlugin)\n\n while (pt) {\n next = pt._next;\n pt2 = first;\n\n while (pt2 && pt2.pr > pt.pr) {\n pt2 = pt2._next;\n }\n\n if (pt._prev = pt2 ? pt2._prev : last) {\n pt._prev._next = pt;\n } else {\n first = pt;\n }\n\n if (pt._next = pt2) {\n pt2._prev = pt;\n } else {\n last = pt;\n }\n\n pt = next;\n }\n\n parent._pt = first;\n}; //PropTween key: t = target, p = prop, r = renderer, d = data, s = start, c = change, op = overwriteProperty (ONLY populated when it's different than p), pr = priority, _next/_prev for the linked list siblings, set = setter, m = modifier, mSet = modifierSetter (the original setter, before a modifier was added)\n\n\nexport var PropTween = /*#__PURE__*/function () {\n function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {\n this.t = target;\n this.s = start;\n this.c = change;\n this.p = prop;\n this.r = renderer || _renderPlain;\n this.d = data || this;\n this.set = setter || _setterPlain;\n this.pr = priority || 0;\n this._next = next;\n\n if (next) {\n next._prev = this;\n }\n }\n\n var _proto4 = PropTween.prototype;\n\n _proto4.modifier = function modifier(func, tween, target) {\n this.mSet = this.mSet || this.set; //in case it was already set (a PropTween can only have one modifier)\n\n this.set = _setterWithModifier;\n this.m = func;\n this.mt = target; //modifier target\n\n this.tween = tween;\n };\n\n return PropTween;\n}(); //Initialization tasks\n\n_forEachName(_callbackNames + \"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger\", function (name) {\n return _reservedProps[name] = 1;\n});\n\n_globals.TweenMax = _globals.TweenLite = Tween;\n_globals.TimelineLite = _globals.TimelineMax = Timeline;\n_globalTimeline = new Timeline({\n sortChildren: false,\n defaults: _defaults,\n autoRemoveChildren: true,\n id: \"root\",\n smoothChildTiming: true\n});\n_config.stringFilter = _colorStringFilter;\n\nvar _media = [],\n _listeners = {},\n _emptyArray = [],\n _lastMediaTime = 0,\n _contextID = 0,\n _dispatch = function _dispatch(type) {\n return (_listeners[type] || _emptyArray).map(function (f) {\n return f();\n });\n},\n _onMediaChange = function _onMediaChange() {\n var time = Date.now(),\n matches = [];\n\n if (time - _lastMediaTime > 2) {\n _dispatch(\"matchMediaInit\");\n\n _media.forEach(function (c) {\n var queries = c.queries,\n conditions = c.conditions,\n match,\n p,\n anyMatch,\n toggled;\n\n for (p in queries) {\n match = _win.matchMedia(queries[p]).matches; // Firefox doesn't update the \"matches\" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate.\n\n match && (anyMatch = 1);\n\n if (match !== conditions[p]) {\n conditions[p] = match;\n toggled = 1;\n }\n }\n\n if (toggled) {\n c.revert();\n anyMatch && matches.push(c);\n }\n });\n\n _dispatch(\"matchMediaRevert\");\n\n matches.forEach(function (c) {\n return c.onMatch(c, function (func) {\n return c.add(null, func);\n });\n });\n _lastMediaTime = time;\n\n _dispatch(\"matchMedia\");\n }\n};\n\nvar Context = /*#__PURE__*/function () {\n function Context(func, scope) {\n this.selector = scope && selector(scope);\n this.data = [];\n this._r = []; // returned/cleanup functions\n\n this.isReverted = false;\n this.id = _contextID++; // to work around issues that frameworks like Vue cause by making things into Proxies which make it impossible to do something like _media.indexOf(this) because \"this\" would no longer refer to the Context instance itself - it'd refer to a Proxy! We needed a way to identify the context uniquely\n\n func && this.add(func);\n }\n\n var _proto5 = Context.prototype;\n\n _proto5.add = function add(name, func, scope) {\n // possible future addition if we need the ability to add() an animation to a context and for whatever reason cannot create that animation inside of a context.add(() => {...}) function.\n // if (name && _isFunction(name.revert)) {\n // \tthis.data.push(name);\n // \treturn (name._ctx = this);\n // }\n if (_isFunction(name)) {\n scope = func;\n func = name;\n name = _isFunction;\n }\n\n var self = this,\n f = function f() {\n var prev = _context,\n prevSelector = self.selector,\n result;\n prev && prev !== self && prev.data.push(self);\n scope && (self.selector = selector(scope));\n _context = self;\n result = func.apply(self, arguments);\n _isFunction(result) && self._r.push(result);\n _context = prev;\n self.selector = prevSelector;\n self.isReverted = false;\n return result;\n };\n\n self.last = f;\n return name === _isFunction ? f(self, function (func) {\n return self.add(null, func);\n }) : name ? self[name] = f : f;\n };\n\n _proto5.ignore = function ignore(func) {\n var prev = _context;\n _context = null;\n func(this);\n _context = prev;\n };\n\n _proto5.getTweens = function getTweens() {\n var a = [];\n this.data.forEach(function (e) {\n return e instanceof Context ? a.push.apply(a, e.getTweens()) : e instanceof Tween && !(e.parent && e.parent.data === \"nested\") && a.push(e);\n });\n return a;\n };\n\n _proto5.clear = function clear() {\n this._r.length = this.data.length = 0;\n };\n\n _proto5.kill = function kill(revert, matchMedia) {\n var _this4 = this;\n\n if (revert) {\n (function () {\n var tweens = _this4.getTweens(),\n i = _this4.data.length,\n t;\n\n while (i--) {\n // Flip plugin tweens are very different in that they should actually be pushed to their end. The plugin replaces the timeline's .revert() method to do exactly that. But we also need to remove any of those nested tweens inside the flip timeline so that they don't get individually reverted.\n t = _this4.data[i];\n\n if (t.data === \"isFlip\") {\n t.revert();\n t.getChildren(true, true, false).forEach(function (tween) {\n return tweens.splice(tweens.indexOf(tween), 1);\n });\n }\n } // save as an object so that we can cache the globalTime for each tween to optimize performance during the sort\n\n\n tweens.map(function (t) {\n return {\n g: t._dur || t._delay || t._sat && !t._sat.vars.immediateRender ? t.globalTime(0) : -Infinity,\n t: t\n };\n }).sort(function (a, b) {\n return b.g - a.g || -Infinity;\n }).forEach(function (o) {\n return o.t.revert(revert);\n }); // note: all of the _startAt tweens should be reverted in reverse order that they were created, and they'll all have the same globalTime (-1) so the \" || -1\" in the sort keeps the order properly.\n\n i = _this4.data.length;\n\n while (i--) {\n // make sure we loop backwards so that, for example, SplitTexts that were created later on the same element get reverted first\n t = _this4.data[i];\n\n if (t instanceof Timeline) {\n if (t.data !== \"nested\") {\n t.scrollTrigger && t.scrollTrigger.revert();\n t.kill(); // don't revert() the timeline because that's duplicating efforts since we already reverted all the tweens\n }\n } else {\n !(t instanceof Tween) && t.revert && t.revert(revert);\n }\n }\n\n _this4._r.forEach(function (f) {\n return f(revert, _this4);\n });\n\n _this4.isReverted = true;\n })();\n } else {\n this.data.forEach(function (e) {\n return e.kill && e.kill();\n });\n }\n\n this.clear();\n\n if (matchMedia) {\n var i = _media.length;\n\n while (i--) {\n // previously, we checked _media.indexOf(this), but some frameworks like Vue enforce Proxy objects that make it impossible to get the proper result that way, so we must use a unique ID number instead.\n _media[i].id === this.id && _media.splice(i, 1);\n }\n }\n };\n\n _proto5.revert = function revert(config) {\n this.kill(config || {});\n };\n\n return Context;\n}();\n\nvar MatchMedia = /*#__PURE__*/function () {\n function MatchMedia(scope) {\n this.contexts = [];\n this.scope = scope;\n _context && _context.data.push(this);\n }\n\n var _proto6 = MatchMedia.prototype;\n\n _proto6.add = function add(conditions, func, scope) {\n _isObject(conditions) || (conditions = {\n matches: conditions\n });\n var context = new Context(0, scope || this.scope),\n cond = context.conditions = {},\n mq,\n p,\n active;\n _context && !context.selector && (context.selector = _context.selector); // in case a context is created inside a context. Like a gsap.matchMedia() that's inside a scoped gsap.context()\n\n this.contexts.push(context);\n func = context.add(\"onMatch\", func);\n context.queries = conditions;\n\n for (p in conditions) {\n if (p === \"all\") {\n active = 1;\n } else {\n mq = _win.matchMedia(conditions[p]);\n\n if (mq) {\n _media.indexOf(context) < 0 && _media.push(context);\n (cond[p] = mq.matches) && (active = 1);\n mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener(\"change\", _onMediaChange);\n }\n }\n }\n\n active && func(context, function (f) {\n return context.add(null, f);\n });\n return this;\n } // refresh() {\n // \tlet time = _lastMediaTime,\n // \t\tmedia = _media;\n // \t_lastMediaTime = -1;\n // \t_media = this.contexts;\n // \t_onMediaChange();\n // \t_lastMediaTime = time;\n // \t_media = media;\n // }\n ;\n\n _proto6.revert = function revert(config) {\n this.kill(config || {});\n };\n\n _proto6.kill = function kill(revert) {\n this.contexts.forEach(function (c) {\n return c.kill(revert, true);\n });\n };\n\n return MatchMedia;\n}();\n/*\n * --------------------------------------------------------------------------------------\n * GSAP\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _gsap = {\n registerPlugin: function registerPlugin() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n args.forEach(function (config) {\n return _createPlugin(config);\n });\n },\n timeline: function timeline(vars) {\n return new Timeline(vars);\n },\n getTweensOf: function getTweensOf(targets, onlyActive) {\n return _globalTimeline.getTweensOf(targets, onlyActive);\n },\n getProperty: function getProperty(target, property, unit, uncache) {\n _isString(target) && (target = toArray(target)[0]); //in case selector text or an array is passed in\n\n var getter = _getCache(target || {}).get,\n format = unit ? _passThrough : _numericIfPossible;\n\n unit === \"native\" && (unit = \"\");\n return !target ? target : !property ? function (property, unit, uncache) {\n return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n },\n quickSetter: function quickSetter(target, property, unit) {\n target = toArray(target);\n\n if (target.length > 1) {\n var setters = target.map(function (t) {\n return gsap.quickSetter(t, property, unit);\n }),\n l = setters.length;\n return function (value) {\n var i = l;\n\n while (i--) {\n setters[i](value);\n }\n };\n }\n\n target = target[0] || {};\n\n var Plugin = _plugins[property],\n cache = _getCache(target),\n p = cache.harness && (cache.harness.aliases || {})[property] || property,\n // in case it's an alias, like \"rotate\" for \"rotation\".\n setter = Plugin ? function (value) {\n var p = new Plugin();\n _quickTween._pt = 0;\n p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);\n p.render(1, p);\n _quickTween._pt && _renderPropTweens(1, _quickTween);\n } : cache.set(target, p);\n\n return Plugin ? setter : function (value) {\n return setter(target, p, unit ? value + unit : value, cache, 1);\n };\n },\n quickTo: function quickTo(target, property, vars) {\n var _merge2;\n\n var tween = gsap.to(target, _merge((_merge2 = {}, _merge2[property] = \"+=0.1\", _merge2.paused = true, _merge2), vars || {})),\n func = function func(value, start, startIsRelative) {\n return tween.resetTo(property, value, start, startIsRelative);\n };\n\n func.tween = tween;\n return func;\n },\n isTweening: function isTweening(targets) {\n return _globalTimeline.getTweensOf(targets, true).length > 0;\n },\n defaults: function defaults(value) {\n value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));\n return _mergeDeep(_defaults, value || {});\n },\n config: function config(value) {\n return _mergeDeep(_config, value || {});\n },\n registerEffect: function registerEffect(_ref3) {\n var name = _ref3.name,\n effect = _ref3.effect,\n plugins = _ref3.plugins,\n defaults = _ref3.defaults,\n extendTimeline = _ref3.extendTimeline;\n (plugins || \"\").split(\",\").forEach(function (pluginName) {\n return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + \" effect requires \" + pluginName + \" plugin.\");\n });\n\n _effects[name] = function (targets, vars, tl) {\n return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);\n };\n\n if (extendTimeline) {\n Timeline.prototype[name] = function (targets, vars, position) {\n return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);\n };\n }\n },\n registerEase: function registerEase(name, ease) {\n _easeMap[name] = _parseEase(ease);\n },\n parseEase: function parseEase(ease, defaultEase) {\n return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;\n },\n getById: function getById(id) {\n return _globalTimeline.getById(id);\n },\n exportRoot: function exportRoot(vars, includeDelayedCalls) {\n if (vars === void 0) {\n vars = {};\n }\n\n var tl = new Timeline(vars),\n child,\n next;\n tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);\n\n _globalTimeline.remove(tl);\n\n tl._dp = 0; //otherwise it'll get re-activated when adding children and be re-introduced into _globalTimeline's linked list (then added to itself).\n\n tl._time = tl._tTime = _globalTimeline._time;\n child = _globalTimeline._first;\n\n while (child) {\n next = child._next;\n\n if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {\n _addToTimeline(tl, child, child._start - child._delay);\n }\n\n child = next;\n }\n\n _addToTimeline(_globalTimeline, tl, 0);\n\n return tl;\n },\n context: function context(func, scope) {\n return func ? new Context(func, scope) : _context;\n },\n matchMedia: function matchMedia(scope) {\n return new MatchMedia(scope);\n },\n matchMediaRefresh: function matchMediaRefresh() {\n return _media.forEach(function (c) {\n var cond = c.conditions,\n found,\n p;\n\n for (p in cond) {\n if (cond[p]) {\n cond[p] = false;\n found = 1;\n }\n }\n\n found && c.revert();\n }) || _onMediaChange();\n },\n addEventListener: function addEventListener(type, callback) {\n var a = _listeners[type] || (_listeners[type] = []);\n ~a.indexOf(callback) || a.push(callback);\n },\n removeEventListener: function removeEventListener(type, callback) {\n var a = _listeners[type],\n i = a && a.indexOf(callback);\n i >= 0 && a.splice(i, 1);\n },\n utils: {\n wrap: wrap,\n wrapYoyo: wrapYoyo,\n distribute: distribute,\n random: random,\n snap: snap,\n normalize: normalize,\n getUnit: getUnit,\n clamp: clamp,\n splitColor: splitColor,\n toArray: toArray,\n selector: selector,\n mapRange: mapRange,\n pipe: pipe,\n unitize: unitize,\n interpolate: interpolate,\n shuffle: shuffle\n },\n install: _install,\n effects: _effects,\n ticker: _ticker,\n updateRoot: Timeline.updateRoot,\n plugins: _plugins,\n globalTimeline: _globalTimeline,\n core: {\n PropTween: PropTween,\n globals: _addGlobal,\n Tween: Tween,\n Timeline: Timeline,\n Animation: Animation,\n getCache: _getCache,\n _removeLinkedListItem: _removeLinkedListItem,\n reverting: function reverting() {\n return _reverting;\n },\n context: function context(toAdd) {\n if (toAdd && _context) {\n _context.data.push(toAdd);\n\n toAdd._ctx = _context;\n }\n\n return _context;\n },\n suppressOverwrites: function suppressOverwrites(value) {\n return _suppressOverwrites = value;\n }\n }\n};\n\n_forEachName(\"to,from,fromTo,delayedCall,set,killTweensOf\", function (name) {\n return _gsap[name] = Tween[name];\n});\n\n_ticker.add(Timeline.updateRoot);\n\n_quickTween = _gsap.to({}, {\n duration: 0\n}); // ---- EXTRA PLUGINS --------------------------------------------------------\n\nvar _getPluginPropTween = function _getPluginPropTween(plugin, prop) {\n var pt = plugin._pt;\n\n while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {\n pt = pt._next;\n }\n\n return pt;\n},\n _addModifiers = function _addModifiers(tween, modifiers) {\n var targets = tween._targets,\n p,\n i,\n pt;\n\n for (p in modifiers) {\n i = targets.length;\n\n while (i--) {\n pt = tween._ptLookup[i][p];\n\n if (pt && (pt = pt.d)) {\n if (pt._pt) {\n // is a plugin\n pt = _getPluginPropTween(pt, p);\n }\n\n pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);\n }\n }\n }\n},\n _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {\n return {\n name: name,\n rawVars: 1,\n //don't pre-process function-based values or \"random()\" strings.\n init: function init(target, vars, tween) {\n tween._onInit = function (tween) {\n var temp, p;\n\n if (_isString(vars)) {\n temp = {};\n\n _forEachName(vars, function (name) {\n return temp[name] = 1;\n }); //if the user passes in a comma-delimited list of property names to roundProps, like \"x,y\", we round to whole numbers.\n\n\n vars = temp;\n }\n\n if (modifier) {\n temp = {};\n\n for (p in vars) {\n temp[p] = modifier(vars[p]);\n }\n\n vars = temp;\n }\n\n _addModifiers(tween, vars);\n };\n }\n };\n}; //register core plugins\n\n\nexport var gsap = _gsap.registerPlugin({\n name: \"attr\",\n init: function init(target, vars, tween, index, targets) {\n var p, pt, v;\n this.tween = tween;\n\n for (p in vars) {\n v = target.getAttribute(p) || \"\";\n pt = this.add(target, \"setAttribute\", (v || 0) + \"\", vars[p], index, targets, 0, 0, p);\n pt.op = p;\n pt.b = v; // record the beginning value so we can revert()\n\n this._props.push(p);\n }\n },\n render: function render(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n _reverting ? pt.set(pt.t, pt.p, pt.b, pt) : pt.r(ratio, pt.d); // if reverting, go back to the original (pt.b)\n\n pt = pt._next;\n }\n }\n}, {\n name: \"endArray\",\n init: function init(target, value) {\n var i = value.length;\n\n while (i--) {\n this.add(target, i, target[i] || 0, value[i], 0, 0, 0, 0, 0, 1);\n }\n }\n}, _buildModifierPlugin(\"roundProps\", _roundModifier), _buildModifierPlugin(\"modifiers\"), _buildModifierPlugin(\"snap\", snap)) || _gsap; //to prevent the core plugins from being dropped via aggressive tree shaking, we must include them in the variable declaration in this way.\n\nTween.version = Timeline.version = gsap.version = \"3.12.5\";\n_coreReady = 1;\n_windowExists() && _wake();\nvar Power0 = _easeMap.Power0,\n Power1 = _easeMap.Power1,\n Power2 = _easeMap.Power2,\n Power3 = _easeMap.Power3,\n Power4 = _easeMap.Power4,\n Linear = _easeMap.Linear,\n Quad = _easeMap.Quad,\n Cubic = _easeMap.Cubic,\n Quart = _easeMap.Quart,\n Quint = _easeMap.Quint,\n Strong = _easeMap.Strong,\n Elastic = _easeMap.Elastic,\n Back = _easeMap.Back,\n SteppedEase = _easeMap.SteppedEase,\n Bounce = _easeMap.Bounce,\n Sine = _easeMap.Sine,\n Expo = _easeMap.Expo,\n Circ = _easeMap.Circ;\nexport { Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };\nexport { Tween as TweenMax, Tween as TweenLite, Timeline as TimelineMax, Timeline as TimelineLite, gsap as default, wrap, wrapYoyo, distribute, random, snap, normalize, getUnit, clamp, splitColor, toArray, selector, mapRange, pipe, unitize, interpolate, shuffle }; //export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.\n\nexport { _getProperty, _numExp, _numWithUnitExp, _isString, _isUndefined, _renderComplexString, _relExp, _setDefaults, _removeLinkedListItem, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _replaceRandom, _checkPlugin, _plugins, _ticker, _config, _roundModifier, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative };","/*!\n * CSSPlugin 3.12.5\n * https://gsap.com\n *\n * Copyright 2008-2024, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { gsap, _getProperty, _numExp, _numWithUnitExp, getUnit, _isString, _isUndefined, _renderComplexString, _relExp, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _checkPlugin, _replaceRandom, _plugins, GSCache, PropTween, _config, _ticker, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative, _setDefaults, _removeLinkedListItem //for the commented-out className feature.\n} from \"./gsap-core.js\";\n\nvar _win,\n _doc,\n _docElement,\n _pluginInitted,\n _tempDiv,\n _tempDivStyler,\n _recentSetterPlugin,\n _reverting,\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _transformProps = {},\n _RAD2DEG = 180 / Math.PI,\n _DEG2RAD = Math.PI / 180,\n _atan2 = Math.atan2,\n _bigNum = 1e8,\n _capsExp = /([A-Z])/g,\n _horizontalExp = /(left|right|width|margin|padding|x)/i,\n _complexExp = /[\\s,\\(]\\S/,\n _propertyAliases = {\n autoAlpha: \"opacity,visibility\",\n scale: \"scaleX,scaleY\",\n alpha: \"opacity\"\n},\n _renderCSSProp = function _renderCSSProp(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {\n return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {\n return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data);\n},\n //if units change, we need a way to render the original unit/value when the tween goes all the way back to the beginning (ratio:0)\n_renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {\n var value = data.s + data.c * ratio;\n data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);\n},\n _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {\n return data.set(data.t, data.p, ratio ? data.e : data.b, data);\n},\n _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {\n return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);\n},\n _setterCSSStyle = function _setterCSSStyle(target, property, value) {\n return target.style[property] = value;\n},\n _setterCSSProp = function _setterCSSProp(target, property, value) {\n return target.style.setProperty(property, value);\n},\n _setterTransform = function _setterTransform(target, property, value) {\n return target._gsap[property] = value;\n},\n _setterScale = function _setterScale(target, property, value) {\n return target._gsap.scaleX = target._gsap.scaleY = value;\n},\n _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache.scaleX = cache.scaleY = value;\n cache.renderTransform(ratio, cache);\n},\n _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache[property] = value;\n cache.renderTransform(ratio, cache);\n},\n _transformProp = \"transform\",\n _transformOriginProp = _transformProp + \"Origin\",\n _saveStyle = function _saveStyle(property, isNotCSS) {\n var _this = this;\n\n var target = this.target,\n style = target.style,\n cache = target._gsap;\n\n if (property in _transformProps && style) {\n this.tfm = this.tfm || {};\n\n if (property !== \"transform\") {\n property = _propertyAliases[property] || property;\n ~property.indexOf(\",\") ? property.split(\",\").forEach(function (a) {\n return _this.tfm[a] = _get(target, a);\n }) : this.tfm[property] = cache.x ? cache[property] : _get(target, property); // note: scale would map to \"scaleX,scaleY\", thus we loop and apply them both.\n\n property === _transformOriginProp && (this.tfm.zOrigin = cache.zOrigin);\n } else {\n return _propertyAliases.transform.split(\",\").forEach(function (p) {\n return _saveStyle.call(_this, p, isNotCSS);\n });\n }\n\n if (this.props.indexOf(_transformProp) >= 0) {\n return;\n }\n\n if (cache.svg) {\n this.svgo = target.getAttribute(\"data-svg-origin\");\n this.props.push(_transformOriginProp, isNotCSS, \"\");\n }\n\n property = _transformProp;\n }\n\n (style || isNotCSS) && this.props.push(property, isNotCSS, style[property]);\n},\n _removeIndependentTransforms = function _removeIndependentTransforms(style) {\n if (style.translate) {\n style.removeProperty(\"translate\");\n style.removeProperty(\"scale\");\n style.removeProperty(\"rotate\");\n }\n},\n _revertStyle = function _revertStyle() {\n var props = this.props,\n target = this.target,\n style = target.style,\n cache = target._gsap,\n i,\n p;\n\n for (i = 0; i < props.length; i += 3) {\n // stored like this: property, isNotCSS, value\n props[i + 1] ? target[props[i]] = props[i + 2] : props[i + 2] ? style[props[i]] = props[i + 2] : style.removeProperty(props[i].substr(0, 2) === \"--\" ? props[i] : props[i].replace(_capsExp, \"-$1\").toLowerCase());\n }\n\n if (this.tfm) {\n for (p in this.tfm) {\n cache[p] = this.tfm[p];\n }\n\n if (cache.svg) {\n cache.renderTransform();\n target.setAttribute(\"data-svg-origin\", this.svgo || \"\");\n }\n\n i = _reverting();\n\n if ((!i || !i.isStart) && !style[_transformProp]) {\n _removeIndependentTransforms(style);\n\n if (cache.zOrigin && style[_transformOriginProp]) {\n style[_transformOriginProp] += \" \" + cache.zOrigin + \"px\"; // since we're uncaching, we must put the zOrigin back into the transformOrigin so that we can pull it out accurately when we parse again. Otherwise, we'd lose the z portion of the origin since we extract it to protect from Safari bugs.\n\n cache.zOrigin = 0;\n cache.renderTransform();\n }\n\n cache.uncache = 1; // if it's a startAt that's being reverted in the _initTween() of the core, we don't need to uncache transforms. This is purely a performance optimization.\n }\n }\n},\n _getStyleSaver = function _getStyleSaver(target, properties) {\n var saver = {\n target: target,\n props: [],\n revert: _revertStyle,\n save: _saveStyle\n };\n target._gsap || gsap.core.getCache(target); // just make sure there's a _gsap cache defined because we read from it in _saveStyle() and it's more efficient to just check it here once.\n\n properties && properties.split(\",\").forEach(function (p) {\n return saver.save(p);\n });\n return saver;\n},\n _supports3D,\n _createElement = function _createElement(type, ns) {\n var e = _doc.createElementNS ? _doc.createElementNS((ns || \"http://www.w3.org/1999/xhtml\").replace(/^https/, \"http\"), type) : _doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making \"style\" inaccessible.\n\n return e && e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://gsap.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).\n},\n _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {\n var cs = getComputedStyle(target);\n return cs[property] || cs.getPropertyValue(property.replace(_capsExp, \"-$1\").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || \"\"; //css variables may not need caps swapped out for dashes and lowercase.\n},\n _prefixes = \"O,Moz,ms,Ms,Webkit\".split(\",\"),\n _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) {\n var e = element || _tempDiv,\n s = e.style,\n i = 5;\n\n if (property in s && !preferPrefix) {\n return property;\n }\n\n property = property.charAt(0).toUpperCase() + property.substr(1);\n\n while (i-- && !(_prefixes[i] + property in s)) {}\n\n return i < 0 ? null : (i === 3 ? \"ms\" : i >= 0 ? _prefixes[i] : \"\") + property;\n},\n _initCore = function _initCore() {\n if (_windowExists() && window.document) {\n _win = window;\n _doc = _win.document;\n _docElement = _doc.documentElement;\n _tempDiv = _createElement(\"div\") || {\n style: {}\n };\n _tempDivStyler = _createElement(\"div\");\n _transformProp = _checkPropPrefix(_transformProp);\n _transformOriginProp = _transformProp + \"Origin\";\n _tempDiv.style.cssText = \"border-width:0;line-height:0;position:absolute;padding:0\"; //make sure to override certain properties that may contaminate measurements, in case the user has overreaching style sheets.\n\n _supports3D = !!_checkPropPrefix(\"perspective\");\n _reverting = gsap.core.reverting;\n _pluginInitted = 1;\n }\n},\n _getBBoxHack = function _getBBoxHack(swapIfPossible) {\n //works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a element and/or . We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).\n var svg = _createElement(\"svg\", this.ownerSVGElement && this.ownerSVGElement.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\"),\n oldParent = this.parentNode,\n oldSibling = this.nextSibling,\n oldCSS = this.style.cssText,\n bbox;\n\n _docElement.appendChild(svg);\n\n svg.appendChild(this);\n this.style.display = \"block\";\n\n if (swapIfPossible) {\n try {\n bbox = this.getBBox();\n this._gsapBBox = this.getBBox; //store the original\n\n this.getBBox = _getBBoxHack;\n } catch (e) {}\n } else if (this._gsapBBox) {\n bbox = this._gsapBBox();\n }\n\n if (oldParent) {\n if (oldSibling) {\n oldParent.insertBefore(this, oldSibling);\n } else {\n oldParent.appendChild(this);\n }\n }\n\n _docElement.removeChild(svg);\n\n this.style.cssText = oldCSS;\n return bbox;\n},\n _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {\n var i = attributesArray.length;\n\n while (i--) {\n if (target.hasAttribute(attributesArray[i])) {\n return target.getAttribute(attributesArray[i]);\n }\n }\n},\n _getBBox = function _getBBox(target) {\n var bounds;\n\n try {\n bounds = target.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a or ). https://bugzilla.mozilla.org/show_bug.cgi?id=612118\n } catch (error) {\n bounds = _getBBoxHack.call(target, true);\n }\n\n bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true)); //some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.\n\n return bounds && !bounds.width && !bounds.x && !bounds.y ? {\n x: +_getAttributeFallbacks(target, [\"x\", \"cx\", \"x1\"]) || 0,\n y: +_getAttributeFallbacks(target, [\"y\", \"cy\", \"y1\"]) || 0,\n width: 0,\n height: 0\n } : bounds;\n},\n _isSVG = function _isSVG(e) {\n return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));\n},\n //reports if the element is an SVG on which getBBox() actually works\n_removeProperty = function _removeProperty(target, property) {\n if (property) {\n var style = target.style,\n first2Chars;\n\n if (property in _transformProps && property !== _transformOriginProp) {\n property = _transformProp;\n }\n\n if (style.removeProperty) {\n first2Chars = property.substr(0, 2);\n\n if (first2Chars === \"ms\" || property.substr(0, 6) === \"webkit\") {\n //Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be \"ms-transform\" instead of \"-ms-transform\" for IE9, for example)\n property = \"-\" + property;\n }\n\n style.removeProperty(first2Chars === \"--\" ? property : property.replace(_capsExp, \"-$1\").toLowerCase());\n } else {\n //note: old versions of IE use \"removeAttribute()\" instead of \"removeProperty()\"\n style.removeAttribute(property);\n }\n }\n},\n _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {\n var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);\n plugin._pt = pt;\n pt.b = beginning;\n pt.e = end;\n\n plugin._props.push(property);\n\n return pt;\n},\n _nonConvertibleUnits = {\n deg: 1,\n rad: 1,\n turn: 1\n},\n _nonStandardLayouts = {\n grid: 1,\n flex: 1\n},\n //takes a single value like 20px and converts it to the unit specified, like \"%\", returning only the numeric amount.\n_convertToUnit = function _convertToUnit(target, property, value, unit) {\n var curValue = parseFloat(value) || 0,\n curUnit = (value + \"\").trim().substr((curValue + \"\").length) || \"px\",\n // some browsers leave extra whitespace at the beginning of CSS variables, hence the need to trim()\n style = _tempDiv.style,\n horizontal = _horizontalExp.test(property),\n isRootSVG = target.tagName.toLowerCase() === \"svg\",\n measureProperty = (isRootSVG ? \"client\" : \"offset\") + (horizontal ? \"Width\" : \"Height\"),\n amount = 100,\n toPixels = unit === \"px\",\n toPercent = unit === \"%\",\n px,\n parent,\n cache,\n isSVG;\n\n if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {\n return curValue;\n }\n\n curUnit !== \"px\" && !toPixels && (curValue = _convertToUnit(target, property, value, \"px\"));\n isSVG = target.getCTM && _isSVG(target);\n\n if ((toPercent || curUnit === \"%\") && (_transformProps[property] || ~property.indexOf(\"adius\"))) {\n px = isSVG ? target.getBBox()[horizontal ? \"width\" : \"height\"] : target[measureProperty];\n return _round(toPercent ? curValue / px * amount : curValue / 100 * px);\n }\n\n style[horizontal ? \"width\" : \"height\"] = amount + (toPixels ? curUnit : unit);\n parent = ~property.indexOf(\"adius\") || unit === \"em\" && target.appendChild && !isRootSVG ? target : target.parentNode;\n\n if (isSVG) {\n parent = (target.ownerSVGElement || {}).parentNode;\n }\n\n if (!parent || parent === _doc || !parent.appendChild) {\n parent = _doc.body;\n }\n\n cache = parent._gsap;\n\n if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time && !cache.uncache) {\n return _round(curValue / cache.width * amount);\n } else {\n if (toPercent && (property === \"height\" || property === \"width\")) {\n // if we're dealing with width/height that's inside a container with padding and/or it's a flexbox/grid container, we must apply it to the target itself rather than the _tempDiv in order to ensure complete accuracy, factoring in the parent's padding.\n var v = target.style[property];\n target.style[property] = amount + unit;\n px = target[measureProperty];\n v ? target.style[property] = v : _removeProperty(target, property);\n } else {\n (toPercent || curUnit === \"%\") && !_nonStandardLayouts[_getComputedProperty(parent, \"display\")] && (style.position = _getComputedProperty(target, \"position\"));\n parent === target && (style.position = \"static\"); // like for borderRadius, if it's a % we must have it relative to the target itself but that may not have position: relative or position: absolute in which case it'd go up the chain until it finds its offsetParent (bad). position: static protects against that.\n\n parent.appendChild(_tempDiv);\n px = _tempDiv[measureProperty];\n parent.removeChild(_tempDiv);\n style.position = \"absolute\";\n }\n\n if (horizontal && toPercent) {\n cache = _getCache(parent);\n cache.time = _ticker.time;\n cache.width = parent[measureProperty];\n }\n }\n\n return _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);\n},\n _get = function _get(target, property, unit, uncache) {\n var value;\n _pluginInitted || _initCore();\n\n if (property in _propertyAliases && property !== \"transform\") {\n property = _propertyAliases[property];\n\n if (~property.indexOf(\",\")) {\n property = property.split(\",\")[0];\n }\n }\n\n if (_transformProps[property] && property !== \"transform\") {\n value = _parseTransform(target, uncache);\n value = property !== \"transformOrigin\" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + \" \" + value.zOrigin + \"px\";\n } else {\n value = target.style[property];\n\n if (!value || value === \"auto\" || uncache || ~(value + \"\").indexOf(\"calc(\")) {\n value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === \"opacity\" ? 1 : 0); // note: some browsers, like Firefox, don't report borderRadius correctly! Instead, it only reports every corner like borderTopLeftRadius\n }\n }\n\n return unit && !~(value + \"\").trim().indexOf(\" \") ? _convertToUnit(target, property, value, unit) + unit : value;\n},\n _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {\n // note: we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n if (!start || start === \"none\") {\n // some browsers like Safari actually PREFER the prefixed property and mis-report the unprefixed value like clipPath (BUG). In other words, even though clipPath exists in the style (\"clipPath\" in target.style) and it's set in the CSS properly (along with -webkit-clip-path), Safari reports clipPath as \"none\" whereas WebkitClipPath reports accurately like \"ellipse(100% 0% at 50% 0%)\", so in this case we must SWITCH to using the prefixed property instead. See https://gsap.com/forums/topic/18310-clippath-doesnt-work-on-ios/\n var p = _checkPropPrefix(prop, target, 1),\n s = p && _getComputedProperty(target, p, 1);\n\n if (s && s !== start) {\n prop = p;\n start = s;\n } else if (prop === \"borderColor\") {\n start = _getComputedProperty(target, \"borderTopColor\"); // Firefox bug: always reports \"borderColor\" as \"\", so we must fall back to borderTopColor. See https://gsap.com/forums/topic/24583-how-to-return-colors-that-i-had-after-reverse/\n }\n }\n\n var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString),\n index = 0,\n matchIndex = 0,\n a,\n result,\n startValues,\n startNum,\n color,\n startValue,\n endValue,\n endNum,\n chunk,\n endUnit,\n startUnit,\n endValues;\n pt.b = start;\n pt.e = end;\n start += \"\"; // ensure values are strings\n\n end += \"\";\n\n if (end === \"auto\") {\n startValue = target.style[prop];\n target.style[prop] = end;\n end = _getComputedProperty(target, prop) || end;\n startValue ? target.style[prop] = startValue : _removeProperty(target, prop);\n }\n\n a = [start, end];\n\n _colorStringFilter(a); // pass an array with the starting and ending values and let the filter do whatever it needs to the values. If colors are found, it returns true and then we must match where the color shows up order-wise because for things like boxShadow, sometimes the browser provides the computed values with the color FIRST, but the user provides it with the color LAST, so flip them if necessary. Same for drop-shadow().\n\n\n start = a[0];\n end = a[1];\n startValues = start.match(_numWithUnitExp) || [];\n endValues = end.match(_numWithUnitExp) || [];\n\n if (endValues.length) {\n while (result = _numWithUnitExp.exec(end)) {\n endValue = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\" || chunk.substr(-5) === \"hsla(\") {\n color = 1;\n }\n\n if (endValue !== (startValue = startValues[matchIndex++] || \"\")) {\n startNum = parseFloat(startValue) || 0;\n startUnit = startValue.substr((startNum + \"\").length);\n endValue.charAt(1) === \"=\" && (endValue = _parseRelative(startNum, endValue) + startUnit);\n endNum = parseFloat(endValue);\n endUnit = endValue.substr((endNum + \"\").length);\n index = _numWithUnitExp.lastIndex - endUnit.length;\n\n if (!endUnit) {\n //if something like \"perspective:300\" is passed in and we must add a unit to the end\n endUnit = endUnit || _config.units[prop] || startUnit;\n\n if (index === end.length) {\n end += endUnit;\n pt.e += endUnit;\n }\n }\n\n if (startUnit !== endUnit) {\n startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;\n } // these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: endNum - startNum,\n m: color && color < 4 || prop === \"zIndex\" ? Math.round : 0\n };\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n } else {\n pt.r = prop === \"display\" && end === \"none\" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;\n }\n\n _relExp.test(end) && (pt.e = 0); //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within another plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n},\n _keywordToPercent = {\n top: \"0%\",\n bottom: \"100%\",\n left: \"0%\",\n right: \"100%\",\n center: \"50%\"\n},\n _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {\n var split = value.split(\" \"),\n x = split[0],\n y = split[1] || \"50%\";\n\n if (x === \"top\" || x === \"bottom\" || y === \"left\" || y === \"right\") {\n //the user provided them in the wrong order, so flip them\n value = x;\n x = y;\n y = value;\n }\n\n split[0] = _keywordToPercent[x] || x;\n split[1] = _keywordToPercent[y] || y;\n return split.join(\" \");\n},\n _renderClearProps = function _renderClearProps(ratio, data) {\n if (data.tween && data.tween._time === data.tween._dur) {\n var target = data.t,\n style = target.style,\n props = data.u,\n cache = target._gsap,\n prop,\n clearTransforms,\n i;\n\n if (props === \"all\" || props === true) {\n style.cssText = \"\";\n clearTransforms = 1;\n } else {\n props = props.split(\",\");\n i = props.length;\n\n while (--i > -1) {\n prop = props[i];\n\n if (_transformProps[prop]) {\n clearTransforms = 1;\n prop = prop === \"transformOrigin\" ? _transformOriginProp : _transformProp;\n }\n\n _removeProperty(target, prop);\n }\n }\n\n if (clearTransforms) {\n _removeProperty(target, _transformProp);\n\n if (cache) {\n cache.svg && target.removeAttribute(\"transform\");\n\n _parseTransform(target, 1); // force all the cached values back to \"normal\"/identity, otherwise if there's another tween that's already set to render transforms on this element, it could display the wrong values.\n\n\n cache.uncache = 1;\n\n _removeIndependentTransforms(style);\n }\n }\n }\n},\n // note: specialProps should return 1 if (and only if) they have a non-zero priority. It indicates we need to sort the linked list.\n_specialProps = {\n clearProps: function clearProps(plugin, target, property, endValue, tween) {\n if (tween.data !== \"isFromStart\") {\n var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);\n pt.u = endValue;\n pt.pr = -10;\n pt.tween = tween;\n\n plugin._props.push(property);\n\n return 1;\n }\n }\n /* className feature (about 0.4kb gzipped).\n , className(plugin, target, property, endValue, tween) {\n \tlet _renderClassName = (ratio, data) => {\n \t\t\tdata.css.render(ratio, data.css);\n \t\t\tif (!ratio || ratio === 1) {\n \t\t\t\tlet inline = data.rmv,\n \t\t\t\t\ttarget = data.t,\n \t\t\t\t\tp;\n \t\t\t\ttarget.setAttribute(\"class\", ratio ? data.e : data.b);\n \t\t\t\tfor (p in inline) {\n \t\t\t\t\t_removeProperty(target, p);\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t_getAllStyles = (target) => {\n \t\t\tlet styles = {},\n \t\t\t\tcomputed = getComputedStyle(target),\n \t\t\t\tp;\n \t\t\tfor (p in computed) {\n \t\t\t\tif (isNaN(p) && p !== \"cssText\" && p !== \"length\") {\n \t\t\t\t\tstyles[p] = computed[p];\n \t\t\t\t}\n \t\t\t}\n \t\t\t_setDefaults(styles, _parseTransform(target, 1));\n \t\t\treturn styles;\n \t\t},\n \t\tstartClassList = target.getAttribute(\"class\"),\n \t\tstyle = target.style,\n \t\tcssText = style.cssText,\n \t\tcache = target._gsap,\n \t\tclassPT = cache.classPT,\n \t\tinlineToRemoveAtEnd = {},\n \t\tdata = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== \"=\") ? endValue : startClassList.replace(new RegExp(\"(?:\\\\s|^)\" + endValue.substr(2) + \"(?![\\\\w-])\"), \"\") + ((endValue.charAt(0) === \"+\") ? \" \" + endValue.substr(2) : \"\")},\n \t\tchangingVars = {},\n \t\tstartVars = _getAllStyles(target),\n \t\ttransformRelated = /(transform|perspective)/i,\n \t\tendVars, p;\n \tif (classPT) {\n \t\tclassPT.r(1, classPT.d);\n \t\t_removeLinkedListItem(classPT.d.plugin, classPT, \"_pt\");\n \t}\n \ttarget.setAttribute(\"class\", data.e);\n \tendVars = _getAllStyles(target, true);\n \ttarget.setAttribute(\"class\", startClassList);\n \tfor (p in endVars) {\n \t\tif (endVars[p] !== startVars[p] && !transformRelated.test(p)) {\n \t\t\tchangingVars[p] = endVars[p];\n \t\t\tif (!style[p] && style[p] !== \"0\") {\n \t\t\t\tinlineToRemoveAtEnd[p] = 1;\n \t\t\t}\n \t\t}\n \t}\n \tcache.classPT = plugin._pt = new PropTween(plugin._pt, target, \"className\", 0, 0, _renderClassName, data, 0, -11);\n \tif (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://gsap.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.\n \t\tstyle.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).\n \t}\n \t_parseTransform(target, true); //to clear the caching of transforms\n \tdata.css = new gsap.plugins.css();\n \tdata.css.init(target, changingVars, tween);\n \tplugin._props.push(...data.css._props);\n \treturn 1;\n }\n */\n\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TRANSFORMS\n * --------------------------------------------------------------------------------------\n */\n_identity2DMatrix = [1, 0, 0, 1, 0, 0],\n _rotationalProperties = {},\n _isNullTransform = function _isNullTransform(value) {\n return value === \"matrix(1, 0, 0, 1, 0, 0)\" || value === \"none\" || !value;\n},\n _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {\n var matrixString = _getComputedProperty(target, _transformProp);\n\n return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);\n},\n _getMatrix = function _getMatrix(target, force2D) {\n var cache = target._gsap || _getCache(target),\n style = target.style,\n matrix = _getComputedTransformMatrixAsArray(target),\n parent,\n nextSibling,\n temp,\n addedToDOM;\n\n if (cache.svg && target.getAttribute(\"transform\")) {\n temp = target.transform.baseVal.consolidate().matrix; //ensures that even complex values like \"translate(50,60) rotate(135,0,0)\" are parsed because it mashes it into a matrix.\n\n matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];\n return matrix.join(\",\") === \"1,0,0,1,0,0\" ? _identity2DMatrix : matrix;\n } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {\n //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n //browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not \"none\". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).\n temp = style.display;\n style.display = \"block\";\n parent = target.parentNode;\n\n if (!parent || !target.offsetParent) {\n // note: in 3.3.0 we switched target.offsetParent to _doc.body.contains(target) to avoid [sometimes unnecessary] MutationObserver calls but that wasn't adequate because there are edge cases where nested position: fixed elements need to get reparented to accurately sense transforms. See https://github.com/greensock/GSAP/issues/388 and https://github.com/greensock/GSAP/issues/375\n addedToDOM = 1; //flag\n\n nextSibling = target.nextElementSibling;\n\n _docElement.appendChild(target); //we must add it to the DOM in order to get values properly\n\n }\n\n matrix = _getComputedTransformMatrixAsArray(target);\n temp ? style.display = temp : _removeProperty(target, \"display\");\n\n if (addedToDOM) {\n nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);\n }\n }\n\n return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;\n},\n _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {\n var cache = target._gsap,\n matrix = matrixArray || _getMatrix(target, true),\n xOriginOld = cache.xOrigin || 0,\n yOriginOld = cache.yOrigin || 0,\n xOffsetOld = cache.xOffset || 0,\n yOffsetOld = cache.yOffset || 0,\n a = matrix[0],\n b = matrix[1],\n c = matrix[2],\n d = matrix[3],\n tx = matrix[4],\n ty = matrix[5],\n originSplit = origin.split(\" \"),\n xOrigin = parseFloat(originSplit[0]) || 0,\n yOrigin = parseFloat(originSplit[1]) || 0,\n bounds,\n determinant,\n x,\n y;\n\n if (!originIsAbsolute) {\n bounds = _getBBox(target);\n xOrigin = bounds.x + (~originSplit[0].indexOf(\"%\") ? xOrigin / 100 * bounds.width : xOrigin);\n yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf(\"%\") ? yOrigin / 100 * bounds.height : yOrigin); // if (!(\"xOrigin\" in cache) && (xOrigin || yOrigin)) { // added in 3.12.3, reverted in 3.12.4; requires more exploration\n // \txOrigin -= bounds.x;\n // \tyOrigin -= bounds.y;\n // }\n } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {\n //if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.\n x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;\n y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;\n xOrigin = x;\n yOrigin = y; // theory: we only had to do this for smoothing and it assumes that the previous one was not originIsAbsolute.\n }\n\n if (smooth || smooth !== false && cache.smooth) {\n tx = xOrigin - xOriginOld;\n ty = yOrigin - yOriginOld;\n cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;\n cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;\n } else {\n cache.xOffset = cache.yOffset = 0;\n }\n\n cache.xOrigin = xOrigin;\n cache.yOrigin = yOrigin;\n cache.smooth = !!smooth;\n cache.origin = origin;\n cache.originIsAbsolute = !!originIsAbsolute;\n target.style[_transformOriginProp] = \"0px 0px\"; //otherwise, if someone sets an origin via CSS, it will likely interfere with the SVG transform attribute ones (because remember, we're baking the origin into the matrix() value).\n\n if (pluginToAddPropTweensTo) {\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOrigin\", xOriginOld, xOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOrigin\", yOriginOld, yOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOffset\", xOffsetOld, cache.xOffset);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOffset\", yOffsetOld, cache.yOffset);\n }\n\n target.setAttribute(\"data-svg-origin\", xOrigin + \" \" + yOrigin);\n},\n _parseTransform = function _parseTransform(target, uncache) {\n var cache = target._gsap || new GSCache(target);\n\n if (\"x\" in cache && !uncache && !cache.uncache) {\n return cache;\n }\n\n var style = target.style,\n invertedScaleX = cache.scaleX < 0,\n px = \"px\",\n deg = \"deg\",\n cs = getComputedStyle(target),\n origin = _getComputedProperty(target, _transformOriginProp) || \"0\",\n x,\n y,\n z,\n scaleX,\n scaleY,\n rotation,\n rotationX,\n rotationY,\n skewX,\n skewY,\n perspective,\n xOrigin,\n yOrigin,\n matrix,\n angle,\n cos,\n sin,\n a,\n b,\n c,\n d,\n a12,\n a22,\n t1,\n t2,\n t3,\n a13,\n a23,\n a33,\n a42,\n a43,\n a32;\n x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;\n scaleX = scaleY = 1;\n cache.svg = !!(target.getCTM && _isSVG(target));\n\n if (cs.translate) {\n // accommodate independent transforms by combining them into normal ones.\n if (cs.translate !== \"none\" || cs.scale !== \"none\" || cs.rotate !== \"none\") {\n style[_transformProp] = (cs.translate !== \"none\" ? \"translate3d(\" + (cs.translate + \" 0 0\").split(\" \").slice(0, 3).join(\", \") + \") \" : \"\") + (cs.rotate !== \"none\" ? \"rotate(\" + cs.rotate + \") \" : \"\") + (cs.scale !== \"none\" ? \"scale(\" + cs.scale.split(\" \").join(\",\") + \") \" : \"\") + (cs[_transformProp] !== \"none\" ? cs[_transformProp] : \"\");\n }\n\n style.scale = style.rotate = style.translate = \"none\";\n }\n\n matrix = _getMatrix(target, cache.svg);\n\n if (cache.svg) {\n if (cache.uncache) {\n // if cache.uncache is true (and maybe if origin is 0,0), we need to set element.style.transformOrigin = (cache.xOrigin - bbox.x) + \"px \" + (cache.yOrigin - bbox.y) + \"px\". Previously we let the data-svg-origin stay instead, but when introducing revert(), it complicated things.\n t2 = target.getBBox();\n origin = cache.xOrigin - t2.x + \"px \" + (cache.yOrigin - t2.y) + \"px\";\n t1 = \"\";\n } else {\n t1 = !uncache && target.getAttribute(\"data-svg-origin\"); // Remember, to work around browser inconsistencies we always force SVG elements' transformOrigin to 0,0 and offset the translation accordingly.\n }\n\n _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);\n }\n\n xOrigin = cache.xOrigin || 0;\n yOrigin = cache.yOrigin || 0;\n\n if (matrix !== _identity2DMatrix) {\n a = matrix[0]; //a11\n\n b = matrix[1]; //a21\n\n c = matrix[2]; //a31\n\n d = matrix[3]; //a41\n\n x = a12 = matrix[4];\n y = a22 = matrix[5]; //2D matrix\n\n if (matrix.length === 6) {\n scaleX = Math.sqrt(a * a + b * b);\n scaleY = Math.sqrt(d * d + c * c);\n rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).\n\n skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;\n skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));\n\n if (cache.svg) {\n x -= xOrigin - (xOrigin * a + yOrigin * c);\n y -= yOrigin - (xOrigin * b + yOrigin * d);\n } //3D matrix\n\n } else {\n a32 = matrix[6];\n a42 = matrix[7];\n a13 = matrix[8];\n a23 = matrix[9];\n a33 = matrix[10];\n a43 = matrix[11];\n x = matrix[12];\n y = matrix[13];\n z = matrix[14];\n angle = _atan2(a32, a33);\n rotationX = angle * _RAD2DEG; //rotationX\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a12 * cos + a13 * sin;\n t2 = a22 * cos + a23 * sin;\n t3 = a32 * cos + a33 * sin;\n a13 = a12 * -sin + a13 * cos;\n a23 = a22 * -sin + a23 * cos;\n a33 = a32 * -sin + a33 * cos;\n a43 = a42 * -sin + a43 * cos;\n a12 = t1;\n a22 = t2;\n a32 = t3;\n } //rotationY\n\n\n angle = _atan2(-c, a33);\n rotationY = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a * cos - a13 * sin;\n t2 = b * cos - a23 * sin;\n t3 = c * cos - a33 * sin;\n a43 = d * sin + a43 * cos;\n a = t1;\n b = t2;\n c = t3;\n } //rotationZ\n\n\n angle = _atan2(b, a);\n rotation = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(angle);\n sin = Math.sin(angle);\n t1 = a * cos + b * sin;\n t2 = a12 * cos + a22 * sin;\n b = b * cos - a * sin;\n a22 = a22 * cos - a12 * sin;\n a = t1;\n a12 = t2;\n }\n\n if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {\n //when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.\n rotationX = rotation = 0;\n rotationY = 180 - rotationY;\n }\n\n scaleX = _round(Math.sqrt(a * a + b * b + c * c));\n scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));\n angle = _atan2(a12, a22);\n skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;\n perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;\n }\n\n if (cache.svg) {\n //sense if there are CSS transforms applied on an SVG element in which case we must overwrite them when rendering. The transform attribute is more reliable cross-browser, but we can't just remove the CSS ones because they may be applied in a CSS rule somewhere (not just inline).\n t1 = target.getAttribute(\"transform\");\n cache.forceCSS = target.setAttribute(\"transform\", \"\") || !_isNullTransform(_getComputedProperty(target, _transformProp));\n t1 && target.setAttribute(\"transform\", t1);\n }\n }\n\n if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {\n if (invertedScaleX) {\n scaleX *= -1;\n skewX += rotation <= 0 ? 180 : -180;\n rotation += rotation <= 0 ? 180 : -180;\n } else {\n scaleY *= -1;\n skewX += skewX <= 0 ? 180 : -180;\n }\n }\n\n uncache = uncache || cache.uncache;\n cache.x = x - ((cache.xPercent = x && (!uncache && cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;\n cache.y = y - ((cache.yPercent = y && (!uncache && cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;\n cache.z = z + px;\n cache.scaleX = _round(scaleX);\n cache.scaleY = _round(scaleY);\n cache.rotation = _round(rotation) + deg;\n cache.rotationX = _round(rotationX) + deg;\n cache.rotationY = _round(rotationY) + deg;\n cache.skewX = skewX + deg;\n cache.skewY = skewY + deg;\n cache.transformPerspective = perspective + px;\n\n if (cache.zOrigin = parseFloat(origin.split(\" \")[2]) || !uncache && cache.zOrigin || 0) {\n style[_transformOriginProp] = _firstTwoOnly(origin);\n }\n\n cache.xOffset = cache.yOffset = 0;\n cache.force3D = _config.force3D;\n cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;\n cache.uncache = 0;\n return cache;\n},\n _firstTwoOnly = function _firstTwoOnly(value) {\n return (value = value.split(\" \"))[0] + \" \" + value[1];\n},\n //for handling transformOrigin values, stripping out the 3rd dimension\n_addPxTranslate = function _addPxTranslate(target, start, value) {\n var unit = getUnit(start);\n return _round(parseFloat(start) + parseFloat(_convertToUnit(target, \"x\", value + \"px\", unit))) + unit;\n},\n _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {\n cache.z = \"0px\";\n cache.rotationY = cache.rotationX = \"0deg\";\n cache.force3D = 0;\n\n _renderCSSTransforms(ratio, cache);\n},\n _zeroDeg = \"0deg\",\n _zeroPx = \"0px\",\n _endParenthesis = \") \",\n _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {\n var _ref = cache || this,\n xPercent = _ref.xPercent,\n yPercent = _ref.yPercent,\n x = _ref.x,\n y = _ref.y,\n z = _ref.z,\n rotation = _ref.rotation,\n rotationY = _ref.rotationY,\n rotationX = _ref.rotationX,\n skewX = _ref.skewX,\n skewY = _ref.skewY,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n transformPerspective = _ref.transformPerspective,\n force3D = _ref.force3D,\n target = _ref.target,\n zOrigin = _ref.zOrigin,\n transforms = \"\",\n use3D = force3D === \"auto\" && ratio && ratio !== 1 || force3D === true; // Safari has a bug that causes it not to render 3D transform-origin values properly, so we force the z origin to 0, record it in the cache, and then do the math here to offset the translate values accordingly (basically do the 3D transform-origin part manually)\n\n\n if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {\n var angle = parseFloat(rotationY) * _DEG2RAD,\n a13 = Math.sin(angle),\n a33 = Math.cos(angle),\n cos;\n\n angle = parseFloat(rotationX) * _DEG2RAD;\n cos = Math.cos(angle);\n x = _addPxTranslate(target, x, a13 * cos * -zOrigin);\n y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);\n z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);\n }\n\n if (transformPerspective !== _zeroPx) {\n transforms += \"perspective(\" + transformPerspective + _endParenthesis;\n }\n\n if (xPercent || yPercent) {\n transforms += \"translate(\" + xPercent + \"%, \" + yPercent + \"%) \";\n }\n\n if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {\n transforms += z !== _zeroPx || use3D ? \"translate3d(\" + x + \", \" + y + \", \" + z + \") \" : \"translate(\" + x + \", \" + y + _endParenthesis;\n }\n\n if (rotation !== _zeroDeg) {\n transforms += \"rotate(\" + rotation + _endParenthesis;\n }\n\n if (rotationY !== _zeroDeg) {\n transforms += \"rotateY(\" + rotationY + _endParenthesis;\n }\n\n if (rotationX !== _zeroDeg) {\n transforms += \"rotateX(\" + rotationX + _endParenthesis;\n }\n\n if (skewX !== _zeroDeg || skewY !== _zeroDeg) {\n transforms += \"skew(\" + skewX + \", \" + skewY + _endParenthesis;\n }\n\n if (scaleX !== 1 || scaleY !== 1) {\n transforms += \"scale(\" + scaleX + \", \" + scaleY + _endParenthesis;\n }\n\n target.style[_transformProp] = transforms || \"translate(0, 0)\";\n},\n _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {\n var _ref2 = cache || this,\n xPercent = _ref2.xPercent,\n yPercent = _ref2.yPercent,\n x = _ref2.x,\n y = _ref2.y,\n rotation = _ref2.rotation,\n skewX = _ref2.skewX,\n skewY = _ref2.skewY,\n scaleX = _ref2.scaleX,\n scaleY = _ref2.scaleY,\n target = _ref2.target,\n xOrigin = _ref2.xOrigin,\n yOrigin = _ref2.yOrigin,\n xOffset = _ref2.xOffset,\n yOffset = _ref2.yOffset,\n forceCSS = _ref2.forceCSS,\n tx = parseFloat(x),\n ty = parseFloat(y),\n a11,\n a21,\n a12,\n a22,\n temp;\n\n rotation = parseFloat(rotation);\n skewX = parseFloat(skewX);\n skewY = parseFloat(skewY);\n\n if (skewY) {\n //for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.\n skewY = parseFloat(skewY);\n skewX += skewY;\n rotation += skewY;\n }\n\n if (rotation || skewX) {\n rotation *= _DEG2RAD;\n skewX *= _DEG2RAD;\n a11 = Math.cos(rotation) * scaleX;\n a21 = Math.sin(rotation) * scaleX;\n a12 = Math.sin(rotation - skewX) * -scaleY;\n a22 = Math.cos(rotation - skewX) * scaleY;\n\n if (skewX) {\n skewY *= _DEG2RAD;\n temp = Math.tan(skewX - skewY);\n temp = Math.sqrt(1 + temp * temp);\n a12 *= temp;\n a22 *= temp;\n\n if (skewY) {\n temp = Math.tan(skewY);\n temp = Math.sqrt(1 + temp * temp);\n a11 *= temp;\n a21 *= temp;\n }\n }\n\n a11 = _round(a11);\n a21 = _round(a21);\n a12 = _round(a12);\n a22 = _round(a22);\n } else {\n a11 = scaleX;\n a22 = scaleY;\n a21 = a12 = 0;\n }\n\n if (tx && !~(x + \"\").indexOf(\"px\") || ty && !~(y + \"\").indexOf(\"px\")) {\n tx = _convertToUnit(target, \"x\", x, \"px\");\n ty = _convertToUnit(target, \"y\", y, \"px\");\n }\n\n if (xOrigin || yOrigin || xOffset || yOffset) {\n tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);\n ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);\n }\n\n if (xPercent || yPercent) {\n //The SVG spec doesn't support percentage-based translation in the \"transform\" attribute, so we merge it into the translation to simulate it.\n temp = target.getBBox();\n tx = _round(tx + xPercent / 100 * temp.width);\n ty = _round(ty + yPercent / 100 * temp.height);\n }\n\n temp = \"matrix(\" + a11 + \",\" + a21 + \",\" + a12 + \",\" + a22 + \",\" + tx + \",\" + ty + \")\";\n target.setAttribute(\"transform\", temp);\n forceCSS && (target.style[_transformProp] = temp); //some browsers prioritize CSS transforms over the transform attribute. When we sense that the user has CSS transforms applied, we must overwrite them this way (otherwise some browser simply won't render the transform attribute changes!)\n},\n _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue) {\n var cap = 360,\n isString = _isString(endValue),\n endNum = parseFloat(endValue) * (isString && ~endValue.indexOf(\"rad\") ? _RAD2DEG : 1),\n change = endNum - startNum,\n finalValue = startNum + change + \"deg\",\n direction,\n pt;\n\n if (isString) {\n direction = endValue.split(\"_\")[1];\n\n if (direction === \"short\") {\n change %= cap;\n\n if (change !== change % (cap / 2)) {\n change += change < 0 ? cap : -cap;\n }\n }\n\n if (direction === \"cw\" && change < 0) {\n change = (change + cap * _bigNum) % cap - ~~(change / cap) * cap;\n } else if (direction === \"ccw\" && change > 0) {\n change = (change - cap * _bigNum) % cap - ~~(change / cap) * cap;\n }\n }\n\n plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);\n pt.e = finalValue;\n pt.u = \"deg\";\n\n plugin._props.push(property);\n\n return pt;\n},\n _assign = function _assign(target, source) {\n // Internet Explorer doesn't have Object.assign(), so we recreate it here.\n for (var p in source) {\n target[p] = source[p];\n }\n\n return target;\n},\n _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {\n //for handling cases where someone passes in a whole transform string, like transform: \"scale(2, 3) rotate(20deg) translateY(30em)\"\n var startCache = _assign({}, target._gsap),\n exclude = \"perspective,force3D,transformOrigin,svgOrigin\",\n style = target.style,\n endCache,\n p,\n startValue,\n endValue,\n startNum,\n endNum,\n startUnit,\n endUnit;\n\n if (startCache.svg) {\n startValue = target.getAttribute(\"transform\");\n target.setAttribute(\"transform\", \"\");\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n\n _removeProperty(target, _transformProp);\n\n target.setAttribute(\"transform\", startValue);\n } else {\n startValue = getComputedStyle(target)[_transformProp];\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n style[_transformProp] = startValue;\n }\n\n for (p in _transformProps) {\n startValue = startCache[p];\n endValue = endCache[p];\n\n if (startValue !== endValue && exclude.indexOf(p) < 0) {\n //tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);\n endNum = parseFloat(endValue);\n plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);\n plugin._pt.u = endUnit || 0;\n\n plugin._props.push(p);\n }\n }\n\n _assign(endCache, startCache);\n}; // handle splitting apart padding, margin, borderWidth, and borderRadius into their 4 components. Firefox, for example, won't report borderRadius correctly - it will only do borderTopLeftRadius and the other corners. We also want to handle paddingTop, marginLeft, borderRightWidth, etc.\n\n\n_forEachName(\"padding,margin,Width,Radius\", function (name, index) {\n var t = \"Top\",\n r = \"Right\",\n b = \"Bottom\",\n l = \"Left\",\n props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {\n return index < 2 ? name + side : \"border\" + side + name;\n });\n\n _specialProps[index > 1 ? \"border\" + name : name] = function (plugin, target, property, endValue, tween) {\n var a, vars;\n\n if (arguments.length < 4) {\n // getter, passed target, property, and unit (from _get())\n a = props.map(function (prop) {\n return _get(plugin, prop, property);\n });\n vars = a.join(\" \");\n return vars.split(a[0]).length === 5 ? a[0] : vars;\n }\n\n a = (endValue + \"\").split(\" \");\n vars = {};\n props.forEach(function (prop, i) {\n return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];\n });\n plugin.init(target, vars, tween);\n };\n});\n\nexport var CSSPlugin = {\n name: \"css\",\n register: _initCore,\n targetTest: function targetTest(target) {\n return target.style && target.nodeType;\n },\n init: function init(target, vars, tween, index, targets) {\n var props = this._props,\n style = target.style,\n startAt = tween.vars.startAt,\n startValue,\n endValue,\n endNum,\n startNum,\n type,\n specialProp,\n p,\n startUnit,\n endUnit,\n relative,\n isTransformRelated,\n transformPropTween,\n cache,\n smooth,\n hasPriority,\n inlineProps;\n _pluginInitted || _initCore(); // we may call init() multiple times on the same plugin instance, like when adding special properties, so make sure we don't overwrite the revert data or inlineProps\n\n this.styles = this.styles || _getStyleSaver(target);\n inlineProps = this.styles.props;\n this.tween = tween;\n\n for (p in vars) {\n if (p === \"autoRound\") {\n continue;\n }\n\n endValue = vars[p];\n\n if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {\n // plugins\n continue;\n }\n\n type = typeof endValue;\n specialProp = _specialProps[p];\n\n if (type === \"function\") {\n endValue = endValue.call(tween, index, target, targets);\n type = typeof endValue;\n }\n\n if (type === \"string\" && ~endValue.indexOf(\"random(\")) {\n endValue = _replaceRandom(endValue);\n }\n\n if (specialProp) {\n specialProp(this, target, p, endValue, tween) && (hasPriority = 1);\n } else if (p.substr(0, 2) === \"--\") {\n //CSS variable\n startValue = (getComputedStyle(target).getPropertyValue(p) + \"\").trim();\n endValue += \"\";\n _colorExp.lastIndex = 0;\n\n if (!_colorExp.test(startValue)) {\n // colors don't have units\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n }\n\n endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);\n this.add(style, \"setProperty\", startValue, endValue, index, targets, 0, 0, p);\n props.push(p);\n inlineProps.push(p, 0, style[p]);\n } else if (type !== \"undefined\") {\n if (startAt && p in startAt) {\n // in case someone hard-codes a complex value as the start, like top: \"calc(2vh / 2)\". Without this, it'd use the computed value (always in px)\n startValue = typeof startAt[p] === \"function\" ? startAt[p].call(tween, index, target, targets) : startAt[p];\n _isString(startValue) && ~startValue.indexOf(\"random(\") && (startValue = _replaceRandom(startValue));\n getUnit(startValue + \"\") || startValue === \"auto\" || (startValue += _config.units[p] || getUnit(_get(target, p)) || \"\"); // for cases when someone passes in a unitless value like {x: 100}; if we try setting translate(100, 0px) it won't work.\n\n (startValue + \"\").charAt(1) === \"=\" && (startValue = _get(target, p)); // can't work with relative values\n } else {\n startValue = _get(target, p);\n }\n\n startNum = parseFloat(startValue);\n relative = type === \"string\" && endValue.charAt(1) === \"=\" && endValue.substr(0, 2);\n relative && (endValue = endValue.substr(2));\n endNum = parseFloat(endValue);\n\n if (p in _propertyAliases) {\n if (p === \"autoAlpha\") {\n //special case where we control the visibility along with opacity. We still allow the opacity value to pass through and get tweened.\n if (startNum === 1 && _get(target, \"visibility\") === \"hidden\" && endNum) {\n //if visibility is initially set to \"hidden\", we should interpret that as intent to make opacity 0 (a convenience)\n startNum = 0;\n }\n\n inlineProps.push(\"visibility\", 0, style.visibility);\n\n _addNonTweeningPT(this, style, \"visibility\", startNum ? \"inherit\" : \"hidden\", endNum ? \"inherit\" : \"hidden\", !endNum);\n }\n\n if (p !== \"scale\" && p !== \"transform\") {\n p = _propertyAliases[p];\n ~p.indexOf(\",\") && (p = p.split(\",\")[0]);\n }\n }\n\n isTransformRelated = p in _transformProps; //--- TRANSFORM-RELATED ---\n\n if (isTransformRelated) {\n this.styles.save(p);\n\n if (!transformPropTween) {\n cache = target._gsap;\n cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform); // if, for example, gsap.set(... {transform:\"translateX(50vw)\"}), the _get() call doesn't parse the transform, thus cache.renderTransform won't be set yet so force the parsing of the transform here.\n\n smooth = vars.smoothOrigin !== false && cache.smooth;\n transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); //the first time through, create the rendering PropTween so that it runs LAST (in the linked list, we keep adding to the beginning)\n\n transformPropTween.dep = 1; //flag it as dependent so that if things get killed/overwritten and this is the only PropTween left, we can safely kill the whole tween.\n }\n\n if (p === \"scale\") {\n this._pt = new PropTween(this._pt, cache, \"scaleY\", cache.scaleY, (relative ? _parseRelative(cache.scaleY, relative + endNum) : endNum) - cache.scaleY || 0, _renderCSSProp);\n this._pt.u = 0;\n props.push(\"scaleY\", p);\n p += \"X\";\n } else if (p === \"transformOrigin\") {\n inlineProps.push(_transformOriginProp, 0, style[_transformOriginProp]);\n endValue = _convertKeywordsToPercentages(endValue); //in case something like \"left top\" or \"bottom right\" is passed in. Convert to percentages.\n\n if (cache.svg) {\n _applySVGOrigin(target, endValue, 0, smooth, 0, this);\n } else {\n endUnit = parseFloat(endValue.split(\" \")[2]) || 0; //handle the zOrigin separately!\n\n endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, \"zOrigin\", cache.zOrigin, endUnit);\n\n _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));\n }\n\n continue;\n } else if (p === \"svgOrigin\") {\n _applySVGOrigin(target, endValue, 1, smooth, 0, this);\n\n continue;\n } else if (p in _rotationalProperties) {\n _addRotationalPropTween(this, cache, p, startNum, relative ? _parseRelative(startNum, relative + endValue) : endValue);\n\n continue;\n } else if (p === \"smoothOrigin\") {\n _addNonTweeningPT(this, cache, \"smooth\", cache.smooth, endValue);\n\n continue;\n } else if (p === \"force3D\") {\n cache[p] = endValue;\n continue;\n } else if (p === \"transform\") {\n _addRawTransformPTs(this, endValue, target);\n\n continue;\n }\n } else if (!(p in style)) {\n p = _checkPropPrefix(p) || p;\n }\n\n if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {\n startUnit = (startValue + \"\").substr((startNum + \"\").length);\n endNum || (endNum = 0); // protect against NaN\n\n endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit);\n startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));\n this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, (relative ? _parseRelative(startNum, relative + endNum) : endNum) - startNum, !isTransformRelated && (endUnit === \"px\" || p === \"zIndex\") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp);\n this._pt.u = endUnit || 0;\n\n if (startUnit !== endUnit && endUnit !== \"%\") {\n //when the tween goes all the way back to the beginning, we need to revert it to the OLD/ORIGINAL value (with those units). We record that as a \"b\" (beginning) property and point to a render method that handles that. (performance optimization)\n this._pt.b = startValue;\n this._pt.r = _renderCSSPropWithBeginning;\n }\n } else if (!(p in style)) {\n if (p in target) {\n //maybe it's not a style - it could be a property added directly to an element in which case we'll try to animate that.\n this.add(target, p, startValue || target[p], relative ? relative + endValue : endValue, index, targets);\n } else if (p !== \"parseTransform\") {\n _missingPlugin(p, endValue);\n\n continue;\n }\n } else {\n _tweenComplexCSSString.call(this, target, p, startValue, relative ? relative + endValue : endValue);\n }\n\n isTransformRelated || (p in style ? inlineProps.push(p, 0, style[p]) : inlineProps.push(p, 1, startValue || target[p]));\n props.push(p);\n }\n }\n\n hasPriority && _sortPropTweensByPriority(this);\n },\n render: function render(ratio, data) {\n if (data.tween._time || !_reverting()) {\n var pt = data._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n } else {\n data.styles.revert();\n }\n },\n get: _get,\n aliases: _propertyAliases,\n getSetter: function getSetter(target, property, plugin) {\n //returns a setter function that accepts target, property, value and applies it accordingly. Remember, properties like \"x\" aren't as simple as target.style.property = value because they've got to be applied to a proxy object and then merged into a transform string in a renderer.\n var p = _propertyAliases[property];\n p && p.indexOf(\",\") < 0 && (property = p);\n return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, \"x\")) ? plugin && _recentSetterPlugin === plugin ? property === \"scale\" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === \"scale\" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf(\"-\") ? _setterCSSProp : _getSetter(target, property);\n },\n core: {\n _removeProperty: _removeProperty,\n _getMatrix: _getMatrix\n }\n};\ngsap.utils.checkPrefix = _checkPropPrefix;\ngsap.core.getStyleSaver = _getStyleSaver;\n\n(function (positionAndScale, rotation, others, aliases) {\n var all = _forEachName(positionAndScale + \",\" + rotation + \",\" + others, function (name) {\n _transformProps[name] = 1;\n });\n\n _forEachName(rotation, function (name) {\n _config.units[name] = \"deg\";\n _rotationalProperties[name] = 1;\n });\n\n _propertyAliases[all[13]] = positionAndScale + \",\" + rotation;\n\n _forEachName(aliases, function (name) {\n var split = name.split(\":\");\n _propertyAliases[split[1]] = all[split[0]];\n });\n})(\"x,y,z,scale,scaleX,scaleY,xPercent,yPercent\", \"rotation,rotationX,rotationY,skewX,skewY\", \"transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective\", \"0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY\");\n\n_forEachName(\"x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective\", function (name) {\n _config.units[name] = \"px\";\n});\n\ngsap.registerPlugin(CSSPlugin);\nexport { CSSPlugin as default, _getBBox, _createElement, _checkPropPrefix as checkPrefix };","import { gsap, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ, TweenLite, TimelineLite, TimelineMax } from \"./gsap-core.js\";\nimport { CSSPlugin } from \"./CSSPlugin.js\";\nvar gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap,\n // to protect from tree shaking\nTweenMaxWithCSS = gsapWithCSS.core.Tween;\nexport { gsapWithCSS as gsap, gsapWithCSS as default, CSSPlugin, TweenMaxWithCSS as TweenMax, TweenLite, TimelineMax, TimelineLite, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };","\r\nexport default class ScoreManager\r\n{\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private static _instance: ScoreManager = new ScoreManager();\r\n\r\n private _attempts:number;\r\n private _correct:number;\r\n private _incorrect:number;\r\n private _possible:number;\r\n private _score:number;\r\n private _time:number;\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public get attempts():number\r\n {\r\n return this._attempts;\r\n }\r\n\r\n public set attempts(value:number)\r\n {\r\n this._attempts = value;\r\n }\r\n\r\n public get correct():number\r\n {\r\n return this._correct;\r\n }\r\n\r\n public set correct(value:number)\r\n {\r\n this._correct = value;\r\n }\r\n\r\n public get incorrect():number\r\n {\r\n return this._incorrect;\r\n }\r\n\r\n public set incorrect(value:number)\r\n {\r\n this._incorrect = value;\r\n }\r\n\r\n public get possible():number\r\n {\r\n return this._possible;\r\n }\r\n\r\n public set possible(value:number)\r\n {\r\n this._possible = value;\r\n }\r\n\r\n public get score():number\r\n {\r\n this._score = Math.round((this._correct / this._possible) * 100);\r\n return this._score;\r\n }\r\n\r\n public get time():number\r\n {\r\n return this._time;\r\n }\r\n\r\n public set time(value:number)\r\n {\r\n this._time = value;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Constructor\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n constructor()\r\n {\r\n this._init();\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private _init():void\r\n {\r\n this._attempts = 0;\r\n this._correct = 0;\r\n this._incorrect = 0;\r\n this._possible = 0;\r\n this._score = 0;\r\n this._time = 0;\r\n }\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public static getInstance():ScoreManager\r\n {\r\n return this._instance;\r\n }\r\n\r\n public reset():void\r\n {\r\n this._init();\r\n }\r\n\r\n}","import {CompleteCallback, sound, Sound} from \"@pixi/sound\";\r\nimport {gsap} from \"gsap\";\r\nimport ConjugationModel from \"../models/ConjugationModel.ts\";\r\n\r\nexport default class SoundManager\r\n{\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private static _instance: SoundManager = new SoundManager();\r\n\r\n private appModel:ConjugationModel = ConjugationModel.getInstance();\r\n private playingSounds:any = {};\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Constructor\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n private constructor()\r\n {\r\n if(SoundManager._instance)\r\n {\r\n throw new Error(\"Error: Instantiation failed: Use SoundManager.getInstance() instead of new.\");\r\n }\r\n SoundManager._instance = this;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private onFadeAudioComplete = (id:string):void =>\r\n {\r\n const audio = this.playingSounds[id] as Sound;\r\n if(audio.volume == 0)\r\n {\r\n audio.stop();\r\n }\r\n }\r\n\r\n private onPlayAudioComplete = ():void =>\r\n {\r\n console.log(\"onPlayAudioComplete\");\r\n }\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public static getInstance():SoundManager\r\n {\r\n return SoundManager._instance;\r\n }\r\n\r\n public fadeAudio(id:string, startVolume=0, endVolume=1, duration=2, play=true, loop=true):void\r\n {\r\n let audio:Sound;\r\n if(this.playingSounds[id])\r\n {\r\n audio = this.playingSounds[id] as Sound;\r\n if(startVolume == null)\r\n {\r\n startVolume = audio.volume;\r\n }\r\n }\r\n else\r\n {\r\n audio = this.appModel.assets[id] as Sound;\r\n this.playingSounds[id] = audio;\r\n }\r\n audio.volume = startVolume;\r\n audio.loop = loop;\r\n if(play && !audio.isPlaying)\r\n {\r\n audio.play();\r\n }\r\n gsap.to(audio, { volume:endVolume, duration:duration, onComplete:this.onFadeAudioComplete, onCompleteParams:[id]});\r\n }\r\n\r\n public playAudio(id:string, callback?:CompleteCallback):void\r\n {\r\n const audio = this.appModel.assets[id] as Sound;\r\n if(callback)\r\n {\r\n sound.play(id, {complete:callback});\r\n }\r\n else\r\n {\r\n audio.play();\r\n }\r\n }\r\n\r\n public playAudioStream(id:string):void\r\n {\r\n //const url = `${this.assetPath+id}.mp3`;\r\n const url = `https://www.brainfusion.games/assets/audio/${id}.mp3`;\r\n const config = {\r\n url: url,\r\n autoPlay: true,\r\n };\r\n const audio = Sound.from(config);\r\n }\r\n\r\n}","import DisplayContainer from \"./DisplayContainer.ts\";\r\nimport {Graphics, Sprite, Text} from \"pixi.js\";\r\nimport ConjugationModel from \"../models/ConjugationModel.ts\";\r\nimport {DropShadowFilter} from \"pixi-filters\";\r\n\r\nexport default class TreeSection extends DisplayContainer\r\n{\r\n\r\n private bg:Sprite;\r\n private opacity:number;\r\n private text:string;\r\n private txtField:Text;\r\n\r\n constructor(text:string, opacity:number=1)\r\n {\r\n super();\r\n this.text = text;\r\n this.opacity = opacity;\r\n this._init();\r\n }\r\n\r\n private _init()\r\n {\r\n this.name = \"treeSection\";\r\n }\r\n\r\n private createBackground():void\r\n {\r\n this.bg = Sprite.from(\"treeBg.png\");\r\n this.alpha = this.opacity;\r\n this.bg.visible = false;\r\n this.addChild(this.bg);\r\n }\r\n\r\n private createTextField():void\r\n {\r\n this.txtField = new Text(this.text, {fontFamily:ConjugationModel.getInstance().fontFamilyA, fontSize:24, fill:0xCCCCCC, align:'center'});\r\n this.txtField.resolution = 2;\r\n this.txtField.pivot.set(this.txtField.width/2, this.txtField.height/2);\r\n this.txtField.x = this.bg.width/2;\r\n this.txtField.y = this.bg.height/2;\r\n this.addChild(this.txtField);\r\n }\r\n\r\n private drawDebugBox():void\r\n {\r\n let debugBox:Graphics = new Graphics();\r\n debugBox.lineStyle(1, 0x00FF00);\r\n debugBox.drawRect(0, 0, this.bg.width, this.bg.height);\r\n this.addChild(debugBox);\r\n }\r\n\r\n\r\n public blur():void\r\n {\r\n this.bg.visible = false;\r\n this.txtField.style.fill = 0xCCCCCC;\r\n }\r\n\r\n public create(creationCompleteCallback?:Function, show:boolean = true, enabled:boolean = true)\r\n {\r\n this.createBackground();\r\n this.createTextField();\r\n //this.drawDebugBox();\r\n super.create(creationCompleteCallback, show, enabled);\r\n }\r\n public destroy()\r\n {\r\n if(this.bg)\r\n {\r\n this.removeChild(this.bg);\r\n this.bg.destroy();\r\n this.bg = null;\r\n }\r\n if(this.txtField)\r\n {\r\n this.removeChild(this.txtField);\r\n this.txtField.destroy();\r\n this.txtField = null;\r\n }\r\n super.destroy();\r\n }\r\n\r\n public disable():void\r\n {\r\n this.txtField.style.fill = 0x666666;\r\n }\r\n\r\n public enable():void\r\n {\r\n this.txtField.style.fill = 0xCCCCCC;\r\n }\r\n\r\n public focus():void\r\n {\r\n this.bg.visible = true;\r\n this.txtField.style.fill = 0xFFFF00;\r\n }\r\n\r\n}","import DisplayContainer from \"../components/DisplayContainer.ts\";\r\nimport {Point, Sprite} from \"pixi.js\";\r\nimport ConjugationModel from \"../models/ConjugationModel.ts\";\r\nimport EnglishConjugation from \"../components/EnglishConjugation.ts\";\r\nimport InputField from \"../components/InputField.ts\";\r\nimport Keyboard from \"../components/Keyboard.ts\";\r\nimport TenseHeader from \"../components/TenseHeader.ts\";\r\nimport KeyboardEventCP from \"../events/KeyboardEventCP.ts\";\r\nimport ConjugationVerb from \"../types/ConjugationVerb.ts\";\r\nimport {sound} from \"@pixi/sound\";\r\nimport Tooltip from \"../components/Tooltip.ts\";\r\nimport TooltipPosition from \"../types/TooltipPosition.ts\";\r\nimport {gsap} from \"gsap\";\r\nimport ScoreManager from \"../managers/ScoreManager.ts\";\r\nimport Delay from \"../utils/Delay.ts\";\r\nimport ConjugationPracticeEvent from \"../events/ConjugationPracticeEvent.ts\";\r\nimport SoundManager from \"../managers/SoundManager.ts\";\r\nimport TreeSection from \"../components/TreeSection.ts\";\r\nimport Timer from \"../utils/Timer.ts\";\r\nimport TimerEvent from \"../events/TimerEvent.ts\";\r\n\r\nexport default class Activity extends DisplayContainer\r\n{\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private MAX_ATTEMPTS:number = 2;\r\n private PADDING:number = 8;\r\n private TUT_PADDING:number = 8;\r\n\r\n //private domInput:HTMLInputElement;\r\n private activeInput:InputField;\r\n private activeTreeSection:TreeSection;\r\n private bg:Sprite;\r\n private conjugations:Array;\r\n private curAttempt:number;\r\n private curEnglishConjugation:string;\r\n private curInputIndex:number;\r\n private englishConjugation:EnglishConjugation;\r\n private exitBtn:Sprite;\r\n private finalPromptShown:boolean;\r\n private finalPromptTimer:Timer;\r\n private inputBg0:Sprite;\r\n private inputBg1:Sprite;\r\n private inputBg2:Sprite;\r\n private inputBg3:Sprite;\r\n private inputBg4:Sprite;\r\n private inputBg5:Sprite;\r\n private inputBg6:Sprite;\r\n private inputFields:Array;\r\n private keyboard:Keyboard;\r\n private logo:Sprite;\r\n private placeholderValues:Array;\r\n private scoreManager:ScoreManager;\r\n private soundManager:SoundManager;\r\n private startTime:Date;\r\n private stopTime:Date;\r\n private tenseHeader:TenseHeader;\r\n private tooltip1:Tooltip;\r\n private tooltip2:Tooltip;\r\n private tooltip3:Tooltip;\r\n private tooltip4:Tooltip;\r\n private tooltipPronoun:Tooltip;\r\n private tree:Sprite;\r\n private treeSections:Array;\r\n private tutorialPlaying:boolean;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Constructor\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n constructor()\r\n {\r\n super();\r\n this._init();\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //----------------------------------\r\n // Private:\r\n //----------------------------------\r\n\r\n private _init()\r\n {\r\n this.name = \"activityCP\";\r\n this.appModel = ConjugationModel.getInstance();\r\n this.curAttempt = 0;\r\n this.curEnglishConjugation = \"\";\r\n this.curInputIndex = -1;\r\n this.finalPromptShown = false;\r\n this.scoreManager = ScoreManager.getInstance();\r\n this.soundManager = SoundManager.getInstance();\r\n this.tutorialPlaying = false;\r\n }\r\n\r\n /*private createDomInput():void\r\n {\r\n this.domInput = document.getElementById(\"test-input\") as HTMLInputElement;\r\n this.domInput.addEventListener(\"focus\", () => {\r\n this.keyboard.pause();\r\n this.domInput.addEventListener(\"change\", () => {\r\n this.keyboard.updateInput(this.domInput.value);\r\n });\r\n });\r\n this.domInput.addEventListener(\"blur\", () => {\r\n this.domInput.removeEventListener(\"change\", () => {\r\n\r\n });\r\n this.keyboard.resume();\r\n });\r\n }*/\r\n\r\n private check():void\r\n {\r\n //console.log(\"check\");\r\n if(this.tutorialPlaying)\r\n {\r\n this.destroyTutorial();\r\n this.tutorialPlaying = false;\r\n }\r\n this.scoreManager.attempts++;\r\n this.curAttempt++;\r\n const curInput = this.inputFields[this.curInputIndex];\r\n if(curInput.value.toLowerCase() == this.conjugations[this.curInputIndex].translation.toLowerCase())\r\n {\r\n this.scoreManager.correct++;\r\n curInput.correct();\r\n curInput.finished = true;\r\n this.soundManager.playAudio(\"correct-answer-cc\");\r\n if(this.appModel.orientation == \"landscape\")\r\n {\r\n Delay.callLater(() => {\r\n this.soundManager.playAudioStream(this.conjugations[this.curInputIndex-1].audioId);\r\n }, 500);\r\n }\r\n else\r\n {\r\n Delay.callLater(() => {\r\n this.soundManager.playAudioStream(this.conjugations[this.curInputIndex].audioId);\r\n }, 500);\r\n }\r\n this.keyboard.clearInput();\r\n if(this.appModel.orientation == \"landscape\")\r\n {\r\n this.next();\r\n }\r\n else\r\n {\r\n this.activeInput.blur();\r\n this.keyboard.pause();\r\n }\r\n }\r\n else\r\n {\r\n this.soundManager.playAudio(\"wrong-answer-cc\");\r\n if(this.curAttempt >= this.MAX_ATTEMPTS)\r\n {\r\n curInput.answered = true;\r\n curInput.incorrect(1, true);\r\n curInput.finished = true;\r\n this.scoreManager.incorrect++;\r\n this.soundManager.playAudioStream(this.conjugations[this.curInputIndex].audioId);\r\n curInput.afterValue = this.conjugations[this.curInputIndex].translation;\r\n this.keyboard.clearInput();\r\n if(this.appModel.orientation == \"landscape\")\r\n {\r\n this.next();\r\n }\r\n else\r\n {\r\n this.activeInput.blur();\r\n this.keyboard.pause();\r\n }\r\n }\r\n else\r\n {\r\n if(this.curInputIndex > 0)\r\n {\r\n this.checkForPronoun(curInput.value.toLowerCase());\r\n }\r\n curInput.incorrect();\r\n }\r\n }\r\n }\r\n\r\n private checkForPronoun(input:string):void\r\n {\r\n if(input.includes(\"yo\"))\r\n {\r\n this.destroyPronounTooltip();\r\n this.showPronounTooltip(\"yo\");\r\n }\r\n else if(input.includes(\"tú\") || input.includes(\"tu\"))\r\n {\r\n this.destroyPronounTooltip();\r\n this.showPronounTooltip(\"tu\");\r\n }\r\n else if(((input.includes(\"él\") || input.includes(\"el\") || input.includes(\"ella\") || input.includes(\"ud\")) && this.curInputIndex == 3))\r\n {\r\n this.destroyPronounTooltip();\r\n this.showPronounTooltip(\"ud\");\r\n }\r\n else if(input.includes(\"nosotros\") || input.includes(\"nosotras\"))\r\n {\r\n this.destroyPronounTooltip();\r\n this.showPronounTooltip(\"nosotros\");\r\n }\r\n else if(input.includes(\"vosotros\") || input.includes(\"vosotras\"))\r\n {\r\n this.destroyPronounTooltip();\r\n this.showPronounTooltip(\"vosotros\");\r\n }\r\n else if(input.includes(\"ellos\") || input.includes(\"ellas\") || input.includes(\"uds\"))\r\n {\r\n this.destroyPronounTooltip();\r\n this.showPronounTooltip(\"uds\");\r\n }\r\n }\r\n\r\n private createBackground()\r\n {\r\n this.bg = Sprite.from(\"bg_activity\");\r\n this.addChild(this.bg);\r\n }\r\n\r\n private createDomElementsForTab():void\r\n {\r\n const containerElement = document.getElementById(\"canvas-container\") as HTMLDivElement;\r\n const canvasElement = document.getElementById(\"pixi-canvas\") as HTMLCanvasElement;\r\n const elementsDiv = document.createElement(\"div\");\r\n elementsDiv.id = \"dom-elements\";\r\n //elementsDiv.style.backgroundColor = \"rgba(0, 255, 0, 0.25)\";\r\n elementsDiv.style.width = \"64px\";\r\n elementsDiv.style.height = \"90px\";\r\n elementsDiv.style.position = \"absolute\";\r\n elementsDiv.style.left = canvasElement.offsetLeft+\"px\";\r\n elementsDiv.style.top = canvasElement.offsetTop+\"px\";\r\n\r\n let len = this.inputFields.length;\r\n len = 2;\r\n for(let i:number=0; i\r\n {\r\n try\r\n {\r\n //@ts-ignore\r\n bfgccExit();\r\n }\r\n catch(e)\r\n {\r\n console.log(\"Error trying to exit: \", e);\r\n }\r\n };\r\n this.exitBtn.pivot.set(this.exitBtn.width/2, this.exitBtn.height/2);\r\n this.exitBtn.x = this.appModel.configValue(\"activity\", \"exitBtnX\");\r\n this.exitBtn.y = this.appModel.configValue(\"activity\", \"exitBtnY\");\r\n this.addChild(this.exitBtn);\r\n }\r\n\r\n private createFinalPromptTimer():void\r\n {\r\n this.finalPromptTimer = new Timer(5000, 1);\r\n this.finalPromptTimer.addEvntListener(TimerEvent.TIMER_COMPLETE, this.handleFinalPromptTimerComplete);\r\n this.finalPromptTimer.start();\r\n }\r\n\r\n private createInputBgs():void\r\n {\r\n this.inputBg0 = Sprite.from(\"inputBg.png\");\r\n this.inputBg0.pivot.set(this.inputBg0.width/2, this.inputBg0.height/2);\r\n this.inputBg0.x = this.appModel.configValue(\"activity\", \"inputBg0X\");\r\n this.inputBg0.y = this.appModel.configValue(\"activity\", \"inputBg0Y\");\r\n this.addChild(this.inputBg0);\r\n this.inputBg1 = Sprite.from(\"inputBg.png\");\r\n this.inputBg1.pivot.set(this.inputBg1.width/2, this.inputBg1.height/2);\r\n if(this.appModel.orientation == \"landscape\")\r\n {\r\n this.inputBg1.x = this.appModel.centerX - this.inputBg1.width/2 - this.appModel.configValue(\"activity\", \"inputBgPadding\");\r\n }\r\n else\r\n {\r\n this.inputBg1.x = this.inputBg0.x;\r\n this.inputBg1.visible = false;\r\n }\r\n this.inputBg1.y = this.appModel.configValue(\"activity\", \"inputBg1Y\");\r\n this.addChild(this.inputBg1);\r\n this.inputBg2 = Sprite.from(\"inputBg.png\");\r\n this.inputBg2.pivot.set(this.inputBg2.width/2, this.inputBg2.height/2);\r\n if(this.appModel.orientation == \"landscape\")\r\n {\r\n this.inputBg2.x = this.appModel.centerX - this.inputBg2.width/2 - this.appModel.configValue(\"activity\", \"inputBgPadding\");\r\n }\r\n else\r\n {\r\n this.inputBg2.x = this.inputBg0.x;\r\n this.inputBg2.visible = false;\r\n }\r\n this.inputBg2.y = this.appModel.configValue(\"activity\", \"inputBg2Y\");\r\n this.addChild(this.inputBg2);\r\n this.inputBg3 = Sprite.from(\"inputBg.png\");\r\n this.inputBg3.pivot.set(this.inputBg3.width/2, this.inputBg3.height/2);\r\n if(this.appModel.orientation == \"landscape\")\r\n {\r\n this.inputBg3.x = this.appModel.centerX - this.inputBg3.width/2 - this.appModel.configValue(\"activity\", \"inputBgPadding\");\r\n }\r\n else\r\n {\r\n this.inputBg3.x = this.inputBg0.x;\r\n this.inputBg3.visible = false;\r\n }\r\n this.inputBg3.y = this.appModel.configValue(\"activity\", \"inputBg3Y\");\r\n this.addChild(this.inputBg3);\r\n this.inputBg4 = Sprite.from(\"inputBg.png\");\r\n this.inputBg4.pivot.set(this.inputBg4.width/2, this.inputBg4.height/2);\r\n if(this.appModel.orientation == \"landscape\")\r\n {\r\n this.inputBg4.x = this.appModel.centerX + this.inputBg4.width/2 + this.appModel.configValue(\"activity\", \"inputBgPadding\");\r\n }\r\n else\r\n {\r\n this.inputBg4.x = this.inputBg0.x;\r\n this.inputBg4.visible = false;\r\n }\r\n this.inputBg4.y = this.appModel.configValue(\"activity\", \"inputBg4Y\");\r\n this.addChild(this.inputBg4);\r\n this.inputBg5 = Sprite.from(\"inputBg.png\");\r\n this.inputBg5.pivot.set(this.inputBg5.width/2, this.inputBg5.height/2);\r\n if(this.appModel.orientation == \"landscape\")\r\n {\r\n this.inputBg5.x = this.appModel.centerX + this.inputBg5.width/2 + this.appModel.configValue(\"activity\", \"inputBgPadding\");\r\n }\r\n else\r\n {\r\n this.inputBg5.x = this.inputBg0.x;\r\n this.inputBg5.visible = false;\r\n }\r\n this.inputBg5.y = this.appModel.configValue(\"activity\", \"inputBg5Y\");\r\n this.addChild(this.inputBg5);\r\n this.inputBg6 = Sprite.from(\"inputBg.png\");\r\n this.inputBg6.pivot.set(this.inputBg6.width/2, this.inputBg6.height/2);\r\n if(this.appModel.orientation == \"landscape\")\r\n {\r\n this.inputBg6.x = this.appModel.centerX + this.inputBg6.width/2 + this.appModel.configValue(\"activity\", \"inputBgPadding\");\r\n }\r\n else\r\n {\r\n this.inputBg6.x = this.inputBg0.x;\r\n this.inputBg6.visible = false;\r\n }\r\n this.inputBg6.y = this.appModel.configValue(\"activity\", \"inputBg6Y\");\r\n this.addChild(this.inputBg6);\r\n }\r\n\r\n private createInputField(x:number, y:number, placeholder:string, debug=false):void\r\n {\r\n let curInput = new InputField();\r\n curInput.addEvntListener(ConjugationPracticeEvent.INPUT_FINISHED, this.handleInputFinished);\r\n this.addChild(curInput);\r\n /*curInput.accessible = true;\r\n curInput.accessibleTitle = \"Input Field\";\r\n curInput.accessibleHint = \"Type the Spanish conjugation here.\";\r\n curInput.tabIndex = this.inputFields.length;*/\r\n curInput.autoScale = true;\r\n curInput.align = \"center\";\r\n curInput.color = 0xFFFFFF;\r\n curInput.displayDebug = debug;\r\n curInput.drawDefaultBg = false;\r\n curInput.fontSize = this.appModel.configValue(\"activity\", \"inputFontSize\");\r\n curInput.highlightColorCorrect = 0x00D936;\r\n curInput.inputWidth = 362;\r\n curInput.inputHeight = 80;\r\n curInput.pivot.set(curInput.inputWidth/2, curInput.inputHeight/2);\r\n curInput.placeholder = placeholder;\r\n curInput.create(null, false);\r\n curInput.x = x;\r\n curInput.y = y;\r\n curInput.show();\r\n this.inputFields.push(curInput);\r\n }\r\n\r\n private createInputFields():void\r\n {\r\n const target = this.appModel.practiceData.conjugationPractice.conjugationVerbs;\r\n this.inputFields = new Array();\r\n const len = target.length;\r\n for(let i:number=0; i();\r\n const target = this.appModel.practiceData.conjugationPractice.conjugationVerbs;\r\n const alphas = [0, 1, 1, 1, 1, 1, 1];\r\n const sectionLocations = [new Point(107, 156),\r\n new Point(24, 156),\r\n new Point(24, 219),\r\n new Point(24, 280),\r\n new Point(198, 156),\r\n new Point(198, 219),\r\n new Point(198, 280)];\r\n const textValues = [\"\", \"yo\", \"tú\", \"él/ella/ud\", \"nosotros\", \"vosotros\", \"ellos/ellas/uds\"];\r\n const len = sectionLocations.length;\r\n let curSection:TreeSection;\r\n for(let i:number=0; i\r\n {\r\n this.eventDispatcher.dispatchEvent(new CustomEvent(ConjugationPracticeEvent.ACTIVITY_COMPLETE));\r\n }\r\n\r\n private handleBtnFocus = (e:FocusEvent):void =>\r\n {\r\n console.log(\"handleBtnFocus\");\r\n // @ts-ignore\r\n const targetId = e.target.id;\r\n\r\n if(targetId == \"btn_1\")\r\n {\r\n document.getElementById(\"btn_0\").focus();\r\n }\r\n if(targetId == \"btn_0\")\r\n {\r\n this.check();\r\n }\r\n }\r\n\r\n private handleFinalPromptTimerComplete = ():void =>\r\n {\r\n this.showPrompt();\r\n }\r\n\r\n private handleInputFinished = (evt:CustomEvent):void =>\r\n {\r\n evt.target.removeEventListener(ConjugationPracticeEvent.INPUT_FINISHED, this.handleInputFinished);\r\n if(this.appModel.orientation == \"portrait\")\r\n {\r\n Delay.callLater(this.onInputFinished, 1000);\r\n }\r\n }\r\n\r\n private handleKeyboardSubmit = (e:CustomEvent):void =>\r\n {\r\n this.check();\r\n }\r\n\r\n private next():void\r\n {\r\n this.curAttempt = 0;\r\n this.curInputIndex++;\r\n if(this.curInputIndex > 0 && this.curInputIndex <= this.inputFields.length)\r\n {\r\n this.activeInput.blur();\r\n if(this.appModel.orientation == \"portrait\")\r\n {\r\n this.activeTreeSection.blur();\r\n }\r\n }\r\n if(this.curInputIndex < this.inputFields.length)\r\n {\r\n this.activeInput = this.inputFields[this.curInputIndex];\r\n this.activeInput.focus();\r\n if(this.appModel.orientation == \"portrait\")\r\n {\r\n this.activeTreeSection = this.treeSections[this.curInputIndex];\r\n this.activeTreeSection.focus();\r\n }\r\n this.curEnglishConjugation = this.conjugations[this.curInputIndex].english;\r\n this.englishConjugation.text = this.curEnglishConjugation;\r\n }\r\n else\r\n {\r\n this.stopTime = new Date();\r\n this.scoreManager.time = (this.stopTime.getTime() - this.startTime.getTime())/1000;\r\n this.activeInput = null;\r\n this.englishConjugation.text = \"\";\r\n this.keyboard.disable();\r\n if(this.appModel.orientation == \"landscape\")\r\n {\r\n Delay.callLater(this.finish, 2500);\r\n }\r\n else\r\n {\r\n Delay.callLater(this.finish, 500);\r\n }\r\n }\r\n }\r\n\r\n private onInputFinished = ():void =>\r\n {\r\n this.activeInput.visible = false;\r\n this.next();\r\n this.keyboard.resume();\r\n }\r\n\r\n private onPronounTooltipComplete = ():void =>\r\n {\r\n this.destroyPronounTooltip();\r\n }\r\n\r\n private onTutorialComplete = ():void =>\r\n {\r\n this.destroyTutorial();\r\n if(!this.finalPromptShown)\r\n {\r\n this.createFinalPromptTimer();\r\n }\r\n }\r\n\r\n private playBgMusic():void\r\n {\r\n sound.add('my-sound', `${this.appModel.assetPath}/audio/activity-cc.mp3`);\r\n sound.play('my-sound');\r\n }\r\n\r\n private populateConjugationVerbs():void\r\n {\r\n this.conjugations = new Array();\r\n const target = this.appModel.practiceData.conjugationPractice.conjugationVerbs;\r\n const len = target.length;\r\n let curVerb:ConjugationVerb;\r\n for(let i:number=0; i\r\n {\r\n //this.domInput.value = value;\r\n if(this.tutorialPlaying)\r\n {\r\n this.destroyTutorial();\r\n if(!this.finalPromptShown)\r\n {\r\n this.createFinalPromptTimer();\r\n }\r\n this.tutorialPlaying = false;\r\n }\r\n else\r\n {\r\n this.destroyFinalPromptTimer();\r\n }\r\n if(this.startTime == null)\r\n {\r\n this.startTime = new Date();\r\n }\r\n this.activeInput.value = value;\r\n }\r\n\r\n //----------------------------------\r\n // Public:\r\n //----------------------------------\r\n\r\n public override create(creationCompleteCallback?:Function, show=true, enabled=true):void\r\n {\r\n this.populateConjugationVerbs();\r\n this.createBackground();\r\n this.createTenseHeader();\r\n this.createLogo();\r\n //this.createDomInput();\r\n this.createTreeSprite();\r\n if(this.appModel.orientation == \"portrait\")\r\n {\r\n this.createTreeSections();\r\n }\r\n this.createInputBgs();\r\n this.createEnglishConjugation();\r\n this.populatePlaceholderValues();\r\n this.createInputFields();\r\n if(this.appModel.orientation == \"landscape\" && !this.appModel.isTouchDevice)\r\n {\r\n this.createDomElementsForTab();\r\n }\r\n this.createKeyboard();\r\n /*if(this.appModel.orientation === \"portrait\")\r\n {\r\n this.createExitButton();\r\n }*/\r\n this.createTutorial();\r\n this.next();\r\n super.create(creationCompleteCallback, show, enabled);\r\n }\r\n\r\n public override destroy():void\r\n {\r\n this.destroyPronounTooltip();\r\n this.destroyTutorial();\r\n if(this.appModel.orientation == \"portrait\")\r\n {\r\n this.destroyTreeSections();\r\n }\r\n this.destroyInputFields();\r\n this.destroyExitButton();\r\n this.destroyKeyboard();\r\n this.destroyDomElementsForTab();\r\n this.activeTreeSection = null;\r\n this.activeInput = null;\r\n super.destroy();\r\n }\r\n}","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"\" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"