{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/1PPf8Z5LxViZZGNUlf8W/ekChcq8DOCbOnMvXnsjx/Y9iy1zFI3.js", "ssg:https://esm.ngrok.dev/chunk-DOVRADVZ.mjs", "ssg:https://framer.com/m/web-Spinner-IdTB.js", "ssg:https://framer.com/m/web-MenuItem-oSWT.js", "ssg:https://framer.com/m/web-Course-Card-oJCo.js", "ssg:https://framer.com/m/web-Button-amAd.js", "ssg:https://framer.com/m/class-Course-Title-s240.js", "ssg:https://framerusercontent.com/modules/PPKGDPDpNwE7Pib5UrtX/9q40P0jbWZu2mrfDKAmR/L_qgV81kS.js", "ssg:https://framer.com/m/class-Video-Item-Qr97.js", "ssg:https://framer.com/m/class-Info-ii1V.js", "ssg:https://framer.com/m/payments-Payment-Button-oYzB.js", "ssg:https://framer.com/m/LiveEventInfo-1uhR.js", "ssg:https://esm.ngrok.dev/chunk-BG6P23RH.mjs", "ssg:https://esm.ngrok.dev/chunk-SVBYECQE.mjs", "ssg:https://esm.ngrok.dev/chunk-WTDJDUJN.mjs", "ssg:https://esm.ngrok.dev/chunk-6OBOGQ5Q.mjs", "ssg:https://esm.ngrok.dev/chunk-NLIN542D.mjs", "ssg:https://esm.ngrok.dev/chunk-C3N5J3D3.mjs", "ssg:https://esm.ngrok.dev/chunk-RZ4MXR2C.mjs", "ssg:https://esm.ngrok.dev/chunk-EJKG6TUT.mjs", "ssg:https://esm.ngrok.dev/chunk-PO4BOMMR.mjs", "ssg:https://esm.ngrok.dev/chunk-C2N3SJA3.mjs", "ssg:https://esm.ngrok.dev/chunk-OKCCUSCS.mjs", "ssg:https://cdn.skypack.dev/-/@supabase/functions-js@v2.1.0-RnZ2mgdVtYJw6BDBGbAJ/dist=es2019,mode=imports/optimized/@supabase/functions-js.js", "ssg:https://cdn.skypack.dev/-/@supabase/postgrest-js@v1.4.1-M6VL6LW6WNlsBWTBZFbq/dist=es2019,mode=imports/optimized/@supabase/postgrest-js.js", "ssg:https://cdn.skypack.dev/-/es5-ext@v0.10.53-QgoIgxGeG8vPfAwjei6y/dist=es2019,mode=imports/unoptimized/global.js", "ssg:https://cdn.skypack.dev/-/websocket@v1.0.34-bITKCQn27Ks1QQoRgk94/dist=es2019,mode=imports/optimized/websocket.js", "ssg:https://cdn.skypack.dev/-/@supabase/realtime-js@v2.6.0-KChn2jQyrOOE0GhQ08fE/dist=es2019,mode=imports/optimized/@supabase/realtime-js.js", "ssg:https://cdn.skypack.dev/-/@supabase/storage-js@v2.3.1-BHfs8j7jU6qHoJRSHZPL/dist=es2019,mode=imports/optimized/@supabase/storage-js.js", "ssg:https://cdn.skypack.dev/-/@supabase/gotrue-js@v2.12.1-U9V71OI5x9GUonOWwkxZ/dist=es2019,mode=imports/optimized/@supabase/gotrue-js.js", "ssg:https://cdn.skypack.dev/-/@supabase/supabase-js@v2.10.0-iuC42NKMzc0WgF6sPBaq/dist=es2019,mode=imports/optimized/@supabase/supabase-js.js", "ssg:https://esm.ngrok.dev/chunk-ZVOHR7PP.mjs", "ssg:https://esm.ngrok.dev/chunk-CBBGBYGN.mjs", "ssg:https://esm.ngrok.dev/chunk-36AWKKT4.mjs", "ssg:https://esm.ngrok.dev/chunk-M4QTGDPE.mjs", "ssg:https://esm.ngrok.dev/chunk-NYPGSXM7.mjs", "ssg:https://esm.ngrok.dev/chunk-UALX6DFA.mjs", "ssg:https://esm.ngrok.dev/chunk-DEZTVITG.mjs", "ssg:https://esm.ngrok.dev/chunk-X6ESPM5B.mjs", "ssg:https://esm.ngrok.dev/utils/live-reload/useRealtimeComponent.mjs", "ssg:https://framerusercontent.com/modules/vOfYfdbvNgrwYkPTjTl9/nb4ZajQt2x0MsBrN8aUt/Components.js"],
  "sourcesContent": ["// Generated by Framer (5bbf1f3)\nimport{fontStore}from\"framer\";fontStore.loadFonts([]);export const fonts=[{explicitInter:true,fonts:[]}];export const css=[\".framer-TEXV6 .framer-styles-preset-pjlu09:not(.rich-text-wrapper), .framer-TEXV6 .framer-styles-preset-pjlu09.rich-text-wrapper a { --framer-link-current-text-color: #111111; --framer-link-current-text-decoration: underline; --framer-link-hover-text-color: #0088ff; --framer-link-hover-text-decoration: underline; --framer-link-text-color: var(--token-7c9a8c52-ae10-4871-a89f-bc8d071de9aa, #005dfa); --framer-link-text-decoration: none; }\"];export const className=\"framer-TEXV6\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "import {\n  afterPayments\n} from \"./chunk-IUJP45E5.mjs\";\nimport {\n  useGlobalStore\n} from \"./chunk-QHMWAEE2.mjs\";\nimport {\n  getCustomData\n} from \"./chunk-HLCVLHIF.mjs\";\nimport {\n  __async\n} from \"./chunk-JWK35I2R.mjs\";\n\n// src/payments/HandleMobileRedirection.tsx\nimport { useEffect } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction HandleMobileRedirection(props) {\n  const [store, setStore] = useGlobalStore();\n  const { clerk, supabase, user } = store;\n  useEffect(() => {\n    if (!supabase) return;\n    const urlParams = new URLSearchParams(window.location.search);\n    const paymentId = urlParams.get(\"paymentId\");\n    const courseId = urlParams.get(\"courseId\");\n    console.log({ paymentId, courseId });\n    if (paymentId && courseId) update();\n    function update() {\n      return __async(this, null, function* () {\n        const url = `https://api.portone.io/payments/${paymentId}`;\n        const options = {\n          method: \"get\",\n          headers: {\n            \"Content-Type\": \"application/json\",\n            Authorization: `PortOne OjRGB7mXwV755EDUV9mW7nIf7RYAxdIYxeQn2AyW3p4n75YsQM2pCudTeRl1U890k5o3at5lXauxCJFx`\n          }\n        };\n        try {\n          const response = yield fetch(url, options);\n          const paymentData = yield response.json();\n          console.log(\"paymentData\", paymentData);\n          const email = paymentData.customer.email;\n          const username = paymentData.customer.name;\n          const phone = paymentData.customer.phoneNumber;\n          if (paymentData.status === \"PAID\") {\n            const customData = yield getCustomData();\n            afterPayments({\n              supabase,\n              courseId,\n              paymentId,\n              email,\n              username,\n              phone,\n              totalAmount: customData.value\n            });\n          } else alert(\"\\uACB0\\uC81C \\uC5D0\\uB7EC\");\n        } catch (error) {\n          console.error(error);\n        }\n      });\n    }\n  }, [supabase]);\n  return /* @__PURE__ */ jsx(\"h1\", { className: \"text-2xl font-bold\", children: \"\\uACB0\\uC81C \\uC644\\uB8CC\\uC911..\" });\n}\n\nexport {\n  HandleMobileRedirection\n};\n", "// Generated by Framer (15813d8)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useOnVariantChange,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const cycleOrder=[\"cV7fhZBcl\",\"Jcfb4aAH4\"];const serializationHash=\"framer-1wZQ2\";const variantClassNames={cV7fhZBcl:\"framer-v-4txj8v\",Jcfb4aAH4:\"framer-v-1bm6mvd\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={delay:0,duration:1e3,ease:[0,0,1,1],type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={\"Variant 1\":\"cV7fhZBcl\",\"Variant 2\":\"Jcfb4aAH4\"};const getProps=({height,id,width,...props})=>{var _humanReadableVariantMap_props_variant,_ref;return{...props,variant:(_ref=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref!==void 0?_ref:\"cV7fhZBcl\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"cV7fhZBcl\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onAppearl4lp60=activeVariantCallback(async(...args)=>{setVariant(\"Jcfb4aAH4\");});useOnVariantChange(baseVariant,{default:onAppearl4lp60});const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-4txj8v\",className,classNames),\"data-framer-name\":\"Variant 1\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"cV7fhZBcl\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{...style},...addPropertyOverrides({Jcfb4aAH4:{\"data-framer-name\":\"Variant 2\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1avnaaj\",\"data-framer-name\":\"graphic\",fill:\"black\",intrinsicHeight:24,intrinsicWidth:24,layoutDependency:layoutDependency,layoutId:\"dFk6m_r9P\",style:{rotate:0},svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><defs><linearGradient x1=\"28.154%\" y1=\"63.74%\" x2=\"74.629%\" y2=\"17.783%\" id=\"a\"><stop stop-color=\"rgba(164, 164, 164, 1)\" offset=\"0%\"/><stop stop-color=\"rgba(164, 164, 164, 0)\" stop-opacity=\"0\" offset=\"100%\"/></linearGradient></defs><g transform=\"translate(2)\" fill=\"none\"><circle stroke=\"url(#a)\" stroke-width=\"4\" cx=\"10\" cy=\"12\" r=\"10\"/><path d=\"M10 2C4.477 2 0 6.477 0 12\" stroke=\"rgba(164, 164, 164, 1)\" stroke-width=\"4\"/><rect fill=\"rgba(164, 164, 164, 1)\" x=\"8\" width=\"4\" height=\"4\" rx=\"8\"/></g></svg>',variants:{Jcfb4aAH4:{rotate:36e4}},withExternalLayout:true})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-1wZQ2.framer-1ltfjnk, .framer-1wZQ2 .framer-1ltfjnk { display: block; }\",\".framer-1wZQ2.framer-4txj8v { height: 60px; overflow: visible; position: relative; width: 60px; }\",\".framer-1wZQ2 .framer-1avnaaj { aspect-ratio: 1 / 1; flex: none; height: 100%; left: 0px; position: absolute; top: 0px; width: var(--framer-aspect-ratio-supported, 60px); }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 60\n * @framerIntrinsicWidth 60\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"Jcfb4aAH4\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerubzwLPDLP=withCSS(Component,css,\"framer-1wZQ2\");export default FramerubzwLPDLP;FramerubzwLPDLP.displayName=\"web/Spinner\";FramerubzwLPDLP.defaultProps={height:60,width:60};addPropertyControls(FramerubzwLPDLP,{variant:{options:[\"cV7fhZBcl\",\"Jcfb4aAH4\"],optionTitles:[\"Variant 1\",\"Variant 2\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerubzwLPDLP,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerubzwLPDLP\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"Jcfb4aAH4\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"60\",\"framerIntrinsicHeight\":\"60\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ubzwLPDLP.map", "// Generated by Framer (15813d8)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const serializationHash=\"framer-243qn\";const variantClassNames={t99AyRX6u:\"framer-v-hony9l\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const getProps=({height,id,onClick,title,width,...props})=>{var _ref;return{...props,DicMLVR17:onClick!==null&&onClick!==void 0?onClick:props.DicMLVR17,GFTgizblO:(_ref=title!==null&&title!==void 0?title:props.GFTgizblO)!==null&&_ref!==void 0?_ref:\"\uAC15\uC758\uC2E4\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,DicMLVR17,GFTgizblO,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"t99AyRX6u\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap1knps2q=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(DicMLVR17){const res=await DicMLVR17(...args);if(res===false)return false;}});const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-hony9l\",className,classNames),\"data-framer-name\":\"Variant 1\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"t99AyRX6u\",onTap:onTap1knps2q,ref:ref!==null&&ref!==void 0?ref:ref1,style:{...style},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTYwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-weight\":\"600\",\"--framer-letter-spacing\":\"0.42px\",\"--framer-line-height\":\"140%\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(37, 49, 60))\"},children:\"\uAC15\uC758\uC2E4\"})}),className:\"framer-lzy7ob\",\"data-framer-name\":\"SERVICES\",fonts:[\"__SystemDefault-600-normal__\"],layoutDependency:layoutDependency,layoutId:\"oKyFswVwe\",style:{\"--extracted-r6o4lv\":\"rgb(37, 49, 60)\"},text:GFTgizblO,verticalAlignment:\"top\",withExternalLayout:true})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-243qn.framer-1ft7ls2, .framer-243qn .framer-1ft7ls2 { display: block; }\",\".framer-243qn.framer-hony9l { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-243qn .framer-lzy7ob { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-243qn.framer-hony9l { gap: 0px; } .framer-243qn.framer-hony9l > * { margin: 0px; margin-bottom: calc(10px / 2); margin-top: calc(10px / 2); } .framer-243qn.framer-hony9l > :first-child { margin-top: 0px; } .framer-243qn.framer-hony9l > :last-child { margin-bottom: 0px; } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 22.5\n * @framerIntrinsicWidth 43\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"DicMLVR17\":\"onClick\",\"GFTgizblO\":\"title\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerwUFtSXOPd=withCSS(Component,css,\"framer-243qn\");export default FramerwUFtSXOPd;FramerwUFtSXOPd.displayName=\"web/MenuItem\";FramerwUFtSXOPd.defaultProps={height:22.5,width:43};addPropertyControls(FramerwUFtSXOPd,{DicMLVR17:{title:\"On Click\",type:ControlType.EventHandler},GFTgizblO:{defaultValue:\"\uAC15\uC758\uC2E4\",displayTextArea:false,title:\"Title\",type:ControlType.String}});addFonts(FramerwUFtSXOPd,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerwUFtSXOPd\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"43\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"22.5\",\"framerImmutableVariables\":\"true\",\"framerVariables\":\"{\\\"DicMLVR17\\\":\\\"onClick\\\",\\\"GFTgizblO\\\":\\\"title\\\"}\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./wUFtSXOPd.map", "// Generated by Framer (c563d2c)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentPresetsProvider,ControlType,cx,getFontsFromComponentPreset,getFontsFromSharedStyle,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS,withFX}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import*as componentPresets from\"https://framerusercontent.com/modules/OfOZVxq5O2A2YDp5xhsS/eLxSbsPnTqqxK2rSbdhk/componentPresets.js\";import*as sharedStyle3 from\"https://framerusercontent.com/modules/qf8WnaeGJ3SKlV1O1xQl/OpcN00bADf7Cx0Plvexi/D3DXxP6A7.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/ORPUlZI3WxbcHtHvUanj/aIKrwl6RsacGktaFjPfX/DXjdkQnI3.js\";import*as sharedStyle6 from\"https://framerusercontent.com/modules/WFwJfXfYaLttmLvni3XT/CPcUg4PRsHlE69ChrCl2/igUmRMPj0.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/u1mf9oEcsdT6ZY35EKju/aKBdc0OCLwIFIjQkcI48/kevPKtV7h.js\";import*as sharedStyle5 from\"https://framerusercontent.com/modules/gpKoVqFiaHhnd0ovD92t/6weiTaG8fJrKaTmoa24o/R0ztcLGWn.js\";import*as sharedStyle4 from\"https://framerusercontent.com/modules/E8iS3ykzc4VVNFg4Q0j4/e0p5VUklaAGl2DkhwD5L/sJ2QEITYH.js\";import*as sharedStyle2 from\"https://framerusercontent.com/modules/Ckw3BYDTnwzv14e9Z0QG/JufQFcF7Uj7bjcOGNBav/VKSZtsCFD.js\";const MotionAWithFX=withFX(motion.a);const serializationHash=\"framer-ankia\";const variantClassNames={cqB6gnJOn:\"framer-v-10umvpq\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const animation={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transformPerspective:1200,x:0,y:-32};const transition1={damping:40,delay:.1,mass:1,stiffness:200,type:\"spring\"};const transition2={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({content,height,id,link,smallTitle,subTitle,width,...props})=>{return{...props,g6Gj_B3C8:smallTitle??props.g6Gj_B3C8??\"[\uAE30\uAC04 \uD55C\uC815 \uBB34\uB8CC \uAC15\uC758]\",OF8b_4AWY:content??props.OF8b_4AWY??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsxs(motion.p,{children:[\"ComfyUI \uAC00 \uCC98\uC74C \uC774\uC2E0\uAC00\uC694?\",/*#__PURE__*/_jsx(motion.br,{}),\"\uC774 \uAC15\uC758\uB97C \uD1B5\uD574  UI \uB97C Comfy \uC2DC\uC791\uD574 \uBCF4\uC138\uC694\",/*#__PURE__*/_jsx(motion.br,{}),/*#__PURE__*/_jsx(motion.br,{}),\"\uC2E4\uC81C \uAD11\uACE0 \uBAA8\uB378\uC744 \uB9CC\uB4E4\uBA74\uC11C,\",/*#__PURE__*/_jsx(motion.br,{}),\"AI \uAC00 \uC5B4\uB5BB\uAC8C \uC791\uB3D9\uD558\uB294\uC9C0 \uAD6C\uCCB4\uC801\uC73C\uB85C \uBC30\uC6CC\uBCF4\uC2E4 \uC218 \uC788\uC2B5\uB2C8\uB2E4\"]})}),SNA6l19Uu:subTitle??props.SNA6l19Uu??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsxs(motion.p,{children:[\"ComfyUI \uBC30\uC6B0\uACE0\",/*#__PURE__*/_jsx(motion.br,{}),\"AI \uC5F0\uC608\uC778 \uBAA8\uB378 \uB9CC\uB4E4\uAE30\"]})}),tELsFd721:link??props.tELsFd721};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,g6Gj_B3C8,tELsFd721,SNA6l19Uu,OF8b_4AWY,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"cqB6gnJOn\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className,sharedStyle2.className,sharedStyle3.className,sharedStyle4.className,sharedStyle5.className,sharedStyle6.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition2,children:/*#__PURE__*/_jsx(Link,{href:tELsFd721,nodeId:\"cqB6gnJOn\",openInNewTab:false,children:/*#__PURE__*/_jsxs(MotionAWithFX,{...restProps,...gestureHandlers,__framer__animate:{transition:transition1},__framer__animateOnce:true,__framer__enter:animation,__framer__styleAppearEffectEnabled:true,__framer__threshold:.5,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:`${cx(scopingClassNames,\"framer-10umvpq\",className,classNames)} framer-1g5vgzs`,\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"cqB6gnJOn\",ref:ref??ref1,style:{background:'linear-gradient(132deg, var(--token-7271da1b-9f0a-41bd-91b9-d7098d8944de, rgb(244, 237, 255)) /* {\"name\":\"HighlightLight1\"} */ 0%, var(--token-a37e6c3e-a10c-437b-b258-07d1d49555da, rgb(252, 235, 239)) /* {\"name\":\"HighlightGradient2\"} */ 100%)',borderBottomLeftRadius:40,borderBottomRightRadius:40,borderTopLeftRadius:40,borderTopRightRadius:40,...style},children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-v7fwg\",layoutDependency:layoutDependency,layoutId:\"g9CQgmjJe\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgQm9sZA==\",\"--framer-font-family\":'\"Pretendard Bold\", \"Pretendard Bold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\"},children:\"[\uAE30\uAC04 \uD55C\uC815 \uBB34\uB8CC \uAC15\uC758]\"})}),className:\"framer-9w2it1\",fonts:[\"CUSTOM;Pretendard Bold\"],layoutDependency:layoutDependency,layoutId:\"TbmyzTFst\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:g6Gj_B3C8,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(ComponentPresetsProvider,{presets:{\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\":componentPresets.props[\"bGrj_P5Hk\"]},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:SNA6l19Uu,className:\"framer-r6pbk4\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"lMSldpxcB\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},stylesPresetsClassNames:{a:\"framer-styles-preset-1x5q87\",h1:\"framer-styles-preset-1x4saly\",h2:\"framer-styles-preset-1uqk9bj\",h3:\"framer-styles-preset-12fssox\",h4:\"framer-styles-preset-u2ed1w\",h5:\"framer-styles-preset-13rf66x\",h6:\"framer-styles-preset-chmam8\",img:\"framer-styles-preset-1d582qa\",p:\"framer-styles-preset-1shyyex\"},verticalAlignment:\"top\",withExternalLayout:true})})]}),/*#__PURE__*/_jsx(ComponentPresetsProvider,{presets:{\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\":componentPresets.props[\"bGrj_P5Hk\"]},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:OF8b_4AWY,className:\"framer-1j6mtsd\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"wlk3icv3R\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},stylesPresetsClassNames:{a:\"framer-styles-preset-1x5q87\",h1:\"framer-styles-preset-1x4saly\",h2:\"framer-styles-preset-1uqk9bj\",h3:\"framer-styles-preset-12fssox\",h4:\"framer-styles-preset-17umqzd\",h5:\"framer-styles-preset-13rf66x\",h6:\"framer-styles-preset-chmam8\",img:\"framer-styles-preset-1d582qa\",p:\"framer-styles-preset-1at8hnm\"},verticalAlignment:\"top\",withExternalLayout:true})})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-ankia.framer-1g5vgzs, .framer-ankia .framer-1g5vgzs { display: block; }\",\".framer-ankia.framer-10umvpq { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 32px; height: min-content; justify-content: center; overflow: visible; padding: 40px; position: relative; text-decoration: none; width: 515px; }\",\".framer-ankia .framer-v7fwg { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-ankia .framer-9w2it1, .framer-ankia .framer-r6pbk4 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-ankia .framer-1j6mtsd { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-ankia.framer-10umvpq, .framer-ankia .framer-v7fwg { gap: 0px; } .framer-ankia.framer-10umvpq > * { margin: 0px; margin-bottom: calc(32px / 2); margin-top: calc(32px / 2); } .framer-ankia.framer-10umvpq > :first-child, .framer-ankia .framer-v7fwg > :first-child { margin-top: 0px; } .framer-ankia.framer-10umvpq > :last-child, .framer-ankia .framer-v7fwg > :last-child { margin-bottom: 0px; } .framer-ankia .framer-v7fwg > * { margin: 0px; margin-bottom: calc(10px / 2); margin-top: calc(10px / 2); } }\",...sharedStyle.css,...sharedStyle1.css,...sharedStyle2.css,...sharedStyle3.css,...sharedStyle4.css,...sharedStyle5.css,...sharedStyle6.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 273\n * @framerIntrinsicWidth 515\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"g6Gj_B3C8\":\"smallTitle\",\"tELsFd721\":\"link\",\"SNA6l19Uu\":\"subTitle\",\"OF8b_4AWY\":\"content\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerpNHUzUY_J=withCSS(Component,css,\"framer-ankia\");export default FramerpNHUzUY_J;FramerpNHUzUY_J.displayName=\"web / Course Card\";FramerpNHUzUY_J.defaultProps={height:273,width:515};addPropertyControls(FramerpNHUzUY_J,{g6Gj_B3C8:{defaultValue:\"[\uAE30\uAC04 \uD55C\uC815 \uBB34\uB8CC \uAC15\uC758]\",displayTextArea:false,title:\"smallTitle\",type:ControlType.String},tELsFd721:{title:\"Link\",type:ControlType.Link},SNA6l19Uu:{defaultValue:\"<p>ComfyUI \uBC30\uC6B0\uACE0<br>AI \uC5F0\uC608\uC778 \uBAA8\uB378 \uB9CC\uB4E4\uAE30</p>\",title:\"subTitle\",type:ControlType.RichText},OF8b_4AWY:{defaultValue:\"<p>ComfyUI \uAC00 \uCC98\uC74C \uC774\uC2E0\uAC00\uC694?<br>\uC774 \uAC15\uC758\uB97C \uD1B5\uD574  UI \uB97C Comfy \uC2DC\uC791\uD574 \uBCF4\uC138\uC694<br><br>\uC2E4\uC81C \uAD11\uACE0 \uBAA8\uB378\uC744 \uB9CC\uB4E4\uBA74\uC11C,<br>AI \uAC00 \uC5B4\uB5BB\uAC8C \uC791\uB3D9\uD558\uB294\uC9C0 \uAD6C\uCCB4\uC801\uC73C\uB85C \uBC30\uC6CC\uBCF4\uC2E4 \uC218 \uC788\uC2B5\uB2C8\uB2E4</p>\",title:\"content\",type:ControlType.RichText}});addFonts(FramerpNHUzUY_J,[{explicitInter:true,fonts:[{family:\"Pretendard Bold\",source:\"custom\",url:\"https://framerusercontent.com/assets/GHJPBmd4yxGhh5oPHY0HmX7Jl4.woff2\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts),...getFontsFromSharedStyle(sharedStyle2.fonts),...getFontsFromSharedStyle(sharedStyle3.fonts),...getFontsFromSharedStyle(sharedStyle4.fonts),...getFontsFromSharedStyle(sharedStyle5.fonts),...getFontsFromSharedStyle(sharedStyle6.fonts),...componentPresets.fonts?.[\"bGrj_P5Hk\"]?getFontsFromComponentPreset(componentPresets.fonts?.[\"bGrj_P5Hk\"]):[]],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerpNHUzUY_J\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerVariables\":\"{\\\"g6Gj_B3C8\\\":\\\"smallTitle\\\",\\\"tELsFd721\\\":\\\"link\\\",\\\"SNA6l19Uu\\\":\\\"subTitle\\\",\\\"OF8b_4AWY\\\":\\\"content\\\"}\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"515\",\"framerIntrinsicHeight\":\"273\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./pNHUzUY_J.map", "// Generated by Framer (c85c929)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,Link,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const enabledGestures={IyQPoiN0q:{hover:true,pressed:true}};const cycleOrder=[\"NpaQO0Dn0\",\"vps4u2qCI\",\"IyQPoiN0q\",\"AzUj4u7TL\",\"eoD3Go7N_\"];const serializationHash=\"framer-4BjFL\";const variantClassNames={AzUj4u7TL:\"framer-v-14l9mr8\",eoD3Go7N_:\"framer-v-1g4co6h\",IyQPoiN0q:\"framer-v-1luoeai\",NpaQO0Dn0:\"framer-v-12mie5b\",vps4u2qCI:\"framer-v-v4758p\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={\"Variant 1\":\"NpaQO0Dn0\",\"Variant 2\":\"vps4u2qCI\",mobile:\"eoD3Go7N_\",primary:\"IyQPoiN0q\",secondary:\"AzUj4u7TL\"};const getProps=({height,id,link,newTab,onClick,text,width,...props})=>{return{...props,qdfjHAymA:onClick??props.qdfjHAymA,qGd_L3zY2:text??props.qGd_L3zY2??\"Button\",s4doLI9Je:link??props.s4doLI9Je,sLwHAfjpJ:newTab??props.sLwHAfjpJ??true,variant:humanReadableVariantMap[props.variant]??props.variant??\"NpaQO0Dn0\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,qGd_L3zY2,qdfjHAymA,s4doLI9Je,sLwHAfjpJ,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"NpaQO0Dn0\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap15wv0rg=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(qdfjHAymA){const res=await qdfjHAymA(...args);if(res===false)return false;}});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:s4doLI9Je,motionChild:true,nodeId:\"NpaQO0Dn0\",openInNewTab:true,scopeId:\"e26fWTkl8\",smoothScroll:true,...addPropertyOverrides({eoD3Go7N_:{openInNewTab:sLwHAfjpJ},IyQPoiN0q:{openInNewTab:sLwHAfjpJ}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-12mie5b\",className,classNames)} framer-f9b8tr`,\"data-framer-name\":\"Variant 1\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"NpaQO0Dn0\",onTap:onTap15wv0rg,ref:refBinding,style:{backgroundColor:\"rgb(4, 13, 215)\",...style},variants:{\"IyQPoiN0q-hover\":{backgroundColor:\"rgb(0, 75, 204)\"},\"IyQPoiN0q-pressed\":{backgroundColor:\"rgb(0, 75, 204)\"},AzUj4u7TL:{backgroundColor:\"var(--token-ba113d51-2711-49f7-8d1f-4c48e4f03721, rgb(252, 235, 239))\"},eoD3Go7N_:{backgroundColor:\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"},IyQPoiN0q:{backgroundColor:\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"},vps4u2qCI:{backgroundColor:\"var(--token-44346858-b4d1-40d6-96a5-04ed45d16ac4, rgb(190, 255, 173))\"}},...addPropertyOverrides({\"IyQPoiN0q-hover\":{\"data-framer-name\":undefined},\"IyQPoiN0q-pressed\":{\"data-framer-name\":undefined},AzUj4u7TL:{\"data-framer-name\":\"secondary\"},eoD3Go7N_:{\"data-framer-name\":\"mobile\"},IyQPoiN0q:{\"data-framer-name\":\"primary\"},vps4u2qCI:{\"data-framer-name\":\"Variant 2\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTYwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"20px\",\"--framer-font-weight\":\"600\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(189, 255, 173))\"},children:\"\uC2E0\uCCAD\uD558\uAE30 (7/9 \uC2DC\uC791) \u2500 \uC120\uCC29\uC21C 15\uBA85\"})}),className:\"framer-cra20u\",\"data-framer-name\":\"Learn more\",fonts:[\"__SystemDefault-600-normal__\"],layoutDependency:layoutDependency,layoutId:\"INXYWnQX5\",style:{\"--extracted-r6o4lv\":\"rgb(189, 255, 173)\"},text:qGd_L3zY2,variants:{AzUj4u7TL:{\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"},eoD3Go7N_:{\"--extracted-r6o4lv\":\"var(--token-3a8ad279-9069-49db-9c10-595ba41895ec, rgb(252, 235, 239))\"},IyQPoiN0q:{\"--extracted-r6o4lv\":\"var(--token-3a8ad279-9069-49db-9c10-595ba41895ec, rgb(252, 235, 239))\"},vps4u2qCI:{\"--extracted-r6o4lv\":\"var(--token-2553e41c-f318-4f53-b171-f4e13a8d7a0f, rgb(4, 13, 215))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({AzUj4u7TL:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTYwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"20px\",\"--framer-font-weight\":\"600\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250)))\"},children:\"Button\"})})},eoD3Go7N_:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTYwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-weight\":\"600\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-3a8ad279-9069-49db-9c10-595ba41895ec, rgb(252, 235, 239)))\"},children:\"Button\"})})},IyQPoiN0q:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTYwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"20px\",\"--framer-font-weight\":\"600\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-3a8ad279-9069-49db-9c10-595ba41895ec, rgb(252, 235, 239)))\"},children:\"Button\"})})},vps4u2qCI:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTYwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"20px\",\"--framer-font-weight\":\"600\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-2553e41c-f318-4f53-b171-f4e13a8d7a0f, rgb(4, 13, 215)))\"},children:\"Button\"})})}},baseVariant,gestureVariant)})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-4BjFL.framer-f9b8tr, .framer-4BjFL .framer-f9b8tr { display: block; }\",\".framer-4BjFL.framer-12mie5b { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; padding: 16px 20px 16px 20px; position: relative; text-decoration: none; width: min-content; }\",\".framer-4BjFL .framer-cra20u { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-4BjFL.framer-v-1g4co6h.framer-12mie5b { padding: 12px 16px 12px 16px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 56\n * @framerIntrinsicWidth 102\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"vps4u2qCI\":{\"layout\":[\"auto\",\"auto\"]},\"IyQPoiN0q\":{\"layout\":[\"auto\",\"auto\"]},\"AzUj4u7TL\":{\"layout\":[\"auto\",\"auto\"]},\"eoD3Go7N_\":{\"layout\":[\"auto\",\"auto\"]},\"DxGZUWZmE\":{\"layout\":[\"auto\",\"auto\"]},\"pRaBWh2dI\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"qGd_L3zY2\":\"text\",\"qdfjHAymA\":\"onClick\",\"s4doLI9Je\":\"link\",\"sLwHAfjpJ\":\"newTab\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const Framere26fWTkl8=withCSS(Component,css,\"framer-4BjFL\");export default Framere26fWTkl8;Framere26fWTkl8.displayName=\"web / Button\";Framere26fWTkl8.defaultProps={height:56,width:102};addPropertyControls(Framere26fWTkl8,{variant:{options:[\"NpaQO0Dn0\",\"vps4u2qCI\",\"IyQPoiN0q\",\"AzUj4u7TL\",\"eoD3Go7N_\"],optionTitles:[\"Variant 1\",\"Variant 2\",\"primary\",\"secondary\",\"mobile\"],title:\"Variant\",type:ControlType.Enum},qGd_L3zY2:{defaultValue:\"Button\",displayTextArea:false,placeholder:\"\",title:\"Text\",type:ControlType.String},qdfjHAymA:{title:\"On Click\",type:ControlType.EventHandler},s4doLI9Je:{title:\"Link\",type:ControlType.Link},sLwHAfjpJ:{defaultValue:true,title:\"New Tab\",type:ControlType.Boolean}});addFonts(Framere26fWTkl8,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Framere26fWTkl8\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicHeight\":\"56\",\"framerImmutableVariables\":\"true\",\"framerColorSyntax\":\"true\",\"framerVariables\":\"{\\\"qGd_L3zY2\\\":\\\"text\\\",\\\"qdfjHAymA\\\":\\\"onClick\\\",\\\"s4doLI9Je\\\":\\\"link\\\",\\\"sLwHAfjpJ\\\":\\\"newTab\\\"}\",\"framerAutoSizeImages\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"vps4u2qCI\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"IyQPoiN0q\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"AzUj4u7TL\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"eoD3Go7N_\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"DxGZUWZmE\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"pRaBWh2dI\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"102\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./e26fWTkl8.map", "// Generated by Framer (c563d2c)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentPresetsProvider,ControlType,cx,getFontsFromComponentPreset,getFontsFromSharedStyle,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import*as componentPresets from\"https://framerusercontent.com/modules/OfOZVxq5O2A2YDp5xhsS/eLxSbsPnTqqxK2rSbdhk/componentPresets.js\";import*as sharedStyle3 from\"https://framerusercontent.com/modules/qf8WnaeGJ3SKlV1O1xQl/OpcN00bADf7Cx0Plvexi/D3DXxP6A7.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/ORPUlZI3WxbcHtHvUanj/aIKrwl6RsacGktaFjPfX/DXjdkQnI3.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/u1mf9oEcsdT6ZY35EKju/aKBdc0OCLwIFIjQkcI48/kevPKtV7h.js\";import*as sharedStyle5 from\"https://framerusercontent.com/modules/gpKoVqFiaHhnd0ovD92t/6weiTaG8fJrKaTmoa24o/R0ztcLGWn.js\";import*as sharedStyle4 from\"https://framerusercontent.com/modules/E8iS3ykzc4VVNFg4Q0j4/e0p5VUklaAGl2DkhwD5L/sJ2QEITYH.js\";import*as sharedStyle2 from\"https://framerusercontent.com/modules/Ckw3BYDTnwzv14e9Z0QG/JufQFcF7Uj7bjcOGNBav/VKSZtsCFD.js\";const serializationHash=\"framer-HPdTI\";const variantClassNames={QKratsr4q:\"framer-v-1z94h\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,title,width,...props})=>{return{...props,ZjOataw8x:title??props.ZjOataw8x??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{children:\"\uC9C4\uC9DC \uAD11\uACE0 \uC774\uBBF8\uC9C0\uB97C \uB9CC\uB4E4\uBA74\uC11C \uBC30\uC6B0\uB294 AI (ComfyUI)\"})})};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,ZjOataw8x,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"QKratsr4q\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className,sharedStyle2.className,sharedStyle3.className,sharedStyle4.className,sharedStyle5.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1z94h\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"QKratsr4q\",ref:ref??ref1,style:{...style},children:/*#__PURE__*/_jsx(ComponentPresetsProvider,{presets:{\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\":componentPresets.props[\"bGrj_P5Hk\"]},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:ZjOataw8x,className:\"framer-1pa6yoz\",fonts:[\"CUSTOM;Pretendard Bold\"],layoutDependency:layoutDependency,layoutId:\"qhfetsWw0\",style:{\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},stylesPresetsClassNames:{a:\"framer-styles-preset-1x5q87\",h1:\"framer-styles-preset-1x4saly\",h2:\"framer-styles-preset-1uqk9bj\",h3:\"framer-styles-preset-12fssox\",img:\"framer-styles-preset-1d582qa\",p:\"framer-styles-preset-1shyyex\"},verticalAlignment:\"top\",withExternalLayout:true})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-HPdTI.framer-d3l0lq, .framer-HPdTI .framer-d3l0lq { display: block; }\",\".framer-HPdTI.framer-1z94h { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 485px; }\",\".framer-HPdTI .framer-1pa6yoz { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-HPdTI.framer-1z94h { gap: 0px; } .framer-HPdTI.framer-1z94h > * { margin: 0px; margin-bottom: calc(10px / 2); margin-top: calc(10px / 2); } .framer-HPdTI.framer-1z94h > :first-child { margin-top: 0px; } .framer-HPdTI.framer-1z94h > :last-child { margin-bottom: 0px; } }\",...sharedStyle.css,...sharedStyle1.css,...sharedStyle2.css,...sharedStyle3.css,...sharedStyle4.css,...sharedStyle5.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 252\n * @framerIntrinsicWidth 485\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"ZjOataw8x\":\"title\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerqZtbqVS6g=withCSS(Component,css,\"framer-HPdTI\");export default FramerqZtbqVS6g;FramerqZtbqVS6g.displayName=\"class / Course Title\";FramerqZtbqVS6g.defaultProps={height:252,width:485};addPropertyControls(FramerqZtbqVS6g,{ZjOataw8x:{defaultValue:\"<h1>\uC9C4\uC9DC \uAD11\uACE0 \uC774\uBBF8\uC9C0\uB97C \uB9CC\uB4E4\uBA74\uC11C \uBC30\uC6B0\uB294 AI (ComfyUI)</h1>\",title:\"Title\",type:ControlType.RichText}});addFonts(FramerqZtbqVS6g,[{explicitInter:true,fonts:[{family:\"Pretendard Bold\",source:\"custom\",url:\"https://framerusercontent.com/assets/GHJPBmd4yxGhh5oPHY0HmX7Jl4.woff2\"}]},...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts),...getFontsFromSharedStyle(sharedStyle2.fonts),...getFontsFromSharedStyle(sharedStyle3.fonts),...getFontsFromSharedStyle(sharedStyle4.fonts),...getFontsFromSharedStyle(sharedStyle5.fonts),...componentPresets.fonts?.[\"bGrj_P5Hk\"]?getFontsFromComponentPreset(componentPresets.fonts?.[\"bGrj_P5Hk\"]):[]],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerqZtbqVS6g\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"252\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"485\",\"framerVariables\":\"{\\\"ZjOataw8x\\\":\\\"title\\\"}\",\"framerComponentViewportWidth\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./qZtbqVS6g.map", "// Generated by Framer (15813d8)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const cycleOrder=[\"m6CGN0c1a\",\"EOXxliv42\",\"DmlfyxLV4\",\"gu8c0uaz0\"];const serializationHash=\"framer-XKPpq\";const variantClassNames={DmlfyxLV4:\"framer-v-10imz3x\",EOXxliv42:\"framer-v-13hxbjr\",gu8c0uaz0:\"framer-v-1cwx5gn\",m6CGN0c1a:\"framer-v-z3vf65\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={blue300:\"m6CGN0c1a\",positive:\"gu8c0uaz0\",primary500:\"EOXxliv42\",primary700:\"DmlfyxLV4\"};const getProps=({height,id,title,width,...props})=>{var _ref,_humanReadableVariantMap_props_variant,_ref1;return{...props,HmIe2CS40:(_ref=title!==null&&title!==void 0?title:props.HmIe2CS40)!==null&&_ref!==void 0?_ref:\"Basic\",variant:(_ref1=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref1!==void 0?_ref1:\"m6CGN0c1a\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,HmIe2CS40,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"m6CGN0c1a\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-z3vf65\",className,classNames),\"data-framer-name\":\"blue300\",layoutDependency:layoutDependency,layoutId:\"m6CGN0c1a\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{backgroundColor:\"rgba(0, 153, 255, 0.1)\",borderBottomLeftRadius:5,borderBottomRightRadius:5,borderTopLeftRadius:5,borderTopRightRadius:5,...style},variants:{DmlfyxLV4:{backgroundColor:\"rgba(0, 92, 250, 0.1)\"},EOXxliv42:{backgroundColor:\"rgba(32, 128, 253, 0.1)\"},gu8c0uaz0:{backgroundColor:\"rgba(14, 183, 131, 0.1)\"}},...addPropertyOverrides({DmlfyxLV4:{\"data-framer-name\":\"primary700\"},EOXxliv42:{\"data-framer-name\":\"primary500\"},gu8c0uaz0:{\"data-framer-name\":\"positive\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTcwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"10px\",\"--framer-font-weight\":\"700\",\"--framer-line-height\":\"11px\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(0, 153, 255))\",\"--framer-text-transform\":\"uppercase\"},children:\"Basic\"})}),className:\"framer-ugzqh6\",fonts:[\"__SystemDefault-700-normal__\"],layoutDependency:layoutDependency,layoutId:\"S7iSxDPRh\",style:{\"--extracted-r6o4lv\":\"rgb(0, 153, 255)\"},text:HmIe2CS40,variants:{DmlfyxLV4:{\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"},EOXxliv42:{\"--extracted-r6o4lv\":\"rgb(32, 128, 253)\"},gu8c0uaz0:{\"--extracted-r6o4lv\":\"rgb(14, 183, 131)\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({DmlfyxLV4:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTcwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"10px\",\"--framer-font-weight\":\"700\",\"--framer-line-height\":\"11px\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250)))\",\"--framer-text-transform\":\"uppercase\"},children:\"Basic\"})})},EOXxliv42:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTcwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"10px\",\"--framer-font-weight\":\"700\",\"--framer-line-height\":\"11px\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(32, 128, 253))\",\"--framer-text-transform\":\"uppercase\"},children:\"Basic\"})})},gu8c0uaz0:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"X19TeXN0ZW1EZWZhdWx0LTcwMC1ub3JtYWxfXw==\",\"--framer-font-family\":'\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif, \"System Default\", sans-serif',\"--framer-font-size\":\"10px\",\"--framer-font-weight\":\"700\",\"--framer-line-height\":\"11px\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(14, 183, 131))\",\"--framer-text-transform\":\"uppercase\"},children:\"Basic\"})})}},baseVariant,gestureVariant)})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-XKPpq.framer-pyt4e2, .framer-XKPpq .framer-pyt4e2 { display: block; }\",\".framer-XKPpq.framer-z3vf65 { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; padding: 3px 4px 3px 4px; position: relative; width: min-content; }\",\".framer-XKPpq .framer-ugzqh6 { -webkit-user-select: none; flex: none; height: auto; pointer-events: auto; position: relative; user-select: none; white-space: pre; width: auto; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-XKPpq.framer-z3vf65 { gap: 0px; } .framer-XKPpq.framer-z3vf65 > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-XKPpq.framer-z3vf65 > :first-child { margin-top: 0px; } .framer-XKPpq.framer-z3vf65 > :last-child { margin-bottom: 0px; } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 17\n * @framerIntrinsicWidth 40\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"EOXxliv42\":{\"layout\":[\"auto\",\"auto\"]},\"DmlfyxLV4\":{\"layout\":[\"auto\",\"auto\"]},\"gu8c0uaz0\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"HmIe2CS40\":\"title\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerL_qgV81kS=withCSS(Component,css,\"framer-XKPpq\");export default FramerL_qgV81kS;FramerL_qgV81kS.displayName=\"class / Badge\";FramerL_qgV81kS.defaultProps={height:17,width:40};addPropertyControls(FramerL_qgV81kS,{variant:{options:[\"m6CGN0c1a\",\"EOXxliv42\",\"DmlfyxLV4\",\"gu8c0uaz0\"],optionTitles:[\"blue300\",\"primary500\",\"primary700\",\"positive\"],title:\"Variant\",type:ControlType.Enum},HmIe2CS40:{defaultValue:\"Basic\",displayTextArea:false,title:\"Title\",type:ControlType.String}});addFonts(FramerL_qgV81kS,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerL_qgV81kS\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"HmIe2CS40\\\":\\\"title\\\"}\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"EOXxliv42\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"DmlfyxLV4\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"gu8c0uaz0\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicWidth\":\"40\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"17\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./L_qgV81kS.map", "// Generated by Framer (15813d8)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,RichText,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import ClassBadge from\"https://framerusercontent.com/modules/PPKGDPDpNwE7Pib5UrtX/9q40P0jbWZu2mrfDKAmR/L_qgV81kS.js\";const ClassBadgeFonts=getFonts(ClassBadge);const enabledGestures={IohDfcPBy:{hover:true}};const cycleOrder=[\"IohDfcPBy\",\"NZfMI2NWA\",\"DLrRrcEgb\"];const serializationHash=\"framer-e8eSn\";const variantClassNames={DLrRrcEgb:\"framer-v-rjx21w\",IohDfcPBy:\"framer-v-1jgcywx\",NZfMI2NWA:\"framer-v-1r9jacy\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const isSet=value=>{return value!==undefined&&value!==null&&value!==\"\";};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={active:\"NZfMI2NWA\",default:\"IohDfcPBy\",locked:\"DLrRrcEgb\"};const getProps=({category,height,id,onClick,showBadge,showBadges,title,width,...props})=>{var _ref,_humanReadableVariantMap_props_variant,_ref1;return{...props,B_OfjITaX:showBadges!==null&&showBadges!==void 0?showBadges:props.B_OfjITaX,BsCHs94Gy:category!==null&&category!==void 0?category:props.BsCHs94Gy,K0LT0h_gV:(_ref=title!==null&&title!==void 0?title:props.K0LT0h_gV)!==null&&_ref!==void 0?_ref:\"Comfy UI \uC124\uCE58\uD558\uAE30 (10:23)\",oaG9Chr4C:showBadge!==null&&showBadge!==void 0?showBadge:props.oaG9Chr4C,variant:(_ref1=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref1!==void 0?_ref1:\"IohDfcPBy\",vUdH30LGf:onClick!==null&&onClick!==void 0?onClick:props.vUdH30LGf};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,vUdH30LGf,K0LT0h_gV,B_OfjITaX,oaG9Chr4C,BsCHs94Gy,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"IohDfcPBy\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap1rr2kdx=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(vUdH30LGf){const res=await vUdH30LGf(...args);if(res===false)return false;}});const ref1=React.useRef(null);const isDisplayed=()=>{if(baseVariant===\"DLrRrcEgb\")return true;return false;};const visible=isSet(BsCHs94Gy);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-1jgcywx\",className,classNames),\"data-framer-name\":\"default\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"IohDfcPBy\",onTap:onTap1rr2kdx,ref:ref!==null&&ref!==void 0?ref:ref1,style:{borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,...style},...addPropertyOverrides({\"IohDfcPBy-hover\":{\"data-framer-name\":undefined},DLrRrcEgb:{\"data-framer-name\":\"locked\",\"data-highlight\":undefined,onTap:undefined},NZfMI2NWA:{\"data-framer-name\":\"active\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgU2VtaUJvbGQ=\",\"--framer-font-family\":'\"Pretendard SemiBold\", \"Pretendard SemiBold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-letter-spacing\":\"-0.2px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-26444142-8ce9-44e5-934a-21ee2c38f77b, rgb(25, 20, 57)))\"},children:\"Comfy UI \uC124\uCE58\uD558\uAE30 (10:23)\"})}),className:\"framer-229wnw\",fonts:[\"CUSTOM;Pretendard SemiBold\"],layoutDependency:layoutDependency,layoutId:\"sUqLJYXyu\",style:{\"--extracted-r6o4lv\":\"var(--token-26444142-8ce9-44e5-934a-21ee2c38f77b, rgb(25, 20, 57))\",\"--framer-link-current-text-color\":\"var(--token-797ef18e-f527-41d0-aadb-3551de64ffca, rgb(34, 0, 255))\",\"--framer-link-hover-text-color\":\"var(--token-797ef18e-f527-41d0-aadb-3551de64ffca, rgb(34, 0, 255))\",\"--framer-link-text-color\":\"var(--token-26444142-8ce9-44e5-934a-21ee2c38f77b, rgb(25, 20, 57))\",\"--framer-link-text-decoration\":\"none\"},text:K0LT0h_gV,variants:{\"IohDfcPBy-hover\":{\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"},DLrRrcEgb:{\"--extracted-r6o4lv\":\"rgb(186, 186, 186)\"},NZfMI2NWA:{\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({\"IohDfcPBy-hover\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgU2VtaUJvbGQ=\",\"--framer-font-family\":'\"Pretendard SemiBold\", \"Pretendard SemiBold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-letter-spacing\":\"-0.2px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250)))\"},children:\"Comfy UI \uC124\uCE58\uD558\uAE30 (10:23)\"})})},DLrRrcEgb:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgU2VtaUJvbGQ=\",\"--framer-font-family\":'\"Pretendard SemiBold\", \"Pretendard SemiBold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-letter-spacing\":\"-0.2px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(186, 186, 186))\"},children:\"Comfy UI \uC124\uCE58\uD558\uAE30 (10:23)\"})})},NZfMI2NWA:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgU2VtaUJvbGQ=\",\"--framer-font-family\":'\"Pretendard SemiBold\", \"Pretendard SemiBold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-letter-spacing\":\"-0.2px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250)))\"},children:\"Comfy UI \uC124\uCE58\uD558\uAE30 (10:23)\"})})}},baseVariant,gestureVariant)}),isDisplayed()&&/*#__PURE__*/_jsx(SVG,{className:\"framer-zlss69\",\"data-framer-name\":\"graphic\",fill:\"black\",intrinsicHeight:16,intrinsicWidth:16,layoutDependency:layoutDependency,layoutId:\"yGrP9QxMh\",svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" viewBox=\"0 0 24 24\" style=\"display:block;margin:0 auto\"><path d=\"M5 22a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2Zm2-11V7a5 5 0 0 1 10 0v4\" fill=\"transparent\" stroke-width=\"2\" stroke=\"#bababa\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>',withExternalLayout:true}),B_OfjITaX&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ku5z74\",layoutDependency:layoutDependency,layoutId:\"tuaVIGw3h\",children:[visible&&/*#__PURE__*/_jsx(ComponentViewportProvider,{height:17,y:((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+(16+(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||53)-32-(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||53)-32)*1)/2)+(0+((((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||53)-32)*1-0-17)/2),...addPropertyOverrides({DLrRrcEgb:{y:((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+(16+(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||74)-32-(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||74)-32)*1)/2)+(0+((((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||74)-32)*1-0-17)/2)}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1gv8558-container\",layoutDependency:layoutDependency,layoutId:\"gawDjmk21-container\",children:/*#__PURE__*/_jsx(ClassBadge,{height:\"100%\",HmIe2CS40:BsCHs94Gy,id:\"gawDjmk21\",layoutId:\"gawDjmk21\",variant:\"m6CGN0c1a\",width:\"100%\"})})}),oaG9Chr4C&&/*#__PURE__*/_jsx(ComponentViewportProvider,{height:17,y:((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+(16+(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||53)-32-(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||53)-32)*1)/2)+(0+((((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||53)-32)*1-0-17)/2),...addPropertyOverrides({DLrRrcEgb:{y:((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+(16+(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||74)-32-(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||74)-32)*1)/2)+(0+((((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||74)-32)*1-0-17)/2)}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-hp145s-container\",layoutDependency:layoutDependency,layoutId:\"Sl0Yq_O8n-container\",children:/*#__PURE__*/_jsx(ClassBadge,{height:\"100%\",HmIe2CS40:\"New\",id:\"Sl0Yq_O8n\",layoutId:\"Sl0Yq_O8n\",variant:\"m6CGN0c1a\",width:\"100%\"})})})]})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-e8eSn.framer-4dh2y1, .framer-e8eSn .framer-4dh2y1 { display: block; }\",\".framer-e8eSn.framer-1jgcywx { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 48px; height: min-content; justify-content: flex-start; overflow: visible; padding: 16px 4px 16px 4px; position: relative; width: 200px; }\",\".framer-e8eSn .framer-229wnw { flex: 1 0 0px; height: auto; overflow: visible; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; }\",\".framer-e8eSn .framer-zlss69 { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 16px); position: relative; width: 16px; }\",\".framer-e8eSn .framer-1ku5z74 { align-content: center; align-items: center; align-self: stretch; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: auto; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-e8eSn .framer-1gv8558-container, .framer-e8eSn .framer-hp145s-container { flex: none; height: auto; position: relative; width: auto; z-index: 1; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-e8eSn.framer-1jgcywx, .framer-e8eSn .framer-1ku5z74 { gap: 0px; } .framer-e8eSn.framer-1jgcywx > * { margin: 0px; margin-left: calc(48px / 2); margin-right: calc(48px / 2); } .framer-e8eSn.framer-1jgcywx > :first-child, .framer-e8eSn .framer-1ku5z74 > :first-child { margin-left: 0px; } .framer-e8eSn.framer-1jgcywx > :last-child, .framer-e8eSn .framer-1ku5z74 > :last-child { margin-right: 0px; } .framer-e8eSn .framer-1ku5z74 > * { margin: 0px; margin-left: calc(8px / 2); margin-right: calc(8px / 2); } }\",\".framer-e8eSn.framer-v-rjx21w.framer-1jgcywx { cursor: unset; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 53\n * @framerIntrinsicWidth 200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"NZfMI2NWA\":{\"layout\":[\"fixed\",\"auto\"]},\"DLrRrcEgb\":{\"layout\":[\"fixed\",\"auto\"]},\"HvNgYiFQS\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"vUdH30LGf\":\"onClick\",\"K0LT0h_gV\":\"title\",\"B_OfjITaX\":\"showBadges\",\"oaG9Chr4C\":\"showBadge\",\"BsCHs94Gy\":\"category\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerrTlTWfSvU=withCSS(Component,css,\"framer-e8eSn\");export default FramerrTlTWfSvU;FramerrTlTWfSvU.displayName=\"class / Video Item\";FramerrTlTWfSvU.defaultProps={height:53,width:200};addPropertyControls(FramerrTlTWfSvU,{variant:{options:[\"IohDfcPBy\",\"NZfMI2NWA\",\"DLrRrcEgb\"],optionTitles:[\"default\",\"active\",\"locked\"],title:\"Variant\",type:ControlType.Enum},vUdH30LGf:{title:\"On Click\",type:ControlType.EventHandler},K0LT0h_gV:{defaultValue:\"Comfy UI \uC124\uCE58\uD558\uAE30 (10:23)\",displayTextArea:false,title:\"title\",type:ControlType.String},B_OfjITaX:{defaultValue:false,title:\"showBadges\",type:ControlType.Boolean},oaG9Chr4C:{defaultValue:false,title:\"showBadge\",type:ControlType.Boolean},BsCHs94Gy:{defaultValue:\"\",displayTextArea:false,placeholder:\"\",title:\"category\",type:ControlType.String}});addFonts(FramerrTlTWfSvU,[{explicitInter:true,fonts:[{family:\"Pretendard SemiBold\",source:\"custom\",url:\"https://framerusercontent.com/assets/DXCK3bs3vdiYSbHJOQav9W2nkwk.woff2\"}]},...ClassBadgeFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerrTlTWfSvU\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"NZfMI2NWA\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"DLrRrcEgb\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"HvNgYiFQS\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerVariables\":\"{\\\"vUdH30LGf\\\":\\\"onClick\\\",\\\"K0LT0h_gV\\\":\\\"title\\\",\\\"B_OfjITaX\\\":\\\"showBadges\\\",\\\"oaG9Chr4C\\\":\\\"showBadge\\\",\\\"BsCHs94Gy\\\":\\\"category\\\"}\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"53\",\"framerIntrinsicWidth\":\"200\",\"framerImmutableVariables\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./rTlTWfSvU.map", "// Generated by Framer (861d57e)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,cx,getFontsFromSharedStyle,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/1PPf8Z5LxViZZGNUlf8W/ekChcq8DOCbOnMvXnsjx/Y9iy1zFI3.js\";const serializationHash=\"framer-grw6A\";const variantClassNames={hGQhNbWFT:\"framer-v-1n8mczs\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"hGQhNbWFT\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1n8mczs\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"hGQhNbWFT\",ref:refBinding,style:{...style},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250)))\"},children:\"[\uC911\uC694 \uACF5\uC9C0] Harbor School \uC804\uC6A9 ComfyUI \uB77C\uC774\uD2B8\uB2DD \uD15C\uD50C\uB9BF \uCD9C\uC2DC\"}),/*#__PURE__*/_jsxs(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-2gxw0f, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:[\"\\b\uC124\uCE58, \uBAA8\uB378 \uB2E4\uC6B4\uB85C\uB4F1 \uBCF5\uC7A1\uD55C \uACFC\uC815 \uC5C6\uC774 \",/*#__PURE__*/_jsx(motion.br,{}),\"\uD55C\uBC88\uC5D0 \uAC15\uC758\uC5D0 \uD3EC\uD568\uB41C \uB0B4\uC6A9\uC744 \uB530\uB77C\uC624\uC2E4 \uC218 \uC788\uC2B5\uB2C8\uB2E4\"]}),/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-1iakedh, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:/*#__PURE__*/_jsx(Link,{href:\"https://lightning.ai/harborschool/studios/harbor-school-ai-comfyui\",motionChild:true,nodeId:\"nDLlFj8sx\",openInNewTab:true,relValues:[],scopeId:\"U_w7ouzJ4\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-pjlu09\",\"data-styles-preset\":\"Y9iy1zFI3\",children:\"\u2192 \uB77C\uC774\uD2B8\uB2DD \uC2A4\uD29C\uB514\uC624 \uD15C\uD50C\uB9BF \uBC14\uB85C\uAC00\uAE30\"})})})]}),className:\"framer-o499qk\",fonts:[\"CUSTOM;Pretendard Medium\"],layoutDependency:layoutDependency,layoutId:\"nDLlFj8sx\",style:{\"--extracted-1iakedh\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-2gxw0f\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250)))\"},children:\"[\uC774\uBCA4\uD2B8] Nordy AI x Harbor School\"}),/*#__PURE__*/_jsxs(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-2gxw0f, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:[\"nordy.ai \uB9C8\uC774\uD398\uC774\uC9C0 \uCFE0\uD3F0 \uCC3D\uC5D0 \",/*#__PURE__*/_jsx(motion.strong,{children:\"HARBOR-SCHOOL\"}),\" \uB97C \uC785\uB825\uD558\uBA74 \",/*#__PURE__*/_jsx(motion.br,{}),\"15\uC2DC\uAC04 (3\uB9CC\uC6D0 \uC0C1\uB2F9) GPU \uBB34\uB8CC \uC81C\uACF5\"]})]}),className:\"framer-qhtvgo\",fonts:[\"CUSTOM;Pretendard Medium\"],layoutDependency:layoutDependency,layoutId:\"OJMXRjqzq\",style:{\"--extracted-2gxw0f\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-r6o4lv\":\"var(--token-7f4c4d51-297a-47a8-88ad-f45d0af21fef, rgb(0, 93, 250))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-grw6A.framer-1f55drx, .framer-grw6A .framer-1f55drx { display: block; }\",\".framer-grw6A.framer-1n8mczs { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 32px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-grw6A .framer-o499qk, .framer-grw6A .framer-qhtvgo { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 256\n * @framerIntrinsicWidth 414\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerU_w7ouzJ4=withCSS(Component,css,\"framer-grw6A\");export default FramerU_w7ouzJ4;FramerU_w7ouzJ4.displayName=\"class / Info\";FramerU_w7ouzJ4.defaultProps={height:256,width:414};addFonts(FramerU_w7ouzJ4,[{explicitInter:true,fonts:[{family:\"Pretendard Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/epBtQURZXgL4OLYz60X1zhOh4o4.woff2\"}]},...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerU_w7ouzJ4\",\"slots\":[],\"annotations\":{\"framerAutoSizeImages\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicHeight\":\"256\",\"framerIntrinsicWidth\":\"414\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./U_w7ouzJ4.map", "// Generated by Framer (15813d8)\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,Floating,getFonts,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useOverlayState,useVariantState,withCSS,withFX}from\"framer\";import{AnimatePresence,LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import PaymentsPaymentForm from\"https://framerusercontent.com/modules/fC6tZRuwKF5gt2iNqU7K/tBuf6phxcbElwSjeCH2N/ctqoUUpVh.js\";import WebButton from\"https://framerusercontent.com/modules/mzDv8x1AG3iUry9rhWll/yTZYKS7L3gWdaKakQAGM/e26fWTkl8.js\";const WebButtonFonts=getFonts(WebButton);const PaymentsPaymentFormFonts=getFonts(PaymentsPaymentForm);const MotionDivWithFX=withFX(motion.div);const cycleOrder=[\"tcOsmc_jo\",\"gZgzbS5Cq\"];const serializationHash=\"framer-dunMK\";const variantClassNames={gZgzbS5Cq:\"framer-v-1z7eu4\",tcOsmc_jo:\"framer-v-jwlkf\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const transition2={damping:30,delay:0,mass:1,stiffness:400,type:\"spring\"};const animation={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition2,x:0,y:0};const animation1={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition2,x:0,y:0};const animation2={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:0};const Overlay=({children,blockDocumentScrolling,enabled=true})=>{const[visible,setVisible]=useOverlayState({blockDocumentScrolling});return children({hide:()=>setVisible(false),show:()=>setVisible(true),toggle:()=>setVisible(!visible),visible:enabled&&visible});};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={Desktop:\"tcOsmc_jo\",Phone:\"gZgzbS5Cq\"};const getProps=({click,height,id,width,...props})=>{return{...props,Qb7DnJ8iN:click??props.Qb7DnJ8iN,variant:humanReadableVariantMap[props.variant]??props.variant??\"tcOsmc_jo\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,Qb7DnJ8iN,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"tcOsmc_jo\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const qdfjHAymA10lo0u3=({overlay,paginationInfo})=>activeVariantCallback(async(...args)=>{if(Qb7DnJ8iN){const res=await Qb7DnJ8iN(...args);if(res===false)return false;}overlay.show();});const ref1=React.useRef(null);const ref2=React.useRef(null);const ref3=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-jwlkf\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"tcOsmc_jo\",ref:ref??ref1,style:{...style},...addPropertyOverrides({gZgzbS5Cq:{\"data-framer-name\":\"Phone\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(Overlay,{blockDocumentScrolling:false,children:overlay=>/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:56,y:(componentViewport?.y||0)+(0+((componentViewport?.height||56)-0-56)/2),children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-m8mpso-container\",id:`${layoutId}-m8mpso`,layoutDependency:layoutDependency,layoutId:\"dSrX_dmuV-container\",ref:ref2,children:[/*#__PURE__*/_jsx(WebButton,{height:\"100%\",id:\"dSrX_dmuV\",layoutId:\"dSrX_dmuV\",qdfjHAymA:qdfjHAymA10lo0u3({overlay}),qGd_L3zY2:\"\uC218\uAC15 \uC2E0\uCCAD\uD558\uAE30\",sLwHAfjpJ:true,variant:\"IyQPoiN0q\",width:\"100%\"}),/*#__PURE__*/_jsx(AnimatePresence,{children:overlay.visible&&/*#__PURE__*/_jsx(Floating,{alignment:\"center\",anchorRef:ref2,className:cx(serializationHash,classNames,...sharedStyleClassNames),collisionDetection:true,collisionDetectionPadding:20,\"data-framer-portal-id\":`${layoutId}-m8mpso`,offsetX:0,offsetY:10,onDismiss:overlay.hide,placement:\"bottom\",portalSelector:\"#overlay\",safeArea:true,zIndex:11,children:/*#__PURE__*/_jsx(MotionDivWithFX,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation1,className:\"framer-sllywk\",exit:animation,initial:animation2,layoutDependency:layoutDependency,layoutId:\"SRTIlbIkS\",ref:ref3,role:\"dialog\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:10,borderBottomRightRadius:10,borderTopLeftRadius:10,borderTopRightRadius:10,boxShadow:\"0px 10px 20px 0px rgba(0,0,0,0.05)\"},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:537,width:\"292px\",y:(componentViewport?.y||0)+(0+((componentViewport?.height||56)-0-56)/2)+0+0,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-qzr0fv-container\",layoutDependency:layoutDependency,layoutId:\"SLZJIfx7y-container\",children:/*#__PURE__*/_jsx(PaymentsPaymentForm,{height:\"100%\",id:\"SLZJIfx7y\",layoutId:\"SLZJIfx7y\",style:{width:\"100%\"},variant:\"eVKiPLOAw\",width:\"100%\"})})})})})})]})})})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-dunMK.framer-10766ln, .framer-dunMK .framer-10766ln { display: block; }\",\".framer-dunMK.framer-jwlkf { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-dunMK .framer-m8mpso-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-dunMK .framer-sllywk { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; will-change: var(--framer-will-change-override, transform); }\",\".framer-dunMK .framer-qzr0fv-container { flex: none; height: auto; position: relative; width: 292px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-dunMK.framer-jwlkf, .framer-dunMK .framer-sllywk { gap: 0px; } .framer-dunMK.framer-jwlkf > *, .framer-dunMK .framer-sllywk > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-dunMK.framer-jwlkf > :first-child, .framer-dunMK .framer-sllywk > :first-child { margin-left: 0px; } .framer-dunMK.framer-jwlkf > :last-child, .framer-dunMK .framer-sllywk > :last-child { margin-right: 0px; } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 56\n * @framerIntrinsicWidth 148.5\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"gZgzbS5Cq\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"Qb7DnJ8iN\":\"click\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramergMV56Irc9=withCSS(Component,css,\"framer-dunMK\");export default FramergMV56Irc9;FramergMV56Irc9.displayName=\"payments / Payment Button\";FramergMV56Irc9.defaultProps={height:56,width:148.5};addPropertyControls(FramergMV56Irc9,{variant:{options:[\"tcOsmc_jo\",\"gZgzbS5Cq\"],optionTitles:[\"Desktop\",\"Phone\"],title:\"Variant\",type:ControlType.Enum},Qb7DnJ8iN:{title:\"Click\",type:ControlType.EventHandler}});addFonts(FramergMV56Irc9,[{explicitInter:true,fonts:[]},...WebButtonFonts,...PaymentsPaymentFormFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramergMV56Irc9\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"56\",\"framerIntrinsicWidth\":\"148.5\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"gZgzbS5Cq\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerVariables\":\"{\\\"Qb7DnJ8iN\\\":\\\"click\\\"}\",\"framerDisplayContentsDiv\":\"false\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (5bbf1f3)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,cx,getFontsFromSharedStyle,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/1PPf8Z5LxViZZGNUlf8W/ekChcq8DOCbOnMvXnsjx/Y9iy1zFI3.js\";const serializationHash=\"framer-hsAw6\";const variantClassNames={hkOi4v0eI:\"framer-v-19ejqhy\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Variants=motion.create(React.Fragment);const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"hkOi4v0eI\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-19ejqhy\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"hkOi4v0eI\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{...style},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsxs(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-0ebb279a-44c9-4ca9-b5ee-9429bfef2737, rgb(37, 49, 60)))\"},children:[/*#__PURE__*/_jsx(motion.strong,{children:\"[\uC628\uB77C\uC778 Live / 3\uC8FC \uACFC\uC815]\"}),/*#__PURE__*/_jsx(motion.strong,{children:/*#__PURE__*/_jsx(motion.br,{})}),/*#__PURE__*/_jsx(motion.strong,{children:\"\uC9C4\uC9DC \uAD11\uACE0 \uC774\uBBF8\uC9C0\uB97C \uB9CC\uB4E4\uBA74\uC11C \uBC30\uC6B0\uB294 ComfyUI\"}),/*#__PURE__*/_jsx(motion.strong,{children:/*#__PURE__*/_jsx(motion.br,{})}),/*#__PURE__*/_jsx(motion.br,{}),/*#__PURE__*/_jsx(motion.span,{style:{\"--framer-text-color\":\"var(--extracted-143mgqx, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:\"Live \uAE30\uB150 \uCFE0\uD3F0 \uCF54\uB4DC : OPENKAKAO\"}),/*#__PURE__*/_jsx(motion.br,{}),/*#__PURE__*/_jsx(Link,{href:\"https://ai.harbor.school/courses/comfy-for-real-ads-live\",nodeId:\"m9iPTur51\",openInNewTab:true,smoothScroll:false,children:/*#__PURE__*/_jsxs(motion.a,{className:\"framer-styles-preset-pjlu09\",\"data-styles-preset\":\"Y9iy1zFI3\",children:[/*#__PURE__*/_jsx(motion.span,{style:{\"--framer-text-color\":\"var(--extracted-158ds2i, var(--token-7c9a8c52-ae10-4871-a89f-bc8d071de9aa, rgb(0, 93, 250)))\"},children:\"\u2192 \uC2E0\uCCAD\uD558\uAE30 \"}),/*#__PURE__*/_jsx(motion.span,{style:{\"--framer-text-color\":\"var(--extracted-5bx7kw, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:\"(21\uB9CC\uC6D0 \u2192 19\uB9CC\uC6D0)\"})]})})]})}),className:\"framer-kfhtan\",fonts:[\"CUSTOM;Pretendard Medium\"],layoutDependency:layoutDependency,layoutId:\"m9iPTur51\",style:{\"--extracted-143mgqx\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-158ds2i\":\"var(--token-7c9a8c52-ae10-4871-a89f-bc8d071de9aa, rgb(0, 93, 250))\",\"--extracted-5bx7kw\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-r6o4lv\":\"var(--token-0ebb279a-44c9-4ca9-b5ee-9429bfef2737, rgb(37, 49, 60))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsxs(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-line-height\":\"2em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-0ebb279a-44c9-4ca9-b5ee-9429bfef2737, rgb(37, 49, 60)))\"},children:[/*#__PURE__*/_jsx(motion.strong,{children:\"[VOD \uAC15\uC758 / 18\uAC15 \uC644\uC131]\"}),/*#__PURE__*/_jsx(motion.strong,{children:/*#__PURE__*/_jsx(motion.br,{})}),/*#__PURE__*/_jsx(motion.strong,{children:\"\uC9C4\uC9DC \uAD11\uACE0 \uC774\uBBF8\uC9C0\uB97C \uB9CC\uB4E4\uBA74\uC11C \uBC30\uC6B0\uB294 ComfyUI\"}),/*#__PURE__*/_jsx(motion.strong,{children:/*#__PURE__*/_jsx(motion.br,{})}),/*#__PURE__*/_jsx(motion.br,{}),/*#__PURE__*/_jsx(motion.span,{style:{\"--framer-text-color\":\"var(--extracted-143mgqx, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:\"Live \uAE30\uB150 \uCFE0\uD3F0 \uCF54\uB4DC : OPENKAKAO2\"}),/*#__PURE__*/_jsx(motion.br,{}),/*#__PURE__*/_jsx(Link,{href:\"https://ai.harbor.school/courses/comfy-for-real-ads\",nodeId:\"MVHmusnkc\",openInNewTab:true,smoothScroll:false,children:/*#__PURE__*/_jsxs(motion.a,{className:\"framer-styles-preset-pjlu09\",\"data-styles-preset\":\"Y9iy1zFI3\",children:[/*#__PURE__*/_jsx(motion.span,{style:{\"--framer-text-color\":\"var(--extracted-158ds2i, var(--token-7c9a8c52-ae10-4871-a89f-bc8d071de9aa, rgb(0, 93, 250)))\"},children:\"\u2192 \uC2E0\uCCAD\uD558\uAE30 \"}),/*#__PURE__*/_jsx(motion.span,{style:{\"--framer-text-color\":\"var(--extracted-5bx7kw, var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60)))\"},children:\"(35\uB9CC\uC6D0 \u2192 29\uB9CC\uC6D0)\"})]})})]})}),className:\"framer-1q2hi5z\",fonts:[\"CUSTOM;Pretendard Medium\"],layoutDependency:layoutDependency,layoutId:\"MVHmusnkc\",style:{\"--extracted-143mgqx\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-158ds2i\":\"var(--token-7c9a8c52-ae10-4871-a89f-bc8d071de9aa, rgb(0, 93, 250))\",\"--extracted-5bx7kw\":\"var(--token-24683d71-6947-499a-b04a-a14329b3ea4e, rgb(37, 49, 60))\",\"--extracted-r6o4lv\":\"var(--token-0ebb279a-44c9-4ca9-b5ee-9429bfef2737, rgb(37, 49, 60))\"},verticalAlignment:\"top\",withExternalLayout:true})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-hsAw6.framer-1vpqrr0, .framer-hsAw6 .framer-1vpqrr0 { display: block; }\",\".framer-hsAw6.framer-19ejqhy { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 60px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-hsAw6 .framer-kfhtan, .framer-hsAw6 .framer-1q2hi5z { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-hsAw6.framer-19ejqhy { gap: 0px; } .framer-hsAw6.framer-19ejqhy > * { margin: 0px; margin-bottom: calc(60px / 2); margin-top: calc(60px / 2); } .framer-hsAw6.framer-19ejqhy > :first-child { margin-top: 0px; } .framer-hsAw6.framer-19ejqhy > :last-child { margin-bottom: 0px; } }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 380\n * @framerIntrinsicWidth 290.5\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerJ_CUIzUcf=withCSS(Component,css,\"framer-hsAw6\");export default FramerJ_CUIzUcf;FramerJ_CUIzUcf.displayName=\"LiveEventInfo\";FramerJ_CUIzUcf.defaultProps={height:380,width:290.5};addFonts(FramerJ_CUIzUcf,[{explicitInter:true,fonts:[{family:\"Pretendard Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/epBtQURZXgL4OLYz60X1zhOh4o4.woff2\"}]},...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerJ_CUIzUcf\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"290.5\",\"framerIntrinsicHeight\":\"380\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./J_CUIzUcf.map", "import {\n  CourseCard\n} from \"./chunk-SDKSBXQ2.mjs\";\nimport {\n  useGlobalStore\n} from \"./chunk-QHMWAEE2.mjs\";\nimport {\n  isDev\n} from \"./chunk-OBTVI3NH.mjs\";\nimport {\n  courses\n} from \"./chunk-HLCVLHIF.mjs\";\n\n// src/class/ClasList.tsx\nimport { jsx } from \"react/jsx-runtime\";\nfunction ClassList(props) {\n  const [store, setStore] = useGlobalStore();\n  const { user } = store;\n  if (!isDev) {\n    if (!user) return;\n  }\n  const myCourses = Object.keys((user == null ? void 0 : user.access) || {});\n  return /* @__PURE__ */ jsx(\"div\", { className: \"flex flex-col gap-8 justify-center md:flex-row\", children: myCourses.map((course, id) => {\n    const courseInfo = courses[course];\n    if (!courseInfo) return null;\n    return /* @__PURE__ */ jsx(\n      CourseCard,\n      {\n        smallTitle: \"\",\n        subTitle: courses[course].title,\n        content: \"\\uC218\\uAC15 \\uC911 \\uC785\\uB2C8\\uB2E4\",\n        link: courses[course].link,\n        style: { width: \"100%\" }\n      },\n      id\n    );\n  }) });\n}\n\nexport {\n  ClassList\n};\n", "// src/class/Framer101-2.tsx\nimport { motion } from \"framer-motion\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction Framer101_2() {\n  return /* @__PURE__ */ jsxs(\"div\", { className: \"min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100\", children: [\n    /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 md:px-8 lg:px-16 bg-indigo-600 text-white text-center\", children: [\n      /* @__PURE__ */ jsx(\n        motion.h1,\n        {\n          initial: { opacity: 0, y: 50 },\n          animate: { opacity: 1, y: 0 },\n          transition: { duration: 0.8 },\n          className: \"text-5xl font-bold mb-4\",\n          children: \"Framer 101: Master Interactive Design\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        motion.p,\n        {\n          initial: { opacity: 0, y: 50 },\n          animate: { opacity: 1, y: 0 },\n          transition: { duration: 0.8, delay: 0.2 },\n          className: \"text-2xl mb-8\",\n          children: \"Transform your ideas into stunning, interactive prototypes and websites \\u2013 no coding required!\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        motion.button,\n        {\n          initial: { opacity: 0, y: 50 },\n          animate: { opacity: 1, y: 0 },\n          transition: { duration: 0.8, delay: 0.4 },\n          whileHover: { scale: 1.05 },\n          className: \"bg-white text-indigo-600 font-bold py-3 px-6 rounded-full text-lg hover:bg-indigo-100 transition\",\n          children: \"Enroll Now and Start Creating\"\n        }\n      )\n    ] }),\n    /* @__PURE__ */ jsxs(\"section\", { className: \"py-16 px-4 md:px-8 lg:px-16\", children: [\n      /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"Why Choose Our Framer Course?\" }),\n      /* @__PURE__ */ jsxs(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: [\n        /* @__PURE__ */ jsxs(\n          motion.div,\n          {\n            initial: { opacity: 0, y: 50 },\n            whileInView: { opacity: 1, y: 0 },\n            transition: { duration: 0.5 },\n            viewport: { once: true },\n            className: \"bg-white p-6 rounded-lg shadow-lg\",\n            children: [\n              /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-semibold mb-4\", children: \"Hands-On Learning\" }),\n              /* @__PURE__ */ jsx(\"p\", { children: \"Build real projects inspired by top courses like Harbor School's Framer 101 and Fastcampus Framer.\" })\n            ]\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          motion.div,\n          {\n            initial: { opacity: 0, y: 50 },\n            whileInView: { opacity: 1, y: 0 },\n            transition: { duration: 0.5, delay: 0.2 },\n            viewport: { once: true },\n            className: \"bg-white p-6 rounded-lg shadow-lg\",\n            children: [\n              /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-semibold mb-4\", children: \"Expert Instruction\" }),\n              /* @__PURE__ */ jsx(\"p\", { children: \"Learn from industry pros who've created amazing interactive experiences.\" })\n            ]\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          motion.div,\n          {\n            initial: { opacity: 0, y: 50 },\n            whileInView: { opacity: 1, y: 0 },\n            transition: { duration: 0.5, delay: 0.4 },\n            viewport: { once: true },\n            className: \"bg-white p-6 rounded-lg shadow-lg\",\n            children: [\n              /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-semibold mb-4\", children: \"Lifetime Access\" }),\n              /* @__PURE__ */ jsx(\"p\", { children: \"Get unlimited access to course materials and future updates.\" })\n            ]\n          }\n        )\n      ] })\n    ] }),\n    /* @__PURE__ */ jsxs(\"section\", { className: \"py-16 px-4 md:px-8 lg:px-16 bg-gray-100\", children: [\n      /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"What You'll Learn\" }),\n      /* @__PURE__ */ jsxs(\"ul\", { className: \"list-disc pl-8 max-w-3xl mx-auto text-lg\", children: [\n        /* @__PURE__ */ jsx(\n          motion.li,\n          {\n            initial: { opacity: 0, x: -50 },\n            whileInView: { opacity: 1, x: 0 },\n            transition: { duration: 0.5 },\n            viewport: { once: true },\n            children: \"Framer fundamentals and interface navigation\"\n          }\n        ),\n        /* @__PURE__ */ jsx(\n          motion.li,\n          {\n            initial: { opacity: 0, x: -50 },\n            whileInView: { opacity: 1, x: 0 },\n            transition: { duration: 0.5, delay: 0.1 },\n            viewport: { once: true },\n            children: \"Creating responsive layouts and components\"\n          }\n        ),\n        /* @__PURE__ */ jsx(\n          motion.li,\n          {\n            initial: { opacity: 0, x: -50 },\n            whileInView: { opacity: 1, x: 0 },\n            transition: { duration: 0.5, delay: 0.2 },\n            viewport: { once: true },\n            children: \"Advanced animations and interactions\"\n          }\n        ),\n        /* @__PURE__ */ jsx(\n          motion.li,\n          {\n            initial: { opacity: 0, x: -50 },\n            whileInView: { opacity: 1, x: 0 },\n            transition: { duration: 0.5, delay: 0.3 },\n            viewport: { once: true },\n            children: \"Integrating with CMS and data sources\"\n          }\n        ),\n        /* @__PURE__ */ jsx(\n          motion.li,\n          {\n            initial: { opacity: 0, x: -50 },\n            whileInView: { opacity: 1, x: 0 },\n            transition: { duration: 0.5, delay: 0.4 },\n            viewport: { once: true },\n            children: \"Publishing and optimizing your projects\"\n          }\n        )\n      ] })\n    ] }),\n    /* @__PURE__ */ jsxs(\"section\", { className: \"py-16 px-4 md:px-8 lg:px-16\", children: [\n      /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"What Our Students Say\" }),\n      /* @__PURE__ */ jsxs(\"div\", { className: \"grid md:grid-cols-2 gap-8\", children: [\n        /* @__PURE__ */ jsxs(\n          motion.div,\n          {\n            initial: { opacity: 0, scale: 0.9 },\n            whileInView: { opacity: 1, scale: 1 },\n            transition: { duration: 0.5 },\n            viewport: { once: true },\n            className: \"bg-white p-6 rounded-lg shadow-lg\",\n            children: [\n              /* @__PURE__ */ jsx(\"p\", { className: \"italic mb-4\", children: '\"This course transformed how I approach design. Absolutely essential!\"' }),\n              /* @__PURE__ */ jsx(\"p\", { className: \"font-semibold\", children: \"- Alex D., UI Designer\" })\n            ]\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          motion.div,\n          {\n            initial: { opacity: 0, scale: 0.9 },\n            whileInView: { opacity: 1, scale: 1 },\n            transition: { duration: 0.5, delay: 0.2 },\n            viewport: { once: true },\n            className: \"bg-white p-6 rounded-lg shadow-lg\",\n            children: [\n              /* @__PURE__ */ jsx(\"p\", { className: \"italic mb-4\", children: '\"From beginner to pro in weeks. The projects are game-changers.\"' }),\n              /* @__PURE__ */ jsx(\"p\", { className: \"font-semibold\", children: \"- Sarah K., Product Manager\" })\n            ]\n          }\n        )\n      ] })\n    ] }),\n    /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 md:px-8 lg:px-16 bg-indigo-600 text-white text-center\", children: [\n      /* @__PURE__ */ jsx(\n        motion.h2,\n        {\n          initial: { opacity: 0, y: 50 },\n          whileInView: { opacity: 1, y: 0 },\n          transition: { duration: 0.8 },\n          viewport: { once: true },\n          className: \"text-4xl font-bold mb-4\",\n          children: \"Ready to Revolutionize Your Design Skills?\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        motion.p,\n        {\n          initial: { opacity: 0, y: 50 },\n          whileInView: { opacity: 1, y: 0 },\n          transition: { duration: 0.8, delay: 0.2 },\n          viewport: { once: true },\n          className: \"text-xl mb-8\",\n          children: \"Join thousands of designers who've elevated their craft with Framer.\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        motion.button,\n        {\n          initial: { opacity: 0, y: 50 },\n          whileInView: { opacity: 1, y: 0 },\n          transition: { duration: 0.8, delay: 0.4 },\n          whileHover: { scale: 1.05 },\n          viewport: { once: true },\n          className: \"bg-white text-indigo-600 font-bold py-3 px-6 rounded-full text-lg hover:bg-indigo-100 transition\",\n          children: \"Buy Now - Limited Time Offer!\"\n        }\n      )\n    ] })\n  ] });\n}\n\nexport {\n  Framer101_2\n};\n", "// src/class/Framer101-3.tsx\nimport { useState, useEffect } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar colors = {\n  harborBlue: \"#005DFA\",\n  white: \"#FEFDFA\",\n  harborPink: \"#FCEBEF\",\n  textDark: \"#1a202c\",\n  textMedium: \"#4a5568\",\n  textLight: \"#718096\"\n};\nvar CheckIcon = ({ className }) => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className,\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 24 24\",\n    fill: \"currentColor\",\n    children: /* @__PURE__ */ jsx(\n      \"path\",\n      {\n        fillRule: \"evenodd\",\n        d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm13.36-1.814a.75.75 0 10-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 00-1.06 1.06l2.25 2.25a.75.75 0 001.14-.094l3.75-5.25z\",\n        clipRule: \"evenodd\"\n      }\n    )\n  }\n);\nvar StarIcon = ({ className }) => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className,\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 24 24\",\n    fill: \"currentColor\",\n    children: /* @__PURE__ */ jsx(\n      \"path\",\n      {\n        fillRule: \"evenodd\",\n        d: \"M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.007z\",\n        clipRule: \"evenodd\"\n      }\n    )\n  }\n);\nfunction Framer101_3() {\n  const features = [\n    \"\\uD504\\uB808\\uC774\\uBA38\\uC758 \\uBAA8\\uB4E0 \\uAE30\\uB2A5, \\uAE30\\uCD08\\uBD80\\uD130 \\uC2E4\\uBB34\\uAE4C\\uC9C0\",\n    \"Apple.com \\uC2A4\\uD0C0\\uC77C\\uC758 \\uACE0\\uAE09 \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158\",\n    \"\\uC2E4\\uC81C \\uCD9C\\uC2DC \\uAC00\\uB2A5\\uD55C \\uBC18\\uC751\\uD615 \\uC6F9 \\uD504\\uB85C\\uC81D\\uD2B8 \\uC81C\\uC791\",\n    \"\\uB514\\uC790\\uC778\\uB9CC\\uC73C\\uB85C \\uB05D\\uB0B4\\uC9C0 \\uC54A\\uB294, \\uCF54\\uB4DC \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uD65C\\uC6A9\\uBC95\",\n    \"Framer CMS\\uB97C \\uD65C\\uC6A9\\uD55C \\uB370\\uC774\\uD130 \\uC5F0\\uB3D9 \\uB9C8\\uC2A4\\uD130\",\n    \"AI\\uB97C \\uD65C\\uC6A9\\uD55C \\uC6F9\\uB514\\uC790\\uC778 \\uBC0F \\uCF54\\uB4DC \\uC0DD\\uC131 \\uC790\\uB3D9\\uD654\"\n  ];\n  const audience = [\n    {\n      title: \"\\uC6F9 \\uB514\\uC790\\uC778\\uC744 \\uCF54\\uB529 \\uB54C\\uBB38\\uC5D0 \\uD3EC\\uAE30\\uD588\\uB358 \\uB514\\uC790\\uC774\\uB108\",\n      description: \"\\uC774\\uC81C \\uAC1C\\uBC1C\\uC790\\uC5D0\\uAC8C \\uC544\\uC26C\\uC6B4 \\uC18C\\uB9AC \\uD558\\uC9C0 \\uB9C8\\uC138\\uC694. \\uB2F9\\uC2E0\\uC774 \\uC0C1\\uC0C1\\uD55C \\uB514\\uC790\\uC778, 100% \\uADF8\\uB300\\uB85C \\uAD6C\\uD604\\uB418\\uB294 \\uC644\\uBCBD\\uD55C \\uBC18\\uC751\\uD615 \\uC6F9\\uC0AC\\uC774\\uD2B8\\uB97C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      title: \"\\uC678\\uC8FC \\uBE44\\uC6A9\\uC774 \\uBD80\\uB2F4\\uB418\\uB294 1\\uC778 \\uC0AC\\uC5C5\\uAC00, \\uC2A4\\uD0C0\\uD2B8\\uC5C5\",\n      description: \"\\uB79C\\uB529\\uD398\\uC774\\uC9C0 \\uD558\\uB098\\uC5D0 \\uC218\\uBC31\\uB9CC \\uC6D0... \\uC774\\uC81C \\uC9C1\\uC811 \\uB9CC\\uB4E4\\uACE0 5\\uBD84 \\uB9CC\\uC5D0 \\uC218\\uC815\\uD558\\uC138\\uC694. \\uC544\\uB080 \\uC678\\uC8FC\\uBE44\\uB85C \\uBE44\\uC988\\uB2C8\\uC2A4\\uC758 \\uC131\\uACF5 \\uD655\\uB960\\uC744 \\uB192\\uC77C \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      title: \"Framer\\uB85C \\uD558\\uC774\\uC5D4\\uB4DC \\uD504\\uB85C\\uC81D\\uD2B8\\uB97C \\uAFC8\\uAFB8\\uB294 \\uC804\\uBB38\\uAC00\",\n      description: \"\\uB2E8\\uC21C \\uD398\\uC774\\uC9C0 \\uC81C\\uC791\\uC744 \\uB118\\uC5B4, \\uACE0\\uAC1D\\uC744 \\uAC10\\uB3D9\\uC2DC\\uD0A4\\uB294 \\uD558\\uC774\\uC5D4\\uB4DC \\uC778\\uD130\\uB799\\uC158\\uC73C\\uB85C \\uB2F9\\uC2E0\\uC758 \\uC11C\\uBE44\\uC2A4 \\uB2E8\\uAC00\\uB97C 2\\uBC30 \\uC774\\uC0C1 \\uB04C\\uC5B4\\uC62C\\uB9AC\\uC138\\uC694. \\uB300\\uCCB4 \\uBD88\\uAC00\\uB2A5\\uD55C \\uC804\\uBB38\\uAC00\\uAC00 \\uB418\\uC2ED\\uC2DC\\uC624.\"\n    }\n  ];\n  const reviews = [\n    {\n      name: \"\\uAE40\\uC9C0\\uC218\",\n      role: \"UX/UI \\uB514\\uC790\\uC774\\uB108\",\n      text: \"\\uC774 \\uAC15\\uC758 \\uC5C6\\uC5C8\\uC73C\\uBA74 \\uC5B4\\uCA54 \\uBED4 \\uD588\\uB098\\uC694. \\uAC1C\\uBC1C\\uC790\\uC640\\uC758 \\uC18C\\uD1B5 \\uBE44\\uC6A9\\uC774 1/10\\uB85C \\uC904\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uC81C\\uAC00 \\uC9C1\\uC811 \\uB9CC\\uB4DC\\uB294 \\uAC8C \\uD6E8\\uC52C \\uBE60\\uB974\\uACE0 \\uD004\\uB9AC\\uD2F0\\uB3C4 \\uB192\\uC544\\uC694.\"\n    },\n    {\n      name: \"\\uBC15\\uB300\\uD45C\",\n      role: \"\\uC2A4\\uD0C0\\uD2B8\\uC5C5 \\uB300\\uD45C\",\n      text: \"\\uC678\\uC8FC \\uB9E1\\uAE38 \\uB3C8\\uC73C\\uB85C \\uB9C8\\uCF00\\uD305\\uC5D0 \\uB354 \\uC9D1\\uC911\\uD560 \\uC218 \\uC788\\uAC8C \\uB410\\uC2B5\\uB2C8\\uB2E4. MVP \\uC81C\\uC791\\uACFC \\uD14C\\uC2A4\\uD2B8\\uAC00 \\uC815\\uB9D0 \\uBE68\\uB77C\\uC84C\\uACE0, \\uD22C\\uC790 \\uC720\\uCE58\\uC5D0\\uB3C4 \\uD070 \\uB3C4\\uC6C0\\uC774 \\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      name: \"\\uD504\\uB9AC\\uB79C\\uC11C \\uBC15\",\n      role: \"Framer \\uC804\\uBB38\\uAC00\",\n      text: \"\\uC194\\uC9C1\\uD788 \\uC800\\uB9CC \\uC54C\\uACE0 \\uC2F6\\uC740 \\uAC15\\uC758\\uC785\\uB2C8\\uB2E4. \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158 \\uD30C\\uD2B8\\uB294 \\uC815\\uB9D0... \\uC608\\uC220\\uC785\\uB2C8\\uB2E4. \\uD504\\uB85C\\uC81D\\uD2B8 \\uB2E8\\uAC00\\uAC00 \\uB2EC\\uB77C\\uC84C\\uC5B4\\uC694.\"\n    }\n  ];\n  const curriculum = [\n    {\n      module: \"Week 1: Welcome to Framer\",\n      title: \"Framer \\uC2DC\\uC791\\uD558\\uAE30: \\uAE30\\uBCF8\\uAE30 \\uC644\\uC804 \\uC815\\uBCF5\",\n      description: \"Framer\\uC758 \\uC778\\uD130\\uD398\\uC774\\uC2A4\\uBD80\\uD130 \\uC2DC\\uC791\\uD574, \\uB514\\uC790\\uC778\\uC758 \\uAE30\\uBCF8 \\uC694\\uC18C\\uB4E4\\uC744 \\uC775\\uD788\\uACE0, \\uC65C Framer\\uAC00 \\uD604\\uC874 \\uCD5C\\uACE0\\uC758 \\uC6F9 \\uB514\\uC790\\uC778 \\uD234\\uC778\\uC9C0 \\uC9C1\\uC811 \\uACBD\\uD5D8\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"3.5\\uC2DC\\uAC04\",\n      outcome: \"Framer\\uC758 \\uAE30\\uBCF8 \\uC870\\uC791\\uBC95\\uC744 \\uC644\\uC804\\uD788 \\uC775\\uD788\\uACE0, \\uAC04\\uB2E8\\uD55C \\uB514\\uC790\\uC778 \\uCEF4\\uD3EC\\uB10C\\uD2B8\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Framer\\uB780 \\uBB34\\uC5C7\\uC778\\uAC00? (\\uCCA0\\uD559 & \\uBE44\\uC804)\",\n        \"\\uC778\\uD130\\uD398\\uC774\\uC2A4 \\uC644\\uBCBD \\uAC00\\uC774\\uB4DC: \\uD55C \\uBC88\\uC5D0 \\uB05D\\uB0B4\\uAE30\",\n        \"\\uAE30\\uBCF8 \\uB3C4\\uD615\\uACFC \\uD504\\uB808\\uC784 \\uB2E4\\uB8E8\\uAE30\",\n        \"\\uB808\\uC774\\uC544\\uC6C3\\uC758 \\uD575\\uC2EC: \\uC2A4\\uD0DD\\uACFC \\uADF8\\uB9AC\\uB4DC\",\n        \"[\\uC2E4\\uC2B5] \\uAC04\\uB2E8\\uD55C \\uD504\\uB85C\\uD544 \\uCE74\\uB4DC \\uB9CC\\uB4E4\\uAE30\"\n      ]\n    },\n    {\n      module: \"Week 2: Interactive Design\",\n      title: \"\\uC0B4\\uC544 \\uC6C0\\uC9C1\\uC774\\uB294 \\uB514\\uC790\\uC778: \\uC778\\uD130\\uB799\\uC158 \\uAE30\\uCD08\",\n      description: \"\\uB2E8\\uC21C\\uD55C \\uC774\\uBBF8\\uC9C0\\uB97C \\uB118\\uC5B4 \\uC0AC\\uC6A9\\uC790\\uC640 \\uC0C1\\uD638\\uC791\\uC6A9\\uD558\\uB294 \\uB514\\uC790\\uC778\\uC744 \\uB9CC\\uB4ED\\uB2C8\\uB2E4. \\uD074\\uB9AD, \\uD638\\uBC84, \\uB4DC\\uB798\\uADF8 \\uB4F1 \\uD544\\uC218 \\uC778\\uD130\\uB799\\uC158\\uC744 \\uB9C8\\uC2A4\\uD130\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"4\\uC2DC\\uAC04\",\n      outcome: \"\\uC7AC\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uCEF4\\uD3EC\\uB10C\\uD2B8\\uB97C \\uB9CC\\uB4E4\\uACE0, \\uB2E4\\uC591\\uD55C \\uC0C1\\uD0DC\\uC5D0 \\uB530\\uB978 \\uC778\\uD130\\uB799\\uC158\\uC744 \\uAD6C\\uD604\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Effects: \\uADF8\\uB9BC\\uC790, \\uBE14\\uB7EC \\uB4F1 \\uB514\\uC790\\uC778\\uC5D0 \\uAE4A\\uC774 \\uB354\\uD558\\uAE30\",\n        \"Components: \\uC7AC\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uB514\\uC790\\uC778 \\uC2DC\\uC2A4\\uD15C \\uB9CC\\uB4E4\\uAE30\",\n        \"Variants: \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uC0C1\\uD0DC \\uAD00\\uB9AC\\uC758 \\uBAA8\\uB4E0 \\uAC83\",\n        \"\\uAE30\\uBCF8 \\uC778\\uD130\\uB799\\uC158: \\uD074\\uB9AD, \\uD638\\uBC84, \\uB51C\\uB808\\uC774\",\n        \"[\\uC2E4\\uC2B5] \\uC778\\uD130\\uB799\\uD2F0\\uBE0C \\uBC84\\uD2BC \\uBC0F \\uCE74\\uB4DC UI \\uC81C\\uC791\"\n      ]\n    },\n    {\n      module: \"Week 3: Advanced Animations\",\n      title: \"\\uC2DC\\uC120\\uC744 \\uC0AC\\uB85C\\uC7A1\\uB294 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\",\n      description: \"\\uD398\\uC774\\uC9C0 \\uC2A4\\uD06C\\uB864, \\uC694\\uC18C\\uC758 \\uB4F1\\uC7A5\\uACFC \\uC0AC\\uB77C\\uC9D0 \\uB4F1 \\uC815\\uAD50\\uD55C \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC744 \\uAD6C\\uD604\\uD558\\uC5EC \\uC0AC\\uC6A9\\uC790 \\uACBD\\uD5D8\\uC744 \\uADF9\\uB300\\uD654\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"5\\uC2DC\\uAC04\",\n      outcome: \"\\uC2A4\\uD06C\\uB864\\uACFC \\uC5F0\\uB3D9\\uB418\\uB294 \\uBCF5\\uD569\\uC801\\uC778 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC744 \\uC790\\uC720\\uC790\\uC7AC\\uB85C \\uAD6C\\uD604\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"\\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC758 \\uC6D0\\uB9AC: Timing, Easing, Spring\",\n        \"Scroll Section & Scroll Variants\",\n        \"Stagger: \\uC21C\\uCC28\\uC801\\uC778 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC758 \\uBBF8\\uD559\",\n        \"Code Overrides\\uC758 \\uAE30\\uCD08: \\uC560\\uB2C8\\uBA54\\uC774\\uC158 \\uC81C\\uC5B4\\uD558\\uAE30\",\n        \"[\\uC2E4\\uC2B5] \\uC2A4\\uD06C\\uB864\\uC5D0 \\uBC18\\uC751\\uD558\\uB294 \\uD5E4\\uB354 \\uC81C\\uC791\"\n      ]\n    },\n    {\n      module: \"Week 4: The Apple Way\",\n      title: \"\\uC560\\uD50C \\uC2A4\\uD0C0\\uC77C \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158 \\uC815\\uBCF5\",\n      description: \"\\uBAA8\\uB450\\uAC00 \\uAC10\\uD0C4\\uD558\\uB294 \\uC560\\uD50C \\uC6F9\\uC0AC\\uC774\\uD2B8\\uC758 \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158. \\uADF8 \\uC6D0\\uB9AC\\uB97C \\uD30C\\uD5E4\\uCE58\\uACE0, \\uC6B0\\uB9AC \\uC190\\uC73C\\uB85C \\uC9C1\\uC811 \\uAD6C\\uD604\\uD574\\uBD05\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"6.5\\uC2DC\\uAC04\",\n      outcome: \"\\uB204\\uAD6C\\uB098 \\uAC10\\uD0C4\\uD560 \\uB9CC\\uD55C \\uD558\\uC774\\uC5D4\\uB4DC \\uC6F9\\uC0AC\\uC774\\uD2B8\\uC758 \\uD575\\uC2EC \\uC778\\uD130\\uB799\\uC158\\uC744 \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Sticky \\uC2A4\\uD06C\\uB864\\uC758 \\uC6D0\\uB9AC\\uC640 \\uD65C\\uC6A9\",\n        \"3D Transform\\uC744 \\uC774\\uC6A9\\uD55C \\uC785\\uCCB4\\uC801 \\uD6A8\\uACFC\",\n        \"\\uB3D9\\uC601\\uC0C1\\uACFC \\uC2A4\\uD06C\\uB864 \\uC5F0\\uB3D9\\uD558\\uAE30\",\n        \"\\uC2A4\\uD06C\\uB864 \\uC9C4\\uD589\\uB3C4\\uC5D0 \\uB530\\uB978 \\uBCF5\\uD569 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\",\n        \"[\\uC2E4\\uC2B5] \\uC560\\uD50C \\uC5D0\\uC5B4\\uD31F \\uD504\\uB85C \\uC2A4\\uD0C0\\uC77C \\uD398\\uC774\\uC9C0 \\uD074\\uB860\"\n      ]\n    },\n    {\n      module: \"Week 5: Real-World Project\",\n      title: \"\\uC2E4\\uC804! \\uBC18\\uC751\\uD615 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC0AC\\uC774\\uD2B8 \\uC81C\\uC791\",\n      description: \"\\uC9C0\\uAE08\\uAE4C\\uC9C0 \\uBC30\\uC6B4 \\uBAA8\\uB4E0 \\uAE30\\uC220\\uC744 \\uCD1D\\uB3D9\\uC6D0\\uD558\\uC5EC, \\uB370\\uC2A4\\uD06C\\uD0D1\\uBD80\\uD130 \\uBAA8\\uBC14\\uC77C\\uAE4C\\uC9C0 \\uC644\\uBCBD\\uD558\\uAC8C \\uB300\\uC751\\uD558\\uB294 \\uB098\\uB9CC\\uC758 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC0AC\\uC774\\uD2B8\\uB97C \\uB9CC\\uB4ED\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"8\\uC2DC\\uAC04\",\n      outcome: \"\\uAE30\\uD68D\\uBD80\\uD130 \\uBC30\\uD3EC\\uAE4C\\uC9C0, \\uC6F9 \\uD504\\uB85C\\uC81D\\uD2B8 \\uC804\\uCCB4 \\uC0AC\\uC774\\uD074\\uC744 \\uACBD\\uD5D8\\uD558\\uACE0 \\uB098\\uB9CC\\uC758 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624\\uB97C \\uC644\\uC131\\uD569\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"\\uD504\\uB85C\\uC81D\\uD2B8 \\uAE30\\uD68D \\uBC0F \\uB514\\uC790\\uC778 \\uC2DC\\uC2A4\\uD15C \\uAD6C\\uCD95\",\n        \"CMS\\uB97C \\uD65C\\uC6A9\\uD55C \\uCF58\\uD150\\uCE20 \\uAD00\\uB9AC\",\n        \"\\uB370\\uC2A4\\uD06C\\uD0D1, \\uD0DC\\uBE14\\uB9BF, \\uBAA8\\uBC14\\uC77C \\uBC18\\uC751\\uD615 \\uB514\\uC790\\uC778\",\n        \"\\uC2E4\\uC81C \\uB3C4\\uBA54\\uC778 \\uC5F0\\uACB0 \\uBC0F \\uC0AC\\uC774\\uD2B8 \\uBC30\\uD3EC\",\n        \"[\\uC2E4\\uC804] \\uB098\\uB9CC\\uC758 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC6F9\\uC0AC\\uC774\\uD2B8 \\uC644\\uC131\"\n      ]\n    },\n    {\n      module: \"Week 6: From Skill to Profit\",\n      title: \"Framer\\uB85C \\uB3C8 \\uBC8C\\uAE30: \\uC678\\uC8FC\\uBD80\\uD130 \\uCC3D\\uC5C5\\uAE4C\\uC9C0\",\n      description: \"\\uC0C8\\uB85C\\uC6B4 \\uC2A4\\uD0AC\\uC744 \\uC2E4\\uC81C \\uC218\\uC775\\uC73C\\uB85C \\uC5F0\\uACB0\\uD558\\uB294 \\uBC29\\uBC95\\uC744 \\uBC30\\uC6C1\\uB2C8\\uB2E4. \\uC678\\uC8FC \\uD504\\uB85C\\uC81D\\uD2B8 \\uC218\\uC8FC \\uB178\\uD558\\uC6B0, \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC804\\uB7B5, \\uCC3D\\uC5C5 \\uC544\\uC774\\uB514\\uC5B4\\uAE4C\\uC9C0 \\uBAA8\\uB450 \\uACF5\\uAC1C\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 7,\n      duration: \"5\\uC2DC\\uAC04\",\n      outcome: \"\\uC2B5\\uB4DD\\uD55C Framer \\uC2A4\\uD0AC\\uC744 \\uD1B5\\uD574 \\uC2E4\\uC81C \\uC218\\uC775\\uC744 \\uCC3D\\uCD9C\\uD558\\uB294 \\uAD6C\\uCCB4\\uC801\\uC778 \\uBC29\\uBC95\\uC744 \\uC54C\\uAC8C \\uB429\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Framer \\uC804\\uBB38\\uAC00\\uB85C \\uD3EC\\uC9C0\\uC154\\uB2DD\\uD558\\uAE30\",\n        \"\\uCCAB \\uC678\\uC8FC, 100\\uB9CC\\uC6D0\\uBD80\\uD130 \\uC2DC\\uC791\\uD558\\uB294 \\uBC95\",\n        \"\\uD074\\uB77C\\uC774\\uC5B8\\uD2B8\\uB97C \\uC124\\uB4DD\\uD558\\uB294 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC804\\uB7B5\",\n        \"\\uACAC\\uC801\\uBD80\\uD130 \\uACC4\\uC57D\\uAE4C\\uC9C0: \\uC2E4\\uD328 \\uC5C6\\uB294 \\uD504\\uB85C\\uC81D\\uD2B8 \\uAD00\\uB9AC\",\n        \"Framer\\uB85C \\uAC00\\uB2A5\\uD55C 1\\uC778 \\uCC3D\\uC5C5 \\uC544\\uC774\\uD15C\\uB4E4\",\n        \"AI\\uB97C \\uD65C\\uC6A9\\uD55C \\uC0DD\\uC0B0\\uC131 10\\uBC30 \\uB192\\uC774\\uAE30\",\n        \"[\\uD2B9\\uAC15] \\uC6D4 1,000\\uB9CC\\uC6D0 \\uBC84\\uB294 \\uB514\\uC790\\uC774\\uB108\\uC758 \\uC2DC\\uAC04 \\uAD00\\uB9AC\\uBC95\"\n      ]\n    }\n  ];\n  const faqs = [\n    {\n      question: \"\\uCF54\\uB529\\uC744 \\uC804\\uD600 \\uBAA8\\uB974\\uB294\\uB370, \\uC815\\uB9D0 \\uAD1C\\uCC2E\\uC744\\uAE4C\\uC694?\",\n      answer: \"\\uB124, \\uADF8\\uB7FC\\uC694! \\uC774 \\uAC15\\uC758\\uB294 \\uCF54\\uB529 \\uACBD\\uD5D8\\uC774 \\uC804\\uBB34\\uD55C \\uBD84\\uB4E4\\uC744 \\uC704\\uD574 \\uC124\\uACC4\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4. Framer\\uC758 \\uAC15\\uB825\\uD55C \\uB178\\uCF54\\uB4DC \\uAE30\\uB2A5\\uC744 \\uD65C\\uC6A9\\uD558\\uC5EC \\uCF54\\uB529 \\uC5C6\\uC774\\uB3C4 100% \\uC0C1\\uC0C1\\uD558\\uB358 \\uC6F9\\uC0AC\\uC774\\uD2B8\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uCF54\\uB529\\uC740 \\uC120\\uD0DD \\uC0AC\\uD56D\\uC77C \\uBFD0\\uC774\\uBA70, \\uAC15\\uC758 \\uD6C4\\uBC18\\uBD80\\uC758 \\uCF54\\uB4DC \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uD30C\\uD2B8\\uB3C4 \\uBCF5\\uC0AC/\\uBD99\\uC5EC\\uB123\\uAE30\\uB9CC\\uC73C\\uB85C \\uB530\\uB77C\\uC62C \\uC218 \\uC788\\uB3C4\\uB85D \\uAD6C\\uC131\\uD588\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      question: \"\\uAC15\\uC758\\uB97C \\uB4E3\\uAE30 \\uC704\\uD574 \\uBB34\\uC5C7\\uC744 \\uC900\\uBE44\\uD574\\uC57C \\uD558\\uB098\\uC694?\",\n      answer: \"Framer \\uACC4\\uC815\\uACFC \\uC778\\uD130\\uB137\\uC774 \\uC5F0\\uACB0\\uB41C \\uCEF4\\uD4E8\\uD130\\uB9CC \\uC788\\uC73C\\uBA74 \\uB429\\uB2C8\\uB2E4! Framer\\uB294 \\uBB34\\uB8CC \\uD50C\\uB79C\\uC73C\\uB85C\\uB3C4 \\uAC15\\uC758\\uC758 95% \\uC774\\uC0C1\\uC744 \\uC218\\uAC15\\uD558\\uB294 \\uB370 \\uC804\\uD600 \\uBB38\\uC81C\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uCD94\\uAC00\\uB85C \\uC720\\uB8CC \\uD50C\\uB79C\\uC774 \\uD544\\uC694\\uD55C \\uBD80\\uBD84\\uC740 \\uAC15\\uC758\\uC5D0\\uC11C \\uBCC4\\uB3C4\\uB85C \\uC548\\uB0B4\\uD574 \\uB4DC\\uB9BD\\uB2C8\\uB2E4.\"\n    },\n    {\n      question: \"\\uAC15\\uC758 \\uC218\\uAC15 \\uAE30\\uAC04\\uC5D0 \\uC81C\\uD55C\\uC774 \\uC788\\uB098\\uC694?\",\n      answer: \"\\uC544\\uB2C8\\uC694! \\uD55C\\uBC88 \\uAD6C\\uB9E4\\uD558\\uC2DC\\uBA74 \\uBAA8\\uB4E0 \\uAC15\\uC758 \\uC601\\uC0C1\\uACFC \\uC790\\uB8CC\\uB294 \\uD3C9\\uC0DD \\uC18C\\uC7A5\\uC774 \\uAC00\\uB2A5\\uD569\\uB2C8\\uB2E4. \\uC5B8\\uC81C \\uC5B4\\uB514\\uC11C\\uB4E0 \\uD3B8\\uD558\\uAC8C \\uBC18\\uBCF5 \\uD559\\uC2B5\\uD558\\uC138\\uC694.\"\n    },\n    {\n      question: \"\\uAC15\\uC758\\uB97C \\uB4E3\\uB2E4\\uAC00 \\uBAA8\\uB974\\uB294 \\uC810\\uC774 \\uC0DD\\uAE30\\uBA74 \\uC5B4\\uB5BB\\uAC8C \\uD558\\uC8E0?\",\n      answer: \"\\uC218\\uAC15\\uC0DD \\uC804\\uC6A9 \\uC2AC\\uB799 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\\uB97C \\uD1B5\\uD574 \\uC9C8\\uBB38\\uC744 \\uB0A8\\uACA8\\uC8FC\\uC2DC\\uBA74, \\uAC15\\uC0AC\\uB2D8\\uACFC \\uB2E4\\uB978 \\uC218\\uAC15\\uC0DD\\uB4E4\\uC774 \\uB2F5\\uBCC0\\uC744 \\uB2EC\\uC544\\uB4DC\\uB9BD\\uB2C8\\uB2E4. \\uD568\\uAED8 \\uBC30\\uC6B0\\uACE0 \\uC131\\uC7A5\\uD558\\uB294 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\\uC5D0 \\uCC38\\uC5EC\\uD558\\uC138\\uC694!\"\n    }\n  ];\n  const CountdownTimer = ({ targetDate }) => {\n    const calculateTimeLeft = () => {\n      const difference = +new Date(targetDate) - +/* @__PURE__ */ new Date();\n      let timeLeft2 = {};\n      if (difference > 0) {\n        timeLeft2 = {\n          \\uC77C: Math.floor(difference / (1e3 * 60 * 60 * 24)),\n          \\uC2DC\\uAC04: Math.floor(difference / (1e3 * 60 * 60) % 24),\n          \\uBD84: Math.floor(difference / 1e3 / 60 % 60),\n          \\uCD08: Math.floor(difference / 1e3 % 60)\n        };\n      }\n      return timeLeft2;\n    };\n    const [timeLeft, setTimeLeft] = useState(calculateTimeLeft());\n    useEffect(() => {\n      const timer = setTimeout(() => {\n        setTimeLeft(calculateTimeLeft());\n      }, 1e3);\n      return () => clearTimeout(timer);\n    });\n    const timerComponents = [];\n    Object.keys(timeLeft).forEach((interval) => {\n      if (!timeLeft[interval] && Object.keys(timeLeft).length > 1) {\n        return;\n      }\n      timerComponents.push(\n        /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-baseline\", children: [\n          /* @__PURE__ */ jsx(\"span\", { className: \"text-2xl md:text-4xl font-bold\", children: String(timeLeft[interval]).padStart(\n            2,\n            \"0\"\n          ) }),\n          /* @__PURE__ */ jsx(\"span\", { className: \"text-sm ml-1\", children: interval })\n        ] }, interval)\n      );\n    });\n    return /* @__PURE__ */ jsx(\"div\", { className: \"flex justify-center space-x-4\", children: timerComponents.length ? timerComponents : /* @__PURE__ */ jsx(\"span\", { children: \"Time's up!\" }) });\n  };\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      style: { backgroundColor: colors.white, color: colors.textDark },\n      className: \"font-sans\",\n      children: [\n        /* @__PURE__ */ jsxs(\"header\", { className: \"text-center py-20 px-4\", children: [\n          /* @__PURE__ */ jsxs(\"h1\", { className: \"text-5xl md:text-7xl font-bold leading-tight mb-4\", children: [\n            /* @__PURE__ */ jsx(\"span\", { className: \"block\", children: \"\\uCF54\\uB4DC\\uC758 \\uC7A5\\uBCBD\\uC744 \\uB118\\uC5B4,\" }),\n            /* @__PURE__ */ jsx(\"span\", { style: { color: colors.harborBlue }, className: \"block\", children: \"\\uB514\\uC790\\uC778\\uC758 \\uC644\\uC804\\uD55C \\uC790\\uC720\\uB97C \\uACBD\\uD5D8\\uD558\\uC138\\uC694\" })\n          ] }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              style: { color: colors.textMedium },\n              className: \"max-w-2xl mx-auto text-lg md:text-xl mb-8\",\n              children: [\n                \"\\uB2F9\\uC2E0\\uC758 \\uC815\\uAD50\\uD55C \\uB514\\uC790\\uC778\\uC774 \\uAC1C\\uBC1C \\uACFC\\uC815\\uC5D0\\uC11C \\uAE38\\uC744 \\uC783\\uC9C0 \\uC54A\\uB3C4\\uB85D.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"Framer\\uB294 \\uC0C1\\uC0C1\\uC744 \\uD604\\uC2E4\\uB85C \\uB9CC\\uB4DC\\uB294 \\uAC00\\uC7A5 \\uBE60\\uB978 \\uAE38\\uC744 \\uC81C\\uC548\\uD569\\uB2C8\\uB2E4.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\n            \"div\",\n            {\n              style: { backgroundColor: colors.harborPink },\n              className: \"text-center py-4 px-6 rounded-lg max-w-lg mx-auto mb-8\",\n              children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"font-bold text-lg\", style: { color: colors.harborBlue }, children: \"\\uC0C8\\uB85C\\uC6B4 \\uC2DC\\uB300\\uC758 \\uB514\\uC790\\uC774\\uB108\\uB97C \\uC704\\uD55C \\uB9C8\\uC9C0\\uB9C9 \\uD560\\uC778\" }),\n                /* @__PURE__ */ jsx(\"div\", { style: { color: colors.harborBlue }, children: /* @__PURE__ */ jsx(\n                  CountdownTimer,\n                  {\n                    targetDate: new Date(\n                      Date.now() + 3 * 24 * 60 * 60 * 1e3\n                    ).toISOString()\n                  }\n                ) })\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            \"a\",\n            {\n              href: \"#pricing\",\n              style: { backgroundColor: colors.harborBlue, color: colors.white },\n              className: \"font-bold py-4 px-10 rounded-full text-lg hover:opacity-90 transition-opacity duration-300\",\n              children: \"\\uC790\\uC720\\uB97C \\uD5A5\\uD55C \\uC5EC\\uC815 \\uC2DC\\uC791\\uD558\\uAE30\"\n            }\n          )\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-3xl mx-auto text-center\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-3xl md:text-4xl font-bold mb-6\", children: \"\\uD639\\uC2DC, \\uB2F9\\uC2E0\\uC758 \\uC774\\uC57C\\uAE30\\uC778\\uAC00\\uC694?\" }),\n              /* @__PURE__ */ jsxs(\n                \"p\",\n                {\n                  className: \"text-lg leading-relaxed\",\n                  style: { color: colors.textMedium },\n                  children: [\n                    '\"\\uBD84\\uBA85 \\uC644\\uBCBD\\uD55C \\uB514\\uC790\\uC778\\uC774\\uC5C8\\uB294\\uB370, \\uC65C \\uAC1C\\uBC1C\\uB9CC \\uAC70\\uCE58\\uBA74 \\uD3C9\\uBC94\\uD574\\uC9C8\\uAE4C?\"',\n                    /* @__PURE__ */ jsx(\"br\", {}),\n                    \"\\uC218\\uB9CE\\uC740 \\uB514\\uC790\\uC774\\uB108\\uAC00 \\uACAA\\uB294 \\uC88C\\uC808\\uC785\\uB2C8\\uB2E4. \\uAC1C\\uBC1C\\uC790\\uC640\\uC758 \\uC18C\\uD1B5 \\uBE44\\uC6A9, \\uAE30\\uC220\\uC801 \\uC81C\\uC57D, \\uAE38\\uC5B4\\uC9C0\\uB294 \\uC81C\\uC791 \\uAE30\\uAC04...\",\n                    /* @__PURE__ */ jsx(\"br\", {}),\n                    \"\\uB2F9\\uC2E0\\uC758 \\uC704\\uB300\\uD55C \\uC544\\uC774\\uB514\\uC5B4\\uB294 \\uADF8\\uB807\\uAC8C \\uBE5B\\uC744 \\uC783\\uC5B4\\uAC11\\uB2C8\\uB2E4.\",\n                    /* @__PURE__ */ jsxs(\"span\", { style: { color: colors.harborBlue }, className: \"font-bold\", children: [\n                      \" \",\n                      \"\\uC774\\uC81C \\uADF8 \\uACE0\\uB9AC\\uB97C \\uB04A\\uC5B4\\uB0BC \\uC2DC\\uAC04\\uC785\\uB2C8\\uB2E4.\"\n                    ] })\n                  ]\n                }\n              )\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-12\", children: \"\\uB2F9\\uC2E0\\uC758 \\uC791\\uC5C5\\uBB3C, \\uC774\\uB807\\uAC8C \\uB2EC\\uB77C\\uC9D1\\uB2C8\\uB2E4\" }),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"grid md:grid-cols-2 gap-8 items-center\", children: [\n            /* @__PURE__ */ jsxs(\"div\", { children: [\n              /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-bold mb-4 text-red-500\", children: \"Before\" }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"p-4 rounded-lg border border-gray-200 bg-white shadow-lg\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-left text-sm font-semibold mb-2\", children: \"[\\uC218\\uAC15 \\uC804] Figma-\\uAC1C\\uBC1C\\uC790 \\uC804\\uB2EC \\uBC29\\uC2DD\" }),\n                /* @__PURE__ */ jsxs(\"div\", { className: \"aspect-video bg-gray-100 rounded flex flex-col items-center justify-center text-gray-400 p-4\", children: [\n                  /* @__PURE__ */ jsx(\"p\", { children: \"\\uC815\\uC801\\uC778 \\uB514\\uC790\\uC778 \\uC2DC\\uC548\" }),\n                  /* @__PURE__ */ jsx(\"p\", { className: \"text-xs mt-2\", children: \"(\\uC778\\uD130\\uB799\\uC158\\uC740 \\uC0C1\\uC0C1\\uC5D0 \\uB9E1\\uACA8\\uC57C \\uD568)\" }),\n                  /* @__PURE__ */ jsx(\"p\", { className: \"text-xs mt-2\", children: \"\\uAC1C\\uBC1C \\uACFC\\uC815\\uC5D0\\uC11C \\uC7A6\\uC740 \\uC218\\uC815, \\uD0C0\\uD611\" })\n                ] })\n              ] }),\n              /* @__PURE__ */ jsx(\"p\", { className: \"mt-4\", style: { color: colors.textLight }, children: \"\\uC18C\\uD1B5 \\uBE44\\uC6A9 \\uC99D\\uAC00, \\uAD6C\\uD604 \\uD004\\uB9AC\\uD2F0 \\uC800\\uD558\" })\n            ] }),\n            /* @__PURE__ */ jsxs(\"div\", { children: [\n              /* @__PURE__ */ jsx(\n                \"h3\",\n                {\n                  className: \"text-2xl font-bold mb-4\",\n                  style: { color: colors.harborBlue },\n                  children: \"After\"\n                }\n              ),\n              /* @__PURE__ */ jsxs(\n                \"div\",\n                {\n                  className: \"p-4 rounded-lg border-2\",\n                  style: { borderColor: colors.harborBlue },\n                  children: [\n                    /* @__PURE__ */ jsx(\n                      \"p\",\n                      {\n                        className: \"text-left text-sm font-semibold mb-2\",\n                        style: { color: colors.harborBlue },\n                        children: \"[\\uC218\\uAC15 \\uD6C4] Framer\\uB97C \\uD1B5\\uD55C \\uC6D0\\uC2A4\\uD1B1 \\uC81C\\uC791\"\n                      }\n                    ),\n                    /* @__PURE__ */ jsxs(\"div\", { className: \"aspect-video bg-gray-100 rounded flex flex-col items-center justify-center p-4\", children: [\n                      /* @__PURE__ */ jsx(\"p\", { className: \"font-bold\", style: { color: colors.harborBlue }, children: \"\\uC778\\uD130\\uB799\\uD2F0\\uBE0C\\uD55C \\uCD5C\\uC885 \\uACB0\\uACFC\\uBB3C\" }),\n                      /* @__PURE__ */ jsx(\n                        \"p\",\n                        {\n                          className: \"text-xs mt-2\",\n                          style: { color: colors.textMedium },\n                          children: \"(\\uB0B4\\uAC00 \\uB514\\uC790\\uC778\\uD55C \\uADF8\\uB300\\uB85C 100% \\uAD6C\\uD604)\"\n                        }\n                      ),\n                      /* @__PURE__ */ jsx(\n                        \"p\",\n                        {\n                          className: \"text-xs mt-2\",\n                          style: { color: colors.textMedium },\n                          children: \"\\uC218\\uC815/\\uBC30\\uD3EC \\uD074\\uB9AD \\uD55C \\uBC88\\uC73C\\uB85C\"\n                        }\n                      )\n                    ] })\n                  ]\n                }\n              ),\n              /* @__PURE__ */ jsx(\n                \"p\",\n                {\n                  className: \"mt-4 font-bold\",\n                  style: { color: colors.harborBlue },\n                  children: \"\\uC555\\uB3C4\\uC801\\uC778 \\uC18D\\uB3C4, \\uC644\\uBCBD\\uD55C \\uD004\\uB9AC\\uD2F0\"\n                }\n              )\n            ] })\n          ] })\n        ] }) }),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-12\", style: { backgroundColor: colors.harborPink }, children: /* @__PURE__ */ jsx(\"div\", { className: \"max-w-6xl mx-auto px-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"grid grid-cols-1 md:grid-cols-3 gap-8 text-center\", children: [\n          /* @__PURE__ */ jsxs(\"div\", { children: [\n            /* @__PURE__ */ jsx(\n              \"p\",\n              {\n                className: \"text-4xl font-bold\",\n                style: { color: colors.harborBlue },\n                children: \"1,300+\"\n              }\n            ),\n            /* @__PURE__ */ jsx(\"p\", { className: \"mt-2\", style: { color: colors.textMedium }, children: \"\\uB204\\uC801 \\uC218\\uAC15\\uC0DD\" })\n          ] }),\n          /* @__PURE__ */ jsxs(\"div\", { children: [\n            /* @__PURE__ */ jsx(\n              \"p\",\n              {\n                className: \"text-4xl font-bold\",\n                style: { color: colors.harborBlue },\n                children: \"4.9/5.0\"\n              }\n            ),\n            /* @__PURE__ */ jsx(\"p\", { className: \"mt-2\", style: { color: colors.textMedium }, children: \"\\uC218\\uAC15\\uC0DD \\uB9CC\\uC871\\uB3C4\" })\n          ] }),\n          /* @__PURE__ */ jsxs(\"div\", { children: [\n            /* @__PURE__ */ jsx(\n              \"p\",\n              {\n                className: \"text-4xl font-bold\",\n                style: { color: colors.harborBlue },\n                children: \"30+\"\n              }\n            ),\n            /* @__PURE__ */ jsx(\"p\", { className: \"mt-2\", style: { color: colors.textMedium }, children: \"\\uC2E4\\uC804 \\uD504\\uB85C\\uC81D\\uD2B8 \\uACBD\\uD5D8\" })\n          ] })\n        ] }) }) }),\n        /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl md:text-5xl font-bold mb-6\", children: \"\\uACB0\\uACFC\\uB85C \\uC99D\\uBA85\\uD558\\uB294, \\uB2E8 \\uD558\\uB098\\uC758 \\uB9C8\\uC2A4\\uD130\\uB9AC \\uCF54\\uC2A4\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"max-w-3xl mx-auto text-lg\",\n              style: { color: colors.textMedium },\n              children: [\n                \"\\uC774 \\uAC15\\uC758\\uB294 Framer \\uC0AC\\uC6A9\\uBC95\\uC744 \\uC54C\\uB824\\uC8FC\\uB294 \\uAC15\\uC758\\uAC00 \\uC544\\uB2D9\\uB2C8\\uB2E4.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uB514\\uC790\\uC774\\uB108\\uAC00 \\uC790\\uC2E0\\uC758 \\uAC00\\uCE58\\uB97C \\uC2A4\\uC2A4\\uB85C \\uC99D\\uBA85\\uD558\\uACE0,\",\n                \" \",\n                /* @__PURE__ */ jsx(\"span\", { style: { color: colors.harborBlue }, children: \"\\uB300\\uCCB4 \\uBD88\\uAC00\\uB2A5\\uD55C \\uC804\\uBB38\\uAC00\" }),\n                \"\\uB85C \\uAC70\\uB4ED\\uB098\\uB294 \\uBC29\\uBC95\\uC744 \\uC548\\uB0B4\\uD569\\uB2C8\\uB2E4.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-6xl mx-auto grid md:grid-cols-3 gap-8 mt-12 text-left\", children: [\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: {\n                  backgroundColor: colors.white,\n                  border: `1px solid ${colors.harborPink}`\n                },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h4\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"1. \\uCC3D\\uC791\\uC758 \\uC644\\uC804\\uD55C \\uC790\\uC728\\uC131\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC544\\uC774\\uB514\\uC5B4 \\uC2A4\\uCF00\\uCE58\\uBD80\\uD130 \\uCD5C\\uC885 \\uBC30\\uD3EC\\uAE4C\\uC9C0, \\uBAA8\\uB4E0 \\uCC3D\\uC791 \\uACFC\\uC815\\uC744 \\uC628\\uC804\\uD788 \\uD1B5\\uC81C\\uD558\\uC138\\uC694. \\uB354 \\uC774\\uC0C1 \\uAE30\\uC220\\uC801 \\uC81C\\uC57D\\uC774\\uB098 \\uC18C\\uD1B5\\uC758 \\uC624\\uB958\\uB85C \\uB2F9\\uC2E0\\uC758 \\uBE44\\uC804\\uC774 \\uD0C0\\uD611\\uB418\\uB294 \\uC77C\\uC740 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: {\n                  backgroundColor: colors.white,\n                  border: `1px solid ${colors.harborPink}`\n                },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h4\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"2. \\uC138\\uACC4\\uC801 \\uC218\\uC900\\uC758 \\uC778\\uD130\\uB799\\uC158\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uB2E8\\uC21C\\uD788 '\\uC6C0\\uC9C1\\uC774\\uB294' \\uAC83\\uC744 \\uB118\\uC5B4 '\\uBC18\\uC751\\uD558\\uB294' \\uB514\\uC790\\uC778\\uC744 \\uB9CC\\uB4ED\\uB2C8\\uB2E4. \\uC0AC\\uC6A9\\uC790\\uC758 \\uBAA8\\uB4E0 \\uD589\\uB3D9\\uC5D0 \\uC12C\\uC138\\uD558\\uAC8C \\uBC18\\uC751\\uD558\\uB294 \\uC6D4\\uB4DC\\uD074\\uB798\\uC2A4 \\uC778\\uD130\\uB799\\uC158\\uC73C\\uB85C \\uD504\\uB85C\\uC81D\\uD2B8\\uC758 \\uACA9\\uC744 \\uB192\\uC774\\uC138\\uC694.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: {\n                  backgroundColor: colors.white,\n                  border: `1px solid ${colors.harborPink}`\n                },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h4\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"3. \\uB514\\uC790\\uC774\\uB108 \\uB108\\uBA38\\uC758 \\uBE44\\uC988\\uB2C8\\uC2A4\\uB9E8\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uD6CC\\uB96D\\uD55C \\uB514\\uC790\\uC778\\uC744 \\uB192\\uC740 \\uAC00\\uCE58\\uB85C \\uBCC0\\uD658\\uD558\\uB294 \\uBE44\\uC988\\uB2C8\\uC2A4 \\uC804\\uB7B5\\uAE4C\\uC9C0 \\uD568\\uAED8 \\uBC30\\uC6C1\\uB2C8\\uB2E4. \\uB2F9\\uC2E0\\uC758 \\uC7AC\\uB2A5\\uC744 \\uCD5C\\uACE0\\uC758 \\uC218\\uC775\\uC73C\\uB85C \\uC5F0\\uACB0\\uD558\\uB294 \\uBC29\\uBC95\\uC744 \\uC54C\\uB824\\uB4DC\\uB9BD\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            )\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uC65C \\uC774 \\uAC15\\uC758\\uAC00 \\uAC00\\uC7A5 \\uBE60\\uB978 \\uAE38\\uC77C\\uAE4C\\uC694?\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"overflow-x-auto\", children: /* @__PURE__ */ jsxs(\"table\", { className: \"w-full text-left border-collapse\", children: [\n                /* @__PURE__ */ jsx(\"thead\", { children: /* @__PURE__ */ jsxs(\"tr\", { children: [\n                  /* @__PURE__ */ jsx(\"th\", { className: \"p-4 border-b-2 font-bold\", children: \"\\uD559\\uC2B5 \\uBC29\\uBC95\" }),\n                  /* @__PURE__ */ jsx(\"th\", { className: \"p-4 border-b-2 font-bold text-center\", children: \"\\uACB0\\uACFC\\uBB3C \\uD004\\uB9AC\\uD2F0\" }),\n                  /* @__PURE__ */ jsx(\"th\", { className: \"p-4 border-b-2 font-bold text-center\", children: \"\\uD559\\uC2B5 \\uC18D\\uB3C4\" }),\n                  /* @__PURE__ */ jsx(\"th\", { className: \"p-4 border-b-2 font-bold text-center\", children: \"\\uC2DC\\uD589\\uCC29\\uC624 \\uBE44\\uC6A9\" }),\n                  /* @__PURE__ */ jsx(\n                    \"th\",\n                    {\n                      className: \"p-4 border-b-2 font-bold bg-blue-100\",\n                      style: { color: colors.harborBlue },\n                      children: \"The Framer Mastery\"\n                    }\n                  )\n                ] }) }),\n                /* @__PURE__ */ jsxs(\"tbody\", { children: [\n                  /* @__PURE__ */ jsxs(\"tr\", { style: { backgroundColor: colors.white }, children: [\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b font-bold\", children: \"\\uB3C5\\uD559 (\\uC720\\uD29C\\uBE0C/\\uBE14\\uB85C\\uADF8)\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F914}\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F422}\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F4B8}\\u{1F4B8}\\u{1F4B8}\" }),\n                    /* @__PURE__ */ jsx(\n                      \"td\",\n                      {\n                        className: \"p-4 border-b text-center row-span-4 align-middle font-bold\",\n                        style: { color: colors.harborBlue },\n                        children: /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col items-center justify-center h-full\", children: [\n                          /* @__PURE__ */ jsx(\"p\", { children: \"\\uC555\\uB3C4\\uC801\\uC778\" }),\n                          /* @__PURE__ */ jsx(\"p\", { children: \"\\uD6A8\\uC728\\uACFC \\uACB0\\uACFC\" })\n                        ] })\n                      }\n                    )\n                  ] }),\n                  /* @__PURE__ */ jsxs(\"tr\", { style: { backgroundColor: colors.white }, children: [\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b font-bold\", children: \"\\uD0C0 \\uC628\\uB77C\\uC778 \\uAC15\\uC758\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F642}\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F3C3}\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F4B8}\\u{1F4B8}\" })\n                  ] }),\n                  /* @__PURE__ */ jsxs(\"tr\", { style: { backgroundColor: colors.white }, children: [\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b font-bold\", children: \"\\uB514\\uC790\\uC778 + \\uAC1C\\uBC1C \\uC678\\uC8FC\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F601}\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F6B6}\\u200D\\u2642\\uFE0F\" }),\n                    /* @__PURE__ */ jsx(\"td\", { className: \"p-4 border-b text-center\", children: \"\\u{1F4B8}\\u{1F4B8}\\u{1F4B8}\\u{1F4B8}\\u{1F4B8}\" })\n                  ] })\n                ] })\n              ] }) }),\n              /* @__PURE__ */ jsx(\n                \"p\",\n                {\n                  className: \"text-center mt-4 text-sm\",\n                  style: { color: colors.textLight },\n                  children: \"* \\uC704 \\uD45C\\uB294 \\uC77C\\uBC18\\uC801\\uC778 \\uACBD\\uC6B0\\uB97C \\uAE30\\uC900\\uC73C\\uB85C \\uD55C \\uBE44\\uAD50\\uC774\\uBA70, \\uAC1C\\uC778\\uC5D0 \\uB530\\uB77C \\uCC28\\uC774\\uAC00 \\uC788\\uC744 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n                }\n              )\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-2xl font-bold\", style: { color: colors.harborBlue }, children: \"GAME CHANGER\" }),\n          /* @__PURE__ */ jsx(\"h3\", { className: \"text-4xl md:text-5xl font-bold my-4\", children: \"\\uC65C \\uC9C0\\uAE08, Framer\\uC778\\uAC00?\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"max-w-3xl mx-auto text-lg\",\n              style: { color: colors.textMedium },\n              children: [\n                \"90%\\uC758 \\uBC18\\uBCF5 \\uC791\\uC5C5\\uACFC 10%\\uC758 \\uD06C\\uB9AC\\uC5D0\\uC774\\uD2F0\\uBE0C. \\uC6F9\\uB514\\uC790\\uC778\\uC758 \\uD604\\uC2E4\\uC785\\uB2C8\\uB2E4. \",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"Framer\\uB294 \\uC774 \\uACF5\\uC2DD\\uC744 \\uC644\\uC804\\uD788 \\uB4A4\\uC9D1\\uC2B5\\uB2C8\\uB2E4. \\uC774\\uC81C \\uB2F9\\uC2E0\\uC758 \\uC2DC\\uAC04 90%\\uB97C \\uC624\\uB86F\\uC774 \\uCC3D\\uC758\\uC131\\uC5D0 \\uC3DF\\uC544\\uBD80\\uC73C\\uC138\\uC694.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto grid md:grid-cols-3 gap-8 mt-12\", children: [\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\"h4\", { className: \"text-xl font-bold mb-2\", children: \"\\uC555\\uB3C4\\uC801\\uC778 \\uC18D\\uB3C4\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC544\\uC774\\uB514\\uC5B4\\uB97C \\uD604\\uC2E4\\uB85C \\uB9CC\\uB4DC\\uB294 \\uB370 \\uB2E8 \\uD558\\uB8E8. Framer\\uC758 \\uBE14\\uB85D \\uC2DC\\uC2A4\\uD15C\\uACFC AI \\uAE30\\uB2A5\\uC774 \\uB2F9\\uC2E0\\uC758 \\uC2DC\\uAC04\\uC744 \\uC544\\uAEF4\\uC90D\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\"h4\", { className: \"text-xl font-bold mb-2\", children: \"\\uCF54\\uB4DC \\uC5C6\\uB294 \\uACE0\\uD004\\uB9AC\\uD2F0\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC1C\\uBC1C\\uC790\\uAC00 \\uBA87 \\uC8FC\\uAC04 \\uAD6C\\uD604\\uD560 \\uC778\\uD130\\uB799\\uC158\\uC744 \\uB2E8 \\uBA87 \\uBC88\\uC758 \\uD074\\uB9AD\\uC73C\\uB85C. \\uB2F9\\uC2E0\\uC758 \\uB514\\uC790\\uC778\\uC740 \\uC774\\uC81C \\uC8FD\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\"h4\", { className: \"text-xl font-bold mb-2\", children: \"\\uC2E4\\uC2DC\\uAC04 \\uD611\\uC5C5\\uACFC \\uBC30\\uD3EC\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uB514\\uC790\\uC778\\uBD80\\uD130 \\uBC30\\uD3EC\\uAE4C\\uC9C0 \\uD55C \\uACF3\\uC5D0\\uC11C. \\uD300\\uACFC \\uD568\\uAED8 \\uC2E4\\uC2DC\\uAC04\\uC73C\\uB85C \\uC791\\uC5C5\\uD558\\uACE0, \\uD074\\uB9AD \\uD55C \\uBC88\\uC73C\\uB85C \\uC138\\uC0C1\\uC5D0 \\uACF5\\uAC1C\\uD558\\uC138\\uC694.\" })\n                ]\n              }\n            )\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uC774 \\uC704\\uB300\\uD55C \\uC5EC\\uC815\\uC744 \\uD568\\uAED8\\uD560 \\uBD84\\uB4E4\\uC744 \\uCC3E\\uC2B5\\uB2C8\\uB2E4\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: audience.map((person, index) => /* @__PURE__ */ jsxs(\n                \"div\",\n                {\n                  className: \"p-8 rounded-lg bg-white shadow-md hover:shadow-xl transition-shadow duration-300\",\n                  children: [\n                    /* @__PURE__ */ jsx(\n                      \"h3\",\n                      {\n                        className: \"text-xl font-bold mb-4\",\n                        style: { color: colors.harborBlue },\n                        children: person.title\n                      }\n                    ),\n                    /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: person.description })\n                  ]\n                },\n                index\n              )) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto grid md:grid-cols-2 gap-12 items-center\", children: [\n          /* @__PURE__ */ jsxs(\"div\", { className: \"text-center md:text-left\", children: [\n            /* @__PURE__ */ jsx(\"p\", { className: \"font-bold\", style: { color: colors.harborBlue }, children: \"INSTRUCTOR\" }),\n            /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold my-4\", children: \"Yongmin, Harbor School\" }),\n            /* @__PURE__ */ jsx(\"p\", { className: \"mb-6\", style: { color: colors.textMedium }, children: \"Framer\\uAC00 \\uD55C\\uAD6D\\uC5D0 \\uC54C\\uB824\\uC9C0\\uAE30 \\uC804\\uBD80\\uD130 7\\uB144\\uAC04 Framer\\uB9CC\\uC744 \\uC5F0\\uAD6C\\uD558\\uACE0, 30\\uAC1C \\uC774\\uC0C1\\uC758 \\uC2E4\\uC804 \\uD504\\uB85C\\uC81D\\uD2B8\\uB97C \\uC131\\uACF5\\uC2DC\\uD0A8 1\\uC138\\uB300 Framer \\uC804\\uBB38\\uAC00\\uC785\\uB2C8\\uB2E4. \\uB2E8\\uC21C\\uD55C \\uD234 \\uC0AC\\uC6A9\\uBC95\\uC744 \\uB118\\uC5B4, '\\uC5B4\\uB5BB\\uAC8C' \\uB514\\uC790\\uC778\\uC73C\\uB85C \\uBB38\\uC81C\\uB97C \\uD574\\uACB0\\uD558\\uB294\\uC9C0\\uC5D0 \\uB300\\uD55C \\uAE4A\\uC740 \\uD1B5\\uCC30\\uB825\\uC744 \\uACF5\\uC720\\uD569\\uB2C8\\uB2E4.\" }),\n            /* @__PURE__ */ jsxs(\"div\", { className: \"flex justify-center md:justify-start space-x-8\", children: [\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-center\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-3xl font-bold\", children: \"7+\" }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"\\uAD50\\uC721 \\uACBD\\uB825\" })\n              ] }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-center\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-3xl font-bold\", children: \"30+\" }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"\\uC2E4\\uC804 \\uD504\\uB85C\\uC81D\\uD2B8\" })\n              ] }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-center\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-3xl font-bold\", children: \"1,300+\" }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"\\uB204\\uC801 \\uC218\\uAC15\\uC0DD\" })\n              ] })\n            ] })\n          ] }),\n          /* @__PURE__ */ jsx(\"div\", { className: \"w-full max-w-sm mx-auto\", children: /* @__PURE__ */ jsx(\n            \"div\",\n            {\n              className: \"aspect-square rounded-full p-2\",\n              style: {\n                background: `linear-gradient(to bottom right, ${colors.harborPink}, ${colors.harborBlue})`\n              },\n              children: /* @__PURE__ */ jsx(\"div\", { className: \"w-full h-full rounded-full flex items-center justify-center bg-gray-100\", children: /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"[\\uAC15\\uC0AC \\uC774\\uBBF8\\uC9C0]\" }) })\n            }\n          ) })\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-4xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uB2F9\\uC2E0\\uC774 \\uB9C8\\uC2A4\\uD130\\uD560 6\\uAC00\\uC9C0 \\uD575\\uC2EC \\uC5ED\\uB7C9\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-2 gap-x-8 gap-y-6\", children: features.map((feature, index) => /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-start space-x-4\", children: [\n                /* @__PURE__ */ jsx(\n                  CheckIcon,\n                  {\n                    className: \"h-6 w-6 mt-1 flex-shrink-0\",\n                    style: { color: colors.harborBlue }\n                  }\n                ),\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-lg\", style: { color: colors.textMedium }, children: feature })\n              ] }, index)) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-6xl mx-auto text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-4\", children: \"\\uC878\\uC5C5\\uC0DD\\uB4E4\\uC758 \\uC2E4\\uC81C \\uACB0\\uACFC\\uBB3C\" }),\n          /* @__PURE__ */ jsx(\n            \"p\",\n            {\n              className: \"max-w-2xl mx-auto mb-12\",\n              style: { color: colors.textMedium },\n              children: \"\\uC774 \\uAC15\\uC758\\uB97C \\uD1B5\\uD574 \\uB2F9\\uC2E0\\uCC98\\uB7FC \\uD3C9\\uBC94\\uD588\\uB358 \\uB514\\uC790\\uC774\\uB108\\uB4E4\\uC774 \\uB9CC\\uB4E4\\uC5B4\\uB0B8, \\uBE44\\uBC94\\uD55C \\uACB0\\uACFC\\uBB3C\\uB4E4\\uC785\\uB2C8\\uB2E4.\"\n            }\n          ),\n          /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: [1, 2, 3].map((i) => /* @__PURE__ */ jsxs(\"div\", { className: \"group\", children: [\n            /* @__PURE__ */ jsx(\"div\", { className: \"aspect-video rounded-lg bg-gray-100 mb-4 border border-gray-200 flex items-center justify-center\", children: /* @__PURE__ */ jsxs(\"p\", { style: { color: colors.textLight }, children: [\n              \"[\\uC878\\uC5C5\\uC0DD \\uD504\\uB85C\\uC81D\\uD2B8 \",\n              i,\n              \"]\"\n            ] }) }),\n            /* @__PURE__ */ jsxs(\"h3\", { className: \"text-lg font-bold\", children: [\n              \"Project Title \",\n              i\n            ] }),\n            /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"by Alumnus Name\" })\n          ] }, i)) })\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto text-center\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-4\", children: \"\\uBC31\\uBB38\\uC774 \\uBD88\\uC5EC\\uC77C\\uACAC\" }),\n              /* @__PURE__ */ jsxs(\"p\", { className: \"text-lg mb-8\", style: { color: colors.textMedium }, children: [\n                \"\\uC774 \\uAC15\\uC758\\uB97C \\uD1B5\\uD574 \\uB2F9\\uC2E0\\uC774 \\uC9C1\\uC811 \\uB9CC\\uB4E4\\uAC8C \\uB420\",\n                \" \",\n                /* @__PURE__ */ jsx(\"span\", { style: { color: colors.harborBlue }, className: \"font-bold\", children: \"\\uC2E4\\uC804 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uD504\\uB85C\\uC81D\\uD2B8\" }),\n                \"\\uC785\\uB2C8\\uB2E4.\"\n              ] }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"aspect-video rounded-lg shadow-2xl p-2 border border-gray-200 bg-white\", children: /* @__PURE__ */ jsx(\"div\", { className: \"w-full h-full bg-gray-100 rounded flex items-center justify-center\", children: /* @__PURE__ */ jsxs(\"p\", { style: { color: colors.textLight }, children: [\n                \"[\",\n                /* @__PURE__ */ jsx(\n                  \"a\",\n                  {\n                    href: \"https://marianne.framer.website\",\n                    target: \"_blank\",\n                    rel: \"noopener noreferrer\",\n                    className: \"underline\",\n                    style: { color: colors.harborBlue },\n                    children: \"https://marianne.framer.website\"\n                  }\n                ),\n                \"]\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"(\\uC704 \\uB9C1\\uD06C\\uC640 \\uAC19\\uC740 \\uD004\\uB9AC\\uD2F0\\uC758 \\uACB0\\uACFC\\uBB3C\\uC744 \\uB9CC\\uB4ED\\uB2C8\\uB2E4)\"\n              ] }) }) }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-left mt-8 grid md:grid-cols-2 gap-x-8 gap-y-4 max-w-2xl mx-auto\", children: [\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"\\uC644\\uBCBD\\uD55C \\uBC18\\uC751\\uD615 \\uB808\\uC774\\uC544\\uC6C3\"\n                ] }),\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"CMS\\uB97C \\uD1B5\\uD55C \\uB3D9\\uC801 \\uCF58\\uD150\\uCE20 \\uAD00\\uB9AC\"\n                ] }),\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"\\uC2DC\\uC120\\uC744 \\uC0AC\\uB85C\\uC7A1\\uB294 \\uC2A4\\uD06C\\uB864 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\"\n                ] }),\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"\\uCF54\\uB4DC \\uCEF4\\uD3EC\\uB10C\\uD2B8\\uB97C \\uD65C\\uC6A9\\uD55C \\uAE30\\uB2A5 \\uD655\\uC7A5\"\n                ] })\n              ] })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-4xl mx-auto\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uC7A0\\uC7AC\\uB825\\uC744 \\uD3ED\\uBC1C\\uC2DC\\uD0AC 6\\uC8FC\\uAC04\\uC758 \\uC555\\uCD95 \\uC131\\uC7A5 \\uD504\\uB85C\\uADF8\\uB7A8\" }),\n          /* @__PURE__ */ jsx(\"div\", { className: \"space-y-4\", children: curriculum.map((week, index) => /* @__PURE__ */ jsxs(\n            \"details\",\n            {\n              className: \"p-6 rounded-lg group border\",\n              open: index === 0,\n              style: {\n                backgroundColor: colors.white,\n                borderColor: colors.harborPink\n              },\n              children: [\n                /* @__PURE__ */ jsxs(\"summary\", { className: \"font-bold text-xl list-none flex justify-between items-center cursor-pointer\", children: [\n                  /* @__PURE__ */ jsxs(\"div\", { children: [\n                    /* @__PURE__ */ jsx(\n                      \"p\",\n                      {\n                        className: \"text-sm font-bold\",\n                        style: { color: colors.harborBlue },\n                        children: week.module\n                      }\n                    ),\n                    /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-bold mt-1 group-hover:opacity-80 transition-opacity\", children: week.title })\n                  ] }),\n                  /* @__PURE__ */ jsxs(\n                    \"span\",\n                    {\n                      className: \"text-sm ml-4 whitespace-nowrap\",\n                      style: { color: colors.textLight },\n                      children: [\n                        week.lessonsCount,\n                        \"\\uAC15 / \",\n                        week.duration\n                      ]\n                    }\n                  )\n                ] }),\n                /* @__PURE__ */ jsxs(\"div\", { className: \"overflow-hidden max-h-0 group-open:max-h-[1000px] transition-all duration-500 ease-in-out\", children: [\n                  /* @__PURE__ */ jsx(\"p\", { className: \"my-4\", style: { color: colors.textMedium }, children: week.description }),\n                  /* @__PURE__ */ jsxs(\n                    \"div\",\n                    {\n                      className: \"p-4 rounded-md mt-4\",\n                      style: { backgroundColor: colors.harborPink },\n                      children: [\n                        /* @__PURE__ */ jsx(\n                          \"p\",\n                          {\n                            className: \"font-bold text-sm\",\n                            style: { color: colors.harborBlue },\n                            children: \"Key Outcome\"\n                          }\n                        ),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"mt-1\", style: { color: colors.textMedium }, children: week.outcome })\n                      ]\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"ul\", { className: \"space-y-2 pt-4 mt-4 border-t border-gray-200\", children: week.lessons.map((lesson, lessonIndex) => /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                    /* @__PURE__ */ jsx(\n                      CheckIcon,\n                      {\n                        className: \"h-5 w-5 mr-3 mt-1 flex-shrink-0\",\n                        style: { color: colors.textLight }\n                      }\n                    ),\n                    /* @__PURE__ */ jsx(\"span\", { style: { color: colors.textMedium }, children: lesson })\n                  ] }, lessonIndex)) })\n                ] })\n              ]\n            },\n            index\n          )) })\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uBA3C\\uC800 \\uACBD\\uD5D8\\uD55C \\uBD84\\uB4E4\\uC758 \\uC758\\uC2EC \\uC5C6\\uB294 \\uCC2C\\uC0AC\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: reviews.map((review, i) => /* @__PURE__ */ jsxs(\n                \"div\",\n                {\n                  className: \"bg-white p-6 rounded-lg flex flex-col shadow-md hover:shadow-xl transition-shadow duration-300\",\n                  children: [\n                    /* @__PURE__ */ jsx(\"div\", { className: \"flex mb-4\", children: [...Array(5)].map((_, starIndex) => /* @__PURE__ */ jsx(\n                      StarIcon,\n                      {\n                        className: \"h-5 w-5 text-yellow-400\"\n                      },\n                      starIndex\n                    )) }),\n                    /* @__PURE__ */ jsxs(\"p\", { className: \"flex-grow\", style: { color: colors.textMedium }, children: [\n                      '\"',\n                      review.text,\n                      '\"'\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"div\", { className: \"mt-4\", children: [\n                      /* @__PURE__ */ jsx(\"p\", { className: \"font-bold\", children: review.name }),\n                      /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: review.role })\n                    ] })\n                  ]\n                },\n                i\n              )) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-4\", children: \"\\uB2F9\\uC2E0\\uC758 \\uC131\\uC7A5\\uC744 \\uC704\\uD55C, \\uB2E8 \\uD558\\uB098\\uC758 \\uD0A4\\uD2B8\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"text-lg max-w-2xl mx-auto mb-10\",\n              style: { color: colors.textMedium },\n              children: [\n                \"\\uC131\\uACF5\\uC801\\uC778 \\uC5EC\\uC815\\uC744 \\uC704\\uD574 \\uD544\\uC694\\uD55C \\uBAA8\\uB4E0 \\uAC83\\uC744 \\uB2F4\\uC558\\uC2B5\\uB2C8\\uB2E4.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uB2F9\\uC2E0\\uC740 \\uADF8\\uC800 \\uC131\\uC7A5\\uC5D0\\uB9CC \\uC9D1\\uC911\\uD558\\uC138\\uC694.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-3xl mx-auto grid md:grid-cols-2 gap-8 text-left\", children: [\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uC131\\uC7A5\\uC758 \\uB3D9\\uBC18\\uC790, \\uC2AC\\uB799 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC19\\uC740 \\uBAA9\\uD45C\\uB97C \\uAC00\\uC9C4 \\uB3D9\\uB8CC\\uB4E4\\uACFC \\uD568\\uAED8\\uB77C\\uBA74 \\uB354 \\uBA40\\uB9AC, \\uB354 \\uBE60\\uB974\\uAC8C \\uAC08 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uC774\\uACF3\\uC740 \\uB2E8\\uC21C\\uD55C Q&A \\uACF5\\uAC04\\uC774 \\uC544\\uB2CC, \\uC9D1\\uB2E8 \\uC9C0\\uC131\\uC758 \\uD5C8\\uBE0C\\uC785\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uC2DC\\uAC04\\uC744 \\uC9C0\\uBC30\\uD558\\uB294, \\uD575\\uC2EC \\uB9AC\\uC18C\\uC2A4\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC15\\uC758\\uC5D0 \\uC0AC\\uC6A9\\uB41C \\uBAA8\\uB4E0 Framer \\uD30C\\uC77C\\uACFC \\uCF54\\uB4DC \\uC2A4\\uB2C8\\uD3AB\\uC740 \\uB2F9\\uC2E0\\uC758 \\uC2DC\\uAC04\\uC744 \\uC544\\uAEF4\\uC8FC\\uB294 \\uAC00\\uC7A5 \\uAC15\\uB825\\uD55C \\uBB34\\uAE30\\uAC00 \\uB420 \\uAC83\\uC785\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uD504\\uB85C\\uD398\\uC154\\uB110\\uC758 \\uC0C1\\uC9D5, \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uD15C\\uD50C\\uB9BF\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC15\\uC758 \\uC644\\uAC15 \\uD6C4, \\uB2F9\\uC2E0\\uC758 \\uC2E4\\uB825\\uC744 \\uC99D\\uBA85\\uD560 \\uAC00\\uC7A5 \\uBE60\\uB978 \\uBC29\\uBC95. \\uC804\\uBB38\\uAC00\\uAC00 \\uB514\\uC790\\uC778\\uD55C \\uACE0\\uD488\\uC9C8 \\uD15C\\uD50C\\uB9BF\\uC73C\\uB85C \\uB2F9\\uC2E0\\uC758 \\uAC00\\uCE58\\uB97C \\uBCF4\\uC5EC\\uC8FC\\uC138\\uC694.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uC131\\uC7A5\\uC758 \\uD604\\uC7AC\\uC9C4\\uD589\\uD615, \\uD3C9\\uC0DD \\uC5C5\\uB370\\uC774\\uD2B8\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC774 \\uAC15\\uC758\\uB294 \\uC0B4\\uC544\\uC788\\uB294 \\uC720\\uAE30\\uCCB4\\uC785\\uB2C8\\uB2E4. Framer\\uC758 \\uBC1C\\uC804\\uC5D0 \\uB9DE\\uCDB0 \\uB04A\\uC784\\uC5C6\\uC774 \\uC9C4\\uD654\\uD558\\uBA70, \\uB2F9\\uC2E0\\uC758 \\uC2E4\\uB825\\uC744 \\uD56D\\uC0C1 \\uCD5C\\uC2E0\\uC73C\\uB85C \\uC720\\uC9C0\\uD574 \\uB4DC\\uB9BD\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            )\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.harborPink },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-3xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uB2F9\\uC2E0\\uC758 \\uB9C8\\uC9C0\\uB9C9 \\uB9DD\\uC124\\uC784\\uC744 \\uD574\\uACB0\\uD574 \\uB4DC\\uB9BD\\uB2C8\\uB2E4\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"space-y-4\", children: faqs.map((faq, index) => /* @__PURE__ */ jsxs(\n                \"details\",\n                {\n                  className: \"bg-white p-6 rounded-lg group cursor-pointer shadow-sm\",\n                  children: [\n                    /* @__PURE__ */ jsxs(\"summary\", { className: \"font-bold text-lg list-none flex justify-between items-center\", children: [\n                      faq.question,\n                      /* @__PURE__ */ jsx(\n                        \"span\",\n                        {\n                          style: { color: colors.harborBlue },\n                          className: \"transform transition-transform duration-300 group-open:rotate-45 text-2xl\",\n                          children: \"+\"\n                        }\n                      )\n                    ] }),\n                    /* @__PURE__ */ jsx(\"div\", { className: \"overflow-hidden max-h-0 group-open:max-h-screen transition-all duration-500 ease-in-out\", children: /* @__PURE__ */ jsx(\"p\", { className: \"mt-4\", style: { color: colors.textMedium }, children: faq.answer }) })\n                  ]\n                },\n                index\n              )) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"section\", { id: \"pricing\", className: \"py-20 px-4 text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl md:text-5xl font-bold mb-4\", children: \"\\uAC00\\uC7A5 \\uC704\\uB300\\uD55C \\uD22C\\uC790\\uB294 \\uB2F9\\uC2E0\\uC758 \\uC131\\uC7A5\\uC785\\uB2C8\\uB2E4\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"text-lg max-w-2xl mx-auto mb-10\",\n              style: { color: colors.textMedium },\n              children: [\n                \"\\uD55C \\uBC88\\uC758 \\uACB0\\uC2EC\\uC73C\\uB85C, \\uB2F9\\uC2E0\\uC758 \\uCEE4\\uB9AC\\uC5B4\\uB294 \\uC0C8\\uB85C\\uC6B4 \\uC2DC\\uB300\\uB97C \\uB9DE\\uC774\\uD569\\uB2C8\\uB2E4.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uC5B4\\uC81C\\uC758 \\uB2F9\\uC2E0\\uACFC \\uC791\\uBCC4\\uD558\\uACE0, \\uB0B4\\uC77C\\uC758 \\uC804\\uBB38\\uAC00\\uC640 \\uB9CC\\uB098\\uC138\\uC694.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\n            \"div\",\n            {\n              className: \"inline-block rounded-lg p-8 border shadow-xl max-w-md w-full\",\n              style: {\n                borderColor: colors.harborBlue,\n                backgroundColor: colors.white\n              },\n              children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-lg font-bold\", style: { color: colors.harborBlue }, children: \"The Framer Mastery \\uD3C9\\uC0DD\\uC18C\\uC7A5\" }),\n                /* @__PURE__ */ jsxs(\"div\", { className: \"my-4\", children: [\n                  /* @__PURE__ */ jsx(\n                    \"span\",\n                    {\n                      className: \"text-2xl line-through mr-4\",\n                      style: { color: colors.textLight },\n                      children: \"630,000\\uC6D0\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsxs(\"span\", { className: \"text-5xl font-bold\", children: [\n                    new Intl.NumberFormat(\"ko-KR\").format(398e3),\n                    \"\\uC6D0\"\n                  ] })\n                ] }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC6D4 33,166\\uC6D0 (12\\uAC1C\\uC6D4 \\uD560\\uBD80 \\uC2DC)\" }),\n                /* @__PURE__ */ jsx(\"p\", { className: \"my-6 font-bold\", style: { color: colors.harborBlue }, children: \"\\u{1F525} \\uB2F9\\uC2E0\\uC758 \\uC7A0\\uC7AC\\uB825\\uC5D0 \\uD22C\\uC790\\uD558\\uC138\\uC694. \\uD560\\uC778\\uC740 \\uAC70\\uB4E4 \\uBFD0. \\u{1F525}\" }),\n                /* @__PURE__ */ jsx(\n                  \"a\",\n                  {\n                    href: \"#\",\n                    style: { backgroundColor: colors.harborBlue, color: colors.white },\n                    className: \"w-full block font-bold py-4 px-8 rounded-lg text-xl hover:opacity-90 transition-opacity duration-300 transform hover:scale-105\",\n                    children: \"\\uB0B4 \\uAC00\\uCE58\\uB97C \\uC62C\\uB9AC\\uB294 \\uD22C\\uC790 \\uC2DC\\uC791\\uD558\\uAE30\"\n                  }\n                ),\n                /* @__PURE__ */ jsxs(\n                  \"div\",\n                  {\n                    className: \"mt-8 text-left text-sm space-y-2\",\n                    style: { color: colors.textMedium },\n                    children: [\n                      /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                        /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-2\" }),\n                        \" \\uD3C9\\uC0DD \\uC18C\\uC7A5 VOD \\uAC15\\uC758\"\n                      ] }),\n                      /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                        /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-2\" }),\n                        \" \\uC804\\uC6A9 \\uC2AC\\uB799 \\uCEE4\\uBBA4\\uB2C8\\uD2F0 \\uCD08\\uB300\"\n                      ] }),\n                      /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                        /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-2\" }),\n                        \" \\uBAA8\\uB4E0 \\uAC15\\uC758 \\uC790\\uB8CC \\uBC0F \\uD575\\uC2EC \\uB9AC\\uC18C\\uC2A4 \\uC81C\\uACF5\"\n                      ] })\n                    ]\n                  }\n                )\n              ]\n            }\n          )\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4 border-t\",\n            style: {\n              borderColor: colors.harborPink,\n              color: colors.textLight,\n              fontSize: \"0.875rem\"\n            },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-4xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\n                \"h2\",\n                {\n                  className: \"text-2xl font-bold text-center mb-8\",\n                  style: { color: colors.textDark },\n                  children: \"\\uD559\\uC2B5 \\uBC0F \\uD658\\uBD88 \\uADDC\\uC815\"\n                }\n              ),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"space-y-6\", children: [\n                /* @__PURE__ */ jsxs(\"div\", { children: [\n                  /* @__PURE__ */ jsx(\"h3\", { className: \"font-bold mb-2\", style: { color: colors.textDark }, children: \"\\uD559\\uC2B5 \\uADDC\\uC815\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uBCF8 \\uC0C1\\uD488\\uC740 \\uB3D9\\uC601\\uC0C1 \\uD615\\uD0DC\\uC758 \\uAC15\\uC758\\uB97C \\uD3C9\\uC0DD \\uC18C\\uC7A5\\uD558\\uBA70 \\uC218\\uAC15\\uD558\\uB294 \\uC0C1\\uD488\\uC785\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uC218\\uAC15 \\uC2E0\\uCCAD \\uBC0F \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD558\\uC2DC\\uBA74, \\uB9C8\\uC774\\uD398\\uC774\\uC9C0\\uB97C \\uD1B5\\uD574 \\uBC14\\uB85C \\uC218\\uAC15\\uC774 \\uAC00\\uB2A5\\uD569\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* ID \\uACF5\\uC720, \\uAC15\\uC758 \\uC601\\uC0C1 \\uBB34\\uB2E8 \\uBC30\\uD3EC \\uBC0F \\uAC00\\uACF5, \\uCEA1\\uCCD0, \\uD310\\uB9E4 \\uB4F1 \\uC77C\\uCCB4\\uC758 \\uC800\\uC791\\uAD8C \\uCE68\\uD574 \\uD589\\uC704\\uB97C \\uAE08\\uC9C0\\uD569\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uBD80\\uC815 \\uC0AC\\uC6A9\\uC774 \\uC801\\uBC1C\\uB420 \\uACBD\\uC6B0 \\uC800\\uC791\\uAD8C\\uBC95 \\uC704\\uBC18\\uC5D0 \\uC758\\uD55C \\uBC95\\uC801\\uC778 \\uC81C\\uC7AC\\uB97C \\uBC1B\\uC73C\\uC2E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\" })\n                ] }),\n                /* @__PURE__ */ jsxs(\"div\", { children: [\n                  /* @__PURE__ */ jsx(\"h3\", { className: \"font-bold mb-2\", style: { color: colors.textDark }, children: \"\\uD658\\uBD88 \\uADDC\\uC815\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uD658\\uBD88 \\uAE08\\uC561\\uC740 \\uC815\\uAC00\\uAC00 \\uC544\\uB2CC \\uC2E4\\uC81C \\uACB0\\uC81C \\uAE08\\uC561\\uC744 \\uAE30\\uC900\\uC73C\\uB85C \\uACC4\\uC0B0\\uB429\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uC218\\uAC15 \\uC2DC\\uC791 \\uD6C4 7\\uC77C \\uC774\\uB0B4, 2\\uAC1C \\uAC15\\uC758 \\uBBF8\\uB9CC \\uC218\\uAC15 \\uC2DC\\uC5D0\\uB294 100% \\uD658\\uBD88 \\uAC00\\uB2A5\\uD569\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uC218\\uAC15 \\uC2DC\\uC791 \\uD6C4 7\\uC77C \\uC774\\uB0B4, 2\\uAC1C \\uAC15\\uC758 \\uC774\\uC0C1 \\uC218\\uAC15 \\uC2DC \\uB610\\uB294 7\\uC77C \\uCD08\\uACFC \\uC2DC\\uC5D0\\uB294 \\uD559\\uC2B5\\uB960\\uC5D0 \\uB530\\uB77C \\uCC28\\uAC10 \\uD6C4 \\uD658\\uBD88\\uC774 \\uC9C4\\uD589\\uB429\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uBCF4\\uB2E4 \\uC790\\uC138\\uD55C \\uD658\\uBD88 \\uADDC\\uC815\\uC740 \\uACE0\\uAC1D\\uC13C\\uD130\\uB85C \\uBB38\\uC758 \\uBC14\\uB78D\\uB2C8\\uB2E4.\" })\n                ] })\n              ] })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          \"footer\",\n          {\n            className: \"text-center py-10 border-t\",\n            style: { borderColor: colors.harborPink },\n            children: [\n              /* @__PURE__ */ jsx(\n                \"p\",\n                {\n                  className: \"text-lg font-bold mb-4\",\n                  style: { color: colors.textDark },\n                  children: \"(\\uC8FC) \\uD558\\uBC84\\uC2A4\\uCFE8\"\n                }\n              ),\n              /* @__PURE__ */ jsxs(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: [\n                \"\\uB300\\uD45C\\uC790 : OOO | \\uAC1C\\uC778\\uC815\\uBCF4\\uCC45\\uC784\\uAD00\\uB9AC\\uC790 : OOO\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uC0AC\\uC5C5\\uC790\\uBC88\\uD638 : 559-63-00040 | \\uD1B5\\uC2E0\\uD310\\uB9E4\\uC5C5 \\uC2E0\\uACE0\\uBC88\\uD638 : \\uC81C 2019-\\uC11C\\uC6B8\\uAC15\\uB0A8-04995\\uD638\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uC8FC\\uC18C : \\uC11C\\uC6B8\\uD2B9\\uBCC4\\uC2DC \\uAD00\\uC545\\uAD6C \\uC870\\uC6D0\\uB85C 25 109 | \\uC774\\uBA54\\uC77C : help@harbor.school\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                /* @__PURE__ */ jsx(\"a\", { href: \"#\", className: \"underline\", children: \"\\uC774\\uC6A9\\uC57D\\uAD00\" }),\n                \" \",\n                \"|\",\n                \" \",\n                /* @__PURE__ */ jsx(\"a\", { href: \"#\", className: \"underline\", children: \"\\uAC1C\\uC778\\uC815\\uBCF4\\uCC98\\uB9AC\\uBC29\\uCE68\" })\n              ] }),\n              /* @__PURE__ */ jsx(\n                \"p\",\n                {\n                  className: \"mt-4\",\n                  style: { color: colors.textLight, fontSize: \"0.875rem\" },\n                  children: \"\\xA9 2024 Harbor School. All rights reserved.\"\n                }\n              )\n            ]\n          }\n        )\n      ]\n    }\n  );\n}\n\nexport {\n  Framer101_3\n};\n", "// src/class/BeforeAfter.tsx\nimport { useState } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar colors = {\n  harborBlue: \"#005DFA\",\n  white: \"#FEFDFA\",\n  textDark: \"#1a202c\",\n  textMedium: \"#4a5568\",\n  textLight: \"#718096\",\n  lightGray: \"#f8f9fa\"\n};\nvar Icon = ({\n  path,\n  className = \"w-10 h-10\"\n}) => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    stroke: \"currentColor\",\n    strokeWidth: \"1.5\",\n    children: /* @__PURE__ */ jsx(\"path\", { strokeLinecap: \"round\", strokeLinejoin: \"round\", d: path })\n  }\n);\nvar FigmaIcon = () => /* @__PURE__ */ jsxs(\n  \"svg\",\n  {\n    width: \"24\",\n    height: \"24\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    children: [\n      /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\",\n          fill: \"#2C2C2C\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M7.50009 12C7.50009 10.0688 9.06884 8.5 11.0001 8.5H13.5001C15.4313 8.5 17.0001 10.0688 17.0001 12C17.0001 13.9312 15.4313 15.5 13.5001 15.5H11.0001C9.06884 15.5 7.50009 13.9312 7.50009 12Z\",\n          fill: \"#0ACF83\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M7.5 6.25C7.5 4.31875 9.06875 2.75 11 2.75H13.5C15.4312 2.75 17 4.31875 17 6.25V8.5H13.5C11.5688 8.5 10 7.18125 10 5.25C10 4.81875 9.68125 4.5 9.25 4.5C8.2875 4.5 7.5 5.2875 7.5 6.25Z\",\n          fill: \"#A259FF\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M7.5 17.75C7.5 19.6812 9.06875 21.25 11 21.25H13.5C15.4312 21.25 17 19.6812 17 17.75V15.5H13.5C11.5688 15.5 10 16.8187 10 18.75C10 19.1812 9.68125 19.5 9.25 19.5C8.2875 19.5 7.5 18.7125 7.5 17.75Z\",\n          fill: \"#F24E1E\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M17 12C17 13.9312 15.4312 15.5 13.5 15.5H11C9.06875 15.5 7.5 13.9312 7.5 12C7.5 10.0688 9.06875 8.5 11 8.5H13.5C15.4312 8.5 17 10.0688 17 12Z\",\n          fill: \"#FF7262\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M19.25 12C19.25 13.9312 17.6812 15.5 15.75 15.5H13.5V8.5H15.75C17.6812 8.5 19.25 10.0688 19.25 12Z\",\n          fill: \"#1ABCFE\"\n        }\n      )\n    ]\n  }\n);\nvar ScrollIcon = () => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className: \"w-8 h-8 text-white animate-bounce\",\n    fill: \"none\",\n    viewBox: \"0 0 24 24\",\n    stroke: \"currentColor\",\n    children: /* @__PURE__ */ jsx(\n      \"path\",\n      {\n        strokeLinecap: \"round\",\n        strokeLinejoin: \"round\",\n        strokeWidth: \"1.5\",\n        d: \"M15 13l-3 3m0 0l-3-3m3 3V8m0 13a9 9 0 110-18 9 9 0 010 18z\"\n      }\n    )\n  }\n);\nvar Arrow = ({ className }) => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    stroke: \"currentColor\",\n    children: /* @__PURE__ */ jsx(\n      \"path\",\n      {\n        strokeLinecap: \"round\",\n        strokeLinejoin: \"round\",\n        strokeWidth: 2,\n        d: \"M14 5l7 7m0 0l-7 7m7-7H3\"\n      }\n    )\n  }\n);\nvar BeforeAfterGraphic = () => {\n  const [showTooltip, setShowTooltip] = useState(true);\n  return /* @__PURE__ */ jsxs(\"div\", { className: \"grid md:grid-cols-2 gap-8 items-start\", children: [\n    /* @__PURE__ */ jsxs(\"div\", { children: [\n      /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-bold mb-4 text-red-500\", children: \"Before\" }),\n      /* @__PURE__ */ jsxs(\"div\", { className: \"p-4 rounded-lg border border-gray-200 bg-white shadow-lg h-full\", children: [\n        /* @__PURE__ */ jsx(\"p\", { className: \"text-left text-sm font-semibold mb-4\", children: \"[\\uC218\\uAC15 \\uC804] Figma-\\uAC1C\\uBC1C\\uC790 \\uC804\\uB2EC \\uBC29\\uC2DD\" }),\n        /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col items-center space-y-2\", children: [\n          /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center space-x-2\", children: [\n            /* @__PURE__ */ jsx(FigmaIcon, {}),\n            /* @__PURE__ */ jsx(\"span\", { className: \"font-bold\", children: \"\\uB514\\uC790\\uC774\\uB108\" })\n          ] }),\n          /* @__PURE__ */ jsx(\"p\", { className: \"text-xs text-gray-500\", children: \"\\uC815\\uC801 \\uB514\\uC790\\uC778 \\uC81C\\uC791\" }),\n          /* @__PURE__ */ jsx(Arrow, { className: \"w-8 h-8 text-gray-300 transform rotate-90\" }),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"text-center p-2 bg-red-50 border border-red-200 rounded-lg\", children: [\n            /* @__PURE__ */ jsx(\"p\", { className: \"font-bold text-red-600 text-sm\", children: \"\\uC18C\\uD1B5\\uC758 \\uBCBD\" }),\n            /* @__PURE__ */ jsx(\"p\", { className: \"text-xs text-red-500\", children: '\"\\uC774\\uAC70 \\uC774\\uB807\\uAC8C \\uC548\\uB418\\uB098\\uC694?\"' }),\n            /* @__PURE__ */ jsx(\"p\", { className: \"text-xs text-red-500\", children: '\"\\uC774\\uAC74 \\uAD6C\\uD604\\uC774 \\uC5B4\\uB824\\uC6B4\\uB370...\"' })\n          ] }),\n          /* @__PURE__ */ jsx(Arrow, { className: \"w-8 h-8 text-gray-300 transform rotate-90\" }),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center space-x-2\", children: [\n            /* @__PURE__ */ jsx(\n              Icon,\n              {\n                path: \"M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4\",\n                className: \"w-8 h-8 text-gray-600\"\n              }\n            ),\n            /* @__PURE__ */ jsx(\"span\", { className: \"font-bold\", children: \"\\uAC1C\\uBC1C\\uC790\" })\n          ] }),\n          /* @__PURE__ */ jsx(\"p\", { className: \"text-xs text-gray-500\", children: \"\\uD574\\uC11D\\uD558\\uACE0 \\uC7AC\\uAD6C\\uD604\" })\n        ] })\n      ] }),\n      /* @__PURE__ */ jsx(\"p\", { className: \"mt-4 text-center\", style: { color: colors.textLight }, children: \"\\uC18C\\uD1B5 \\uBE44\\uC6A9 \\uC99D\\uAC00, \\uAD6C\\uD604 \\uD004\\uB9AC\\uD2F0 \\uC800\\uD558\" })\n    ] }),\n    /* @__PURE__ */ jsxs(\"div\", { children: [\n      /* @__PURE__ */ jsx(\n        \"h3\",\n        {\n          className: \"text-2xl font-bold mb-4\",\n          style: { color: colors.harborBlue },\n          children: \"After\"\n        }\n      ),\n      /* @__PURE__ */ jsxs(\n        \"div\",\n        {\n          className: \"p-4 rounded-lg border-2 h-full\",\n          style: { borderColor: colors.harborBlue },\n          children: [\n            /* @__PURE__ */ jsx(\n              \"p\",\n              {\n                className: \"text-left text-sm font-semibold mb-4\",\n                style: { color: colors.harborBlue },\n                children: \"[\\uC218\\uAC15 \\uD6C4] Framer\\uB97C \\uD1B5\\uD55C \\uC6D0\\uC2A4\\uD1B1 \\uC81C\\uC791\"\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"relative w-full h-[450px] rounded-lg overflow-hidden group\",\n                onMouseEnter: () => setShowTooltip(false),\n                children: [\n                  showTooltip && /* @__PURE__ */ jsxs(\"div\", { className: \"absolute inset-0 z-10 flex flex-col items-center justify-center bg-black bg-opacity-60 transition-opacity duration-300 pointer-events-none\", children: [\n                    /* @__PURE__ */ jsx(ScrollIcon, {}),\n                    /* @__PURE__ */ jsx(\"p\", { className: \"mt-2 text-white font-bold\", children: \"\\uC2A4\\uD06C\\uB864\\uD558\\uC5EC \\uC778\\uD130\\uB799\\uC158\\uC744 \\uD655\\uC778\\uD574\\uBCF4\\uC138\\uC694\" })\n                  ] }),\n                  /* @__PURE__ */ jsx(\n                    \"iframe\",\n                    {\n                      src: \"https://marianne.framer.website/\",\n                      className: \"w-full h-full border-0\",\n                      title: \"Framer Project Example\",\n                      scrolling: \"no\"\n                    }\n                  )\n                ]\n              }\n            )\n          ]\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"p\",\n        {\n          className: \"mt-4 text-center font-bold\",\n          style: { color: colors.harborBlue },\n          children: \"\\uC555\\uB3C4\\uC801\\uC778 \\uC18D\\uB3C4, \\uC644\\uBCBD\\uD55C \\uD004\\uB9AC\\uD2F0\"\n        }\n      )\n    ] })\n  ] });\n};\n\nexport {\n  BeforeAfterGraphic\n};\n", "import {\n  BeforeAfterGraphic\n} from \"./chunk-6OBOGQ5Q.mjs\";\n\n// src/class/Framer101.tsx\nimport { useState, useEffect } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar colors = {\n  harborBlue: \"#005DFA\",\n  white: \"#FEFDFA\",\n  harborPink: \"#FCEBEF\",\n  black: \"#25313c\",\n  textMedium: \"#4a5568\",\n  textLight: \"#718096\",\n  lightGray: \"#f8f9fa\"\n};\nvar CheckIcon = ({ className }) => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className,\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 24 24\",\n    fill: \"currentColor\",\n    children: /* @__PURE__ */ jsx(\n      \"path\",\n      {\n        fillRule: \"evenodd\",\n        d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm13.36-1.814a.75.75 0 10-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 00-1.06 1.06l2.25 2.25a.75.75 0 001.14-.094l3.75-5.25z\",\n        clipRule: \"evenodd\"\n      }\n    )\n  }\n);\nvar StarIcon = ({ className }) => /* @__PURE__ */ jsx(\n  \"svg\",\n  {\n    className,\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 24 24\",\n    fill: \"currentColor\",\n    children: /* @__PURE__ */ jsx(\n      \"path\",\n      {\n        fillRule: \"evenodd\",\n        d: \"M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.007z\",\n        clipRule: \"evenodd\"\n      }\n    )\n  }\n);\nfunction Framer101() {\n  const features = [\n    \"\\uD504\\uB808\\uC774\\uBA38\\uC758 \\uBAA8\\uB4E0 \\uAE30\\uB2A5, \\uAE30\\uCD08\\uBD80\\uD130 \\uC2E4\\uBB34\\uAE4C\\uC9C0\",\n    \"Apple.com \\uC2A4\\uD0C0\\uC77C\\uC758 \\uACE0\\uAE09 \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158\",\n    \"\\uC2E4\\uC81C \\uCD9C\\uC2DC \\uAC00\\uB2A5\\uD55C \\uBC18\\uC751\\uD615 \\uC6F9 \\uD504\\uB85C\\uC81D\\uD2B8 \\uC81C\\uC791\",\n    \"\\uB514\\uC790\\uC778\\uB9CC\\uC73C\\uB85C \\uB05D\\uB0B4\\uC9C0 \\uC54A\\uB294, \\uCF54\\uB4DC \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uD65C\\uC6A9\\uBC95\",\n    \"Framer CMS\\uB97C \\uD65C\\uC6A9\\uD55C \\uB370\\uC774\\uD130 \\uC5F0\\uB3D9 \\uB9C8\\uC2A4\\uD130\",\n    \"AI\\uB97C \\uD65C\\uC6A9\\uD55C \\uC6F9\\uB514\\uC790\\uC778 \\uBC0F \\uCF54\\uB4DC \\uC0DD\\uC131 \\uC790\\uB3D9\\uD654\"\n  ];\n  const audience = [\n    {\n      title: \"\\uC6F9 \\uB514\\uC790\\uC778\\uC744 \\uCF54\\uB529 \\uB54C\\uBB38\\uC5D0 \\uD3EC\\uAE30\\uD588\\uB358 \\uB514\\uC790\\uC774\\uB108\",\n      description: \"\\uC774\\uC81C \\uAC1C\\uBC1C\\uC790\\uC5D0\\uAC8C \\uC544\\uC26C\\uC6B4 \\uC18C\\uB9AC \\uD558\\uC9C0 \\uB9C8\\uC138\\uC694. \\uB2F9\\uC2E0\\uC774 \\uC0C1\\uC0C1\\uD55C \\uB514\\uC790\\uC778, 100% \\uADF8\\uB300\\uB85C \\uAD6C\\uD604\\uB418\\uB294 \\uC644\\uBCBD\\uD55C \\uBC18\\uC751\\uD615 \\uC6F9\\uC0AC\\uC774\\uD2B8\\uB97C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      title: \"\\uC678\\uC8FC \\uBE44\\uC6A9\\uC774 \\uBD80\\uB2F4\\uB418\\uB294 1\\uC778 \\uC0AC\\uC5C5\\uAC00, \\uC2A4\\uD0C0\\uD2B8\\uC5C5\",\n      description: \"\\uB79C\\uB529\\uD398\\uC774\\uC9C0 \\uD558\\uB098\\uC5D0 \\uC218\\uBC31\\uB9CC \\uC6D0... \\uC774\\uC81C \\uC9C1\\uC811 \\uB9CC\\uB4E4\\uACE0 5\\uBD84 \\uB9CC\\uC5D0 \\uC218\\uC815\\uD558\\uC138\\uC694. \\uC544\\uB080 \\uC678\\uC8FC\\uBE44\\uB85C \\uBE44\\uC988\\uB2C8\\uC2A4\\uC758 \\uC131\\uACF5 \\uD655\\uB960\\uC744 \\uB192\\uC77C \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      title: \"Framer\\uB85C \\uD558\\uC774\\uC5D4\\uB4DC \\uD504\\uB85C\\uC81D\\uD2B8\\uB97C \\uAFC8\\uAFB8\\uB294 \\uC804\\uBB38\\uAC00\",\n      description: \"\\uB2E8\\uC21C \\uD398\\uC774\\uC9C0 \\uC81C\\uC791\\uC744 \\uB118\\uC5B4, \\uACE0\\uAC1D\\uC744 \\uAC10\\uB3D9\\uC2DC\\uD0A4\\uB294 \\uD558\\uC774\\uC5D4\\uB4DC \\uC778\\uD130\\uB799\\uC158\\uC73C\\uB85C \\uB2F9\\uC2E0\\uC758 \\uC11C\\uBE44\\uC2A4 \\uB2E8\\uAC00\\uB97C 2\\uBC30 \\uC774\\uC0C1 \\uB04C\\uC5B4\\uC62C\\uB9AC\\uC138\\uC694. \\uB300\\uCCB4 \\uBD88\\uAC00\\uB2A5\\uD55C \\uC804\\uBB38\\uAC00\\uAC00 \\uB418\\uC2ED\\uC2DC\\uC624.\"\n    }\n  ];\n  const reviews = [\n    {\n      name: \"\\uAE40\\uC9C0\\uC218\",\n      role: \"UX/UI \\uB514\\uC790\\uC774\\uB108\",\n      text: \"\\uC774 \\uAC15\\uC758 \\uC5C6\\uC5C8\\uC73C\\uBA74 \\uC5B4\\uCA54 \\uBED4 \\uD588\\uB098\\uC694. \\uAC1C\\uBC1C\\uC790\\uC640\\uC758 \\uC18C\\uD1B5 \\uBE44\\uC6A9\\uC774 1/10\\uB85C \\uC904\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uC81C\\uAC00 \\uC9C1\\uC811 \\uB9CC\\uB4DC\\uB294 \\uAC8C \\uD6E8\\uC52C \\uBE60\\uB974\\uACE0 \\uD004\\uB9AC\\uD2F0\\uB3C4 \\uB192\\uC544\\uC694.\"\n    },\n    {\n      name: \"\\uBC15\\uB300\\uD45C\",\n      role: \"\\uC2A4\\uD0C0\\uD2B8\\uC5C5 \\uB300\\uD45C\",\n      text: \"\\uC678\\uC8FC \\uB9E1\\uAE38 \\uB3C8\\uC73C\\uB85C \\uB9C8\\uCF00\\uD305\\uC5D0 \\uB354 \\uC9D1\\uC911\\uD560 \\uC218 \\uC788\\uAC8C \\uB410\\uC2B5\\uB2C8\\uB2E4. MVP \\uC81C\\uC791\\uACFC \\uD14C\\uC2A4\\uD2B8\\uAC00 \\uC815\\uB9D0 \\uBE68\\uB77C\\uC84C\\uACE0, \\uD22C\\uC790 \\uC720\\uCE58\\uC5D0\\uB3C4 \\uD070 \\uB3C4\\uC6C0\\uC774 \\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      name: \"\\uD504\\uB9AC\\uB79C\\uC11C \\uBC15\",\n      role: \"Framer \\uC804\\uBB38\\uAC00\",\n      text: \"\\uC194\\uC9C1\\uD788 \\uC800\\uB9CC \\uC54C\\uACE0 \\uC2F6\\uC740 \\uAC15\\uC758\\uC785\\uB2C8\\uB2E4. \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158 \\uD30C\\uD2B8\\uB294 \\uC815\\uB9D0... \\uC608\\uC220\\uC785\\uB2C8\\uB2E4. \\uD504\\uB85C\\uC81D\\uD2B8 \\uB2E8\\uAC00\\uAC00 \\uB2EC\\uB77C\\uC84C\\uC5B4\\uC694.\"\n    }\n  ];\n  const curriculum = [\n    {\n      module: \"Week 1: Welcome to Framer\",\n      title: \"Framer \\uC2DC\\uC791\\uD558\\uAE30: \\uAE30\\uBCF8\\uAE30 \\uC644\\uC804 \\uC815\\uBCF5\",\n      description: \"Framer\\uC758 \\uC778\\uD130\\uD398\\uC774\\uC2A4\\uBD80\\uD130 \\uC2DC\\uC791\\uD574, \\uB514\\uC790\\uC778\\uC758 \\uAE30\\uBCF8 \\uC694\\uC18C\\uB4E4\\uC744 \\uC775\\uD788\\uACE0, \\uC65C Framer\\uAC00 \\uD604\\uC874 \\uCD5C\\uACE0\\uC758 \\uC6F9 \\uB514\\uC790\\uC778 \\uD234\\uC778\\uC9C0 \\uC9C1\\uC811 \\uACBD\\uD5D8\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"3.5\\uC2DC\\uAC04\",\n      outcome: \"Framer\\uC758 \\uAE30\\uBCF8 \\uC870\\uC791\\uBC95\\uC744 \\uC644\\uC804\\uD788 \\uC775\\uD788\\uACE0, \\uAC04\\uB2E8\\uD55C \\uB514\\uC790\\uC778 \\uCEF4\\uD3EC\\uB10C\\uD2B8\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Framer\\uB780 \\uBB34\\uC5C7\\uC778\\uAC00? (\\uCCA0\\uD559 & \\uBE44\\uC804)\",\n        \"\\uC778\\uD130\\uD398\\uC774\\uC2A4 \\uC644\\uBCBD \\uAC00\\uC774\\uB4DC: \\uD55C \\uBC88\\uC5D0 \\uB05D\\uB0B4\\uAE30\",\n        \"\\uAE30\\uBCF8 \\uB3C4\\uD615\\uACFC \\uD504\\uB808\\uC784 \\uB2E4\\uB8E8\\uAE30\",\n        \"\\uB808\\uC774\\uC544\\uC6C3\\uC758 \\uD575\\uC2EC: \\uC2A4\\uD0DD\\uACFC \\uADF8\\uB9AC\\uB4DC\",\n        \"[\\uC2E4\\uC2B5] \\uAC04\\uB2E8\\uD55C \\uD504\\uB85C\\uD544 \\uCE74\\uB4DC \\uB9CC\\uB4E4\\uAE30\"\n      ]\n    },\n    {\n      module: \"Week 2: Interactive Design\",\n      title: \"\\uC0B4\\uC544 \\uC6C0\\uC9C1\\uC774\\uB294 \\uB514\\uC790\\uC778: \\uC778\\uD130\\uB799\\uC158 \\uAE30\\uCD08\",\n      description: \"\\uB2E8\\uC21C\\uD55C \\uC774\\uBBF8\\uC9C0\\uB97C \\uB118\\uC5B4 \\uC0AC\\uC6A9\\uC790\\uC640 \\uC0C1\\uD638\\uC791\\uC6A9\\uD558\\uB294 \\uB514\\uC790\\uC778\\uC744 \\uB9CC\\uB4ED\\uB2C8\\uB2E4. \\uD074\\uB9AD, \\uD638\\uBC84, \\uB4DC\\uB798\\uADF8 \\uB4F1 \\uD544\\uC218 \\uC778\\uD130\\uB799\\uC158\\uC744 \\uB9C8\\uC2A4\\uD130\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"4\\uC2DC\\uAC04\",\n      outcome: \"\\uC7AC\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uCEF4\\uD3EC\\uB10C\\uD2B8\\uB97C \\uB9CC\\uB4E4\\uACE0, \\uB2E4\\uC591\\uD55C \\uC0C1\\uD0DC\\uC5D0 \\uB530\\uB978 \\uC778\\uD130\\uB799\\uC158\\uC744 \\uAD6C\\uD604\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Effects: \\uADF8\\uB9BC\\uC790, \\uBE14\\uB7EC \\uB4F1 \\uB514\\uC790\\uC778\\uC5D0 \\uAE4A\\uC774 \\uB354\\uD558\\uAE30\",\n        \"Components: \\uC7AC\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uB514\\uC790\\uC778 \\uC2DC\\uC2A4\\uD15C \\uB9CC\\uB4E4\\uAE30\",\n        \"Variants: \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uC0C1\\uD0DC \\uAD00\\uB9AC\\uC758 \\uBAA8\\uB4E0 \\uAC83\",\n        \"\\uAE30\\uBCF8 \\uC778\\uD130\\uB799\\uC158: \\uD074\\uB9AD, \\uD638\\uBC84, \\uB51C\\uB808\\uC774\",\n        \"[\\uC2E4\\uC2B5] \\uC778\\uD130\\uB799\\uD2F0\\uBE0C \\uBC84\\uD2BC \\uBC0F \\uCE74\\uB4DC UI \\uC81C\\uC791\"\n      ]\n    },\n    {\n      module: \"Week 3: Advanced Animations\",\n      title: \"\\uC2DC\\uC120\\uC744 \\uC0AC\\uB85C\\uC7A1\\uB294 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\",\n      description: \"\\uD398\\uC774\\uC9C0 \\uC2A4\\uD06C\\uB864, \\uC694\\uC18C\\uC758 \\uB4F1\\uC7A5\\uACFC \\uC0AC\\uB77C\\uC9D0 \\uB4F1 \\uC815\\uAD50\\uD55C \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC744 \\uAD6C\\uD604\\uD558\\uC5EC \\uC0AC\\uC6A9\\uC790 \\uACBD\\uD5D8\\uC744 \\uADF9\\uB300\\uD654\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"5\\uC2DC\\uAC04\",\n      outcome: \"\\uC2A4\\uD06C\\uB864\\uACFC \\uC5F0\\uB3D9\\uB418\\uB294 \\uBCF5\\uD569\\uC801\\uC778 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC744 \\uC790\\uC720\\uC790\\uC7AC\\uB85C \\uAD6C\\uD604\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"\\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC758 \\uC6D0\\uB9AC: Timing, Easing, Spring\",\n        \"Scroll Section & Scroll Variants\",\n        \"Stagger: \\uC21C\\uCC28\\uC801\\uC778 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC758 \\uBBF8\\uD559\",\n        \"Code Overrides\\uC758 \\uAE30\\uCD08: \\uC560\\uB2C8\\uBA54\\uC774\\uC158 \\uC81C\\uC5B4\\uD558\\uAE30\",\n        \"[\\uC2E4\\uC2B5] \\uC2A4\\uD06C\\uB864\\uC5D0 \\uBC18\\uC751\\uD558\\uB294 \\uD5E4\\uB354 \\uC81C\\uC791\"\n      ]\n    },\n    {\n      module: \"Week 4: The Apple Way\",\n      title: \"\\uC560\\uD50C \\uC2A4\\uD0C0\\uC77C \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158 \\uC815\\uBCF5\",\n      description: \"\\uBAA8\\uB450\\uAC00 \\uAC10\\uD0C4\\uD558\\uB294 \\uC560\\uD50C \\uC6F9\\uC0AC\\uC774\\uD2B8\\uC758 \\uC2A4\\uD06C\\uB864 \\uC778\\uD130\\uB799\\uC158. \\uADF8 \\uC6D0\\uB9AC\\uB97C \\uD30C\\uD5E4\\uCE58\\uACE0, \\uC6B0\\uB9AC \\uC190\\uC73C\\uB85C \\uC9C1\\uC811 \\uAD6C\\uD604\\uD574\\uBD05\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"6.5\\uC2DC\\uAC04\",\n      outcome: \"\\uB204\\uAD6C\\uB098 \\uAC10\\uD0C4\\uD560 \\uB9CC\\uD55C \\uD558\\uC774\\uC5D4\\uB4DC \\uC6F9\\uC0AC\\uC774\\uD2B8\\uC758 \\uD575\\uC2EC \\uC778\\uD130\\uB799\\uC158\\uC744 \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Sticky \\uC2A4\\uD06C\\uB864\\uC758 \\uC6D0\\uB9AC\\uC640 \\uD65C\\uC6A9\",\n        \"3D Transform\\uC744 \\uC774\\uC6A9\\uD55C \\uC785\\uCCB4\\uC801 \\uD6A8\\uACFC\",\n        \"\\uB3D9\\uC601\\uC0C1\\uACFC \\uC2A4\\uD06C\\uB864 \\uC5F0\\uB3D9\\uD558\\uAE30\",\n        \"\\uC2A4\\uD06C\\uB864 \\uC9C4\\uD589\\uB3C4\\uC5D0 \\uB530\\uB978 \\uBCF5\\uD569 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\",\n        \"[\\uC2E4\\uC2B5] \\uC560\\uD50C \\uC5D0\\uC5B4\\uD31F \\uD504\\uB85C \\uC2A4\\uD0C0\\uC77C \\uD398\\uC774\\uC9C0 \\uD074\\uB860\"\n      ]\n    },\n    {\n      module: \"Week 5: Real-World Project\",\n      title: \"\\uC2E4\\uC804! \\uBC18\\uC751\\uD615 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC0AC\\uC774\\uD2B8 \\uC81C\\uC791\",\n      description: \"\\uC9C0\\uAE08\\uAE4C\\uC9C0 \\uBC30\\uC6B4 \\uBAA8\\uB4E0 \\uAE30\\uC220\\uC744 \\uCD1D\\uB3D9\\uC6D0\\uD558\\uC5EC, \\uB370\\uC2A4\\uD06C\\uD0D1\\uBD80\\uD130 \\uBAA8\\uBC14\\uC77C\\uAE4C\\uC9C0 \\uC644\\uBCBD\\uD558\\uAC8C \\uB300\\uC751\\uD558\\uB294 \\uB098\\uB9CC\\uC758 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC0AC\\uC774\\uD2B8\\uB97C \\uB9CC\\uB4ED\\uB2C8\\uB2E4.\",\n      lessonsCount: 5,\n      duration: \"8\\uC2DC\\uAC04\",\n      outcome: \"\\uAE30\\uD68D\\uBD80\\uD130 \\uBC30\\uD3EC\\uAE4C\\uC9C0, \\uC6F9 \\uD504\\uB85C\\uC81D\\uD2B8 \\uC804\\uCCB4 \\uC0AC\\uC774\\uD074\\uC744 \\uACBD\\uD5D8\\uD558\\uACE0 \\uB098\\uB9CC\\uC758 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624\\uB97C \\uC644\\uC131\\uD569\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"\\uD504\\uB85C\\uC81D\\uD2B8 \\uAE30\\uD68D \\uBC0F \\uB514\\uC790\\uC778 \\uC2DC\\uC2A4\\uD15C \\uAD6C\\uCD95\",\n        \"CMS\\uB97C \\uD65C\\uC6A9\\uD55C \\uCF58\\uD150\\uCE20 \\uAD00\\uB9AC\",\n        \"\\uB370\\uC2A4\\uD06C\\uD0D1, \\uD0DC\\uBE14\\uB9BF, \\uBAA8\\uBC14\\uC77C \\uBC18\\uC751\\uD615 \\uB514\\uC790\\uC778\",\n        \"\\uC2E4\\uC81C \\uB3C4\\uBA54\\uC778 \\uC5F0\\uACB0 \\uBC0F \\uC0AC\\uC774\\uD2B8 \\uBC30\\uD3EC\",\n        \"[\\uC2E4\\uC804] \\uB098\\uB9CC\\uC758 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC6F9\\uC0AC\\uC774\\uD2B8 \\uC644\\uC131\"\n      ]\n    },\n    {\n      module: \"Week 6: From Skill to Profit\",\n      title: \"Framer\\uB85C \\uB3C8 \\uBC8C\\uAE30: \\uC678\\uC8FC\\uBD80\\uD130 \\uCC3D\\uC5C5\\uAE4C\\uC9C0\",\n      description: \"\\uC0C8\\uB85C\\uC6B4 \\uC2A4\\uD0AC\\uC744 \\uC2E4\\uC81C \\uC218\\uC775\\uC73C\\uB85C \\uC5F0\\uACB0\\uD558\\uB294 \\uBC29\\uBC95\\uC744 \\uBC30\\uC6C1\\uB2C8\\uB2E4. \\uC678\\uC8FC \\uD504\\uB85C\\uC81D\\uD2B8 \\uC218\\uC8FC \\uB178\\uD558\\uC6B0, \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC804\\uB7B5, \\uCC3D\\uC5C5 \\uC544\\uC774\\uB514\\uC5B4\\uAE4C\\uC9C0 \\uBAA8\\uB450 \\uACF5\\uAC1C\\uD569\\uB2C8\\uB2E4.\",\n      lessonsCount: 7,\n      duration: \"5\\uC2DC\\uAC04\",\n      outcome: \"\\uC2B5\\uB4DD\\uD55C Framer \\uC2A4\\uD0AC\\uC744 \\uD1B5\\uD574 \\uC2E4\\uC81C \\uC218\\uC775\\uC744 \\uCC3D\\uCD9C\\uD558\\uB294 \\uAD6C\\uCCB4\\uC801\\uC778 \\uBC29\\uBC95\\uC744 \\uC54C\\uAC8C \\uB429\\uB2C8\\uB2E4.\",\n      lessons: [\n        \"Framer \\uC804\\uBB38\\uAC00\\uB85C \\uD3EC\\uC9C0\\uC154\\uB2DD\\uD558\\uAE30\",\n        \"\\uCCAB \\uC678\\uC8FC, 100\\uB9CC\\uC6D0\\uBD80\\uD130 \\uC2DC\\uC791\\uD558\\uB294 \\uBC95\",\n        \"\\uD074\\uB77C\\uC774\\uC5B8\\uD2B8\\uB97C \\uC124\\uB4DD\\uD558\\uB294 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uC804\\uB7B5\",\n        \"\\uACAC\\uC801\\uBD80\\uD130 \\uACC4\\uC57D\\uAE4C\\uC9C0: \\uC2E4\\uD328 \\uC5C6\\uB294 \\uD504\\uB85C\\uC81D\\uD2B8 \\uAD00\\uB9AC\",\n        \"Framer\\uB85C \\uAC00\\uB2A5\\uD55C 1\\uC778 \\uCC3D\\uC5C5 \\uC544\\uC774\\uD15C\\uB4E4\",\n        \"AI\\uB97C \\uD65C\\uC6A9\\uD55C \\uC0DD\\uC0B0\\uC131 10\\uBC30 \\uB192\\uC774\\uAE30\",\n        \"[\\uD2B9\\uAC15] \\uC6D4 1,000\\uB9CC\\uC6D0 \\uBC84\\uB294 \\uB514\\uC790\\uC774\\uB108\\uC758 \\uC2DC\\uAC04 \\uAD00\\uB9AC\\uBC95\"\n      ]\n    }\n  ];\n  const faqs = [\n    {\n      question: \"\\uCF54\\uB529\\uC744 \\uC804\\uD600 \\uBAA8\\uB974\\uB294\\uB370, \\uC815\\uB9D0 \\uAD1C\\uCC2E\\uC744\\uAE4C\\uC694?\",\n      answer: \"\\uB124, \\uADF8\\uB7FC\\uC694! \\uC774 \\uAC15\\uC758\\uB294 \\uCF54\\uB529 \\uACBD\\uD5D8\\uC774 \\uC804\\uBB34\\uD55C \\uBD84\\uB4E4\\uC744 \\uC704\\uD574 \\uC124\\uACC4\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4. Framer\\uC758 \\uAC15\\uB825\\uD55C \\uB178\\uCF54\\uB4DC \\uAE30\\uB2A5\\uC744 \\uD65C\\uC6A9\\uD558\\uC5EC \\uCF54\\uB529 \\uC5C6\\uC774\\uB3C4 100% \\uC0C1\\uC0C1\\uD558\\uB358 \\uC6F9\\uC0AC\\uC774\\uD2B8\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uCF54\\uB529\\uC740 \\uC120\\uD0DD \\uC0AC\\uD56D\\uC77C \\uBFD0\\uC774\\uBA70, \\uAC15\\uC758 \\uD6C4\\uBC18\\uBD80\\uC758 \\uCF54\\uB4DC \\uCEF4\\uD3EC\\uB10C\\uD2B8 \\uD30C\\uD2B8\\uB3C4 \\uBCF5\\uC0AC/\\uBD99\\uC5EC\\uB123\\uAE30\\uB9CC\\uC73C\\uB85C \\uB530\\uB77C\\uC62C \\uC218 \\uC788\\uB3C4\\uB85D \\uAD6C\\uC131\\uD588\\uC2B5\\uB2C8\\uB2E4.\"\n    },\n    {\n      question: \"\\uAC15\\uC758\\uB97C \\uB4E3\\uAE30 \\uC704\\uD574 \\uBB34\\uC5C7\\uC744 \\uC900\\uBE44\\uD574\\uC57C \\uD558\\uB098\\uC694?\",\n      answer: \"Framer \\uACC4\\uC815\\uACFC \\uC778\\uD130\\uB137\\uC774 \\uC5F0\\uACB0\\uB41C \\uCEF4\\uD4E8\\uD130\\uB9CC \\uC788\\uC73C\\uBA74 \\uB429\\uB2C8\\uB2E4! Framer\\uB294 \\uBB34\\uB8CC \\uD50C\\uB79C\\uC73C\\uB85C\\uB3C4 \\uAC15\\uC758\\uC758 95% \\uC774\\uC0C1\\uC744 \\uC218\\uAC15\\uD558\\uB294 \\uB370 \\uC804\\uD600 \\uBB38\\uC81C\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uCD94\\uAC00\\uB85C \\uC720\\uB8CC \\uD50C\\uB79C\\uC774 \\uD544\\uC694\\uD55C \\uBD80\\uBD84\\uC740 \\uAC15\\uC758\\uC5D0\\uC11C \\uBCC4\\uB3C4\\uB85C \\uC548\\uB0B4\\uD574 \\uB4DC\\uB9BD\\uB2C8\\uB2E4.\"\n    },\n    {\n      question: \"\\uAC15\\uC758 \\uC218\\uAC15 \\uAE30\\uAC04\\uC5D0 \\uC81C\\uD55C\\uC774 \\uC788\\uB098\\uC694?\",\n      answer: \"\\uC544\\uB2C8\\uC694! \\uD55C\\uBC88 \\uAD6C\\uB9E4\\uD558\\uC2DC\\uBA74 \\uBAA8\\uB4E0 \\uAC15\\uC758 \\uC601\\uC0C1\\uACFC \\uC790\\uB8CC\\uB294 \\uD3C9\\uC0DD \\uC18C\\uC7A5\\uC774 \\uAC00\\uB2A5\\uD569\\uB2C8\\uB2E4. \\uC5B8\\uC81C \\uC5B4\\uB514\\uC11C\\uB4E0 \\uD3B8\\uD558\\uAC8C \\uBC18\\uBCF5 \\uD559\\uC2B5\\uD558\\uC138\\uC694.\"\n    },\n    {\n      question: \"\\uAC15\\uC758\\uB97C \\uB4E3\\uB2E4\\uAC00 \\uBAA8\\uB974\\uB294 \\uC810\\uC774 \\uC0DD\\uAE30\\uBA74 \\uC5B4\\uB5BB\\uAC8C \\uD558\\uC8E0?\",\n      answer: \"\\uC218\\uAC15\\uC0DD \\uC804\\uC6A9 \\uC2AC\\uB799 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\\uB97C \\uD1B5\\uD574 \\uC9C8\\uBB38\\uC744 \\uB0A8\\uACA8\\uC8FC\\uC2DC\\uBA74, \\uAC15\\uC0AC\\uB2D8\\uACFC \\uB2E4\\uB978 \\uC218\\uAC15\\uC0DD\\uB4E4\\uC774 \\uB2F5\\uBCC0\\uC744 \\uB2EC\\uC544\\uB4DC\\uB9BD\\uB2C8\\uB2E4. \\uD568\\uAED8 \\uBC30\\uC6B0\\uACE0 \\uC131\\uC7A5\\uD558\\uB294 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\\uC5D0 \\uCC38\\uC5EC\\uD558\\uC138\\uC694!\"\n    }\n  ];\n  const CountdownTimer = ({ targetDate }) => {\n    const calculateTimeLeft = () => {\n      const difference = +new Date(targetDate) - +/* @__PURE__ */ new Date();\n      let timeLeft2 = {};\n      if (difference > 0) {\n        timeLeft2 = {\n          \\uC77C: Math.floor(difference / (1e3 * 60 * 60 * 24)),\n          \\uC2DC\\uAC04: Math.floor(difference / (1e3 * 60 * 60) % 24),\n          \\uBD84: Math.floor(difference / 1e3 / 60 % 60),\n          \\uCD08: Math.floor(difference / 1e3 % 60)\n        };\n      }\n      return timeLeft2;\n    };\n    const [timeLeft, setTimeLeft] = useState(calculateTimeLeft());\n    useEffect(() => {\n      const timer = setTimeout(() => {\n        setTimeLeft(calculateTimeLeft());\n      }, 1e3);\n      return () => clearTimeout(timer);\n    });\n    const timerComponents = [];\n    Object.keys(timeLeft).forEach((interval) => {\n      if (!timeLeft[interval] && Object.keys(timeLeft).length > 1) {\n        return;\n      }\n      timerComponents.push(\n        /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-baseline\", children: [\n          /* @__PURE__ */ jsx(\"span\", { className: \"text-2xl md:text-4xl font-bold\", children: String(timeLeft[interval]).padStart(\n            2,\n            \"0\"\n          ) }),\n          /* @__PURE__ */ jsx(\"span\", { className: \"text-sm ml-1\", children: interval })\n        ] }, interval)\n      );\n    });\n    return /* @__PURE__ */ jsx(\"div\", { className: \"flex justify-center space-x-4\", children: timerComponents.length ? timerComponents : /* @__PURE__ */ jsx(\"span\", { children: \"Time's up!\" }) });\n  };\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      style: { backgroundColor: colors.white, color: colors.black },\n      className: \"font-sans\",\n      children: [\n        /* @__PURE__ */ jsxs(\"header\", { className: \"text-center py-20 px-4\", children: [\n          /* @__PURE__ */ jsxs(\"h1\", { className: \"text-5xl md:text-7xl font-bold leading-tight mb-4\", children: [\n            /* @__PURE__ */ jsx(\"span\", { className: \"block\", children: \"\\uCF54\\uB4DC\\uC758 \\uC7A5\\uBCBD\\uC744 \\uB118\\uC5B4,\" }),\n            /* @__PURE__ */ jsx(\"span\", { style: { color: colors.harborBlue }, className: \"block\", children: \"\\uB514\\uC790\\uC778\\uC758 \\uC644\\uC804\\uD55C \\uC790\\uC720\\uB97C \\uACBD\\uD5D8\\uD558\\uC138\\uC694\" })\n          ] }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              style: { color: colors.textMedium },\n              className: \"max-w-2xl mx-auto text-lg md:text-xl mb-8\",\n              children: [\n                \"\\uB2F9\\uC2E0\\uC758 \\uC815\\uAD50\\uD55C \\uB514\\uC790\\uC778\\uC774 \\uAC1C\\uBC1C \\uACFC\\uC815\\uC5D0\\uC11C \\uAE38\\uC744 \\uC783\\uC9C0 \\uC54A\\uB3C4\\uB85D.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"Framer\\uB294 \\uC0C1\\uC0C1\\uC744 \\uD604\\uC2E4\\uB85C \\uB9CC\\uB4DC\\uB294 \\uAC00\\uC7A5 \\uBE60\\uB978 \\uAE38\\uC744 \\uC81C\\uC548\\uD569\\uB2C8\\uB2E4.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\n            \"div\",\n            {\n              style: { backgroundColor: colors.harborPink },\n              className: \"text-center py-4 px-6 rounded-lg max-w-lg mx-auto mb-8\",\n              children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"font-bold text-lg\", style: { color: colors.harborBlue }, children: \"\\uC0C8\\uB85C\\uC6B4 \\uC2DC\\uB300\\uC758 \\uB514\\uC790\\uC774\\uB108\\uB97C \\uC704\\uD55C \\uB9C8\\uC9C0\\uB9C9 \\uD560\\uC778\" }),\n                /* @__PURE__ */ jsx(\"div\", { style: { color: colors.harborBlue }, children: /* @__PURE__ */ jsx(\n                  CountdownTimer,\n                  {\n                    targetDate: new Date(\n                      Date.now() + 3 * 24 * 60 * 60 * 1e3\n                    ).toISOString()\n                  }\n                ) })\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            \"a\",\n            {\n              href: \"#pricing\",\n              style: { backgroundColor: colors.harborBlue, color: colors.white },\n              className: \"font-bold py-4 px-10 rounded-full text-lg hover:opacity-90 transition-opacity duration-300\",\n              children: \"\\uC790\\uC720\\uB97C \\uD5A5\\uD55C \\uC5EC\\uC815 \\uC2DC\\uC791\\uD558\\uAE30\"\n            }\n          )\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-3xl mx-auto text-center\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-3xl md:text-4xl font-bold mb-6\", children: \"\\uD639\\uC2DC, \\uB2F9\\uC2E0\\uC758 \\uC774\\uC57C\\uAE30\\uC778\\uAC00\\uC694?\" }),\n              /* @__PURE__ */ jsxs(\n                \"p\",\n                {\n                  className: \"text-lg leading-relaxed\",\n                  style: { color: colors.textMedium },\n                  children: [\n                    '\"\\uBD84\\uBA85 \\uC644\\uBCBD\\uD55C \\uB514\\uC790\\uC778\\uC774\\uC5C8\\uB294\\uB370, \\uC65C \\uAC1C\\uBC1C\\uB9CC \\uAC70\\uCE58\\uBA74 \\uD3C9\\uBC94\\uD574\\uC9C8\\uAE4C?\"',\n                    /* @__PURE__ */ jsx(\"br\", {}),\n                    \"\\uC218\\uB9CE\\uC740 \\uB514\\uC790\\uC774\\uB108\\uAC00 \\uACAA\\uB294 \\uC88C\\uC808\\uC785\\uB2C8\\uB2E4. \\uAC1C\\uBC1C\\uC790\\uC640\\uC758 \\uC18C\\uD1B5 \\uBE44\\uC6A9, \\uAE30\\uC220\\uC801 \\uC81C\\uC57D, \\uAE38\\uC5B4\\uC9C0\\uB294 \\uC81C\\uC791 \\uAE30\\uAC04...\",\n                    /* @__PURE__ */ jsx(\"br\", {}),\n                    \"\\uB2F9\\uC2E0\\uC758 \\uC704\\uB300\\uD55C \\uC544\\uC774\\uB514\\uC5B4\\uB294 \\uADF8\\uB807\\uAC8C \\uBE5B\\uC744 \\uC783\\uC5B4\\uAC11\\uB2C8\\uB2E4.\",\n                    /* @__PURE__ */ jsxs(\"span\", { style: { color: colors.harborBlue }, className: \"font-bold\", children: [\n                      \" \",\n                      \"\\uC774\\uC81C \\uADF8 \\uACE0\\uB9AC\\uB97C \\uB04A\\uC5B4\\uB0BC \\uC2DC\\uAC04\\uC785\\uB2C8\\uB2E4.\"\n                    ] })\n                  ]\n                }\n              )\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4 border-t border-gray-100\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-12\", children: \"\\uB2F9\\uC2E0\\uC758 \\uC791\\uC5C5\\uBB3C, \\uC774\\uB807\\uAC8C \\uB2EC\\uB77C\\uC9D1\\uB2C8\\uB2E4\" }),\n          /* @__PURE__ */ jsx(BeforeAfterGraphic, {})\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-12 border-t border-gray-100\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsx(\"div\", { className: \"max-w-6xl mx-auto px-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"grid grid-cols-1 md:grid-cols-3 gap-8 text-center\", children: [\n              /* @__PURE__ */ jsxs(\"div\", { children: [\n                /* @__PURE__ */ jsx(\n                  \"p\",\n                  {\n                    className: \"text-4xl font-bold\",\n                    style: { color: colors.harborBlue },\n                    children: \"1,300+\"\n                  }\n                ),\n                /* @__PURE__ */ jsx(\"p\", { className: \"mt-2\", style: { color: colors.textMedium }, children: \"\\uB204\\uC801 \\uC218\\uAC15\\uC0DD\" })\n              ] }),\n              /* @__PURE__ */ jsxs(\"div\", { children: [\n                /* @__PURE__ */ jsx(\n                  \"p\",\n                  {\n                    className: \"text-4xl font-bold\",\n                    style: { color: colors.harborBlue },\n                    children: \"4.9/5.0\"\n                  }\n                ),\n                /* @__PURE__ */ jsx(\"p\", { className: \"mt-2\", style: { color: colors.textMedium }, children: \"\\uC218\\uAC15\\uC0DD \\uB9CC\\uC871\\uB3C4\" })\n              ] }),\n              /* @__PURE__ */ jsxs(\"div\", { children: [\n                /* @__PURE__ */ jsx(\n                  \"p\",\n                  {\n                    className: \"text-4xl font-bold\",\n                    style: { color: colors.harborBlue },\n                    children: \"30+\"\n                  }\n                ),\n                /* @__PURE__ */ jsx(\"p\", { className: \"mt-2\", style: { color: colors.textMedium }, children: \"\\uC2E4\\uC804 \\uD504\\uB85C\\uC81D\\uD2B8 \\uACBD\\uD5D8\" })\n              ] })\n            ] }) })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 text-center border-t border-gray-100\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl md:text-5xl font-bold mb-6\", children: \"\\uACB0\\uACFC\\uB85C \\uC99D\\uBA85\\uD558\\uB294, \\uB2E8 \\uD558\\uB098\\uC758 \\uB9C8\\uC2A4\\uD130\\uB9AC \\uCF54\\uC2A4\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"max-w-3xl mx-auto text-lg\",\n              style: { color: colors.textMedium },\n              children: [\n                \"\\uC774 \\uAC15\\uC758\\uB294 Framer \\uC0AC\\uC6A9\\uBC95\\uC744 \\uC54C\\uB824\\uC8FC\\uB294 \\uAC15\\uC758\\uAC00 \\uC544\\uB2D9\\uB2C8\\uB2E4.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uB514\\uC790\\uC774\\uB108\\uAC00 \\uC790\\uC2E0\\uC758 \\uAC00\\uCE58\\uB97C \\uC2A4\\uC2A4\\uB85C \\uC99D\\uBA85\\uD558\\uACE0,\",\n                \" \",\n                /* @__PURE__ */ jsx(\"span\", { style: { color: colors.harborBlue }, children: \"\\uB300\\uCCB4 \\uBD88\\uAC00\\uB2A5\\uD55C \\uC804\\uBB38\\uAC00\" }),\n                \"\\uB85C \\uAC70\\uB4ED\\uB098\\uB294 \\uBC29\\uBC95\\uC744 \\uC548\\uB0B4\\uD569\\uB2C8\\uB2E4.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-6xl mx-auto grid md:grid-cols-3 gap-8 mt-12 text-left\", children: [\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg border border-gray-200\",\n                style: { backgroundColor: colors.white },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h4\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"1. \\uCC3D\\uC791\\uC758 \\uC644\\uC804\\uD55C \\uC790\\uC728\\uC131\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC544\\uC774\\uB514\\uC5B4 \\uC2A4\\uCF00\\uCE58\\uBD80\\uD130 \\uCD5C\\uC885 \\uBC30\\uD3EC\\uAE4C\\uC9C0, \\uBAA8\\uB4E0 \\uCC3D\\uC791 \\uACFC\\uC815\\uC744 \\uC628\\uC804\\uD788 \\uD1B5\\uC81C\\uD558\\uC138\\uC694. \\uB354 \\uC774\\uC0C1 \\uAE30\\uC220\\uC801 \\uC81C\\uC57D\\uC774\\uB098 \\uC18C\\uD1B5\\uC758 \\uC624\\uB958\\uB85C \\uB2F9\\uC2E0\\uC758 \\uBE44\\uC804\\uC774 \\uD0C0\\uD611\\uB418\\uB294 \\uC77C\\uC740 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg border border-gray-200\",\n                style: { backgroundColor: colors.white },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h4\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"2. \\uC138\\uACC4\\uC801 \\uC218\\uC900\\uC758 \\uC778\\uD130\\uB799\\uC158\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uB2E8\\uC21C\\uD788 '\\uC6C0\\uC9C1\\uC774\\uB294' \\uAC83\\uC744 \\uB118\\uC5B4 '\\uBC18\\uC751\\uD558\\uB294' \\uB514\\uC790\\uC778\\uC744 \\uB9CC\\uB4ED\\uB2C8\\uB2E4. \\uC0AC\\uC6A9\\uC790\\uC758 \\uBAA8\\uB4E0 \\uD589\\uB3D9\\uC5D0 \\uC12C\\uC138\\uD558\\uAC8C \\uBC18\\uC751\\uD558\\uB294 \\uC6D4\\uB4DC\\uD074\\uB798\\uC2A4 \\uC778\\uD130\\uB799\\uC158\\uC73C\\uB85C \\uD504\\uB85C\\uC81D\\uD2B8\\uC758 \\uACA9\\uC744 \\uB192\\uC774\\uC138\\uC694.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg border border-gray-200\",\n                style: { backgroundColor: colors.white },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h4\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"3. \\uC2E4\\uC804\\uC73C\\uB85C \\uC644\\uC131\\uB418\\uB294 \\uD559\\uC2B5 \\uACBD\\uD5D8\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC774\\uB860\\uC5D0 \\uBA38\\uBB34\\uB294 \\uC9C0\\uC2DD\\uC740 \\uC758\\uBBF8 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uB9E4\\uC8FC \\uC2E4\\uC804 \\uACFC\\uC81C\\uB97C \\uD1B5\\uD574 \\uBC30\\uC6B4 \\uAC83\\uC744 \\uC989\\uC2DC \\uCCB4\\uD654\\uD558\\uACE0, \\uCD5C\\uC885 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uD504\\uB85C\\uC81D\\uD2B8\\uB85C \\uB2F9\\uC2E0\\uC758 \\uC131\\uC7A5\\uC744 \\uC138\\uC0C1\\uC5D0 \\uC99D\\uBA85\\uD558\\uC138\\uC694. \\uC774 \\uAC15\\uC758\\uB294 \\uB2F9\\uC2E0\\uC744 '\\uC544\\uB294' \\uB514\\uC790\\uC774\\uB108\\uAC00 \\uC544\\uB2CC '\\uD574\\uB0B4\\uB294' \\uB514\\uC790\\uC774\\uB108\\uB85C \\uB9CC\\uB4ED\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            )\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-6xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-4\", children: \"\\uC5B4\\uB5A4 \\uAC15\\uC758\\uB97C \\uC120\\uD0DD\\uD574\\uC57C \\uD560\\uC9C0, \\uACE0\\uBBFC\\uB418\\uC2DC\\uB098\\uC694?\" }),\n              /* @__PURE__ */ jsx(\n                \"p\",\n                {\n                  className: \"text-lg text-center mb-12\",\n                  style: { color: colors.textMedium },\n                  children: \"\\uB2F9\\uC2E0\\uC758 \\uC18C\\uC911\\uD55C \\uC2DC\\uAC04\\uACFC \\uB178\\uB825\\uC744 \\uAC00\\uC7A5 \\uAC00\\uCE58\\uC788\\uAC8C \\uB9CC\\uB4DC\\uB294 \\uC120\\uD0DD. \\uC800\\uD76C\\uAC00 \\uADF8 \\uCC28\\uC774\\uB97C \\uBA85\\uD655\\uD788 \\uBCF4\\uC5EC\\uB4DC\\uB9BD\\uB2C8\\uB2E4.\"\n                }\n              ),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"grid md:grid-cols-2 gap-8\", children: [\n                /* @__PURE__ */ jsxs(\"div\", { className: \"border-2 border-gray-200 rounded-lg p-6 bg-white\", children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-2xl font-bold text-center mb-6\",\n                      style: { color: colors.textLight },\n                      children: \"\\uD0C0\\uC0AC \\uC218\\uC775\\uD615 \\uAC15\\uC758 (ex. \\uD328\\uC2A4\\uD2B8\\uCEA0\\uD37C\\uC2A4)\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsxs(\"ul\", { className: \"space-y-4\", children: [\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(\"span\", { className: \"text-red-500 font-bold mr-3 text-xl\", children: \"\\u2715\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uCCA0\\uD559: \\uB2E8\\uAE30 \\uC218\\uC775 \\uC911\\uC2EC\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: '\"\\uC6D4 1,000\\uB9CC\\uC6D0\"\\uACFC \\uAC19\\uC740 \\uC790\\uADF9\\uC801\\uC778 \\uD0A4\\uC6CC\\uB4DC\\uB85C \\uB2E8\\uAE30\\uC801\\uC778 \\uC218\\uC775 \\uCC3D\\uCD9C\\uC5D0\\uB9CC \\uC9D1\\uC911\\uD569\\uB2C8\\uB2E4. \\uD558\\uC9C0\\uB9CC \\uC804\\uBB38\\uC131\\uC758 \\uAE4A\\uC774\\uB294 \\uB193\\uCE60 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.' })\n                      ] })\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(\"span\", { className: \"text-red-500 font-bold mr-3 text-xl\", children: \"\\u2715\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uD559\\uC2B5 \\uACBD\\uD5D8: \\uD30C\\uD3B8\\uD654\\uB41C \\uC2A4\\uD0AC \\uC2B5\\uB4DD\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uC678\\uC8FC \\uC2A4\\uD0AC, \\uD2B9\\uC815 \\uAE30\\uC220 \\uB4F1 \\uD30C\\uD3B8\\uD654\\uB41C \\uC9C0\\uC2DD\\uC744 \\uB098\\uC5F4\\uD558\\uC5EC \\uC81C\\uACF5\\uD569\\uB2C8\\uB2E4. \\uC65C, \\uC5B4\\uB5BB\\uAC8C \\uC368\\uC57C\\uD558\\uB294\\uC9C0\\uC5D0 \\uB300\\uD55C \\uADFC\\uBCF8\\uC801\\uC778 \\uC774\\uD574\\uAC00 \\uBD80\\uC871\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\" })\n                      ] })\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(\"span\", { className: \"text-red-500 font-bold mr-3 text-xl\", children: \"\\u2715\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uC811\\uADFC\\uC131: \\uC21C\\uCC28\\uC801 \\uAC15\\uC758 \\uACF5\\uAC1C\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uAC15\\uC758\\uAC00 \\uBA87 \\uB2EC\\uC5D0 \\uAC78\\uCCD0 \\uB098\\uB258\\uC5B4 \\uACF5\\uAC1C\\uB429\\uB2C8\\uB2E4. \\uB098\\uC758 \\uD559\\uC2B5 \\uC18D\\uB3C4\\uC640 \\uC0C1\\uAD00\\uC5C6\\uC774, \\uCF58\\uD150\\uCE20\\uAC00 \\uACF5\\uAC1C\\uB420 \\uB54C\\uAE4C\\uC9C0 \\uAE30\\uB2E4\\uB824\\uC57C\\uB9CC \\uD569\\uB2C8\\uB2E4.\" })\n                      ] })\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(\"span\", { className: \"text-red-500 font-bold mr-3 text-xl\", children: \"\\u2715\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uACB0\\uACFC: \\uAE30\\uB2A5 \\uBCF4\\uC720\\uC790\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"Framer\\uB77C\\uB294 '\\uD234'\\uC740 \\uB2E4\\uB8F0 \\uC218 \\uC788\\uC9C0\\uB9CC, \\uB354 \\uC800\\uB834\\uD55C \\uBE44\\uC6A9\\uC744 \\uC81C\\uC2DC\\uD558\\uB294 \\uB2E4\\uB978 '\\uAE30\\uB2A5 \\uBCF4\\uC720\\uC790'\\uC5D0\\uAC8C \\uB300\\uCCB4\\uB420 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\" })\n                      ] })\n                    ] })\n                  ] })\n                ] }),\n                /* @__PURE__ */ jsxs(\n                  \"div\",\n                  {\n                    className: \"border-2 rounded-lg p-6\",\n                    style: {\n                      borderColor: colors.harborBlue,\n                      backgroundColor: colors.white\n                    },\n                    children: [\n                      /* @__PURE__ */ jsx(\n                        \"h3\",\n                        {\n                          className: \"text-2xl font-bold text-center mb-6\",\n                          style: { color: colors.harborBlue },\n                          children: \"Harbor School \\uD504\\uB808\\uC774\\uBA38 101\"\n                        }\n                      ),\n                      /* @__PURE__ */ jsxs(\"ul\", { className: \"space-y-4\", children: [\n                        /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                          /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                          /* @__PURE__ */ jsxs(\"div\", { children: [\n                            /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uCCA0\\uD559: \\uC804\\uBB38\\uAC00\\uB85C\\uC758 \\uC131\\uC7A5\" }),\n                            /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"7\\uB144\\uAC04\\uC758 \\uAD50\\uC721 \\uACBD\\uD5D8\\uC744 \\uBC14\\uD0D5\\uC73C\\uB85C, \\uB514\\uC790\\uC778\\uC758 \\uBCF8\\uC9C8\\uACFC \\uBB38\\uC81C \\uD574\\uACB0 \\uB2A5\\uB825\\uC744 \\uAE38\\uB7EC '\\uB300\\uCCB4 \\uBD88\\uAC00\\uB2A5\\uD55C' \\uC804\\uBB38\\uAC00\\uB85C \\uC131\\uC7A5\\uC2DC\\uD0B5\\uB2C8\\uB2E4.\" })\n                          ] })\n                        ] }),\n                        /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                          /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                          /* @__PURE__ */ jsxs(\"div\", { children: [\n                            /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uD559\\uC2B5 \\uACBD\\uD5D8: \\uCCB4\\uACC4\\uC801\\uC778 \\uB9C8\\uC2A4\\uD130\\uB9AC\" }),\n                            /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uAE30\\uCD08\\uBD80\\uD130 \\uC560\\uD50C \\uC218\\uC900\\uC758 \\uC778\\uD130\\uB799\\uC158, \\uBE44\\uC988\\uB2C8\\uC2A4 \\uC804\\uB7B5\\uAE4C\\uC9C0. \\uBAA8\\uB4E0 \\uACFC\\uC815\\uC774 \\uC720\\uAE30\\uC801\\uC73C\\uB85C \\uC5F0\\uACB0\\uB418\\uC5B4 \\uC555\\uCD95 \\uC131\\uC7A5\\uC744 \\uB3D5\\uB294 \\uAC80\\uC99D\\uB41C \\uB85C\\uB4DC\\uB9F5\\uC785\\uB2C8\\uB2E4.\" })\n                          ] })\n                        ] }),\n                        /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                          /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                          /* @__PURE__ */ jsxs(\"div\", { children: [\n                            /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uC811\\uADFC\\uC131: \\uACB0\\uC81C \\uC989\\uC2DC, \\uBAA8\\uB4E0 \\uAC15\\uC758 \\uC218\\uAC15\" }),\n                            /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uAE30\\uB2E4\\uB9B4 \\uD544\\uC694 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uB2F9\\uC2E0\\uC758 \\uD559\\uC2B5 \\uC18D\\uB3C4\\uC5D0 \\uB9DE\\uCDB0 \\uBAA8\\uB4E0 \\uCC55\\uD130\\uB97C \\uC790\\uC720\\uB86D\\uAC8C \\uB118\\uB098\\uB4E4\\uBA70, \\uAC00\\uC7A5 \\uD6A8\\uC728\\uC801\\uC73C\\uB85C \\uD559\\uC2B5\\uD558\\uACE0 \\uBE60\\uB974\\uAC8C \\uC131\\uC7A5\\uD558\\uC138\\uC694.\" })\n                          ] })\n                        ] }),\n                        /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                          /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                          /* @__PURE__ */ jsxs(\"div\", { children: [\n                            /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uACB0\\uACFC: \\uB300\\uCCB4 \\uBD88\\uAC00\\uB2A5\\uD55C \\uC804\\uBB38\\uAC00\" }),\n                            /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uC790\\uC2E0\\uB9CC\\uC758 \\uB514\\uC790\\uC778 \\uCCA0\\uD559\\uC744 \\uAC16\\uACE0, \\uC5B4\\uB5A4 \\uBB38\\uC81C\\uB4E0 \\uD574\\uACB0\\uD560 \\uC218 \\uC788\\uB294 \\uC804\\uBB38\\uAC00. \\uAC00\\uACA9\\uC774 \\uC544\\uB2CC '\\uAC00\\uCE58'\\uB85C \\uACBD\\uC7C1\\uD558\\uB294 \\uB514\\uC790\\uC774\\uB108\\uAC00 \\uB429\\uB2C8\\uB2E4.\" })\n                          ] })\n                        ] })\n                      ] })\n                    ]\n                  }\n                )\n              ] })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 text-center border-t border-gray-100\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-2xl font-bold\", style: { color: colors.harborBlue }, children: \"GAME CHANGER\" }),\n          /* @__PURE__ */ jsx(\"h3\", { className: \"text-4xl md:text-5xl font-bold my-4\", children: \"\\uC65C \\uC9C0\\uAE08, Framer\\uC778\\uAC00?\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"max-w-3xl mx-auto text-lg\",\n              style: { color: colors.textMedium },\n              children: [\n                \"90%\\uC758 \\uBC18\\uBCF5 \\uC791\\uC5C5\\uACFC 10%\\uC758 \\uD06C\\uB9AC\\uC5D0\\uC774\\uD2F0\\uBE0C. \\uC6F9\\uB514\\uC790\\uC778\\uC758 \\uD604\\uC2E4\\uC785\\uB2C8\\uB2E4. \",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"Framer\\uB294 \\uC774 \\uACF5\\uC2DD\\uC744 \\uC644\\uC804\\uD788 \\uB4A4\\uC9D1\\uC2B5\\uB2C8\\uB2E4. \\uC774\\uC81C \\uB2F9\\uC2E0\\uC758 \\uC2DC\\uAC04 90%\\uB97C \\uC624\\uB86F\\uC774 \\uCC3D\\uC758\\uC131\\uC5D0 \\uC3DF\\uC544\\uBD80\\uC73C\\uC138\\uC694.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto grid md:grid-cols-3 gap-8 mt-12\", children: [\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.lightGray },\n                children: [\n                  /* @__PURE__ */ jsx(\"h4\", { className: \"text-xl font-bold mb-2\", children: \"\\uC555\\uB3C4\\uC801\\uC778 \\uC18D\\uB3C4\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC544\\uC774\\uB514\\uC5B4\\uB97C \\uD604\\uC2E4\\uB85C \\uB9CC\\uB4DC\\uB294 \\uB370 \\uB2E8 \\uD558\\uB8E8. Framer\\uC758 \\uBE14\\uB85D \\uC2DC\\uC2A4\\uD15C\\uACFC AI \\uAE30\\uB2A5\\uC774 \\uB2F9\\uC2E0\\uC758 \\uC2DC\\uAC04\\uC744 \\uC544\\uAEF4\\uC90D\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.lightGray },\n                children: [\n                  /* @__PURE__ */ jsx(\"h4\", { className: \"text-xl font-bold mb-2\", children: \"\\uCF54\\uB4DC \\uC5C6\\uB294 \\uACE0\\uD004\\uB9AC\\uD2F0\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC1C\\uBC1C\\uC790\\uAC00 \\uBA87 \\uC8FC\\uAC04 \\uAD6C\\uD604\\uD560 \\uC778\\uD130\\uB799\\uC158\\uC744 \\uB2E8 \\uBA87 \\uBC88\\uC758 \\uD074\\uB9AD\\uC73C\\uB85C. \\uB2F9\\uC2E0\\uC758 \\uB514\\uC790\\uC778\\uC740 \\uC774\\uC81C \\uC8FD\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.lightGray },\n                children: [\n                  /* @__PURE__ */ jsx(\"h4\", { className: \"text-xl font-bold mb-2\", children: \"\\uC2E4\\uC2DC\\uAC04 \\uD611\\uC5C5\\uACFC \\uBC30\\uD3EC\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uB514\\uC790\\uC778\\uBD80\\uD130 \\uBC30\\uD3EC\\uAE4C\\uC9C0 \\uD55C \\uACF3\\uC5D0\\uC11C. \\uD300\\uACFC \\uD568\\uAED8 \\uC2E4\\uC2DC\\uAC04\\uC73C\\uB85C \\uC791\\uC5C5\\uD558\\uACE0, \\uD074\\uB9AD \\uD55C \\uBC88\\uC73C\\uB85C \\uC138\\uC0C1\\uC5D0 \\uACF5\\uAC1C\\uD558\\uC138\\uC694.\" })\n                ]\n              }\n            )\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uC774 \\uC704\\uB300\\uD55C \\uC5EC\\uC815\\uC744 \\uD568\\uAED8\\uD560 \\uBD84\\uB4E4\\uC744 \\uCC3E\\uC2B5\\uB2C8\\uB2E4\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: audience.map((person, index) => /* @__PURE__ */ jsxs(\n                \"div\",\n                {\n                  className: \"p-8 rounded-lg bg-white shadow-md hover:shadow-xl transition-shadow duration-300\",\n                  children: [\n                    /* @__PURE__ */ jsx(\n                      \"h3\",\n                      {\n                        className: \"text-xl font-bold mb-4\",\n                        style: { color: colors.harborBlue },\n                        children: person.title\n                      }\n                    ),\n                    /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: person.description })\n                  ]\n                },\n                index\n              )) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4 border-t border-gray-100\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto grid md:grid-cols-2 gap-12 items-center\", children: [\n          /* @__PURE__ */ jsxs(\"div\", { className: \"text-center md:text-left\", children: [\n            /* @__PURE__ */ jsx(\"p\", { className: \"font-bold\", style: { color: colors.harborBlue }, children: \"INSTRUCTOR\" }),\n            /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold my-4\", children: \"Yongmin, Harbor School\" }),\n            /* @__PURE__ */ jsx(\"p\", { className: \"mb-6\", style: { color: colors.textMedium }, children: \"Framer\\uAC00 \\uD55C\\uAD6D\\uC5D0 \\uC54C\\uB824\\uC9C0\\uAE30 \\uC804\\uBD80\\uD130 7\\uB144\\uAC04 Framer\\uB9CC\\uC744 \\uC5F0\\uAD6C\\uD558\\uACE0, 30\\uAC1C \\uC774\\uC0C1\\uC758 \\uC2E4\\uC804 \\uD504\\uB85C\\uC81D\\uD2B8\\uB97C \\uC131\\uACF5\\uC2DC\\uD0A8 1\\uC138\\uB300 Framer \\uC804\\uBB38\\uAC00\\uC785\\uB2C8\\uB2E4. \\uB2E8\\uC21C\\uD55C \\uD234 \\uC0AC\\uC6A9\\uBC95\\uC744 \\uB118\\uC5B4, '\\uC5B4\\uB5BB\\uAC8C' \\uB514\\uC790\\uC778\\uC73C\\uB85C \\uBB38\\uC81C\\uB97C \\uD574\\uACB0\\uD558\\uB294\\uC9C0\\uC5D0 \\uB300\\uD55C \\uAE4A\\uC740 \\uD1B5\\uCC30\\uB825\\uC744 \\uACF5\\uC720\\uD569\\uB2C8\\uB2E4.\" }),\n            /* @__PURE__ */ jsxs(\"div\", { className: \"flex justify-center md:justify-start space-x-8\", children: [\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-center\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-3xl font-bold\", children: \"7+\" }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"\\uAD50\\uC721 \\uACBD\\uB825\" })\n              ] }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-center\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-3xl font-bold\", children: \"30+\" }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"\\uC2E4\\uC804 \\uD504\\uB85C\\uC81D\\uD2B8\" })\n              ] }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-center\", children: [\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-3xl font-bold\", children: \"1,300+\" }),\n                /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"\\uB204\\uC801 \\uC218\\uAC15\\uC0DD\" })\n              ] })\n            ] })\n          ] }),\n          /* @__PURE__ */ jsx(\"div\", { className: \"w-full max-w-sm mx-auto\", children: /* @__PURE__ */ jsx(\n            \"div\",\n            {\n              className: \"aspect-square rounded-full p-2\",\n              style: {\n                background: `linear-gradient(to bottom right, ${colors.harborPink}, ${colors.harborBlue})`\n              },\n              children: /* @__PURE__ */ jsx(\"div\", { className: \"w-full h-full rounded-full flex items-center justify-center bg-gray-100\", children: /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textLight }, children: \"[\\uAC15\\uC0AC \\uC774\\uBBF8\\uC9C0]\" }) })\n            }\n          ) })\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-4xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uB2F9\\uC2E0\\uC774 \\uB9C8\\uC2A4\\uD130\\uD560 6\\uAC00\\uC9C0 \\uD575\\uC2EC \\uC5ED\\uB7C9\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-2 gap-x-8 gap-y-6\", children: features.map((feature, index) => /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-start space-x-4\", children: [\n                /* @__PURE__ */ jsx(\n                  CheckIcon,\n                  {\n                    className: \"h-6 w-6 mt-1 flex-shrink-0\",\n                    style: { color: colors.harborBlue }\n                  }\n                ),\n                /* @__PURE__ */ jsx(\"p\", { className: \"text-lg\", style: { color: colors.textMedium }, children: feature })\n              ] }, index)) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4 border-t border-gray-100\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-6xl mx-auto text-center\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-4\", children: \"\\uC878\\uC5C5\\uC0DD\\uB4E4\\uC758 \\uC2E4\\uC81C \\uACB0\\uACFC\\uBB3C\" }),\n          /* @__PURE__ */ jsx(\n            \"p\",\n            {\n              className: \"max-w-2xl mx-auto mb-12\",\n              style: { color: colors.textMedium },\n              children: \"\\uC774 \\uAC15\\uC758\\uB97C \\uD1B5\\uD574 \\uB2F9\\uC2E0\\uCC98\\uB7FC \\uD3C9\\uBC94\\uD588\\uB358 \\uB514\\uC790\\uC774\\uB108\\uB4E4\\uC774 \\uB9CC\\uB4E4\\uC5B4\\uB0B8, \\uBE44\\uBC94\\uD55C \\uACB0\\uACFC\\uBB3C\\uB4E4\\uC785\\uB2C8\\uB2E4.\"\n            }\n          ),\n          /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: [1, 2, 3].map((i) => /* @__PURE__ */ jsxs(\"div\", { className: \"group\", children: [\n            /* @__PURE__ */ jsx(\"div\", { className: \"aspect-video rounded-lg bg-gray-100 mb-4 border border-gray-200 flex items-center justify-center\", children: /* @__PURE__ */ jsxs(\"p\", { style: { color: colors.textLight }, children: [\n              \"[\\uC878\\uC5C5\\uC0DD \\uD504\\uB85C\\uC81D\\uD2B8 \",\n              i,\n              \"]\"\n            ] }) }),\n            /* @__PURE__ */ jsxs(\"h3\", { className: \"text-lg font-bold\", children: [\n              \"Project Title \",\n              i\n            ] }),\n            /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"by Alumnus Name\" })\n          ] }, i)) })\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto text-center\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-4\", children: \"\\uBC31\\uBB38\\uC774 \\uBD88\\uC5EC\\uC77C\\uACAC\" }),\n              /* @__PURE__ */ jsxs(\"p\", { className: \"text-lg mb-8\", style: { color: colors.textMedium }, children: [\n                \"\\uC774 \\uAC15\\uC758\\uB97C \\uD1B5\\uD574 \\uB2F9\\uC2E0\\uC774 \\uC9C1\\uC811 \\uB9CC\\uB4E4\\uAC8C \\uB420\",\n                \" \",\n                /* @__PURE__ */ jsx(\"span\", { style: { color: colors.harborBlue }, className: \"font-bold\", children: \"\\uC2E4\\uC804 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uD504\\uB85C\\uC81D\\uD2B8\" }),\n                \"\\uC785\\uB2C8\\uB2E4.\"\n              ] }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"aspect-video rounded-lg shadow-2xl p-2 border border-gray-200 bg-white\", children: /* @__PURE__ */ jsx(\"div\", { className: \"w-full h-full bg-gray-100 rounded flex items-center justify-center\", children: /* @__PURE__ */ jsxs(\"p\", { style: { color: colors.textLight }, children: [\n                \"[\",\n                /* @__PURE__ */ jsx(\n                  \"a\",\n                  {\n                    href: \"https://marianne.framer.website\",\n                    target: \"_blank\",\n                    rel: \"noopener noreferrer\",\n                    className: \"underline\",\n                    style: { color: colors.harborBlue },\n                    children: \"https://marianne.framer.website\"\n                  }\n                ),\n                \"]\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"(\\uC704 \\uB9C1\\uD06C\\uC640 \\uAC19\\uC740 \\uD004\\uB9AC\\uD2F0\\uC758 \\uACB0\\uACFC\\uBB3C\\uC744 \\uB9CC\\uB4ED\\uB2C8\\uB2E4)\"\n              ] }) }) }),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"text-left mt-8 grid md:grid-cols-2 gap-x-8 gap-y-4 max-w-2xl mx-auto\", children: [\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"\\uC644\\uBCBD\\uD55C \\uBC18\\uC751\\uD615 \\uB808\\uC774\\uC544\\uC6C3\"\n                ] }),\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"CMS\\uB97C \\uD1B5\\uD55C \\uB3D9\\uC801 \\uCF58\\uD150\\uCE20 \\uAD00\\uB9AC\"\n                ] }),\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"\\uC2DC\\uC120\\uC744 \\uC0AC\\uB85C\\uC7A1\\uB294 \\uC2A4\\uD06C\\uB864 \\uC560\\uB2C8\\uBA54\\uC774\\uC158\"\n                ] }),\n                /* @__PURE__ */ jsxs(\"p\", { className: \"flex items-center\", children: [\n                  /* @__PURE__ */ jsx(CheckIcon, { className: \"h-5 w-5 text-green-500 mr-3 flex-shrink-0\" }),\n                  \" \",\n                  \"\\uCF54\\uB4DC \\uCEF4\\uD3EC\\uB10C\\uD2B8\\uB97C \\uD65C\\uC6A9\\uD55C \\uAE30\\uB2A5 \\uD655\\uC7A5\"\n                ] })\n              ] })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsx(\"section\", { className: \"py-20 px-4 border-t border-gray-100\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-4xl mx-auto\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uC7A0\\uC7AC\\uB825\\uC744 \\uD3ED\\uBC1C\\uC2DC\\uD0AC 6\\uC8FC\\uAC04\\uC758 \\uC555\\uCD95 \\uC131\\uC7A5 \\uD504\\uB85C\\uADF8\\uB7A8\" }),\n          /* @__PURE__ */ jsx(\"div\", { className: \"space-y-4\", children: curriculum.map((week, index) => /* @__PURE__ */ jsxs(\n            \"details\",\n            {\n              className: \"p-6 rounded-lg group border border-gray-200\",\n              open: index === 0,\n              style: { backgroundColor: colors.white },\n              children: [\n                /* @__PURE__ */ jsxs(\"summary\", { className: \"font-bold text-xl list-none flex justify-between items-center cursor-pointer\", children: [\n                  /* @__PURE__ */ jsxs(\"div\", { children: [\n                    /* @__PURE__ */ jsx(\n                      \"p\",\n                      {\n                        className: \"text-sm font-bold\",\n                        style: { color: colors.harborBlue },\n                        children: week.module\n                      }\n                    ),\n                    /* @__PURE__ */ jsx(\"h3\", { className: \"text-2xl font-bold mt-1 group-hover:opacity-80 transition-opacity\", children: week.title })\n                  ] }),\n                  /* @__PURE__ */ jsxs(\n                    \"span\",\n                    {\n                      className: \"text-sm ml-4 whitespace-nowrap\",\n                      style: { color: colors.textLight },\n                      children: [\n                        week.lessonsCount,\n                        \"\\uAC15 / \",\n                        week.duration\n                      ]\n                    }\n                  )\n                ] }),\n                /* @__PURE__ */ jsxs(\"div\", { className: \"overflow-hidden max-h-0 group-open:max-h-[1000px] transition-all duration-500 ease-in-out\", children: [\n                  /* @__PURE__ */ jsx(\"p\", { className: \"my-4\", style: { color: colors.textMedium }, children: week.description }),\n                  /* @__PURE__ */ jsxs(\n                    \"div\",\n                    {\n                      className: \"p-4 rounded-md mt-4\",\n                      style: { backgroundColor: colors.lightGray },\n                      children: [\n                        /* @__PURE__ */ jsx(\n                          \"p\",\n                          {\n                            className: \"font-bold text-sm\",\n                            style: { color: colors.harborBlue },\n                            children: \"Key Outcome\"\n                          }\n                        ),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"mt-1\", style: { color: colors.textMedium }, children: week.outcome })\n                      ]\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"ul\", { className: \"space-y-2 pt-4 mt-4 border-t border-gray-200\", children: week.lessons.map((lesson, lessonIndex) => /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                    /* @__PURE__ */ jsx(\n                      CheckIcon,\n                      {\n                        className: \"h-5 w-5 mr-3 mt-1 flex-shrink-0\",\n                        style: { color: colors.textLight }\n                      }\n                    ),\n                    /* @__PURE__ */ jsx(\"span\", { style: { color: colors.textMedium }, children: lesson })\n                  ] }, lessonIndex)) })\n                ] })\n              ]\n            },\n            index\n          )) })\n        ] }) }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-5xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uBA3C\\uC800 \\uACBD\\uD5D8\\uD55C \\uBD84\\uB4E4\\uC758 \\uC758\\uC2EC \\uC5C6\\uB294 \\uCC2C\\uC0AC\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"grid md:grid-cols-3 gap-8\", children: reviews.map((review, i) => /* @__PURE__ */ jsxs(\n                \"div\",\n                {\n                  className: \"bg-white p-6 rounded-lg flex flex-col shadow-md hover:shadow-xl transition-shadow duration-300\",\n                  children: [\n                    /* @__PURE__ */ jsx(\"div\", { className: \"flex mb-4\", children: [...Array(5)].map((_, starIndex) => /* @__PURE__ */ jsx(\n                      StarIcon,\n                      {\n                        className: \"h-5 w-5 text-yellow-400\"\n                      },\n                      starIndex\n                    )) }),\n                    /* @__PURE__ */ jsxs(\"p\", { className: \"flex-grow\", style: { color: colors.textMedium }, children: [\n                      '\"',\n                      review.text,\n                      '\"'\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"div\", { className: \"mt-4\", children: [\n                      /* @__PURE__ */ jsx(\"p\", { className: \"font-bold\", children: review.name }),\n                      /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: review.role })\n                    ] })\n                  ]\n                },\n                i\n              )) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"section\", { className: \"py-20 px-4 text-center border-t border-gray-100\", children: [\n          /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold mb-4\", children: \"\\uB2F9\\uC2E0\\uC758 \\uC131\\uC7A5\\uC744 \\uC704\\uD55C, \\uB2E8 \\uD558\\uB098\\uC758 \\uD0A4\\uD2B8\" }),\n          /* @__PURE__ */ jsxs(\n            \"p\",\n            {\n              className: \"text-lg max-w-2xl mx-auto mb-10\",\n              style: { color: colors.textMedium },\n              children: [\n                \"\\uC131\\uACF5\\uC801\\uC778 \\uC5EC\\uC815\\uC744 \\uC704\\uD574 \\uD544\\uC694\\uD55C \\uBAA8\\uB4E0 \\uAC83\\uC744 \\uB2F4\\uC558\\uC2B5\\uB2C8\\uB2E4.\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uB2F9\\uC2E0\\uC740 \\uADF8\\uC800 \\uC131\\uC7A5\\uC5D0\\uB9CC \\uC9D1\\uC911\\uD558\\uC138\\uC694.\"\n              ]\n            }\n          ),\n          /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-3xl mx-auto grid md:grid-cols-2 gap-8 text-left\", children: [\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uC131\\uC7A5\\uC758 \\uB3D9\\uBC18\\uC790, \\uC2AC\\uB799 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC19\\uC740 \\uBAA9\\uD45C\\uB97C \\uAC00\\uC9C4 \\uB3D9\\uB8CC\\uB4E4\\uACFC \\uD568\\uAED8\\uB77C\\uBA74 \\uB354 \\uBA40\\uB9AC, \\uB354 \\uBE60\\uB974\\uAC8C \\uAC08 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uC774\\uACF3\\uC740 \\uB2E8\\uC21C\\uD55C Q&A \\uACF5\\uAC04\\uC774 \\uC544\\uB2CC, \\uC9D1\\uB2E8 \\uC9C0\\uC131\\uC758 \\uD5C8\\uBE0C\\uC785\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uC2DC\\uAC04\\uC744 \\uC9C0\\uBC30\\uD558\\uB294, \\uD575\\uC2EC \\uB9AC\\uC18C\\uC2A4\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC15\\uC758\\uC5D0 \\uC0AC\\uC6A9\\uB41C \\uBAA8\\uB4E0 Framer \\uD30C\\uC77C\\uACFC \\uCF54\\uB4DC \\uC2A4\\uB2C8\\uD3AB\\uC740 \\uB2F9\\uC2E0\\uC758 \\uC2DC\\uAC04\\uC744 \\uC544\\uAEF4\\uC8FC\\uB294 \\uAC00\\uC7A5 \\uAC15\\uB825\\uD55C \\uBB34\\uAE30\\uAC00 \\uB420 \\uAC83\\uC785\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uD504\\uB85C\\uD398\\uC154\\uB110\\uC758 \\uC0C1\\uC9D5, \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624 \\uD15C\\uD50C\\uB9BF\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uAC15\\uC758 \\uC644\\uAC15 \\uD6C4, \\uB2F9\\uC2E0\\uC758 \\uC2E4\\uB825\\uC744 \\uC99D\\uBA85\\uD560 \\uAC00\\uC7A5 \\uBE60\\uB978 \\uBC29\\uBC95. \\uC804\\uBB38\\uAC00\\uAC00 \\uB514\\uC790\\uC778\\uD55C \\uACE0\\uD488\\uC9C8 \\uD15C\\uD50C\\uB9BF\\uC73C\\uB85C \\uB2F9\\uC2E0\\uC758 \\uAC00\\uCE58\\uB97C \\uBCF4\\uC5EC\\uC8FC\\uC138\\uC694.\" })\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                className: \"p-8 rounded-lg\",\n                style: { backgroundColor: colors.harborPink },\n                children: [\n                  /* @__PURE__ */ jsx(\n                    \"h3\",\n                    {\n                      className: \"text-xl font-bold mb-3\",\n                      style: { color: colors.harborBlue },\n                      children: \"\\uC131\\uC7A5\\uC758 \\uD604\\uC7AC\\uC9C4\\uD589\\uD615, \\uD3C9\\uC0DD \\uC5C5\\uB370\\uC774\\uD2B8\"\n                    }\n                  ),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, children: \"\\uC774 \\uAC15\\uC758\\uB294 \\uC0B4\\uC544\\uC788\\uB294 \\uC720\\uAE30\\uCCB4\\uC785\\uB2C8\\uB2E4. Framer\\uC758 \\uBC1C\\uC804\\uC5D0 \\uB9DE\\uCDB0 \\uB04A\\uC784\\uC5C6\\uC774 \\uC9C4\\uD654\\uD558\\uBA70, \\uB2F9\\uC2E0\\uC758 \\uC2E4\\uB825\\uC744 \\uD56D\\uC0C1 \\uCD5C\\uC2E0\\uC73C\\uB85C \\uC720\\uC9C0\\uD574 \\uB4DC\\uB9BD\\uB2C8\\uB2E4.\" })\n                ]\n              }\n            )\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4\",\n            style: { backgroundColor: colors.lightGray },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-3xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl font-bold text-center mb-12\", children: \"\\uB2F9\\uC2E0\\uC758 \\uB9C8\\uC9C0\\uB9C9 \\uB9DD\\uC124\\uC784\\uC744 \\uD574\\uACB0\\uD574 \\uB4DC\\uB9BD\\uB2C8\\uB2E4\" }),\n              /* @__PURE__ */ jsx(\"div\", { className: \"space-y-4\", children: faqs.map((faq, index) => /* @__PURE__ */ jsxs(\n                \"details\",\n                {\n                  className: \"bg-white p-6 rounded-lg group cursor-pointer shadow-sm\",\n                  children: [\n                    /* @__PURE__ */ jsxs(\"summary\", { className: \"font-bold text-lg list-none flex justify-between items-center\", children: [\n                      faq.question,\n                      /* @__PURE__ */ jsx(\n                        \"span\",\n                        {\n                          style: { color: colors.harborBlue },\n                          className: \"transform transition-transform duration-300 group-open:rotate-45 text-2xl\",\n                          children: \"+\"\n                        }\n                      )\n                    ] }),\n                    /* @__PURE__ */ jsx(\"div\", { className: \"overflow-hidden max-h-0 group-open:max-h-screen transition-all duration-500 ease-in-out\", children: /* @__PURE__ */ jsx(\"p\", { className: \"mt-4\", style: { color: colors.textMedium }, children: faq.answer }) })\n                  ]\n                },\n                index\n              )) })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          \"section\",\n          {\n            id: \"pricing\",\n            className: \"py-20 px-4 text-center border-t border-gray-100\",\n            children: [\n              /* @__PURE__ */ jsx(\"h2\", { className: \"text-4xl md:text-5xl font-bold mb-4\", children: \"\\uAC00\\uC7A5 \\uC704\\uB300\\uD55C \\uD22C\\uC790\\uB294 \\uB2F9\\uC2E0\\uC758 \\uC131\\uC7A5\\uC785\\uB2C8\\uB2E4\" }),\n              /* @__PURE__ */ jsxs(\n                \"p\",\n                {\n                  className: \"text-lg max-w-2xl mx-auto mb-10\",\n                  style: { color: colors.textMedium },\n                  children: [\n                    \"\\uD55C \\uBC88\\uC758 \\uACB0\\uC2EC\\uC73C\\uB85C, \\uB2F9\\uC2E0\\uC758 \\uCEE4\\uB9AC\\uC5B4\\uB294 \\uC0C8\\uB85C\\uC6B4 \\uC2DC\\uB300\\uB97C \\uB9DE\\uC774\\uD569\\uB2C8\\uB2E4.\",\n                    /* @__PURE__ */ jsx(\"br\", {}),\n                    \"\\uC5B4\\uC81C\\uC758 \\uB2F9\\uC2E0\\uACFC \\uC791\\uBCC4\\uD558\\uACE0, \\uB0B4\\uC77C\\uC758 \\uC804\\uBB38\\uAC00\\uC640 \\uB9CC\\uB098\\uC138\\uC694.\"\n                  ]\n                }\n              ),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"grid md:grid-cols-2 max-w-4xl mx-auto items-center gap-8\", children: [\n                /* @__PURE__ */ jsxs(\"div\", { className: \"text-left\", children: [\n                  /* @__PURE__ */ jsx(\"h3\", { className: \"text-3xl font-bold mb-4\", children: \"\\uBB34\\uC5C7\\uC744 \\uB9DD\\uC124\\uC774\\uB098\\uC694?\" }),\n                  /* @__PURE__ */ jsx(\"p\", { style: { color: colors.textMedium }, className: \"mb-4\", children: \"\\uC774 \\uAC15\\uC758\\uB294 \\uB2E8\\uC21C\\uD55C \\uC9C0\\uCD9C\\uC774 \\uC544\\uB2CC, \\uB2F9\\uC2E0\\uC758 \\uBBF8\\uB798\\uB97C \\uC704\\uD55C \\uAC00\\uC7A5 \\uD655\\uC2E4\\uD55C \\uD22C\\uC790\\uC785\\uB2C8\\uB2E4. \\uC218\\uC2ED, \\uC218\\uBC31 \\uBC30\\uC758 \\uAC00\\uCE58\\uB85C \\uB3CC\\uC544\\uC62C \\uC131\\uC7A5\\uC758 \\uAE30\\uD68C\\uB97C \\uB354 \\uC774\\uC0C1 \\uBBF8\\uB8E8\\uC9C0 \\uB9C8\\uC138\\uC694.\" }),\n                  /* @__PURE__ */ jsxs(\"ul\", { className: \"space-y-3\", children: [\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uD3C9\\uC0DD \\uC18C\\uC7A5 VOD\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uC5B8\\uC81C \\uC5B4\\uB514\\uC11C\\uB4E0, \\uB2F9\\uC2E0\\uC758 \\uD398\\uC774\\uC2A4\\uC5D0 \\uB9DE\\uCDB0 \\uD559\\uC2B5\\uD558\\uC138\\uC694.\" })\n                      ] })\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uC804\\uBB38\\uAC00 \\uCEE4\\uBBA4\\uB2C8\\uD2F0\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uD63C\\uC790\\uAC00 \\uC544\\uB2CC \\uD568\\uAED8\\uC758 \\uD798\\uC73C\\uB85C \\uB354 \\uBE60\\uB974\\uAC8C \\uC131\\uC7A5\\uD569\\uB2C8\\uB2E4.\" })\n                      ] })\n                    ] }),\n                    /* @__PURE__ */ jsxs(\"li\", { className: \"flex items-start\", children: [\n                      /* @__PURE__ */ jsx(CheckIcon, { className: \"h-6 w-6 mr-3 mt-1 flex-shrink-0 text-green-500\" }),\n                      /* @__PURE__ */ jsxs(\"div\", { children: [\n                        /* @__PURE__ */ jsx(\"h4\", { className: \"font-bold\", children: \"\\uC2E4\\uC804 \\uC911\\uC2EC\\uC758 \\uACB0\\uACFC\\uBB3C\" }),\n                        /* @__PURE__ */ jsx(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: \"\\uAC15\\uC758\\uAC00 \\uB05D\\uB098\\uBA74, \\uB2F9\\uC2E0\\uC758 \\uC2E4\\uB825\\uC744 \\uC99D\\uBA85\\uD560 \\uD3EC\\uD2B8\\uD3F4\\uB9AC\\uC624\\uAC00 \\uB0A8\\uC2B5\\uB2C8\\uB2E4.\" })\n                      ] })\n                    ] })\n                  ] })\n                ] }),\n                /* @__PURE__ */ jsxs(\n                  \"div\",\n                  {\n                    style: { backgroundColor: colors.harborBlue, color: colors.white },\n                    className: \"rounded-lg p-8 shadow-2xl text-center\",\n                    children: [\n                      /* @__PURE__ */ jsx(\"p\", { className: \"text-lg font-bold\", children: \"Framer 101 Mastery\" }),\n                      /* @__PURE__ */ jsxs(\"p\", { className: \"text-5xl font-bold my-4\", children: [\n                        new Intl.NumberFormat(\"ko-KR\").format(32e4),\n                        \"\\uC6D0\"\n                      ] }),\n                      /* @__PURE__ */ jsxs(\"p\", { className: \"line-through text-xl opacity-70\", children: [\n                        new Intl.NumberFormat(\"ko-KR\").format(63e4),\n                        \"\\uC6D0\"\n                      ] }),\n                      /* @__PURE__ */ jsx(\"div\", { className: \"my-6\", children: /* @__PURE__ */ jsx(\"span\", { className: \"bg-yellow-400 text-black font-bold py-1 px-3 rounded-md\", children: \"49% OFF\" }) }),\n                      /* @__PURE__ */ jsx(\n                        \"a\",\n                        {\n                          href: \"#\",\n                          style: {\n                            backgroundColor: colors.harborPink,\n                            color: colors.black\n                          },\n                          className: \"w-full block font-bold py-4 px-8 rounded-lg text-xl hover:opacity-90 transition-opacity duration-300 transform hover:scale-105\",\n                          children: \"\\uBC14\\uB85C \\uAD6C\\uB9E4\\uD558\\uACE0 \\uC2DC\\uC791\\uD558\\uAE30\"\n                        }\n                      ),\n                      /* @__PURE__ */ jsx(\"p\", { className: \"text-sm mt-4 opacity-80\", children: \"\\uC6D4 26,600\\uC6D0 (12\\uAC1C\\uC6D4 \\uD560\\uBD80 \\uC2DC)\" })\n                    ]\n                  }\n                )\n              ] })\n            ]\n          }\n        ),\n        /* @__PURE__ */ jsx(\n          \"section\",\n          {\n            className: \"py-20 px-4 border-t border-gray-100\",\n            style: {\n              backgroundColor: colors.lightGray,\n              color: colors.textLight,\n              fontSize: \"0.875rem\"\n            },\n            children: /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-4xl mx-auto\", children: [\n              /* @__PURE__ */ jsx(\n                \"h2\",\n                {\n                  className: \"text-2xl font-bold text-center mb-8\",\n                  style: { color: colors.black },\n                  children: \"\\uD559\\uC2B5 \\uBC0F \\uD658\\uBD88 \\uADDC\\uC815\"\n                }\n              ),\n              /* @__PURE__ */ jsxs(\"div\", { className: \"space-y-6\", children: [\n                /* @__PURE__ */ jsxs(\"div\", { children: [\n                  /* @__PURE__ */ jsx(\"h3\", { className: \"font-bold mb-2\", style: { color: colors.black }, children: \"\\uD559\\uC2B5 \\uADDC\\uC815\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uBCF8 \\uC0C1\\uD488\\uC740 \\uB3D9\\uC601\\uC0C1 \\uD615\\uD0DC\\uC758 \\uAC15\\uC758\\uB97C \\uD3C9\\uC0DD \\uC18C\\uC7A5\\uD558\\uBA70 \\uC218\\uAC15\\uD558\\uB294 \\uC0C1\\uD488\\uC785\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uC218\\uAC15 \\uC2E0\\uCCAD \\uBC0F \\uACB0\\uC81C\\uB97C \\uC644\\uB8CC\\uD558\\uC2DC\\uBA74, \\uB9C8\\uC774\\uD398\\uC774\\uC9C0\\uB97C \\uD1B5\\uD574 \\uBC14\\uB85C \\uC218\\uAC15\\uC774 \\uAC00\\uB2A5\\uD569\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* ID \\uACF5\\uC720, \\uAC15\\uC758 \\uC601\\uC0C1 \\uBB34\\uB2E8 \\uBC30\\uD3EC \\uBC0F \\uAC00\\uACF5, \\uCEA1\\uCCD0, \\uD310\\uB9E4 \\uB4F1 \\uC77C\\uCCB4\\uC758 \\uC800\\uC791\\uAD8C \\uCE68\\uD574 \\uD589\\uC704\\uB97C \\uAE08\\uC9C0\\uD569\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uBD80\\uC815 \\uC0AC\\uC6A9\\uC774 \\uC801\\uBC1C\\uB420 \\uACBD\\uC6B0 \\uC800\\uC791\\uAD8C\\uBC95 \\uC704\\uBC18\\uC5D0 \\uC758\\uD55C \\uBC95\\uC801\\uC778 \\uC81C\\uC7AC\\uB97C \\uBC1B\\uC73C\\uC2E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\" })\n                ] }),\n                /* @__PURE__ */ jsxs(\"div\", { children: [\n                  /* @__PURE__ */ jsx(\"h3\", { className: \"font-bold mb-2\", style: { color: colors.black }, children: \"\\uD658\\uBD88 \\uADDC\\uC815\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uD658\\uBD88 \\uAE08\\uC561\\uC740 \\uC815\\uAC00\\uAC00 \\uC544\\uB2CC \\uC2E4\\uC81C \\uACB0\\uC81C \\uAE08\\uC561\\uC744 \\uAE30\\uC900\\uC73C\\uB85C \\uACC4\\uC0B0\\uB429\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uC218\\uAC15 \\uC2DC\\uC791 \\uD6C4 7\\uC77C \\uC774\\uB0B4, 2\\uAC1C \\uAC15\\uC758 \\uBBF8\\uB9CC \\uC218\\uAC15 \\uC2DC\\uC5D0\\uB294 100% \\uD658\\uBD88 \\uAC00\\uB2A5\\uD569\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uC218\\uAC15 \\uC2DC\\uC791 \\uD6C4 7\\uC77C \\uC774\\uB0B4, 2\\uAC1C \\uAC15\\uC758 \\uC774\\uC0C1 \\uC218\\uAC15 \\uC2DC \\uB610\\uB294 7\\uC77C \\uCD08\\uACFC \\uC2DC\\uC5D0\\uB294 \\uD559\\uC2B5\\uB960\\uC5D0 \\uB530\\uB77C \\uCC28\\uAC10 \\uD6C4 \\uD658\\uBD88\\uC774 \\uC9C4\\uD589\\uB429\\uB2C8\\uB2E4.\" }),\n                  /* @__PURE__ */ jsx(\"p\", { children: \"* \\uBCF4\\uB2E4 \\uC790\\uC138\\uD55C \\uD658\\uBD88 \\uADDC\\uC815\\uC740 \\uACE0\\uAC1D\\uC13C\\uD130\\uB85C \\uBB38\\uC758 \\uBC14\\uB78D\\uB2C8\\uB2E4.\" })\n                ] })\n              ] })\n            ] })\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          \"footer\",\n          {\n            className: \"text-center py-10 border-t border-gray-100\",\n            style: { backgroundColor: colors.white },\n            children: [\n              /* @__PURE__ */ jsx(\"p\", { className: \"text-lg font-bold mb-4\", style: { color: colors.black }, children: \"(\\uC8FC) \\uD558\\uBC84\\uC2A4\\uCFE8\" }),\n              /* @__PURE__ */ jsxs(\"p\", { className: \"text-sm\", style: { color: colors.textLight }, children: [\n                \"\\uB300\\uD45C\\uC790 : OOO | \\uAC1C\\uC778\\uC815\\uBCF4\\uCC45\\uC784\\uAD00\\uB9AC\\uC790 : OOO\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uC0AC\\uC5C5\\uC790\\uBC88\\uD638 : 559-63-00040 | \\uD1B5\\uC2E0\\uD310\\uB9E4\\uC5C5 \\uC2E0\\uACE0\\uBC88\\uD638 : \\uC81C 2019-\\uC11C\\uC6B8\\uAC15\\uB0A8-04995\\uD638\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                \"\\uC8FC\\uC18C : \\uC11C\\uC6B8\\uD2B9\\uBCC4\\uC2DC \\uAD00\\uC545\\uAD6C \\uC870\\uC6D0\\uB85C 25 109 | \\uC774\\uBA54\\uC77C : help@harbor.school\",\n                /* @__PURE__ */ jsx(\"br\", {}),\n                /* @__PURE__ */ jsx(\"a\", { href: \"#\", className: \"underline\", children: \"\\uC774\\uC6A9\\uC57D\\uAD00\" }),\n                \" \",\n                \"|\",\n                \" \",\n                /* @__PURE__ */ jsx(\"a\", { href: \"#\", className: \"underline\", children: \"\\uAC1C\\uC778\\uC815\\uBCF4\\uCC98\\uB9AC\\uBC29\\uCE68\" })\n              ] }),\n              /* @__PURE__ */ jsx(\n                \"p\",\n                {\n                  className: \"mt-4\",\n                  style: { color: colors.textLight, fontSize: \"0.875rem\" },\n                  children: \"\\xA9 2024 Harbor School. All rights reserved.\"\n                }\n              )\n            ]\n          }\n        )\n      ]\n    }\n  );\n}\n\nexport {\n  Framer101\n};\n", "// src/class/Reviews.tsx\nimport { useState } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar FONTS = {\n  bold: '\"Pretendard Bold\", \"Pretendard Bold Placeholder\", sans-serif',\n  medium: '\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\n  light: '\"Pretendard Light\", \"Pretendard Light Placeholder\", sans-serif'\n};\nvar StarRating = ({\n  rating,\n  size = \"md\"\n}) => {\n  const sizeClasses = {\n    sm: \"w-4 h-4\",\n    md: \"w-5 h-5\",\n    lg: \"w-6 h-6\"\n  };\n  return /* @__PURE__ */ jsx(\"div\", { className: \"flex items-center space-x-1\", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(\n    \"svg\",\n    {\n      className: `${sizeClasses[size]} ${star <= rating ? \"text-yellow-400\" : \"text-gray-300\"} fill-current`,\n      viewBox: \"0 0 20 20\",\n      children: /* @__PURE__ */ jsx(\"path\", { d: \"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z\" })\n    },\n    star\n  )) });\n};\nvar ReviewItem = ({ review }) => {\n  const [isHelpful, setIsHelpful] = useState(false);\n  const [helpfulCount, setHelpfulCount] = useState(review.helpful);\n  const handleHelpful = () => {\n    if (!isHelpful) {\n      setHelpfulCount((prev) => prev + 1);\n      setIsHelpful(true);\n    }\n  };\n  return /* @__PURE__ */ jsx(\"div\", { className: \"bg-white border border-gray-200 rounded-lg p-6 mb-4 shadow-sm hover:shadow-md transition-shadow max-md:p-4 max-md:mb-3\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-start space-x-4 max-md:space-x-3\", children: [\n    /* @__PURE__ */ jsx(\"div\", { className: \"flex-shrink-0\", children: /* @__PURE__ */ jsx(\n      \"div\",\n      {\n        className: \"w-12 h-12 bg-gradient-to-br from-blue-500 to-purple-600 rounded-full flex items-center justify-center text-white text-lg max-md:w-10 max-md:h-10 max-md:text-base\",\n        style: { fontFamily: FONTS.bold },\n        children: review.name.charAt(0)\n      }\n    ) }),\n    /* @__PURE__ */ jsxs(\"div\", { className: \"flex-1 min-w-0\", children: [\n      /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-start justify-between mb-2 max-md:flex-col max-md:gap-2\", children: [\n        /* @__PURE__ */ jsxs(\"div\", { className: \"flex-1 min-w-0\", children: [\n          /* @__PURE__ */ jsx(\n            \"h4\",\n            {\n              className: \"text-gray-900 max-md:text-sm\",\n              style: { fontFamily: FONTS.bold },\n              children: review.name\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            \"p\",\n            {\n              className: \"text-sm text-gray-600 max-md:text-xs\",\n              style: { fontFamily: FONTS.light },\n              children: review.role\n            }\n          )\n        ] }),\n        review.verified && /* @__PURE__ */ jsxs(\n          \"span\",\n          {\n            className: \"inline-flex items-center px-2 py-1 rounded-full text-xs bg-green-100 text-green-800 max-md:px-1 max-md:py-0.5 max-md:text-xs flex-shrink-0\",\n            style: { fontFamily: FONTS.medium },\n            children: [\n              /* @__PURE__ */ jsx(\n                \"svg\",\n                {\n                  className: \"w-3 h-3 mr-1 max-md:w-2 max-md:h-2\",\n                  fill: \"currentColor\",\n                  viewBox: \"0 0 20 20\",\n                  children: /* @__PURE__ */ jsx(\n                    \"path\",\n                    {\n                      fillRule: \"evenodd\",\n                      d: \"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\",\n                      clipRule: \"evenodd\"\n                    }\n                  )\n                }\n              ),\n              /* @__PURE__ */ jsx(\"span\", { className: \"max-md:hidden\", children: \"\\uC778\\uC99D\\uB41C \\uC218\\uAC15\\uC0DD\" }),\n              /* @__PURE__ */ jsx(\"span\", { className: \"md:hidden\", children: \"\\uC778\\uC99D\" })\n            ]\n          }\n        )\n      ] }),\n      /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center space-x-4 mb-3 max-md:space-x-2 max-md:mb-2\", children: [\n        /* @__PURE__ */ jsx(\"div\", { className: \"hidden md:block\", children: /* @__PURE__ */ jsx(StarRating, { rating: review.rating, size: \"md\" }) }),\n        /* @__PURE__ */ jsx(\"div\", { className: \"md:hidden\", children: /* @__PURE__ */ jsx(StarRating, { rating: review.rating, size: \"sm\" }) }),\n        /* @__PURE__ */ jsx(\n          \"span\",\n          {\n            className: \"text-sm text-gray-500 max-md:text-xs\",\n            style: { fontFamily: FONTS.light },\n            children: review.date\n          }\n        )\n      ] }),\n      /* @__PURE__ */ jsx(\n        \"p\",\n        {\n          className: \"text-gray-700 leading-relaxed mb-4 max-md:text-sm max-md:leading-normal max-md:mb-3\",\n          style: { fontFamily: FONTS.light },\n          children: review.content\n        }\n      ),\n      /* @__PURE__ */ jsx(\"div\", { className: \"flex items-center space-x-4 text-sm max-md:space-x-2\", children: /* @__PURE__ */ jsxs(\n        \"button\",\n        {\n          onClick: handleHelpful,\n          className: `flex items-center space-x-1 px-3 py-1 rounded-full transition-colors max-md:px-2 max-md:py-1 max-md:text-xs ${isHelpful ? \"bg-blue-100 text-blue-700\" : \"bg-gray-100 text-gray-600 hover:bg-gray-200\"}`,\n          style: { fontFamily: FONTS.medium },\n          children: [\n            /* @__PURE__ */ jsx(\n              \"svg\",\n              {\n                className: \"w-4 h-4 max-md:w-3 max-md:h-3\",\n                fill: \"none\",\n                stroke: \"currentColor\",\n                viewBox: \"0 0 24 24\",\n                children: /* @__PURE__ */ jsx(\n                  \"path\",\n                  {\n                    strokeLinecap: \"round\",\n                    strokeLinejoin: \"round\",\n                    strokeWidth: 2,\n                    d: \"M14 10h4.764a2 2 0 011.789 2.894l-3.5 7A2 2 0 0115.263 21h-4.017c-.163 0-.326-.02-.485-.06L7 20m7-10V5a2 2 0 00-2-2h-.095c-.5 0-.905.405-.905.905 0 .714-.211 1.412-.608 2.006L9 6m-5 4v10m5-10H4a2 2 0 00-2 2v8a2 2 0 002 2h5z\"\n                  }\n                )\n              }\n            ),\n            /* @__PURE__ */ jsxs(\"span\", { children: [\n              \"\\uB3C4\\uC6C0\\uB428 \",\n              helpfulCount\n            ] })\n          ]\n        }\n      ) })\n    ] })\n  ] }) });\n};\nvar ReviewStats = ({ reviews }) => {\n  const averageRating = reviews.reduce((sum, review) => sum + review.rating, 0) / reviews.length;\n  const ratingDistribution = [5, 4, 3, 2, 1].map((rating) => ({\n    rating,\n    count: reviews.filter((r) => r.rating === rating).length,\n    percentage: reviews.filter((r) => r.rating === rating).length / reviews.length * 100\n  }));\n  return /* @__PURE__ */ jsxs(\"div\", { className: \"bg-white border border-gray-200 rounded-lg p-6 mb-8 max-md:p-4 max-md:mb-6\", children: [\n    /* @__PURE__ */ jsx(\n      \"h3\",\n      {\n        className: \"text-xl mb-4 max-md:text-lg max-md:mb-3\",\n        style: { fontFamily: FONTS.bold },\n        children: \"\\uC218\\uAC15\\uC0DD \\uB9AC\\uBDF0 \\uD1B5\\uACC4\"\n      }\n    ),\n    /* @__PURE__ */ jsxs(\"div\", { className: \"grid grid-cols-1 md:grid-cols-2 gap-8 max-md:gap-6\", children: [\n      /* @__PURE__ */ jsx(\"div\", { children: /* @__PURE__ */ jsxs(\"div\", { className: \"text-center mb-4 max-md:mb-3\", children: [\n        /* @__PURE__ */ jsx(\n          \"div\",\n          {\n            className: \"text-4xl text-gray-900 max-md:text-3xl\",\n            style: { fontFamily: FONTS.bold },\n            children: averageRating.toFixed(1)\n          }\n        ),\n        /* @__PURE__ */ jsx(\"div\", { className: \"hidden md:block\", children: /* @__PURE__ */ jsx(StarRating, { rating: Math.round(averageRating), size: \"lg\" }) }),\n        /* @__PURE__ */ jsx(\"div\", { className: \"md:hidden\", children: /* @__PURE__ */ jsx(StarRating, { rating: Math.round(averageRating), size: \"md\" }) }),\n        /* @__PURE__ */ jsxs(\n          \"p\",\n          {\n            className: \"text-gray-600 mt-2 max-md:text-sm max-md:mt-1\",\n            style: { fontFamily: FONTS.light },\n            children: [\n              \"\\uCD1D \",\n              reviews.length,\n              \"\\uAC1C\\uC758 \\uB9AC\\uBDF0\"\n            ]\n          }\n        )\n      ] }) }),\n      /* @__PURE__ */ jsx(\"div\", { children: /* @__PURE__ */ jsx(\"div\", { className: \"space-y-2 max-md:space-y-1\", children: ratingDistribution.map(({ rating, count, percentage }) => /* @__PURE__ */ jsxs(\n        \"div\",\n        {\n          className: \"flex items-center space-x-2 max-md:space-x-1\",\n          children: [\n            /* @__PURE__ */ jsxs(\n              \"span\",\n              {\n                className: \"text-sm text-gray-600 w-8 max-md:text-xs max-md:w-6\",\n                style: { fontFamily: FONTS.light },\n                children: [\n                  rating,\n                  \"\\uC810\"\n                ]\n              }\n            ),\n            /* @__PURE__ */ jsx(\"div\", { className: \"flex-1 bg-gray-200 rounded-full h-2 max-md:h-1.5\", children: /* @__PURE__ */ jsx(\n              \"div\",\n              {\n                className: \"bg-yellow-400 h-2 rounded-full transition-all duration-500 max-md:h-1.5\",\n                style: { width: `${percentage}%` }\n              }\n            ) }),\n            /* @__PURE__ */ jsx(\n              \"span\",\n              {\n                className: \"text-sm text-gray-600 w-8 max-md:text-xs max-md:w-6\",\n                style: { fontFamily: FONTS.light },\n                children: count\n              }\n            )\n          ]\n        },\n        rating\n      )) }) })\n    ] })\n  ] });\n};\nvar Reviews = () => {\n  const [sortBy, setSortBy] = useState(\n    \"latest\"\n  );\n  const [filterRating, setFilterRating] = useState(null);\n  const reviewsData = [\n    {\n      id: 1,\n      name: \"\\uC548\\uC6B0\\uC900\",\n      role: \"AI Artist, TA\",\n      rating: 5,\n      date: \"2024.11.15\",\n      content: \"\\uC774 \\uAC15\\uC758\\uB97C \\uB4E4\\uC5B4\\uC11C \\uCDE8\\uC5C5\\uD55C \\uB9CC\\uD07C \\uC544\\uC8FC \\uC88B\\uC740 \\uAC15\\uC758\\uB77C\\uACE0 \\uC0DD\\uAC01\\uB429\\uB2C8\\uB2E4. \\uAD11\\uACE0\\uCABD\\uC740 \\uC774 \\uAC15\\uC758\\uB97C \\uB4E4\\uC73C\\uBA74 AI\\uB85C \\uD560 \\uC218 \\uC788\\uB294 \\uB300\\uBD80\\uBD84\\uC744 \\uC751\\uC6A9\\uD560 \\uC218 \\uC788\\uB2E4\\uACE0 \\uC0DD\\uAC01\\uB429\\uB2C8\\uB2E4. \\uC2E4\\uBB34\\uC5D0\\uC11C \\uBC14\\uB85C \\uC368\\uBA39\\uC744 \\uC218 \\uC788\\uB294 \\uC6CC\\uD06C\\uD50C\\uB85C\\uC6B0\\uB4E4\\uC774 \\uC815\\uB9D0 \\uC720\\uC6A9\\uD588\\uC5B4\\uC694. \\uD2B9\\uD788 ComfyUI\\uC758 \\uBCF5\\uC7A1\\uD55C \\uB178\\uB4DC \\uC2DC\\uC2A4\\uD15C\\uC744 \\uC774\\uD574\\uD558\\uAE30 \\uC27D\\uAC8C \\uC124\\uBA85\\uD574\\uC8FC\\uC154\\uC11C \\uAC10\\uC0AC\\uD588\\uC2B5\\uB2C8\\uB2E4.\",\n      helpful: 45,\n      verified: true\n    },\n    {\n      id: 2,\n      name: \"\\uC218\\uAC15\\uC0DD K\",\n      role: \"\\uB9C8\\uCF00\\uD130\",\n      rating: 5,\n      date: \"2024.11.10\",\n      content: \"\\uC88B\\uC558\\uB358 \\uC810\\uC740 \\uAC15\\uC758\\uC5D0\\uC11C \\uC2DC\\uC5F0\\uC73C\\uB85C \\uBCF4\\uC5EC\\uC8FC\\uC2DC\\uB294 \\uBAA8\\uB4E0 \\uC6CC\\uD06C\\uD50C\\uB85C\\uC6B0\\uB97C \\uC0C1\\uC138\\uD788 \\uB2E4\\uB904\\uC8FC\\uC2E0 \\uD6C4 \\uC804\\uBD80 \\uACF5\\uC720\\uB97C \\uD574\\uC8FC\\uC2E0\\uB2E4\\uB294 \\uC810\\uC774\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uB2E8\\uC21C\\uD788 \\uB178\\uB4DC\\uB4E4\\uC758 \\uAE30\\uB2A5\\uC744 \\uB098\\uC5F4\\uD558\\uB294 \\uAC83\\uC774 \\uC544\\uB2C8\\uB77C, \\uC2E4\\uC81C \\uB9C8\\uCF00\\uD305\\uC5D0 \\uC5B4\\uB5BB\\uAC8C \\uD65C\\uC6A9\\uD560 \\uC218 \\uC788\\uB294\\uC9C0, \\uC2DC\\uAC04 \\uD6A8\\uC728\\uC131\\uC740 \\uC5B4\\uB5BB\\uAC8C \\uB192\\uC77C \\uC218 \\uC788\\uB294\\uC9C0 \\uB4F1 \\uC2E4\\uBB34\\uC790\\uC758 \\uAD00\\uC810\\uC5D0\\uC11C \\uD544\\uC694\\uD55C \\uB0B4\\uC6A9\\uC744 \\uC0C1\\uC138\\uD558\\uAC8C \\uC54C\\uB824\\uC8FC\\uC168\\uC2B5\\uB2C8\\uB2E4.\",\n      helpful: 38,\n      verified: true\n    },\n    {\n      id: 3,\n      name: \"\\uAE40\\uB2E4\\uC560\",\n      role: \"\\uC758\\uB958\\uBE0C\\uB79C\\uB4DC \\uC885\\uC0AC\\uC790\",\n      rating: 5,\n      date: \"2024.11.08\",\n      content: \"\\uC2E4\\uBB34\\uC6A9\\uC73C\\uB85C \\uC88B\\uC558\\uB358 \\uAC15\\uC758\\uAC19\\uC544\\uC694. \\uB2E4\\uB978\\uBD84\\uB4E4 \\uAC15\\uC758\\uB294 \\uC774\\uB860\\uC124\\uBA85\\uBD80\\uD130 \\uAE4A\\uC774\\uC788\\uB294 \\uC124\\uBA85\\uC744 \\uCD94\\uAD6C\\uD558\\uC2DC\\uB294 \\uBD84\\uB4E4\\uC774 \\uB9CE\\uC558\\uB294\\uB370, \\uB108\\uBB34 \\uBD80\\uC218\\uC801\\uC778 \\uC124\\uBA85\\uC740 \\uC880 \\uC5B4\\uB835\\uAC70\\uB4E0\\uC694 \\u314E\\u314E \\uD544\\uC694\\uD55C\\uAC83\\uB9CC \\uB531\\uB531 \\uB4E3\\uAE30 \\uB108\\uBB34\\uC88B\\uC740\\uB290\\uB08C. \\uBE0C\\uB79C\\uB4DC \\uC774\\uBBF8\\uC9C0 \\uC81C\\uC791\\uC5D0 \\uBC14\\uB85C \\uD65C\\uC6A9\\uD560 \\uC218 \\uC788\\uC5B4\\uC11C \\uC5C5\\uBB34 \\uD6A8\\uC728\\uC774 \\uD06C\\uAC8C \\uD5A5\\uC0C1\\uB410\\uC2B5\\uB2C8\\uB2E4.\",\n      helpful: 42,\n      verified: true\n    },\n    {\n      id: 4,\n      name: \"\\uC218\\uAC15\\uC0DD J\",\n      role: \"\\uB9C8\\uCF00\\uD130\",\n      rating: 5,\n      date: \"2024.11.05\",\n      content: \"\\uB8E8\\uC6C0\\uB2D8\\uC758 ComfyUI \\uAC15\\uC758\\uB294 \\uB9C8\\uCF00\\uD305 \\uC2E4\\uBB34\\uC790\\uC5D0\\uAC8C \\uD544\\uC218\\uC801\\uC778 AI \\uC774\\uBBF8\\uC9C0 \\uC0DD\\uC131 \\uAE30\\uC220\\uC744 \\uCCB4\\uACC4\\uC801\\uC73C\\uB85C \\uC804\\uB2EC\\uD558\\uB294 \\uAC15\\uC758\\uC778 \\uAC83 \\uAC19\\uC2B5\\uB2C8\\uB2E4. \\uC2E4\\uBB34\\uC5D0\\uC11C \\uC989\\uC2DC \\uD65C\\uC6A9\\uD560 \\uC218 \\uC788\\uB294 \\uC6CC\\uD06C\\uD50C\\uB85C\\uC6B0 \\uAE30\\uBC18\\uC73C\\uB85C \\uC54C\\uB824\\uC8FC\\uC154\\uC11C \\uB354\\uC6B1 \\uCC3D\\uC758\\uC801\\uC774\\uACE0 \\uD6A8\\uC728\\uC801\\uC778 \\uB9C8\\uCF00\\uD305 \\uC774\\uBBF8\\uC9C0 \\uC81C\\uC791\\uC774 \\uAC00\\uB2A5\\uD574\\uC84C\\uC2B5\\uB2C8\\uB2E4.\",\n      helpful: 33,\n      verified: true\n    },\n    {\n      id: 5,\n      name: \"\\uC774\\uC131\\uBBFC\",\n      role: \"\\uD504\\uB9AC\\uB79C\\uC11C \\uB514\\uC790\\uC774\\uB108\",\n      rating: 5,\n      date: \"2024.11.02\",\n      content: \"ComfyUI \\uCC98\\uC74C \\uC811\\uD588\\uB294\\uB370 \\uC815\\uB9D0 \\uC5B4\\uB824\\uC6E0\\uC5B4\\uC694. \\uD558\\uC9C0\\uB9CC \\uAC15\\uC758\\uB97C \\uCC28\\uADFC\\uCC28\\uADFC \\uB530\\uB77C\\uD558\\uB2C8\\uAE4C \\uC774\\uD574\\uAC00 \\uB410\\uC2B5\\uB2C8\\uB2E4. \\uD2B9\\uD788 ControlNet \\uBD80\\uBD84\\uC774 \\uC2E0\\uAE30\\uD588\\uC5B4\\uC694. \\uD074\\uB77C\\uC774\\uC5B8\\uD2B8 \\uC694\\uAD6C\\uC0AC\\uD56D\\uC5D0 \\uB9DE\\uCDB0 \\uC815\\uD655\\uD55C \\uC774\\uBBF8\\uC9C0\\uB97C \\uC0DD\\uC131\\uD560 \\uC218 \\uC788\\uAC8C \\uB418\\uC5B4\\uC11C \\uC791\\uC5C5 \\uC2DC\\uAC04\\uC774 \\uC808\\uBC18\\uC73C\\uB85C \\uC904\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uC815\\uB9D0 \\uAC10\\uC0AC\\uD569\\uB2C8\\uB2E4!\",\n      helpful: 29,\n      verified: true\n    },\n    {\n      id: 6,\n      name: \"\\uBC15\\uC9C0\\uD6C8\",\n      role: \"\\uAD11\\uACE0 \\uB300\\uD589\\uC0AC \\uD06C\\uB9AC\\uC5D0\\uC774\\uD130\",\n      rating: 4,\n      date: \"2024.10.28\",\n      content: \"\\uAC15\\uC758 \\uB0B4\\uC6A9\\uC740 \\uC815\\uB9D0 \\uC88B\\uC558\\uC2B5\\uB2C8\\uB2E4. \\uB2E4\\uB9CC \\uCD08\\uBCF4\\uC790\\uC5D0\\uAC8C\\uB294 \\uC870\\uAE08 \\uC5B4\\uB824\\uC6B8 \\uC218 \\uC788\\uC744 \\uAC83 \\uAC19\\uC544\\uC694. \\uADF8\\uB798\\uB3C4 \\uBC18\\uBCF5\\uD574\\uC11C \\uB4E4\\uC73C\\uBA74 \\uCDA9\\uBD84\\uD788 \\uC774\\uD574\\uD560 \\uC218 \\uC788\\uACE0, \\uC2E4\\uC81C \\uAD11\\uACE0 \\uC81C\\uC791\\uC5D0 \\uD65C\\uC6A9\\uD560 \\uC218 \\uC788\\uB294 \\uACE0\\uAE09 \\uAE30\\uBC95\\uB4E4\\uC744 \\uBC30\\uC6B8 \\uC218 \\uC788\\uC5B4\\uC11C \\uB9CC\\uC871\\uD569\\uB2C8\\uB2E4. \\uC6CC\\uD06C\\uD50C\\uB85C\\uC6B0 \\uD30C\\uC77C \\uC81C\\uACF5\\uB3C4 \\uD070 \\uB3C4\\uC6C0\\uC774 \\uB410\\uC5B4\\uC694.\",\n      helpful: 25,\n      verified: true\n    },\n    {\n      id: 7,\n      name: \"\\uCD5C\\uC5F0\\uD76C\",\n      role: \"\\uC2A4\\uD0C0\\uD2B8\\uC5C5 \\uB9C8\\uCF00\\uD305 \\uD300\\uC7A5\",\n      rating: 5,\n      date: \"2024.10.25\",\n      content: \"\\uC2A4\\uD0C0\\uD2B8\\uC5C5\\uC5D0\\uC11C \\uC608\\uC0B0\\uC774 \\uBD80\\uC871\\uD574\\uC11C \\uD56D\\uC0C1 \\uC774\\uBBF8\\uC9C0 \\uC18C\\uC2A4 \\uAD6C\\uD558\\uAE30\\uAC00 \\uC5B4\\uB824\\uC6E0\\uB294\\uB370, \\uC774 \\uAC15\\uC758 \\uB355\\uBD84\\uC5D0 \\uC6B0\\uB9AC\\uB9CC\\uC758 \\uBE0C\\uB79C\\uB4DC \\uC774\\uBBF8\\uC9C0\\uB97C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uAC8C \\uB410\\uC5B4\\uC694. \\uD2B9\\uD788 Inpainting \\uAE30\\uB2A5\\uC73C\\uB85C \\uAE30\\uC874 \\uC774\\uBBF8\\uC9C0\\uB97C \\uC6B0\\uB9AC \\uBE0C\\uB79C\\uB4DC\\uC5D0 \\uB9DE\\uAC8C \\uC218\\uC815\\uD558\\uB294 \\uBC29\\uBC95\\uC774 \\uC815\\uB9D0 \\uC720\\uC6A9\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uD300\\uC6D0\\uB4E4\\uB3C4 \\uBAA8\\uB450 \\uB9CC\\uC871\\uD574\\uD569\\uB2C8\\uB2E4!\",\n      helpful: 36,\n      verified: true\n    },\n    {\n      id: 8,\n      name: \"\\uAE40\\uD0DC\\uD604\",\n      role: \"\\uAC8C\\uC784 \\uD68C\\uC0AC \\uC544\\uD2F0\\uC2A4\\uD2B8\",\n      rating: 5,\n      date: \"2024.10.22\",\n      content: \"\\uAC8C\\uC784 \\uC5C5\\uACC4\\uC5D0\\uC11C \\uCEE8\\uC149 \\uC544\\uD2B8 \\uC791\\uC5C5\\uC744 \\uD558\\uACE0 \\uC788\\uB294\\uB370, ComfyUI\\uB97C \\uD1B5\\uD574 \\uC544\\uC774\\uB514\\uC5B4\\uB97C \\uBE60\\uB974\\uAC8C \\uC2DC\\uAC01\\uD654\\uD560 \\uC218 \\uC788\\uAC8C \\uB410\\uC5B4\\uC694. \\uD2B9\\uD788 IP-Adapter\\uB97C \\uD65C\\uC6A9\\uD55C \\uC2A4\\uD0C0\\uC77C \\uC804\\uC774 \\uAE30\\uBC95\\uC774 \\uC815\\uB9D0 \\uC778\\uC0C1\\uC801\\uC774\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uAE30\\uC874 \\uCEE8\\uC149 \\uC544\\uD2B8 \\uC81C\\uC791 \\uC2DC\\uAC04\\uC774 70% \\uC774\\uC0C1 \\uB2E8\\uCD95\\uB410\\uC5B4\\uC694.\",\n      helpful: 31,\n      verified: true\n    },\n    {\n      id: 9,\n      name: \"\\uC815\\uC218\\uC5F0\",\n      role: \"\\uCF58\\uD150\\uCE20 \\uD06C\\uB9AC\\uC5D0\\uC774\\uD130\",\n      rating: 4,\n      date: \"2024.10.18\",\n      content: \"\\uC720\\uD29C\\uBE0C \\uC378\\uB124\\uC77C\\uC774\\uB098 \\uC778\\uC2A4\\uD0C0\\uADF8\\uB7A8 \\uD3EC\\uC2A4\\uD305\\uC6A9 \\uC774\\uBBF8\\uC9C0 \\uB9CC\\uB4E4 \\uB54C \\uD56D\\uC0C1 \\uACE0\\uBBFC\\uC774 \\uB9CE\\uC558\\uB294\\uB370, \\uC774\\uC81C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC5B4\\uC11C \\uB108\\uBB34 \\uC88B\\uC544\\uC694. \\uAC15\\uC758\\uAC00 \\uB2E8\\uACC4\\uBCC4\\uB85C \\uC798 \\uAD6C\\uC131\\uB418\\uC5B4 \\uC788\\uC5B4\\uC11C \\uB530\\uB77C\\uD558\\uAE30 \\uC26C\\uC6E0\\uC2B5\\uB2C8\\uB2E4. \\uB2E4\\uB9CC \\uB80C\\uB354\\uB9C1 \\uC2DC\\uAC04\\uC774 \\uC880 \\uC624\\uB798 \\uAC78\\uB9AC\\uB294 \\uAC8C \\uC544\\uC26C\\uC6CC\\uC694. \\uADF8\\uB798\\uB3C4 \\uACB0\\uACFC\\uBB3C\\uC740 \\uC815\\uB9D0 \\uB9CC\\uC871\\uC2A4\\uB7FD\\uC2B5\\uB2C8\\uB2E4!\",\n      helpful: 22,\n      verified: true\n    },\n    {\n      id: 10,\n      name: \"\\uC624\\uC131\\uC9C4\",\n      role: \"\\uC6F9 \\uAC1C\\uBC1C\\uC790\",\n      rating: 5,\n      date: \"2024.10.15\",\n      content: \"\\uAC1C\\uBC1C\\uC790\\uC778\\uB370 \\uB514\\uC790\\uC778 \\uAC10\\uAC01\\uC774 \\uBD80\\uC871\\uD574\\uC11C \\uD56D\\uC0C1 \\uACE0\\uBBFC\\uC774\\uC5C8\\uC5B4\\uC694. \\uC774 \\uAC15\\uC758\\uB97C \\uD1B5\\uD574 \\uC6F9\\uC0AC\\uC774\\uD2B8\\uB098 \\uC571\\uC5D0 \\uB4E4\\uC5B4\\uAC08 \\uC774\\uBBF8\\uC9C0\\uB4E4\\uC744 \\uC9C1\\uC811 \\uC0DD\\uC131\\uD560 \\uC218 \\uC788\\uAC8C \\uB410\\uC2B5\\uB2C8\\uB2E4. \\uD2B9\\uD788 Upscaling \\uAE30\\uBC95\\uC73C\\uB85C \\uACE0\\uD574\\uC0C1\\uB3C4 \\uC774\\uBBF8\\uC9C0\\uB97C \\uB9CC\\uB4DC\\uB294 \\uBC29\\uBC95\\uC774 \\uC815\\uB9D0 \\uC720\\uC6A9\\uD588\\uC5B4\\uC694. \\uD074\\uB77C\\uC774\\uC5B8\\uD2B8 \\uD504\\uB85C\\uC81D\\uD2B8\\uC5D0 \\uBC14\\uB85C \\uC801\\uC6A9\\uD558\\uACE0 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      helpful: 28,\n      verified: true\n    },\n    {\n      id: 11,\n      name: \"\\uC774\\uBBF8\\uACBD\",\n      role: \"\\uC628\\uB77C\\uC778 \\uC1FC\\uD551\\uBAB0 \\uC6B4\\uC601\\uC790\",\n      rating: 5,\n      date: \"2024.10.12\",\n      content: \"\\uC1FC\\uD551\\uBAB0 \\uC0C1\\uD488 \\uC774\\uBBF8\\uC9C0 \\uC81C\\uC791\\uC5D0 \\uACE0\\uBBFC\\uC774 \\uB9CE\\uC558\\uB294\\uB370, \\uC774 \\uAC15\\uC758\\uB97C \\uB4E3\\uACE0 \\uB098\\uC11C \\uC9C1\\uC811 \\uC81C\\uC791\\uD560 \\uC218 \\uC788\\uAC8C \\uB410\\uC5B4\\uC694. \\uD2B9\\uD788 \\uC0C1\\uD488\\uC744 \\uB2E4\\uC591\\uD55C \\uBC30\\uACBD\\uC5D0 \\uD569\\uC131\\uD558\\uB294 \\uAE30\\uBC95\\uC774 \\uC815\\uB9D0 \\uB3C4\\uC6C0\\uC774 \\uB410\\uC2B5\\uB2C8\\uB2E4. \\uC774\\uC81C \\uCD2C\\uC601 \\uBE44\\uC6A9 \\uAC71\\uC815 \\uC5C6\\uC774 \\uB2E4\\uC591\\uD55C \\uC0C1\\uD488 \\uC774\\uBBF8\\uC9C0\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC5B4\\uC11C \\uB9E4\\uCD9C\\uB3C4 \\uB298\\uC5C8\\uC5B4\\uC694!\",\n      helpful: 34,\n      verified: true\n    },\n    {\n      id: 12,\n      name: \"\\uD55C\\uBBFC\\uC218\",\n      role: \"\\uAD11\\uACE0 \\uAE30\\uD68D\\uC790\",\n      rating: 4,\n      date: \"2024.10.08\",\n      content: \"\\uAD11\\uACE0 \\uAE30\\uD68D \\uB2E8\\uACC4\\uC5D0\\uC11C \\uC544\\uC774\\uB514\\uC5B4\\uB97C \\uAD6C\\uCCB4\\uD654\\uD558\\uB294 \\uB370 \\uC815\\uB9D0 \\uB3C4\\uC6C0\\uC774 \\uB410\\uC2B5\\uB2C8\\uB2E4. \\uD074\\uB77C\\uC774\\uC5B8\\uD2B8\\uC5D0\\uAC8C \\uC81C\\uC548\\uD560 \\uB54C \\uD14D\\uC2A4\\uD2B8\\uB85C\\uB9CC \\uC124\\uBA85\\uD558\\uB358 \\uAC83\\uC744 \\uC774\\uC81C \\uC774\\uBBF8\\uC9C0\\uB85C \\uBCF4\\uC5EC\\uC904 \\uC218 \\uC788\\uC5B4\\uC11C \\uC18C\\uD1B5\\uC774 \\uD6E8\\uC52C \\uC6D0\\uD65C\\uD574\\uC84C\\uC5B4\\uC694. \\uAC15\\uC758 \\uB0B4\\uC6A9\\uB3C4 \\uCCB4\\uACC4\\uC801\\uC774\\uACE0 \\uC2E4\\uC2B5 \\uC704\\uC8FC\\uB77C\\uC11C \\uC88B\\uC558\\uC2B5\\uB2C8\\uB2E4.\",\n      helpful: 26,\n      verified: true\n    },\n    {\n      id: 13,\n      name: \"\\uC724\\uC11C\\uC601\",\n      role: \"UI/UX \\uB514\\uC790\\uC774\\uB108\",\n      rating: 5,\n      date: \"2024.10.05\",\n      content: \"UI \\uB514\\uC790\\uC778\\uD560 \\uB54C \\uD544\\uC694\\uD55C \\uC544\\uC774\\uCF58\\uC774\\uB098 \\uC77C\\uB7EC\\uC2A4\\uD2B8\\uB97C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uAC8C \\uB410\\uC5B4\\uC694. \\uD2B9\\uD788 \\uC77C\\uAD00\\uB41C \\uC2A4\\uD0C0\\uC77C\\uC744 \\uC720\\uC9C0\\uD558\\uBA74\\uC11C \\uB2E4\\uC591\\uD55C \\uBCC0\\uD615\\uC744 \\uB9CC\\uB4DC\\uB294 \\uBC29\\uBC95\\uC774 \\uC815\\uB9D0 \\uC778\\uC0C1\\uC801\\uC774\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uB514\\uC790\\uC778 \\uC2DC\\uC2A4\\uD15C \\uAD6C\\uCD95\\uC5D0\\uB3C4 \\uD070 \\uB3C4\\uC6C0\\uC774 \\uB410\\uACE0, \\uC791\\uC5C5 \\uD6A8\\uC728\\uC131\\uC774 \\uB9CE\\uC774 \\uD5A5\\uC0C1\\uB410\\uC5B4\\uC694.\",\n      helpful: 37,\n      verified: true\n    },\n    {\n      id: 14,\n      name: \"\\uC870\\uD604\\uC6B0\",\n      role: \"\\uCD9C\\uD310\\uC0AC \\uD3B8\\uC9D1\\uC790\",\n      rating: 5,\n      date: \"2024.10.02\",\n      content: \"\\uCC45 \\uD45C\\uC9C0\\uB098 \\uB0B4\\uC9C0\\uC5D0 \\uB4E4\\uC5B4\\uAC08 \\uC774\\uBBF8\\uC9C0\\uB97C \\uCC3E\\uAE30 \\uC5B4\\uB824\\uC6E0\\uB294\\uB370, \\uC774\\uC81C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC5B4\\uC11C \\uB108\\uBB34 \\uC88B\\uC544\\uC694. \\uD2B9\\uD788 \\uD14D\\uC2A4\\uD2B8\\uC640 \\uC774\\uBBF8\\uC9C0\\uB97C \\uC870\\uD654\\uB86D\\uAC8C \\uBC30\\uCE58\\uD558\\uB294 \\uAE30\\uBC95\\uC774 \\uC720\\uC6A9\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uC800\\uC791\\uAD8C \\uAC71\\uC815 \\uC5C6\\uC774 \\uC6D0\\uD558\\uB294 \\uC774\\uBBF8\\uC9C0\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC5B4\\uC11C \\uCD9C\\uD310 \\uC5C5\\uBB34\\uAC00 \\uD6E8\\uC52C \\uC218\\uC6D4\\uD574\\uC84C\\uC5B4\\uC694.\",\n      helpful: 30,\n      verified: true\n    },\n    {\n      id: 15,\n      name: \"\\uC784\\uC218\\uBE48\",\n      role: \"\\uCE74\\uD398 \\uC0AC\\uC7A5\",\n      rating: 4,\n      date: \"2024.09.28\",\n      content: \"\\uCE74\\uD398 \\uD64D\\uBCF4\\uC6A9 \\uC774\\uBBF8\\uC9C0\\uB098 \\uBA54\\uB274\\uD310 \\uC81C\\uC791\\uC5D0 \\uD65C\\uC6A9\\uD558\\uACE0 \\uC788\\uC5B4\\uC694. \\uC804\\uBB38\\uAC00\\uC5D0\\uAC8C \\uB9E1\\uAE30\\uBA74 \\uBE44\\uC6A9\\uC774 \\uB9CE\\uC774 \\uB4E4\\uC5C8\\uB294\\uB370, \\uC774\\uC81C \\uC9C1\\uC811 \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC5B4\\uC11C \\uACBD\\uC81C\\uC801\\uC73C\\uB85C\\uB3C4 \\uB9CE\\uC740 \\uB3C4\\uC6C0\\uC774 \\uB410\\uC2B5\\uB2C8\\uB2E4. \\uB2E4\\uB9CC \\uCC98\\uC74C\\uC5D0\\uB294 \\uC870\\uAE08 \\uC5B4\\uB824\\uC6E0\\uC9C0\\uB9CC, \\uBC18\\uBCF5 \\uC5F0\\uC2B5\\uD558\\uB2C8\\uAE4C \\uC775\\uC219\\uD574\\uC84C\\uC5B4\\uC694. \\uCD94\\uCC9C\\uD569\\uB2C8\\uB2E4!\",\n      helpful: 23,\n      verified: true\n    }\n  ];\n  const filteredAndSortedReviews = reviewsData.filter((review) => filterRating === null || review.rating === filterRating).sort((a, b) => {\n    switch (sortBy) {\n      case \"rating\":\n        return b.rating - a.rating;\n      case \"helpful\":\n        return b.helpful - a.helpful;\n      case \"latest\":\n      default:\n        return new Date(b.date).getTime() - new Date(a.date).getTime();\n    }\n  });\n  return /* @__PURE__ */ jsxs(\"div\", { className: \"max-w-6xl mx-auto p-6 max-md:p-4\", children: [\n    /* @__PURE__ */ jsxs(\"div\", { className: \"mb-8 max-md:mb-6\", children: [\n      /* @__PURE__ */ jsx(\n        \"h2\",\n        {\n          className: \"text-3xl text-gray-900 mb-2 max-md:text-2xl max-md:mb-1\",\n          style: { fontFamily: FONTS.bold },\n          children: \"\\uC218\\uAC15\\uC0DD \\uB9AC\\uBDF0\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"p\",\n        {\n          className: \"text-gray-600 max-md:text-sm\",\n          style: { fontFamily: FONTS.light },\n          children: \"ComfyUI for Real Ads \\uAC15\\uC758\\uC5D0 \\uB300\\uD55C \\uC2E4\\uC81C \\uC218\\uAC15\\uC0DD\\uB4E4\\uC758 \\uC194\\uC9C1\\uD55C \\uD6C4\\uAE30\\uC785\\uB2C8\\uB2E4.\"\n        }\n      )\n    ] }),\n    /* @__PURE__ */ jsx(ReviewStats, { reviews: reviewsData }),\n    /* @__PURE__ */ jsx(\"div\", { className: \"bg-white border border-gray-200 rounded-lg p-4 mb-6 max-md:p-3 max-md:mb-4\", children: /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col md:flex-row md:items-center md:justify-between space-y-4 md:space-y-0 max-md:space-y-3\", children: [\n      /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center space-x-4 max-md:space-x-2\", children: [\n        /* @__PURE__ */ jsx(\n          \"label\",\n          {\n            className: \"text-sm text-gray-700 max-md:text-xs\",\n            style: { fontFamily: FONTS.medium },\n            children: \"\\uC815\\uB82C:\"\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          \"select\",\n          {\n            value: sortBy,\n            onChange: (e) => setSortBy(e.target.value),\n            className: \"px-3 py-2 border border-gray-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 max-md:px-2 max-md:py-1 max-md:text-xs\",\n            style: { fontFamily: FONTS.light },\n            children: [\n              /* @__PURE__ */ jsx(\"option\", { value: \"latest\", children: \"\\uCD5C\\uC2E0\\uC21C\" }),\n              /* @__PURE__ */ jsx(\"option\", { value: \"rating\", children: \"\\uD3C9\\uC810\\uC21C\" }),\n              /* @__PURE__ */ jsx(\"option\", { value: \"helpful\", children: \"\\uB3C4\\uC6C0\\uC21C\" })\n            ]\n          }\n        )\n      ] }),\n      /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col space-y-2 md:flex-row md:items-center md:space-y-0 md:space-x-4 max-md:space-y-2\", children: [\n        /* @__PURE__ */ jsx(\n          \"label\",\n          {\n            className: \"text-sm text-gray-700 max-md:text-xs\",\n            style: { fontFamily: FONTS.medium },\n            children: \"\\uD3C9\\uC810 \\uD544\\uD130:\"\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-wrap gap-2 max-md:gap-1\", children: [\n          /* @__PURE__ */ jsx(\n            \"button\",\n            {\n              onClick: () => setFilterRating(null),\n              className: `px-3 py-1 rounded-full text-sm transition-colors max-md:px-2 max-md:text-xs ${filterRating === null ? \"bg-blue-500 text-white\" : \"bg-gray-200 text-gray-700 hover:bg-gray-300\"}`,\n              style: { fontFamily: FONTS.medium },\n              children: \"\\uC804\\uCCB4\"\n            }\n          ),\n          [5, 4, 3, 2, 1].map((rating) => /* @__PURE__ */ jsxs(\n            \"button\",\n            {\n              onClick: () => setFilterRating(rating),\n              className: `px-3 py-1 rounded-full text-sm transition-colors max-md:px-2 max-md:text-xs ${filterRating === rating ? \"bg-blue-500 text-white\" : \"bg-gray-200 text-gray-700 hover:bg-gray-300\"}`,\n              style: { fontFamily: FONTS.medium },\n              children: [\n                rating,\n                \"\\uC810\"\n              ]\n            },\n            rating\n          ))\n        ] })\n      ] })\n    ] }) }),\n    /* @__PURE__ */ jsx(\"div\", { className: \"space-y-4 max-h-[800px] overflow-y-auto pr-2 max-md:max-h-[600px] max-md:pr-1\", children: filteredAndSortedReviews.map((review) => /* @__PURE__ */ jsx(ReviewItem, { review }, review.id)) }),\n    filteredAndSortedReviews.length === 0 && /* @__PURE__ */ jsx(\"div\", { className: \"text-center py-12 max-md:py-8\", children: /* @__PURE__ */ jsx(\n      \"p\",\n      {\n        className: \"text-gray-500 max-md:text-sm\",\n        style: { fontFamily: FONTS.light },\n        children: \"\\uC120\\uD0DD\\uD55C \\uC870\\uAC74\\uC5D0 \\uB9DE\\uB294 \\uB9AC\\uBDF0\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\"\n      }\n    ) })\n  ] });\n};\n\nexport {\n  Reviews\n};\n", "import {\n  PaymentButton\n} from \"./chunk-SDKSBXQ2.mjs\";\n\n// src/payments/NeedPayment.tsx\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction NeedPayment() {\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      style: {\n        fontSize: 20,\n        display: \"flex\",\n        gap: 12,\n        flexDirection: \"column\",\n        alignItems: \"center\",\n        whiteSpace: \"nowrap\"\n      },\n      children: [\n        \"\\uAC15\\uC758 \\uAD6C\\uB9E4\\uAC00 \\uD544\\uC694\\uD569\\uB2C8\\uB2E4\",\n        /* @__PURE__ */ jsx(PaymentButton, {})\n      ]\n    }\n  );\n}\n\nexport {\n  NeedPayment\n};\n", "// src/class/Arrow.tsx\nimport { jsx } from \"react/jsx-runtime\";\nfunction Arrow({ className }) {\n  return /* @__PURE__ */ jsx(\n    \"svg\",\n    {\n      viewBox: \"0 0 24 24\",\n      strokeWidth: \"2\",\n      fill: \"none\",\n      xmlns: \"http://www.w3.org/2000/svg\",\n      color: \"#005DFA\",\n      className,\n      children: /* @__PURE__ */ jsx(\n        \"path\",\n        {\n          d: \"M6.00005 19L19 5.99996M19 5.99996V18.48M19 5.99996H6.52005\",\n          stroke: \"#005DFA\",\n          strokeWidth: \"2\",\n          strokeLinecap: \"round\",\n          strokeLinejoin: \"round\"\n        }\n      )\n    }\n  );\n}\n\nexport {\n  Arrow\n};\n", "import {\n  __async,\n  __objRest,\n  __pow,\n  __spreadProps,\n  __spreadValues,\n  __superGet\n} from \"./chunk-JWK35I2R.mjs\";\n\n// node_modules/.pnpm/@mux+mux-player-react@2.9.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@mux/mux-player-react/dist/index.mjs\nimport y4, { useEffect as ue5 } from \"react\";\n\n// node_modules/.pnpm/mux-embed@5.2.1/node_modules/mux-embed/dist/mux.mjs\nvar $r = Object.create;\nvar ct = Object.defineProperty;\nvar Zr = Object.getOwnPropertyDescriptor;\nvar ei = Object.getOwnPropertyNames;\nvar ti = Object.getPrototypeOf;\nvar ri = Object.prototype.hasOwnProperty;\nvar ft = function(r10, e) {\n  return function() {\n    return r10 && (e = r10(r10 = 0)), e;\n  };\n};\nvar H = function(r10, e) {\n  return function() {\n    return e || r10((e = { exports: {} }).exports, e), e.exports;\n  };\n};\nvar ii = function(r10, e, t2, a2) {\n  if (e && typeof e == \"object\" || typeof e == \"function\") for (var i2 = ei(e), n2 = 0, o = i2.length, s; n2 < o; n2++) s = i2[n2], !ri.call(r10, s) && s !== t2 && ct(r10, s, { get: function(f) {\n    return e[f];\n  }.bind(null, s), enumerable: !(a2 = Zr(e, s)) || a2.enumerable });\n  return r10;\n};\nvar B = function(r10, e, t2) {\n  return t2 = r10 != null ? $r(ti(r10)) : {}, ii(e || !r10 || !r10.__esModule ? ct(t2, \"default\", { value: r10, enumerable: true }) : t2, r10);\n};\nvar J = H(function(za, ht2) {\n  var Te4;\n  typeof window != \"undefined\" ? Te4 = window : typeof global != \"undefined\" ? Te4 = global : typeof self != \"undefined\" ? Te4 = self : Te4 = {};\n  ht2.exports = Te4;\n});\nfunction C(r10) {\n  \"@swc/helpers - typeof\";\n  return r10 && typeof Symbol != \"undefined\" && r10.constructor === Symbol ? \"symbol\" : typeof r10;\n}\nvar ke = ft(function() {\n});\nvar gt = H(function(yt4, Ae4) {\n  ke();\n  (function(r10, e) {\n    \"use strict\";\n    typeof define == \"function\" && define.amd ? define(e) : typeof Ae4 == \"object\" && Ae4.exports ? Ae4.exports = e() : r10.log = e();\n  })(yt4, function() {\n    \"use strict\";\n    var r10 = function() {\n    }, e = \"undefined\", t2 = (typeof window == \"undefined\" ? \"undefined\" : C(window)) !== e && C(window.navigator) !== e && /Trident\\/|MSIE /.test(window.navigator.userAgent), a2 = [\"trace\", \"debug\", \"info\", \"warn\", \"error\"];\n    function i2(l, w2) {\n      var D3 = l[w2];\n      if (typeof D3.bind == \"function\") return D3.bind(l);\n      try {\n        return Function.prototype.bind.call(D3, l);\n      } catch (p3) {\n        return function() {\n          return Function.prototype.apply.apply(D3, [l, arguments]);\n        };\n      }\n    }\n    function n2() {\n      console.log && (console.log.apply ? console.log.apply(console, arguments) : Function.prototype.apply.apply(console.log, [console, arguments])), console.trace && console.trace();\n    }\n    function o(l) {\n      return l === \"debug\" && (l = \"log\"), (typeof console == \"undefined\" ? \"undefined\" : C(console)) === e ? false : l === \"trace\" && t2 ? n2 : console[l] !== void 0 ? i2(console, l) : console.log !== void 0 ? i2(console, \"log\") : r10;\n    }\n    function s(l, w2) {\n      for (var D3 = 0; D3 < a2.length; D3++) {\n        var p3 = a2[D3];\n        this[p3] = D3 < l ? r10 : this.methodFactory(p3, l, w2);\n      }\n      this.log = this.debug;\n    }\n    function f(l, w2, D3) {\n      return function() {\n        (typeof console == \"undefined\" ? \"undefined\" : C(console)) !== e && (s.call(this, w2, D3), this[l].apply(this, arguments));\n      };\n    }\n    function h3(l, w2, D3) {\n      return o(l) || f.apply(this, arguments);\n    }\n    function T3(l, w2, D3) {\n      var p3 = this, _3;\n      w2 = w2 == null ? \"WARN\" : w2;\n      var c4 = \"loglevel\";\n      typeof l == \"string\" ? c4 += \":\" + l : (typeof l == \"undefined\" ? \"undefined\" : C(l)) === \"symbol\" && (c4 = void 0);\n      function u3(m3) {\n        var q3 = (a2[m3] || \"silent\").toUpperCase();\n        if (!((typeof window == \"undefined\" ? \"undefined\" : C(window)) === e || !c4)) {\n          try {\n            window.localStorage[c4] = q3;\n            return;\n          } catch (P2) {\n          }\n          try {\n            window.document.cookie = encodeURIComponent(c4) + \"=\" + q3 + \";\";\n          } catch (P2) {\n          }\n        }\n      }\n      function y5() {\n        var m3;\n        if (!((typeof window == \"undefined\" ? \"undefined\" : C(window)) === e || !c4)) {\n          try {\n            m3 = window.localStorage[c4];\n          } catch (L2) {\n          }\n          if ((typeof m3 == \"undefined\" ? \"undefined\" : C(m3)) === e) try {\n            var q3 = window.document.cookie, P2 = q3.indexOf(encodeURIComponent(c4) + \"=\");\n            P2 !== -1 && (m3 = /^([^;]+)/.exec(q3.slice(P2))[1]);\n          } catch (L2) {\n          }\n          return p3.levels[m3] === void 0 && (m3 = void 0), m3;\n        }\n      }\n      function E4() {\n        if (!((typeof window == \"undefined\" ? \"undefined\" : C(window)) === e || !c4)) {\n          try {\n            window.localStorage.removeItem(c4);\n            return;\n          } catch (m3) {\n          }\n          try {\n            window.document.cookie = encodeURIComponent(c4) + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC\";\n          } catch (m3) {\n          }\n        }\n      }\n      p3.name = l, p3.levels = { TRACE: 0, DEBUG: 1, INFO: 2, WARN: 3, ERROR: 4, SILENT: 5 }, p3.methodFactory = D3 || h3, p3.getLevel = function() {\n        return _3;\n      }, p3.setLevel = function(m3, q3) {\n        if (typeof m3 == \"string\" && p3.levels[m3.toUpperCase()] !== void 0 && (m3 = p3.levels[m3.toUpperCase()]), typeof m3 == \"number\" && m3 >= 0 && m3 <= p3.levels.SILENT) {\n          if (_3 = m3, q3 !== false && u3(m3), s.call(p3, m3, l), (typeof console == \"undefined\" ? \"undefined\" : C(console)) === e && m3 < p3.levels.SILENT) return \"No console available for logging\";\n        } else throw \"log.setLevel() called with invalid level: \" + m3;\n      }, p3.setDefaultLevel = function(m3) {\n        w2 = m3, y5() || p3.setLevel(m3, false);\n      }, p3.resetLevel = function() {\n        p3.setLevel(w2, false), E4();\n      }, p3.enableAll = function(m3) {\n        p3.setLevel(p3.levels.TRACE, m3);\n      }, p3.disableAll = function(m3) {\n        p3.setLevel(p3.levels.SILENT, m3);\n      };\n      var k3 = y5();\n      k3 == null && (k3 = w2), p3.setLevel(k3, false);\n    }\n    var g2 = new T3(), x4 = {};\n    g2.getLogger = function(w2) {\n      if ((typeof w2 == \"undefined\" ? \"undefined\" : C(w2)) !== \"symbol\" && typeof w2 != \"string\" || w2 === \"\") throw new TypeError(\"You must supply a name when creating a logger.\");\n      var D3 = x4[w2];\n      return D3 || (D3 = x4[w2] = new T3(w2, g2.getLevel(), g2.methodFactory)), D3;\n    };\n    var v4 = (typeof window == \"undefined\" ? \"undefined\" : C(window)) !== e ? window.log : void 0;\n    return g2.noConflict = function() {\n      return (typeof window == \"undefined\" ? \"undefined\" : C(window)) !== e && window.log === g2 && (window.log = v4), g2;\n    }, g2.getLoggers = function() {\n      return x4;\n    }, g2.default = g2, g2;\n  });\n});\nfunction U(r10, e) {\n  return e != null && typeof Symbol != \"undefined\" && e[Symbol.hasInstance] ? !!e[Symbol.hasInstance](r10) : U(r10, e);\n}\nvar Z = ft(function() {\n  Z();\n});\nvar Xt = H(function(Ge3) {\n  \"use strict\";\n  var Ai = Object.prototype.hasOwnProperty, Oi;\n  function Kt3(r10) {\n    try {\n      return decodeURIComponent(r10.replace(/\\+/g, \" \"));\n    } catch (e) {\n      return null;\n    }\n  }\n  function Yt3(r10) {\n    try {\n      return encodeURIComponent(r10);\n    } catch (e) {\n      return null;\n    }\n  }\n  function Ii(r10) {\n    for (var e = /([^=?#&]+)=?([^&]*)/g, t2 = {}, a2; a2 = e.exec(r10); ) {\n      var i2 = Kt3(a2[1]), n2 = Kt3(a2[2]);\n      i2 === null || n2 === null || i2 in t2 || (t2[i2] = n2);\n    }\n    return t2;\n  }\n  function Li(r10, e) {\n    e = e || \"\";\n    var t2 = [], a2, i2;\n    typeof e != \"string\" && (e = \"?\");\n    for (i2 in r10) if (Ai.call(r10, i2)) {\n      if (a2 = r10[i2], !a2 && (a2 === null || a2 === Oi || isNaN(a2)) && (a2 = \"\"), i2 = Yt3(i2), a2 = Yt3(a2), i2 === null || a2 === null) continue;\n      t2.push(i2 + \"=\" + a2);\n    }\n    return t2.length ? e + t2.join(\"&\") : \"\";\n  }\n  Ge3.stringify = Li;\n  Ge3.parse = Ii;\n});\nvar er = H(function($t3, Zt4) {\n  \"use strict\";\n  (function(r10) {\n    var e = false;\n    if (typeof define == \"function\" && define.amd && (define(r10), e = true), typeof $t3 == \"object\" && (Zt4.exports = r10(), e = true), !e) {\n      var t2 = window.Cookies, a2 = window.Cookies = r10();\n      a2.noConflict = function() {\n        return window.Cookies = t2, a2;\n      };\n    }\n  })(function() {\n    var r10 = function() {\n      for (var a2 = 0, i2 = {}; a2 < arguments.length; a2++) {\n        var n2 = arguments[a2];\n        for (var o in n2) i2[o] = n2[o];\n      }\n      return i2;\n    };\n    function e(t2) {\n      function a2(i2, n2, o) {\n        var s;\n        if (typeof document != \"undefined\") {\n          if (arguments.length > 1) {\n            if (o = r10({ path: \"/\" }, a2.defaults, o), typeof o.expires == \"number\") {\n              var f = /* @__PURE__ */ new Date();\n              f.setMilliseconds(f.getMilliseconds() + o.expires * 864e5), o.expires = f;\n            }\n            try {\n              s = JSON.stringify(n2), /^[\\{\\[]/.test(s) && (n2 = s);\n            } catch (w2) {\n            }\n            return t2.write ? n2 = t2.write(n2, i2) : n2 = encodeURIComponent(String(n2)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent), i2 = encodeURIComponent(String(i2)), i2 = i2.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent), i2 = i2.replace(/[\\(\\)]/g, escape), document.cookie = [i2, \"=\", n2, o.expires ? \"; expires=\" + o.expires.toUTCString() : \"\", o.path ? \"; path=\" + o.path : \"\", o.domain ? \"; domain=\" + o.domain : \"\", o.secure ? \"; secure\" : \"\"].join(\"\");\n          }\n          i2 || (s = {});\n          for (var h3 = document.cookie ? document.cookie.split(\"; \") : [], T3 = /(%[0-9A-Z]{2})+/g, g2 = 0; g2 < h3.length; g2++) {\n            var x4 = h3[g2].split(\"=\"), v4 = x4.slice(1).join(\"=\");\n            v4.charAt(0) === '\"' && (v4 = v4.slice(1, -1));\n            try {\n              var l = x4[0].replace(T3, decodeURIComponent);\n              if (v4 = t2.read ? t2.read(v4, l) : t2(v4, l) || v4.replace(T3, decodeURIComponent), this.json) try {\n                v4 = JSON.parse(v4);\n              } catch (w2) {\n              }\n              if (i2 === l) {\n                s = v4;\n                break;\n              }\n              i2 || (s[l] = v4);\n            } catch (w2) {\n            }\n          }\n          return s;\n        }\n      }\n      return a2.set = a2, a2.get = function(i2) {\n        return a2.call(a2, i2);\n      }, a2.getJSON = function() {\n        return a2.apply({ json: true }, [].slice.call(arguments));\n      }, a2.defaults = {}, a2.remove = function(i2, n2) {\n        a2(i2, \"\", r10(n2, { expires: -1 }));\n      }, a2.withConverter = e, a2;\n    }\n    return e(function() {\n    });\n  });\n});\nvar Ke = H(function(du, gr) {\n  var yr = Array.prototype.slice;\n  gr.exports = $i;\n  function $i(r10, e) {\n    for ((\"length\" in r10) || (r10 = [r10]), r10 = yr.call(r10); r10.length; ) {\n      var t2 = r10.shift(), a2 = e(t2);\n      if (a2) return a2;\n      t2.childNodes && t2.childNodes.length && (r10 = yr.call(t2.childNodes).concat(r10));\n    }\n  }\n});\nvar wr = H(function(cu, br) {\n  Z();\n  br.exports = pe4;\n  function pe4(r10, e) {\n    if (!U(this, pe4)) return new pe4(r10, e);\n    this.data = r10, this.nodeValue = r10, this.length = r10.length, this.ownerDocument = e || null;\n  }\n  pe4.prototype.nodeType = 8;\n  pe4.prototype.nodeName = \"#comment\";\n  pe4.prototype.toString = function() {\n    return \"[object Comment]\";\n  };\n});\nvar Er = H(function(_u, Tr) {\n  Z();\n  Tr.exports = re5;\n  function re5(r10, e) {\n    if (!U(this, re5)) return new re5(r10);\n    this.data = r10 || \"\", this.length = this.data.length, this.ownerDocument = e || null;\n  }\n  re5.prototype.type = \"DOMTextNode\";\n  re5.prototype.nodeType = 3;\n  re5.prototype.nodeName = \"#text\";\n  re5.prototype.toString = function() {\n    return this.data;\n  };\n  re5.prototype.replaceData = function(e, t2, a2) {\n    var i2 = this.data, n2 = i2.substring(0, e), o = i2.substring(e + t2, i2.length);\n    this.data = n2 + a2 + o, this.length = this.data.length;\n  };\n});\nvar Ye = H(function(pu, kr) {\n  kr.exports = Zi;\n  function Zi(r10) {\n    var e = this, t2 = r10.type;\n    r10.target || (r10.target = e), e.listeners || (e.listeners = {});\n    var a2 = e.listeners[t2];\n    if (a2) return a2.forEach(function(i2) {\n      r10.currentTarget = e, typeof i2 == \"function\" ? i2(r10) : i2.handleEvent(r10);\n    });\n    e.parentNode && e.parentNode.dispatchEvent(r10);\n  }\n});\nvar Xe = H(function(vu, xr) {\n  xr.exports = ea;\n  function ea(r10, e) {\n    var t2 = this;\n    t2.listeners || (t2.listeners = {}), t2.listeners[r10] || (t2.listeners[r10] = []), t2.listeners[r10].indexOf(e) === -1 && t2.listeners[r10].push(e);\n  }\n});\nvar $e = H(function(mu, Dr) {\n  Dr.exports = ta2;\n  function ta2(r10, e) {\n    var t2 = this;\n    if (t2.listeners && t2.listeners[r10]) {\n      var a2 = t2.listeners[r10], i2 = a2.indexOf(e);\n      i2 !== -1 && a2.splice(i2, 1);\n    }\n  }\n});\nvar Ar = H(function(yu, qr) {\n  ke();\n  qr.exports = Sr;\n  var ra2 = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"menuitem\", \"meta\", \"param\", \"source\", \"track\", \"wbr\"];\n  function Sr(r10) {\n    switch (r10.nodeType) {\n      case 3:\n        return Ze3(r10.data);\n      case 8:\n        return \"<!--\" + r10.data + \"-->\";\n      default:\n        return ia2(r10);\n    }\n  }\n  function ia2(r10) {\n    var e = [], t2 = r10.tagName;\n    return r10.namespaceURI === \"http://www.w3.org/1999/xhtml\" && (t2 = t2.toLowerCase()), e.push(\"<\" + t2 + sa2(r10) + oa2(r10)), ra2.indexOf(t2) > -1 ? e.push(\" />\") : (e.push(\">\"), r10.childNodes.length ? e.push.apply(e, r10.childNodes.map(Sr)) : r10.textContent || r10.innerText ? e.push(Ze3(r10.textContent || r10.innerText)) : r10.innerHTML && e.push(r10.innerHTML), e.push(\"</\" + t2 + \">\")), e.join(\"\");\n  }\n  function aa(r10, e) {\n    var t2 = C(r10[e]);\n    return e === \"style\" && Object.keys(r10.style).length > 0 ? true : r10.hasOwnProperty(e) && (t2 === \"string\" || t2 === \"boolean\" || t2 === \"number\") && e !== \"nodeName\" && e !== \"className\" && e !== \"tagName\" && e !== \"textContent\" && e !== \"innerText\" && e !== \"namespaceURI\" && e !== \"innerHTML\";\n  }\n  function na2(r10) {\n    if (typeof r10 == \"string\") return r10;\n    var e = \"\";\n    return Object.keys(r10).forEach(function(t2) {\n      var a2 = r10[t2];\n      t2 = t2.replace(/[A-Z]/g, function(i2) {\n        return \"-\" + i2.toLowerCase();\n      }), e += t2 + \":\" + a2 + \";\";\n    }), e;\n  }\n  function oa2(r10) {\n    var e = r10.dataset, t2 = [];\n    for (var a2 in e) t2.push({ name: \"data-\" + a2, value: e[a2] });\n    return t2.length ? Rr(t2) : \"\";\n  }\n  function Rr(r10) {\n    var e = [];\n    return r10.forEach(function(t2) {\n      var a2 = t2.name, i2 = t2.value;\n      a2 === \"style\" && (i2 = na2(i2)), e.push(a2 + '=\"' + ua2(i2) + '\"');\n    }), e.length ? \" \" + e.join(\" \") : \"\";\n  }\n  function sa2(r10) {\n    var e = [];\n    for (var t2 in r10) aa(r10, t2) && e.push({ name: t2, value: r10[t2] });\n    for (var a2 in r10._attributes) for (var i2 in r10._attributes[a2]) {\n      var n2 = r10._attributes[a2][i2], o = (n2.prefix ? n2.prefix + \":\" : \"\") + i2;\n      e.push({ name: o, value: n2.value });\n    }\n    return r10.className && e.push({ name: \"class\", value: r10.className }), e.length ? Rr(e) : \"\";\n  }\n  function Ze3(r10) {\n    var e = \"\";\n    return typeof r10 == \"string\" ? e = r10 : r10 && (e = r10.toString()), e.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n  }\n  function ua2(r10) {\n    return Ze3(r10).replace(/\"/g, \"&quot;\");\n  }\n});\nvar tt = H(function(bu, Ir) {\n  Z();\n  var et3 = Ke(), da2 = Ye(), la2 = Xe(), ca = $e(), fa2 = Ar(), Or = \"http://www.w3.org/1999/xhtml\";\n  Ir.exports = N3;\n  function N3(r10, e, t2) {\n    if (!U(this, N3)) return new N3(r10);\n    var a2 = t2 === void 0 ? Or : t2 || null;\n    this.tagName = a2 === Or ? String(r10).toUpperCase() : r10, this.nodeName = this.tagName, this.className = \"\", this.dataset = {}, this.childNodes = [], this.parentNode = null, this.style = {}, this.ownerDocument = e || null, this.namespaceURI = a2, this._attributes = {}, this.tagName === \"INPUT\" && (this.type = \"text\");\n  }\n  N3.prototype.type = \"DOMElement\";\n  N3.prototype.nodeType = 1;\n  N3.prototype.appendChild = function(e) {\n    return e.parentNode && e.parentNode.removeChild(e), this.childNodes.push(e), e.parentNode = this, e;\n  };\n  N3.prototype.replaceChild = function(e, t2) {\n    e.parentNode && e.parentNode.removeChild(e);\n    var a2 = this.childNodes.indexOf(t2);\n    return t2.parentNode = null, this.childNodes[a2] = e, e.parentNode = this, t2;\n  };\n  N3.prototype.removeChild = function(e) {\n    var t2 = this.childNodes.indexOf(e);\n    return this.childNodes.splice(t2, 1), e.parentNode = null, e;\n  };\n  N3.prototype.insertBefore = function(e, t2) {\n    e.parentNode && e.parentNode.removeChild(e);\n    var a2 = t2 == null ? -1 : this.childNodes.indexOf(t2);\n    return a2 > -1 ? this.childNodes.splice(a2, 0, e) : this.childNodes.push(e), e.parentNode = this, e;\n  };\n  N3.prototype.setAttributeNS = function(e, t2, a2) {\n    var i2 = null, n2 = t2, o = t2.indexOf(\":\");\n    if (o > -1 && (i2 = t2.substr(0, o), n2 = t2.substr(o + 1)), this.tagName === \"INPUT\" && t2 === \"type\") this.type = a2;\n    else {\n      var s = this._attributes[e] || (this._attributes[e] = {});\n      s[n2] = { value: a2, prefix: i2 };\n    }\n  };\n  N3.prototype.getAttributeNS = function(e, t2) {\n    var a2 = this._attributes[e], i2 = a2 && a2[t2] && a2[t2].value;\n    return this.tagName === \"INPUT\" && t2 === \"type\" ? this.type : typeof i2 != \"string\" ? null : i2;\n  };\n  N3.prototype.removeAttributeNS = function(e, t2) {\n    var a2 = this._attributes[e];\n    a2 && delete a2[t2];\n  };\n  N3.prototype.hasAttributeNS = function(e, t2) {\n    var a2 = this._attributes[e];\n    return !!a2 && t2 in a2;\n  };\n  N3.prototype.setAttribute = function(e, t2) {\n    return this.setAttributeNS(null, e, t2);\n  };\n  N3.prototype.getAttribute = function(e) {\n    return this.getAttributeNS(null, e);\n  };\n  N3.prototype.removeAttribute = function(e) {\n    return this.removeAttributeNS(null, e);\n  };\n  N3.prototype.hasAttribute = function(e) {\n    return this.hasAttributeNS(null, e);\n  };\n  N3.prototype.removeEventListener = ca;\n  N3.prototype.addEventListener = la2;\n  N3.prototype.dispatchEvent = da2;\n  N3.prototype.focus = function() {\n  };\n  N3.prototype.toString = function() {\n    return fa2(this);\n  };\n  N3.prototype.getElementsByClassName = function(e) {\n    var t2 = e.split(\" \"), a2 = [];\n    return et3(this, function(i2) {\n      if (i2.nodeType === 1) {\n        var n2 = i2.className || \"\", o = n2.split(\" \");\n        t2.every(function(s) {\n          return o.indexOf(s) !== -1;\n        }) && a2.push(i2);\n      }\n    }), a2;\n  };\n  N3.prototype.getElementsByTagName = function(e) {\n    e = e.toLowerCase();\n    var t2 = [];\n    return et3(this.childNodes, function(a2) {\n      a2.nodeType === 1 && (e === \"*\" || a2.tagName.toLowerCase() === e) && t2.push(a2);\n    }), t2;\n  };\n  N3.prototype.contains = function(e) {\n    return et3(this, function(t2) {\n      return e === t2;\n    }) || false;\n  };\n});\nvar Nr = H(function(Tu, Lr) {\n  Z();\n  var rt3 = tt();\n  Lr.exports = z2;\n  function z2(r10) {\n    if (!U(this, z2)) return new z2();\n    this.childNodes = [], this.parentNode = null, this.ownerDocument = r10 || null;\n  }\n  z2.prototype.type = \"DocumentFragment\";\n  z2.prototype.nodeType = 11;\n  z2.prototype.nodeName = \"#document-fragment\";\n  z2.prototype.appendChild = rt3.prototype.appendChild;\n  z2.prototype.replaceChild = rt3.prototype.replaceChild;\n  z2.prototype.removeChild = rt3.prototype.removeChild;\n  z2.prototype.toString = function() {\n    return this.childNodes.map(function(e) {\n      return String(e);\n    }).join(\"\");\n  };\n});\nvar Cr = H(function(Eu, Pr) {\n  Pr.exports = it2;\n  function it2(r10) {\n  }\n  it2.prototype.initEvent = function(e, t2, a2) {\n    this.type = e, this.bubbles = t2, this.cancelable = a2;\n  };\n  it2.prototype.preventDefault = function() {\n  };\n});\nvar Hr = H(function(xu, Mr) {\n  Z();\n  var _a3 = Ke(), pa2 = wr(), va = Er(), Se3 = tt(), ma2 = Nr(), ha2 = Cr(), ya = Ye(), ga2 = Xe(), ba2 = $e();\n  Mr.exports = He3;\n  function He3() {\n    if (!U(this, He3)) return new He3();\n    this.head = this.createElement(\"head\"), this.body = this.createElement(\"body\"), this.documentElement = this.createElement(\"html\"), this.documentElement.appendChild(this.head), this.documentElement.appendChild(this.body), this.childNodes = [this.documentElement], this.nodeType = 9;\n  }\n  var V4 = He3.prototype;\n  V4.createTextNode = function(e) {\n    return new va(e, this);\n  };\n  V4.createElementNS = function(e, t2) {\n    var a2 = e === null ? null : String(e);\n    return new Se3(t2, this, a2);\n  };\n  V4.createElement = function(e) {\n    return new Se3(e, this);\n  };\n  V4.createDocumentFragment = function() {\n    return new ma2(this);\n  };\n  V4.createEvent = function(e) {\n    return new ha2(e);\n  };\n  V4.createComment = function(e) {\n    return new pa2(e, this);\n  };\n  V4.getElementById = function(e) {\n    e = String(e);\n    var t2 = _a3(this.childNodes, function(a2) {\n      if (String(a2.id) === e) return a2;\n    });\n    return t2 || null;\n  };\n  V4.getElementsByClassName = Se3.prototype.getElementsByClassName;\n  V4.getElementsByTagName = Se3.prototype.getElementsByTagName;\n  V4.contains = Se3.prototype.contains;\n  V4.removeEventListener = ba2;\n  V4.addEventListener = ga2;\n  V4.dispatchEvent = ya;\n});\nvar Ur = H(function(Du, Br) {\n  var wa2 = Hr();\n  Br.exports = new wa2();\n});\nvar Wr = H(function(Su, Vr) {\n  var Fr = typeof global != \"undefined\" ? global : typeof window != \"undefined\" ? window : {}, Ta = Ur(), Re4;\n  typeof document != \"undefined\" ? Re4 = document : (Re4 = Fr[\"__GLOBAL_DOCUMENT_CACHE@4\"], Re4 || (Re4 = Fr[\"__GLOBAL_DOCUMENT_CACHE@4\"] = Ta));\n  Vr.exports = Re4;\n});\nfunction _t(r10) {\n  if (Array.isArray(r10)) return r10;\n}\nfunction pt(r10, e) {\n  var t2 = r10 == null ? null : typeof Symbol != \"undefined\" && r10[Symbol.iterator] || r10[\"@@iterator\"];\n  if (t2 != null) {\n    var a2 = [], i2 = true, n2 = false, o, s;\n    try {\n      for (t2 = t2.call(r10); !(i2 = (o = t2.next()).done) && (a2.push(o.value), !(e && a2.length === e)); i2 = true) ;\n    } catch (f) {\n      n2 = true, s = f;\n    } finally {\n      try {\n        !i2 && t2.return != null && t2.return();\n      } finally {\n        if (n2) throw s;\n      }\n    }\n    return a2;\n  }\n}\nfunction vt() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction We(r10, e) {\n  (e == null || e > r10.length) && (e = r10.length);\n  for (var t2 = 0, a2 = new Array(e); t2 < e; t2++) a2[t2] = r10[t2];\n  return a2;\n}\nfunction mt(r10, e) {\n  if (r10) {\n    if (typeof r10 == \"string\") return We(r10, e);\n    var t2 = Object.prototype.toString.call(r10).slice(8, -1);\n    if (t2 === \"Object\" && r10.constructor && (t2 = r10.constructor.name), t2 === \"Map\" || t2 === \"Set\") return Array.from(t2);\n    if (t2 === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t2)) return We(r10, e);\n  }\n}\nfunction j(r10, e) {\n  return _t(r10) || pt(r10, e) || mt(r10, e) || vt();\n}\nvar ye = B(J());\nvar X = function() {\n  return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(e) {\n    var t2 = Math.random() * 16 | 0, a2 = e === \"x\" ? t2 : t2 & 3 | 8;\n    return a2.toString(16);\n  });\n};\nvar qe = function() {\n  return (\"000000\" + (Math.random() * Math.pow(36, 6) << 0).toString(36)).slice(-6);\n};\nvar $ = function(e) {\n  if (e && typeof e.nodeName != \"undefined\") return e.muxId || (e.muxId = qe()), e.muxId;\n  var t2;\n  try {\n    t2 = document.querySelector(e);\n  } catch (a2) {\n  }\n  return t2 && !t2.muxId && (t2.muxId = e), (t2 == null ? void 0 : t2.muxId) || e;\n};\nvar Ee = function(e) {\n  var t2;\n  e && typeof e.nodeName != \"undefined\" ? (t2 = e, e = $(t2)) : t2 = document.querySelector(e);\n  var a2 = t2 && t2.nodeName ? t2.nodeName.toLowerCase() : \"\";\n  return [t2, e, a2];\n};\nvar ue = B(gt());\nvar ai = ue.default.methodFactory;\nue.default.methodFactory = function(r10, e, t2) {\n  var a2 = ai(r10, e, t2);\n  return function() {\n    for (var i2 = [\"[mux]\"], n2 = 0; n2 < arguments.length; n2++) i2.push(arguments[n2]);\n    a2.apply(void 0, i2);\n  };\n};\nue.default.setLevel(ue.default.getLevel());\nvar I = ue.default;\nvar Oe = B(J());\nfunction de() {\n  var r10 = Oe.default.doNotTrack || Oe.default.navigator && Oe.default.navigator.doNotTrack;\n  return r10 === \"1\";\n}\nvar bt = B(J());\nvar ni = { now: function() {\n  var r10 = bt.default.performance, e = r10 && r10.timing, t2 = e && e.navigationStart, a2 = typeof t2 == \"number\" && typeof r10.now == \"function\" ? t2 + r10.now() : Date.now();\n  return Math.round(a2);\n} };\nvar A = ni;\nfunction b(r10) {\n  if (r10 === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return r10;\n}\nZ();\nfunction S(r10, e) {\n  if (!U(r10, e)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction wt(r10, e) {\n  for (var t2 = 0; t2 < e.length; t2++) {\n    var a2 = e[t2];\n    a2.enumerable = a2.enumerable || false, a2.configurable = true, \"value\" in a2 && (a2.writable = true), Object.defineProperty(r10, a2.key, a2);\n  }\n}\nfunction M(r10, e, t2) {\n  return e && wt(r10.prototype, e), t2 && wt(r10, t2), r10;\n}\nfunction d(r10, e, t2) {\n  return e in r10 ? Object.defineProperty(r10, e, { value: t2, enumerable: true, configurable: true, writable: true }) : r10[e] = t2, r10;\n}\nfunction Ie(r10, e) {\n  return Ie = Object.setPrototypeOf || function(a2, i2) {\n    return a2.__proto__ = i2, a2;\n  }, Ie(r10, e);\n}\nfunction Tt(r10, e) {\n  if (typeof e != \"function\" && e !== null) throw new TypeError(\"Super expression must either be null or a function\");\n  r10.prototype = Object.create(e && e.prototype, { constructor: { value: r10, writable: true, configurable: true } }), e && Ie(r10, e);\n}\nfunction xe(r10) {\n  return xe = Object.setPrototypeOf ? Object.getPrototypeOf : function(t2) {\n    return t2.__proto__ || Object.getPrototypeOf(t2);\n  }, xe(r10);\n}\nfunction Et() {\n  if (typeof Reflect == \"undefined\" || !Reflect.construct || Reflect.construct.sham) return false;\n  if (typeof Proxy == \"function\") return true;\n  try {\n    return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {\n    })), true;\n  } catch (r10) {\n    return false;\n  }\n}\nke();\nfunction kt(r10, e) {\n  return e && (C(e) === \"object\" || typeof e == \"function\") ? e : b(r10);\n}\nfunction xt(r10) {\n  var e = Et();\n  return function() {\n    var a2 = xe(r10), i2;\n    if (e) {\n      var n2 = xe(this).constructor;\n      i2 = Reflect.construct(a2, arguments, n2);\n    } else i2 = a2.apply(this, arguments);\n    return kt(this, i2);\n  };\n}\nvar F = function(r10) {\n  return ee(r10)[0];\n};\nvar ee = function(r10) {\n  if (typeof r10 != \"string\" || r10 === \"\") return [\"localhost\"];\n  var e = /^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/, t2 = r10.match(e) || [], a2 = t2[4], i2;\n  return a2 && (i2 = (a2.match(/[^\\.]+\\.[^\\.]+$/) || [])[0]), [a2, i2];\n};\nvar Le = B(J());\nvar oi = { exists: function() {\n  var r10 = Le.default.performance, e = r10 && r10.timing;\n  return e !== void 0;\n}, domContentLoadedEventEnd: function() {\n  var r10 = Le.default.performance, e = r10 && r10.timing;\n  return e && e.domContentLoadedEventEnd;\n}, navigationStart: function() {\n  var r10 = Le.default.performance, e = r10 && r10.timing;\n  return e && e.navigationStart;\n} };\nvar le = oi;\nfunction O(r10, e, t2) {\n  t2 = t2 === void 0 ? 1 : t2, r10[e] = r10[e] || 0, r10[e] += t2;\n}\nfunction ne(r10) {\n  for (var e = 1; e < arguments.length; e++) {\n    var t2 = arguments[e] != null ? arguments[e] : {}, a2 = Object.keys(t2);\n    typeof Object.getOwnPropertySymbols == \"function\" && (a2 = a2.concat(Object.getOwnPropertySymbols(t2).filter(function(i2) {\n      return Object.getOwnPropertyDescriptor(t2, i2).enumerable;\n    }))), a2.forEach(function(i2) {\n      d(r10, i2, t2[i2]);\n    });\n  }\n  return r10;\n}\nfunction si(r10, e) {\n  var t2 = Object.keys(r10);\n  if (Object.getOwnPropertySymbols) {\n    var a2 = Object.getOwnPropertySymbols(r10);\n    e && (a2 = a2.filter(function(i2) {\n      return Object.getOwnPropertyDescriptor(r10, i2).enumerable;\n    })), t2.push.apply(t2, a2);\n  }\n  return t2;\n}\nfunction ce(r10, e) {\n  return e = e != null ? e : {}, Object.getOwnPropertyDescriptors ? Object.defineProperties(r10, Object.getOwnPropertyDescriptors(e)) : si(Object(e)).forEach(function(t2) {\n    Object.defineProperty(r10, t2, Object.getOwnPropertyDescriptor(e, t2));\n  }), r10;\n}\nvar ui = [\"x-cdn\", \"content-type\"];\nvar Dt = [\"x-request-id\", \"cf-ray\", \"x-amz-cf-id\", \"x-akamai-request-id\"];\nvar di = ui.concat(Dt);\nfunction fe(r10) {\n  r10 = r10 || \"\";\n  var e = {}, t2 = r10.trim().split(/[\\r\\n]+/);\n  return t2.forEach(function(a2) {\n    if (a2) {\n      var i2 = a2.split(\": \"), n2 = i2.shift();\n      n2 && (di.indexOf(n2.toLowerCase()) >= 0 || n2.toLowerCase().indexOf(\"x-litix-\") === 0) && (e[n2] = i2.join(\": \"));\n    }\n  }), e;\n}\nfunction oe(r10) {\n  if (r10) {\n    var e = Dt.find(function(t2) {\n      return r10[t2] !== void 0;\n    });\n    return e ? r10[e] : void 0;\n  }\n}\nvar li = function(r10) {\n  var e = {};\n  for (var t2 in r10) {\n    var a2 = r10[t2], i2 = a2[\"DATA-ID\"].search(\"io.litix.data.\");\n    if (i2 !== -1) {\n      var n2 = a2[\"DATA-ID\"].replace(\"io.litix.data.\", \"\");\n      e[n2] = a2.VALUE;\n    }\n  }\n  return e;\n};\nvar Ne = li;\nvar Pe = function(r10) {\n  if (!r10) return {};\n  var e = le.navigationStart(), t2 = r10.loading, a2 = t2 ? t2.start : r10.trequest, i2 = t2 ? t2.first : r10.tfirst, n2 = t2 ? t2.end : r10.tload;\n  return { bytesLoaded: r10.total, requestStart: Math.round(e + a2), responseStart: Math.round(e + i2), responseEnd: Math.round(e + n2) };\n};\nvar De = function(r10) {\n  if (!(!r10 || typeof r10.getAllResponseHeaders != \"function\")) return fe(r10.getAllResponseHeaders());\n};\nvar St = function(r10, e, t2) {\n  var a2 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}, i2 = arguments.length > 4 ? arguments[4] : void 0, n2 = r10.log, o = r10.utils.secondsToMs, s = function(p3) {\n    var _3 = parseInt(i2.version), c4;\n    return _3 === 1 && p3.programDateTime !== null && (c4 = p3.programDateTime), _3 === 0 && p3.pdt !== null && (c4 = p3.pdt), c4;\n  };\n  if (!le.exists()) {\n    n2.warn(\"performance timing not supported. Not tracking HLS.js.\");\n    return;\n  }\n  var f = function(p3, _3) {\n    return r10.emit(e, p3, _3);\n  }, h3 = function(p3, _3) {\n    var c4 = _3.levels, u3 = _3.audioTracks, y5 = _3.url, E4 = _3.stats, k3 = _3.networkDetails, m3 = _3.sessionData, q3 = {}, P2 = {};\n    c4.forEach(function(W4, ae5) {\n      q3[ae5] = { width: W4.width, height: W4.height, bitrate: W4.bitrate, attrs: W4.attrs };\n    }), u3.forEach(function(W4, ae5) {\n      P2[ae5] = { name: W4.name, language: W4.lang, bitrate: W4.bitrate };\n    });\n    var L2 = Pe(E4), R2 = L2.bytesLoaded, Y5 = L2.requestStart, ge4 = L2.responseStart, be3 = L2.responseEnd;\n    f(\"requestcompleted\", ce(ne({}, Ne(m3)), { request_event_type: p3, request_bytes_loaded: R2, request_start: Y5, request_response_start: ge4, request_response_end: be3, request_type: \"manifest\", request_hostname: F(y5), request_response_headers: De(k3), request_rendition_lists: { media: q3, audio: P2, video: {} } }));\n  };\n  t2.on(i2.Events.MANIFEST_LOADED, h3);\n  var T3 = function(p3, _3) {\n    var c4 = _3.details, u3 = _3.level, y5 = _3.networkDetails, E4 = _3.stats, k3 = Pe(E4), m3 = k3.bytesLoaded, q3 = k3.requestStart, P2 = k3.responseStart, L2 = k3.responseEnd, R2 = c4.fragments[c4.fragments.length - 1], Y5 = s(R2) + o(R2.duration);\n    f(\"requestcompleted\", { request_event_type: p3, request_bytes_loaded: m3, request_start: q3, request_response_start: P2, request_response_end: L2, request_current_level: u3, request_type: \"manifest\", request_hostname: F(c4.url), request_response_headers: De(y5), video_holdback: c4.holdBack && o(c4.holdBack), video_part_holdback: c4.partHoldBack && o(c4.partHoldBack), video_part_target_duration: c4.partTarget && o(c4.partTarget), video_target_duration: c4.targetduration && o(c4.targetduration), video_source_is_live: c4.live, player_manifest_newest_program_time: isNaN(Y5) ? void 0 : Y5 });\n  };\n  t2.on(i2.Events.LEVEL_LOADED, T3);\n  var g2 = function(p3, _3) {\n    var c4 = _3.details, u3 = _3.networkDetails, y5 = _3.stats, E4 = Pe(y5), k3 = E4.bytesLoaded, m3 = E4.requestStart, q3 = E4.responseStart, P2 = E4.responseEnd;\n    f(\"requestcompleted\", { request_event_type: p3, request_bytes_loaded: k3, request_start: m3, request_response_start: q3, request_response_end: P2, request_type: \"manifest\", request_hostname: F(c4.url), request_response_headers: De(u3) });\n  };\n  t2.on(i2.Events.AUDIO_TRACK_LOADED, g2);\n  var x4 = function(p3, _3) {\n    var c4 = _3.stats, u3 = _3.networkDetails, y5 = _3.frag;\n    c4 = c4 || y5.stats;\n    var E4 = Pe(c4), k3 = E4.bytesLoaded, m3 = E4.requestStart, q3 = E4.responseStart, P2 = E4.responseEnd, L2 = u3 ? De(u3) : void 0, R2 = { request_event_type: p3, request_bytes_loaded: k3, request_start: m3, request_response_start: q3, request_response_end: P2, request_hostname: u3 ? F(u3.responseURL) : void 0, request_id: L2 ? oe(L2) : void 0, request_response_headers: L2, request_media_duration: y5.duration, request_url: u3 == null ? void 0 : u3.responseURL };\n    y5.type === \"main\" ? (R2.request_type = \"media\", R2.request_current_level = y5.level, R2.request_video_width = (t2.levels[y5.level] || {}).width, R2.request_video_height = (t2.levels[y5.level] || {}).height, R2.request_labeled_bitrate = (t2.levels[y5.level] || {}).bitrate) : R2.request_type = y5.type, f(\"requestcompleted\", R2);\n  };\n  t2.on(i2.Events.FRAG_LOADED, x4);\n  var v4 = function(p3, _3) {\n    var c4 = _3.frag, u3 = c4.start, y5 = s(c4), E4 = { currentFragmentPDT: y5, currentFragmentStart: o(u3) };\n    f(\"fragmentchange\", E4);\n  };\n  t2.on(i2.Events.FRAG_CHANGED, v4);\n  var l = function(p3, _3) {\n    var c4 = _3.type, u3 = _3.details, y5 = _3.response, E4 = _3.fatal, k3 = _3.frag, m3 = _3.networkDetails, q3 = (k3 == null ? void 0 : k3.url) || _3.url || \"\", P2 = m3 ? De(m3) : void 0;\n    if ((u3 === i2.ErrorDetails.MANIFEST_LOAD_ERROR || u3 === i2.ErrorDetails.MANIFEST_LOAD_TIMEOUT || u3 === i2.ErrorDetails.FRAG_LOAD_ERROR || u3 === i2.ErrorDetails.FRAG_LOAD_TIMEOUT || u3 === i2.ErrorDetails.LEVEL_LOAD_ERROR || u3 === i2.ErrorDetails.LEVEL_LOAD_TIMEOUT || u3 === i2.ErrorDetails.AUDIO_TRACK_LOAD_ERROR || u3 === i2.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT || u3 === i2.ErrorDetails.SUBTITLE_LOAD_ERROR || u3 === i2.ErrorDetails.SUBTITLE_LOAD_TIMEOUT || u3 === i2.ErrorDetails.KEY_LOAD_ERROR || u3 === i2.ErrorDetails.KEY_LOAD_TIMEOUT) && f(\"requestfailed\", { request_error: u3, request_url: q3, request_hostname: F(q3), request_id: P2 ? oe(P2) : void 0, request_type: u3 === i2.ErrorDetails.FRAG_LOAD_ERROR || u3 === i2.ErrorDetails.FRAG_LOAD_TIMEOUT ? \"media\" : u3 === i2.ErrorDetails.AUDIO_TRACK_LOAD_ERROR || u3 === i2.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT ? \"audio\" : u3 === i2.ErrorDetails.SUBTITLE_LOAD_ERROR || u3 === i2.ErrorDetails.SUBTITLE_LOAD_TIMEOUT ? \"subtitle\" : u3 === i2.ErrorDetails.KEY_LOAD_ERROR || u3 === i2.ErrorDetails.KEY_LOAD_TIMEOUT ? \"encryption\" : \"manifest\", request_error_code: y5 == null ? void 0 : y5.code, request_error_text: y5 == null ? void 0 : y5.text }), E4) {\n      var L2, R2 = \"\".concat(q3 ? \"url: \".concat(q3, \"\\n\") : \"\") + \"\".concat(y5 && (y5.code || y5.text) ? \"response: \".concat(y5.code, \", \").concat(y5.text, \"\\n\") : \"\") + \"\".concat(_3.reason ? \"failure reason: \".concat(_3.reason, \"\\n\") : \"\") + \"\".concat(_3.level ? \"level: \".concat(_3.level, \"\\n\") : \"\") + \"\".concat(_3.parent ? \"parent stream controller: \".concat(_3.parent, \"\\n\") : \"\") + \"\".concat(_3.buffer ? \"buffer length: \".concat(_3.buffer, \"\\n\") : \"\") + \"\".concat(_3.error ? \"error: \".concat(_3.error, \"\\n\") : \"\") + \"\".concat(_3.event ? \"event: \".concat(_3.event, \"\\n\") : \"\") + \"\".concat(_3.err ? \"error message: \".concat((L2 = _3.err) === null || L2 === void 0 ? void 0 : L2.message, \"\\n\") : \"\");\n      f(\"error\", { player_error_code: c4, player_error_message: u3, player_error_context: R2 });\n    }\n  };\n  t2.on(i2.Events.ERROR, l);\n  var w2 = function(p3, _3) {\n    var c4 = _3.frag, u3 = c4 && c4._url || \"\";\n    f(\"requestcanceled\", { request_event_type: p3, request_url: u3, request_type: \"media\", request_hostname: F(u3) });\n  };\n  t2.on(i2.Events.FRAG_LOAD_EMERGENCY_ABORTED, w2);\n  var D3 = function(p3, _3) {\n    var c4 = _3.level, u3 = t2.levels[c4];\n    if (u3 && u3.attrs && u3.attrs.BANDWIDTH) {\n      var y5 = u3.attrs.BANDWIDTH, E4, k3 = parseFloat(u3.attrs[\"FRAME-RATE\"]);\n      isNaN(k3) || (E4 = k3), y5 ? f(\"renditionchange\", { video_source_fps: E4, video_source_bitrate: y5, video_source_width: u3.width, video_source_height: u3.height, video_source_rendition_name: u3.name, video_source_codec: u3 == null ? void 0 : u3.videoCodec }) : n2.warn(\"missing BANDWIDTH from HLS manifest parsed by HLS.js\");\n    }\n  };\n  t2.on(i2.Events.LEVEL_SWITCHED, D3), t2._stopMuxMonitor = function() {\n    t2.off(i2.Events.MANIFEST_LOADED, h3), t2.off(i2.Events.LEVEL_LOADED, T3), t2.off(i2.Events.AUDIO_TRACK_LOADED, g2), t2.off(i2.Events.FRAG_LOADED, x4), t2.off(i2.Events.FRAG_CHANGED, v4), t2.off(i2.Events.ERROR, l), t2.off(i2.Events.FRAG_LOAD_EMERGENCY_ABORTED, w2), t2.off(i2.Events.LEVEL_SWITCHED, D3), t2.off(i2.Events.DESTROYING, t2._stopMuxMonitor), delete t2._stopMuxMonitor;\n  }, t2.on(i2.Events.DESTROYING, t2._stopMuxMonitor);\n};\nvar Rt = function(r10) {\n  r10 && typeof r10._stopMuxMonitor == \"function\" && r10._stopMuxMonitor();\n};\nvar qt = function(r10, e) {\n  if (!r10 || !r10.requestEndDate) return {};\n  var t2 = F(r10.url), a2 = r10.url, i2 = r10.bytesLoaded, n2 = new Date(r10.requestStartDate).getTime(), o = new Date(r10.firstByteDate).getTime(), s = new Date(r10.requestEndDate).getTime(), f = isNaN(r10.duration) ? 0 : r10.duration, h3 = typeof e.getMetricsFor == \"function\" ? e.getMetricsFor(r10.mediaType).HttpList : e.getDashMetrics().getHttpRequests(r10.mediaType), T3;\n  h3.length > 0 && (T3 = fe(h3[h3.length - 1]._responseHeaders || \"\"));\n  var g2 = T3 ? oe(T3) : void 0;\n  return { requestStart: n2, requestResponseStart: o, requestResponseEnd: s, requestBytesLoaded: i2, requestResponseHeaders: T3, requestMediaDuration: f, requestHostname: t2, requestUrl: a2, requestId: g2 };\n};\nvar ci = function(r10, e) {\n  var t2 = e.getQualityFor(r10), a2 = e.getCurrentTrackFor(r10).bitrateList;\n  return a2 ? { currentLevel: t2, renditionWidth: a2[t2].width || null, renditionHeight: a2[t2].height || null, renditionBitrate: a2[t2].bandwidth } : {};\n};\nvar fi = function(r10) {\n  var e;\n  return (e = r10.match(/.*codecs\\*?=\"(.*)\"/)) === null || e === void 0 ? void 0 : e[1];\n};\nvar _i = function(e) {\n  try {\n    var t2, a2, i2 = (a2 = e.getVersion) === null || a2 === void 0 || (t2 = a2.call(e)) === null || t2 === void 0 ? void 0 : t2.split(\".\").map(function(n2) {\n      return parseInt(n2);\n    })[0];\n    return i2;\n  } catch (n2) {\n    return false;\n  }\n};\nvar At = function(r10, e, t2) {\n  var a2 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}, i2 = r10.log;\n  if (!t2 || !t2.on) {\n    i2.warn(\"Invalid dash.js player reference. Monitoring blocked.\");\n    return;\n  }\n  var n2 = _i(t2), o = function(c4, u3) {\n    return r10.emit(e, c4, u3);\n  }, s = function(c4) {\n    var u3 = c4.type, y5 = c4.data, E4 = (y5 || {}).url;\n    o(\"requestcompleted\", { request_event_type: u3, request_start: 0, request_response_start: 0, request_response_end: 0, request_bytes_loaded: -1, request_type: \"manifest\", request_hostname: F(E4), request_url: E4 });\n  };\n  t2.on(\"manifestLoaded\", s);\n  var f = {}, h3 = function(c4) {\n    if (typeof c4.getRequests != \"function\") return null;\n    var u3 = c4.getRequests({ state: \"executed\" });\n    return u3.length === 0 ? null : u3[u3.length - 1];\n  }, T3 = function(c4) {\n    var u3 = c4.type, y5 = c4.fragmentModel, E4 = c4.chunk, k3 = h3(y5);\n    g2({ type: u3, request: k3, chunk: E4 });\n  }, g2 = function(c4) {\n    var u3 = c4.type, y5 = c4.chunk, E4 = c4.request, k3 = (y5 || {}).mediaInfo, m3 = k3 || {}, q3 = m3.type, P2 = m3.bitrateList;\n    P2 = P2 || [];\n    var L2 = {};\n    P2.forEach(function(we4, Q5) {\n      L2[Q5] = {}, L2[Q5].width = we4.width, L2[Q5].height = we4.height, L2[Q5].bitrate = we4.bandwidth, L2[Q5].attrs = {};\n    }), q3 === \"video\" ? f.video = L2 : q3 === \"audio\" ? f.audio = L2 : f.media = L2;\n    var R2 = qt(E4, t2), Y5 = R2.requestStart, ge4 = R2.requestResponseStart, be3 = R2.requestResponseEnd, W4 = R2.requestResponseHeaders, ae5 = R2.requestMediaDuration, Ue4 = R2.requestHostname, Fe3 = R2.requestUrl, Ve4 = R2.requestId;\n    o(\"requestcompleted\", { request_event_type: u3, request_start: Y5, request_response_start: ge4, request_response_end: be3, request_bytes_loaded: -1, request_type: q3 + \"_init\", request_response_headers: W4, request_hostname: Ue4, request_id: Ve4, request_url: Fe3, request_media_duration: ae5, request_rendition_lists: f });\n  };\n  n2 >= 4 ? t2.on(\"initFragmentLoaded\", g2) : t2.on(\"initFragmentLoaded\", T3);\n  var x4 = function(c4) {\n    var u3 = c4.type, y5 = c4.fragmentModel, E4 = c4.chunk, k3 = h3(y5);\n    v4({ type: u3, request: k3, chunk: E4 });\n  }, v4 = function(c4) {\n    var u3 = c4.type, y5 = c4.chunk, E4 = c4.request, k3 = y5 || {}, m3 = k3.mediaInfo, q3 = k3.start, P2 = m3 || {}, L2 = P2.type, R2 = qt(E4, t2), Y5 = R2.requestStart, ge4 = R2.requestResponseStart, be3 = R2.requestResponseEnd, W4 = R2.requestBytesLoaded, ae5 = R2.requestResponseHeaders, Ue4 = R2.requestMediaDuration, Fe3 = R2.requestHostname, Ve4 = R2.requestUrl, we4 = R2.requestId, Q5 = ci(L2, t2), zr = Q5.currentLevel, Kr = Q5.renditionWidth, Yr = Q5.renditionHeight, Xr = Q5.renditionBitrate;\n    o(\"requestcompleted\", { request_event_type: u3, request_start: Y5, request_response_start: ge4, request_response_end: be3, request_bytes_loaded: W4, request_type: L2, request_response_headers: ae5, request_hostname: Fe3, request_id: we4, request_url: Ve4, request_media_start_time: q3, request_media_duration: Ue4, request_current_level: zr, request_labeled_bitrate: Xr, request_video_width: Kr, request_video_height: Yr });\n  };\n  n2 >= 4 ? t2.on(\"mediaFragmentLoaded\", v4) : t2.on(\"mediaFragmentLoaded\", x4);\n  var l = { video: void 0, audio: void 0, totalBitrate: void 0 }, w2 = function() {\n    if (l.video && typeof l.video.bitrate == \"number\") {\n      if (!(l.video.width && l.video.height)) {\n        i2.warn(\"have bitrate info for video but missing width/height\");\n        return;\n      }\n      var c4 = l.video.bitrate;\n      if (l.audio && typeof l.audio.bitrate == \"number\" && (c4 += l.audio.bitrate), c4 !== l.totalBitrate) return l.totalBitrate = c4, { video_source_bitrate: c4, video_source_height: l.video.height, video_source_width: l.video.width, video_source_codec: fi(l.video.codec) };\n    }\n  }, D3 = function(c4, u3, y5) {\n    if (typeof c4.newQuality != \"number\") {\n      i2.warn(\"missing evt.newQuality in qualityChangeRendered event\", c4);\n      return;\n    }\n    var E4 = c4.mediaType;\n    if (E4 === \"audio\" || E4 === \"video\") {\n      var k3 = t2.getBitrateInfoListFor(E4).find(function(q3) {\n        var P2 = q3.qualityIndex;\n        return P2 === c4.newQuality;\n      });\n      if (!(k3 && typeof k3.bitrate == \"number\")) {\n        i2.warn(\"missing bitrate info for \".concat(E4));\n        return;\n      }\n      l[E4] = ce(ne({}, k3), { codec: t2.getCurrentTrackFor(E4).codec });\n      var m3 = w2();\n      m3 && o(\"renditionchange\", m3);\n    }\n  };\n  t2.on(\"qualityChangeRendered\", D3);\n  var p3 = function(c4) {\n    var u3 = c4.request, y5 = c4.mediaType;\n    u3 = u3 || {}, o(\"requestcanceled\", { request_event_type: u3.type + \"_\" + u3.action, request_url: u3.url, request_type: y5, request_hostname: F(u3.url) });\n  };\n  t2.on(\"fragmentLoadingAbandoned\", p3);\n  var _3 = function(c4) {\n    var u3 = c4.error, y5, E4, k3 = (u3 == null || (y5 = u3.data) === null || y5 === void 0 ? void 0 : y5.request) || {}, m3 = (u3 == null || (E4 = u3.data) === null || E4 === void 0 ? void 0 : E4.response) || {};\n    (u3 == null ? void 0 : u3.code) === 27 && o(\"requestfailed\", { request_error: k3.type + \"_\" + k3.action, request_url: k3.url, request_hostname: F(k3.url), request_type: k3.mediaType, request_error_code: m3.status, request_error_text: m3.statusText });\n    var q3 = \"\".concat(k3 != null && k3.url ? \"url: \".concat(k3.url, \"\\n\") : \"\") + \"\".concat(m3 != null && m3.status || m3 != null && m3.statusText ? \"response: \".concat(m3 == null ? void 0 : m3.status, \", \").concat(m3 == null ? void 0 : m3.statusText, \"\\n\") : \"\");\n    o(\"error\", { player_error_code: u3 == null ? void 0 : u3.code, player_error_message: u3 == null ? void 0 : u3.message, player_error_context: q3 });\n  };\n  t2.on(\"error\", _3), t2._stopMuxMonitor = function() {\n    t2.off(\"manifestLoaded\", s), t2.off(\"initFragmentLoaded\", g2), t2.off(\"mediaFragmentLoaded\", v4), t2.off(\"qualityChangeRendered\", D3), t2.off(\"error\", _3), t2.off(\"fragmentLoadingAbandoned\", p3), delete t2._stopMuxMonitor;\n  };\n};\nvar Ot = function(r10) {\n  r10 && typeof r10._stopMuxMonitor == \"function\" && r10._stopMuxMonitor();\n};\nvar It = 0;\nvar pi = function() {\n  \"use strict\";\n  function r10() {\n    S(this, r10), d(this, \"_listeners\", void 0);\n  }\n  return M(r10, [{ key: \"on\", value: function(t2, a2, i2) {\n    return a2._eventEmitterGuid = a2._eventEmitterGuid || ++It, this._listeners = this._listeners || {}, this._listeners[t2] = this._listeners[t2] || [], i2 && (a2 = a2.bind(i2)), this._listeners[t2].push(a2), a2;\n  } }, { key: \"off\", value: function(t2, a2) {\n    var i2 = this._listeners && this._listeners[t2];\n    i2 && i2.forEach(function(n2, o) {\n      n2._eventEmitterGuid === a2._eventEmitterGuid && i2.splice(o, 1);\n    });\n  } }, { key: \"one\", value: function(t2, a2, i2) {\n    var n2 = this;\n    a2._eventEmitterGuid = a2._eventEmitterGuid || ++It;\n    var o = function() {\n      n2.off(t2, o), a2.apply(i2 || this, arguments);\n    };\n    o._eventEmitterGuid = a2._eventEmitterGuid, this.on(t2, o);\n  } }, { key: \"emit\", value: function(t2, a2) {\n    var i2 = this;\n    if (this._listeners) {\n      a2 = a2 || {};\n      var n2 = this._listeners[\"before*\"] || [], o = this._listeners[t2] || [], s = this._listeners[\"after\" + t2] || [], f = function(h3, T3) {\n        h3 = h3.slice(), h3.forEach(function(g2) {\n          g2.call(i2, { type: t2 }, T3);\n        });\n      };\n      f(n2, a2), f(o, a2), f(s, a2);\n    }\n  } }]), r10;\n}();\nvar Lt = pi;\nvar Ce = B(J());\nvar vi = function() {\n  \"use strict\";\n  function r10(e) {\n    var t2 = this;\n    S(this, r10), d(this, \"_playbackHeartbeatInterval\", void 0), d(this, \"_playheadShouldBeProgressing\", void 0), d(this, \"pm\", void 0), this.pm = e, this._playbackHeartbeatInterval = null, this._playheadShouldBeProgressing = false, e.on(\"playing\", function() {\n      t2._playheadShouldBeProgressing = true;\n    }), e.on(\"play\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"playing\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"adbreakstart\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"adplay\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"adplaying\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"devicewake\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"viewstart\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"rebufferstart\", this._startPlaybackHeartbeatInterval.bind(this)), e.on(\"pause\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"ended\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"viewend\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"error\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"aderror\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"adpause\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"adended\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"adbreakend\", this._stopPlaybackHeartbeatInterval.bind(this)), e.on(\"seeked\", function() {\n      e.data.player_is_paused ? t2._stopPlaybackHeartbeatInterval() : t2._startPlaybackHeartbeatInterval();\n    }), e.on(\"timeupdate\", function() {\n      t2._playbackHeartbeatInterval !== null && e.emit(\"playbackheartbeat\");\n    }), e.on(\"devicesleep\", function(a2, i2) {\n      t2._playbackHeartbeatInterval !== null && (Ce.default.clearInterval(t2._playbackHeartbeatInterval), e.emit(\"playbackheartbeatend\", { viewer_time: i2.viewer_time }), t2._playbackHeartbeatInterval = null);\n    });\n  }\n  return M(r10, [{ key: \"_startPlaybackHeartbeatInterval\", value: function() {\n    var t2 = this;\n    this._playbackHeartbeatInterval === null && (this.pm.emit(\"playbackheartbeat\"), this._playbackHeartbeatInterval = Ce.default.setInterval(function() {\n      t2.pm.emit(\"playbackheartbeat\");\n    }, this.pm.playbackHeartbeatTime));\n  } }, { key: \"_stopPlaybackHeartbeatInterval\", value: function() {\n    this._playheadShouldBeProgressing = false, this._playbackHeartbeatInterval !== null && (Ce.default.clearInterval(this._playbackHeartbeatInterval), this.pm.emit(\"playbackheartbeatend\"), this._playbackHeartbeatInterval = null);\n  } }]), r10;\n}();\nvar Nt = vi;\nvar mi = function r(e) {\n  \"use strict\";\n  var t2 = this;\n  S(this, r), d(this, \"viewErrored\", void 0), e.on(\"viewinit\", function() {\n    t2.viewErrored = false;\n  }), e.on(\"error\", function(a2, i2) {\n    try {\n      var n2 = e.errorTranslator({ player_error_code: i2.player_error_code, player_error_message: i2.player_error_message, player_error_context: i2.player_error_context, player_error_severity: i2.player_error_severity, player_error_business_exception: i2.player_error_business_exception });\n      n2 && (e.data.player_error_code = n2.player_error_code || i2.player_error_code, e.data.player_error_message = n2.player_error_message || i2.player_error_message, e.data.player_error_context = n2.player_error_context || i2.player_error_context, e.data.player_error_severity = n2.player_error_severity || i2.player_error_severity, e.data.player_error_business_exception = n2.player_error_business_exception || i2.player_error_business_exception, t2.viewErrored = true);\n    } catch (o) {\n      e.mux.log.warn(\"Exception in error translator callback.\", o), t2.viewErrored = true;\n    }\n  }), e.on(\"aftererror\", function() {\n    var a2, i2, n2, o, s;\n    (a2 = e.data) === null || a2 === void 0 || delete a2.player_error_code, (i2 = e.data) === null || i2 === void 0 || delete i2.player_error_message, (n2 = e.data) === null || n2 === void 0 || delete n2.player_error_context, (o = e.data) === null || o === void 0 || delete o.player_error_severity, (s = e.data) === null || s === void 0 || delete s.player_error_business_exception;\n  });\n};\nvar Pt = mi;\nvar hi = function() {\n  \"use strict\";\n  function r10(e) {\n    S(this, r10), d(this, \"_watchTimeTrackerLastCheckedTime\", void 0), d(this, \"pm\", void 0), this.pm = e, this._watchTimeTrackerLastCheckedTime = null, e.on(\"playbackheartbeat\", this._updateWatchTime.bind(this)), e.on(\"playbackheartbeatend\", this._clearWatchTimeState.bind(this));\n  }\n  return M(r10, [{ key: \"_updateWatchTime\", value: function(t2, a2) {\n    var i2 = a2.viewer_time;\n    this._watchTimeTrackerLastCheckedTime === null && (this._watchTimeTrackerLastCheckedTime = i2), O(this.pm.data, \"view_watch_time\", i2 - this._watchTimeTrackerLastCheckedTime), this._watchTimeTrackerLastCheckedTime = i2;\n  } }, { key: \"_clearWatchTimeState\", value: function(t2, a2) {\n    this._updateWatchTime(t2, a2), this._watchTimeTrackerLastCheckedTime = null;\n  } }]), r10;\n}();\nvar Ct = hi;\nvar yi = function() {\n  \"use strict\";\n  function r10(e) {\n    var t2 = this;\n    S(this, r10), d(this, \"_playbackTimeTrackerLastPlayheadPosition\", void 0), d(this, \"_lastTime\", void 0), d(this, \"_isAdPlaying\", void 0), d(this, \"_callbackUpdatePlaybackTime\", void 0), d(this, \"pm\", void 0), this.pm = e, this._playbackTimeTrackerLastPlayheadPosition = -1, this._lastTime = A.now(), this._isAdPlaying = false, this._callbackUpdatePlaybackTime = null;\n    var a2 = this._startPlaybackTimeTracking.bind(this);\n    e.on(\"playing\", a2), e.on(\"adplaying\", a2), e.on(\"seeked\", a2);\n    var i2 = this._stopPlaybackTimeTracking.bind(this);\n    e.on(\"playbackheartbeatend\", i2), e.on(\"seeking\", i2), e.on(\"adplaying\", function() {\n      t2._isAdPlaying = true;\n    }), e.on(\"adended\", function() {\n      t2._isAdPlaying = false;\n    }), e.on(\"adpause\", function() {\n      t2._isAdPlaying = false;\n    }), e.on(\"adbreakstart\", function() {\n      t2._isAdPlaying = false;\n    }), e.on(\"adbreakend\", function() {\n      t2._isAdPlaying = false;\n    }), e.on(\"adplay\", function() {\n      t2._isAdPlaying = false;\n    }), e.on(\"viewinit\", function() {\n      t2._playbackTimeTrackerLastPlayheadPosition = -1, t2._lastTime = A.now(), t2._isAdPlaying = false, t2._callbackUpdatePlaybackTime = null;\n    });\n  }\n  return M(r10, [{ key: \"_startPlaybackTimeTracking\", value: function() {\n    this._callbackUpdatePlaybackTime === null && (this._callbackUpdatePlaybackTime = this._updatePlaybackTime.bind(this), this._playbackTimeTrackerLastPlayheadPosition = this.pm.data.player_playhead_time, this.pm.on(\"playbackheartbeat\", this._callbackUpdatePlaybackTime));\n  } }, { key: \"_stopPlaybackTimeTracking\", value: function() {\n    this._callbackUpdatePlaybackTime && (this._updatePlaybackTime(), this.pm.off(\"playbackheartbeat\", this._callbackUpdatePlaybackTime), this._callbackUpdatePlaybackTime = null, this._playbackTimeTrackerLastPlayheadPosition = -1);\n  } }, { key: \"_updatePlaybackTime\", value: function() {\n    var t2 = this.pm.data.player_playhead_time, a2 = A.now(), i2 = -1;\n    this._playbackTimeTrackerLastPlayheadPosition >= 0 && t2 > this._playbackTimeTrackerLastPlayheadPosition ? i2 = t2 - this._playbackTimeTrackerLastPlayheadPosition : this._isAdPlaying && (i2 = a2 - this._lastTime), i2 > 0 && i2 <= 1e3 && O(this.pm.data, \"view_content_playback_time\", i2), this._playbackTimeTrackerLastPlayheadPosition = t2, this._lastTime = a2;\n  } }]), r10;\n}();\nvar Mt = yi;\nvar gi = function() {\n  \"use strict\";\n  function r10(e) {\n    S(this, r10), d(this, \"pm\", void 0), this.pm = e;\n    var t2 = this._updatePlayheadTime.bind(this);\n    e.on(\"playbackheartbeat\", t2), e.on(\"playbackheartbeatend\", t2), e.on(\"timeupdate\", t2), e.on(\"destroy\", function() {\n      e.off(\"timeupdate\", t2);\n    });\n  }\n  return M(r10, [{ key: \"_updateMaxPlayheadPosition\", value: function() {\n    this.pm.data.view_max_playhead_position = typeof this.pm.data.view_max_playhead_position == \"undefined\" ? this.pm.data.player_playhead_time : Math.max(this.pm.data.view_max_playhead_position, this.pm.data.player_playhead_time);\n  } }, { key: \"_updatePlayheadTime\", value: function(t2, a2) {\n    var i2 = this, n2 = function() {\n      i2.pm.currentFragmentPDT && i2.pm.currentFragmentStart && (i2.pm.data.player_program_time = i2.pm.currentFragmentPDT + i2.pm.data.player_playhead_time - i2.pm.currentFragmentStart);\n    };\n    if (a2 && a2.player_playhead_time) this.pm.data.player_playhead_time = a2.player_playhead_time, n2(), this._updateMaxPlayheadPosition();\n    else if (this.pm.getPlayheadTime) {\n      var o = this.pm.getPlayheadTime();\n      typeof o != \"undefined\" && (this.pm.data.player_playhead_time = o, n2(), this._updateMaxPlayheadPosition());\n    }\n  } }]), r10;\n}();\nvar Ht = gi;\nvar Bt = 5 * 60 * 1e3;\nvar bi = function r2(e) {\n  \"use strict\";\n  if (S(this, r2), !e.disableRebufferTracking) {\n    var t2, a2 = function(n2, o) {\n      i2(o), t2 = void 0;\n    }, i2 = function(n2) {\n      if (t2) {\n        var o = n2.viewer_time - t2;\n        O(e.data, \"view_rebuffer_duration\", o), t2 = n2.viewer_time, e.data.view_rebuffer_duration > Bt && (e.emit(\"viewend\"), e.send(\"viewend\"), e.mux.log.warn(\"Ending view after rebuffering for longer than \".concat(Bt, \"ms, future events will be ignored unless a programchange or videochange occurs.\")));\n      }\n      e.data.view_watch_time >= 0 && e.data.view_rebuffer_count > 0 && (e.data.view_rebuffer_frequency = e.data.view_rebuffer_count / e.data.view_watch_time, e.data.view_rebuffer_percentage = e.data.view_rebuffer_duration / e.data.view_watch_time);\n    };\n    e.on(\"playbackheartbeat\", function(n2, o) {\n      return i2(o);\n    }), e.on(\"rebufferstart\", function(n2, o) {\n      t2 || (O(e.data, \"view_rebuffer_count\", 1), t2 = o.viewer_time, e.one(\"rebufferend\", a2));\n    }), e.on(\"viewinit\", function() {\n      t2 = void 0, e.off(\"rebufferend\", a2);\n    });\n  }\n};\nvar Ut = bi;\nvar wi = function() {\n  \"use strict\";\n  function r10(e) {\n    var t2 = this;\n    S(this, r10), d(this, \"_lastCheckedTime\", void 0), d(this, \"_lastPlayheadTime\", void 0), d(this, \"_lastPlayheadTimeUpdatedTime\", void 0), d(this, \"_rebuffering\", void 0), d(this, \"pm\", void 0), this.pm = e, !(e.disableRebufferTracking || e.disablePlayheadRebufferTracking) && (this._lastCheckedTime = null, this._lastPlayheadTime = null, this._lastPlayheadTimeUpdatedTime = null, e.on(\"playbackheartbeat\", this._checkIfRebuffering.bind(this)), e.on(\"playbackheartbeatend\", this._cleanupRebufferTracker.bind(this)), e.on(\"seeking\", function() {\n      t2._cleanupRebufferTracker(null, { viewer_time: A.now() });\n    }));\n  }\n  return M(r10, [{ key: \"_checkIfRebuffering\", value: function(t2, a2) {\n    if (this.pm.seekingTracker.isSeeking || this.pm.adTracker.isAdBreak || !this.pm.playbackHeartbeat._playheadShouldBeProgressing) {\n      this._cleanupRebufferTracker(t2, a2);\n      return;\n    }\n    if (this._lastCheckedTime === null) {\n      this._prepareRebufferTrackerState(a2.viewer_time);\n      return;\n    }\n    if (this._lastPlayheadTime !== this.pm.data.player_playhead_time) {\n      this._cleanupRebufferTracker(t2, a2, true);\n      return;\n    }\n    var i2 = a2.viewer_time - this._lastPlayheadTimeUpdatedTime;\n    typeof this.pm.sustainedRebufferThreshold == \"number\" && i2 >= this.pm.sustainedRebufferThreshold && (this._rebuffering || (this._rebuffering = true, this.pm.emit(\"rebufferstart\", { viewer_time: this._lastPlayheadTimeUpdatedTime }))), this._lastCheckedTime = a2.viewer_time;\n  } }, { key: \"_clearRebufferTrackerState\", value: function() {\n    this._lastCheckedTime = null, this._lastPlayheadTime = null, this._lastPlayheadTimeUpdatedTime = null;\n  } }, { key: \"_prepareRebufferTrackerState\", value: function(t2) {\n    this._lastCheckedTime = t2, this._lastPlayheadTime = this.pm.data.player_playhead_time, this._lastPlayheadTimeUpdatedTime = t2;\n  } }, { key: \"_cleanupRebufferTracker\", value: function(t2, a2) {\n    var i2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n    if (this._rebuffering) this._rebuffering = false, this.pm.emit(\"rebufferend\", { viewer_time: a2.viewer_time });\n    else {\n      if (this._lastCheckedTime === null) return;\n      var n2 = this.pm.data.player_playhead_time - this._lastPlayheadTime, o = a2.viewer_time - this._lastPlayheadTimeUpdatedTime;\n      typeof this.pm.minimumRebufferDuration == \"number\" && n2 > 0 && o - n2 > this.pm.minimumRebufferDuration && (this._lastCheckedTime = null, this.pm.emit(\"rebufferstart\", { viewer_time: this._lastPlayheadTimeUpdatedTime }), this.pm.emit(\"rebufferend\", { viewer_time: this._lastPlayheadTimeUpdatedTime + o - n2 }));\n    }\n    i2 ? this._prepareRebufferTrackerState(a2.viewer_time) : this._clearRebufferTrackerState();\n  } }]), r10;\n}();\nvar Ft = wi;\nvar Ti = function() {\n  \"use strict\";\n  function r10(e) {\n    var t2 = this;\n    S(this, r10), d(this, \"NAVIGATION_START\", void 0), d(this, \"pm\", void 0), this.pm = e, e.on(\"viewinit\", function() {\n      var a2 = e.data, i2 = a2.view_id;\n      if (!a2.view_program_changed) {\n        var n2 = function(o, s) {\n          var f = s.viewer_time;\n          o.type === \"playing\" && typeof e.data.view_time_to_first_frame == \"undefined\" ? t2.calculateTimeToFirstFrame(f || A.now(), i2) : o.type === \"adplaying\" && (typeof e.data.view_time_to_first_frame == \"undefined\" || t2._inPrerollPosition()) && t2.calculateTimeToFirstFrame(f || A.now(), i2);\n        };\n        e.one(\"playing\", n2), e.one(\"adplaying\", n2), e.one(\"viewend\", function() {\n          e.off(\"playing\", n2), e.off(\"adplaying\", n2);\n        });\n      }\n    });\n  }\n  return M(r10, [{ key: \"_inPrerollPosition\", value: function() {\n    return typeof this.pm.data.view_content_playback_time == \"undefined\" || this.pm.data.view_content_playback_time <= 1e3;\n  } }, { key: \"calculateTimeToFirstFrame\", value: function(t2, a2) {\n    a2 === this.pm.data.view_id && (this.pm.watchTimeTracker._updateWatchTime(null, { viewer_time: t2 }), this.pm.data.view_time_to_first_frame = this.pm.data.view_watch_time, (this.pm.data.player_autoplay_on || this.pm.data.video_is_autoplay) && this.NAVIGATION_START && (this.pm.data.view_aggregate_startup_time = this.pm.data.view_start + this.pm.data.view_watch_time - this.NAVIGATION_START));\n  } }]), r10;\n}();\nvar Vt = Ti;\nvar Ei = function r3(e) {\n  \"use strict\";\n  var t2 = this;\n  S(this, r3), d(this, \"_lastPlayerHeight\", void 0), d(this, \"_lastPlayerWidth\", void 0), d(this, \"_lastPlayheadPosition\", void 0), d(this, \"_lastSourceHeight\", void 0), d(this, \"_lastSourceWidth\", void 0), e.on(\"viewinit\", function() {\n    t2._lastPlayheadPosition = -1;\n  });\n  var a2 = [\"pause\", \"rebufferstart\", \"seeking\", \"error\", \"adbreakstart\", \"hb\"], i2 = [\"playing\", \"hb\"];\n  a2.forEach(function(n2) {\n    e.on(n2, function() {\n      if (t2._lastPlayheadPosition >= 0 && e.data.player_playhead_time >= 0 && t2._lastPlayerWidth >= 0 && t2._lastSourceWidth > 0 && t2._lastPlayerHeight >= 0 && t2._lastSourceHeight > 0) {\n        var o = e.data.player_playhead_time - t2._lastPlayheadPosition;\n        if (o < 0) {\n          t2._lastPlayheadPosition = -1;\n          return;\n        }\n        var s = Math.min(t2._lastPlayerWidth / t2._lastSourceWidth, t2._lastPlayerHeight / t2._lastSourceHeight), f = Math.max(0, s - 1), h3 = Math.max(0, 1 - s);\n        e.data.view_max_upscale_percentage = Math.max(e.data.view_max_upscale_percentage || 0, f), e.data.view_max_downscale_percentage = Math.max(e.data.view_max_downscale_percentage || 0, h3), O(e.data, \"view_total_content_playback_time\", o), O(e.data, \"view_total_upscaling\", f * o), O(e.data, \"view_total_downscaling\", h3 * o);\n      }\n      t2._lastPlayheadPosition = -1;\n    });\n  }), i2.forEach(function(n2) {\n    e.on(n2, function() {\n      t2._lastPlayheadPosition = e.data.player_playhead_time, t2._lastPlayerWidth = e.data.player_width, t2._lastPlayerHeight = e.data.player_height, t2._lastSourceWidth = e.data.video_source_width, t2._lastSourceHeight = e.data.video_source_height;\n    });\n  });\n};\nvar Wt = Ei;\nvar ki = 2e3;\nvar xi = function r4(e) {\n  \"use strict\";\n  var t2 = this;\n  S(this, r4), d(this, \"isSeeking\", void 0), this.isSeeking = false;\n  var a2 = -1, i2 = function() {\n    var n2 = A.now(), o = (e.data.viewer_time || n2) - (a2 || n2);\n    O(e.data, \"view_seek_duration\", o), e.data.view_max_seek_time = Math.max(e.data.view_max_seek_time || 0, o), t2.isSeeking = false, a2 = -1;\n  };\n  e.on(\"seeking\", function(n2, o) {\n    if (Object.assign(e.data, o), t2.isSeeking && o.viewer_time - a2 <= ki) {\n      a2 = o.viewer_time;\n      return;\n    }\n    t2.isSeeking && i2(), t2.isSeeking = true, a2 = o.viewer_time, O(e.data, \"view_seek_count\", 1), e.send(\"seeking\");\n  }), e.on(\"seeked\", function() {\n    i2();\n  }), e.on(\"viewend\", function() {\n    t2.isSeeking && (i2(), e.send(\"seeked\")), t2.isSeeking = false, a2 = -1;\n  });\n};\nvar jt = xi;\nvar Gt = function(e, t2) {\n  e.push(t2), e.sort(function(a2, i2) {\n    return a2.viewer_time - i2.viewer_time;\n  });\n};\nvar Di = [\"adbreakstart\", \"adrequest\", \"adresponse\", \"adplay\", \"adplaying\", \"adpause\", \"adended\", \"adbreakend\", \"aderror\", \"adclicked\", \"adskipped\"];\nvar Si = function() {\n  \"use strict\";\n  function r10(e) {\n    var t2 = this;\n    S(this, r10), d(this, \"_adHasPlayed\", void 0), d(this, \"_adRequests\", void 0), d(this, \"_adResponses\", void 0), d(this, \"_currentAdRequestNumber\", void 0), d(this, \"_currentAdResponseNumber\", void 0), d(this, \"_prerollPlayTime\", void 0), d(this, \"_wouldBeNewAdPlay\", void 0), d(this, \"isAdBreak\", void 0), d(this, \"pm\", void 0), this.pm = e, e.on(\"viewinit\", function() {\n      t2.isAdBreak = false, t2._currentAdRequestNumber = 0, t2._currentAdResponseNumber = 0, t2._adRequests = [], t2._adResponses = [], t2._adHasPlayed = false, t2._wouldBeNewAdPlay = true, t2._prerollPlayTime = void 0;\n    }), Di.forEach(function(i2) {\n      return e.on(i2, t2._updateAdData.bind(t2));\n    });\n    var a2 = function() {\n      t2.isAdBreak = false;\n    };\n    e.on(\"adbreakstart\", function() {\n      t2.isAdBreak = true;\n    }), e.on(\"play\", a2), e.on(\"playing\", a2), e.on(\"viewend\", a2), e.on(\"adrequest\", function(i2, n2) {\n      n2 = Object.assign({ ad_request_id: \"generatedAdRequestId\" + t2._currentAdRequestNumber++ }, n2), Gt(t2._adRequests, n2), O(e.data, \"view_ad_request_count\"), t2.inPrerollPosition() && (e.data.view_preroll_requested = true, t2._adHasPlayed || O(e.data, \"view_preroll_request_count\"));\n    }), e.on(\"adresponse\", function(i2, n2) {\n      n2 = Object.assign({ ad_request_id: \"generatedAdRequestId\" + t2._currentAdResponseNumber++ }, n2), Gt(t2._adResponses, n2);\n      var o = t2.findAdRequest(n2.ad_request_id);\n      o && O(e.data, \"view_ad_request_time\", Math.max(0, n2.viewer_time - o.viewer_time));\n    }), e.on(\"adplay\", function(i2, n2) {\n      t2._adHasPlayed = true, t2._wouldBeNewAdPlay && (t2._wouldBeNewAdPlay = false, O(e.data, \"view_ad_played_count\")), t2.inPrerollPosition() && !e.data.view_preroll_played && (e.data.view_preroll_played = true, t2._adRequests.length > 0 && (e.data.view_preroll_request_time = Math.max(0, n2.viewer_time - t2._adRequests[0].viewer_time)), e.data.view_start && (e.data.view_startup_preroll_request_time = Math.max(0, n2.viewer_time - e.data.view_start)), t2._prerollPlayTime = n2.viewer_time);\n    }), e.on(\"adplaying\", function(i2, n2) {\n      t2.inPrerollPosition() && typeof e.data.view_preroll_load_time == \"undefined\" && typeof t2._prerollPlayTime != \"undefined\" && (e.data.view_preroll_load_time = n2.viewer_time - t2._prerollPlayTime, e.data.view_startup_preroll_load_time = n2.viewer_time - t2._prerollPlayTime);\n    }), e.on(\"adclicked\", function(i2, n2) {\n      t2._wouldBeNewAdPlay || O(e.data, \"view_ad_clicked_count\");\n    }), e.on(\"adskipped\", function(i2, n2) {\n      t2._wouldBeNewAdPlay || O(e.data, \"view_ad_skipped_count\");\n    }), e.on(\"adended\", function() {\n      t2._wouldBeNewAdPlay = true;\n    }), e.on(\"aderror\", function() {\n      t2._wouldBeNewAdPlay = true;\n    });\n  }\n  return M(r10, [{ key: \"inPrerollPosition\", value: function() {\n    return typeof this.pm.data.view_content_playback_time == \"undefined\" || this.pm.data.view_content_playback_time <= 1e3;\n  } }, { key: \"findAdRequest\", value: function(t2) {\n    for (var a2 = 0; a2 < this._adRequests.length; a2++) if (this._adRequests[a2].ad_request_id === t2) return this._adRequests[a2];\n  } }, { key: \"_updateAdData\", value: function(t2, a2) {\n    if (this.inPrerollPosition()) {\n      if (!this.pm.data.view_preroll_ad_tag_hostname && a2.ad_tag_url) {\n        var i2 = j(ee(a2.ad_tag_url), 2), n2 = i2[0], o = i2[1];\n        this.pm.data.view_preroll_ad_tag_domain = o, this.pm.data.view_preroll_ad_tag_hostname = n2;\n      }\n      if (!this.pm.data.view_preroll_ad_asset_hostname && a2.ad_asset_url) {\n        var s = j(ee(a2.ad_asset_url), 2), f = s[0], h3 = s[1];\n        this.pm.data.view_preroll_ad_asset_domain = h3, this.pm.data.view_preroll_ad_asset_hostname = f;\n      }\n    }\n    this.pm.data.ad_asset_url = a2 == null ? void 0 : a2.ad_asset_url, this.pm.data.ad_tag_url = a2 == null ? void 0 : a2.ad_tag_url, this.pm.data.ad_creative_id = a2 == null ? void 0 : a2.ad_creative_id, this.pm.data.ad_id = a2 == null ? void 0 : a2.ad_id, this.pm.data.ad_universal_id = a2 == null ? void 0 : a2.ad_universal_id;\n  } }]), r10;\n}();\nvar Jt = Si;\nvar je = B(J());\nvar Ri = function r5(e) {\n  \"use strict\";\n  S(this, r5);\n  var t2, a2, i2 = function() {\n    e.disableRebufferTracking || (O(e.data, \"view_waiting_rebuffer_count\", 1), t2 = A.now(), a2 = je.default.setInterval(function() {\n      if (t2) {\n        var h3 = A.now();\n        O(e.data, \"view_waiting_rebuffer_duration\", h3 - t2), t2 = h3;\n      }\n    }, 250));\n  }, n2 = function() {\n    e.disableRebufferTracking || t2 && (O(e.data, \"view_waiting_rebuffer_duration\", A.now() - t2), t2 = false, je.default.clearInterval(a2));\n  }, o = false, s = function() {\n    o = true;\n  }, f = function() {\n    o = false, n2();\n  };\n  e.on(\"waiting\", function() {\n    o && i2();\n  }), e.on(\"playing\", function() {\n    n2(), s();\n  }), e.on(\"pause\", f), e.on(\"seeking\", f);\n};\nvar Qt = Ri;\nvar qi = function r6(e) {\n  \"use strict\";\n  var t2 = this;\n  S(this, r6), d(this, \"lastWallClockTime\", void 0);\n  var a2 = function() {\n    t2.lastWallClockTime = A.now(), e.on(\"before*\", i2);\n  }, i2 = function(n2) {\n    var o = A.now(), s = t2.lastWallClockTime;\n    t2.lastWallClockTime = o, o - s > 3e4 && (e.emit(\"devicesleep\", { viewer_time: s }), Object.assign(e.data, { viewer_time: s }), e.send(\"devicesleep\"), e.emit(\"devicewake\", { viewer_time: o }), Object.assign(e.data, { viewer_time: o }), e.send(\"devicewake\"));\n  };\n  e.one(\"playbackheartbeat\", a2), e.on(\"playbackheartbeatend\", function() {\n    e.off(\"before*\", i2), e.one(\"playbackheartbeat\", a2);\n  });\n};\nvar zt = qi;\nvar Me = B(J());\nvar Je = B(Xt());\nvar Qe = B(er());\nvar tr = \"muxData\";\nvar rr = function() {\n  var e;\n  try {\n    e = Je.default.parse(Qe.default.get(tr) || \"\");\n  } catch (t2) {\n    e = {};\n  }\n  return e;\n};\nvar ir = function(e) {\n  try {\n    Qe.default.set(tr, Je.default.stringify(e), { expires: 365 });\n  } catch (t2) {\n  }\n};\nvar ar = function() {\n  var e = rr();\n  return e.mux_viewer_id = e.mux_viewer_id || X(), e.msn = e.msn || Math.random(), ir(e), { mux_viewer_id: e.mux_viewer_id, mux_sample_number: e.msn };\n};\nvar nr = function() {\n  var e = rr(), t2 = A.now();\n  return e.session_start && (e.sst = e.session_start, delete e.session_start), e.session_id && (e.sid = e.session_id, delete e.session_id), e.session_expires && (e.sex = e.session_expires, delete e.session_expires), (!e.sex || e.sex < t2) && (e.sid = X(), e.sst = t2), e.sex = t2 + 25 * 60 * 1e3, ir(e), { session_id: e.sid, session_start: e.sst, session_expires: e.sex };\n};\nfunction ze(r10, e) {\n  var t2 = e.beaconCollectionDomain, a2 = e.beaconDomain;\n  if (t2) return \"https://\" + t2;\n  r10 = r10 || \"inferred\";\n  var i2 = a2 || \"litix.io\";\n  return r10.match(/^[a-z0-9]+$/) ? \"https://\" + r10 + \".\" + i2 : \"https://img.litix.io/a.gif\";\n}\nvar or = B(J());\nvar sr = function() {\n  var e;\n  switch (ur()) {\n    case \"cellular\":\n      e = \"cellular\";\n      break;\n    case \"ethernet\":\n      e = \"wired\";\n      break;\n    case \"wifi\":\n      e = \"wifi\";\n      break;\n    case void 0:\n      break;\n    default:\n      e = \"other\";\n  }\n  return e;\n};\nvar ur = function() {\n  var e = or.default.navigator, t2 = e && (e.connection || e.mozConnection || e.webkitConnection);\n  return t2 && t2.type;\n};\nsr.getConnectionFromAPI = ur;\nvar dr = sr;\nvar Ni = { a: \"env\", b: \"beacon\", c: \"custom\", d: \"ad\", e: \"event\", f: \"experiment\", i: \"internal\", m: \"mux\", n: \"response\", p: \"player\", q: \"request\", r: \"retry\", s: \"session\", t: \"timestamp\", u: \"viewer\", v: \"video\", w: \"page\", x: \"view\", y: \"sub\" };\nvar Pi = cr(Ni);\nvar Ci = { ad: \"ad\", ag: \"aggregate\", ap: \"api\", al: \"application\", ar: \"architecture\", as: \"asset\", au: \"autoplay\", av: \"average\", bi: \"bitrate\", br: \"break\", bw: \"browser\", by: \"bytes\", bz: \"business\", ca: \"cached\", cb: \"cancel\", cc: \"codec\", cd: \"code\", cg: \"category\", ch: \"changed\", ck: \"clicked\", cl: \"canceled\", cn: \"config\", co: \"count\", ce: \"counter\", cp: \"complete\", cr: \"creative\", ct: \"content\", cu: \"current\", cx: \"connection\", cz: \"context\", dg: \"downscaling\", dm: \"domain\", dn: \"cdn\", do: \"downscale\", dr: \"drm\", dp: \"dropped\", du: \"duration\", dv: \"device\", ec: \"encoding\", ed: \"edge\", en: \"end\", eg: \"engine\", em: \"embed\", er: \"error\", ep: \"experiments\", es: \"errorcode\", et: \"errortext\", ee: \"event\", ev: \"events\", ex: \"expires\", ez: \"exception\", fa: \"failed\", fi: \"first\", fm: \"family\", ft: \"format\", fp: \"fps\", fq: \"frequency\", fr: \"frame\", fs: \"fullscreen\", ha: \"has\", hb: \"holdback\", he: \"headers\", ho: \"host\", hn: \"hostname\", ht: \"height\", id: \"id\", ii: \"init\", in: \"instance\", ip: \"ip\", is: \"is\", ke: \"key\", la: \"language\", lb: \"labeled\", le: \"level\", li: \"live\", ld: \"loaded\", lo: \"load\", ls: \"lists\", lt: \"latency\", ma: \"max\", md: \"media\", me: \"message\", mf: \"manifest\", mi: \"mime\", ml: \"midroll\", mm: \"min\", mn: \"manufacturer\", mo: \"model\", mx: \"mux\", ne: \"newest\", nm: \"name\", no: \"number\", on: \"on\", os: \"os\", pa: \"paused\", pb: \"playback\", pd: \"producer\", pe: \"percentage\", pf: \"played\", pg: \"program\", ph: \"playhead\", pi: \"plugin\", pl: \"preroll\", pn: \"playing\", po: \"poster\", pr: \"preload\", ps: \"position\", pt: \"part\", py: \"property\", ra: \"rate\", rd: \"requested\", re: \"rebuffer\", rf: \"rendition\", rm: \"remote\", ro: \"ratio\", rp: \"response\", rq: \"request\", rs: \"requests\", sa: \"sample\", sd: \"skipped\", se: \"session\", sk: \"seek\", sm: \"stream\", so: \"source\", sq: \"sequence\", sr: \"series\", st: \"start\", su: \"startup\", sv: \"server\", sw: \"software\", sy: \"severity\", ta: \"tag\", tc: \"tech\", te: \"text\", tg: \"target\", th: \"throughput\", ti: \"time\", tl: \"total\", to: \"to\", tt: \"title\", ty: \"type\", ug: \"upscaling\", un: \"universal\", up: \"upscale\", ur: \"url\", us: \"user\", va: \"variant\", vd: \"viewed\", vi: \"video\", ve: \"version\", vw: \"view\", vr: \"viewer\", wd: \"width\", wa: \"watch\", wt: \"waiting\" };\nvar lr = cr(Ci);\nfunction cr(r10) {\n  var e = {};\n  for (var t2 in r10) r10.hasOwnProperty(t2) && (e[r10[t2]] = t2);\n  return e;\n}\nfunction _e(r10) {\n  var e = {}, t2 = {};\n  return Object.keys(r10).forEach(function(a2) {\n    var i2 = false;\n    if (r10.hasOwnProperty(a2) && r10[a2] !== void 0) {\n      var n2 = a2.split(\"_\"), o = n2[0], s = Pi[o];\n      s || (I.info(\"Data key word `\" + n2[0] + \"` not expected in \" + a2), s = o + \"_\"), n2.splice(1).forEach(function(f) {\n        f === \"url\" && (i2 = true), lr[f] ? s += lr[f] : Number(f) && Math.floor(Number(f)) === Number(f) ? s += f : (I.info(\"Data key word `\" + f + \"` not expected in \" + a2), s += \"_\" + f + \"_\");\n      }), i2 ? t2[s] = r10[a2] : e[s] = r10[a2];\n    }\n  }), Object.assign(e, t2);\n}\nvar te = B(J());\nvar Mi = { maxBeaconSize: 300, maxQueueLength: 3600, baseTimeBetweenBeacons: 1e4, maxPayloadKBSize: 500 };\nvar Hi = 56 * 1024;\nvar Bi = [\"hb\", \"requestcompleted\", \"requestfailed\", \"requestcanceled\"];\nvar Ui = \"https://img.litix.io\";\nvar K = function(e) {\n  var t2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n  this._beaconUrl = e || Ui, this._eventQueue = [], this._postInFlight = false, this._failureCount = 0, this._sendTimeout = false, this._options = Object.assign({}, Mi, t2);\n};\nK.prototype.queueEvent = function(r10, e) {\n  var t2 = Object.assign({}, e);\n  return this._eventQueue.length <= this._options.maxQueueLength || r10 === \"eventrateexceeded\" ? (this._eventQueue.push(t2), this._sendTimeout || this._startBeaconSending(), this._eventQueue.length <= this._options.maxQueueLength) : false;\n};\nK.prototype.flushEvents = function() {\n  var r10 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;\n  if (r10 && this._eventQueue.length === 1) {\n    this._eventQueue.pop();\n    return;\n  }\n  this._eventQueue.length && this._sendBeaconQueue(), this._startBeaconSending();\n};\nK.prototype.destroy = function() {\n  var r10 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;\n  this.destroyed = true, r10 ? this._clearBeaconQueue() : this.flushEvents(), te.default.clearTimeout(this._sendTimeout);\n};\nK.prototype._clearBeaconQueue = function() {\n  var r10 = this._eventQueue.length > this._options.maxBeaconSize ? this._eventQueue.length - this._options.maxBeaconSize : 0, e = this._eventQueue.slice(r10);\n  r10 > 0 && Object.assign(e[e.length - 1], _e({ mux_view_message: \"event queue truncated\" }));\n  var t2 = this._createPayload(e);\n  fr(this._beaconUrl, t2, true, function() {\n  });\n};\nK.prototype._sendBeaconQueue = function() {\n  var r10 = this;\n  if (!this._postInFlight) {\n    var e = this._eventQueue.slice(0, this._options.maxBeaconSize);\n    this._eventQueue = this._eventQueue.slice(this._options.maxBeaconSize), this._postInFlight = true;\n    var t2 = this._createPayload(e), a2 = A.now();\n    fr(this._beaconUrl, t2, false, function(i2, n2) {\n      n2 ? (r10._eventQueue = e.concat(r10._eventQueue), r10._failureCount += 1, I.info(\"Error sending beacon: \" + n2)) : r10._failureCount = 0, r10._roundTripTime = A.now() - a2, r10._postInFlight = false;\n    });\n  }\n};\nK.prototype._getNextBeaconTime = function() {\n  if (!this._failureCount) return this._options.baseTimeBetweenBeacons;\n  var r10 = Math.pow(2, this._failureCount - 1);\n  return r10 = r10 * Math.random(), (1 + r10) * this._options.baseTimeBetweenBeacons;\n};\nK.prototype._startBeaconSending = function() {\n  var r10 = this;\n  te.default.clearTimeout(this._sendTimeout), !this.destroyed && (this._sendTimeout = te.default.setTimeout(function() {\n    r10._eventQueue.length && r10._sendBeaconQueue(), r10._startBeaconSending();\n  }, this._getNextBeaconTime()));\n};\nK.prototype._createPayload = function(r10) {\n  var e = this, t2 = { transmission_timestamp: Math.round(A.now()) };\n  this._roundTripTime && (t2.rtt_ms = Math.round(this._roundTripTime));\n  var a2, i2, n2, o = function() {\n    a2 = JSON.stringify({ metadata: t2, events: i2 || r10 }), n2 = a2.length / 1024;\n  }, s = function() {\n    return n2 <= e._options.maxPayloadKBSize;\n  };\n  return o(), s() || (I.info(\"Payload size is too big (\" + n2 + \" kb). Removing unnecessary events.\"), i2 = r10.filter(function(f) {\n    return Bi.indexOf(f.e) === -1;\n  }), o()), s() || (I.info(\"Payload size still too big (\" + n2 + \" kb). Cropping fields..\"), i2.forEach(function(f) {\n    for (var h3 in f) {\n      var T3 = f[h3], g2 = 50 * 1024;\n      typeof T3 == \"string\" && T3.length > g2 && (f[h3] = T3.substring(0, g2));\n    }\n  }), o()), a2;\n};\nvar Fi = function(r10) {\n  return r10.length <= Hi;\n};\nvar fr = function(r10, e, t2, a2) {\n  if (t2 && navigator && navigator.sendBeacon && navigator.sendBeacon(r10, e)) {\n    a2();\n    return;\n  }\n  if (te.default.fetch) {\n    te.default.fetch(r10, { method: \"POST\", body: e, headers: { \"Content-Type\": \"text/plain\" }, keepalive: Fi(e) }).then(function(n2) {\n      return a2(null, n2.ok ? null : \"Error\");\n    }).catch(function(n2) {\n      return a2(null, n2);\n    });\n    return;\n  }\n  if (te.default.XMLHttpRequest) {\n    var i2 = new te.default.XMLHttpRequest();\n    i2.onreadystatechange = function() {\n      if (i2.readyState === 4) return a2(null, i2.status !== 200 ? \"error\" : void 0);\n    }, i2.open(\"POST\", r10), i2.setRequestHeader(\"Content-Type\", \"text/plain\"), i2.send(e);\n    return;\n  }\n  a2();\n};\nvar _r = K;\nvar Vi = [\"env_key\", \"view_id\", \"view_sequence_number\", \"player_sequence_number\", \"beacon_domain\", \"player_playhead_time\", \"viewer_time\", \"mux_api_version\", \"event\", \"video_id\", \"player_instance_id\", \"player_error_code\", \"player_error_message\", \"player_error_context\", \"player_error_severity\", \"player_error_business_exception\"];\nvar Wi = [\"adplay\", \"adplaying\", \"adpause\", \"adfirstquartile\", \"admidpoint\", \"adthirdquartile\", \"adended\", \"adresponse\", \"adrequest\"];\nvar ji = [\"ad_id\", \"ad_creative_id\", \"ad_universal_id\"];\nvar Gi = [\"viewstart\", \"error\", \"ended\", \"viewend\"];\nvar Ji = 10 * 60 * 1e3;\nvar pr = function() {\n  \"use strict\";\n  function r10(e, t2) {\n    var a2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n    S(this, r10);\n    var i2, n2, o, s, f, h3, T3, g2, x4, v4, l, w2;\n    d(this, \"mux\", void 0), d(this, \"envKey\", void 0), d(this, \"options\", void 0), d(this, \"eventQueue\", void 0), d(this, \"sampleRate\", void 0), d(this, \"disableCookies\", void 0), d(this, \"respectDoNotTrack\", void 0), d(this, \"previousBeaconData\", void 0), d(this, \"lastEventTime\", void 0), d(this, \"rateLimited\", void 0), d(this, \"pageLevelData\", void 0), d(this, \"viewerData\", void 0), this.mux = e, this.envKey = t2, this.options = a2, this.previousBeaconData = null, this.lastEventTime = 0, this.rateLimited = false, this.eventQueue = new _r(ze(this.envKey, this.options));\n    var D3;\n    this.sampleRate = (D3 = this.options.sampleRate) !== null && D3 !== void 0 ? D3 : 1;\n    var p3;\n    this.disableCookies = (p3 = this.options.disableCookies) !== null && p3 !== void 0 ? p3 : false;\n    var _3;\n    this.respectDoNotTrack = (_3 = this.options.respectDoNotTrack) !== null && _3 !== void 0 ? _3 : false, this.previousBeaconData = null, this.lastEventTime = 0, this.rateLimited = false, this.pageLevelData = { mux_api_version: this.mux.API_VERSION, mux_embed: this.mux.NAME, mux_embed_version: this.mux.VERSION, viewer_application_name: (i2 = this.options.platform) === null || i2 === void 0 ? void 0 : i2.name, viewer_application_version: (n2 = this.options.platform) === null || n2 === void 0 ? void 0 : n2.version, viewer_application_engine: (o = this.options.platform) === null || o === void 0 ? void 0 : o.layout, viewer_device_name: (s = this.options.platform) === null || s === void 0 ? void 0 : s.product, viewer_device_category: \"\", viewer_device_manufacturer: (f = this.options.platform) === null || f === void 0 ? void 0 : f.manufacturer, viewer_os_family: (T3 = this.options.platform) === null || T3 === void 0 || (h3 = T3.os) === null || h3 === void 0 ? void 0 : h3.family, viewer_os_architecture: (x4 = this.options.platform) === null || x4 === void 0 || (g2 = x4.os) === null || g2 === void 0 ? void 0 : g2.architecture, viewer_os_version: (l = this.options.platform) === null || l === void 0 || (v4 = l.os) === null || v4 === void 0 ? void 0 : v4.version, viewer_connection_type: dr(), page_url: Me.default === null || Me.default === void 0 || (w2 = Me.default.location) === null || w2 === void 0 ? void 0 : w2.href }, this.viewerData = this.disableCookies ? {} : ar();\n  }\n  return M(r10, [{ key: \"send\", value: function(t2, a2) {\n    if (!(!t2 || !(a2 != null && a2.view_id))) {\n      if (this.respectDoNotTrack && de()) return I.info(\"Not sending `\" + t2 + \"` because Do Not Track is enabled\");\n      if (!a2 || typeof a2 != \"object\") return I.error(\"A data object was expected in send() but was not provided\");\n      var i2 = this.disableCookies ? {} : nr(), n2 = ce(ne({}, this.pageLevelData, a2, i2, this.viewerData), { event: t2, env_key: this.envKey });\n      n2.user_id && (n2.viewer_user_id = n2.user_id, delete n2.user_id);\n      var o, s = ((o = n2.mux_sample_number) !== null && o !== void 0 ? o : 0) >= this.sampleRate, f = this._deduplicateBeaconData(t2, n2), h3 = _e(f);\n      if (this.lastEventTime = this.mux.utils.now(), s) return I.info(\"Not sending event due to sample rate restriction\", t2, n2, h3);\n      if (this.envKey || I.info(\"Missing environment key (envKey) - beacons will be dropped if the video source is not a valid mux video URL\", t2, n2, h3), !this.rateLimited) {\n        if (I.info(\"Sending event\", t2, n2, h3), this.rateLimited = !this.eventQueue.queueEvent(t2, h3), this.mux.WINDOW_UNLOADING && t2 === \"viewend\") this.eventQueue.destroy(true);\n        else if (this.mux.WINDOW_HIDDEN && t2 === \"hb\" ? this.eventQueue.flushEvents(true) : Gi.indexOf(t2) >= 0 && this.eventQueue.flushEvents(), this.rateLimited) return n2.event = \"eventrateexceeded\", h3 = _e(n2), this.eventQueue.queueEvent(n2.event, h3), I.error(\"Beaconing disabled due to rate limit.\");\n      }\n    }\n  } }, { key: \"destroy\", value: function() {\n    this.eventQueue.destroy(false);\n  } }, { key: \"_deduplicateBeaconData\", value: function(t2, a2) {\n    var i2 = this, n2 = {}, o = a2.view_id;\n    if (o === \"-1\" || t2 === \"viewstart\" || t2 === \"viewend\" || !this.previousBeaconData || this.mux.utils.now() - this.lastEventTime >= Ji) n2 = ne({}, a2), o && (this.previousBeaconData = n2), o && t2 === \"viewend\" && (this.previousBeaconData = null);\n    else {\n      var s = t2.indexOf(\"request\") === 0;\n      Object.entries(a2).forEach(function(f) {\n        var h3 = j(f, 2), T3 = h3[0], g2 = h3[1];\n        i2.previousBeaconData && (g2 !== i2.previousBeaconData[T3] || Vi.indexOf(T3) > -1 || i2.objectHasChanged(s, T3, g2, i2.previousBeaconData[T3]) || i2.eventRequiresKey(t2, T3)) && (n2[T3] = g2, i2.previousBeaconData[T3] = g2);\n      });\n    }\n    return n2;\n  } }, { key: \"objectHasChanged\", value: function(t2, a2, i2, n2) {\n    return !t2 || a2.indexOf(\"request_\") !== 0 ? false : a2 === \"request_response_headers\" || typeof i2 != \"object\" || typeof n2 != \"object\" ? true : Object.keys(i2 || {}).length !== Object.keys(n2 || {}).length;\n  } }, { key: \"eventRequiresKey\", value: function(t2, a2) {\n    return !!(t2 === \"renditionchange\" && a2.indexOf(\"video_source_\") === 0 || ji.includes(a2) && Wi.includes(t2));\n  } }]), r10;\n}();\nvar Qi = function r7(e) {\n  \"use strict\";\n  S(this, r7);\n  var t2 = 0, a2 = 0, i2 = 0, n2 = 0, o = 0, s = 0, f = 0, h3 = function(x4, v4) {\n    var l = v4.request_start, w2 = v4.request_response_start, D3 = v4.request_response_end, p3 = v4.request_bytes_loaded;\n    n2++;\n    var _3, c4;\n    if (w2 ? (_3 = w2 - (l != null ? l : 0), c4 = (D3 != null ? D3 : 0) - w2) : c4 = (D3 != null ? D3 : 0) - (l != null ? l : 0), c4 > 0 && p3 && p3 > 0) {\n      var u3 = p3 / c4 * 8e3;\n      o++, a2 += p3, i2 += c4, e.data.view_min_request_throughput = Math.min(e.data.view_min_request_throughput || 1 / 0, u3), e.data.view_average_request_throughput = a2 / i2 * 8e3, e.data.view_request_count = n2, _3 > 0 && (t2 += _3, e.data.view_max_request_latency = Math.max(e.data.view_max_request_latency || 0, _3), e.data.view_average_request_latency = t2 / o);\n    }\n  }, T3 = function(x4, v4) {\n    n2++, s++, e.data.view_request_count = n2, e.data.view_request_failed_count = s;\n  }, g2 = function(x4, v4) {\n    n2++, f++, e.data.view_request_count = n2, e.data.view_request_canceled_count = f;\n  };\n  e.on(\"requestcompleted\", h3), e.on(\"requestfailed\", T3), e.on(\"requestcanceled\", g2);\n};\nvar vr = Qi;\nvar zi = 60 * 60 * 1e3;\nvar Ki = function r8(e) {\n  \"use strict\";\n  var t2 = this;\n  S(this, r8), d(this, \"_lastEventTime\", void 0), e.on(\"before*\", function(a2, i2) {\n    var n2 = i2.viewer_time, o = A.now(), s = t2._lastEventTime;\n    if (t2._lastEventTime = o, s && o - s > zi) {\n      var f = Object.keys(e.data).reduce(function(h3, T3) {\n        return T3.indexOf(\"video_\") === 0 ? Object.assign(h3, d({}, T3, e.data[T3])) : h3;\n      }, {});\n      e.mux.log.info(\"Received event after at least an hour inactivity, creating a new view\"), e.emit(\"viewinit\", Object.assign({ viewer_time: n2 }, f)), e.playbackHeartbeat._playheadShouldBeProgressing && a2.type !== \"play\" && a2.type !== \"adbreakstart\" && (e.emit(\"play\", { viewer_time: n2 }), a2.type !== \"playing\" && e.emit(\"playing\", { viewer_time: n2 }));\n    }\n  });\n};\nvar mr = Ki;\nvar Yi = [\"viewstart\", \"ended\", \"loadstart\", \"pause\", \"play\", \"playing\", \"ratechange\", \"waiting\", \"adplay\", \"adpause\", \"adended\", \"aderror\", \"adplaying\", \"adrequest\", \"adresponse\", \"adbreakstart\", \"adbreakend\", \"adfirstquartile\", \"admidpoint\", \"adthirdquartile\", \"rebufferstart\", \"rebufferend\", \"seeked\", \"error\", \"hb\", \"requestcompleted\", \"requestfailed\", \"requestcanceled\", \"renditionchange\"];\nvar Xi = function(r10) {\n  \"use strict\";\n  Tt(t2, r10);\n  var e = xt(t2);\n  function t2(a2, i2, n2) {\n    S(this, t2);\n    var o;\n    o = e.call(this), d(b(o), \"DOM_CONTENT_LOADED_EVENT_END\", void 0), d(b(o), \"NAVIGATION_START\", void 0), d(b(o), \"_destroyed\", void 0), d(b(o), \"_heartBeatTimeout\", void 0), d(b(o), \"adTracker\", void 0), d(b(o), \"dashjs\", void 0), d(b(o), \"data\", void 0), d(b(o), \"disablePlayheadRebufferTracking\", void 0), d(b(o), \"disableRebufferTracking\", void 0), d(b(o), \"errorTracker\", void 0), d(b(o), \"errorTranslator\", void 0), d(b(o), \"getAdData\", void 0), d(b(o), \"getPlayheadTime\", void 0), d(b(o), \"getStateData\", void 0), d(b(o), \"hlsjs\", void 0), d(b(o), \"id\", void 0), d(b(o), \"longResumeTracker\", void 0), d(b(o), \"minimumRebufferDuration\", void 0), d(b(o), \"mux\", void 0), d(b(o), \"oldEmit\", void 0), d(b(o), \"playbackEventDispatcher\", void 0), d(b(o), \"playbackHeartbeat\", void 0), d(b(o), \"playbackHeartbeatTime\", void 0), d(b(o), \"playheadTime\", void 0), d(b(o), \"seekingTracker\", void 0), d(b(o), \"sustainedRebufferThreshold\", void 0), d(b(o), \"watchTimeTracker\", void 0), d(b(o), \"currentFragmentPDT\", void 0), d(b(o), \"currentFragmentStart\", void 0), o.DOM_CONTENT_LOADED_EVENT_END = le.domContentLoadedEventEnd(), o.NAVIGATION_START = le.navigationStart();\n    var s = { debug: false, minimumRebufferDuration: 250, sustainedRebufferThreshold: 1e3, playbackHeartbeatTime: 25, beaconDomain: \"litix.io\", sampleRate: 1, disableCookies: false, respectDoNotTrack: false, disableRebufferTracking: false, disablePlayheadRebufferTracking: false, errorTranslator: function(v4) {\n      return v4;\n    } };\n    o.mux = a2, o.id = i2, n2 != null && n2.beaconDomain && o.mux.log.warn(\"The `beaconDomain` setting has been deprecated in favor of `beaconCollectionDomain`. Please change your integration to use `beaconCollectionDomain` instead of `beaconDomain`.\"), n2 = Object.assign(s, n2), n2.data = n2.data || {}, n2.data.property_key && (n2.data.env_key = n2.data.property_key, delete n2.data.property_key), I.setLevel(n2.debug ? \"debug\" : \"warn\"), o.getPlayheadTime = n2.getPlayheadTime, o.getStateData = n2.getStateData || function() {\n      return {};\n    }, o.getAdData = n2.getAdData || function() {\n    }, o.minimumRebufferDuration = n2.minimumRebufferDuration, o.sustainedRebufferThreshold = n2.sustainedRebufferThreshold, o.playbackHeartbeatTime = n2.playbackHeartbeatTime, o.disableRebufferTracking = n2.disableRebufferTracking, o.disableRebufferTracking && o.mux.log.warn(\"Disabling rebuffer tracking. This should only be used in specific circumstances as a last resort when your player is known to unreliably track rebuffering.\"), o.disablePlayheadRebufferTracking = n2.disablePlayheadRebufferTracking, o.errorTranslator = n2.errorTranslator, o.playbackEventDispatcher = new pr(a2, n2.data.env_key, n2), o.data = { player_instance_id: X(), mux_sample_rate: n2.sampleRate, beacon_domain: n2.beaconCollectionDomain || n2.beaconDomain }, o.data.view_sequence_number = 1, o.data.player_sequence_number = 1, o.oldEmit = o.emit, o.emit = function(v4, l) {\n      l = Object.assign({ viewer_time: this.mux.utils.now() }, l), this.oldEmit(v4, l);\n    };\n    var f = function() {\n      typeof this.data.view_start == \"undefined\" && (this.data.view_start = this.mux.utils.now(), this.emit(\"viewstart\"));\n    }.bind(b(o));\n    o.on(\"viewinit\", function(v4, l) {\n      this._resetVideoData(), this._resetViewData(), this._resetErrorData(), this._updateStateData(), Object.assign(this.data, l), this._initializeViewData(), this.one(\"play\", f), this.one(\"adbreakstart\", f);\n    });\n    var h3 = function(v4) {\n      this.emit(\"viewend\"), this.send(\"viewend\"), this.emit(\"viewinit\", v4);\n    }.bind(b(o));\n    if (o.on(\"videochange\", function(v4, l) {\n      h3(l);\n    }), o.on(\"programchange\", function(v4, l) {\n      this.data.player_is_paused && this.mux.log.warn(\"The `programchange` event is intended to be used when the content changes mid playback without the video source changing, however the video is not currently playing. If the video source is changing please use the videochange event otherwise you will lose startup time information.\"), h3(Object.assign(l, { view_program_changed: true })), f(), this.emit(\"play\"), this.emit(\"playing\");\n    }), o.on(\"fragmentchange\", function(v4, l) {\n      this.currentFragmentPDT = l.currentFragmentPDT, this.currentFragmentStart = l.currentFragmentStart;\n    }), o.on(\"destroy\", o.destroy), typeof window != \"undefined\" && typeof window.addEventListener == \"function\" && typeof window.removeEventListener == \"function\") {\n      var T3 = function() {\n        var v4 = typeof o.data.view_start != \"undefined\";\n        o.mux.WINDOW_HIDDEN = document.visibilityState === \"hidden\", v4 && o.mux.WINDOW_HIDDEN && (o.data.player_is_paused || o.emit(\"hb\"));\n      };\n      window.addEventListener(\"visibilitychange\", T3, false);\n      var g2 = function(v4) {\n        v4.persisted || o.destroy();\n      };\n      window.addEventListener(\"pagehide\", g2, false), o.on(\"destroy\", function() {\n        window.removeEventListener(\"visibilitychange\", T3), window.removeEventListener(\"pagehide\", g2);\n      });\n    }\n    o.on(\"playerready\", function(v4, l) {\n      Object.assign(this.data, l);\n    }), Yi.forEach(function(v4) {\n      o.on(v4, function(l, w2) {\n        v4.indexOf(\"ad\") !== 0 && this._updateStateData(), Object.assign(this.data, w2), this._sanitizeData();\n      }), o.on(\"after\" + v4, function() {\n        (v4 !== \"error\" || this.errorTracker.viewErrored) && this.send(v4);\n      });\n    }), o.on(\"viewend\", function(v4, l) {\n      Object.assign(o.data, l);\n    });\n    var x4 = function(l) {\n      var w2 = this.mux.utils.now();\n      this.data.player_init_time && (this.data.player_startup_time = w2 - this.data.player_init_time), !this.mux.PLAYER_TRACKED && this.NAVIGATION_START && (this.mux.PLAYER_TRACKED = true, (this.data.player_init_time || this.DOM_CONTENT_LOADED_EVENT_END) && (this.data.page_load_time = Math.min(this.data.player_init_time || 1 / 0, this.DOM_CONTENT_LOADED_EVENT_END || 1 / 0) - this.NAVIGATION_START)), this.send(\"playerready\"), delete this.data.player_startup_time, delete this.data.page_load_time;\n    };\n    return o.one(\"playerready\", x4), o.longResumeTracker = new mr(b(o)), o.errorTracker = new Pt(b(o)), new zt(b(o)), o.seekingTracker = new jt(b(o)), o.playheadTime = new Ht(b(o)), o.playbackHeartbeat = new Nt(b(o)), new Wt(b(o)), o.watchTimeTracker = new Ct(b(o)), new Mt(b(o)), o.adTracker = new Jt(b(o)), new Ft(b(o)), new Ut(b(o)), new Vt(b(o)), new Qt(b(o)), new vr(b(o)), n2.hlsjs && o.addHLSJS(n2), n2.dashjs && o.addDashJS(n2), o.emit(\"viewinit\", n2.data), o;\n  }\n  return M(t2, [{ key: \"destroy\", value: function() {\n    this._destroyed || (this._destroyed = true, typeof this.data.view_start != \"undefined\" && (this.emit(\"viewend\"), this.send(\"viewend\")), this.playbackEventDispatcher.destroy(), this.removeHLSJS(), this.removeDashJS(), window.clearTimeout(this._heartBeatTimeout));\n  } }, { key: \"send\", value: function(i2) {\n    if (this.data.view_id) {\n      var n2 = Object.assign({}, this.data), o = [\"player_program_time\", \"player_manifest_newest_program_time\", \"player_live_edge_program_time\", \"player_program_time\", \"video_holdback\", \"video_part_holdback\", \"video_target_duration\", \"video_part_target_duration\"];\n      if (n2.video_source_is_live === void 0 && (n2.player_source_duration === 1 / 0 || n2.video_source_duration === 1 / 0 ? n2.video_source_is_live = true : (n2.player_source_duration > 0 || n2.video_source_duration > 0) && (n2.video_source_is_live = false)), n2.video_source_is_live || o.forEach(function(T3) {\n        n2[T3] = void 0;\n      }), n2.video_source_url = n2.video_source_url || n2.player_source_url, n2.video_source_url) {\n        var s = j(ee(n2.video_source_url), 2), f = s[0], h3 = s[1];\n        n2.video_source_domain = h3, n2.video_source_hostname = f;\n      }\n      delete n2.ad_request_id, this.playbackEventDispatcher.send(i2, n2), this.data.view_sequence_number++, this.data.player_sequence_number++, this._restartHeartBeat(), i2 === \"viewend\" && delete this.data.view_id;\n    }\n  } }, { key: \"_updateStateData\", value: function() {\n    Object.assign(this.data, this.getStateData()), this.playheadTime._updatePlayheadTime(), this._sanitizeData();\n  } }, { key: \"_sanitizeData\", value: function() {\n    var i2 = this, n2 = [\"player_width\", \"player_height\", \"video_source_width\", \"video_source_height\", \"player_playhead_time\", \"video_source_bitrate\"];\n    n2.forEach(function(s) {\n      var f = parseInt(i2.data[s], 10);\n      i2.data[s] = isNaN(f) ? void 0 : f;\n    });\n    var o = [\"player_source_url\", \"video_source_url\"];\n    o.forEach(function(s) {\n      if (i2.data[s]) {\n        var f = i2.data[s].toLowerCase();\n        (f.indexOf(\"data:\") === 0 || f.indexOf(\"blob:\") === 0) && (i2.data[s] = \"MSE style URL\");\n      }\n    });\n  } }, { key: \"_resetVideoData\", value: function() {\n    var i2 = this;\n    Object.keys(this.data).forEach(function(n2) {\n      n2.indexOf(\"video_\") === 0 && delete i2.data[n2];\n    });\n  } }, { key: \"_resetViewData\", value: function() {\n    var i2 = this;\n    Object.keys(this.data).forEach(function(n2) {\n      n2.indexOf(\"view_\") === 0 && delete i2.data[n2];\n    }), this.data.view_sequence_number = 1;\n  } }, { key: \"_resetErrorData\", value: function() {\n    delete this.data.player_error_code, delete this.data.player_error_message, delete this.data.player_error_context, delete this.data.player_error_severity, delete this.data.player_error_business_exception;\n  } }, { key: \"_initializeViewData\", value: function() {\n    var i2 = this, n2 = this.data.view_id = X(), o = function() {\n      n2 === i2.data.view_id && O(i2.data, \"player_view_count\", 1);\n    };\n    this.data.player_is_paused ? this.one(\"play\", o) : o();\n  } }, { key: \"_restartHeartBeat\", value: function() {\n    var i2 = this;\n    window.clearTimeout(this._heartBeatTimeout), this._heartBeatTimeout = window.setTimeout(function() {\n      i2.data.player_is_paused || i2.emit(\"hb\");\n    }, 1e4);\n  } }, { key: \"addHLSJS\", value: function(i2) {\n    if (!i2.hlsjs) {\n      this.mux.log.warn(\"You must pass a valid hlsjs instance in order to track it.\");\n      return;\n    }\n    if (this.hlsjs) {\n      this.mux.log.warn(\"An instance of HLS.js is already being monitored for this player.\");\n      return;\n    }\n    this.hlsjs = i2.hlsjs, St(this.mux, this.id, i2.hlsjs, {}, i2.Hls || window.Hls);\n  } }, { key: \"removeHLSJS\", value: function() {\n    this.hlsjs && (Rt(this.hlsjs), this.hlsjs = void 0);\n  } }, { key: \"addDashJS\", value: function(i2) {\n    if (!i2.dashjs) {\n      this.mux.log.warn(\"You must pass a valid dashjs instance in order to track it.\");\n      return;\n    }\n    if (this.dashjs) {\n      this.mux.log.warn(\"An instance of Dash.js is already being monitored for this player.\");\n      return;\n    }\n    this.dashjs = i2.dashjs, At(this.mux, this.id, i2.dashjs);\n  } }, { key: \"removeDashJS\", value: function() {\n    this.dashjs && (Ot(this.dashjs), this.dashjs = void 0);\n  } }]), t2;\n}(Lt);\nvar hr = Xi;\nke();\nvar ve = B(Wr());\nfunction at() {\n  return ve.default && !!(ve.default.fullscreenElement || ve.default.webkitFullscreenElement || ve.default.mozFullScreenElement || ve.default.msFullscreenElement);\n}\nvar Ea = [\"loadstart\", \"pause\", \"play\", \"playing\", \"seeking\", \"seeked\", \"timeupdate\", \"ratechange\", \"stalled\", \"waiting\", \"error\", \"ended\"];\nvar ka = { 1: \"MEDIA_ERR_ABORTED\", 2: \"MEDIA_ERR_NETWORK\", 3: \"MEDIA_ERR_DECODE\", 4: \"MEDIA_ERR_SRC_NOT_SUPPORTED\" };\nfunction nt(r10, e, t2) {\n  var a2 = j(Ee(e), 3), i2 = a2[0], n2 = a2[1], o = a2[2], s = r10.log, f = r10.utils.getComputedStyle, h3 = r10.utils.secondsToMs, T3 = { automaticErrorTracking: true };\n  if (i2) {\n    if (o !== \"video\" && o !== \"audio\") return s.error(\"The element of `\" + n2 + \"` was not a media element.\");\n  } else return s.error(\"No element was found with the `\" + n2 + \"` query selector.\");\n  i2.mux && (i2.mux.destroy(), delete i2.mux, s.warn(\"Already monitoring this video element, replacing existing event listeners\")), t2 = Object.assign(T3, t2), t2.data = Object.assign({ player_software: \"HTML5 Video Element\", player_mux_plugin_name: \"VideoElementMonitor\", player_mux_plugin_version: r10.VERSION }, t2.data), t2.getPlayheadTime = function() {\n    return h3(i2.currentTime);\n  }, t2.getStateData = function() {\n    var x4, v4 = this.hlsjs && this.hlsjs.url, l = this.dashjs && C(this.dashjs.getSource === \"function\") && this.dashjs.getSource(), w2 = { player_is_paused: i2.paused, player_playhead_time: h3(i2.currentTime), player_width: parseInt(f(i2, \"width\")), player_height: parseInt(f(i2, \"height\")), player_autoplay_on: i2.autoplay, player_preload_on: i2.preload, player_language_code: i2.lang, player_is_fullscreen: at(), video_poster_url: i2.poster, video_source_url: v4 || l || i2.currentSrc, video_source_duration: h3(i2.duration), video_source_height: i2.videoHeight, video_source_width: i2.videoWidth, view_dropped_frame_count: i2 == null || (x4 = i2.getVideoPlaybackQuality) === null || x4 === void 0 ? void 0 : x4.call(i2).droppedVideoFrames }, D3 = t2.getPlayheadTime();\n    if (i2.getStartDate && D3 > 0) {\n      var p3 = i2.getStartDate();\n      if (p3 && typeof p3.getTime == \"function\" && p3.getTime()) {\n        var _3 = p3.getTime();\n        if (w2.player_program_time = _3 + D3, i2.seekable.length > 0) {\n          var c4 = _3 + i2.seekable.end(i2.seekable.length - 1);\n          w2.player_live_edge_program_time = c4;\n        }\n      }\n    }\n    return w2;\n  }, i2.mux = i2.mux || {}, i2.mux.deleted = false, i2.mux.emit = function(x4, v4) {\n    r10.emit(n2, x4, v4);\n  };\n  var g2 = function() {\n    s.error(\"The monitor for this video element has already been destroyed.\");\n  };\n  i2.mux.destroy = function() {\n    Object.keys(i2.mux.listeners).forEach(function(x4) {\n      i2.removeEventListener(x4, i2.mux.listeners[x4], false);\n    }), delete i2.mux.listeners, i2.mux.destroy = g2, i2.mux.swapElement = g2, i2.mux.emit = g2, i2.mux.addHLSJS = g2, i2.mux.addDashJS = g2, i2.mux.removeHLSJS = g2, i2.mux.removeDashJS = g2, i2.mux.deleted = true, r10.emit(n2, \"destroy\");\n  }, i2.mux.swapElement = function(x4) {\n    var v4 = j(Ee(x4), 3), l = v4[0], w2 = v4[1], D3 = v4[2];\n    if (l) {\n      if (D3 !== \"video\" && D3 !== \"audio\") return r10.log.error(\"The element of `\" + w2 + \"` was not a media element.\");\n    } else return r10.log.error(\"No element was found with the `\" + w2 + \"` query selector.\");\n    l.muxId = i2.muxId, delete i2.muxId, l.mux = l.mux || {}, l.mux.listeners = Object.assign({}, i2.mux.listeners), delete i2.mux.listeners, Object.keys(l.mux.listeners).forEach(function(p3) {\n      i2.removeEventListener(p3, l.mux.listeners[p3], false), l.addEventListener(p3, l.mux.listeners[p3], false);\n    }), l.mux.swapElement = i2.mux.swapElement, l.mux.destroy = i2.mux.destroy, delete i2.mux, i2 = l;\n  }, i2.mux.addHLSJS = function(x4) {\n    r10.addHLSJS(n2, x4);\n  }, i2.mux.addDashJS = function(x4) {\n    r10.addDashJS(n2, x4);\n  }, i2.mux.removeHLSJS = function() {\n    r10.removeHLSJS(n2);\n  }, i2.mux.removeDashJS = function() {\n    r10.removeDashJS(n2);\n  }, r10.init(n2, t2), r10.emit(n2, \"playerready\"), i2.paused || (r10.emit(n2, \"play\"), i2.readyState > 2 && r10.emit(n2, \"playing\")), i2.mux.listeners = {}, Ea.forEach(function(x4) {\n    x4 === \"error\" && !t2.automaticErrorTracking || (i2.mux.listeners[x4] = function() {\n      var v4 = {};\n      if (x4 === \"error\") {\n        if (!i2.error || i2.error.code === 1) return;\n        v4.player_error_code = i2.error.code, v4.player_error_message = ka[i2.error.code] || i2.error.message;\n      }\n      r10.emit(n2, x4, v4);\n    }, i2.addEventListener(x4, i2.mux.listeners[x4], false));\n  });\n}\nfunction ot(r10, e, t2, a2) {\n  var i2 = a2;\n  if (r10 && typeof r10[e] == \"function\") try {\n    i2 = r10[e].apply(r10, t2);\n  } catch (n2) {\n    I.info(\"safeCall error\", n2);\n  }\n  return i2;\n}\nvar he = B(J());\nvar me;\nhe.default && he.default.WeakMap && (me = /* @__PURE__ */ new WeakMap());\nfunction st(r10, e) {\n  if (!r10 || !e || !he.default || typeof he.default.getComputedStyle != \"function\") return \"\";\n  var t2;\n  return me && me.has(r10) && (t2 = me.get(r10)), t2 || (t2 = he.default.getComputedStyle(r10, null), me && me.set(r10, t2)), t2.getPropertyValue(e);\n}\nfunction ut(r10) {\n  return Math.floor(r10 * 1e3);\n}\nvar se = { TARGET_DURATION: \"#EXT-X-TARGETDURATION\", PART_INF: \"#EXT-X-PART-INF\", SERVER_CONTROL: \"#EXT-X-SERVER-CONTROL\", INF: \"#EXTINF\", PROGRAM_DATE_TIME: \"#EXT-X-PROGRAM-DATE-TIME\", VERSION: \"#EXT-X-VERSION\", SESSION_DATA: \"#EXT-X-SESSION-DATA\" };\nvar Be = function(e) {\n  return this.buffer = \"\", this.manifest = { segments: [], serverControl: {}, sessionData: {} }, this.currentUri = {}, this.process(e), this.manifest;\n};\nBe.prototype.process = function(r10) {\n  var e;\n  for (this.buffer += r10, e = this.buffer.indexOf(\"\\n\"); e > -1; e = this.buffer.indexOf(\"\\n\")) this.processLine(this.buffer.substring(0, e)), this.buffer = this.buffer.substring(e + 1);\n};\nBe.prototype.processLine = function(r10) {\n  var e = r10.indexOf(\":\"), t2 = Ra(r10, e), a2 = t2[0], i2 = t2.length === 2 ? lt(t2[1]) : void 0;\n  if (a2[0] !== \"#\") this.currentUri.uri = a2, this.manifest.segments.push(this.currentUri), this.manifest.targetDuration && !(\"duration\" in this.currentUri) && (this.currentUri.duration = this.manifest.targetDuration), this.currentUri = {};\n  else switch (a2) {\n    case se.TARGET_DURATION: {\n      if (!isFinite(i2) || i2 < 0) return;\n      this.manifest.targetDuration = i2, this.setHoldBack();\n      break;\n    }\n    case se.PART_INF: {\n      dt(this.manifest, t2), this.manifest.partInf.partTarget && (this.manifest.partTargetDuration = this.manifest.partInf.partTarget), this.setHoldBack();\n      break;\n    }\n    case se.SERVER_CONTROL: {\n      dt(this.manifest, t2), this.setHoldBack();\n      break;\n    }\n    case se.INF: {\n      i2 === 0 ? this.currentUri.duration = 0.01 : i2 > 0 && (this.currentUri.duration = i2);\n      break;\n    }\n    case se.PROGRAM_DATE_TIME: {\n      var n2 = i2, o = new Date(n2);\n      this.manifest.dateTimeString || (this.manifest.dateTimeString = n2, this.manifest.dateTimeObject = o), this.currentUri.dateTimeString = n2, this.currentUri.dateTimeObject = o;\n      break;\n    }\n    case se.VERSION: {\n      dt(this.manifest, t2);\n      break;\n    }\n    case se.SESSION_DATA: {\n      var s = qa(t2[1]), f = Ne(s);\n      Object.assign(this.manifest.sessionData, f);\n    }\n  }\n};\nBe.prototype.setHoldBack = function() {\n  var r10 = this.manifest, e = r10.serverControl, t2 = r10.targetDuration, a2 = r10.partTargetDuration;\n  if (e) {\n    var i2 = \"holdBack\", n2 = \"partHoldBack\", o = t2 && t2 * 3, s = a2 && a2 * 2;\n    t2 && !e.hasOwnProperty(i2) && (e[i2] = o), o && e[i2] < o && (e[i2] = o), a2 && !e.hasOwnProperty(n2) && (e[n2] = a2 * 3), a2 && e[n2] < s && (e[n2] = s);\n  }\n};\nvar dt = function(r10, e) {\n  var t2 = jr(e[0].replace(\"#EXT-X-\", \"\")), a2;\n  Sa(e[1]) ? (a2 = {}, a2 = Object.assign(Da(e[1]), a2)) : a2 = lt(e[1]), r10[t2] = a2;\n};\nvar jr = function(r10) {\n  return r10.toLowerCase().replace(/-(\\w)/g, function(e) {\n    return e[1].toUpperCase();\n  });\n};\nvar lt = function(r10) {\n  if (r10.toLowerCase() === \"yes\" || r10.toLowerCase() === \"no\") return r10.toLowerCase() === \"yes\";\n  var e = r10.indexOf(\":\") !== -1 ? r10 : parseFloat(r10);\n  return isNaN(e) ? r10 : e;\n};\nvar xa = function(r10) {\n  var e = {}, t2 = r10.split(\"=\");\n  if (t2.length > 1) {\n    var a2 = jr(t2[0]);\n    e[a2] = lt(t2[1]);\n  }\n  return e;\n};\nvar Da = function(r10) {\n  for (var e = r10.split(\",\"), t2 = {}, a2 = 0; e.length > a2; a2++) {\n    var i2 = e[a2], n2 = xa(i2);\n    t2 = Object.assign(n2, t2);\n  }\n  return t2;\n};\nvar Sa = function(r10) {\n  return r10.indexOf(\"=\") > -1;\n};\nvar Ra = function(r10, e) {\n  return e === -1 ? [r10] : [r10.substring(0, e), r10.substring(e + 1)];\n};\nvar qa = function(r10) {\n  var e = {};\n  if (r10) {\n    var t2 = r10.search(\",\"), a2 = r10.slice(0, t2), i2 = r10.slice(t2 + 1), n2 = [a2, i2];\n    return n2.forEach(function(o, s) {\n      for (var f = o.replace(/['\"]+/g, \"\").split(\"=\"), h3 = 0; h3 < f.length; h3++) f[h3] === \"DATA-ID\" && (e[\"DATA-ID\"] = f[1 - h3]), f[h3] === \"VALUE\" && (e.VALUE = f[1 - h3]);\n    }), { data: e };\n  }\n};\nvar Gr = Be;\nvar Aa = { safeCall: ot, safeIncrement: O, getComputedStyle: st, secondsToMs: ut, assign: Object.assign, headersStringToObject: fe, cdnHeadersToRequestId: oe, extractHostnameAndDomain: ee, extractHostname: F, manifestParser: Gr, generateShortID: qe, generateUUID: X, now: A.now };\nvar Jr = Aa;\nvar Oa = { PLAYER_READY: \"playerready\", VIEW_INIT: \"viewinit\", VIDEO_CHANGE: \"videochange\", PLAY: \"play\", PAUSE: \"pause\", PLAYING: \"playing\", TIME_UPDATE: \"timeupdate\", SEEKING: \"seeking\", SEEKED: \"seeked\", REBUFFER_START: \"rebufferstart\", REBUFFER_END: \"rebufferend\", ERROR: \"error\", ENDED: \"ended\", RENDITION_CHANGE: \"renditionchange\", ORIENTATION_CHANGE: \"orientationchange\", AD_REQUEST: \"adrequest\", AD_RESPONSE: \"adresponse\", AD_BREAK_START: \"adbreakstart\", AD_PLAY: \"adplay\", AD_PLAYING: \"adplaying\", AD_PAUSE: \"adpause\", AD_FIRST_QUARTILE: \"adfirstquartile\", AD_MID_POINT: \"admidpoint\", AD_THIRD_QUARTILE: \"adthirdquartile\", AD_ENDED: \"adended\", AD_BREAK_END: \"adbreakend\", AD_ERROR: \"aderror\", REQUEST_COMPLETED: \"requestcompleted\", REQUEST_FAILED: \"requestfailed\", REQUEST_CANCELLED: \"requestcanceled\" };\nvar Qr = Oa;\nvar Ia = \"mux-embed\";\nvar La = \"5.2.1\";\nvar Na = \"2.1\";\nvar G = {};\nvar ie = function(e) {\n  var t2 = arguments;\n  typeof e == \"string\" ? ie.hasOwnProperty(e) ? ye.default.setTimeout(function() {\n    t2 = Array.prototype.splice.call(t2, 1), ie[e].apply(null, t2);\n  }, 0) : I.warn(\"`\" + e + \"` is an unknown task\") : typeof e == \"function\" ? ye.default.setTimeout(function() {\n    e(ie);\n  }, 0) : I.warn(\"`\" + e + \"` is invalid.\");\n};\nvar Pa = { loaded: A.now(), NAME: Ia, VERSION: La, API_VERSION: Na, PLAYER_TRACKED: false, monitor: function(e, t2) {\n  return nt(ie, e, t2);\n}, destroyMonitor: function(e) {\n  var t2 = j(Ee(e), 1), a2 = t2[0];\n  a2 && a2.mux && typeof a2.mux.destroy == \"function\" ? a2.mux.destroy() : I.error(\"A video element monitor for `\" + e + \"` has not been initialized via `mux.monitor`.\");\n}, addHLSJS: function(e, t2) {\n  var a2 = $(e);\n  G[a2] ? G[a2].addHLSJS(t2) : I.error(\"A monitor for `\" + a2 + \"` has not been initialized.\");\n}, addDashJS: function(e, t2) {\n  var a2 = $(e);\n  G[a2] ? G[a2].addDashJS(t2) : I.error(\"A monitor for `\" + a2 + \"` has not been initialized.\");\n}, removeHLSJS: function(e) {\n  var t2 = $(e);\n  G[t2] ? G[t2].removeHLSJS() : I.error(\"A monitor for `\" + t2 + \"` has not been initialized.\");\n}, removeDashJS: function(e) {\n  var t2 = $(e);\n  G[t2] ? G[t2].removeDashJS() : I.error(\"A monitor for `\" + t2 + \"` has not been initialized.\");\n}, init: function(e, t2) {\n  de() && t2 && t2.respectDoNotTrack && I.info(\"The browser's Do Not Track flag is enabled - Mux beaconing is disabled.\");\n  var a2 = $(e);\n  G[a2] = new hr(ie, a2, t2);\n}, emit: function(e, t2, a2) {\n  var i2 = $(e);\n  G[i2] ? (G[i2].emit(t2, a2), t2 === \"destroy\" && delete G[i2]) : I.error(\"A monitor for `\" + i2 + \"` has not been initialized.\");\n}, checkDoNotTrack: de, log: I, utils: Jr, events: Qr, WINDOW_HIDDEN: false, WINDOW_UNLOADING: false };\nObject.assign(ie, Pa);\ntypeof ye.default != \"undefined\" && typeof ye.default.addEventListener == \"function\" && ye.default.addEventListener(\"pagehide\", function(r10) {\n  r10.persisted || (ie.WINDOW_UNLOADING = true);\n}, false);\nvar od = ie;\n\n// node_modules/.pnpm/hls.js@1.5.20/node_modules/hls.js/dist/hls.mjs\nfunction getDefaultExportFromCjs(x4) {\n  return x4 && x4.__esModule && Object.prototype.hasOwnProperty.call(x4, \"default\") ? x4[\"default\"] : x4;\n}\nvar urlToolkit = { exports: {} };\n(function(module, exports) {\n  (function(root) {\n    var URL_REGEX = /^(?=((?:[a-zA-Z0-9+\\-.]+:)?))\\1(?=((?:\\/\\/[^\\/?#]*)?))\\2(?=((?:(?:[^?#\\/]*\\/)*[^;?#\\/]*)?))\\3((?:;[^?#]*)?)(\\?[^#]*)?(#[^]*)?$/;\n    var FIRST_SEGMENT_REGEX = /^(?=([^\\/?#]*))\\1([^]*)$/;\n    var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n    var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/)[^\\/]*(?=\\/)/g;\n    var URLToolkit = {\n      // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n      // E.g\n      // With opts.alwaysNormalize = false (default, spec compliant)\n      // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n      // With opts.alwaysNormalize = true (not spec compliant)\n      // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n      buildAbsoluteURL: function(baseURL, relativeURL, opts) {\n        opts = opts || {};\n        baseURL = baseURL.trim();\n        relativeURL = relativeURL.trim();\n        if (!relativeURL) {\n          if (!opts.alwaysNormalize) {\n            return baseURL;\n          }\n          var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n          if (!basePartsForNormalise) {\n            throw new Error(\"Error trying to parse base URL.\");\n          }\n          basePartsForNormalise.path = URLToolkit.normalizePath(\n            basePartsForNormalise.path\n          );\n          return URLToolkit.buildURLFromParts(basePartsForNormalise);\n        }\n        var relativeParts = URLToolkit.parseURL(relativeURL);\n        if (!relativeParts) {\n          throw new Error(\"Error trying to parse relative URL.\");\n        }\n        if (relativeParts.scheme) {\n          if (!opts.alwaysNormalize) {\n            return relativeURL;\n          }\n          relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n          return URLToolkit.buildURLFromParts(relativeParts);\n        }\n        var baseParts = URLToolkit.parseURL(baseURL);\n        if (!baseParts) {\n          throw new Error(\"Error trying to parse base URL.\");\n        }\n        if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== \"/\") {\n          var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n          baseParts.netLoc = pathParts[1];\n          baseParts.path = pathParts[2];\n        }\n        if (baseParts.netLoc && !baseParts.path) {\n          baseParts.path = \"/\";\n        }\n        var builtParts = {\n          // 2c) Otherwise, the embedded URL inherits the scheme of\n          // the base URL.\n          scheme: baseParts.scheme,\n          netLoc: relativeParts.netLoc,\n          path: null,\n          params: relativeParts.params,\n          query: relativeParts.query,\n          fragment: relativeParts.fragment\n        };\n        if (!relativeParts.netLoc) {\n          builtParts.netLoc = baseParts.netLoc;\n          if (relativeParts.path[0] !== \"/\") {\n            if (!relativeParts.path) {\n              builtParts.path = baseParts.path;\n              if (!relativeParts.params) {\n                builtParts.params = baseParts.params;\n                if (!relativeParts.query) {\n                  builtParts.query = baseParts.query;\n                }\n              }\n            } else {\n              var baseURLPath = baseParts.path;\n              var newPath = baseURLPath.substring(0, baseURLPath.lastIndexOf(\"/\") + 1) + relativeParts.path;\n              builtParts.path = URLToolkit.normalizePath(newPath);\n            }\n          }\n        }\n        if (builtParts.path === null) {\n          builtParts.path = opts.alwaysNormalize ? URLToolkit.normalizePath(relativeParts.path) : relativeParts.path;\n        }\n        return URLToolkit.buildURLFromParts(builtParts);\n      },\n      parseURL: function(url) {\n        var parts = URL_REGEX.exec(url);\n        if (!parts) {\n          return null;\n        }\n        return {\n          scheme: parts[1] || \"\",\n          netLoc: parts[2] || \"\",\n          path: parts[3] || \"\",\n          params: parts[4] || \"\",\n          query: parts[5] || \"\",\n          fragment: parts[6] || \"\"\n        };\n      },\n      normalizePath: function(path) {\n        path = path.split(\"\").reverse().join(\"\").replace(SLASH_DOT_REGEX, \"\");\n        while (path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, \"\")).length) {\n        }\n        return path.split(\"\").reverse().join(\"\");\n      },\n      buildURLFromParts: function(parts) {\n        return parts.scheme + parts.netLoc + parts.path + parts.params + parts.query + parts.fragment;\n      }\n    };\n    module.exports = URLToolkit;\n  })();\n})(urlToolkit);\nvar urlToolkitExports = urlToolkit.exports;\nfunction ownKeys(e, r10) {\n  var t2 = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r10 && (o = o.filter(function(r11) {\n      return Object.getOwnPropertyDescriptor(e, r11).enumerable;\n    })), t2.push.apply(t2, o);\n  }\n  return t2;\n}\nfunction _objectSpread2(e) {\n  for (var r10 = 1; r10 < arguments.length; r10++) {\n    var t2 = null != arguments[r10] ? arguments[r10] : {};\n    r10 % 2 ? ownKeys(Object(t2), true).forEach(function(r11) {\n      _defineProperty(e, r11, t2[r11]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t2)) : ownKeys(Object(t2)).forEach(function(r11) {\n      Object.defineProperty(e, r11, Object.getOwnPropertyDescriptor(t2, r11));\n    });\n  }\n  return e;\n}\nfunction _toPrimitive(t2, r10) {\n  if (\"object\" != typeof t2 || !t2) return t2;\n  var e = t2[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i2 = e.call(t2, r10 || \"default\");\n    if (\"object\" != typeof i2) return i2;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r10 ? String : Number)(t2);\n}\nfunction _toPropertyKey(t2) {\n  var i2 = _toPrimitive(t2, \"string\");\n  return \"symbol\" == typeof i2 ? i2 : String(i2);\n}\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function(target) {\n    for (var i2 = 1; i2 < arguments.length; i2++) {\n      var source = arguments[i2];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nvar isFiniteNumber = Number.isFinite || function(value) {\n  return typeof value === \"number\" && isFinite(value);\n};\nvar isSafeInteger = Number.isSafeInteger || function(value) {\n  return typeof value === \"number\" && Math.abs(value) <= MAX_SAFE_INTEGER;\n};\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\nvar Events = /* @__PURE__ */ function(Events2) {\n  Events2[\"MEDIA_ATTACHING\"] = \"hlsMediaAttaching\";\n  Events2[\"MEDIA_ATTACHED\"] = \"hlsMediaAttached\";\n  Events2[\"MEDIA_DETACHING\"] = \"hlsMediaDetaching\";\n  Events2[\"MEDIA_DETACHED\"] = \"hlsMediaDetached\";\n  Events2[\"BUFFER_RESET\"] = \"hlsBufferReset\";\n  Events2[\"BUFFER_CODECS\"] = \"hlsBufferCodecs\";\n  Events2[\"BUFFER_CREATED\"] = \"hlsBufferCreated\";\n  Events2[\"BUFFER_APPENDING\"] = \"hlsBufferAppending\";\n  Events2[\"BUFFER_APPENDED\"] = \"hlsBufferAppended\";\n  Events2[\"BUFFER_EOS\"] = \"hlsBufferEos\";\n  Events2[\"BUFFER_FLUSHING\"] = \"hlsBufferFlushing\";\n  Events2[\"BUFFER_FLUSHED\"] = \"hlsBufferFlushed\";\n  Events2[\"MANIFEST_LOADING\"] = \"hlsManifestLoading\";\n  Events2[\"MANIFEST_LOADED\"] = \"hlsManifestLoaded\";\n  Events2[\"MANIFEST_PARSED\"] = \"hlsManifestParsed\";\n  Events2[\"LEVEL_SWITCHING\"] = \"hlsLevelSwitching\";\n  Events2[\"LEVEL_SWITCHED\"] = \"hlsLevelSwitched\";\n  Events2[\"LEVEL_LOADING\"] = \"hlsLevelLoading\";\n  Events2[\"LEVEL_LOADED\"] = \"hlsLevelLoaded\";\n  Events2[\"LEVEL_UPDATED\"] = \"hlsLevelUpdated\";\n  Events2[\"LEVEL_PTS_UPDATED\"] = \"hlsLevelPtsUpdated\";\n  Events2[\"LEVELS_UPDATED\"] = \"hlsLevelsUpdated\";\n  Events2[\"AUDIO_TRACKS_UPDATED\"] = \"hlsAudioTracksUpdated\";\n  Events2[\"AUDIO_TRACK_SWITCHING\"] = \"hlsAudioTrackSwitching\";\n  Events2[\"AUDIO_TRACK_SWITCHED\"] = \"hlsAudioTrackSwitched\";\n  Events2[\"AUDIO_TRACK_LOADING\"] = \"hlsAudioTrackLoading\";\n  Events2[\"AUDIO_TRACK_LOADED\"] = \"hlsAudioTrackLoaded\";\n  Events2[\"SUBTITLE_TRACKS_UPDATED\"] = \"hlsSubtitleTracksUpdated\";\n  Events2[\"SUBTITLE_TRACKS_CLEARED\"] = \"hlsSubtitleTracksCleared\";\n  Events2[\"SUBTITLE_TRACK_SWITCH\"] = \"hlsSubtitleTrackSwitch\";\n  Events2[\"SUBTITLE_TRACK_LOADING\"] = \"hlsSubtitleTrackLoading\";\n  Events2[\"SUBTITLE_TRACK_LOADED\"] = \"hlsSubtitleTrackLoaded\";\n  Events2[\"SUBTITLE_FRAG_PROCESSED\"] = \"hlsSubtitleFragProcessed\";\n  Events2[\"CUES_PARSED\"] = \"hlsCuesParsed\";\n  Events2[\"NON_NATIVE_TEXT_TRACKS_FOUND\"] = \"hlsNonNativeTextTracksFound\";\n  Events2[\"INIT_PTS_FOUND\"] = \"hlsInitPtsFound\";\n  Events2[\"FRAG_LOADING\"] = \"hlsFragLoading\";\n  Events2[\"FRAG_LOAD_EMERGENCY_ABORTED\"] = \"hlsFragLoadEmergencyAborted\";\n  Events2[\"FRAG_LOADED\"] = \"hlsFragLoaded\";\n  Events2[\"FRAG_DECRYPTED\"] = \"hlsFragDecrypted\";\n  Events2[\"FRAG_PARSING_INIT_SEGMENT\"] = \"hlsFragParsingInitSegment\";\n  Events2[\"FRAG_PARSING_USERDATA\"] = \"hlsFragParsingUserdata\";\n  Events2[\"FRAG_PARSING_METADATA\"] = \"hlsFragParsingMetadata\";\n  Events2[\"FRAG_PARSED\"] = \"hlsFragParsed\";\n  Events2[\"FRAG_BUFFERED\"] = \"hlsFragBuffered\";\n  Events2[\"FRAG_CHANGED\"] = \"hlsFragChanged\";\n  Events2[\"FPS_DROP\"] = \"hlsFpsDrop\";\n  Events2[\"FPS_DROP_LEVEL_CAPPING\"] = \"hlsFpsDropLevelCapping\";\n  Events2[\"MAX_AUTO_LEVEL_UPDATED\"] = \"hlsMaxAutoLevelUpdated\";\n  Events2[\"ERROR\"] = \"hlsError\";\n  Events2[\"DESTROYING\"] = \"hlsDestroying\";\n  Events2[\"KEY_LOADING\"] = \"hlsKeyLoading\";\n  Events2[\"KEY_LOADED\"] = \"hlsKeyLoaded\";\n  Events2[\"LIVE_BACK_BUFFER_REACHED\"] = \"hlsLiveBackBufferReached\";\n  Events2[\"BACK_BUFFER_REACHED\"] = \"hlsBackBufferReached\";\n  Events2[\"STEERING_MANIFEST_LOADED\"] = \"hlsSteeringManifestLoaded\";\n  return Events2;\n}({});\nvar ErrorTypes = /* @__PURE__ */ function(ErrorTypes2) {\n  ErrorTypes2[\"NETWORK_ERROR\"] = \"networkError\";\n  ErrorTypes2[\"MEDIA_ERROR\"] = \"mediaError\";\n  ErrorTypes2[\"KEY_SYSTEM_ERROR\"] = \"keySystemError\";\n  ErrorTypes2[\"MUX_ERROR\"] = \"muxError\";\n  ErrorTypes2[\"OTHER_ERROR\"] = \"otherError\";\n  return ErrorTypes2;\n}({});\nvar ErrorDetails = /* @__PURE__ */ function(ErrorDetails2) {\n  ErrorDetails2[\"KEY_SYSTEM_NO_KEYS\"] = \"keySystemNoKeys\";\n  ErrorDetails2[\"KEY_SYSTEM_NO_ACCESS\"] = \"keySystemNoAccess\";\n  ErrorDetails2[\"KEY_SYSTEM_NO_SESSION\"] = \"keySystemNoSession\";\n  ErrorDetails2[\"KEY_SYSTEM_NO_CONFIGURED_LICENSE\"] = \"keySystemNoConfiguredLicense\";\n  ErrorDetails2[\"KEY_SYSTEM_LICENSE_REQUEST_FAILED\"] = \"keySystemLicenseRequestFailed\";\n  ErrorDetails2[\"KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED\"] = \"keySystemServerCertificateRequestFailed\";\n  ErrorDetails2[\"KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED\"] = \"keySystemServerCertificateUpdateFailed\";\n  ErrorDetails2[\"KEY_SYSTEM_SESSION_UPDATE_FAILED\"] = \"keySystemSessionUpdateFailed\";\n  ErrorDetails2[\"KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED\"] = \"keySystemStatusOutputRestricted\";\n  ErrorDetails2[\"KEY_SYSTEM_STATUS_INTERNAL_ERROR\"] = \"keySystemStatusInternalError\";\n  ErrorDetails2[\"MANIFEST_LOAD_ERROR\"] = \"manifestLoadError\";\n  ErrorDetails2[\"MANIFEST_LOAD_TIMEOUT\"] = \"manifestLoadTimeOut\";\n  ErrorDetails2[\"MANIFEST_PARSING_ERROR\"] = \"manifestParsingError\";\n  ErrorDetails2[\"MANIFEST_INCOMPATIBLE_CODECS_ERROR\"] = \"manifestIncompatibleCodecsError\";\n  ErrorDetails2[\"LEVEL_EMPTY_ERROR\"] = \"levelEmptyError\";\n  ErrorDetails2[\"LEVEL_LOAD_ERROR\"] = \"levelLoadError\";\n  ErrorDetails2[\"LEVEL_LOAD_TIMEOUT\"] = \"levelLoadTimeOut\";\n  ErrorDetails2[\"LEVEL_PARSING_ERROR\"] = \"levelParsingError\";\n  ErrorDetails2[\"LEVEL_SWITCH_ERROR\"] = \"levelSwitchError\";\n  ErrorDetails2[\"AUDIO_TRACK_LOAD_ERROR\"] = \"audioTrackLoadError\";\n  ErrorDetails2[\"AUDIO_TRACK_LOAD_TIMEOUT\"] = \"audioTrackLoadTimeOut\";\n  ErrorDetails2[\"SUBTITLE_LOAD_ERROR\"] = \"subtitleTrackLoadError\";\n  ErrorDetails2[\"SUBTITLE_TRACK_LOAD_TIMEOUT\"] = \"subtitleTrackLoadTimeOut\";\n  ErrorDetails2[\"FRAG_LOAD_ERROR\"] = \"fragLoadError\";\n  ErrorDetails2[\"FRAG_LOAD_TIMEOUT\"] = \"fragLoadTimeOut\";\n  ErrorDetails2[\"FRAG_DECRYPT_ERROR\"] = \"fragDecryptError\";\n  ErrorDetails2[\"FRAG_PARSING_ERROR\"] = \"fragParsingError\";\n  ErrorDetails2[\"FRAG_GAP\"] = \"fragGap\";\n  ErrorDetails2[\"REMUX_ALLOC_ERROR\"] = \"remuxAllocError\";\n  ErrorDetails2[\"KEY_LOAD_ERROR\"] = \"keyLoadError\";\n  ErrorDetails2[\"KEY_LOAD_TIMEOUT\"] = \"keyLoadTimeOut\";\n  ErrorDetails2[\"BUFFER_ADD_CODEC_ERROR\"] = \"bufferAddCodecError\";\n  ErrorDetails2[\"BUFFER_INCOMPATIBLE_CODECS_ERROR\"] = \"bufferIncompatibleCodecsError\";\n  ErrorDetails2[\"BUFFER_APPEND_ERROR\"] = \"bufferAppendError\";\n  ErrorDetails2[\"BUFFER_APPENDING_ERROR\"] = \"bufferAppendingError\";\n  ErrorDetails2[\"BUFFER_STALLED_ERROR\"] = \"bufferStalledError\";\n  ErrorDetails2[\"BUFFER_FULL_ERROR\"] = \"bufferFullError\";\n  ErrorDetails2[\"BUFFER_SEEK_OVER_HOLE\"] = \"bufferSeekOverHole\";\n  ErrorDetails2[\"BUFFER_NUDGE_ON_STALL\"] = \"bufferNudgeOnStall\";\n  ErrorDetails2[\"INTERNAL_EXCEPTION\"] = \"internalException\";\n  ErrorDetails2[\"INTERNAL_ABORTED\"] = \"aborted\";\n  ErrorDetails2[\"UNKNOWN\"] = \"unknown\";\n  return ErrorDetails2;\n}({});\nvar noop = function noop2() {\n};\nvar fakeLogger = {\n  trace: noop,\n  debug: noop,\n  log: noop,\n  warn: noop,\n  info: noop,\n  error: noop\n};\nvar exportedLogger = fakeLogger;\nfunction consolePrintFn(type) {\n  const func = self.console[type];\n  if (func) {\n    return func.bind(self.console, `[${type}] >`);\n  }\n  return noop;\n}\nfunction exportLoggerFunctions(debugConfig, ...functions) {\n  functions.forEach(function(type) {\n    exportedLogger[type] = debugConfig[type] ? debugConfig[type].bind(debugConfig) : consolePrintFn(type);\n  });\n}\nfunction enableLogs(debugConfig, id) {\n  if (typeof console === \"object\" && debugConfig === true || typeof debugConfig === \"object\") {\n    exportLoggerFunctions(\n      debugConfig,\n      // Remove out from list here to hard-disable a log-level\n      // 'trace',\n      \"debug\",\n      \"log\",\n      \"info\",\n      \"warn\",\n      \"error\"\n    );\n    try {\n      exportedLogger.log(`Debug logs enabled for \"${id}\" in hls.js version ${\"1.5.20\"}`);\n    } catch (e) {\n      exportedLogger = fakeLogger;\n    }\n  } else {\n    exportedLogger = fakeLogger;\n  }\n}\nvar logger = exportedLogger;\nvar DECIMAL_RESOLUTION_REGEX = /^(\\d+)x(\\d+)$/;\nvar ATTR_LIST_REGEX = /(.+?)=(\".*?\"|.*?)(?:,|$)/g;\nvar AttrList = class _AttrList {\n  constructor(attrs) {\n    if (typeof attrs === \"string\") {\n      attrs = _AttrList.parseAttrList(attrs);\n    }\n    _extends(this, attrs);\n  }\n  get clientAttrs() {\n    return Object.keys(this).filter((attr) => attr.substring(0, 2) === \"X-\");\n  }\n  decimalInteger(attrName) {\n    const intValue = parseInt(this[attrName], 10);\n    if (intValue > Number.MAX_SAFE_INTEGER) {\n      return Infinity;\n    }\n    return intValue;\n  }\n  hexadecimalInteger(attrName) {\n    if (this[attrName]) {\n      let stringValue = (this[attrName] || \"0x\").slice(2);\n      stringValue = (stringValue.length & 1 ? \"0\" : \"\") + stringValue;\n      const value = new Uint8Array(stringValue.length / 2);\n      for (let i2 = 0; i2 < stringValue.length / 2; i2++) {\n        value[i2] = parseInt(stringValue.slice(i2 * 2, i2 * 2 + 2), 16);\n      }\n      return value;\n    } else {\n      return null;\n    }\n  }\n  hexadecimalIntegerAsNumber(attrName) {\n    const intValue = parseInt(this[attrName], 16);\n    if (intValue > Number.MAX_SAFE_INTEGER) {\n      return Infinity;\n    }\n    return intValue;\n  }\n  decimalFloatingPoint(attrName) {\n    return parseFloat(this[attrName]);\n  }\n  optionalFloat(attrName, defaultValue) {\n    const value = this[attrName];\n    return value ? parseFloat(value) : defaultValue;\n  }\n  enumeratedString(attrName) {\n    return this[attrName];\n  }\n  bool(attrName) {\n    return this[attrName] === \"YES\";\n  }\n  decimalResolution(attrName) {\n    const res = DECIMAL_RESOLUTION_REGEX.exec(this[attrName]);\n    if (res === null) {\n      return void 0;\n    }\n    return {\n      width: parseInt(res[1], 10),\n      height: parseInt(res[2], 10)\n    };\n  }\n  static parseAttrList(input) {\n    let match;\n    const attrs = {};\n    const quote = '\"';\n    ATTR_LIST_REGEX.lastIndex = 0;\n    while ((match = ATTR_LIST_REGEX.exec(input)) !== null) {\n      let value = match[2];\n      if (value.indexOf(quote) === 0 && value.lastIndexOf(quote) === value.length - 1) {\n        value = value.slice(1, -1);\n      }\n      const name = match[1].trim();\n      attrs[name] = value;\n    }\n    return attrs;\n  }\n};\nfunction isDateRangeCueAttribute(attrName) {\n  return attrName !== \"ID\" && attrName !== \"CLASS\" && attrName !== \"START-DATE\" && attrName !== \"DURATION\" && attrName !== \"END-DATE\" && attrName !== \"END-ON-NEXT\";\n}\nfunction isSCTE35Attribute(attrName) {\n  return attrName === \"SCTE35-OUT\" || attrName === \"SCTE35-IN\";\n}\nvar DateRange = class {\n  constructor(dateRangeAttr, dateRangeWithSameId) {\n    this.attr = void 0;\n    this._startDate = void 0;\n    this._endDate = void 0;\n    this._badValueForSameId = void 0;\n    if (dateRangeWithSameId) {\n      const previousAttr = dateRangeWithSameId.attr;\n      for (const key in previousAttr) {\n        if (Object.prototype.hasOwnProperty.call(dateRangeAttr, key) && dateRangeAttr[key] !== previousAttr[key]) {\n          logger.warn(`DATERANGE tag attribute: \"${key}\" does not match for tags with ID: \"${dateRangeAttr.ID}\"`);\n          this._badValueForSameId = key;\n          break;\n        }\n      }\n      dateRangeAttr = _extends(new AttrList({}), previousAttr, dateRangeAttr);\n    }\n    this.attr = dateRangeAttr;\n    this._startDate = new Date(dateRangeAttr[\"START-DATE\"]);\n    if (\"END-DATE\" in this.attr) {\n      const endDate = new Date(this.attr[\"END-DATE\"]);\n      if (isFiniteNumber(endDate.getTime())) {\n        this._endDate = endDate;\n      }\n    }\n  }\n  get id() {\n    return this.attr.ID;\n  }\n  get class() {\n    return this.attr.CLASS;\n  }\n  get startDate() {\n    return this._startDate;\n  }\n  get endDate() {\n    if (this._endDate) {\n      return this._endDate;\n    }\n    const duration = this.duration;\n    if (duration !== null) {\n      return new Date(this._startDate.getTime() + duration * 1e3);\n    }\n    return null;\n  }\n  get duration() {\n    if (\"DURATION\" in this.attr) {\n      const duration = this.attr.decimalFloatingPoint(\"DURATION\");\n      if (isFiniteNumber(duration)) {\n        return duration;\n      }\n    } else if (this._endDate) {\n      return (this._endDate.getTime() - this._startDate.getTime()) / 1e3;\n    }\n    return null;\n  }\n  get plannedDuration() {\n    if (\"PLANNED-DURATION\" in this.attr) {\n      return this.attr.decimalFloatingPoint(\"PLANNED-DURATION\");\n    }\n    return null;\n  }\n  get endOnNext() {\n    return this.attr.bool(\"END-ON-NEXT\");\n  }\n  get isValid() {\n    return !!this.id && !this._badValueForSameId && isFiniteNumber(this.startDate.getTime()) && (this.duration === null || this.duration >= 0) && (!this.endOnNext || !!this.class);\n  }\n};\nvar LoadStats = class {\n  constructor() {\n    this.aborted = false;\n    this.loaded = 0;\n    this.retry = 0;\n    this.total = 0;\n    this.chunkCount = 0;\n    this.bwEstimate = 0;\n    this.loading = {\n      start: 0,\n      first: 0,\n      end: 0\n    };\n    this.parsing = {\n      start: 0,\n      end: 0\n    };\n    this.buffering = {\n      start: 0,\n      first: 0,\n      end: 0\n    };\n  }\n};\nvar ElementaryStreamTypes = {\n  AUDIO: \"audio\",\n  VIDEO: \"video\",\n  AUDIOVIDEO: \"audiovideo\"\n};\nvar BaseSegment = class {\n  constructor(baseurl) {\n    this._byteRange = null;\n    this._url = null;\n    this.baseurl = void 0;\n    this.relurl = void 0;\n    this.elementaryStreams = {\n      [ElementaryStreamTypes.AUDIO]: null,\n      [ElementaryStreamTypes.VIDEO]: null,\n      [ElementaryStreamTypes.AUDIOVIDEO]: null\n    };\n    this.baseurl = baseurl;\n  }\n  // setByteRange converts a EXT-X-BYTERANGE attribute into a two element array\n  setByteRange(value, previous) {\n    const params = value.split(\"@\", 2);\n    let start;\n    if (params.length === 1) {\n      start = (previous == null ? void 0 : previous.byteRangeEndOffset) || 0;\n    } else {\n      start = parseInt(params[1]);\n    }\n    this._byteRange = [start, parseInt(params[0]) + start];\n  }\n  get byteRange() {\n    if (!this._byteRange) {\n      return [];\n    }\n    return this._byteRange;\n  }\n  get byteRangeStartOffset() {\n    return this.byteRange[0];\n  }\n  get byteRangeEndOffset() {\n    return this.byteRange[1];\n  }\n  get url() {\n    if (!this._url && this.baseurl && this.relurl) {\n      this._url = urlToolkitExports.buildAbsoluteURL(this.baseurl, this.relurl, {\n        alwaysNormalize: true\n      });\n    }\n    return this._url || \"\";\n  }\n  set url(value) {\n    this._url = value;\n  }\n};\nvar Fragment = class extends BaseSegment {\n  constructor(type, baseurl) {\n    super(baseurl);\n    this._decryptdata = null;\n    this.rawProgramDateTime = null;\n    this.programDateTime = null;\n    this.tagList = [];\n    this.duration = 0;\n    this.sn = 0;\n    this.levelkeys = void 0;\n    this.type = void 0;\n    this.loader = null;\n    this.keyLoader = null;\n    this.level = -1;\n    this.cc = 0;\n    this.startPTS = void 0;\n    this.endPTS = void 0;\n    this.startDTS = void 0;\n    this.endDTS = void 0;\n    this.start = 0;\n    this.deltaPTS = void 0;\n    this.maxStartPTS = void 0;\n    this.minEndPTS = void 0;\n    this.stats = new LoadStats();\n    this.data = void 0;\n    this.bitrateTest = false;\n    this.title = null;\n    this.initSegment = null;\n    this.endList = void 0;\n    this.gap = void 0;\n    this.urlId = 0;\n    this.type = type;\n  }\n  get decryptdata() {\n    const {\n      levelkeys\n    } = this;\n    if (!levelkeys && !this._decryptdata) {\n      return null;\n    }\n    if (!this._decryptdata && this.levelkeys && !this.levelkeys.NONE) {\n      const key = this.levelkeys.identity;\n      if (key) {\n        this._decryptdata = key.getDecryptData(this.sn);\n      } else {\n        const keyFormats = Object.keys(this.levelkeys);\n        if (keyFormats.length === 1) {\n          return this._decryptdata = this.levelkeys[keyFormats[0]].getDecryptData(this.sn);\n        }\n      }\n    }\n    return this._decryptdata;\n  }\n  get end() {\n    return this.start + this.duration;\n  }\n  get endProgramDateTime() {\n    if (this.programDateTime === null) {\n      return null;\n    }\n    if (!isFiniteNumber(this.programDateTime)) {\n      return null;\n    }\n    const duration = !isFiniteNumber(this.duration) ? 0 : this.duration;\n    return this.programDateTime + duration * 1e3;\n  }\n  get encrypted() {\n    var _this$_decryptdata;\n    if ((_this$_decryptdata = this._decryptdata) != null && _this$_decryptdata.encrypted) {\n      return true;\n    } else if (this.levelkeys) {\n      const keyFormats = Object.keys(this.levelkeys);\n      const len = keyFormats.length;\n      if (len > 1 || len === 1 && this.levelkeys[keyFormats[0]].encrypted) {\n        return true;\n      }\n    }\n    return false;\n  }\n  setKeyFormat(keyFormat) {\n    if (this.levelkeys) {\n      const key = this.levelkeys[keyFormat];\n      if (key && !this._decryptdata) {\n        this._decryptdata = key.getDecryptData(this.sn);\n      }\n    }\n  }\n  abortRequests() {\n    var _this$loader, _this$keyLoader;\n    (_this$loader = this.loader) == null ? void 0 : _this$loader.abort();\n    (_this$keyLoader = this.keyLoader) == null ? void 0 : _this$keyLoader.abort();\n  }\n  setElementaryStreamInfo(type, startPTS, endPTS, startDTS, endDTS, partial = false) {\n    const {\n      elementaryStreams\n    } = this;\n    const info = elementaryStreams[type];\n    if (!info) {\n      elementaryStreams[type] = {\n        startPTS,\n        endPTS,\n        startDTS,\n        endDTS,\n        partial\n      };\n      return;\n    }\n    info.startPTS = Math.min(info.startPTS, startPTS);\n    info.endPTS = Math.max(info.endPTS, endPTS);\n    info.startDTS = Math.min(info.startDTS, startDTS);\n    info.endDTS = Math.max(info.endDTS, endDTS);\n  }\n  clearElementaryStreamInfo() {\n    const {\n      elementaryStreams\n    } = this;\n    elementaryStreams[ElementaryStreamTypes.AUDIO] = null;\n    elementaryStreams[ElementaryStreamTypes.VIDEO] = null;\n    elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO] = null;\n  }\n};\nvar Part = class extends BaseSegment {\n  constructor(partAttrs, frag, baseurl, index, previous) {\n    super(baseurl);\n    this.fragOffset = 0;\n    this.duration = 0;\n    this.gap = false;\n    this.independent = false;\n    this.relurl = void 0;\n    this.fragment = void 0;\n    this.index = void 0;\n    this.stats = new LoadStats();\n    this.duration = partAttrs.decimalFloatingPoint(\"DURATION\");\n    this.gap = partAttrs.bool(\"GAP\");\n    this.independent = partAttrs.bool(\"INDEPENDENT\");\n    this.relurl = partAttrs.enumeratedString(\"URI\");\n    this.fragment = frag;\n    this.index = index;\n    const byteRange = partAttrs.enumeratedString(\"BYTERANGE\");\n    if (byteRange) {\n      this.setByteRange(byteRange, previous);\n    }\n    if (previous) {\n      this.fragOffset = previous.fragOffset + previous.duration;\n    }\n  }\n  get start() {\n    return this.fragment.start + this.fragOffset;\n  }\n  get end() {\n    return this.start + this.duration;\n  }\n  get loaded() {\n    const {\n      elementaryStreams\n    } = this;\n    return !!(elementaryStreams.audio || elementaryStreams.video || elementaryStreams.audiovideo);\n  }\n};\nvar DEFAULT_TARGET_DURATION = 10;\nvar LevelDetails = class {\n  constructor(baseUrl) {\n    this.PTSKnown = false;\n    this.alignedSliding = false;\n    this.averagetargetduration = void 0;\n    this.endCC = 0;\n    this.endSN = 0;\n    this.fragments = void 0;\n    this.fragmentHint = void 0;\n    this.partList = null;\n    this.dateRanges = void 0;\n    this.live = true;\n    this.ageHeader = 0;\n    this.advancedDateTime = void 0;\n    this.updated = true;\n    this.advanced = true;\n    this.availabilityDelay = void 0;\n    this.misses = 0;\n    this.startCC = 0;\n    this.startSN = 0;\n    this.startTimeOffset = null;\n    this.targetduration = 0;\n    this.totalduration = 0;\n    this.type = null;\n    this.url = void 0;\n    this.m3u8 = \"\";\n    this.version = null;\n    this.canBlockReload = false;\n    this.canSkipUntil = 0;\n    this.canSkipDateRanges = false;\n    this.skippedSegments = 0;\n    this.recentlyRemovedDateranges = void 0;\n    this.partHoldBack = 0;\n    this.holdBack = 0;\n    this.partTarget = 0;\n    this.preloadHint = void 0;\n    this.renditionReports = void 0;\n    this.tuneInGoal = 0;\n    this.deltaUpdateFailed = void 0;\n    this.driftStartTime = 0;\n    this.driftEndTime = 0;\n    this.driftStart = 0;\n    this.driftEnd = 0;\n    this.encryptedFragments = void 0;\n    this.playlistParsingError = null;\n    this.variableList = null;\n    this.hasVariableRefs = false;\n    this.fragments = [];\n    this.encryptedFragments = [];\n    this.dateRanges = {};\n    this.url = baseUrl;\n  }\n  reloaded(previous) {\n    if (!previous) {\n      this.advanced = true;\n      this.updated = true;\n      return;\n    }\n    const partSnDiff = this.lastPartSn - previous.lastPartSn;\n    const partIndexDiff = this.lastPartIndex - previous.lastPartIndex;\n    this.updated = this.endSN !== previous.endSN || !!partIndexDiff || !!partSnDiff || !this.live;\n    this.advanced = this.endSN > previous.endSN || partSnDiff > 0 || partSnDiff === 0 && partIndexDiff > 0;\n    if (this.updated || this.advanced) {\n      this.misses = Math.floor(previous.misses * 0.6);\n    } else {\n      this.misses = previous.misses + 1;\n    }\n    this.availabilityDelay = previous.availabilityDelay;\n  }\n  get hasProgramDateTime() {\n    if (this.fragments.length) {\n      return isFiniteNumber(this.fragments[this.fragments.length - 1].programDateTime);\n    }\n    return false;\n  }\n  get levelTargetDuration() {\n    return this.averagetargetduration || this.targetduration || DEFAULT_TARGET_DURATION;\n  }\n  get drift() {\n    const runTime = this.driftEndTime - this.driftStartTime;\n    if (runTime > 0) {\n      const runDuration = this.driftEnd - this.driftStart;\n      return runDuration * 1e3 / runTime;\n    }\n    return 1;\n  }\n  get edge() {\n    return this.partEnd || this.fragmentEnd;\n  }\n  get partEnd() {\n    var _this$partList;\n    if ((_this$partList = this.partList) != null && _this$partList.length) {\n      return this.partList[this.partList.length - 1].end;\n    }\n    return this.fragmentEnd;\n  }\n  get fragmentEnd() {\n    var _this$fragments;\n    if ((_this$fragments = this.fragments) != null && _this$fragments.length) {\n      return this.fragments[this.fragments.length - 1].end;\n    }\n    return 0;\n  }\n  get age() {\n    if (this.advancedDateTime) {\n      return Math.max(Date.now() - this.advancedDateTime, 0) / 1e3;\n    }\n    return 0;\n  }\n  get lastPartIndex() {\n    var _this$partList2;\n    if ((_this$partList2 = this.partList) != null && _this$partList2.length) {\n      return this.partList[this.partList.length - 1].index;\n    }\n    return -1;\n  }\n  get lastPartSn() {\n    var _this$partList3;\n    if ((_this$partList3 = this.partList) != null && _this$partList3.length) {\n      return this.partList[this.partList.length - 1].fragment.sn;\n    }\n    return this.endSN;\n  }\n};\nfunction base64Decode(base64encodedStr) {\n  return Uint8Array.from(atob(base64encodedStr), (c4) => c4.charCodeAt(0));\n}\nfunction getKeyIdBytes(str) {\n  const keyIdbytes = strToUtf8array(str).subarray(0, 16);\n  const paddedkeyIdbytes = new Uint8Array(16);\n  paddedkeyIdbytes.set(keyIdbytes, 16 - keyIdbytes.length);\n  return paddedkeyIdbytes;\n}\nfunction changeEndianness(keyId) {\n  const swap = function swap2(array, from, to) {\n    const cur = array[from];\n    array[from] = array[to];\n    array[to] = cur;\n  };\n  swap(keyId, 0, 3);\n  swap(keyId, 1, 2);\n  swap(keyId, 4, 5);\n  swap(keyId, 6, 7);\n}\nfunction convertDataUriToArrayBytes(uri) {\n  const colonsplit = uri.split(\":\");\n  let keydata = null;\n  if (colonsplit[0] === \"data\" && colonsplit.length === 2) {\n    const semicolonsplit = colonsplit[1].split(\";\");\n    const commasplit = semicolonsplit[semicolonsplit.length - 1].split(\",\");\n    if (commasplit.length === 2) {\n      const isbase64 = commasplit[0] === \"base64\";\n      const data = commasplit[1];\n      if (isbase64) {\n        semicolonsplit.splice(-1, 1);\n        keydata = base64Decode(data);\n      } else {\n        keydata = getKeyIdBytes(data);\n      }\n    }\n  }\n  return keydata;\n}\nfunction strToUtf8array(str) {\n  return Uint8Array.from(unescape(encodeURIComponent(str)), (c4) => c4.charCodeAt(0));\n}\nvar optionalSelf = typeof self !== \"undefined\" ? self : void 0;\nvar KeySystems = {\n  CLEARKEY: \"org.w3.clearkey\",\n  FAIRPLAY: \"com.apple.fps\",\n  PLAYREADY: \"com.microsoft.playready\",\n  WIDEVINE: \"com.widevine.alpha\"\n};\nvar KeySystemFormats = {\n  CLEARKEY: \"org.w3.clearkey\",\n  FAIRPLAY: \"com.apple.streamingkeydelivery\",\n  PLAYREADY: \"com.microsoft.playready\",\n  WIDEVINE: \"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed\"\n};\nfunction keySystemFormatToKeySystemDomain(format2) {\n  switch (format2) {\n    case KeySystemFormats.FAIRPLAY:\n      return KeySystems.FAIRPLAY;\n    case KeySystemFormats.PLAYREADY:\n      return KeySystems.PLAYREADY;\n    case KeySystemFormats.WIDEVINE:\n      return KeySystems.WIDEVINE;\n    case KeySystemFormats.CLEARKEY:\n      return KeySystems.CLEARKEY;\n  }\n}\nvar KeySystemIds = {\n  CENC: \"1077efecc0b24d02ace33c1e52e2fb4b\",\n  CLEARKEY: \"e2719d58a985b3c9781ab030af78d30e\",\n  FAIRPLAY: \"94ce86fb07ff4f43adb893d2fa968ca2\",\n  PLAYREADY: \"9a04f07998404286ab92e65be0885f95\",\n  WIDEVINE: \"edef8ba979d64acea3c827dcd51d21ed\"\n};\nfunction keySystemIdToKeySystemDomain(systemId) {\n  if (systemId === KeySystemIds.WIDEVINE) {\n    return KeySystems.WIDEVINE;\n  } else if (systemId === KeySystemIds.PLAYREADY) {\n    return KeySystems.PLAYREADY;\n  } else if (systemId === KeySystemIds.CENC || systemId === KeySystemIds.CLEARKEY) {\n    return KeySystems.CLEARKEY;\n  }\n}\nfunction keySystemDomainToKeySystemFormat(keySystem) {\n  switch (keySystem) {\n    case KeySystems.FAIRPLAY:\n      return KeySystemFormats.FAIRPLAY;\n    case KeySystems.PLAYREADY:\n      return KeySystemFormats.PLAYREADY;\n    case KeySystems.WIDEVINE:\n      return KeySystemFormats.WIDEVINE;\n    case KeySystems.CLEARKEY:\n      return KeySystemFormats.CLEARKEY;\n  }\n}\nfunction getKeySystemsForConfig(config) {\n  const {\n    drmSystems,\n    widevineLicenseUrl\n  } = config;\n  const keySystemsToAttempt = drmSystems ? [KeySystems.FAIRPLAY, KeySystems.WIDEVINE, KeySystems.PLAYREADY, KeySystems.CLEARKEY].filter((keySystem) => !!drmSystems[keySystem]) : [];\n  if (!keySystemsToAttempt[KeySystems.WIDEVINE] && widevineLicenseUrl) {\n    keySystemsToAttempt.push(KeySystems.WIDEVINE);\n  }\n  return keySystemsToAttempt;\n}\nvar requestMediaKeySystemAccess = function(_optionalSelf$navigat) {\n  if (optionalSelf != null && (_optionalSelf$navigat = optionalSelf.navigator) != null && _optionalSelf$navigat.requestMediaKeySystemAccess) {\n    return self.navigator.requestMediaKeySystemAccess.bind(self.navigator);\n  } else {\n    return null;\n  }\n}();\nfunction getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, drmSystemOptions) {\n  let initDataTypes;\n  switch (keySystem) {\n    case KeySystems.FAIRPLAY:\n      initDataTypes = [\"cenc\", \"sinf\"];\n      break;\n    case KeySystems.WIDEVINE:\n    case KeySystems.PLAYREADY:\n      initDataTypes = [\"cenc\"];\n      break;\n    case KeySystems.CLEARKEY:\n      initDataTypes = [\"cenc\", \"keyids\"];\n      break;\n    default:\n      throw new Error(`Unknown key-system: ${keySystem}`);\n  }\n  return createMediaKeySystemConfigurations(initDataTypes, audioCodecs, videoCodecs, drmSystemOptions);\n}\nfunction createMediaKeySystemConfigurations(initDataTypes, audioCodecs, videoCodecs, drmSystemOptions) {\n  const baseConfig = {\n    initDataTypes,\n    persistentState: drmSystemOptions.persistentState || \"optional\",\n    distinctiveIdentifier: drmSystemOptions.distinctiveIdentifier || \"optional\",\n    sessionTypes: drmSystemOptions.sessionTypes || [drmSystemOptions.sessionType || \"temporary\"],\n    audioCapabilities: audioCodecs.map((codec) => ({\n      contentType: `audio/mp4; codecs=\"${codec}\"`,\n      robustness: drmSystemOptions.audioRobustness || \"\",\n      encryptionScheme: drmSystemOptions.audioEncryptionScheme || null\n    })),\n    videoCapabilities: videoCodecs.map((codec) => ({\n      contentType: `video/mp4; codecs=\"${codec}\"`,\n      robustness: drmSystemOptions.videoRobustness || \"\",\n      encryptionScheme: drmSystemOptions.videoEncryptionScheme || null\n    }))\n  };\n  return [baseConfig];\n}\nfunction parsePlayReadyWRM(keyBytes) {\n  const keyBytesUtf16 = new Uint16Array(keyBytes.buffer, keyBytes.byteOffset, keyBytes.byteLength / 2);\n  const keyByteStr = String.fromCharCode.apply(null, Array.from(keyBytesUtf16));\n  const xmlKeyBytes = keyByteStr.substring(keyByteStr.indexOf(\"<\"), keyByteStr.length);\n  const parser = new DOMParser();\n  const xmlDoc = parser.parseFromString(xmlKeyBytes, \"text/xml\");\n  const keyData = xmlDoc.getElementsByTagName(\"KID\")[0];\n  if (keyData) {\n    const keyId = keyData.childNodes[0] ? keyData.childNodes[0].nodeValue : keyData.getAttribute(\"VALUE\");\n    if (keyId) {\n      const keyIdArray = base64Decode(keyId).subarray(0, 16);\n      changeEndianness(keyIdArray);\n      return keyIdArray;\n    }\n  }\n  return null;\n}\nfunction sliceUint8(array, start, end) {\n  return Uint8Array.prototype.slice ? array.slice(start, end) : new Uint8Array(Array.prototype.slice.call(array, start, end));\n}\nvar isHeader$2 = (data, offset) => {\n  if (offset + 10 <= data.length) {\n    if (data[offset] === 73 && data[offset + 1] === 68 && data[offset + 2] === 51) {\n      if (data[offset + 3] < 255 && data[offset + 4] < 255) {\n        if (data[offset + 6] < 128 && data[offset + 7] < 128 && data[offset + 8] < 128 && data[offset + 9] < 128) {\n          return true;\n        }\n      }\n    }\n  }\n  return false;\n};\nvar isFooter = (data, offset) => {\n  if (offset + 10 <= data.length) {\n    if (data[offset] === 51 && data[offset + 1] === 68 && data[offset + 2] === 73) {\n      if (data[offset + 3] < 255 && data[offset + 4] < 255) {\n        if (data[offset + 6] < 128 && data[offset + 7] < 128 && data[offset + 8] < 128 && data[offset + 9] < 128) {\n          return true;\n        }\n      }\n    }\n  }\n  return false;\n};\nvar getID3Data = (data, offset) => {\n  const front = offset;\n  let length = 0;\n  while (isHeader$2(data, offset)) {\n    length += 10;\n    const size = readSize(data, offset + 6);\n    length += size;\n    if (isFooter(data, offset + 10)) {\n      length += 10;\n    }\n    offset += length;\n  }\n  if (length > 0) {\n    return data.subarray(front, front + length);\n  }\n  return void 0;\n};\nvar readSize = (data, offset) => {\n  let size = 0;\n  size = (data[offset] & 127) << 21;\n  size |= (data[offset + 1] & 127) << 14;\n  size |= (data[offset + 2] & 127) << 7;\n  size |= data[offset + 3] & 127;\n  return size;\n};\nvar canParse$2 = (data, offset) => {\n  return isHeader$2(data, offset) && readSize(data, offset + 6) + 10 <= data.length - offset;\n};\nvar getTimeStamp = (data) => {\n  const frames = getID3Frames(data);\n  for (let i2 = 0; i2 < frames.length; i2++) {\n    const frame = frames[i2];\n    if (isTimeStampFrame(frame)) {\n      return readTimeStamp(frame);\n    }\n  }\n  return void 0;\n};\nvar isTimeStampFrame = (frame) => {\n  return frame && frame.key === \"PRIV\" && frame.info === \"com.apple.streaming.transportStreamTimestamp\";\n};\nvar getFrameData = (data) => {\n  const type = String.fromCharCode(data[0], data[1], data[2], data[3]);\n  const size = readSize(data, 4);\n  const offset = 10;\n  return {\n    type,\n    size,\n    data: data.subarray(offset, offset + size)\n  };\n};\nvar getID3Frames = (id3Data) => {\n  let offset = 0;\n  const frames = [];\n  while (isHeader$2(id3Data, offset)) {\n    const size = readSize(id3Data, offset + 6);\n    offset += 10;\n    const end = offset + size;\n    while (offset + 8 < end) {\n      const frameData = getFrameData(id3Data.subarray(offset));\n      const frame = decodeFrame(frameData);\n      if (frame) {\n        frames.push(frame);\n      }\n      offset += frameData.size + 10;\n    }\n    if (isFooter(id3Data, offset)) {\n      offset += 10;\n    }\n  }\n  return frames;\n};\nvar decodeFrame = (frame) => {\n  if (frame.type === \"PRIV\") {\n    return decodePrivFrame(frame);\n  } else if (frame.type[0] === \"W\") {\n    return decodeURLFrame(frame);\n  }\n  return decodeTextFrame(frame);\n};\nvar decodePrivFrame = (frame) => {\n  if (frame.size < 2) {\n    return void 0;\n  }\n  const owner = utf8ArrayToStr(frame.data, true);\n  const privateData = new Uint8Array(frame.data.subarray(owner.length + 1));\n  return {\n    key: frame.type,\n    info: owner,\n    data: privateData.buffer\n  };\n};\nvar decodeTextFrame = (frame) => {\n  if (frame.size < 2) {\n    return void 0;\n  }\n  if (frame.type === \"TXXX\") {\n    let index = 1;\n    const description = utf8ArrayToStr(frame.data.subarray(index), true);\n    index += description.length + 1;\n    const value = utf8ArrayToStr(frame.data.subarray(index));\n    return {\n      key: frame.type,\n      info: description,\n      data: value\n    };\n  }\n  const text = utf8ArrayToStr(frame.data.subarray(1));\n  return {\n    key: frame.type,\n    data: text\n  };\n};\nvar decodeURLFrame = (frame) => {\n  if (frame.type === \"WXXX\") {\n    if (frame.size < 2) {\n      return void 0;\n    }\n    let index = 1;\n    const description = utf8ArrayToStr(frame.data.subarray(index), true);\n    index += description.length + 1;\n    const value = utf8ArrayToStr(frame.data.subarray(index));\n    return {\n      key: frame.type,\n      info: description,\n      data: value\n    };\n  }\n  const url = utf8ArrayToStr(frame.data);\n  return {\n    key: frame.type,\n    data: url\n  };\n};\nvar readTimeStamp = (timeStampFrame) => {\n  if (timeStampFrame.data.byteLength === 8) {\n    const data = new Uint8Array(timeStampFrame.data);\n    const pts33Bit = data[3] & 1;\n    let timestamp = (data[4] << 23) + (data[5] << 15) + (data[6] << 7) + data[7];\n    timestamp /= 45;\n    if (pts33Bit) {\n      timestamp += 4772185884e-2;\n    }\n    return Math.round(timestamp);\n  }\n  return void 0;\n};\nvar utf8ArrayToStr = (array, exitOnNull = false) => {\n  const decoder2 = getTextDecoder();\n  if (decoder2) {\n    const decoded = decoder2.decode(array);\n    if (exitOnNull) {\n      const idx = decoded.indexOf(\"\\0\");\n      return idx !== -1 ? decoded.substring(0, idx) : decoded;\n    }\n    return decoded.replace(/\\0/g, \"\");\n  }\n  const len = array.length;\n  let c4;\n  let char2;\n  let char3;\n  let out = \"\";\n  let i2 = 0;\n  while (i2 < len) {\n    c4 = array[i2++];\n    if (c4 === 0 && exitOnNull) {\n      return out;\n    } else if (c4 === 0 || c4 === 3) {\n      continue;\n    }\n    switch (c4 >> 4) {\n      case 0:\n      case 1:\n      case 2:\n      case 3:\n      case 4:\n      case 5:\n      case 6:\n      case 7:\n        out += String.fromCharCode(c4);\n        break;\n      case 12:\n      case 13:\n        char2 = array[i2++];\n        out += String.fromCharCode((c4 & 31) << 6 | char2 & 63);\n        break;\n      case 14:\n        char2 = array[i2++];\n        char3 = array[i2++];\n        out += String.fromCharCode((c4 & 15) << 12 | (char2 & 63) << 6 | (char3 & 63) << 0);\n        break;\n    }\n  }\n  return out;\n};\nvar decoder;\nfunction getTextDecoder() {\n  if (navigator.userAgent.includes(\"PlayStation 4\")) {\n    return;\n  }\n  if (!decoder && typeof self.TextDecoder !== \"undefined\") {\n    decoder = new self.TextDecoder(\"utf-8\");\n  }\n  return decoder;\n}\nvar Hex = {\n  hexDump: function(array) {\n    let str = \"\";\n    for (let i2 = 0; i2 < array.length; i2++) {\n      let h3 = array[i2].toString(16);\n      if (h3.length < 2) {\n        h3 = \"0\" + h3;\n      }\n      str += h3;\n    }\n    return str;\n  }\n};\nvar UINT32_MAX$1 = Math.pow(2, 32) - 1;\nvar push = [].push;\nvar RemuxerTrackIdConfig = {\n  video: 1,\n  audio: 2,\n  id3: 3,\n  text: 4\n};\nfunction bin2str(data) {\n  return String.fromCharCode.apply(null, data);\n}\nfunction readUint16(buffer, offset) {\n  const val = buffer[offset] << 8 | buffer[offset + 1];\n  return val < 0 ? 65536 + val : val;\n}\nfunction readUint32(buffer, offset) {\n  const val = readSint32(buffer, offset);\n  return val < 0 ? 4294967296 + val : val;\n}\nfunction readUint64(buffer, offset) {\n  let result = readUint32(buffer, offset);\n  result *= Math.pow(2, 32);\n  result += readUint32(buffer, offset + 4);\n  return result;\n}\nfunction readSint32(buffer, offset) {\n  return buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3];\n}\nfunction writeUint32(buffer, offset, value) {\n  buffer[offset] = value >> 24;\n  buffer[offset + 1] = value >> 16 & 255;\n  buffer[offset + 2] = value >> 8 & 255;\n  buffer[offset + 3] = value & 255;\n}\nfunction hasMoofData(data) {\n  const end = data.byteLength;\n  for (let i2 = 0; i2 < end; ) {\n    const size = readUint32(data, i2);\n    if (size > 8 && data[i2 + 4] === 109 && data[i2 + 5] === 111 && data[i2 + 6] === 111 && data[i2 + 7] === 102) {\n      return true;\n    }\n    i2 = size > 1 ? i2 + size : end;\n  }\n  return false;\n}\nfunction findBox(data, path) {\n  const results = [];\n  if (!path.length) {\n    return results;\n  }\n  const end = data.byteLength;\n  for (let i2 = 0; i2 < end; ) {\n    const size = readUint32(data, i2);\n    const type = bin2str(data.subarray(i2 + 4, i2 + 8));\n    const endbox = size > 1 ? i2 + size : end;\n    if (type === path[0]) {\n      if (path.length === 1) {\n        results.push(data.subarray(i2 + 8, endbox));\n      } else {\n        const subresults = findBox(data.subarray(i2 + 8, endbox), path.slice(1));\n        if (subresults.length) {\n          push.apply(results, subresults);\n        }\n      }\n    }\n    i2 = endbox;\n  }\n  return results;\n}\nfunction parseSegmentIndex(sidx) {\n  const references = [];\n  const version = sidx[0];\n  let index = 8;\n  const timescale = readUint32(sidx, index);\n  index += 4;\n  let earliestPresentationTime = 0;\n  let firstOffset = 0;\n  if (version === 0) {\n    earliestPresentationTime = readUint32(sidx, index);\n    firstOffset = readUint32(sidx, index + 4);\n    index += 8;\n  } else {\n    earliestPresentationTime = readUint64(sidx, index);\n    firstOffset = readUint64(sidx, index + 8);\n    index += 16;\n  }\n  index += 2;\n  let startByte = sidx.length + firstOffset;\n  const referencesCount = readUint16(sidx, index);\n  index += 2;\n  for (let i2 = 0; i2 < referencesCount; i2++) {\n    let referenceIndex = index;\n    const referenceInfo = readUint32(sidx, referenceIndex);\n    referenceIndex += 4;\n    const referenceSize = referenceInfo & 2147483647;\n    const referenceType = (referenceInfo & 2147483648) >>> 31;\n    if (referenceType === 1) {\n      logger.warn(\"SIDX has hierarchical references (not supported)\");\n      return null;\n    }\n    const subsegmentDuration = readUint32(sidx, referenceIndex);\n    referenceIndex += 4;\n    references.push({\n      referenceSize,\n      subsegmentDuration,\n      // unscaled\n      info: {\n        duration: subsegmentDuration / timescale,\n        start: startByte,\n        end: startByte + referenceSize - 1\n      }\n    });\n    startByte += referenceSize;\n    referenceIndex += 4;\n    index = referenceIndex;\n  }\n  return {\n    earliestPresentationTime,\n    timescale,\n    version,\n    referencesCount,\n    references\n  };\n}\nfunction parseInitSegment(initSegment) {\n  const result = [];\n  const traks = findBox(initSegment, [\"moov\", \"trak\"]);\n  for (let i2 = 0; i2 < traks.length; i2++) {\n    const trak = traks[i2];\n    const tkhd = findBox(trak, [\"tkhd\"])[0];\n    if (tkhd) {\n      let version = tkhd[0];\n      const trackId = readUint32(tkhd, version === 0 ? 12 : 20);\n      const mdhd = findBox(trak, [\"mdia\", \"mdhd\"])[0];\n      if (mdhd) {\n        version = mdhd[0];\n        const timescale = readUint32(mdhd, version === 0 ? 12 : 20);\n        const hdlr = findBox(trak, [\"mdia\", \"hdlr\"])[0];\n        if (hdlr) {\n          const hdlrType = bin2str(hdlr.subarray(8, 12));\n          const type = {\n            soun: ElementaryStreamTypes.AUDIO,\n            vide: ElementaryStreamTypes.VIDEO\n          }[hdlrType];\n          if (type) {\n            const stsd = findBox(trak, [\"mdia\", \"minf\", \"stbl\", \"stsd\"])[0];\n            const stsdData = parseStsd(stsd);\n            result[trackId] = {\n              timescale,\n              type\n            };\n            result[type] = _objectSpread2({\n              timescale,\n              id: trackId\n            }, stsdData);\n          }\n        }\n      }\n    }\n  }\n  const trex = findBox(initSegment, [\"moov\", \"mvex\", \"trex\"]);\n  trex.forEach((trex2) => {\n    const trackId = readUint32(trex2, 4);\n    const track = result[trackId];\n    if (track) {\n      track.default = {\n        duration: readUint32(trex2, 12),\n        flags: readUint32(trex2, 20)\n      };\n    }\n  });\n  return result;\n}\nfunction parseStsd(stsd) {\n  const sampleEntries = stsd.subarray(8);\n  const sampleEntriesEnd = sampleEntries.subarray(8 + 78);\n  const fourCC = bin2str(sampleEntries.subarray(4, 8));\n  let codec = fourCC;\n  const encrypted = fourCC === \"enca\" || fourCC === \"encv\";\n  if (encrypted) {\n    const encBox = findBox(sampleEntries, [fourCC])[0];\n    const encBoxChildren = encBox.subarray(fourCC === \"enca\" ? 28 : 78);\n    const sinfs = findBox(encBoxChildren, [\"sinf\"]);\n    sinfs.forEach((sinf) => {\n      const schm = findBox(sinf, [\"schm\"])[0];\n      if (schm) {\n        const scheme = bin2str(schm.subarray(4, 8));\n        if (scheme === \"cbcs\" || scheme === \"cenc\") {\n          const frma = findBox(sinf, [\"frma\"])[0];\n          if (frma) {\n            codec = bin2str(frma);\n          }\n        }\n      }\n    });\n  }\n  switch (codec) {\n    case \"avc1\":\n    case \"avc2\":\n    case \"avc3\":\n    case \"avc4\": {\n      const avcCBox = findBox(sampleEntriesEnd, [\"avcC\"])[0];\n      codec += \".\" + toHex(avcCBox[1]) + toHex(avcCBox[2]) + toHex(avcCBox[3]);\n      break;\n    }\n    case \"mp4a\": {\n      const codecBox = findBox(sampleEntries, [fourCC])[0];\n      const esdsBox = findBox(codecBox.subarray(28), [\"esds\"])[0];\n      if (esdsBox && esdsBox.length > 12) {\n        let i2 = 4;\n        if (esdsBox[i2++] !== 3) {\n          break;\n        }\n        i2 = skipBERInteger(esdsBox, i2);\n        i2 += 2;\n        const flags = esdsBox[i2++];\n        if (flags & 128) {\n          i2 += 2;\n        }\n        if (flags & 64) {\n          i2 += esdsBox[i2++];\n        }\n        if (esdsBox[i2++] !== 4) {\n          break;\n        }\n        i2 = skipBERInteger(esdsBox, i2);\n        const objectType = esdsBox[i2++];\n        if (objectType === 64) {\n          codec += \".\" + toHex(objectType);\n        } else {\n          break;\n        }\n        i2 += 12;\n        if (esdsBox[i2++] !== 5) {\n          break;\n        }\n        i2 = skipBERInteger(esdsBox, i2);\n        const firstByte = esdsBox[i2++];\n        let audioObjectType = (firstByte & 248) >> 3;\n        if (audioObjectType === 31) {\n          audioObjectType += 1 + ((firstByte & 7) << 3) + ((esdsBox[i2] & 224) >> 5);\n        }\n        codec += \".\" + audioObjectType;\n      }\n      break;\n    }\n    case \"hvc1\":\n    case \"hev1\": {\n      const hvcCBox = findBox(sampleEntriesEnd, [\"hvcC\"])[0];\n      const profileByte = hvcCBox[1];\n      const profileSpace = [\"\", \"A\", \"B\", \"C\"][profileByte >> 6];\n      const generalProfileIdc = profileByte & 31;\n      const profileCompat = readUint32(hvcCBox, 2);\n      const tierFlag = (profileByte & 32) >> 5 ? \"H\" : \"L\";\n      const levelIDC = hvcCBox[12];\n      const constraintIndicator = hvcCBox.subarray(6, 12);\n      codec += \".\" + profileSpace + generalProfileIdc;\n      codec += \".\" + profileCompat.toString(16).toUpperCase();\n      codec += \".\" + tierFlag + levelIDC;\n      let constraintString = \"\";\n      for (let i2 = constraintIndicator.length; i2--; ) {\n        const byte = constraintIndicator[i2];\n        if (byte || constraintString) {\n          const encodedByte = byte.toString(16).toUpperCase();\n          constraintString = \".\" + encodedByte + constraintString;\n        }\n      }\n      codec += constraintString;\n      break;\n    }\n    case \"dvh1\":\n    case \"dvhe\": {\n      const dvcCBox = findBox(sampleEntriesEnd, [\"dvcC\"])[0];\n      const profile = dvcCBox[2] >> 1 & 127;\n      const level = dvcCBox[2] << 5 & 32 | dvcCBox[3] >> 3 & 31;\n      codec += \".\" + addLeadingZero(profile) + \".\" + addLeadingZero(level);\n      break;\n    }\n    case \"vp09\": {\n      const vpcCBox = findBox(sampleEntriesEnd, [\"vpcC\"])[0];\n      const profile = vpcCBox[4];\n      const level = vpcCBox[5];\n      const bitDepth = vpcCBox[6] >> 4 & 15;\n      codec += \".\" + addLeadingZero(profile) + \".\" + addLeadingZero(level) + \".\" + addLeadingZero(bitDepth);\n      break;\n    }\n    case \"av01\": {\n      const av1CBox = findBox(sampleEntriesEnd, [\"av1C\"])[0];\n      const profile = av1CBox[1] >>> 5;\n      const level = av1CBox[1] & 31;\n      const tierFlag = av1CBox[2] >>> 7 ? \"H\" : \"M\";\n      const highBitDepth = (av1CBox[2] & 64) >> 6;\n      const twelveBit = (av1CBox[2] & 32) >> 5;\n      const bitDepth = profile === 2 && highBitDepth ? twelveBit ? 12 : 10 : highBitDepth ? 10 : 8;\n      const monochrome = (av1CBox[2] & 16) >> 4;\n      const chromaSubsamplingX = (av1CBox[2] & 8) >> 3;\n      const chromaSubsamplingY = (av1CBox[2] & 4) >> 2;\n      const chromaSamplePosition = av1CBox[2] & 3;\n      const colorPrimaries = 1;\n      const transferCharacteristics = 1;\n      const matrixCoefficients = 1;\n      const videoFullRangeFlag = 0;\n      codec += \".\" + profile + \".\" + addLeadingZero(level) + tierFlag + \".\" + addLeadingZero(bitDepth) + \".\" + monochrome + \".\" + chromaSubsamplingX + chromaSubsamplingY + chromaSamplePosition + \".\" + addLeadingZero(colorPrimaries) + \".\" + addLeadingZero(transferCharacteristics) + \".\" + addLeadingZero(matrixCoefficients) + \".\" + videoFullRangeFlag;\n      break;\n    }\n  }\n  return {\n    codec,\n    encrypted\n  };\n}\nfunction skipBERInteger(bytes, i2) {\n  const limit = i2 + 5;\n  while (bytes[i2++] & 128 && i2 < limit) {\n  }\n  return i2;\n}\nfunction toHex(x4) {\n  return (\"0\" + x4.toString(16).toUpperCase()).slice(-2);\n}\nfunction addLeadingZero(num) {\n  return (num < 10 ? \"0\" : \"\") + num;\n}\nfunction patchEncyptionData(initSegment, decryptdata) {\n  if (!initSegment || !decryptdata) {\n    return initSegment;\n  }\n  const keyId = decryptdata.keyId;\n  if (keyId && decryptdata.isCommonEncryption) {\n    const traks = findBox(initSegment, [\"moov\", \"trak\"]);\n    traks.forEach((trak) => {\n      const stsd = findBox(trak, [\"mdia\", \"minf\", \"stbl\", \"stsd\"])[0];\n      const sampleEntries = stsd.subarray(8);\n      let encBoxes = findBox(sampleEntries, [\"enca\"]);\n      const isAudio = encBoxes.length > 0;\n      if (!isAudio) {\n        encBoxes = findBox(sampleEntries, [\"encv\"]);\n      }\n      encBoxes.forEach((enc) => {\n        const encBoxChildren = isAudio ? enc.subarray(28) : enc.subarray(78);\n        const sinfBoxes = findBox(encBoxChildren, [\"sinf\"]);\n        sinfBoxes.forEach((sinf) => {\n          const tenc = parseSinf(sinf);\n          if (tenc) {\n            const tencKeyId = tenc.subarray(8, 24);\n            if (!tencKeyId.some((b4) => b4 !== 0)) {\n              logger.log(`[eme] Patching keyId in 'enc${isAudio ? \"a\" : \"v\"}>sinf>>tenc' box: ${Hex.hexDump(tencKeyId)} -> ${Hex.hexDump(keyId)}`);\n              tenc.set(keyId, 8);\n            }\n          }\n        });\n      });\n    });\n  }\n  return initSegment;\n}\nfunction parseSinf(sinf) {\n  const schm = findBox(sinf, [\"schm\"])[0];\n  if (schm) {\n    const scheme = bin2str(schm.subarray(4, 8));\n    if (scheme === \"cbcs\" || scheme === \"cenc\") {\n      return findBox(sinf, [\"schi\", \"tenc\"])[0];\n    }\n  }\n  return null;\n}\nfunction getStartDTS(initData, fmp4) {\n  return findBox(fmp4, [\"moof\", \"traf\"]).reduce((result, traf) => {\n    const tfdt = findBox(traf, [\"tfdt\"])[0];\n    const version = tfdt[0];\n    const start = findBox(traf, [\"tfhd\"]).reduce((result2, tfhd) => {\n      const id = readUint32(tfhd, 4);\n      const track = initData[id];\n      if (track) {\n        let baseTime = readUint32(tfdt, 4);\n        if (version === 1) {\n          if (baseTime === UINT32_MAX$1) {\n            logger.warn(`[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time`);\n            return result2;\n          }\n          baseTime *= UINT32_MAX$1 + 1;\n          baseTime += readUint32(tfdt, 8);\n        }\n        const scale = track.timescale || 9e4;\n        const startTime = baseTime / scale;\n        if (isFiniteNumber(startTime) && (result2 === null || startTime < result2)) {\n          return startTime;\n        }\n      }\n      return result2;\n    }, null);\n    if (start !== null && isFiniteNumber(start) && (result === null || start < result)) {\n      return start;\n    }\n    return result;\n  }, null);\n}\nfunction getDuration(data, initData) {\n  let rawDuration = 0;\n  let videoDuration = 0;\n  let audioDuration = 0;\n  const trafs = findBox(data, [\"moof\", \"traf\"]);\n  for (let i2 = 0; i2 < trafs.length; i2++) {\n    const traf = trafs[i2];\n    const tfhd = findBox(traf, [\"tfhd\"])[0];\n    const id = readUint32(tfhd, 4);\n    const track = initData[id];\n    if (!track) {\n      continue;\n    }\n    const trackDefault = track.default;\n    const tfhdFlags = readUint32(tfhd, 0) | (trackDefault == null ? void 0 : trackDefault.flags);\n    let sampleDuration = trackDefault == null ? void 0 : trackDefault.duration;\n    if (tfhdFlags & 8) {\n      if (tfhdFlags & 2) {\n        sampleDuration = readUint32(tfhd, 12);\n      } else {\n        sampleDuration = readUint32(tfhd, 8);\n      }\n    }\n    const timescale = track.timescale || 9e4;\n    const truns = findBox(traf, [\"trun\"]);\n    for (let j4 = 0; j4 < truns.length; j4++) {\n      rawDuration = computeRawDurationFromSamples(truns[j4]);\n      if (!rawDuration && sampleDuration) {\n        const sampleCount = readUint32(truns[j4], 4);\n        rawDuration = sampleDuration * sampleCount;\n      }\n      if (track.type === ElementaryStreamTypes.VIDEO) {\n        videoDuration += rawDuration / timescale;\n      } else if (track.type === ElementaryStreamTypes.AUDIO) {\n        audioDuration += rawDuration / timescale;\n      }\n    }\n  }\n  if (videoDuration === 0 && audioDuration === 0) {\n    let sidxMinStart = Infinity;\n    let sidxMaxEnd = 0;\n    let sidxDuration = 0;\n    const sidxs = findBox(data, [\"sidx\"]);\n    for (let i2 = 0; i2 < sidxs.length; i2++) {\n      const sidx = parseSegmentIndex(sidxs[i2]);\n      if (sidx != null && sidx.references) {\n        sidxMinStart = Math.min(sidxMinStart, sidx.earliestPresentationTime / sidx.timescale);\n        const subSegmentDuration = sidx.references.reduce((dur, ref) => dur + ref.info.duration || 0, 0);\n        sidxMaxEnd = Math.max(sidxMaxEnd, subSegmentDuration + sidx.earliestPresentationTime / sidx.timescale);\n        sidxDuration = sidxMaxEnd - sidxMinStart;\n      }\n    }\n    if (sidxDuration && isFiniteNumber(sidxDuration)) {\n      return sidxDuration;\n    }\n  }\n  if (videoDuration) {\n    return videoDuration;\n  }\n  return audioDuration;\n}\nfunction computeRawDurationFromSamples(trun) {\n  const flags = readUint32(trun, 0);\n  let offset = 8;\n  if (flags & 1) {\n    offset += 4;\n  }\n  if (flags & 4) {\n    offset += 4;\n  }\n  let duration = 0;\n  const sampleCount = readUint32(trun, 4);\n  for (let i2 = 0; i2 < sampleCount; i2++) {\n    if (flags & 256) {\n      const sampleDuration = readUint32(trun, offset);\n      duration += sampleDuration;\n      offset += 4;\n    }\n    if (flags & 512) {\n      offset += 4;\n    }\n    if (flags & 1024) {\n      offset += 4;\n    }\n    if (flags & 2048) {\n      offset += 4;\n    }\n  }\n  return duration;\n}\nfunction offsetStartDTS(initData, fmp4, timeOffset) {\n  findBox(fmp4, [\"moof\", \"traf\"]).forEach((traf) => {\n    findBox(traf, [\"tfhd\"]).forEach((tfhd) => {\n      const id = readUint32(tfhd, 4);\n      const track = initData[id];\n      if (!track) {\n        return;\n      }\n      const timescale = track.timescale || 9e4;\n      findBox(traf, [\"tfdt\"]).forEach((tfdt) => {\n        const version = tfdt[0];\n        const offset = timeOffset * timescale;\n        if (offset) {\n          let baseMediaDecodeTime = readUint32(tfdt, 4);\n          if (version === 0) {\n            baseMediaDecodeTime -= offset;\n            baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n            writeUint32(tfdt, 4, baseMediaDecodeTime);\n          } else {\n            baseMediaDecodeTime *= Math.pow(2, 32);\n            baseMediaDecodeTime += readUint32(tfdt, 8);\n            baseMediaDecodeTime -= offset;\n            baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n            const upper = Math.floor(baseMediaDecodeTime / (UINT32_MAX$1 + 1));\n            const lower = Math.floor(baseMediaDecodeTime % (UINT32_MAX$1 + 1));\n            writeUint32(tfdt, 4, upper);\n            writeUint32(tfdt, 8, lower);\n          }\n        }\n      });\n    });\n  });\n}\nfunction segmentValidRange(data) {\n  const segmentedRange = {\n    valid: null,\n    remainder: null\n  };\n  const moofs = findBox(data, [\"moof\"]);\n  if (moofs.length < 2) {\n    segmentedRange.remainder = data;\n    return segmentedRange;\n  }\n  const last = moofs[moofs.length - 1];\n  segmentedRange.valid = sliceUint8(data, 0, last.byteOffset - 8);\n  segmentedRange.remainder = sliceUint8(data, last.byteOffset - 8);\n  return segmentedRange;\n}\nfunction appendUint8Array(data1, data2) {\n  const temp = new Uint8Array(data1.length + data2.length);\n  temp.set(data1);\n  temp.set(data2, data1.length);\n  return temp;\n}\nfunction parseSamples(timeOffset, track) {\n  const seiSamples = [];\n  const videoData = track.samples;\n  const timescale = track.timescale;\n  const trackId = track.id;\n  let isHEVCFlavor = false;\n  const moofs = findBox(videoData, [\"moof\"]);\n  moofs.map((moof) => {\n    const moofOffset = moof.byteOffset - 8;\n    const trafs = findBox(moof, [\"traf\"]);\n    trafs.map((traf) => {\n      const baseTime = findBox(traf, [\"tfdt\"]).map((tfdt) => {\n        const version = tfdt[0];\n        let result = readUint32(tfdt, 4);\n        if (version === 1) {\n          result *= Math.pow(2, 32);\n          result += readUint32(tfdt, 8);\n        }\n        return result / timescale;\n      })[0];\n      if (baseTime !== void 0) {\n        timeOffset = baseTime;\n      }\n      return findBox(traf, [\"tfhd\"]).map((tfhd) => {\n        const id = readUint32(tfhd, 4);\n        const tfhdFlags = readUint32(tfhd, 0) & 16777215;\n        const baseDataOffsetPresent = (tfhdFlags & 1) !== 0;\n        const sampleDescriptionIndexPresent = (tfhdFlags & 2) !== 0;\n        const defaultSampleDurationPresent = (tfhdFlags & 8) !== 0;\n        let defaultSampleDuration = 0;\n        const defaultSampleSizePresent = (tfhdFlags & 16) !== 0;\n        let defaultSampleSize = 0;\n        const defaultSampleFlagsPresent = (tfhdFlags & 32) !== 0;\n        let tfhdOffset = 8;\n        if (id === trackId) {\n          if (baseDataOffsetPresent) {\n            tfhdOffset += 8;\n          }\n          if (sampleDescriptionIndexPresent) {\n            tfhdOffset += 4;\n          }\n          if (defaultSampleDurationPresent) {\n            defaultSampleDuration = readUint32(tfhd, tfhdOffset);\n            tfhdOffset += 4;\n          }\n          if (defaultSampleSizePresent) {\n            defaultSampleSize = readUint32(tfhd, tfhdOffset);\n            tfhdOffset += 4;\n          }\n          if (defaultSampleFlagsPresent) {\n            tfhdOffset += 4;\n          }\n          if (track.type === \"video\") {\n            isHEVCFlavor = isHEVC(track.codec);\n          }\n          findBox(traf, [\"trun\"]).map((trun) => {\n            const version = trun[0];\n            const flags = readUint32(trun, 0) & 16777215;\n            const dataOffsetPresent = (flags & 1) !== 0;\n            let dataOffset = 0;\n            const firstSampleFlagsPresent = (flags & 4) !== 0;\n            const sampleDurationPresent = (flags & 256) !== 0;\n            let sampleDuration = 0;\n            const sampleSizePresent = (flags & 512) !== 0;\n            let sampleSize = 0;\n            const sampleFlagsPresent = (flags & 1024) !== 0;\n            const sampleCompositionOffsetsPresent = (flags & 2048) !== 0;\n            let compositionOffset = 0;\n            const sampleCount = readUint32(trun, 4);\n            let trunOffset = 8;\n            if (dataOffsetPresent) {\n              dataOffset = readUint32(trun, trunOffset);\n              trunOffset += 4;\n            }\n            if (firstSampleFlagsPresent) {\n              trunOffset += 4;\n            }\n            let sampleOffset = dataOffset + moofOffset;\n            for (let ix = 0; ix < sampleCount; ix++) {\n              if (sampleDurationPresent) {\n                sampleDuration = readUint32(trun, trunOffset);\n                trunOffset += 4;\n              } else {\n                sampleDuration = defaultSampleDuration;\n              }\n              if (sampleSizePresent) {\n                sampleSize = readUint32(trun, trunOffset);\n                trunOffset += 4;\n              } else {\n                sampleSize = defaultSampleSize;\n              }\n              if (sampleFlagsPresent) {\n                trunOffset += 4;\n              }\n              if (sampleCompositionOffsetsPresent) {\n                if (version === 0) {\n                  compositionOffset = readUint32(trun, trunOffset);\n                } else {\n                  compositionOffset = readSint32(trun, trunOffset);\n                }\n                trunOffset += 4;\n              }\n              if (track.type === ElementaryStreamTypes.VIDEO) {\n                let naluTotalSize = 0;\n                while (naluTotalSize < sampleSize) {\n                  const naluSize = readUint32(videoData, sampleOffset);\n                  sampleOffset += 4;\n                  if (isSEIMessage(isHEVCFlavor, videoData[sampleOffset])) {\n                    const data = videoData.subarray(sampleOffset, sampleOffset + naluSize);\n                    parseSEIMessageFromNALu(data, isHEVCFlavor ? 2 : 1, timeOffset + compositionOffset / timescale, seiSamples);\n                  }\n                  sampleOffset += naluSize;\n                  naluTotalSize += naluSize + 4;\n                }\n              }\n              timeOffset += sampleDuration / timescale;\n            }\n          });\n        }\n      });\n    });\n  });\n  return seiSamples;\n}\nfunction isHEVC(codec) {\n  if (!codec) {\n    return false;\n  }\n  const delimit = codec.indexOf(\".\");\n  const baseCodec = delimit < 0 ? codec : codec.substring(0, delimit);\n  return baseCodec === \"hvc1\" || baseCodec === \"hev1\" || // Dolby Vision\n  baseCodec === \"dvh1\" || baseCodec === \"dvhe\";\n}\nfunction isSEIMessage(isHEVCFlavor, naluHeader) {\n  if (isHEVCFlavor) {\n    const naluType = naluHeader >> 1 & 63;\n    return naluType === 39 || naluType === 40;\n  } else {\n    const naluType = naluHeader & 31;\n    return naluType === 6;\n  }\n}\nfunction parseSEIMessageFromNALu(unescapedData, headerSize, pts, samples) {\n  const data = discardEPB(unescapedData);\n  let seiPtr = 0;\n  seiPtr += headerSize;\n  let payloadType = 0;\n  let payloadSize = 0;\n  let b4 = 0;\n  while (seiPtr < data.length) {\n    payloadType = 0;\n    do {\n      if (seiPtr >= data.length) {\n        break;\n      }\n      b4 = data[seiPtr++];\n      payloadType += b4;\n    } while (b4 === 255);\n    payloadSize = 0;\n    do {\n      if (seiPtr >= data.length) {\n        break;\n      }\n      b4 = data[seiPtr++];\n      payloadSize += b4;\n    } while (b4 === 255);\n    const leftOver = data.length - seiPtr;\n    let payPtr = seiPtr;\n    if (payloadSize < leftOver) {\n      seiPtr += payloadSize;\n    } else if (payloadSize > leftOver) {\n      logger.error(`Malformed SEI payload. ${payloadSize} is too small, only ${leftOver} bytes left to parse.`);\n      break;\n    }\n    if (payloadType === 4) {\n      const countryCode = data[payPtr++];\n      if (countryCode === 181) {\n        const providerCode = readUint16(data, payPtr);\n        payPtr += 2;\n        if (providerCode === 49) {\n          const userStructure = readUint32(data, payPtr);\n          payPtr += 4;\n          if (userStructure === 1195456820) {\n            const userDataType = data[payPtr++];\n            if (userDataType === 3) {\n              const firstByte = data[payPtr++];\n              const totalCCs = 31 & firstByte;\n              const enabled = 64 & firstByte;\n              const totalBytes = enabled ? 2 + totalCCs * 3 : 0;\n              const byteArray = new Uint8Array(totalBytes);\n              if (enabled) {\n                byteArray[0] = firstByte;\n                for (let i2 = 1; i2 < totalBytes; i2++) {\n                  byteArray[i2] = data[payPtr++];\n                }\n              }\n              samples.push({\n                type: userDataType,\n                payloadType,\n                pts,\n                bytes: byteArray\n              });\n            }\n          }\n        }\n      }\n    } else if (payloadType === 5) {\n      if (payloadSize > 16) {\n        const uuidStrArray = [];\n        for (let i2 = 0; i2 < 16; i2++) {\n          const _b = data[payPtr++].toString(16);\n          uuidStrArray.push(_b.length == 1 ? \"0\" + _b : _b);\n          if (i2 === 3 || i2 === 5 || i2 === 7 || i2 === 9) {\n            uuidStrArray.push(\"-\");\n          }\n        }\n        const length = payloadSize - 16;\n        const userDataBytes = new Uint8Array(length);\n        for (let i2 = 0; i2 < length; i2++) {\n          userDataBytes[i2] = data[payPtr++];\n        }\n        samples.push({\n          payloadType,\n          pts,\n          uuid: uuidStrArray.join(\"\"),\n          userData: utf8ArrayToStr(userDataBytes),\n          userDataBytes\n        });\n      }\n    }\n  }\n}\nfunction discardEPB(data) {\n  const length = data.byteLength;\n  const EPBPositions = [];\n  let i2 = 1;\n  while (i2 < length - 2) {\n    if (data[i2] === 0 && data[i2 + 1] === 0 && data[i2 + 2] === 3) {\n      EPBPositions.push(i2 + 2);\n      i2 += 2;\n    } else {\n      i2++;\n    }\n  }\n  if (EPBPositions.length === 0) {\n    return data;\n  }\n  const newLength = length - EPBPositions.length;\n  const newData = new Uint8Array(newLength);\n  let sourceIndex = 0;\n  for (i2 = 0; i2 < newLength; sourceIndex++, i2++) {\n    if (sourceIndex === EPBPositions[0]) {\n      sourceIndex++;\n      EPBPositions.shift();\n    }\n    newData[i2] = data[sourceIndex];\n  }\n  return newData;\n}\nfunction parseEmsg(data) {\n  const version = data[0];\n  let schemeIdUri = \"\";\n  let value = \"\";\n  let timeScale = 0;\n  let presentationTimeDelta = 0;\n  let presentationTime = 0;\n  let eventDuration = 0;\n  let id = 0;\n  let offset = 0;\n  if (version === 0) {\n    while (bin2str(data.subarray(offset, offset + 1)) !== \"\\0\") {\n      schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n      offset += 1;\n    }\n    schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n    offset += 1;\n    while (bin2str(data.subarray(offset, offset + 1)) !== \"\\0\") {\n      value += bin2str(data.subarray(offset, offset + 1));\n      offset += 1;\n    }\n    value += bin2str(data.subarray(offset, offset + 1));\n    offset += 1;\n    timeScale = readUint32(data, 12);\n    presentationTimeDelta = readUint32(data, 16);\n    eventDuration = readUint32(data, 20);\n    id = readUint32(data, 24);\n    offset = 28;\n  } else if (version === 1) {\n    offset += 4;\n    timeScale = readUint32(data, offset);\n    offset += 4;\n    const leftPresentationTime = readUint32(data, offset);\n    offset += 4;\n    const rightPresentationTime = readUint32(data, offset);\n    offset += 4;\n    presentationTime = __pow(2, 32) * leftPresentationTime + rightPresentationTime;\n    if (!isSafeInteger(presentationTime)) {\n      presentationTime = Number.MAX_SAFE_INTEGER;\n      logger.warn(\"Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box\");\n    }\n    eventDuration = readUint32(data, offset);\n    offset += 4;\n    id = readUint32(data, offset);\n    offset += 4;\n    while (bin2str(data.subarray(offset, offset + 1)) !== \"\\0\") {\n      schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n      offset += 1;\n    }\n    schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n    offset += 1;\n    while (bin2str(data.subarray(offset, offset + 1)) !== \"\\0\") {\n      value += bin2str(data.subarray(offset, offset + 1));\n      offset += 1;\n    }\n    value += bin2str(data.subarray(offset, offset + 1));\n    offset += 1;\n  }\n  const payload = data.subarray(offset, data.byteLength);\n  return {\n    schemeIdUri,\n    value,\n    timeScale,\n    presentationTime,\n    presentationTimeDelta,\n    eventDuration,\n    id,\n    payload\n  };\n}\nfunction mp4Box(type, ...payload) {\n  const len = payload.length;\n  let size = 8;\n  let i2 = len;\n  while (i2--) {\n    size += payload[i2].byteLength;\n  }\n  const result = new Uint8Array(size);\n  result[0] = size >> 24 & 255;\n  result[1] = size >> 16 & 255;\n  result[2] = size >> 8 & 255;\n  result[3] = size & 255;\n  result.set(type, 4);\n  for (i2 = 0, size = 8; i2 < len; i2++) {\n    result.set(payload[i2], size);\n    size += payload[i2].byteLength;\n  }\n  return result;\n}\nfunction mp4pssh(systemId, keyids, data) {\n  if (systemId.byteLength !== 16) {\n    throw new RangeError(\"Invalid system id\");\n  }\n  let version;\n  let kids;\n  if (keyids) {\n    version = 1;\n    kids = new Uint8Array(keyids.length * 16);\n    for (let ix = 0; ix < keyids.length; ix++) {\n      const k3 = keyids[ix];\n      if (k3.byteLength !== 16) {\n        throw new RangeError(\"Invalid key\");\n      }\n      kids.set(k3, ix * 16);\n    }\n  } else {\n    version = 0;\n    kids = new Uint8Array();\n  }\n  let kidCount;\n  if (version > 0) {\n    kidCount = new Uint8Array(4);\n    if (keyids.length > 0) {\n      new DataView(kidCount.buffer).setUint32(0, keyids.length, false);\n    }\n  } else {\n    kidCount = new Uint8Array();\n  }\n  const dataSize = new Uint8Array(4);\n  if (data && data.byteLength > 0) {\n    new DataView(dataSize.buffer).setUint32(0, data.byteLength, false);\n  }\n  return mp4Box(\n    [112, 115, 115, 104],\n    new Uint8Array([\n      version,\n      0,\n      0,\n      0\n      // Flags\n    ]),\n    systemId,\n    // 16 bytes\n    kidCount,\n    kids,\n    dataSize,\n    data || new Uint8Array()\n  );\n}\nfunction parseMultiPssh(initData) {\n  const results = [];\n  if (initData instanceof ArrayBuffer) {\n    const length = initData.byteLength;\n    let offset = 0;\n    while (offset + 32 < length) {\n      const view = new DataView(initData, offset);\n      const pssh = parsePssh(view);\n      results.push(pssh);\n      offset += pssh.size;\n    }\n  }\n  return results;\n}\nfunction parsePssh(view) {\n  const size = view.getUint32(0);\n  const offset = view.byteOffset;\n  const length = view.byteLength;\n  if (length < size) {\n    return {\n      offset,\n      size: length\n    };\n  }\n  const type = view.getUint32(4);\n  if (type !== 1886614376) {\n    return {\n      offset,\n      size\n    };\n  }\n  const version = view.getUint32(8) >>> 24;\n  if (version !== 0 && version !== 1) {\n    return {\n      offset,\n      size\n    };\n  }\n  const buffer = view.buffer;\n  const systemId = Hex.hexDump(new Uint8Array(buffer, offset + 12, 16));\n  const dataSizeOrKidCount = view.getUint32(28);\n  let kids = null;\n  let data = null;\n  if (version === 0) {\n    if (size - 32 < dataSizeOrKidCount || dataSizeOrKidCount < 22) {\n      return {\n        offset,\n        size\n      };\n    }\n    data = new Uint8Array(buffer, offset + 32, dataSizeOrKidCount);\n  } else if (version === 1) {\n    if (!dataSizeOrKidCount || length < offset + 32 + dataSizeOrKidCount * 16 + 16) {\n      return {\n        offset,\n        size\n      };\n    }\n    kids = [];\n    for (let i2 = 0; i2 < dataSizeOrKidCount; i2++) {\n      kids.push(new Uint8Array(buffer, offset + 32 + i2 * 16, 16));\n    }\n  }\n  return {\n    version,\n    systemId,\n    kids,\n    data,\n    offset,\n    size\n  };\n}\nvar keyUriToKeyIdMap = {};\nvar LevelKey = class _LevelKey {\n  static clearKeyUriToKeyIdMap() {\n    keyUriToKeyIdMap = {};\n  }\n  constructor(method, uri, format2, formatversions = [1], iv = null) {\n    this.uri = void 0;\n    this.method = void 0;\n    this.keyFormat = void 0;\n    this.keyFormatVersions = void 0;\n    this.encrypted = void 0;\n    this.isCommonEncryption = void 0;\n    this.iv = null;\n    this.key = null;\n    this.keyId = null;\n    this.pssh = null;\n    this.method = method;\n    this.uri = uri;\n    this.keyFormat = format2;\n    this.keyFormatVersions = formatversions;\n    this.iv = iv;\n    this.encrypted = method ? method !== \"NONE\" : false;\n    this.isCommonEncryption = this.encrypted && method !== \"AES-128\";\n  }\n  isSupported() {\n    if (this.method) {\n      if (this.method === \"AES-128\" || this.method === \"NONE\") {\n        return true;\n      }\n      if (this.keyFormat === \"identity\") {\n        return this.method === \"SAMPLE-AES\";\n      } else {\n        switch (this.keyFormat) {\n          case KeySystemFormats.FAIRPLAY:\n          case KeySystemFormats.WIDEVINE:\n          case KeySystemFormats.PLAYREADY:\n          case KeySystemFormats.CLEARKEY:\n            return [\"ISO-23001-7\", \"SAMPLE-AES\", \"SAMPLE-AES-CENC\", \"SAMPLE-AES-CTR\"].indexOf(this.method) !== -1;\n        }\n      }\n    }\n    return false;\n  }\n  getDecryptData(sn) {\n    if (!this.encrypted || !this.uri) {\n      return null;\n    }\n    if (this.method === \"AES-128\" && this.uri && !this.iv) {\n      if (typeof sn !== \"number\") {\n        if (this.method === \"AES-128\" && !this.iv) {\n          logger.warn(`missing IV for initialization segment with method=\"${this.method}\" - compliance issue`);\n        }\n        sn = 0;\n      }\n      const iv = createInitializationVector(sn);\n      const decryptdata = new _LevelKey(this.method, this.uri, \"identity\", this.keyFormatVersions, iv);\n      return decryptdata;\n    }\n    const keyBytes = convertDataUriToArrayBytes(this.uri);\n    if (keyBytes) {\n      switch (this.keyFormat) {\n        case KeySystemFormats.WIDEVINE:\n          this.pssh = keyBytes;\n          if (keyBytes.length >= 22) {\n            this.keyId = keyBytes.subarray(keyBytes.length - 22, keyBytes.length - 6);\n          }\n          break;\n        case KeySystemFormats.PLAYREADY: {\n          const PlayReadyKeySystemUUID = new Uint8Array([154, 4, 240, 121, 152, 64, 66, 134, 171, 146, 230, 91, 224, 136, 95, 149]);\n          this.pssh = mp4pssh(PlayReadyKeySystemUUID, null, keyBytes);\n          this.keyId = parsePlayReadyWRM(keyBytes);\n          break;\n        }\n        default: {\n          let keydata = keyBytes.subarray(0, 16);\n          if (keydata.length !== 16) {\n            const padded = new Uint8Array(16);\n            padded.set(keydata, 16 - keydata.length);\n            keydata = padded;\n          }\n          this.keyId = keydata;\n          break;\n        }\n      }\n    }\n    if (!this.keyId || this.keyId.byteLength !== 16) {\n      let keyId = keyUriToKeyIdMap[this.uri];\n      if (!keyId) {\n        const val = Object.keys(keyUriToKeyIdMap).length % Number.MAX_SAFE_INTEGER;\n        keyId = new Uint8Array(16);\n        const dv = new DataView(keyId.buffer, 12, 4);\n        dv.setUint32(0, val);\n        keyUriToKeyIdMap[this.uri] = keyId;\n      }\n      this.keyId = keyId;\n    }\n    return this;\n  }\n};\nfunction createInitializationVector(segmentNumber) {\n  const uint8View = new Uint8Array(16);\n  for (let i2 = 12; i2 < 16; i2++) {\n    uint8View[i2] = segmentNumber >> 8 * (15 - i2) & 255;\n  }\n  return uint8View;\n}\nvar VARIABLE_REPLACEMENT_REGEX = /\\{\\$([a-zA-Z0-9-_]+)\\}/g;\nfunction hasVariableReferences(str) {\n  return VARIABLE_REPLACEMENT_REGEX.test(str);\n}\nfunction substituteVariablesInAttributes(parsed, attr, attributeNames) {\n  if (parsed.variableList !== null || parsed.hasVariableRefs) {\n    for (let i2 = attributeNames.length; i2--; ) {\n      const name = attributeNames[i2];\n      const value = attr[name];\n      if (value) {\n        attr[name] = substituteVariables(parsed, value);\n      }\n    }\n  }\n}\nfunction substituteVariables(parsed, value) {\n  if (parsed.variableList !== null || parsed.hasVariableRefs) {\n    const variableList = parsed.variableList;\n    return value.replace(VARIABLE_REPLACEMENT_REGEX, (variableReference) => {\n      const variableName = variableReference.substring(2, variableReference.length - 1);\n      const variableValue = variableList == null ? void 0 : variableList[variableName];\n      if (variableValue === void 0) {\n        parsed.playlistParsingError || (parsed.playlistParsingError = new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: \"${variableName}\"`));\n        return variableReference;\n      }\n      return variableValue;\n    });\n  }\n  return value;\n}\nfunction addVariableDefinition(parsed, attr, parentUrl) {\n  let variableList = parsed.variableList;\n  if (!variableList) {\n    parsed.variableList = variableList = {};\n  }\n  let NAME;\n  let VALUE;\n  if (\"QUERYPARAM\" in attr) {\n    NAME = attr.QUERYPARAM;\n    try {\n      const searchParams = new self.URL(parentUrl).searchParams;\n      if (searchParams.has(NAME)) {\n        VALUE = searchParams.get(NAME);\n      } else {\n        throw new Error(`\"${NAME}\" does not match any query parameter in URI: \"${parentUrl}\"`);\n      }\n    } catch (error) {\n      parsed.playlistParsingError || (parsed.playlistParsingError = new Error(`EXT-X-DEFINE QUERYPARAM: ${error.message}`));\n    }\n  } else {\n    NAME = attr.NAME;\n    VALUE = attr.VALUE;\n  }\n  if (NAME in variableList) {\n    parsed.playlistParsingError || (parsed.playlistParsingError = new Error(`EXT-X-DEFINE duplicate Variable Name declarations: \"${NAME}\"`));\n  } else {\n    variableList[NAME] = VALUE || \"\";\n  }\n}\nfunction importVariableDefinition(parsed, attr, sourceVariableList) {\n  const IMPORT = attr.IMPORT;\n  if (sourceVariableList && IMPORT in sourceVariableList) {\n    let variableList = parsed.variableList;\n    if (!variableList) {\n      parsed.variableList = variableList = {};\n    }\n    variableList[IMPORT] = sourceVariableList[IMPORT];\n  } else {\n    parsed.playlistParsingError || (parsed.playlistParsingError = new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: \"${IMPORT}\"`));\n  }\n}\nfunction getMediaSource(preferManagedMediaSource = true) {\n  if (typeof self === \"undefined\") return void 0;\n  const mms = (preferManagedMediaSource || !self.MediaSource) && self.ManagedMediaSource;\n  return mms || self.MediaSource || self.WebKitMediaSource;\n}\nfunction isManagedMediaSource(source) {\n  return typeof self !== \"undefined\" && source === self.ManagedMediaSource;\n}\nvar sampleEntryCodesISO = {\n  audio: {\n    a3ds: 1,\n    \"ac-3\": 0.95,\n    \"ac-4\": 1,\n    alac: 0.9,\n    alaw: 1,\n    dra1: 1,\n    \"dts+\": 1,\n    \"dts-\": 1,\n    dtsc: 1,\n    dtse: 1,\n    dtsh: 1,\n    \"ec-3\": 0.9,\n    enca: 1,\n    fLaC: 0.9,\n    // MP4-RA listed codec entry for FLAC\n    flac: 0.9,\n    // legacy browser codec name for FLAC\n    FLAC: 0.9,\n    // some manifests may list \"FLAC\" with Apple's tools\n    g719: 1,\n    g726: 1,\n    m4ae: 1,\n    mha1: 1,\n    mha2: 1,\n    mhm1: 1,\n    mhm2: 1,\n    mlpa: 1,\n    mp4a: 1,\n    \"raw \": 1,\n    Opus: 1,\n    opus: 1,\n    // browsers expect this to be lowercase despite MP4RA says 'Opus'\n    samr: 1,\n    sawb: 1,\n    sawp: 1,\n    sevc: 1,\n    sqcp: 1,\n    ssmv: 1,\n    twos: 1,\n    ulaw: 1\n  },\n  video: {\n    avc1: 1,\n    avc2: 1,\n    avc3: 1,\n    avc4: 1,\n    avcp: 1,\n    av01: 0.8,\n    drac: 1,\n    dva1: 1,\n    dvav: 1,\n    dvh1: 0.7,\n    dvhe: 0.7,\n    encv: 1,\n    hev1: 0.75,\n    hvc1: 0.75,\n    mjp2: 1,\n    mp4v: 1,\n    mvc1: 1,\n    mvc2: 1,\n    mvc3: 1,\n    mvc4: 1,\n    resv: 1,\n    rv60: 1,\n    s263: 1,\n    svc1: 1,\n    svc2: 1,\n    \"vc-1\": 1,\n    vp08: 1,\n    vp09: 0.9\n  },\n  text: {\n    stpp: 1,\n    wvtt: 1\n  }\n};\nfunction isCodecType(codec, type) {\n  const typeCodes = sampleEntryCodesISO[type];\n  return !!typeCodes && !!typeCodes[codec.slice(0, 4)];\n}\nfunction areCodecsMediaSourceSupported(codecs, type, preferManagedMediaSource = true) {\n  return !codecs.split(\",\").some((codec) => !isCodecMediaSourceSupported(codec, type, preferManagedMediaSource));\n}\nfunction isCodecMediaSourceSupported(codec, type, preferManagedMediaSource = true) {\n  var _MediaSource$isTypeSu;\n  const MediaSource = getMediaSource(preferManagedMediaSource);\n  return (_MediaSource$isTypeSu = MediaSource == null ? void 0 : MediaSource.isTypeSupported(mimeTypeForCodec(codec, type))) != null ? _MediaSource$isTypeSu : false;\n}\nfunction mimeTypeForCodec(codec, type) {\n  return `${type}/mp4;codecs=\"${codec}\"`;\n}\nfunction videoCodecPreferenceValue(videoCodec) {\n  if (videoCodec) {\n    const fourCC = videoCodec.substring(0, 4);\n    return sampleEntryCodesISO.video[fourCC];\n  }\n  return 2;\n}\nfunction codecsSetSelectionPreferenceValue(codecSet) {\n  return codecSet.split(\",\").reduce((num, fourCC) => {\n    const preferenceValue = sampleEntryCodesISO.video[fourCC];\n    if (preferenceValue) {\n      return (preferenceValue * 2 + num) / (num ? 3 : 2);\n    }\n    return (sampleEntryCodesISO.audio[fourCC] + num) / (num ? 2 : 1);\n  }, 0);\n}\nvar CODEC_COMPATIBLE_NAMES = {};\nfunction getCodecCompatibleNameLower(lowerCaseCodec, preferManagedMediaSource = true) {\n  if (CODEC_COMPATIBLE_NAMES[lowerCaseCodec]) {\n    return CODEC_COMPATIBLE_NAMES[lowerCaseCodec];\n  }\n  const codecsToCheck = {\n    flac: [\"flac\", \"fLaC\", \"FLAC\"],\n    opus: [\"opus\", \"Opus\"]\n  }[lowerCaseCodec];\n  for (let i2 = 0; i2 < codecsToCheck.length; i2++) {\n    if (isCodecMediaSourceSupported(codecsToCheck[i2], \"audio\", preferManagedMediaSource)) {\n      CODEC_COMPATIBLE_NAMES[lowerCaseCodec] = codecsToCheck[i2];\n      return codecsToCheck[i2];\n    }\n  }\n  return lowerCaseCodec;\n}\nvar AUDIO_CODEC_REGEXP = /flac|opus/i;\nfunction getCodecCompatibleName(codec, preferManagedMediaSource = true) {\n  return codec.replace(AUDIO_CODEC_REGEXP, (m3) => getCodecCompatibleNameLower(m3.toLowerCase(), preferManagedMediaSource));\n}\nfunction pickMostCompleteCodecName(parsedCodec, levelCodec) {\n  if (parsedCodec && parsedCodec !== \"mp4a\") {\n    return parsedCodec;\n  }\n  return levelCodec ? levelCodec.split(\",\")[0] : levelCodec;\n}\nfunction convertAVC1ToAVCOTI(codec) {\n  const codecs = codec.split(\",\");\n  for (let i2 = 0; i2 < codecs.length; i2++) {\n    const avcdata = codecs[i2].split(\".\");\n    if (avcdata.length > 2) {\n      let result = avcdata.shift() + \".\";\n      result += parseInt(avcdata.shift()).toString(16);\n      result += (\"000\" + parseInt(avcdata.shift()).toString(16)).slice(-4);\n      codecs[i2] = result;\n    }\n  }\n  return codecs.join(\",\");\n}\nvar MASTER_PLAYLIST_REGEX = /#EXT-X-STREAM-INF:([^\\r\\n]*)(?:[\\r\\n](?:#[^\\r\\n]*)?)*([^\\r\\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\\r\\n]*)[\\r\\n]+/g;\nvar MASTER_PLAYLIST_MEDIA_REGEX = /#EXT-X-MEDIA:(.*)/g;\nvar IS_MEDIA_PLAYLIST = /^#EXT(?:INF|-X-TARGETDURATION):/m;\nvar LEVEL_PLAYLIST_REGEX_FAST = new RegExp([\n  /#EXTINF:\\s*(\\d*(?:\\.\\d+)?)(?:,(.*)\\s+)?/.source,\n  // duration (#EXTINF:<duration>,<title>), group 1 => duration, group 2 => title\n  /(?!#) *(\\S[^\\r\\n]*)/.source,\n  // segment URI, group 3 => the URI (note newline is not eaten)\n  /#EXT-X-BYTERANGE:*(.+)/.source,\n  // next segment's byterange, group 4 => range spec (x@y)\n  /#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,\n  // next segment's program date/time group 5 => the datetime spec\n  /#.*/.source\n  // All other non-segment oriented tags will match with all groups empty\n].join(\"|\"), \"g\");\nvar LEVEL_PLAYLIST_REGEX_SLOW = new RegExp([/#(EXTM3U)/.source, /#EXT-X-(DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source, /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\\d+)/.source, /#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source, /(#)([^:]*):(.*)/.source, /(#)(.*)(?:.*)\\r?\\n?/.source].join(\"|\"));\nvar M3U8Parser = class _M3U8Parser {\n  static findGroup(groups, mediaGroupId) {\n    for (let i2 = 0; i2 < groups.length; i2++) {\n      const group = groups[i2];\n      if (group.id === mediaGroupId) {\n        return group;\n      }\n    }\n  }\n  static resolve(url, baseUrl) {\n    return urlToolkitExports.buildAbsoluteURL(baseUrl, url, {\n      alwaysNormalize: true\n    });\n  }\n  static isMediaPlaylist(str) {\n    return IS_MEDIA_PLAYLIST.test(str);\n  }\n  static parseMasterPlaylist(string, baseurl) {\n    const hasVariableRefs = hasVariableReferences(string);\n    const parsed = {\n      contentSteering: null,\n      levels: [],\n      playlistParsingError: null,\n      sessionData: null,\n      sessionKeys: null,\n      startTimeOffset: null,\n      variableList: null,\n      hasVariableRefs\n    };\n    const levelsWithKnownCodecs = [];\n    MASTER_PLAYLIST_REGEX.lastIndex = 0;\n    let result;\n    while ((result = MASTER_PLAYLIST_REGEX.exec(string)) != null) {\n      if (result[1]) {\n        var _level$unknownCodecs;\n        const attrs = new AttrList(result[1]);\n        {\n          substituteVariablesInAttributes(parsed, attrs, [\"CODECS\", \"SUPPLEMENTAL-CODECS\", \"ALLOWED-CPC\", \"PATHWAY-ID\", \"STABLE-VARIANT-ID\", \"AUDIO\", \"VIDEO\", \"SUBTITLES\", \"CLOSED-CAPTIONS\", \"NAME\"]);\n        }\n        const uri = substituteVariables(parsed, result[2]);\n        const level = {\n          attrs,\n          bitrate: attrs.decimalInteger(\"BANDWIDTH\") || attrs.decimalInteger(\"AVERAGE-BANDWIDTH\"),\n          name: attrs.NAME,\n          url: _M3U8Parser.resolve(uri, baseurl)\n        };\n        const resolution = attrs.decimalResolution(\"RESOLUTION\");\n        if (resolution) {\n          level.width = resolution.width;\n          level.height = resolution.height;\n        }\n        setCodecs(attrs.CODECS, level);\n        if (!((_level$unknownCodecs = level.unknownCodecs) != null && _level$unknownCodecs.length)) {\n          levelsWithKnownCodecs.push(level);\n        }\n        parsed.levels.push(level);\n      } else if (result[3]) {\n        const tag = result[3];\n        const attributes = result[4];\n        switch (tag) {\n          case \"SESSION-DATA\": {\n            const sessionAttrs = new AttrList(attributes);\n            {\n              substituteVariablesInAttributes(parsed, sessionAttrs, [\"DATA-ID\", \"LANGUAGE\", \"VALUE\", \"URI\"]);\n            }\n            const dataId = sessionAttrs[\"DATA-ID\"];\n            if (dataId) {\n              if (parsed.sessionData === null) {\n                parsed.sessionData = {};\n              }\n              parsed.sessionData[dataId] = sessionAttrs;\n            }\n            break;\n          }\n          case \"SESSION-KEY\": {\n            const sessionKey = parseKey(attributes, baseurl, parsed);\n            if (sessionKey.encrypted && sessionKey.isSupported()) {\n              if (parsed.sessionKeys === null) {\n                parsed.sessionKeys = [];\n              }\n              parsed.sessionKeys.push(sessionKey);\n            } else {\n              logger.warn(`[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: \"${attributes}\"`);\n            }\n            break;\n          }\n          case \"DEFINE\": {\n            {\n              const variableAttributes = new AttrList(attributes);\n              substituteVariablesInAttributes(parsed, variableAttributes, [\"NAME\", \"VALUE\", \"QUERYPARAM\"]);\n              addVariableDefinition(parsed, variableAttributes, baseurl);\n            }\n            break;\n          }\n          case \"CONTENT-STEERING\": {\n            const contentSteeringAttributes = new AttrList(attributes);\n            {\n              substituteVariablesInAttributes(parsed, contentSteeringAttributes, [\"SERVER-URI\", \"PATHWAY-ID\"]);\n            }\n            parsed.contentSteering = {\n              uri: _M3U8Parser.resolve(contentSteeringAttributes[\"SERVER-URI\"], baseurl),\n              pathwayId: contentSteeringAttributes[\"PATHWAY-ID\"] || \".\"\n            };\n            break;\n          }\n          case \"START\": {\n            parsed.startTimeOffset = parseStartTimeOffset(attributes);\n            break;\n          }\n        }\n      }\n    }\n    const stripUnknownCodecLevels = levelsWithKnownCodecs.length > 0 && levelsWithKnownCodecs.length < parsed.levels.length;\n    parsed.levels = stripUnknownCodecLevels ? levelsWithKnownCodecs : parsed.levels;\n    if (parsed.levels.length === 0) {\n      parsed.playlistParsingError = new Error(\"no levels found in manifest\");\n    }\n    return parsed;\n  }\n  static parseMasterPlaylistMedia(string, baseurl, parsed) {\n    let result;\n    const results = {};\n    const levels = parsed.levels;\n    const groupsByType = {\n      AUDIO: levels.map((level) => ({\n        id: level.attrs.AUDIO,\n        audioCodec: level.audioCodec\n      })),\n      SUBTITLES: levels.map((level) => ({\n        id: level.attrs.SUBTITLES,\n        textCodec: level.textCodec\n      })),\n      \"CLOSED-CAPTIONS\": []\n    };\n    let id = 0;\n    MASTER_PLAYLIST_MEDIA_REGEX.lastIndex = 0;\n    while ((result = MASTER_PLAYLIST_MEDIA_REGEX.exec(string)) !== null) {\n      const attrs = new AttrList(result[1]);\n      const type = attrs.TYPE;\n      if (type) {\n        const groups = groupsByType[type];\n        const medias = results[type] || [];\n        results[type] = medias;\n        {\n          substituteVariablesInAttributes(parsed, attrs, [\"URI\", \"GROUP-ID\", \"LANGUAGE\", \"ASSOC-LANGUAGE\", \"STABLE-RENDITION-ID\", \"NAME\", \"INSTREAM-ID\", \"CHARACTERISTICS\", \"CHANNELS\"]);\n        }\n        const lang = attrs.LANGUAGE;\n        const assocLang = attrs[\"ASSOC-LANGUAGE\"];\n        const channels = attrs.CHANNELS;\n        const characteristics = attrs.CHARACTERISTICS;\n        const instreamId = attrs[\"INSTREAM-ID\"];\n        const media = {\n          attrs,\n          bitrate: 0,\n          id: id++,\n          groupId: attrs[\"GROUP-ID\"] || \"\",\n          name: attrs.NAME || lang || \"\",\n          type,\n          default: attrs.bool(\"DEFAULT\"),\n          autoselect: attrs.bool(\"AUTOSELECT\"),\n          forced: attrs.bool(\"FORCED\"),\n          lang,\n          url: attrs.URI ? _M3U8Parser.resolve(attrs.URI, baseurl) : \"\"\n        };\n        if (assocLang) {\n          media.assocLang = assocLang;\n        }\n        if (channels) {\n          media.channels = channels;\n        }\n        if (characteristics) {\n          media.characteristics = characteristics;\n        }\n        if (instreamId) {\n          media.instreamId = instreamId;\n        }\n        if (groups != null && groups.length) {\n          const groupCodec = _M3U8Parser.findGroup(groups, media.groupId) || groups[0];\n          assignCodec(media, groupCodec, \"audioCodec\");\n          assignCodec(media, groupCodec, \"textCodec\");\n        }\n        medias.push(media);\n      }\n    }\n    return results;\n  }\n  static parseLevelPlaylist(string, baseurl, id, type, levelUrlId, multivariantVariableList) {\n    const level = new LevelDetails(baseurl);\n    const fragments = level.fragments;\n    let currentInitSegment = null;\n    let currentSN = 0;\n    let currentPart = 0;\n    let totalduration = 0;\n    let discontinuityCounter = 0;\n    let prevFrag = null;\n    let frag = new Fragment(type, baseurl);\n    let result;\n    let i2;\n    let levelkeys;\n    let firstPdtIndex = -1;\n    let createNextFrag = false;\n    let nextByteRange = null;\n    LEVEL_PLAYLIST_REGEX_FAST.lastIndex = 0;\n    level.m3u8 = string;\n    level.hasVariableRefs = hasVariableReferences(string);\n    while ((result = LEVEL_PLAYLIST_REGEX_FAST.exec(string)) !== null) {\n      if (createNextFrag) {\n        createNextFrag = false;\n        frag = new Fragment(type, baseurl);\n        frag.start = totalduration;\n        frag.sn = currentSN;\n        frag.cc = discontinuityCounter;\n        frag.level = id;\n        if (currentInitSegment) {\n          frag.initSegment = currentInitSegment;\n          frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n          currentInitSegment.rawProgramDateTime = null;\n          if (nextByteRange) {\n            frag.setByteRange(nextByteRange);\n            nextByteRange = null;\n          }\n        }\n      }\n      const duration = result[1];\n      if (duration) {\n        frag.duration = parseFloat(duration);\n        const title = (\" \" + result[2]).slice(1);\n        frag.title = title || null;\n        frag.tagList.push(title ? [\"INF\", duration, title] : [\"INF\", duration]);\n      } else if (result[3]) {\n        if (isFiniteNumber(frag.duration)) {\n          frag.start = totalduration;\n          if (levelkeys) {\n            setFragLevelKeys(frag, levelkeys, level);\n          }\n          frag.sn = currentSN;\n          frag.level = id;\n          frag.cc = discontinuityCounter;\n          fragments.push(frag);\n          const uri = (\" \" + result[3]).slice(1);\n          frag.relurl = substituteVariables(level, uri);\n          assignProgramDateTime(frag, prevFrag);\n          prevFrag = frag;\n          totalduration += frag.duration;\n          currentSN++;\n          currentPart = 0;\n          createNextFrag = true;\n        }\n      } else if (result[4]) {\n        const data = (\" \" + result[4]).slice(1);\n        if (prevFrag) {\n          frag.setByteRange(data, prevFrag);\n        } else {\n          frag.setByteRange(data);\n        }\n      } else if (result[5]) {\n        frag.rawProgramDateTime = (\" \" + result[5]).slice(1);\n        frag.tagList.push([\"PROGRAM-DATE-TIME\", frag.rawProgramDateTime]);\n        if (firstPdtIndex === -1) {\n          firstPdtIndex = fragments.length;\n        }\n      } else {\n        result = result[0].match(LEVEL_PLAYLIST_REGEX_SLOW);\n        if (!result) {\n          logger.warn(\"No matches on slow regex match for level playlist!\");\n          continue;\n        }\n        for (i2 = 1; i2 < result.length; i2++) {\n          if (typeof result[i2] !== \"undefined\") {\n            break;\n          }\n        }\n        const tag = (\" \" + result[i2]).slice(1);\n        const value1 = (\" \" + result[i2 + 1]).slice(1);\n        const value2 = result[i2 + 2] ? (\" \" + result[i2 + 2]).slice(1) : \"\";\n        switch (tag) {\n          case \"PLAYLIST-TYPE\":\n            level.type = value1.toUpperCase();\n            break;\n          case \"MEDIA-SEQUENCE\":\n            currentSN = level.startSN = parseInt(value1);\n            break;\n          case \"SKIP\": {\n            const skipAttrs = new AttrList(value1);\n            {\n              substituteVariablesInAttributes(level, skipAttrs, [\"RECENTLY-REMOVED-DATERANGES\"]);\n            }\n            const skippedSegments = skipAttrs.decimalInteger(\"SKIPPED-SEGMENTS\");\n            if (isFiniteNumber(skippedSegments)) {\n              level.skippedSegments = skippedSegments;\n              for (let _i2 = skippedSegments; _i2--; ) {\n                fragments.unshift(null);\n              }\n              currentSN += skippedSegments;\n            }\n            const recentlyRemovedDateranges = skipAttrs.enumeratedString(\"RECENTLY-REMOVED-DATERANGES\");\n            if (recentlyRemovedDateranges) {\n              level.recentlyRemovedDateranges = recentlyRemovedDateranges.split(\"\t\");\n            }\n            break;\n          }\n          case \"TARGETDURATION\":\n            level.targetduration = Math.max(parseInt(value1), 1);\n            break;\n          case \"VERSION\":\n            level.version = parseInt(value1);\n            break;\n          case \"INDEPENDENT-SEGMENTS\":\n          case \"EXTM3U\":\n            break;\n          case \"ENDLIST\":\n            level.live = false;\n            break;\n          case \"#\":\n            if (value1 || value2) {\n              frag.tagList.push(value2 ? [value1, value2] : [value1]);\n            }\n            break;\n          case \"DISCONTINUITY\":\n            discontinuityCounter++;\n            frag.tagList.push([\"DIS\"]);\n            break;\n          case \"GAP\":\n            frag.gap = true;\n            frag.tagList.push([tag]);\n            break;\n          case \"BITRATE\":\n            frag.tagList.push([tag, value1]);\n            break;\n          case \"DATERANGE\": {\n            const dateRangeAttr = new AttrList(value1);\n            {\n              substituteVariablesInAttributes(level, dateRangeAttr, [\"ID\", \"CLASS\", \"START-DATE\", \"END-DATE\", \"SCTE35-CMD\", \"SCTE35-OUT\", \"SCTE35-IN\"]);\n              substituteVariablesInAttributes(level, dateRangeAttr, dateRangeAttr.clientAttrs);\n            }\n            const dateRange = new DateRange(dateRangeAttr, level.dateRanges[dateRangeAttr.ID]);\n            if (dateRange.isValid || level.skippedSegments) {\n              level.dateRanges[dateRange.id] = dateRange;\n            } else {\n              logger.warn(`Ignoring invalid DATERANGE tag: \"${value1}\"`);\n            }\n            frag.tagList.push([\"EXT-X-DATERANGE\", value1]);\n            break;\n          }\n          case \"DEFINE\": {\n            {\n              const variableAttributes = new AttrList(value1);\n              substituteVariablesInAttributes(level, variableAttributes, [\"NAME\", \"VALUE\", \"IMPORT\", \"QUERYPARAM\"]);\n              if (\"IMPORT\" in variableAttributes) {\n                importVariableDefinition(level, variableAttributes, multivariantVariableList);\n              } else {\n                addVariableDefinition(level, variableAttributes, baseurl);\n              }\n            }\n            break;\n          }\n          case \"DISCONTINUITY-SEQUENCE\":\n            discontinuityCounter = parseInt(value1);\n            break;\n          case \"KEY\": {\n            const levelKey = parseKey(value1, baseurl, level);\n            if (levelKey.isSupported()) {\n              if (levelKey.method === \"NONE\") {\n                levelkeys = void 0;\n                break;\n              }\n              if (!levelkeys) {\n                levelkeys = {};\n              }\n              if (levelkeys[levelKey.keyFormat]) {\n                levelkeys = _extends({}, levelkeys);\n              }\n              levelkeys[levelKey.keyFormat] = levelKey;\n            } else {\n              logger.warn(`[Keys] Ignoring invalid EXT-X-KEY tag: \"${value1}\"`);\n            }\n            break;\n          }\n          case \"START\":\n            level.startTimeOffset = parseStartTimeOffset(value1);\n            break;\n          case \"MAP\": {\n            const mapAttrs = new AttrList(value1);\n            {\n              substituteVariablesInAttributes(level, mapAttrs, [\"BYTERANGE\", \"URI\"]);\n            }\n            if (frag.duration) {\n              const init = new Fragment(type, baseurl);\n              setInitSegment(init, mapAttrs, id, levelkeys);\n              currentInitSegment = init;\n              frag.initSegment = currentInitSegment;\n              if (currentInitSegment.rawProgramDateTime && !frag.rawProgramDateTime) {\n                frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n              }\n            } else {\n              const end = frag.byteRangeEndOffset;\n              if (end) {\n                const start = frag.byteRangeStartOffset;\n                nextByteRange = `${end - start}@${start}`;\n              } else {\n                nextByteRange = null;\n              }\n              setInitSegment(frag, mapAttrs, id, levelkeys);\n              currentInitSegment = frag;\n              createNextFrag = true;\n            }\n            break;\n          }\n          case \"SERVER-CONTROL\": {\n            const serverControlAttrs = new AttrList(value1);\n            level.canBlockReload = serverControlAttrs.bool(\"CAN-BLOCK-RELOAD\");\n            level.canSkipUntil = serverControlAttrs.optionalFloat(\"CAN-SKIP-UNTIL\", 0);\n            level.canSkipDateRanges = level.canSkipUntil > 0 && serverControlAttrs.bool(\"CAN-SKIP-DATERANGES\");\n            level.partHoldBack = serverControlAttrs.optionalFloat(\"PART-HOLD-BACK\", 0);\n            level.holdBack = serverControlAttrs.optionalFloat(\"HOLD-BACK\", 0);\n            break;\n          }\n          case \"PART-INF\": {\n            const partInfAttrs = new AttrList(value1);\n            level.partTarget = partInfAttrs.decimalFloatingPoint(\"PART-TARGET\");\n            break;\n          }\n          case \"PART\": {\n            let partList = level.partList;\n            if (!partList) {\n              partList = level.partList = [];\n            }\n            const previousFragmentPart = currentPart > 0 ? partList[partList.length - 1] : void 0;\n            const index = currentPart++;\n            const partAttrs = new AttrList(value1);\n            {\n              substituteVariablesInAttributes(level, partAttrs, [\"BYTERANGE\", \"URI\"]);\n            }\n            const part = new Part(partAttrs, frag, baseurl, index, previousFragmentPart);\n            partList.push(part);\n            frag.duration += part.duration;\n            break;\n          }\n          case \"PRELOAD-HINT\": {\n            const preloadHintAttrs = new AttrList(value1);\n            {\n              substituteVariablesInAttributes(level, preloadHintAttrs, [\"URI\"]);\n            }\n            level.preloadHint = preloadHintAttrs;\n            break;\n          }\n          case \"RENDITION-REPORT\": {\n            const renditionReportAttrs = new AttrList(value1);\n            {\n              substituteVariablesInAttributes(level, renditionReportAttrs, [\"URI\"]);\n            }\n            level.renditionReports = level.renditionReports || [];\n            level.renditionReports.push(renditionReportAttrs);\n            break;\n          }\n          default:\n            logger.warn(`line parsed but not handled: ${result}`);\n            break;\n        }\n      }\n    }\n    if (prevFrag && !prevFrag.relurl) {\n      fragments.pop();\n      totalduration -= prevFrag.duration;\n      if (level.partList) {\n        level.fragmentHint = prevFrag;\n      }\n    } else if (level.partList) {\n      assignProgramDateTime(frag, prevFrag);\n      frag.cc = discontinuityCounter;\n      level.fragmentHint = frag;\n      if (levelkeys) {\n        setFragLevelKeys(frag, levelkeys, level);\n      }\n    }\n    const fragmentLength = fragments.length;\n    const firstFragment = fragments[0];\n    const lastFragment = fragments[fragmentLength - 1];\n    totalduration += level.skippedSegments * level.targetduration;\n    if (totalduration > 0 && fragmentLength && lastFragment) {\n      level.averagetargetduration = totalduration / fragmentLength;\n      const lastSn = lastFragment.sn;\n      level.endSN = lastSn !== \"initSegment\" ? lastSn : 0;\n      if (!level.live) {\n        lastFragment.endList = true;\n      }\n      if (firstFragment) {\n        level.startCC = firstFragment.cc;\n      }\n    } else {\n      level.endSN = 0;\n      level.startCC = 0;\n    }\n    if (level.fragmentHint) {\n      totalduration += level.fragmentHint.duration;\n    }\n    level.totalduration = totalduration;\n    level.endCC = discontinuityCounter;\n    if (firstPdtIndex > 0) {\n      backfillProgramDateTimes(fragments, firstPdtIndex);\n    }\n    return level;\n  }\n};\nfunction parseKey(keyTagAttributes, baseurl, parsed) {\n  var _keyAttrs$METHOD, _keyAttrs$KEYFORMAT;\n  const keyAttrs = new AttrList(keyTagAttributes);\n  {\n    substituteVariablesInAttributes(parsed, keyAttrs, [\"KEYFORMAT\", \"KEYFORMATVERSIONS\", \"URI\", \"IV\", \"URI\"]);\n  }\n  const decryptmethod = (_keyAttrs$METHOD = keyAttrs.METHOD) != null ? _keyAttrs$METHOD : \"\";\n  const decrypturi = keyAttrs.URI;\n  const decryptiv = keyAttrs.hexadecimalInteger(\"IV\");\n  const decryptkeyformatversions = keyAttrs.KEYFORMATVERSIONS;\n  const decryptkeyformat = (_keyAttrs$KEYFORMAT = keyAttrs.KEYFORMAT) != null ? _keyAttrs$KEYFORMAT : \"identity\";\n  if (decrypturi && keyAttrs.IV && !decryptiv) {\n    logger.error(`Invalid IV: ${keyAttrs.IV}`);\n  }\n  const resolvedUri = decrypturi ? M3U8Parser.resolve(decrypturi, baseurl) : \"\";\n  const keyFormatVersions = (decryptkeyformatversions ? decryptkeyformatversions : \"1\").split(\"/\").map(Number).filter(Number.isFinite);\n  return new LevelKey(decryptmethod, resolvedUri, decryptkeyformat, keyFormatVersions, decryptiv);\n}\nfunction parseStartTimeOffset(startAttributes) {\n  const startAttrs = new AttrList(startAttributes);\n  const startTimeOffset = startAttrs.decimalFloatingPoint(\"TIME-OFFSET\");\n  if (isFiniteNumber(startTimeOffset)) {\n    return startTimeOffset;\n  }\n  return null;\n}\nfunction setCodecs(codecsAttributeValue, level) {\n  let codecs = (codecsAttributeValue || \"\").split(/[ ,]+/).filter((c4) => c4);\n  [\"video\", \"audio\", \"text\"].forEach((type) => {\n    const filtered = codecs.filter((codec) => isCodecType(codec, type));\n    if (filtered.length) {\n      level[`${type}Codec`] = filtered.join(\",\");\n      codecs = codecs.filter((codec) => filtered.indexOf(codec) === -1);\n    }\n  });\n  level.unknownCodecs = codecs;\n}\nfunction assignCodec(media, groupItem, codecProperty) {\n  const codecValue = groupItem[codecProperty];\n  if (codecValue) {\n    media[codecProperty] = codecValue;\n  }\n}\nfunction backfillProgramDateTimes(fragments, firstPdtIndex) {\n  let fragPrev = fragments[firstPdtIndex];\n  for (let i2 = firstPdtIndex; i2--; ) {\n    const frag = fragments[i2];\n    if (!frag) {\n      return;\n    }\n    frag.programDateTime = fragPrev.programDateTime - frag.duration * 1e3;\n    fragPrev = frag;\n  }\n}\nfunction assignProgramDateTime(frag, prevFrag) {\n  if (frag.rawProgramDateTime) {\n    frag.programDateTime = Date.parse(frag.rawProgramDateTime);\n  } else if (prevFrag != null && prevFrag.programDateTime) {\n    frag.programDateTime = prevFrag.endProgramDateTime;\n  }\n  if (!isFiniteNumber(frag.programDateTime)) {\n    frag.programDateTime = null;\n    frag.rawProgramDateTime = null;\n  }\n}\nfunction setInitSegment(frag, mapAttrs, id, levelkeys) {\n  frag.relurl = mapAttrs.URI;\n  if (mapAttrs.BYTERANGE) {\n    frag.setByteRange(mapAttrs.BYTERANGE);\n  }\n  frag.level = id;\n  frag.sn = \"initSegment\";\n  if (levelkeys) {\n    frag.levelkeys = levelkeys;\n  }\n  frag.initSegment = null;\n}\nfunction setFragLevelKeys(frag, levelkeys, level) {\n  frag.levelkeys = levelkeys;\n  const {\n    encryptedFragments\n  } = level;\n  if ((!encryptedFragments.length || encryptedFragments[encryptedFragments.length - 1].levelkeys !== levelkeys) && Object.keys(levelkeys).some((format2) => levelkeys[format2].isCommonEncryption)) {\n    encryptedFragments.push(frag);\n  }\n}\nvar PlaylistContextType = {\n  MANIFEST: \"manifest\",\n  LEVEL: \"level\",\n  AUDIO_TRACK: \"audioTrack\",\n  SUBTITLE_TRACK: \"subtitleTrack\"\n};\nvar PlaylistLevelType = {\n  MAIN: \"main\",\n  AUDIO: \"audio\",\n  SUBTITLE: \"subtitle\"\n};\nfunction mapContextToLevelType(context) {\n  const {\n    type\n  } = context;\n  switch (type) {\n    case PlaylistContextType.AUDIO_TRACK:\n      return PlaylistLevelType.AUDIO;\n    case PlaylistContextType.SUBTITLE_TRACK:\n      return PlaylistLevelType.SUBTITLE;\n    default:\n      return PlaylistLevelType.MAIN;\n  }\n}\nfunction getResponseUrl(response, context) {\n  let url = response.url;\n  if (url === void 0 || url.indexOf(\"data:\") === 0) {\n    url = context.url;\n  }\n  return url;\n}\nvar PlaylistLoader = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.loaders = /* @__PURE__ */ Object.create(null);\n    this.variableList = null;\n    this.hls = hls;\n    this.registerListeners();\n  }\n  startLoad(startPosition) {\n  }\n  stopLoad() {\n    this.destroyInternalLoaders();\n  }\n  registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.on(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n    hls.on(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n  }\n  unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.off(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n    hls.off(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n  }\n  /**\n   * Returns defaults or configured loader-type overloads (pLoader and loader config params)\n   */\n  createInternalLoader(context) {\n    const config = this.hls.config;\n    const PLoader = config.pLoader;\n    const Loader = config.loader;\n    const InternalLoader = PLoader || Loader;\n    const loader = new InternalLoader(config);\n    this.loaders[context.type] = loader;\n    return loader;\n  }\n  getInternalLoader(context) {\n    return this.loaders[context.type];\n  }\n  resetInternalLoader(contextType) {\n    if (this.loaders[contextType]) {\n      delete this.loaders[contextType];\n    }\n  }\n  /**\n   * Call `destroy` on all internal loader instances mapped (one per context type)\n   */\n  destroyInternalLoaders() {\n    for (const contextType in this.loaders) {\n      const loader = this.loaders[contextType];\n      if (loader) {\n        loader.destroy();\n      }\n      this.resetInternalLoader(contextType);\n    }\n  }\n  destroy() {\n    this.variableList = null;\n    this.unregisterListeners();\n    this.destroyInternalLoaders();\n  }\n  onManifestLoading(event, data) {\n    const {\n      url\n    } = data;\n    this.variableList = null;\n    this.load({\n      id: null,\n      level: 0,\n      responseType: \"text\",\n      type: PlaylistContextType.MANIFEST,\n      url,\n      deliveryDirectives: null\n    });\n  }\n  onLevelLoading(event, data) {\n    const {\n      id,\n      level,\n      pathwayId,\n      url,\n      deliveryDirectives\n    } = data;\n    this.load({\n      id,\n      level,\n      pathwayId,\n      responseType: \"text\",\n      type: PlaylistContextType.LEVEL,\n      url,\n      deliveryDirectives\n    });\n  }\n  onAudioTrackLoading(event, data) {\n    const {\n      id,\n      groupId,\n      url,\n      deliveryDirectives\n    } = data;\n    this.load({\n      id,\n      groupId,\n      level: null,\n      responseType: \"text\",\n      type: PlaylistContextType.AUDIO_TRACK,\n      url,\n      deliveryDirectives\n    });\n  }\n  onSubtitleTrackLoading(event, data) {\n    const {\n      id,\n      groupId,\n      url,\n      deliveryDirectives\n    } = data;\n    this.load({\n      id,\n      groupId,\n      level: null,\n      responseType: \"text\",\n      type: PlaylistContextType.SUBTITLE_TRACK,\n      url,\n      deliveryDirectives\n    });\n  }\n  load(context) {\n    var _context$deliveryDire;\n    const config = this.hls.config;\n    let loader = this.getInternalLoader(context);\n    if (loader) {\n      const loaderContext = loader.context;\n      if (loaderContext && loaderContext.url === context.url && loaderContext.level === context.level) {\n        logger.trace(\"[playlist-loader]: playlist request ongoing\");\n        return;\n      }\n      logger.log(`[playlist-loader]: aborting previous loader for type: ${context.type}`);\n      loader.abort();\n    }\n    let loadPolicy;\n    if (context.type === PlaylistContextType.MANIFEST) {\n      loadPolicy = config.manifestLoadPolicy.default;\n    } else {\n      loadPolicy = _extends({}, config.playlistLoadPolicy.default, {\n        timeoutRetry: null,\n        errorRetry: null\n      });\n    }\n    loader = this.createInternalLoader(context);\n    if (isFiniteNumber((_context$deliveryDire = context.deliveryDirectives) == null ? void 0 : _context$deliveryDire.part)) {\n      let levelDetails;\n      if (context.type === PlaylistContextType.LEVEL && context.level !== null) {\n        levelDetails = this.hls.levels[context.level].details;\n      } else if (context.type === PlaylistContextType.AUDIO_TRACK && context.id !== null) {\n        levelDetails = this.hls.audioTracks[context.id].details;\n      } else if (context.type === PlaylistContextType.SUBTITLE_TRACK && context.id !== null) {\n        levelDetails = this.hls.subtitleTracks[context.id].details;\n      }\n      if (levelDetails) {\n        const partTarget = levelDetails.partTarget;\n        const targetDuration = levelDetails.targetduration;\n        if (partTarget && targetDuration) {\n          const maxLowLatencyPlaylistRefresh = Math.max(partTarget * 3, targetDuration * 0.8) * 1e3;\n          loadPolicy = _extends({}, loadPolicy, {\n            maxTimeToFirstByteMs: Math.min(maxLowLatencyPlaylistRefresh, loadPolicy.maxTimeToFirstByteMs),\n            maxLoadTimeMs: Math.min(maxLowLatencyPlaylistRefresh, loadPolicy.maxTimeToFirstByteMs)\n          });\n        }\n      }\n    }\n    const legacyRetryCompatibility = loadPolicy.errorRetry || loadPolicy.timeoutRetry || {};\n    const loaderConfig = {\n      loadPolicy,\n      timeout: loadPolicy.maxLoadTimeMs,\n      maxRetry: legacyRetryCompatibility.maxNumRetry || 0,\n      retryDelay: legacyRetryCompatibility.retryDelayMs || 0,\n      maxRetryDelay: legacyRetryCompatibility.maxRetryDelayMs || 0\n    };\n    const loaderCallbacks = {\n      onSuccess: (response, stats, context2, networkDetails) => {\n        const loader2 = this.getInternalLoader(context2);\n        this.resetInternalLoader(context2.type);\n        const string = response.data;\n        if (string.indexOf(\"#EXTM3U\") !== 0) {\n          this.handleManifestParsingError(response, context2, new Error(\"no EXTM3U delimiter\"), networkDetails || null, stats);\n          return;\n        }\n        stats.parsing.start = performance.now();\n        if (M3U8Parser.isMediaPlaylist(string)) {\n          this.handleTrackOrLevelPlaylist(response, stats, context2, networkDetails || null, loader2);\n        } else {\n          this.handleMasterPlaylist(response, stats, context2, networkDetails);\n        }\n      },\n      onError: (response, context2, networkDetails, stats) => {\n        this.handleNetworkError(context2, networkDetails, false, response, stats);\n      },\n      onTimeout: (stats, context2, networkDetails) => {\n        this.handleNetworkError(context2, networkDetails, true, void 0, stats);\n      }\n    };\n    loader.load(context, loaderConfig, loaderCallbacks);\n  }\n  handleMasterPlaylist(response, stats, context, networkDetails) {\n    const hls = this.hls;\n    const string = response.data;\n    const url = getResponseUrl(response, context);\n    const parsedResult = M3U8Parser.parseMasterPlaylist(string, url);\n    if (parsedResult.playlistParsingError) {\n      this.handleManifestParsingError(response, context, parsedResult.playlistParsingError, networkDetails, stats);\n      return;\n    }\n    const {\n      contentSteering,\n      levels,\n      sessionData,\n      sessionKeys,\n      startTimeOffset,\n      variableList\n    } = parsedResult;\n    this.variableList = variableList;\n    const {\n      AUDIO: audioTracks = [],\n      SUBTITLES: subtitles,\n      \"CLOSED-CAPTIONS\": captions\n    } = M3U8Parser.parseMasterPlaylistMedia(string, url, parsedResult);\n    if (audioTracks.length) {\n      const embeddedAudioFound = audioTracks.some((audioTrack) => !audioTrack.url);\n      if (!embeddedAudioFound && levels[0].audioCodec && !levels[0].attrs.AUDIO) {\n        logger.log(\"[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one\");\n        audioTracks.unshift({\n          type: \"main\",\n          name: \"main\",\n          groupId: \"main\",\n          default: false,\n          autoselect: false,\n          forced: false,\n          id: -1,\n          attrs: new AttrList({}),\n          bitrate: 0,\n          url: \"\"\n        });\n      }\n    }\n    hls.trigger(Events.MANIFEST_LOADED, {\n      levels,\n      audioTracks,\n      subtitles,\n      captions,\n      contentSteering,\n      url,\n      stats,\n      networkDetails,\n      sessionData,\n      sessionKeys,\n      startTimeOffset,\n      variableList\n    });\n  }\n  handleTrackOrLevelPlaylist(response, stats, context, networkDetails, loader) {\n    const hls = this.hls;\n    const {\n      id,\n      level,\n      type\n    } = context;\n    const url = getResponseUrl(response, context);\n    const levelUrlId = 0;\n    const levelId = isFiniteNumber(level) ? level : isFiniteNumber(id) ? id : 0;\n    const levelType = mapContextToLevelType(context);\n    const levelDetails = M3U8Parser.parseLevelPlaylist(response.data, url, levelId, levelType, levelUrlId, this.variableList);\n    if (type === PlaylistContextType.MANIFEST) {\n      const singleLevel = {\n        attrs: new AttrList({}),\n        bitrate: 0,\n        details: levelDetails,\n        name: \"\",\n        url\n      };\n      hls.trigger(Events.MANIFEST_LOADED, {\n        levels: [singleLevel],\n        audioTracks: [],\n        url,\n        stats,\n        networkDetails,\n        sessionData: null,\n        sessionKeys: null,\n        contentSteering: null,\n        startTimeOffset: null,\n        variableList: null\n      });\n    }\n    stats.parsing.end = performance.now();\n    context.levelDetails = levelDetails;\n    this.handlePlaylistLoaded(levelDetails, response, stats, context, networkDetails, loader);\n  }\n  handleManifestParsingError(response, context, error, networkDetails, stats) {\n    this.hls.trigger(Events.ERROR, {\n      type: ErrorTypes.NETWORK_ERROR,\n      details: ErrorDetails.MANIFEST_PARSING_ERROR,\n      fatal: context.type === PlaylistContextType.MANIFEST,\n      url: response.url,\n      err: error,\n      error,\n      reason: error.message,\n      response,\n      context,\n      networkDetails,\n      stats\n    });\n  }\n  handleNetworkError(context, networkDetails, timeout = false, response, stats) {\n    let message = `A network ${timeout ? \"timeout\" : \"error\" + (response ? \" (status \" + response.code + \")\" : \"\")} occurred while loading ${context.type}`;\n    if (context.type === PlaylistContextType.LEVEL) {\n      message += `: ${context.level} id: ${context.id}`;\n    } else if (context.type === PlaylistContextType.AUDIO_TRACK || context.type === PlaylistContextType.SUBTITLE_TRACK) {\n      message += ` id: ${context.id} group-id: \"${context.groupId}\"`;\n    }\n    const error = new Error(message);\n    logger.warn(`[playlist-loader]: ${message}`);\n    let details = ErrorDetails.UNKNOWN;\n    let fatal = false;\n    const loader = this.getInternalLoader(context);\n    switch (context.type) {\n      case PlaylistContextType.MANIFEST:\n        details = timeout ? ErrorDetails.MANIFEST_LOAD_TIMEOUT : ErrorDetails.MANIFEST_LOAD_ERROR;\n        fatal = true;\n        break;\n      case PlaylistContextType.LEVEL:\n        details = timeout ? ErrorDetails.LEVEL_LOAD_TIMEOUT : ErrorDetails.LEVEL_LOAD_ERROR;\n        fatal = false;\n        break;\n      case PlaylistContextType.AUDIO_TRACK:\n        details = timeout ? ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT : ErrorDetails.AUDIO_TRACK_LOAD_ERROR;\n        fatal = false;\n        break;\n      case PlaylistContextType.SUBTITLE_TRACK:\n        details = timeout ? ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT : ErrorDetails.SUBTITLE_LOAD_ERROR;\n        fatal = false;\n        break;\n    }\n    if (loader) {\n      this.resetInternalLoader(context.type);\n    }\n    const errorData = {\n      type: ErrorTypes.NETWORK_ERROR,\n      details,\n      fatal,\n      url: context.url,\n      loader,\n      context,\n      error,\n      networkDetails,\n      stats\n    };\n    if (response) {\n      const url = (networkDetails == null ? void 0 : networkDetails.url) || context.url;\n      errorData.response = _objectSpread2({\n        url,\n        data: void 0\n      }, response);\n    }\n    this.hls.trigger(Events.ERROR, errorData);\n  }\n  handlePlaylistLoaded(levelDetails, response, stats, context, networkDetails, loader) {\n    const hls = this.hls;\n    const {\n      type,\n      level,\n      id,\n      groupId,\n      deliveryDirectives\n    } = context;\n    const url = getResponseUrl(response, context);\n    const parent = mapContextToLevelType(context);\n    const levelIndex = typeof context.level === \"number\" && parent === PlaylistLevelType.MAIN ? level : void 0;\n    if (!levelDetails.fragments.length) {\n      const _error = new Error(\"No Segments found in Playlist\");\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.NETWORK_ERROR,\n        details: ErrorDetails.LEVEL_EMPTY_ERROR,\n        fatal: false,\n        url,\n        error: _error,\n        reason: _error.message,\n        response,\n        context,\n        level: levelIndex,\n        parent,\n        networkDetails,\n        stats\n      });\n      return;\n    }\n    if (!levelDetails.targetduration) {\n      levelDetails.playlistParsingError = new Error(\"Missing Target Duration\");\n    }\n    const error = levelDetails.playlistParsingError;\n    if (error) {\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.NETWORK_ERROR,\n        details: ErrorDetails.LEVEL_PARSING_ERROR,\n        fatal: false,\n        url,\n        error,\n        reason: error.message,\n        response,\n        context,\n        level: levelIndex,\n        parent,\n        networkDetails,\n        stats\n      });\n      return;\n    }\n    if (levelDetails.live && loader) {\n      if (loader.getCacheAge) {\n        levelDetails.ageHeader = loader.getCacheAge() || 0;\n      }\n      if (!loader.getCacheAge || isNaN(levelDetails.ageHeader)) {\n        levelDetails.ageHeader = 0;\n      }\n    }\n    switch (type) {\n      case PlaylistContextType.MANIFEST:\n      case PlaylistContextType.LEVEL:\n        hls.trigger(Events.LEVEL_LOADED, {\n          details: levelDetails,\n          level: levelIndex || 0,\n          id: id || 0,\n          stats,\n          networkDetails,\n          deliveryDirectives\n        });\n        break;\n      case PlaylistContextType.AUDIO_TRACK:\n        hls.trigger(Events.AUDIO_TRACK_LOADED, {\n          details: levelDetails,\n          id: id || 0,\n          groupId: groupId || \"\",\n          stats,\n          networkDetails,\n          deliveryDirectives\n        });\n        break;\n      case PlaylistContextType.SUBTITLE_TRACK:\n        hls.trigger(Events.SUBTITLE_TRACK_LOADED, {\n          details: levelDetails,\n          id: id || 0,\n          groupId: groupId || \"\",\n          stats,\n          networkDetails,\n          deliveryDirectives\n        });\n        break;\n    }\n  }\n};\nfunction sendAddTrackEvent(track, videoEl) {\n  let event;\n  try {\n    event = new Event(\"addtrack\");\n  } catch (err) {\n    event = document.createEvent(\"Event\");\n    event.initEvent(\"addtrack\", false, false);\n  }\n  event.track = track;\n  videoEl.dispatchEvent(event);\n}\nfunction addCueToTrack(track, cue) {\n  const mode = track.mode;\n  if (mode === \"disabled\") {\n    track.mode = \"hidden\";\n  }\n  if (track.cues && !track.cues.getCueById(cue.id)) {\n    try {\n      track.addCue(cue);\n      if (!track.cues.getCueById(cue.id)) {\n        throw new Error(`addCue is failed for: ${cue}`);\n      }\n    } catch (err) {\n      logger.debug(`[texttrack-utils]: ${err}`);\n      try {\n        const textTrackCue = new self.TextTrackCue(cue.startTime, cue.endTime, cue.text);\n        textTrackCue.id = cue.id;\n        track.addCue(textTrackCue);\n      } catch (err2) {\n        logger.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${err2}`);\n      }\n    }\n  }\n  if (mode === \"disabled\") {\n    track.mode = mode;\n  }\n}\nfunction clearCurrentCues(track) {\n  const mode = track.mode;\n  if (mode === \"disabled\") {\n    track.mode = \"hidden\";\n  }\n  if (track.cues) {\n    for (let i2 = track.cues.length; i2--; ) {\n      track.removeCue(track.cues[i2]);\n    }\n  }\n  if (mode === \"disabled\") {\n    track.mode = mode;\n  }\n}\nfunction removeCuesInRange(track, start, end, predicate) {\n  const mode = track.mode;\n  if (mode === \"disabled\") {\n    track.mode = \"hidden\";\n  }\n  if (track.cues && track.cues.length > 0) {\n    const cues = getCuesInRange(track.cues, start, end);\n    for (let i2 = 0; i2 < cues.length; i2++) {\n      if (!predicate || predicate(cues[i2])) {\n        track.removeCue(cues[i2]);\n      }\n    }\n  }\n  if (mode === \"disabled\") {\n    track.mode = mode;\n  }\n}\nfunction getFirstCueIndexAfterTime(cues, time) {\n  if (time < cues[0].startTime) {\n    return 0;\n  }\n  const len = cues.length - 1;\n  if (time > cues[len].endTime) {\n    return -1;\n  }\n  let left = 0;\n  let right = len;\n  while (left <= right) {\n    const mid = Math.floor((right + left) / 2);\n    if (time < cues[mid].startTime) {\n      right = mid - 1;\n    } else if (time > cues[mid].startTime && left < len) {\n      left = mid + 1;\n    } else {\n      return mid;\n    }\n  }\n  return cues[left].startTime - time < time - cues[right].startTime ? left : right;\n}\nfunction getCuesInRange(cues, start, end) {\n  const cuesFound = [];\n  const firstCueInRange = getFirstCueIndexAfterTime(cues, start);\n  if (firstCueInRange > -1) {\n    for (let i2 = firstCueInRange, len = cues.length; i2 < len; i2++) {\n      const cue = cues[i2];\n      if (cue.startTime >= start && cue.endTime <= end) {\n        cuesFound.push(cue);\n      } else if (cue.startTime > end) {\n        return cuesFound;\n      }\n    }\n  }\n  return cuesFound;\n}\nfunction filterSubtitleTracks(textTrackList) {\n  const tracks = [];\n  for (let i2 = 0; i2 < textTrackList.length; i2++) {\n    const track = textTrackList[i2];\n    if ((track.kind === \"subtitles\" || track.kind === \"captions\") && track.label) {\n      tracks.push(textTrackList[i2]);\n    }\n  }\n  return tracks;\n}\nvar MetadataSchema = {\n  audioId3: \"org.id3\",\n  dateRange: \"com.apple.quicktime.HLS\",\n  emsg: \"https://aomedia.org/emsg/ID3\"\n};\nvar MIN_CUE_DURATION = 0.25;\nfunction getCueClass() {\n  if (typeof self === \"undefined\") return void 0;\n  return self.VTTCue || self.TextTrackCue;\n}\nfunction createCueWithDataFields(Cue, startTime, endTime, data, type) {\n  let cue = new Cue(startTime, endTime, \"\");\n  try {\n    cue.value = data;\n    if (type) {\n      cue.type = type;\n    }\n  } catch (e) {\n    cue = new Cue(startTime, endTime, JSON.stringify(type ? _objectSpread2({\n      type\n    }, data) : data));\n  }\n  return cue;\n}\nvar MAX_CUE_ENDTIME = (() => {\n  const Cue = getCueClass();\n  try {\n    Cue && new Cue(0, Number.POSITIVE_INFINITY, \"\");\n  } catch (e) {\n    return Number.MAX_VALUE;\n  }\n  return Number.POSITIVE_INFINITY;\n})();\nfunction dateRangeDateToTimelineSeconds(date, offset) {\n  return date.getTime() / 1e3 - offset;\n}\nfunction hexToArrayBuffer(str) {\n  return Uint8Array.from(str.replace(/^0x/, \"\").replace(/([\\da-fA-F]{2}) ?/g, \"0x$1 \").replace(/ +$/, \"\").split(\" \")).buffer;\n}\nvar ID3TrackController = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.id3Track = null;\n    this.media = null;\n    this.dateRangeCuesAppended = {};\n    this.hls = hls;\n    this._registerListeners();\n  }\n  destroy() {\n    this._unregisterListeners();\n    this.id3Track = null;\n    this.media = null;\n    this.dateRangeCuesAppended = {};\n    this.hls = null;\n  }\n  _registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n  }\n  _unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n  }\n  // Add ID3 metatadata text track.\n  onMediaAttached(event, data) {\n    this.media = data.media;\n  }\n  onMediaDetaching() {\n    if (!this.id3Track) {\n      return;\n    }\n    clearCurrentCues(this.id3Track);\n    this.id3Track = null;\n    this.media = null;\n    this.dateRangeCuesAppended = {};\n  }\n  onManifestLoading() {\n    this.dateRangeCuesAppended = {};\n  }\n  createTrack(media) {\n    const track = this.getID3Track(media.textTracks);\n    track.mode = \"hidden\";\n    return track;\n  }\n  getID3Track(textTracks) {\n    if (!this.media) {\n      return;\n    }\n    for (let i2 = 0; i2 < textTracks.length; i2++) {\n      const textTrack = textTracks[i2];\n      if (textTrack.kind === \"metadata\" && textTrack.label === \"id3\") {\n        sendAddTrackEvent(textTrack, this.media);\n        return textTrack;\n      }\n    }\n    return this.media.addTextTrack(\"metadata\", \"id3\");\n  }\n  onFragParsingMetadata(event, data) {\n    if (!this.media) {\n      return;\n    }\n    const {\n      hls: {\n        config: {\n          enableEmsgMetadataCues,\n          enableID3MetadataCues\n        }\n      }\n    } = this;\n    if (!enableEmsgMetadataCues && !enableID3MetadataCues) {\n      return;\n    }\n    const {\n      samples\n    } = data;\n    if (!this.id3Track) {\n      this.id3Track = this.createTrack(this.media);\n    }\n    const Cue = getCueClass();\n    if (!Cue) {\n      return;\n    }\n    for (let i2 = 0; i2 < samples.length; i2++) {\n      const type = samples[i2].type;\n      if (type === MetadataSchema.emsg && !enableEmsgMetadataCues || !enableID3MetadataCues) {\n        continue;\n      }\n      const frames = getID3Frames(samples[i2].data);\n      if (frames) {\n        const startTime = samples[i2].pts;\n        let endTime = startTime + samples[i2].duration;\n        if (endTime > MAX_CUE_ENDTIME) {\n          endTime = MAX_CUE_ENDTIME;\n        }\n        const timeDiff = endTime - startTime;\n        if (timeDiff <= 0) {\n          endTime = startTime + MIN_CUE_DURATION;\n        }\n        for (let j4 = 0; j4 < frames.length; j4++) {\n          const frame = frames[j4];\n          if (!isTimeStampFrame(frame)) {\n            this.updateId3CueEnds(startTime, type);\n            const cue = createCueWithDataFields(Cue, startTime, endTime, frame, type);\n            if (cue) {\n              this.id3Track.addCue(cue);\n            }\n          }\n        }\n      }\n    }\n  }\n  updateId3CueEnds(startTime, type) {\n    var _this$id3Track;\n    const cues = (_this$id3Track = this.id3Track) == null ? void 0 : _this$id3Track.cues;\n    if (cues) {\n      for (let i2 = cues.length; i2--; ) {\n        const cue = cues[i2];\n        if (cue.type === type && cue.startTime < startTime && cue.endTime === MAX_CUE_ENDTIME) {\n          cue.endTime = startTime;\n        }\n      }\n    }\n  }\n  onBufferFlushing(event, {\n    startOffset,\n    endOffset,\n    type\n  }) {\n    const {\n      id3Track,\n      hls\n    } = this;\n    if (!hls) {\n      return;\n    }\n    const {\n      config: {\n        enableEmsgMetadataCues,\n        enableID3MetadataCues\n      }\n    } = hls;\n    if (id3Track && (enableEmsgMetadataCues || enableID3MetadataCues)) {\n      let predicate;\n      if (type === \"audio\") {\n        predicate = (cue) => cue.type === MetadataSchema.audioId3 && enableID3MetadataCues;\n      } else if (type === \"video\") {\n        predicate = (cue) => cue.type === MetadataSchema.emsg && enableEmsgMetadataCues;\n      } else {\n        predicate = (cue) => cue.type === MetadataSchema.audioId3 && enableID3MetadataCues || cue.type === MetadataSchema.emsg && enableEmsgMetadataCues;\n      }\n      removeCuesInRange(id3Track, startOffset, endOffset, predicate);\n    }\n  }\n  onLevelUpdated(event, {\n    details\n  }) {\n    if (!this.media || !details.hasProgramDateTime || !this.hls.config.enableDateRangeMetadataCues) {\n      return;\n    }\n    const {\n      dateRangeCuesAppended,\n      id3Track\n    } = this;\n    const {\n      dateRanges\n    } = details;\n    const ids = Object.keys(dateRanges);\n    if (id3Track) {\n      const idsToRemove = Object.keys(dateRangeCuesAppended).filter((id) => !ids.includes(id));\n      for (let i2 = idsToRemove.length; i2--; ) {\n        const id = idsToRemove[i2];\n        Object.keys(dateRangeCuesAppended[id].cues).forEach((key) => {\n          id3Track.removeCue(dateRangeCuesAppended[id].cues[key]);\n        });\n        delete dateRangeCuesAppended[id];\n      }\n    }\n    const lastFragment = details.fragments[details.fragments.length - 1];\n    if (ids.length === 0 || !isFiniteNumber(lastFragment == null ? void 0 : lastFragment.programDateTime)) {\n      return;\n    }\n    if (!this.id3Track) {\n      this.id3Track = this.createTrack(this.media);\n    }\n    const dateTimeOffset = lastFragment.programDateTime / 1e3 - lastFragment.start;\n    const Cue = getCueClass();\n    for (let i2 = 0; i2 < ids.length; i2++) {\n      const id = ids[i2];\n      const dateRange = dateRanges[id];\n      const startTime = dateRangeDateToTimelineSeconds(dateRange.startDate, dateTimeOffset);\n      const appendedDateRangeCues = dateRangeCuesAppended[id];\n      const cues = (appendedDateRangeCues == null ? void 0 : appendedDateRangeCues.cues) || {};\n      let durationKnown = (appendedDateRangeCues == null ? void 0 : appendedDateRangeCues.durationKnown) || false;\n      let endTime = MAX_CUE_ENDTIME;\n      const endDate = dateRange.endDate;\n      if (endDate) {\n        endTime = dateRangeDateToTimelineSeconds(endDate, dateTimeOffset);\n        durationKnown = true;\n      } else if (dateRange.endOnNext && !durationKnown) {\n        const nextDateRangeWithSameClass = ids.reduce((candidateDateRange, id2) => {\n          if (id2 !== dateRange.id) {\n            const otherDateRange = dateRanges[id2];\n            if (otherDateRange.class === dateRange.class && otherDateRange.startDate > dateRange.startDate && (!candidateDateRange || dateRange.startDate < candidateDateRange.startDate)) {\n              return otherDateRange;\n            }\n          }\n          return candidateDateRange;\n        }, null);\n        if (nextDateRangeWithSameClass) {\n          endTime = dateRangeDateToTimelineSeconds(nextDateRangeWithSameClass.startDate, dateTimeOffset);\n          durationKnown = true;\n        }\n      }\n      const attributes = Object.keys(dateRange.attr);\n      for (let j4 = 0; j4 < attributes.length; j4++) {\n        const key = attributes[j4];\n        if (!isDateRangeCueAttribute(key)) {\n          continue;\n        }\n        const cue = cues[key];\n        if (cue) {\n          if (durationKnown && !appendedDateRangeCues.durationKnown) {\n            cue.endTime = endTime;\n          }\n        } else if (Cue) {\n          let data = dateRange.attr[key];\n          if (isSCTE35Attribute(key)) {\n            data = hexToArrayBuffer(data);\n          }\n          const _cue = createCueWithDataFields(Cue, startTime, endTime, {\n            key,\n            data\n          }, MetadataSchema.dateRange);\n          if (_cue) {\n            _cue.id = id;\n            this.id3Track.addCue(_cue);\n            cues[key] = _cue;\n          }\n        }\n      }\n      dateRangeCuesAppended[id] = {\n        cues,\n        dateRange,\n        durationKnown\n      };\n    }\n  }\n};\nvar LatencyController = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.config = void 0;\n    this.media = null;\n    this.levelDetails = null;\n    this.currentTime = 0;\n    this.stallCount = 0;\n    this._latency = null;\n    this.timeupdateHandler = () => this.timeupdate();\n    this.hls = hls;\n    this.config = hls.config;\n    this.registerListeners();\n  }\n  get latency() {\n    return this._latency || 0;\n  }\n  get maxLatency() {\n    const {\n      config,\n      levelDetails\n    } = this;\n    if (config.liveMaxLatencyDuration !== void 0) {\n      return config.liveMaxLatencyDuration;\n    }\n    return levelDetails ? config.liveMaxLatencyDurationCount * levelDetails.targetduration : 0;\n  }\n  get targetLatency() {\n    const {\n      levelDetails\n    } = this;\n    if (levelDetails === null) {\n      return null;\n    }\n    const {\n      holdBack,\n      partHoldBack,\n      targetduration\n    } = levelDetails;\n    const {\n      liveSyncDuration,\n      liveSyncDurationCount,\n      lowLatencyMode\n    } = this.config;\n    const userConfig = this.hls.userConfig;\n    let targetLatency = lowLatencyMode ? partHoldBack || holdBack : holdBack;\n    if (userConfig.liveSyncDuration || userConfig.liveSyncDurationCount || targetLatency === 0) {\n      targetLatency = liveSyncDuration !== void 0 ? liveSyncDuration : liveSyncDurationCount * targetduration;\n    }\n    const maxLiveSyncOnStallIncrease = targetduration;\n    const liveSyncOnStallIncrease = 1;\n    return targetLatency + Math.min(this.stallCount * liveSyncOnStallIncrease, maxLiveSyncOnStallIncrease);\n  }\n  get liveSyncPosition() {\n    const liveEdge = this.estimateLiveEdge();\n    const targetLatency = this.targetLatency;\n    const levelDetails = this.levelDetails;\n    if (liveEdge === null || targetLatency === null || levelDetails === null) {\n      return null;\n    }\n    const edge = levelDetails.edge;\n    const syncPosition = liveEdge - targetLatency - this.edgeStalled;\n    const min = edge - levelDetails.totalduration;\n    const max = edge - (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration);\n    return Math.min(Math.max(min, syncPosition), max);\n  }\n  get drift() {\n    const {\n      levelDetails\n    } = this;\n    if (levelDetails === null) {\n      return 1;\n    }\n    return levelDetails.drift;\n  }\n  get edgeStalled() {\n    const {\n      levelDetails\n    } = this;\n    if (levelDetails === null) {\n      return 0;\n    }\n    const maxLevelUpdateAge = (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration) * 3;\n    return Math.max(levelDetails.age - maxLevelUpdateAge, 0);\n  }\n  get forwardBufferLength() {\n    const {\n      media,\n      levelDetails\n    } = this;\n    if (!media || !levelDetails) {\n      return 0;\n    }\n    const bufferedRanges = media.buffered.length;\n    return (bufferedRanges ? media.buffered.end(bufferedRanges - 1) : levelDetails.edge) - this.currentTime;\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.onMediaDetaching();\n    this.levelDetails = null;\n    this.hls = this.timeupdateHandler = null;\n  }\n  registerListeners() {\n    this.hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    this.hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    this.hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    this.hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n    this.hls.on(Events.ERROR, this.onError, this);\n  }\n  unregisterListeners() {\n    this.hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    this.hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    this.hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    this.hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n    this.hls.off(Events.ERROR, this.onError, this);\n  }\n  onMediaAttached(event, data) {\n    this.media = data.media;\n    this.media.addEventListener(\"timeupdate\", this.timeupdateHandler);\n  }\n  onMediaDetaching() {\n    if (this.media) {\n      this.media.removeEventListener(\"timeupdate\", this.timeupdateHandler);\n      this.media = null;\n    }\n  }\n  onManifestLoading() {\n    this.levelDetails = null;\n    this._latency = null;\n    this.stallCount = 0;\n  }\n  onLevelUpdated(event, {\n    details\n  }) {\n    this.levelDetails = details;\n    if (details.advanced) {\n      this.timeupdate();\n    }\n    if (!details.live && this.media) {\n      this.media.removeEventListener(\"timeupdate\", this.timeupdateHandler);\n    }\n  }\n  onError(event, data) {\n    var _this$levelDetails;\n    if (data.details !== ErrorDetails.BUFFER_STALLED_ERROR) {\n      return;\n    }\n    this.stallCount++;\n    if ((_this$levelDetails = this.levelDetails) != null && _this$levelDetails.live) {\n      logger.warn(\"[playback-rate-controller]: Stall detected, adjusting target latency\");\n    }\n  }\n  timeupdate() {\n    const {\n      media,\n      levelDetails\n    } = this;\n    if (!media || !levelDetails) {\n      return;\n    }\n    this.currentTime = media.currentTime;\n    const latency = this.computeLatency();\n    if (latency === null) {\n      return;\n    }\n    this._latency = latency;\n    const {\n      lowLatencyMode,\n      maxLiveSyncPlaybackRate\n    } = this.config;\n    if (!lowLatencyMode || maxLiveSyncPlaybackRate === 1 || !levelDetails.live) {\n      return;\n    }\n    const targetLatency = this.targetLatency;\n    if (targetLatency === null) {\n      return;\n    }\n    const distanceFromTarget = latency - targetLatency;\n    const liveMinLatencyDuration = Math.min(this.maxLatency, targetLatency + levelDetails.targetduration);\n    const inLiveRange = distanceFromTarget < liveMinLatencyDuration;\n    if (inLiveRange && distanceFromTarget > 0.05 && this.forwardBufferLength > 1) {\n      const max = Math.min(2, Math.max(1, maxLiveSyncPlaybackRate));\n      const rate = Math.round(2 / (1 + Math.exp(-0.75 * distanceFromTarget - this.edgeStalled)) * 20) / 20;\n      media.playbackRate = Math.min(max, Math.max(1, rate));\n    } else if (media.playbackRate !== 1 && media.playbackRate !== 0) {\n      media.playbackRate = 1;\n    }\n  }\n  estimateLiveEdge() {\n    const {\n      levelDetails\n    } = this;\n    if (levelDetails === null) {\n      return null;\n    }\n    return levelDetails.edge + levelDetails.age;\n  }\n  computeLatency() {\n    const liveEdge = this.estimateLiveEdge();\n    if (liveEdge === null) {\n      return null;\n    }\n    return liveEdge - this.currentTime;\n  }\n};\nvar HdcpLevels = [\"NONE\", \"TYPE-0\", \"TYPE-1\", null];\nfunction isHdcpLevel(value) {\n  return HdcpLevels.indexOf(value) > -1;\n}\nvar VideoRangeValues = [\"SDR\", \"PQ\", \"HLG\"];\nfunction isVideoRange(value) {\n  return !!value && VideoRangeValues.indexOf(value) > -1;\n}\nvar HlsSkip = {\n  No: \"\",\n  Yes: \"YES\",\n  v2: \"v2\"\n};\nfunction getSkipValue(details) {\n  const {\n    canSkipUntil,\n    canSkipDateRanges,\n    age\n  } = details;\n  const playlistRecentEnough = age < canSkipUntil / 2;\n  if (canSkipUntil && playlistRecentEnough) {\n    if (canSkipDateRanges) {\n      return HlsSkip.v2;\n    }\n    return HlsSkip.Yes;\n  }\n  return HlsSkip.No;\n}\nvar HlsUrlParameters = class {\n  constructor(msn, part, skip) {\n    this.msn = void 0;\n    this.part = void 0;\n    this.skip = void 0;\n    this.msn = msn;\n    this.part = part;\n    this.skip = skip;\n  }\n  addDirectives(uri) {\n    const url = new self.URL(uri);\n    if (this.msn !== void 0) {\n      url.searchParams.set(\"_HLS_msn\", this.msn.toString());\n    }\n    if (this.part !== void 0) {\n      url.searchParams.set(\"_HLS_part\", this.part.toString());\n    }\n    if (this.skip) {\n      url.searchParams.set(\"_HLS_skip\", this.skip);\n    }\n    return url.href;\n  }\n};\nvar Level = class {\n  constructor(data) {\n    this._attrs = void 0;\n    this.audioCodec = void 0;\n    this.bitrate = void 0;\n    this.codecSet = void 0;\n    this.url = void 0;\n    this.frameRate = void 0;\n    this.height = void 0;\n    this.id = void 0;\n    this.name = void 0;\n    this.videoCodec = void 0;\n    this.width = void 0;\n    this.details = void 0;\n    this.fragmentError = 0;\n    this.loadError = 0;\n    this.loaded = void 0;\n    this.realBitrate = 0;\n    this.supportedPromise = void 0;\n    this.supportedResult = void 0;\n    this._avgBitrate = 0;\n    this._audioGroups = void 0;\n    this._subtitleGroups = void 0;\n    this._urlId = 0;\n    this.url = [data.url];\n    this._attrs = [data.attrs];\n    this.bitrate = data.bitrate;\n    if (data.details) {\n      this.details = data.details;\n    }\n    this.id = data.id || 0;\n    this.name = data.name;\n    this.width = data.width || 0;\n    this.height = data.height || 0;\n    this.frameRate = data.attrs.optionalFloat(\"FRAME-RATE\", 0);\n    this._avgBitrate = data.attrs.decimalInteger(\"AVERAGE-BANDWIDTH\");\n    this.audioCodec = data.audioCodec;\n    this.videoCodec = data.videoCodec;\n    this.codecSet = [data.videoCodec, data.audioCodec].filter((c4) => !!c4).map((s) => s.substring(0, 4)).join(\",\");\n    this.addGroupId(\"audio\", data.attrs.AUDIO);\n    this.addGroupId(\"text\", data.attrs.SUBTITLES);\n  }\n  get maxBitrate() {\n    return Math.max(this.realBitrate, this.bitrate);\n  }\n  get averageBitrate() {\n    return this._avgBitrate || this.realBitrate || this.bitrate;\n  }\n  get attrs() {\n    return this._attrs[0];\n  }\n  get codecs() {\n    return this.attrs.CODECS || \"\";\n  }\n  get pathwayId() {\n    return this.attrs[\"PATHWAY-ID\"] || \".\";\n  }\n  get videoRange() {\n    return this.attrs[\"VIDEO-RANGE\"] || \"SDR\";\n  }\n  get score() {\n    return this.attrs.optionalFloat(\"SCORE\", 0);\n  }\n  get uri() {\n    return this.url[0] || \"\";\n  }\n  hasAudioGroup(groupId) {\n    return hasGroup(this._audioGroups, groupId);\n  }\n  hasSubtitleGroup(groupId) {\n    return hasGroup(this._subtitleGroups, groupId);\n  }\n  get audioGroups() {\n    return this._audioGroups;\n  }\n  get subtitleGroups() {\n    return this._subtitleGroups;\n  }\n  addGroupId(type, groupId) {\n    if (!groupId) {\n      return;\n    }\n    if (type === \"audio\") {\n      let audioGroups = this._audioGroups;\n      if (!audioGroups) {\n        audioGroups = this._audioGroups = [];\n      }\n      if (audioGroups.indexOf(groupId) === -1) {\n        audioGroups.push(groupId);\n      }\n    } else if (type === \"text\") {\n      let subtitleGroups = this._subtitleGroups;\n      if (!subtitleGroups) {\n        subtitleGroups = this._subtitleGroups = [];\n      }\n      if (subtitleGroups.indexOf(groupId) === -1) {\n        subtitleGroups.push(groupId);\n      }\n    }\n  }\n  // Deprecated methods (retained for backwards compatibility)\n  get urlId() {\n    return 0;\n  }\n  set urlId(value) {\n  }\n  get audioGroupIds() {\n    return this.audioGroups ? [this.audioGroupId] : void 0;\n  }\n  get textGroupIds() {\n    return this.subtitleGroups ? [this.textGroupId] : void 0;\n  }\n  get audioGroupId() {\n    var _this$audioGroups;\n    return (_this$audioGroups = this.audioGroups) == null ? void 0 : _this$audioGroups[0];\n  }\n  get textGroupId() {\n    var _this$subtitleGroups;\n    return (_this$subtitleGroups = this.subtitleGroups) == null ? void 0 : _this$subtitleGroups[0];\n  }\n  addFallback() {\n  }\n};\nfunction hasGroup(groups, groupId) {\n  if (!groupId || !groups) {\n    return false;\n  }\n  return groups.indexOf(groupId) !== -1;\n}\nfunction updateFromToPTS(fragFrom, fragTo) {\n  const fragToPTS = fragTo.startPTS;\n  if (isFiniteNumber(fragToPTS)) {\n    let duration = 0;\n    let frag;\n    if (fragTo.sn > fragFrom.sn) {\n      duration = fragToPTS - fragFrom.start;\n      frag = fragFrom;\n    } else {\n      duration = fragFrom.start - fragToPTS;\n      frag = fragTo;\n    }\n    if (frag.duration !== duration) {\n      frag.duration = duration;\n    }\n  } else if (fragTo.sn > fragFrom.sn) {\n    const contiguous = fragFrom.cc === fragTo.cc;\n    if (contiguous && fragFrom.minEndPTS) {\n      fragTo.start = fragFrom.start + (fragFrom.minEndPTS - fragFrom.start);\n    } else {\n      fragTo.start = fragFrom.start + fragFrom.duration;\n    }\n  } else {\n    fragTo.start = Math.max(fragFrom.start - fragTo.duration, 0);\n  }\n}\nfunction updateFragPTSDTS(details, frag, startPTS, endPTS, startDTS, endDTS) {\n  const parsedMediaDuration = endPTS - startPTS;\n  if (parsedMediaDuration <= 0) {\n    logger.warn(\"Fragment should have a positive duration\", frag);\n    endPTS = startPTS + frag.duration;\n    endDTS = startDTS + frag.duration;\n  }\n  let maxStartPTS = startPTS;\n  let minEndPTS = endPTS;\n  const fragStartPts = frag.startPTS;\n  const fragEndPts = frag.endPTS;\n  if (isFiniteNumber(fragStartPts)) {\n    const deltaPTS = Math.abs(fragStartPts - startPTS);\n    if (!isFiniteNumber(frag.deltaPTS)) {\n      frag.deltaPTS = deltaPTS;\n    } else {\n      frag.deltaPTS = Math.max(deltaPTS, frag.deltaPTS);\n    }\n    maxStartPTS = Math.max(startPTS, fragStartPts);\n    startPTS = Math.min(startPTS, fragStartPts);\n    startDTS = Math.min(startDTS, frag.startDTS);\n    minEndPTS = Math.min(endPTS, fragEndPts);\n    endPTS = Math.max(endPTS, fragEndPts);\n    endDTS = Math.max(endDTS, frag.endDTS);\n  }\n  const drift = startPTS - frag.start;\n  if (frag.start !== 0) {\n    frag.start = startPTS;\n  }\n  frag.duration = endPTS - frag.start;\n  frag.startPTS = startPTS;\n  frag.maxStartPTS = maxStartPTS;\n  frag.startDTS = startDTS;\n  frag.endPTS = endPTS;\n  frag.minEndPTS = minEndPTS;\n  frag.endDTS = endDTS;\n  const sn = frag.sn;\n  if (!details || sn < details.startSN || sn > details.endSN) {\n    return 0;\n  }\n  let i2;\n  const fragIdx = sn - details.startSN;\n  const fragments = details.fragments;\n  fragments[fragIdx] = frag;\n  for (i2 = fragIdx; i2 > 0; i2--) {\n    updateFromToPTS(fragments[i2], fragments[i2 - 1]);\n  }\n  for (i2 = fragIdx; i2 < fragments.length - 1; i2++) {\n    updateFromToPTS(fragments[i2], fragments[i2 + 1]);\n  }\n  if (details.fragmentHint) {\n    updateFromToPTS(fragments[fragments.length - 1], details.fragmentHint);\n  }\n  details.PTSKnown = details.alignedSliding = true;\n  return drift;\n}\nfunction mergeDetails(oldDetails, newDetails) {\n  let currentInitSegment = null;\n  const oldFragments = oldDetails.fragments;\n  for (let i2 = oldFragments.length - 1; i2 >= 0; i2--) {\n    const oldInit = oldFragments[i2].initSegment;\n    if (oldInit) {\n      currentInitSegment = oldInit;\n      break;\n    }\n  }\n  if (oldDetails.fragmentHint) {\n    delete oldDetails.fragmentHint.endPTS;\n  }\n  let PTSFrag;\n  mapFragmentIntersection(oldDetails, newDetails, (oldFrag, newFrag, newFragIndex, newFragments2) => {\n    if (newDetails.skippedSegments) {\n      if (newFrag.cc !== oldFrag.cc) {\n        const ccOffset = oldFrag.cc - newFrag.cc;\n        for (let i2 = newFragIndex; i2 < newFragments2.length; i2++) {\n          newFragments2[i2].cc += ccOffset;\n        }\n      }\n    }\n    if (isFiniteNumber(oldFrag.startPTS) && isFiniteNumber(oldFrag.endPTS)) {\n      newFrag.start = newFrag.startPTS = oldFrag.startPTS;\n      newFrag.startDTS = oldFrag.startDTS;\n      newFrag.maxStartPTS = oldFrag.maxStartPTS;\n      newFrag.endPTS = oldFrag.endPTS;\n      newFrag.endDTS = oldFrag.endDTS;\n      newFrag.minEndPTS = oldFrag.minEndPTS;\n      newFrag.duration = oldFrag.endPTS - oldFrag.startPTS;\n      if (newFrag.duration) {\n        PTSFrag = newFrag;\n      }\n      newDetails.PTSKnown = newDetails.alignedSliding = true;\n    }\n    newFrag.elementaryStreams = oldFrag.elementaryStreams;\n    newFrag.loader = oldFrag.loader;\n    newFrag.stats = oldFrag.stats;\n    if (oldFrag.initSegment) {\n      newFrag.initSegment = oldFrag.initSegment;\n      currentInitSegment = oldFrag.initSegment;\n    }\n  });\n  const newFragments = newDetails.fragments;\n  if (currentInitSegment) {\n    const fragmentsToCheck = newDetails.fragmentHint ? newFragments.concat(newDetails.fragmentHint) : newFragments;\n    fragmentsToCheck.forEach((frag) => {\n      var _currentInitSegment;\n      if (frag && (!frag.initSegment || frag.initSegment.relurl === ((_currentInitSegment = currentInitSegment) == null ? void 0 : _currentInitSegment.relurl))) {\n        frag.initSegment = currentInitSegment;\n      }\n    });\n  }\n  if (newDetails.skippedSegments) {\n    newDetails.deltaUpdateFailed = newFragments.some((frag) => !frag);\n    if (newDetails.deltaUpdateFailed) {\n      logger.warn(\"[level-helper] Previous playlist missing segments skipped in delta playlist\");\n      for (let i2 = newDetails.skippedSegments; i2--; ) {\n        newFragments.shift();\n      }\n      newDetails.startSN = newFragments[0].sn;\n    } else {\n      if (newDetails.canSkipDateRanges) {\n        newDetails.dateRanges = mergeDateRanges(oldDetails.dateRanges, newDetails.dateRanges, newDetails.recentlyRemovedDateranges);\n      }\n    }\n    newDetails.startCC = newDetails.fragments[0].cc;\n    newDetails.endCC = newFragments[newFragments.length - 1].cc;\n  }\n  mapPartIntersection(oldDetails.partList, newDetails.partList, (oldPart, newPart) => {\n    newPart.elementaryStreams = oldPart.elementaryStreams;\n    newPart.stats = oldPart.stats;\n  });\n  if (PTSFrag) {\n    updateFragPTSDTS(newDetails, PTSFrag, PTSFrag.startPTS, PTSFrag.endPTS, PTSFrag.startDTS, PTSFrag.endDTS);\n  } else {\n    adjustSliding(oldDetails, newDetails);\n  }\n  if (newFragments.length) {\n    newDetails.totalduration = newDetails.edge - newFragments[0].start;\n  }\n  newDetails.driftStartTime = oldDetails.driftStartTime;\n  newDetails.driftStart = oldDetails.driftStart;\n  const advancedDateTime = newDetails.advancedDateTime;\n  if (newDetails.advanced && advancedDateTime) {\n    const edge = newDetails.edge;\n    if (!newDetails.driftStart) {\n      newDetails.driftStartTime = advancedDateTime;\n      newDetails.driftStart = edge;\n    }\n    newDetails.driftEndTime = advancedDateTime;\n    newDetails.driftEnd = edge;\n  } else {\n    newDetails.driftEndTime = oldDetails.driftEndTime;\n    newDetails.driftEnd = oldDetails.driftEnd;\n    newDetails.advancedDateTime = oldDetails.advancedDateTime;\n  }\n}\nfunction mergeDateRanges(oldDateRanges, deltaDateRanges, recentlyRemovedDateranges) {\n  const dateRanges = _extends({}, oldDateRanges);\n  if (recentlyRemovedDateranges) {\n    recentlyRemovedDateranges.forEach((id) => {\n      delete dateRanges[id];\n    });\n  }\n  Object.keys(deltaDateRanges).forEach((id) => {\n    const dateRange = new DateRange(deltaDateRanges[id].attr, dateRanges[id]);\n    if (dateRange.isValid) {\n      dateRanges[id] = dateRange;\n    } else {\n      logger.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: \"${JSON.stringify(deltaDateRanges[id].attr)}\"`);\n    }\n  });\n  return dateRanges;\n}\nfunction mapPartIntersection(oldParts, newParts, intersectionFn) {\n  if (oldParts && newParts) {\n    let delta = 0;\n    for (let i2 = 0, len = oldParts.length; i2 <= len; i2++) {\n      const oldPart = oldParts[i2];\n      const newPart = newParts[i2 + delta];\n      if (oldPart && newPart && oldPart.index === newPart.index && oldPart.fragment.sn === newPart.fragment.sn) {\n        intersectionFn(oldPart, newPart);\n      } else {\n        delta--;\n      }\n    }\n  }\n}\nfunction mapFragmentIntersection(oldDetails, newDetails, intersectionFn) {\n  const skippedSegments = newDetails.skippedSegments;\n  const start = Math.max(oldDetails.startSN, newDetails.startSN) - newDetails.startSN;\n  const end = (oldDetails.fragmentHint ? 1 : 0) + (skippedSegments ? newDetails.endSN : Math.min(oldDetails.endSN, newDetails.endSN)) - newDetails.startSN;\n  const delta = newDetails.startSN - oldDetails.startSN;\n  const newFrags = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments;\n  const oldFrags = oldDetails.fragmentHint ? oldDetails.fragments.concat(oldDetails.fragmentHint) : oldDetails.fragments;\n  for (let i2 = start; i2 <= end; i2++) {\n    const oldFrag = oldFrags[delta + i2];\n    let newFrag = newFrags[i2];\n    if (skippedSegments && !newFrag && i2 < skippedSegments) {\n      newFrag = newDetails.fragments[i2] = oldFrag;\n    }\n    if (oldFrag && newFrag) {\n      intersectionFn(oldFrag, newFrag, i2, newFrags);\n    }\n  }\n}\nfunction adjustSliding(oldDetails, newDetails) {\n  const delta = newDetails.startSN + newDetails.skippedSegments - oldDetails.startSN;\n  const oldFragments = oldDetails.fragments;\n  if (delta < 0 || delta >= oldFragments.length) {\n    return;\n  }\n  addSliding(newDetails, oldFragments[delta].start);\n}\nfunction addSliding(details, start) {\n  if (start) {\n    const fragments = details.fragments;\n    for (let i2 = details.skippedSegments; i2 < fragments.length; i2++) {\n      fragments[i2].start += start;\n    }\n    if (details.fragmentHint) {\n      details.fragmentHint.start += start;\n    }\n  }\n}\nfunction computeReloadInterval(newDetails, distanceToLiveEdgeMs = Infinity) {\n  let reloadInterval = 1e3 * newDetails.targetduration;\n  if (newDetails.updated) {\n    const fragments = newDetails.fragments;\n    const liveEdgeMaxTargetDurations = 4;\n    if (fragments.length && reloadInterval * liveEdgeMaxTargetDurations > distanceToLiveEdgeMs) {\n      const lastSegmentDuration = fragments[fragments.length - 1].duration * 1e3;\n      if (lastSegmentDuration < reloadInterval) {\n        reloadInterval = lastSegmentDuration;\n      }\n    }\n  } else {\n    reloadInterval /= 2;\n  }\n  return Math.round(reloadInterval);\n}\nfunction getFragmentWithSN(level, sn, fragCurrent) {\n  if (!(level != null && level.details)) {\n    return null;\n  }\n  const levelDetails = level.details;\n  let fragment = levelDetails.fragments[sn - levelDetails.startSN];\n  if (fragment) {\n    return fragment;\n  }\n  fragment = levelDetails.fragmentHint;\n  if (fragment && fragment.sn === sn) {\n    return fragment;\n  }\n  if (sn < levelDetails.startSN && fragCurrent && fragCurrent.sn === sn) {\n    return fragCurrent;\n  }\n  return null;\n}\nfunction getPartWith(level, sn, partIndex) {\n  var _level$details;\n  if (!(level != null && level.details)) {\n    return null;\n  }\n  return findPart((_level$details = level.details) == null ? void 0 : _level$details.partList, sn, partIndex);\n}\nfunction findPart(partList, sn, partIndex) {\n  if (partList) {\n    for (let i2 = partList.length; i2--; ) {\n      const part = partList[i2];\n      if (part.index === partIndex && part.fragment.sn === sn) {\n        return part;\n      }\n    }\n  }\n  return null;\n}\nfunction reassignFragmentLevelIndexes(levels) {\n  levels.forEach((level, index) => {\n    const {\n      details\n    } = level;\n    if (details != null && details.fragments) {\n      details.fragments.forEach((fragment) => {\n        fragment.level = index;\n      });\n    }\n  });\n}\nfunction isTimeoutError(error) {\n  switch (error.details) {\n    case ErrorDetails.FRAG_LOAD_TIMEOUT:\n    case ErrorDetails.KEY_LOAD_TIMEOUT:\n    case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n    case ErrorDetails.MANIFEST_LOAD_TIMEOUT:\n      return true;\n  }\n  return false;\n}\nfunction getRetryConfig(loadPolicy, error) {\n  const isTimeout = isTimeoutError(error);\n  return loadPolicy.default[`${isTimeout ? \"timeout\" : \"error\"}Retry`];\n}\nfunction getRetryDelay(retryConfig, retryCount) {\n  const backoffFactor = retryConfig.backoff === \"linear\" ? 1 : Math.pow(2, retryCount);\n  return Math.min(backoffFactor * retryConfig.retryDelayMs, retryConfig.maxRetryDelayMs);\n}\nfunction getLoaderConfigWithoutReties(loderConfig) {\n  return _objectSpread2(_objectSpread2({}, loderConfig), {\n    errorRetry: null,\n    timeoutRetry: null\n  });\n}\nfunction shouldRetry(retryConfig, retryCount, isTimeout, loaderResponse) {\n  if (!retryConfig) {\n    return false;\n  }\n  const httpStatus = loaderResponse == null ? void 0 : loaderResponse.code;\n  const retry = retryCount < retryConfig.maxNumRetry && (retryForHttpStatus(httpStatus) || !!isTimeout);\n  return retryConfig.shouldRetry ? retryConfig.shouldRetry(retryConfig, retryCount, isTimeout, loaderResponse, retry) : retry;\n}\nfunction retryForHttpStatus(httpStatus) {\n  return httpStatus === 0 && navigator.onLine === false || !!httpStatus && (httpStatus < 400 || httpStatus > 499);\n}\nvar BinarySearch = {\n  /**\n   * Searches for an item in an array which matches a certain condition.\n   * This requires the condition to only match one item in the array,\n   * and for the array to be ordered.\n   *\n   * @param list The array to search.\n   * @param comparisonFn\n   *      Called and provided a candidate item as the first argument.\n   *      Should return:\n   *          > -1 if the item should be located at a lower index than the provided item.\n   *          > 1 if the item should be located at a higher index than the provided item.\n   *          > 0 if the item is the item you're looking for.\n   *\n   * @returns the object if found, otherwise returns null\n   */\n  search: function(list, comparisonFn) {\n    let minIndex = 0;\n    let maxIndex = list.length - 1;\n    let currentIndex = null;\n    let currentElement = null;\n    while (minIndex <= maxIndex) {\n      currentIndex = (minIndex + maxIndex) / 2 | 0;\n      currentElement = list[currentIndex];\n      const comparisonResult = comparisonFn(currentElement);\n      if (comparisonResult > 0) {\n        minIndex = currentIndex + 1;\n      } else if (comparisonResult < 0) {\n        maxIndex = currentIndex - 1;\n      } else {\n        return currentElement;\n      }\n    }\n    return null;\n  }\n};\nfunction findFragmentByPDT(fragments, PDTValue, maxFragLookUpTolerance) {\n  if (PDTValue === null || !Array.isArray(fragments) || !fragments.length || !isFiniteNumber(PDTValue)) {\n    return null;\n  }\n  const startPDT = fragments[0].programDateTime;\n  if (PDTValue < (startPDT || 0)) {\n    return null;\n  }\n  const endPDT = fragments[fragments.length - 1].endProgramDateTime;\n  if (PDTValue >= (endPDT || 0)) {\n    return null;\n  }\n  maxFragLookUpTolerance = maxFragLookUpTolerance || 0;\n  for (let seg = 0; seg < fragments.length; ++seg) {\n    const frag = fragments[seg];\n    if (pdtWithinToleranceTest(PDTValue, maxFragLookUpTolerance, frag)) {\n      return frag;\n    }\n  }\n  return null;\n}\nfunction findFragmentByPTS(fragPrevious, fragments, bufferEnd = 0, maxFragLookUpTolerance = 0, nextFragLookupTolerance = 5e-3) {\n  let fragNext = null;\n  if (fragPrevious) {\n    fragNext = fragments[fragPrevious.sn - fragments[0].sn + 1] || null;\n    const bufferEdgeError = fragPrevious.endDTS - bufferEnd;\n    if (bufferEdgeError > 0 && bufferEdgeError < 15e-7) {\n      bufferEnd += 15e-7;\n    }\n  } else if (bufferEnd === 0 && fragments[0].start === 0) {\n    fragNext = fragments[0];\n  }\n  if (fragNext && ((!fragPrevious || fragPrevious.level === fragNext.level) && fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, fragNext) === 0 || fragmentWithinFastStartSwitch(fragNext, fragPrevious, Math.min(nextFragLookupTolerance, maxFragLookUpTolerance)))) {\n    return fragNext;\n  }\n  const foundFragment = BinarySearch.search(fragments, fragmentWithinToleranceTest.bind(null, bufferEnd, maxFragLookUpTolerance));\n  if (foundFragment && (foundFragment !== fragPrevious || !fragNext)) {\n    return foundFragment;\n  }\n  return fragNext;\n}\nfunction fragmentWithinFastStartSwitch(fragNext, fragPrevious, nextFragLookupTolerance) {\n  if (fragPrevious && fragPrevious.start === 0 && fragPrevious.level < fragNext.level && (fragPrevious.endPTS || 0) > 0) {\n    const firstDuration = fragPrevious.tagList.reduce((duration, tag) => {\n      if (tag[0] === \"INF\") {\n        duration += parseFloat(tag[1]);\n      }\n      return duration;\n    }, nextFragLookupTolerance);\n    return fragNext.start <= firstDuration;\n  }\n  return false;\n}\nfunction fragmentWithinToleranceTest(bufferEnd = 0, maxFragLookUpTolerance = 0, candidate) {\n  if (candidate.start <= bufferEnd && candidate.start + candidate.duration > bufferEnd) {\n    return 0;\n  }\n  const candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0));\n  if (candidate.start + candidate.duration - candidateLookupTolerance <= bufferEnd) {\n    return 1;\n  } else if (candidate.start - candidateLookupTolerance > bufferEnd && candidate.start) {\n    return -1;\n  }\n  return 0;\n}\nfunction pdtWithinToleranceTest(pdtBufferEnd, maxFragLookUpTolerance, candidate) {\n  const candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0)) * 1e3;\n  const endProgramDateTime = candidate.endProgramDateTime || 0;\n  return endProgramDateTime - candidateLookupTolerance > pdtBufferEnd;\n}\nfunction findFragWithCC(fragments, cc) {\n  return BinarySearch.search(fragments, (candidate) => {\n    if (candidate.cc < cc) {\n      return 1;\n    } else if (candidate.cc > cc) {\n      return -1;\n    } else {\n      return 0;\n    }\n  });\n}\nvar NetworkErrorAction = {\n  DoNothing: 0,\n  SendEndCallback: 1,\n  SendAlternateToPenaltyBox: 2,\n  RemoveAlternatePermanently: 3,\n  InsertDiscontinuity: 4,\n  RetryRequest: 5\n};\nvar ErrorActionFlags = {\n  None: 0,\n  MoveAllAlternatesMatchingHost: 1,\n  MoveAllAlternatesMatchingHDCP: 2,\n  SwitchToSDR: 4\n};\nvar ErrorController = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.playlistError = 0;\n    this.penalizedRenditions = {};\n    this.log = void 0;\n    this.warn = void 0;\n    this.error = void 0;\n    this.hls = hls;\n    this.log = logger.log.bind(logger, `[info]:`);\n    this.warn = logger.warn.bind(logger, `[warning]:`);\n    this.error = logger.error.bind(logger, `[error]:`);\n    this.registerListeners();\n  }\n  registerListeners() {\n    const hls = this.hls;\n    hls.on(Events.ERROR, this.onError, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n  }\n  unregisterListeners() {\n    const hls = this.hls;\n    if (!hls) {\n      return;\n    }\n    hls.off(Events.ERROR, this.onError, this);\n    hls.off(Events.ERROR, this.onErrorOut, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.hls = null;\n    this.penalizedRenditions = {};\n  }\n  startLoad(startPosition) {\n  }\n  stopLoad() {\n    this.playlistError = 0;\n  }\n  getVariantLevelIndex(frag) {\n    return (frag == null ? void 0 : frag.type) === PlaylistLevelType.MAIN ? frag.level : this.hls.loadLevel;\n  }\n  onManifestLoading() {\n    this.playlistError = 0;\n    this.penalizedRenditions = {};\n  }\n  onLevelUpdated() {\n    this.playlistError = 0;\n  }\n  onError(event, data) {\n    var _data$frag, _data$level;\n    if (data.fatal) {\n      return;\n    }\n    const hls = this.hls;\n    const context = data.context;\n    switch (data.details) {\n      case ErrorDetails.FRAG_LOAD_ERROR:\n      case ErrorDetails.FRAG_LOAD_TIMEOUT:\n      case ErrorDetails.KEY_LOAD_ERROR:\n      case ErrorDetails.KEY_LOAD_TIMEOUT:\n        data.errorAction = this.getFragRetryOrSwitchAction(data);\n        return;\n      case ErrorDetails.FRAG_PARSING_ERROR:\n        if ((_data$frag = data.frag) != null && _data$frag.gap) {\n          data.errorAction = {\n            action: NetworkErrorAction.DoNothing,\n            flags: ErrorActionFlags.None\n          };\n          return;\n        }\n      // falls through\n      case ErrorDetails.FRAG_GAP:\n      case ErrorDetails.FRAG_DECRYPT_ERROR: {\n        data.errorAction = this.getFragRetryOrSwitchAction(data);\n        data.errorAction.action = NetworkErrorAction.SendAlternateToPenaltyBox;\n        return;\n      }\n      case ErrorDetails.LEVEL_EMPTY_ERROR:\n      case ErrorDetails.LEVEL_PARSING_ERROR:\n        {\n          var _data$context, _data$context$levelDe;\n          const levelIndex = data.parent === PlaylistLevelType.MAIN ? data.level : hls.loadLevel;\n          if (data.details === ErrorDetails.LEVEL_EMPTY_ERROR && !!((_data$context = data.context) != null && (_data$context$levelDe = _data$context.levelDetails) != null && _data$context$levelDe.live)) {\n            data.errorAction = this.getPlaylistRetryOrSwitchAction(data, levelIndex);\n          } else {\n            data.levelRetry = false;\n            data.errorAction = this.getLevelSwitchAction(data, levelIndex);\n          }\n        }\n        return;\n      case ErrorDetails.LEVEL_LOAD_ERROR:\n      case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n        if (typeof (context == null ? void 0 : context.level) === \"number\") {\n          data.errorAction = this.getPlaylistRetryOrSwitchAction(data, context.level);\n        }\n        return;\n      case ErrorDetails.AUDIO_TRACK_LOAD_ERROR:\n      case ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:\n      case ErrorDetails.SUBTITLE_LOAD_ERROR:\n      case ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT:\n        if (context) {\n          const level = hls.levels[hls.loadLevel];\n          if (level && (context.type === PlaylistContextType.AUDIO_TRACK && level.hasAudioGroup(context.groupId) || context.type === PlaylistContextType.SUBTITLE_TRACK && level.hasSubtitleGroup(context.groupId))) {\n            data.errorAction = this.getPlaylistRetryOrSwitchAction(data, hls.loadLevel);\n            data.errorAction.action = NetworkErrorAction.SendAlternateToPenaltyBox;\n            data.errorAction.flags = ErrorActionFlags.MoveAllAlternatesMatchingHost;\n            return;\n          }\n        }\n        return;\n      case ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:\n        {\n          const level = hls.levels[hls.loadLevel];\n          const restrictedHdcpLevel = level == null ? void 0 : level.attrs[\"HDCP-LEVEL\"];\n          if (restrictedHdcpLevel) {\n            data.errorAction = {\n              action: NetworkErrorAction.SendAlternateToPenaltyBox,\n              flags: ErrorActionFlags.MoveAllAlternatesMatchingHDCP,\n              hdcpLevel: restrictedHdcpLevel\n            };\n          } else {\n            this.keySystemError(data);\n          }\n        }\n        return;\n      case ErrorDetails.BUFFER_ADD_CODEC_ERROR:\n      case ErrorDetails.REMUX_ALLOC_ERROR:\n      case ErrorDetails.BUFFER_APPEND_ERROR:\n        data.errorAction = this.getLevelSwitchAction(data, (_data$level = data.level) != null ? _data$level : hls.loadLevel);\n        return;\n      case ErrorDetails.INTERNAL_EXCEPTION:\n      case ErrorDetails.BUFFER_APPENDING_ERROR:\n      case ErrorDetails.BUFFER_FULL_ERROR:\n      case ErrorDetails.LEVEL_SWITCH_ERROR:\n      case ErrorDetails.BUFFER_STALLED_ERROR:\n      case ErrorDetails.BUFFER_SEEK_OVER_HOLE:\n      case ErrorDetails.BUFFER_NUDGE_ON_STALL:\n        data.errorAction = {\n          action: NetworkErrorAction.DoNothing,\n          flags: ErrorActionFlags.None\n        };\n        return;\n    }\n    if (data.type === ErrorTypes.KEY_SYSTEM_ERROR) {\n      this.keySystemError(data);\n    }\n  }\n  keySystemError(data) {\n    const levelIndex = this.getVariantLevelIndex(data.frag);\n    data.levelRetry = false;\n    data.errorAction = this.getLevelSwitchAction(data, levelIndex);\n  }\n  getPlaylistRetryOrSwitchAction(data, levelIndex) {\n    const hls = this.hls;\n    const retryConfig = getRetryConfig(hls.config.playlistLoadPolicy, data);\n    const retryCount = this.playlistError++;\n    const retry = shouldRetry(retryConfig, retryCount, isTimeoutError(data), data.response);\n    if (retry) {\n      return {\n        action: NetworkErrorAction.RetryRequest,\n        flags: ErrorActionFlags.None,\n        retryConfig,\n        retryCount\n      };\n    }\n    const errorAction = this.getLevelSwitchAction(data, levelIndex);\n    if (retryConfig) {\n      errorAction.retryConfig = retryConfig;\n      errorAction.retryCount = retryCount;\n    }\n    return errorAction;\n  }\n  getFragRetryOrSwitchAction(data) {\n    const hls = this.hls;\n    const variantLevelIndex = this.getVariantLevelIndex(data.frag);\n    const level = hls.levels[variantLevelIndex];\n    const {\n      fragLoadPolicy,\n      keyLoadPolicy\n    } = hls.config;\n    const retryConfig = getRetryConfig(data.details.startsWith(\"key\") ? keyLoadPolicy : fragLoadPolicy, data);\n    const fragmentErrors = hls.levels.reduce((acc, level2) => acc + level2.fragmentError, 0);\n    if (level) {\n      if (data.details !== ErrorDetails.FRAG_GAP) {\n        level.fragmentError++;\n      }\n      const retry = shouldRetry(retryConfig, fragmentErrors, isTimeoutError(data), data.response);\n      if (retry) {\n        return {\n          action: NetworkErrorAction.RetryRequest,\n          flags: ErrorActionFlags.None,\n          retryConfig,\n          retryCount: fragmentErrors\n        };\n      }\n    }\n    const errorAction = this.getLevelSwitchAction(data, variantLevelIndex);\n    if (retryConfig) {\n      errorAction.retryConfig = retryConfig;\n      errorAction.retryCount = fragmentErrors;\n    }\n    return errorAction;\n  }\n  getLevelSwitchAction(data, levelIndex) {\n    const hls = this.hls;\n    if (levelIndex === null || levelIndex === void 0) {\n      levelIndex = hls.loadLevel;\n    }\n    const level = this.hls.levels[levelIndex];\n    if (level) {\n      var _data$frag2, _data$context2;\n      const errorDetails = data.details;\n      level.loadError++;\n      if (errorDetails === ErrorDetails.BUFFER_APPEND_ERROR) {\n        level.fragmentError++;\n      }\n      let nextLevel = -1;\n      const {\n        levels,\n        loadLevel,\n        minAutoLevel,\n        maxAutoLevel\n      } = hls;\n      if (!hls.autoLevelEnabled) {\n        hls.loadLevel = -1;\n      }\n      const fragErrorType = (_data$frag2 = data.frag) == null ? void 0 : _data$frag2.type;\n      const isAudioCodecError = fragErrorType === PlaylistLevelType.AUDIO && errorDetails === ErrorDetails.FRAG_PARSING_ERROR || data.sourceBufferName === \"audio\" && (errorDetails === ErrorDetails.BUFFER_ADD_CODEC_ERROR || errorDetails === ErrorDetails.BUFFER_APPEND_ERROR);\n      const findAudioCodecAlternate = isAudioCodecError && levels.some(({\n        audioCodec\n      }) => level.audioCodec !== audioCodec);\n      const isVideoCodecError = data.sourceBufferName === \"video\" && (errorDetails === ErrorDetails.BUFFER_ADD_CODEC_ERROR || errorDetails === ErrorDetails.BUFFER_APPEND_ERROR);\n      const findVideoCodecAlternate = isVideoCodecError && levels.some(({\n        codecSet,\n        audioCodec\n      }) => level.codecSet !== codecSet && level.audioCodec === audioCodec);\n      const {\n        type: playlistErrorType,\n        groupId: playlistErrorGroupId\n      } = (_data$context2 = data.context) != null ? _data$context2 : {};\n      for (let i2 = levels.length; i2--; ) {\n        const candidate = (i2 + loadLevel) % levels.length;\n        if (candidate !== loadLevel && candidate >= minAutoLevel && candidate <= maxAutoLevel && levels[candidate].loadError === 0) {\n          var _level$audioGroups, _level$subtitleGroups;\n          const levelCandidate = levels[candidate];\n          if (errorDetails === ErrorDetails.FRAG_GAP && fragErrorType === PlaylistLevelType.MAIN && data.frag) {\n            const levelDetails = levels[candidate].details;\n            if (levelDetails) {\n              const fragCandidate = findFragmentByPTS(data.frag, levelDetails.fragments, data.frag.start);\n              if (fragCandidate != null && fragCandidate.gap) {\n                continue;\n              }\n            }\n          } else if (playlistErrorType === PlaylistContextType.AUDIO_TRACK && levelCandidate.hasAudioGroup(playlistErrorGroupId) || playlistErrorType === PlaylistContextType.SUBTITLE_TRACK && levelCandidate.hasSubtitleGroup(playlistErrorGroupId)) {\n            continue;\n          } else if (fragErrorType === PlaylistLevelType.AUDIO && (_level$audioGroups = level.audioGroups) != null && _level$audioGroups.some((groupId) => levelCandidate.hasAudioGroup(groupId)) || fragErrorType === PlaylistLevelType.SUBTITLE && (_level$subtitleGroups = level.subtitleGroups) != null && _level$subtitleGroups.some((groupId) => levelCandidate.hasSubtitleGroup(groupId)) || findAudioCodecAlternate && level.audioCodec === levelCandidate.audioCodec || !findAudioCodecAlternate && level.audioCodec !== levelCandidate.audioCodec || findVideoCodecAlternate && level.codecSet === levelCandidate.codecSet) {\n            continue;\n          }\n          nextLevel = candidate;\n          break;\n        }\n      }\n      if (nextLevel > -1 && hls.loadLevel !== nextLevel) {\n        data.levelRetry = true;\n        this.playlistError = 0;\n        return {\n          action: NetworkErrorAction.SendAlternateToPenaltyBox,\n          flags: ErrorActionFlags.None,\n          nextAutoLevel: nextLevel\n        };\n      }\n    }\n    return {\n      action: NetworkErrorAction.SendAlternateToPenaltyBox,\n      flags: ErrorActionFlags.MoveAllAlternatesMatchingHost\n    };\n  }\n  onErrorOut(event, data) {\n    var _data$errorAction;\n    switch ((_data$errorAction = data.errorAction) == null ? void 0 : _data$errorAction.action) {\n      case NetworkErrorAction.DoNothing:\n        break;\n      case NetworkErrorAction.SendAlternateToPenaltyBox:\n        this.sendAlternateToPenaltyBox(data);\n        if (!data.errorAction.resolved && data.details !== ErrorDetails.FRAG_GAP) {\n          data.fatal = true;\n        } else if (/MediaSource readyState: ended/.test(data.error.message)) {\n          this.warn(`MediaSource ended after \"${data.sourceBufferName}\" sourceBuffer append error. Attempting to recover from media error.`);\n          this.hls.recoverMediaError();\n        }\n        break;\n      case NetworkErrorAction.RetryRequest:\n        break;\n    }\n    if (data.fatal) {\n      this.hls.stopLoad();\n      return;\n    }\n  }\n  sendAlternateToPenaltyBox(data) {\n    const hls = this.hls;\n    const errorAction = data.errorAction;\n    if (!errorAction) {\n      return;\n    }\n    const {\n      flags,\n      hdcpLevel,\n      nextAutoLevel\n    } = errorAction;\n    switch (flags) {\n      case ErrorActionFlags.None:\n        this.switchLevel(data, nextAutoLevel);\n        break;\n      case ErrorActionFlags.MoveAllAlternatesMatchingHDCP:\n        if (hdcpLevel) {\n          hls.maxHdcpLevel = HdcpLevels[HdcpLevels.indexOf(hdcpLevel) - 1];\n          errorAction.resolved = true;\n        }\n        this.warn(`Restricting playback to HDCP-LEVEL of \"${hls.maxHdcpLevel}\" or lower`);\n        break;\n    }\n    if (!errorAction.resolved) {\n      this.switchLevel(data, nextAutoLevel);\n    }\n  }\n  switchLevel(data, levelIndex) {\n    if (levelIndex !== void 0 && data.errorAction) {\n      this.warn(`switching to level ${levelIndex} after ${data.details}`);\n      this.hls.nextAutoLevel = levelIndex;\n      data.errorAction.resolved = true;\n      this.hls.nextLoadLevel = this.hls.nextAutoLevel;\n    }\n  }\n};\nvar BasePlaylistController = class {\n  constructor(hls, logPrefix) {\n    this.hls = void 0;\n    this.timer = -1;\n    this.requestScheduled = -1;\n    this.canLoad = false;\n    this.log = void 0;\n    this.warn = void 0;\n    this.log = logger.log.bind(logger, `${logPrefix}:`);\n    this.warn = logger.warn.bind(logger, `${logPrefix}:`);\n    this.hls = hls;\n  }\n  destroy() {\n    this.clearTimer();\n    this.hls = this.log = this.warn = null;\n  }\n  clearTimer() {\n    if (this.timer !== -1) {\n      self.clearTimeout(this.timer);\n      this.timer = -1;\n    }\n  }\n  startLoad() {\n    this.canLoad = true;\n    this.requestScheduled = -1;\n    this.loadPlaylist();\n  }\n  stopLoad() {\n    this.canLoad = false;\n    this.clearTimer();\n  }\n  switchParams(playlistUri, previous, current) {\n    const renditionReports = previous == null ? void 0 : previous.renditionReports;\n    if (renditionReports) {\n      let foundIndex = -1;\n      for (let i2 = 0; i2 < renditionReports.length; i2++) {\n        const attr = renditionReports[i2];\n        let uri;\n        try {\n          uri = new self.URL(attr.URI, previous.url).href;\n        } catch (error) {\n          logger.warn(`Could not construct new URL for Rendition Report: ${error}`);\n          uri = attr.URI || \"\";\n        }\n        if (uri === playlistUri) {\n          foundIndex = i2;\n          break;\n        } else if (uri === playlistUri.substring(0, uri.length)) {\n          foundIndex = i2;\n        }\n      }\n      if (foundIndex !== -1) {\n        const attr = renditionReports[foundIndex];\n        const msn = parseInt(attr[\"LAST-MSN\"]) || (previous == null ? void 0 : previous.lastPartSn);\n        let part = parseInt(attr[\"LAST-PART\"]) || (previous == null ? void 0 : previous.lastPartIndex);\n        if (this.hls.config.lowLatencyMode) {\n          const currentGoal = Math.min(previous.age - previous.partTarget, previous.targetduration);\n          if (part >= 0 && currentGoal > previous.partTarget) {\n            part += 1;\n          }\n        }\n        const skip = current && getSkipValue(current);\n        return new HlsUrlParameters(msn, part >= 0 ? part : void 0, skip);\n      }\n    }\n  }\n  loadPlaylist(hlsUrlParameters) {\n    if (this.requestScheduled === -1) {\n      this.requestScheduled = self.performance.now();\n    }\n  }\n  shouldLoadPlaylist(playlist) {\n    return this.canLoad && !!playlist && !!playlist.url && (!playlist.details || playlist.details.live);\n  }\n  shouldReloadPlaylist(playlist) {\n    return this.timer === -1 && this.requestScheduled === -1 && this.shouldLoadPlaylist(playlist);\n  }\n  playlistLoaded(index, data, previousDetails) {\n    const {\n      details,\n      stats\n    } = data;\n    const now2 = self.performance.now();\n    const elapsed = stats.loading.first ? Math.max(0, now2 - stats.loading.first) : 0;\n    details.advancedDateTime = Date.now() - elapsed;\n    if (details.live || previousDetails != null && previousDetails.live) {\n      details.reloaded(previousDetails);\n      if (previousDetails) {\n        this.log(`live playlist ${index} ${details.advanced ? \"REFRESHED \" + details.lastPartSn + \"-\" + details.lastPartIndex : details.updated ? \"UPDATED\" : \"MISSED\"}`);\n      }\n      if (previousDetails && details.fragments.length > 0) {\n        mergeDetails(previousDetails, details);\n      }\n      if (!this.canLoad || !details.live) {\n        return;\n      }\n      let deliveryDirectives;\n      let msn = void 0;\n      let part = void 0;\n      if (details.canBlockReload && details.endSN && details.advanced) {\n        const lowLatencyMode = this.hls.config.lowLatencyMode;\n        const lastPartSn = details.lastPartSn;\n        const endSn = details.endSN;\n        const lastPartIndex = details.lastPartIndex;\n        const hasParts = lastPartIndex !== -1;\n        const lastPart = lastPartSn === endSn;\n        const nextSnStartIndex = lowLatencyMode ? 0 : lastPartIndex;\n        if (hasParts) {\n          msn = lastPart ? endSn + 1 : lastPartSn;\n          part = lastPart ? nextSnStartIndex : lastPartIndex + 1;\n        } else {\n          msn = endSn + 1;\n        }\n        const lastAdvanced = details.age;\n        const cdnAge = lastAdvanced + details.ageHeader;\n        let currentGoal = Math.min(cdnAge - details.partTarget, details.targetduration * 1.5);\n        if (currentGoal > 0) {\n          if (previousDetails && currentGoal > previousDetails.tuneInGoal) {\n            this.warn(`CDN Tune-in goal increased from: ${previousDetails.tuneInGoal} to: ${currentGoal} with playlist age: ${details.age}`);\n            currentGoal = 0;\n          } else {\n            const segments = Math.floor(currentGoal / details.targetduration);\n            msn += segments;\n            if (part !== void 0) {\n              const parts = Math.round(currentGoal % details.targetduration / details.partTarget);\n              part += parts;\n            }\n            this.log(`CDN Tune-in age: ${details.ageHeader}s last advanced ${lastAdvanced.toFixed(2)}s goal: ${currentGoal} skip sn ${segments} to part ${part}`);\n          }\n          details.tuneInGoal = currentGoal;\n        }\n        deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n        if (lowLatencyMode || !lastPart) {\n          this.loadPlaylist(deliveryDirectives);\n          return;\n        }\n      } else if (details.canBlockReload || details.canSkipUntil) {\n        deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n      }\n      const bufferInfo = this.hls.mainForwardBufferInfo;\n      const position = bufferInfo ? bufferInfo.end - bufferInfo.len : 0;\n      const distanceToLiveEdgeMs = (details.edge - position) * 1e3;\n      const reloadInterval = computeReloadInterval(details, distanceToLiveEdgeMs);\n      if (details.updated && now2 > this.requestScheduled + reloadInterval) {\n        this.requestScheduled = stats.loading.start;\n      }\n      if (msn !== void 0 && details.canBlockReload) {\n        this.requestScheduled = stats.loading.first + reloadInterval - (details.partTarget * 1e3 || 1e3);\n      } else if (this.requestScheduled === -1 || this.requestScheduled + reloadInterval < now2) {\n        this.requestScheduled = now2;\n      } else if (this.requestScheduled - now2 <= 0) {\n        this.requestScheduled += reloadInterval;\n      }\n      let estimatedTimeUntilUpdate = this.requestScheduled - now2;\n      estimatedTimeUntilUpdate = Math.max(0, estimatedTimeUntilUpdate);\n      this.log(`reload live playlist ${index} in ${Math.round(estimatedTimeUntilUpdate)} ms`);\n      this.timer = self.setTimeout(() => this.loadPlaylist(deliveryDirectives), estimatedTimeUntilUpdate);\n    } else {\n      this.clearTimer();\n    }\n  }\n  getDeliveryDirectives(details, previousDeliveryDirectives, msn, part) {\n    let skip = getSkipValue(details);\n    if (previousDeliveryDirectives != null && previousDeliveryDirectives.skip && details.deltaUpdateFailed) {\n      msn = previousDeliveryDirectives.msn;\n      part = previousDeliveryDirectives.part;\n      skip = HlsSkip.No;\n    }\n    return new HlsUrlParameters(msn, part, skip);\n  }\n  checkRetry(errorEvent) {\n    const errorDetails = errorEvent.details;\n    const isTimeout = isTimeoutError(errorEvent);\n    const errorAction = errorEvent.errorAction;\n    const {\n      action,\n      retryCount = 0,\n      retryConfig\n    } = errorAction || {};\n    const retry = !!errorAction && !!retryConfig && (action === NetworkErrorAction.RetryRequest || !errorAction.resolved && action === NetworkErrorAction.SendAlternateToPenaltyBox);\n    if (retry) {\n      var _errorEvent$context;\n      this.requestScheduled = -1;\n      if (retryCount >= retryConfig.maxNumRetry) {\n        return false;\n      }\n      if (isTimeout && (_errorEvent$context = errorEvent.context) != null && _errorEvent$context.deliveryDirectives) {\n        this.warn(`Retrying playlist loading ${retryCount + 1}/${retryConfig.maxNumRetry} after \"${errorDetails}\" without delivery-directives`);\n        this.loadPlaylist();\n      } else {\n        const delay2 = getRetryDelay(retryConfig, retryCount);\n        this.timer = self.setTimeout(() => this.loadPlaylist(), delay2);\n        this.warn(`Retrying playlist loading ${retryCount + 1}/${retryConfig.maxNumRetry} after \"${errorDetails}\" in ${delay2}ms`);\n      }\n      errorEvent.levelRetry = true;\n      errorAction.resolved = true;\n    }\n    return retry;\n  }\n};\nvar EWMA = class {\n  //  About half of the estimated value will be from the last |halfLife| samples by weight.\n  constructor(halfLife, estimate = 0, weight = 0) {\n    this.halfLife = void 0;\n    this.alpha_ = void 0;\n    this.estimate_ = void 0;\n    this.totalWeight_ = void 0;\n    this.halfLife = halfLife;\n    this.alpha_ = halfLife ? Math.exp(Math.log(0.5) / halfLife) : 0;\n    this.estimate_ = estimate;\n    this.totalWeight_ = weight;\n  }\n  sample(weight, value) {\n    const adjAlpha = Math.pow(this.alpha_, weight);\n    this.estimate_ = value * (1 - adjAlpha) + adjAlpha * this.estimate_;\n    this.totalWeight_ += weight;\n  }\n  getTotalWeight() {\n    return this.totalWeight_;\n  }\n  getEstimate() {\n    if (this.alpha_) {\n      const zeroFactor = 1 - Math.pow(this.alpha_, this.totalWeight_);\n      if (zeroFactor) {\n        return this.estimate_ / zeroFactor;\n      }\n    }\n    return this.estimate_;\n  }\n};\nvar EwmaBandWidthEstimator = class {\n  constructor(slow, fast, defaultEstimate, defaultTTFB = 100) {\n    this.defaultEstimate_ = void 0;\n    this.minWeight_ = void 0;\n    this.minDelayMs_ = void 0;\n    this.slow_ = void 0;\n    this.fast_ = void 0;\n    this.defaultTTFB_ = void 0;\n    this.ttfb_ = void 0;\n    this.defaultEstimate_ = defaultEstimate;\n    this.minWeight_ = 1e-3;\n    this.minDelayMs_ = 50;\n    this.slow_ = new EWMA(slow);\n    this.fast_ = new EWMA(fast);\n    this.defaultTTFB_ = defaultTTFB;\n    this.ttfb_ = new EWMA(slow);\n  }\n  update(slow, fast) {\n    const {\n      slow_,\n      fast_,\n      ttfb_\n    } = this;\n    if (slow_.halfLife !== slow) {\n      this.slow_ = new EWMA(slow, slow_.getEstimate(), slow_.getTotalWeight());\n    }\n    if (fast_.halfLife !== fast) {\n      this.fast_ = new EWMA(fast, fast_.getEstimate(), fast_.getTotalWeight());\n    }\n    if (ttfb_.halfLife !== slow) {\n      this.ttfb_ = new EWMA(slow, ttfb_.getEstimate(), ttfb_.getTotalWeight());\n    }\n  }\n  sample(durationMs, numBytes) {\n    durationMs = Math.max(durationMs, this.minDelayMs_);\n    const numBits = 8 * numBytes;\n    const durationS = durationMs / 1e3;\n    const bandwidthInBps = numBits / durationS;\n    this.fast_.sample(durationS, bandwidthInBps);\n    this.slow_.sample(durationS, bandwidthInBps);\n  }\n  sampleTTFB(ttfb) {\n    const seconds = ttfb / 1e3;\n    const weight = Math.sqrt(2) * Math.exp(-Math.pow(seconds, 2) / 2);\n    this.ttfb_.sample(weight, Math.max(ttfb, 5));\n  }\n  canEstimate() {\n    return this.fast_.getTotalWeight() >= this.minWeight_;\n  }\n  getEstimate() {\n    if (this.canEstimate()) {\n      return Math.min(this.fast_.getEstimate(), this.slow_.getEstimate());\n    } else {\n      return this.defaultEstimate_;\n    }\n  }\n  getEstimateTTFB() {\n    if (this.ttfb_.getTotalWeight() >= this.minWeight_) {\n      return this.ttfb_.getEstimate();\n    } else {\n      return this.defaultTTFB_;\n    }\n  }\n  destroy() {\n  }\n};\nvar SUPPORTED_INFO_DEFAULT = {\n  supported: true,\n  configurations: [],\n  decodingInfoResults: [{\n    supported: true,\n    powerEfficient: true,\n    smooth: true\n  }]\n};\nvar SUPPORTED_INFO_CACHE = {};\nfunction requiresMediaCapabilitiesDecodingInfo(level, audioTracksByGroup, currentVideoRange, currentFrameRate, currentBw, audioPreference) {\n  const audioGroups = level.audioCodec ? level.audioGroups : null;\n  const audioCodecPreference = audioPreference == null ? void 0 : audioPreference.audioCodec;\n  const channelsPreference = audioPreference == null ? void 0 : audioPreference.channels;\n  const maxChannels = channelsPreference ? parseInt(channelsPreference) : audioCodecPreference ? Infinity : 2;\n  let audioChannels = null;\n  if (audioGroups != null && audioGroups.length) {\n    try {\n      if (audioGroups.length === 1 && audioGroups[0]) {\n        audioChannels = audioTracksByGroup.groups[audioGroups[0]].channels;\n      } else {\n        audioChannels = audioGroups.reduce((acc, groupId) => {\n          if (groupId) {\n            const audioTrackGroup = audioTracksByGroup.groups[groupId];\n            if (!audioTrackGroup) {\n              throw new Error(`Audio track group ${groupId} not found`);\n            }\n            Object.keys(audioTrackGroup.channels).forEach((key) => {\n              acc[key] = (acc[key] || 0) + audioTrackGroup.channels[key];\n            });\n          }\n          return acc;\n        }, {\n          2: 0\n        });\n      }\n    } catch (error) {\n      return true;\n    }\n  }\n  return level.videoCodec !== void 0 && (level.width > 1920 && level.height > 1088 || level.height > 1920 && level.width > 1088 || level.frameRate > Math.max(currentFrameRate, 30) || level.videoRange !== \"SDR\" && level.videoRange !== currentVideoRange || level.bitrate > Math.max(currentBw, 8e6)) || !!audioChannels && isFiniteNumber(maxChannels) && Object.keys(audioChannels).some((channels) => parseInt(channels) > maxChannels);\n}\nfunction getMediaDecodingInfoPromise(level, audioTracksByGroup, mediaCapabilities) {\n  const videoCodecs = level.videoCodec;\n  const audioCodecs = level.audioCodec;\n  if (!videoCodecs || !audioCodecs || !mediaCapabilities) {\n    return Promise.resolve(SUPPORTED_INFO_DEFAULT);\n  }\n  const baseVideoConfiguration = {\n    width: level.width,\n    height: level.height,\n    bitrate: Math.ceil(Math.max(level.bitrate * 0.9, level.averageBitrate)),\n    // Assume a framerate of 30fps since MediaCapabilities will not accept Level default of 0.\n    framerate: level.frameRate || 30\n  };\n  const videoRange = level.videoRange;\n  if (videoRange !== \"SDR\") {\n    baseVideoConfiguration.transferFunction = videoRange.toLowerCase();\n  }\n  const configurations = videoCodecs.split(\",\").map((videoCodec) => ({\n    type: \"media-source\",\n    video: _objectSpread2(_objectSpread2({}, baseVideoConfiguration), {}, {\n      contentType: mimeTypeForCodec(videoCodec, \"video\")\n    })\n  }));\n  if (audioCodecs && level.audioGroups) {\n    level.audioGroups.forEach((audioGroupId) => {\n      var _audioTracksByGroup$g;\n      if (!audioGroupId) {\n        return;\n      }\n      (_audioTracksByGroup$g = audioTracksByGroup.groups[audioGroupId]) == null ? void 0 : _audioTracksByGroup$g.tracks.forEach((audioTrack) => {\n        if (audioTrack.groupId === audioGroupId) {\n          const channels = audioTrack.channels || \"\";\n          const channelsNumber = parseFloat(channels);\n          if (isFiniteNumber(channelsNumber) && channelsNumber > 2) {\n            configurations.push.apply(configurations, audioCodecs.split(\",\").map((audioCodec) => ({\n              type: \"media-source\",\n              audio: {\n                contentType: mimeTypeForCodec(audioCodec, \"audio\"),\n                channels: \"\" + channelsNumber\n                // spatialRendering:\n                //   audioCodec === 'ec-3' && channels.indexOf('JOC'),\n              }\n            })));\n          }\n        }\n      });\n    });\n  }\n  return Promise.all(configurations.map((configuration) => {\n    const decodingInfoKey = getMediaDecodingInfoKey(configuration);\n    return SUPPORTED_INFO_CACHE[decodingInfoKey] || (SUPPORTED_INFO_CACHE[decodingInfoKey] = mediaCapabilities.decodingInfo(configuration));\n  })).then((decodingInfoResults) => ({\n    supported: !decodingInfoResults.some((info) => !info.supported),\n    configurations,\n    decodingInfoResults\n  })).catch((error) => ({\n    supported: false,\n    configurations,\n    decodingInfoResults: [],\n    error\n  }));\n}\nfunction getMediaDecodingInfoKey(config) {\n  const {\n    audio,\n    video\n  } = config;\n  const mediaConfig = video || audio;\n  if (mediaConfig) {\n    const codec = mediaConfig.contentType.split('\"')[1];\n    if (video) {\n      return `r${video.height}x${video.width}f${Math.ceil(video.framerate)}${video.transferFunction || \"sd\"}_${codec}_${Math.ceil(video.bitrate / 1e5)}`;\n    }\n    if (audio) {\n      return `c${audio.channels}${audio.spatialRendering ? \"s\" : \"n\"}_${codec}`;\n    }\n  }\n  return \"\";\n}\nfunction isHdrSupported() {\n  if (typeof matchMedia === \"function\") {\n    const mediaQueryList = matchMedia(\"(dynamic-range: high)\");\n    const badQuery = matchMedia(\"bad query\");\n    if (mediaQueryList.media !== badQuery.media) {\n      return mediaQueryList.matches === true;\n    }\n  }\n  return false;\n}\nfunction getVideoSelectionOptions(currentVideoRange, videoPreference) {\n  let preferHDR = false;\n  let allowedVideoRanges = [];\n  if (currentVideoRange) {\n    preferHDR = currentVideoRange !== \"SDR\";\n    allowedVideoRanges = [currentVideoRange];\n  }\n  if (videoPreference) {\n    allowedVideoRanges = videoPreference.allowedVideoRanges || VideoRangeValues.slice(0);\n    preferHDR = videoPreference.preferHDR !== void 0 ? videoPreference.preferHDR : isHdrSupported();\n    if (preferHDR) {\n      allowedVideoRanges = allowedVideoRanges.filter((range) => range !== \"SDR\");\n    } else {\n      allowedVideoRanges = [\"SDR\"];\n    }\n  }\n  return {\n    preferHDR,\n    allowedVideoRanges\n  };\n}\nfunction getStartCodecTier(codecTiers, currentVideoRange, currentBw, audioPreference, videoPreference) {\n  const codecSets = Object.keys(codecTiers);\n  const channelsPreference = audioPreference == null ? void 0 : audioPreference.channels;\n  const audioCodecPreference = audioPreference == null ? void 0 : audioPreference.audioCodec;\n  const preferStereo = channelsPreference && parseInt(channelsPreference) === 2;\n  let hasStereo = true;\n  let hasCurrentVideoRange = false;\n  let minHeight = Infinity;\n  let minFramerate = Infinity;\n  let minBitrate = Infinity;\n  let selectedScore = 0;\n  let videoRanges = [];\n  const {\n    preferHDR,\n    allowedVideoRanges\n  } = getVideoSelectionOptions(currentVideoRange, videoPreference);\n  for (let i2 = codecSets.length; i2--; ) {\n    const tier = codecTiers[codecSets[i2]];\n    hasStereo = tier.channels[2] > 0;\n    minHeight = Math.min(minHeight, tier.minHeight);\n    minFramerate = Math.min(minFramerate, tier.minFramerate);\n    minBitrate = Math.min(minBitrate, tier.minBitrate);\n    const matchingVideoRanges = allowedVideoRanges.filter((range) => tier.videoRanges[range] > 0);\n    if (matchingVideoRanges.length > 0) {\n      hasCurrentVideoRange = true;\n      videoRanges = matchingVideoRanges;\n    }\n  }\n  minHeight = isFiniteNumber(minHeight) ? minHeight : 0;\n  minFramerate = isFiniteNumber(minFramerate) ? minFramerate : 0;\n  const maxHeight = Math.max(1080, minHeight);\n  const maxFramerate = Math.max(30, minFramerate);\n  minBitrate = isFiniteNumber(minBitrate) ? minBitrate : currentBw;\n  currentBw = Math.max(minBitrate, currentBw);\n  if (!hasCurrentVideoRange) {\n    currentVideoRange = void 0;\n    videoRanges = [];\n  }\n  const codecSet = codecSets.reduce((selected, candidate) => {\n    const candidateTier = codecTiers[candidate];\n    if (candidate === selected) {\n      return selected;\n    }\n    if (candidateTier.minBitrate > currentBw) {\n      logStartCodecCandidateIgnored(candidate, `min bitrate of ${candidateTier.minBitrate} > current estimate of ${currentBw}`);\n      return selected;\n    }\n    if (!candidateTier.hasDefaultAudio) {\n      logStartCodecCandidateIgnored(candidate, `no renditions with default or auto-select sound found`);\n      return selected;\n    }\n    if (audioCodecPreference && candidate.indexOf(audioCodecPreference.substring(0, 4)) % 5 !== 0) {\n      logStartCodecCandidateIgnored(candidate, `audio codec preference \"${audioCodecPreference}\" not found`);\n      return selected;\n    }\n    if (channelsPreference && !preferStereo) {\n      if (!candidateTier.channels[channelsPreference]) {\n        logStartCodecCandidateIgnored(candidate, `no renditions with ${channelsPreference} channel sound found (channels options: ${Object.keys(candidateTier.channels)})`);\n        return selected;\n      }\n    } else if ((!audioCodecPreference || preferStereo) && hasStereo && candidateTier.channels[\"2\"] === 0) {\n      logStartCodecCandidateIgnored(candidate, `no renditions with stereo sound found`);\n      return selected;\n    }\n    if (candidateTier.minHeight > maxHeight) {\n      logStartCodecCandidateIgnored(candidate, `min resolution of ${candidateTier.minHeight} > maximum of ${maxHeight}`);\n      return selected;\n    }\n    if (candidateTier.minFramerate > maxFramerate) {\n      logStartCodecCandidateIgnored(candidate, `min framerate of ${candidateTier.minFramerate} > maximum of ${maxFramerate}`);\n      return selected;\n    }\n    if (!videoRanges.some((range) => candidateTier.videoRanges[range] > 0)) {\n      logStartCodecCandidateIgnored(candidate, `no variants with VIDEO-RANGE of ${JSON.stringify(videoRanges)} found`);\n      return selected;\n    }\n    if (candidateTier.maxScore < selectedScore) {\n      logStartCodecCandidateIgnored(candidate, `max score of ${candidateTier.maxScore} < selected max of ${selectedScore}`);\n      return selected;\n    }\n    if (selected && (codecsSetSelectionPreferenceValue(candidate) >= codecsSetSelectionPreferenceValue(selected) || candidateTier.fragmentError > codecTiers[selected].fragmentError)) {\n      return selected;\n    }\n    selectedScore = candidateTier.maxScore;\n    return candidate;\n  }, void 0);\n  return {\n    codecSet,\n    videoRanges,\n    preferHDR,\n    minFramerate,\n    minBitrate\n  };\n}\nfunction logStartCodecCandidateIgnored(codeSet, reason) {\n  logger.log(`[abr] start candidates with \"${codeSet}\" ignored because ${reason}`);\n}\nfunction getAudioTracksByGroup(allAudioTracks) {\n  return allAudioTracks.reduce((audioTracksByGroup, track) => {\n    let trackGroup = audioTracksByGroup.groups[track.groupId];\n    if (!trackGroup) {\n      trackGroup = audioTracksByGroup.groups[track.groupId] = {\n        tracks: [],\n        channels: {\n          2: 0\n        },\n        hasDefault: false,\n        hasAutoSelect: false\n      };\n    }\n    trackGroup.tracks.push(track);\n    const channelsKey = track.channels || \"2\";\n    trackGroup.channels[channelsKey] = (trackGroup.channels[channelsKey] || 0) + 1;\n    trackGroup.hasDefault = trackGroup.hasDefault || track.default;\n    trackGroup.hasAutoSelect = trackGroup.hasAutoSelect || track.autoselect;\n    if (trackGroup.hasDefault) {\n      audioTracksByGroup.hasDefaultAudio = true;\n    }\n    if (trackGroup.hasAutoSelect) {\n      audioTracksByGroup.hasAutoSelectAudio = true;\n    }\n    return audioTracksByGroup;\n  }, {\n    hasDefaultAudio: false,\n    hasAutoSelectAudio: false,\n    groups: {}\n  });\n}\nfunction getCodecTiers(levels, audioTracksByGroup, minAutoLevel, maxAutoLevel) {\n  return levels.slice(minAutoLevel, maxAutoLevel + 1).reduce((tiers, level) => {\n    if (!level.codecSet) {\n      return tiers;\n    }\n    const audioGroups = level.audioGroups;\n    let tier = tiers[level.codecSet];\n    if (!tier) {\n      tiers[level.codecSet] = tier = {\n        minBitrate: Infinity,\n        minHeight: Infinity,\n        minFramerate: Infinity,\n        maxScore: 0,\n        videoRanges: {\n          SDR: 0\n        },\n        channels: {\n          \"2\": 0\n        },\n        hasDefaultAudio: !audioGroups,\n        fragmentError: 0\n      };\n    }\n    tier.minBitrate = Math.min(tier.minBitrate, level.bitrate);\n    const lesserWidthOrHeight = Math.min(level.height, level.width);\n    tier.minHeight = Math.min(tier.minHeight, lesserWidthOrHeight);\n    tier.minFramerate = Math.min(tier.minFramerate, level.frameRate);\n    tier.maxScore = Math.max(tier.maxScore, level.score);\n    tier.fragmentError += level.fragmentError;\n    tier.videoRanges[level.videoRange] = (tier.videoRanges[level.videoRange] || 0) + 1;\n    if (audioGroups) {\n      audioGroups.forEach((audioGroupId) => {\n        if (!audioGroupId) {\n          return;\n        }\n        const audioGroup = audioTracksByGroup.groups[audioGroupId];\n        if (!audioGroup) {\n          return;\n        }\n        tier.hasDefaultAudio = tier.hasDefaultAudio || audioTracksByGroup.hasDefaultAudio ? audioGroup.hasDefault : audioGroup.hasAutoSelect || !audioTracksByGroup.hasDefaultAudio && !audioTracksByGroup.hasAutoSelectAudio;\n        Object.keys(audioGroup.channels).forEach((channels) => {\n          tier.channels[channels] = (tier.channels[channels] || 0) + audioGroup.channels[channels];\n        });\n      });\n    }\n    return tiers;\n  }, {});\n}\nfunction findMatchingOption(option, tracks, matchPredicate) {\n  if (\"attrs\" in option) {\n    const index = tracks.indexOf(option);\n    if (index !== -1) {\n      return index;\n    }\n  }\n  for (let i2 = 0; i2 < tracks.length; i2++) {\n    const track = tracks[i2];\n    if (matchesOption(option, track, matchPredicate)) {\n      return i2;\n    }\n  }\n  return -1;\n}\nfunction matchesOption(option, track, matchPredicate) {\n  const {\n    groupId,\n    name,\n    lang,\n    assocLang,\n    default: isDefault\n  } = option;\n  const forced = option.forced;\n  return (groupId === void 0 || track.groupId === groupId) && (name === void 0 || track.name === name) && (lang === void 0 || track.lang === lang) && (lang === void 0 || track.assocLang === assocLang) && (isDefault === void 0 || track.default === isDefault) && (forced === void 0 || track.forced === forced) && (!(\"characteristics\" in option) || characteristicsMatch(option.characteristics || \"\", track.characteristics)) && (matchPredicate === void 0 || matchPredicate(option, track));\n}\nfunction characteristicsMatch(characteristicsA, characteristicsB = \"\") {\n  const arrA = characteristicsA.split(\",\");\n  const arrB = characteristicsB.split(\",\");\n  return arrA.length === arrB.length && !arrA.some((el) => arrB.indexOf(el) === -1);\n}\nfunction audioMatchPredicate(option, track) {\n  const {\n    audioCodec,\n    channels\n  } = option;\n  return (audioCodec === void 0 || (track.audioCodec || \"\").substring(0, 4) === audioCodec.substring(0, 4)) && (channels === void 0 || channels === (track.channels || \"2\"));\n}\nfunction findClosestLevelWithAudioGroup(option, levels, allAudioTracks, searchIndex, matchPredicate) {\n  const currentLevel = levels[searchIndex];\n  const variants = levels.reduce((variantMap, level, index) => {\n    const uri = level.uri;\n    const renditions2 = variantMap[uri] || (variantMap[uri] = []);\n    renditions2.push(index);\n    return variantMap;\n  }, {});\n  const renditions = variants[currentLevel.uri];\n  if (renditions.length > 1) {\n    searchIndex = Math.max.apply(Math, renditions);\n  }\n  const currentVideoRange = currentLevel.videoRange;\n  const currentFrameRate = currentLevel.frameRate;\n  const currentVideoCodec = currentLevel.codecSet.substring(0, 4);\n  const matchingVideo = searchDownAndUpList(levels, searchIndex, (level) => {\n    if (level.videoRange !== currentVideoRange || level.frameRate !== currentFrameRate || level.codecSet.substring(0, 4) !== currentVideoCodec) {\n      return false;\n    }\n    const audioGroups = level.audioGroups;\n    const tracks = allAudioTracks.filter((track) => !audioGroups || audioGroups.indexOf(track.groupId) !== -1);\n    return findMatchingOption(option, tracks, matchPredicate) > -1;\n  });\n  if (matchingVideo > -1) {\n    return matchingVideo;\n  }\n  return searchDownAndUpList(levels, searchIndex, (level) => {\n    const audioGroups = level.audioGroups;\n    const tracks = allAudioTracks.filter((track) => !audioGroups || audioGroups.indexOf(track.groupId) !== -1);\n    return findMatchingOption(option, tracks, matchPredicate) > -1;\n  });\n}\nfunction searchDownAndUpList(arr, searchIndex, predicate) {\n  for (let i2 = searchIndex; i2 > -1; i2--) {\n    if (predicate(arr[i2])) {\n      return i2;\n    }\n  }\n  for (let i2 = searchIndex + 1; i2 < arr.length; i2++) {\n    if (predicate(arr[i2])) {\n      return i2;\n    }\n  }\n  return -1;\n}\nvar AbrController = class {\n  constructor(_hls) {\n    this.hls = void 0;\n    this.lastLevelLoadSec = 0;\n    this.lastLoadedFragLevel = -1;\n    this.firstSelection = -1;\n    this._nextAutoLevel = -1;\n    this.nextAutoLevelKey = \"\";\n    this.audioTracksByGroup = null;\n    this.codecTiers = null;\n    this.timer = -1;\n    this.fragCurrent = null;\n    this.partCurrent = null;\n    this.bitrateTestDelay = 0;\n    this.bwEstimator = void 0;\n    this._abandonRulesCheck = () => {\n      const {\n        fragCurrent: frag,\n        partCurrent: part,\n        hls\n      } = this;\n      const {\n        autoLevelEnabled,\n        media\n      } = hls;\n      if (!frag || !media) {\n        return;\n      }\n      const now2 = performance.now();\n      const stats = part ? part.stats : frag.stats;\n      const duration = part ? part.duration : frag.duration;\n      const timeLoading = now2 - stats.loading.start;\n      const minAutoLevel = hls.minAutoLevel;\n      if (stats.aborted || stats.loaded && stats.loaded === stats.total || frag.level <= minAutoLevel) {\n        this.clearTimer();\n        this._nextAutoLevel = -1;\n        return;\n      }\n      if (!autoLevelEnabled || media.paused || !media.playbackRate || !media.readyState) {\n        return;\n      }\n      const bufferInfo = hls.mainForwardBufferInfo;\n      if (bufferInfo === null) {\n        return;\n      }\n      const ttfbEstimate = this.bwEstimator.getEstimateTTFB();\n      const playbackRate = Math.abs(media.playbackRate);\n      if (timeLoading <= Math.max(ttfbEstimate, 1e3 * (duration / (playbackRate * 2)))) {\n        return;\n      }\n      const bufferStarvationDelay = bufferInfo.len / playbackRate;\n      const ttfb = stats.loading.first ? stats.loading.first - stats.loading.start : -1;\n      const loadedFirstByte = stats.loaded && ttfb > -1;\n      const bwEstimate = this.getBwEstimate();\n      const levels = hls.levels;\n      const level = levels[frag.level];\n      const expectedLen = stats.total || Math.max(stats.loaded, Math.round(duration * level.averageBitrate / 8));\n      let timeStreaming = loadedFirstByte ? timeLoading - ttfb : timeLoading;\n      if (timeStreaming < 1 && loadedFirstByte) {\n        timeStreaming = Math.min(timeLoading, stats.loaded * 8 / bwEstimate);\n      }\n      const loadRate = loadedFirstByte ? stats.loaded * 1e3 / timeStreaming : 0;\n      const fragLoadedDelay = loadRate ? (expectedLen - stats.loaded) / loadRate : expectedLen * 8 / bwEstimate + ttfbEstimate / 1e3;\n      if (fragLoadedDelay <= bufferStarvationDelay) {\n        return;\n      }\n      const bwe = loadRate ? loadRate * 8 : bwEstimate;\n      let fragLevelNextLoadedDelay = Number.POSITIVE_INFINITY;\n      let nextLoadLevel;\n      for (nextLoadLevel = frag.level - 1; nextLoadLevel > minAutoLevel; nextLoadLevel--) {\n        const levelNextBitrate = levels[nextLoadLevel].maxBitrate;\n        fragLevelNextLoadedDelay = this.getTimeToLoadFrag(ttfbEstimate / 1e3, bwe, duration * levelNextBitrate, !levels[nextLoadLevel].details);\n        if (fragLevelNextLoadedDelay < bufferStarvationDelay) {\n          break;\n        }\n      }\n      if (fragLevelNextLoadedDelay >= fragLoadedDelay) {\n        return;\n      }\n      if (fragLevelNextLoadedDelay > duration * 10) {\n        return;\n      }\n      hls.nextLoadLevel = hls.nextAutoLevel = nextLoadLevel;\n      if (loadedFirstByte) {\n        this.bwEstimator.sample(timeLoading - Math.min(ttfbEstimate, ttfb), stats.loaded);\n      } else {\n        this.bwEstimator.sampleTTFB(timeLoading);\n      }\n      const nextLoadLevelBitrate = levels[nextLoadLevel].maxBitrate;\n      if (this.getBwEstimate() * this.hls.config.abrBandWidthUpFactor > nextLoadLevelBitrate) {\n        this.resetEstimator(nextLoadLevelBitrate);\n      }\n      this.clearTimer();\n      logger.warn(`[abr] Fragment ${frag.sn}${part ? \" part \" + part.index : \"\"} of level ${frag.level} is loading too slowly;\n      Time to underbuffer: ${bufferStarvationDelay.toFixed(3)} s\n      Estimated load time for current fragment: ${fragLoadedDelay.toFixed(3)} s\n      Estimated load time for down switch fragment: ${fragLevelNextLoadedDelay.toFixed(3)} s\n      TTFB estimate: ${ttfb | 0} ms\n      Current BW estimate: ${isFiniteNumber(bwEstimate) ? bwEstimate | 0 : \"Unknown\"} bps\n      New BW estimate: ${this.getBwEstimate() | 0} bps\n      Switching to level ${nextLoadLevel} @ ${nextLoadLevelBitrate | 0} bps`);\n      hls.trigger(Events.FRAG_LOAD_EMERGENCY_ABORTED, {\n        frag,\n        part,\n        stats\n      });\n    };\n    this.hls = _hls;\n    this.bwEstimator = this.initEstimator();\n    this.registerListeners();\n  }\n  resetEstimator(abrEwmaDefaultEstimate) {\n    if (abrEwmaDefaultEstimate) {\n      logger.log(`setting initial bwe to ${abrEwmaDefaultEstimate}`);\n      this.hls.config.abrEwmaDefaultEstimate = abrEwmaDefaultEstimate;\n    }\n    this.firstSelection = -1;\n    this.bwEstimator = this.initEstimator();\n  }\n  initEstimator() {\n    const config = this.hls.config;\n    return new EwmaBandWidthEstimator(config.abrEwmaSlowVoD, config.abrEwmaFastVoD, config.abrEwmaDefaultEstimate);\n  }\n  registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.FRAG_LOADING, this.onFragLoading, this);\n    hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.on(Events.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n  unregisterListeners() {\n    const {\n      hls\n    } = this;\n    if (!hls) {\n      return;\n    }\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.FRAG_LOADING, this.onFragLoading, this);\n    hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.off(Events.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.clearTimer();\n    this.hls = this._abandonRulesCheck = null;\n    this.fragCurrent = this.partCurrent = null;\n  }\n  onManifestLoading(event, data) {\n    this.lastLoadedFragLevel = -1;\n    this.firstSelection = -1;\n    this.lastLevelLoadSec = 0;\n    this.fragCurrent = this.partCurrent = null;\n    this.onLevelsUpdated();\n    this.clearTimer();\n  }\n  onLevelsUpdated() {\n    if (this.lastLoadedFragLevel > -1 && this.fragCurrent) {\n      this.lastLoadedFragLevel = this.fragCurrent.level;\n    }\n    this._nextAutoLevel = -1;\n    this.onMaxAutoLevelUpdated();\n    this.codecTiers = null;\n    this.audioTracksByGroup = null;\n  }\n  onMaxAutoLevelUpdated() {\n    this.firstSelection = -1;\n    this.nextAutoLevelKey = \"\";\n  }\n  onFragLoading(event, data) {\n    const frag = data.frag;\n    if (this.ignoreFragment(frag)) {\n      return;\n    }\n    if (!frag.bitrateTest) {\n      var _data$part;\n      this.fragCurrent = frag;\n      this.partCurrent = (_data$part = data.part) != null ? _data$part : null;\n    }\n    this.clearTimer();\n    this.timer = self.setInterval(this._abandonRulesCheck, 100);\n  }\n  onLevelSwitching(event, data) {\n    this.clearTimer();\n  }\n  onError(event, data) {\n    if (data.fatal) {\n      return;\n    }\n    switch (data.details) {\n      case ErrorDetails.BUFFER_ADD_CODEC_ERROR:\n      case ErrorDetails.BUFFER_APPEND_ERROR:\n        this.lastLoadedFragLevel = -1;\n        this.firstSelection = -1;\n        break;\n      case ErrorDetails.FRAG_LOAD_TIMEOUT: {\n        const frag = data.frag;\n        const {\n          fragCurrent,\n          partCurrent: part\n        } = this;\n        if (frag && fragCurrent && frag.sn === fragCurrent.sn && frag.level === fragCurrent.level) {\n          const now2 = performance.now();\n          const stats = part ? part.stats : frag.stats;\n          const timeLoading = now2 - stats.loading.start;\n          const ttfb = stats.loading.first ? stats.loading.first - stats.loading.start : -1;\n          const loadedFirstByte = stats.loaded && ttfb > -1;\n          if (loadedFirstByte) {\n            const ttfbEstimate = this.bwEstimator.getEstimateTTFB();\n            this.bwEstimator.sample(timeLoading - Math.min(ttfbEstimate, ttfb), stats.loaded);\n          } else {\n            this.bwEstimator.sampleTTFB(timeLoading);\n          }\n        }\n        break;\n      }\n    }\n  }\n  getTimeToLoadFrag(timeToFirstByteSec, bandwidth, fragSizeBits, isSwitch) {\n    const fragLoadSec = timeToFirstByteSec + fragSizeBits / bandwidth;\n    const playlistLoadSec = isSwitch ? this.lastLevelLoadSec : 0;\n    return fragLoadSec + playlistLoadSec;\n  }\n  onLevelLoaded(event, data) {\n    const config = this.hls.config;\n    const {\n      loading\n    } = data.stats;\n    const timeLoadingMs = loading.end - loading.start;\n    if (isFiniteNumber(timeLoadingMs)) {\n      this.lastLevelLoadSec = timeLoadingMs / 1e3;\n    }\n    if (data.details.live) {\n      this.bwEstimator.update(config.abrEwmaSlowLive, config.abrEwmaFastLive);\n    } else {\n      this.bwEstimator.update(config.abrEwmaSlowVoD, config.abrEwmaFastVoD);\n    }\n  }\n  onFragLoaded(event, {\n    frag,\n    part\n  }) {\n    const stats = part ? part.stats : frag.stats;\n    if (frag.type === PlaylistLevelType.MAIN) {\n      this.bwEstimator.sampleTTFB(stats.loading.first - stats.loading.start);\n    }\n    if (this.ignoreFragment(frag)) {\n      return;\n    }\n    this.clearTimer();\n    if (frag.level === this._nextAutoLevel) {\n      this._nextAutoLevel = -1;\n    }\n    this.firstSelection = -1;\n    if (this.hls.config.abrMaxWithRealBitrate) {\n      const duration = part ? part.duration : frag.duration;\n      const level = this.hls.levels[frag.level];\n      const loadedBytes = (level.loaded ? level.loaded.bytes : 0) + stats.loaded;\n      const loadedDuration = (level.loaded ? level.loaded.duration : 0) + duration;\n      level.loaded = {\n        bytes: loadedBytes,\n        duration: loadedDuration\n      };\n      level.realBitrate = Math.round(8 * loadedBytes / loadedDuration);\n    }\n    if (frag.bitrateTest) {\n      const fragBufferedData = {\n        stats,\n        frag,\n        part,\n        id: frag.type\n      };\n      this.onFragBuffered(Events.FRAG_BUFFERED, fragBufferedData);\n      frag.bitrateTest = false;\n    } else {\n      this.lastLoadedFragLevel = frag.level;\n    }\n  }\n  onFragBuffered(event, data) {\n    const {\n      frag,\n      part\n    } = data;\n    const stats = part != null && part.stats.loaded ? part.stats : frag.stats;\n    if (stats.aborted) {\n      return;\n    }\n    if (this.ignoreFragment(frag)) {\n      return;\n    }\n    const processingMs = stats.parsing.end - stats.loading.start - Math.min(stats.loading.first - stats.loading.start, this.bwEstimator.getEstimateTTFB());\n    this.bwEstimator.sample(processingMs, stats.loaded);\n    stats.bwEstimate = this.getBwEstimate();\n    if (frag.bitrateTest) {\n      this.bitrateTestDelay = processingMs / 1e3;\n    } else {\n      this.bitrateTestDelay = 0;\n    }\n  }\n  ignoreFragment(frag) {\n    return frag.type !== PlaylistLevelType.MAIN || frag.sn === \"initSegment\";\n  }\n  clearTimer() {\n    if (this.timer > -1) {\n      self.clearInterval(this.timer);\n      this.timer = -1;\n    }\n  }\n  get firstAutoLevel() {\n    const {\n      maxAutoLevel,\n      minAutoLevel\n    } = this.hls;\n    const bwEstimate = this.getBwEstimate();\n    const maxStartDelay = this.hls.config.maxStarvationDelay;\n    const abrAutoLevel = this.findBestLevel(bwEstimate, minAutoLevel, maxAutoLevel, 0, maxStartDelay, 1, 1);\n    if (abrAutoLevel > -1) {\n      return abrAutoLevel;\n    }\n    const firstLevel = this.hls.firstLevel;\n    const clamped = Math.min(Math.max(firstLevel, minAutoLevel), maxAutoLevel);\n    logger.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${firstLevel} clamped to ${clamped}`);\n    return clamped;\n  }\n  get forcedAutoLevel() {\n    if (this.nextAutoLevelKey) {\n      return -1;\n    }\n    return this._nextAutoLevel;\n  }\n  // return next auto level\n  get nextAutoLevel() {\n    const forcedAutoLevel = this.forcedAutoLevel;\n    const bwEstimator = this.bwEstimator;\n    const useEstimate = bwEstimator.canEstimate();\n    const loadedFirstFrag = this.lastLoadedFragLevel > -1;\n    if (forcedAutoLevel !== -1 && (!useEstimate || !loadedFirstFrag || this.nextAutoLevelKey === this.getAutoLevelKey())) {\n      return forcedAutoLevel;\n    }\n    const nextABRAutoLevel = useEstimate && loadedFirstFrag ? this.getNextABRAutoLevel() : this.firstAutoLevel;\n    if (forcedAutoLevel !== -1) {\n      const levels = this.hls.levels;\n      if (levels.length > Math.max(forcedAutoLevel, nextABRAutoLevel) && levels[forcedAutoLevel].loadError <= levels[nextABRAutoLevel].loadError) {\n        return forcedAutoLevel;\n      }\n    }\n    this._nextAutoLevel = nextABRAutoLevel;\n    this.nextAutoLevelKey = this.getAutoLevelKey();\n    return nextABRAutoLevel;\n  }\n  getAutoLevelKey() {\n    return `${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`;\n  }\n  getNextABRAutoLevel() {\n    const {\n      fragCurrent,\n      partCurrent,\n      hls\n    } = this;\n    const {\n      maxAutoLevel,\n      config,\n      minAutoLevel\n    } = hls;\n    const currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n    const avgbw = this.getBwEstimate();\n    const bufferStarvationDelay = this.getStarvationDelay();\n    let bwFactor = config.abrBandWidthFactor;\n    let bwUpFactor = config.abrBandWidthUpFactor;\n    if (bufferStarvationDelay) {\n      const _bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, 0, bwFactor, bwUpFactor);\n      if (_bestLevel >= 0) {\n        return _bestLevel;\n      }\n    }\n    let maxStarvationDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxStarvationDelay) : config.maxStarvationDelay;\n    if (!bufferStarvationDelay) {\n      const bitrateTestDelay = this.bitrateTestDelay;\n      if (bitrateTestDelay) {\n        const maxLoadingDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxLoadingDelay) : config.maxLoadingDelay;\n        maxStarvationDelay = maxLoadingDelay - bitrateTestDelay;\n        logger.info(`[abr] bitrate test took ${Math.round(1e3 * bitrateTestDelay)}ms, set first fragment max fetchDuration to ${Math.round(1e3 * maxStarvationDelay)} ms`);\n        bwFactor = bwUpFactor = 1;\n      }\n    }\n    const bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, maxStarvationDelay, bwFactor, bwUpFactor);\n    logger.info(`[abr] ${bufferStarvationDelay ? \"rebuffering expected\" : \"buffer is empty\"}, optimal quality level ${bestLevel}`);\n    if (bestLevel > -1) {\n      return bestLevel;\n    }\n    const minLevel = hls.levels[minAutoLevel];\n    const autoLevel = hls.levels[hls.loadLevel];\n    if ((minLevel == null ? void 0 : minLevel.bitrate) < (autoLevel == null ? void 0 : autoLevel.bitrate)) {\n      return minAutoLevel;\n    }\n    return hls.loadLevel;\n  }\n  getStarvationDelay() {\n    const hls = this.hls;\n    const media = hls.media;\n    if (!media) {\n      return Infinity;\n    }\n    const playbackRate = media && media.playbackRate !== 0 ? Math.abs(media.playbackRate) : 1;\n    const bufferInfo = hls.mainForwardBufferInfo;\n    return (bufferInfo ? bufferInfo.len : 0) / playbackRate;\n  }\n  getBwEstimate() {\n    return this.bwEstimator.canEstimate() ? this.bwEstimator.getEstimate() : this.hls.config.abrEwmaDefaultEstimate;\n  }\n  findBestLevel(currentBw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, maxStarvationDelay, bwFactor, bwUpFactor) {\n    var _level$details;\n    const maxFetchDuration = bufferStarvationDelay + maxStarvationDelay;\n    const lastLoadedFragLevel = this.lastLoadedFragLevel;\n    const selectionBaseLevel = lastLoadedFragLevel === -1 ? this.hls.firstLevel : lastLoadedFragLevel;\n    const {\n      fragCurrent,\n      partCurrent\n    } = this;\n    const {\n      levels,\n      allAudioTracks,\n      loadLevel,\n      config\n    } = this.hls;\n    if (levels.length === 1) {\n      return 0;\n    }\n    const level = levels[selectionBaseLevel];\n    const live = !!(level != null && (_level$details = level.details) != null && _level$details.live);\n    const firstSelection = loadLevel === -1 || lastLoadedFragLevel === -1;\n    let currentCodecSet;\n    let currentVideoRange = \"SDR\";\n    let currentFrameRate = (level == null ? void 0 : level.frameRate) || 0;\n    const {\n      audioPreference,\n      videoPreference\n    } = config;\n    const audioTracksByGroup = this.audioTracksByGroup || (this.audioTracksByGroup = getAudioTracksByGroup(allAudioTracks));\n    if (firstSelection) {\n      if (this.firstSelection !== -1) {\n        return this.firstSelection;\n      }\n      const codecTiers = this.codecTiers || (this.codecTiers = getCodecTiers(levels, audioTracksByGroup, minAutoLevel, maxAutoLevel));\n      const startTier = getStartCodecTier(codecTiers, currentVideoRange, currentBw, audioPreference, videoPreference);\n      const {\n        codecSet,\n        videoRanges,\n        minFramerate,\n        minBitrate,\n        preferHDR\n      } = startTier;\n      currentCodecSet = codecSet;\n      currentVideoRange = preferHDR ? videoRanges[videoRanges.length - 1] : videoRanges[0];\n      currentFrameRate = minFramerate;\n      currentBw = Math.max(currentBw, minBitrate);\n      logger.log(`[abr] picked start tier ${JSON.stringify(startTier)}`);\n    } else {\n      currentCodecSet = level == null ? void 0 : level.codecSet;\n      currentVideoRange = level == null ? void 0 : level.videoRange;\n    }\n    const currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n    const ttfbEstimateSec = this.bwEstimator.getEstimateTTFB() / 1e3;\n    const levelsSkipped = [];\n    for (let i2 = maxAutoLevel; i2 >= minAutoLevel; i2--) {\n      var _levelInfo$supportedR;\n      const levelInfo = levels[i2];\n      const upSwitch = i2 > selectionBaseLevel;\n      if (!levelInfo) {\n        continue;\n      }\n      if (config.useMediaCapabilities && !levelInfo.supportedResult && !levelInfo.supportedPromise) {\n        const mediaCapabilities = navigator.mediaCapabilities;\n        if (typeof (mediaCapabilities == null ? void 0 : mediaCapabilities.decodingInfo) === \"function\" && requiresMediaCapabilitiesDecodingInfo(levelInfo, audioTracksByGroup, currentVideoRange, currentFrameRate, currentBw, audioPreference)) {\n          levelInfo.supportedPromise = getMediaDecodingInfoPromise(levelInfo, audioTracksByGroup, mediaCapabilities);\n          levelInfo.supportedPromise.then((decodingInfo) => {\n            if (!this.hls) {\n              return;\n            }\n            levelInfo.supportedResult = decodingInfo;\n            const levels2 = this.hls.levels;\n            const index = levels2.indexOf(levelInfo);\n            if (decodingInfo.error) {\n              logger.warn(`[abr] MediaCapabilities decodingInfo error: \"${decodingInfo.error}\" for level ${index} ${JSON.stringify(decodingInfo)}`);\n            } else if (!decodingInfo.supported) {\n              logger.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${index} ${JSON.stringify(decodingInfo)}`);\n              if (index > -1 && levels2.length > 1) {\n                logger.log(`[abr] Removing unsupported level ${index}`);\n                this.hls.removeLevel(index);\n              }\n            }\n          });\n        } else {\n          levelInfo.supportedResult = SUPPORTED_INFO_DEFAULT;\n        }\n      }\n      if (currentCodecSet && levelInfo.codecSet !== currentCodecSet || currentVideoRange && levelInfo.videoRange !== currentVideoRange || upSwitch && currentFrameRate > levelInfo.frameRate || !upSwitch && currentFrameRate > 0 && currentFrameRate < levelInfo.frameRate || levelInfo.supportedResult && !((_levelInfo$supportedR = levelInfo.supportedResult.decodingInfoResults) != null && _levelInfo$supportedR[0].smooth)) {\n        levelsSkipped.push(i2);\n        continue;\n      }\n      const levelDetails = levelInfo.details;\n      const avgDuration = (partCurrent ? levelDetails == null ? void 0 : levelDetails.partTarget : levelDetails == null ? void 0 : levelDetails.averagetargetduration) || currentFragDuration;\n      let adjustedbw;\n      if (!upSwitch) {\n        adjustedbw = bwFactor * currentBw;\n      } else {\n        adjustedbw = bwUpFactor * currentBw;\n      }\n      const bitrate = currentFragDuration && bufferStarvationDelay >= currentFragDuration * 2 && maxStarvationDelay === 0 ? levels[i2].averageBitrate : levels[i2].maxBitrate;\n      const fetchDuration = this.getTimeToLoadFrag(ttfbEstimateSec, adjustedbw, bitrate * avgDuration, levelDetails === void 0);\n      const canSwitchWithinTolerance = (\n        // if adjusted bw is greater than level bitrate AND\n        adjustedbw >= bitrate && // no level change, or new level has no error history\n        (i2 === lastLoadedFragLevel || levelInfo.loadError === 0 && levelInfo.fragmentError === 0) && // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches\n        // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ...\n        // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that findBestLevel will return -1\n        (fetchDuration <= ttfbEstimateSec || !isFiniteNumber(fetchDuration) || live && !this.bitrateTestDelay || fetchDuration < maxFetchDuration)\n      );\n      if (canSwitchWithinTolerance) {\n        const forcedAutoLevel = this.forcedAutoLevel;\n        if (i2 !== loadLevel && (forcedAutoLevel === -1 || forcedAutoLevel !== loadLevel)) {\n          if (levelsSkipped.length) {\n            logger.trace(`[abr] Skipped level(s) ${levelsSkipped.join(\",\")} of ${maxAutoLevel} max with CODECS and VIDEO-RANGE:\"${levels[levelsSkipped[0]].codecs}\" ${levels[levelsSkipped[0]].videoRange}; not compatible with \"${level.codecs}\" ${currentVideoRange}`);\n          }\n          logger.info(`[abr] switch candidate:${selectionBaseLevel}->${i2} adjustedbw(${Math.round(adjustedbw)})-bitrate=${Math.round(adjustedbw - bitrate)} ttfb:${ttfbEstimateSec.toFixed(1)} avgDuration:${avgDuration.toFixed(1)} maxFetchDuration:${maxFetchDuration.toFixed(1)} fetchDuration:${fetchDuration.toFixed(1)} firstSelection:${firstSelection} codecSet:${currentCodecSet} videoRange:${currentVideoRange} hls.loadLevel:${loadLevel}`);\n        }\n        if (firstSelection) {\n          this.firstSelection = i2;\n        }\n        return i2;\n      }\n    }\n    return -1;\n  }\n  set nextAutoLevel(nextLevel) {\n    const {\n      maxAutoLevel,\n      minAutoLevel\n    } = this.hls;\n    const value = Math.min(Math.max(nextLevel, minAutoLevel), maxAutoLevel);\n    if (this._nextAutoLevel !== value) {\n      this.nextAutoLevelKey = \"\";\n      this._nextAutoLevel = value;\n    }\n  }\n};\nvar TaskLoop = class {\n  constructor() {\n    this._boundTick = void 0;\n    this._tickTimer = null;\n    this._tickInterval = null;\n    this._tickCallCount = 0;\n    this._boundTick = this.tick.bind(this);\n  }\n  destroy() {\n    this.onHandlerDestroying();\n    this.onHandlerDestroyed();\n  }\n  onHandlerDestroying() {\n    this.clearNextTick();\n    this.clearInterval();\n  }\n  onHandlerDestroyed() {\n  }\n  hasInterval() {\n    return !!this._tickInterval;\n  }\n  hasNextTick() {\n    return !!this._tickTimer;\n  }\n  /**\n   * @param millis - Interval time (ms)\n   * @eturns True when interval has been scheduled, false when already scheduled (no effect)\n   */\n  setInterval(millis) {\n    if (!this._tickInterval) {\n      this._tickCallCount = 0;\n      this._tickInterval = self.setInterval(this._boundTick, millis);\n      return true;\n    }\n    return false;\n  }\n  /**\n   * @returns True when interval was cleared, false when none was set (no effect)\n   */\n  clearInterval() {\n    if (this._tickInterval) {\n      self.clearInterval(this._tickInterval);\n      this._tickInterval = null;\n      return true;\n    }\n    return false;\n  }\n  /**\n   * @returns True when timeout was cleared, false when none was set (no effect)\n   */\n  clearNextTick() {\n    if (this._tickTimer) {\n      self.clearTimeout(this._tickTimer);\n      this._tickTimer = null;\n      return true;\n    }\n    return false;\n  }\n  /**\n   * Will call the subclass doTick implementation in this main loop tick\n   * or in the next one (via setTimeout(,0)) in case it has already been called\n   * in this tick (in case this is a re-entrant call).\n   */\n  tick() {\n    this._tickCallCount++;\n    if (this._tickCallCount === 1) {\n      this.doTick();\n      if (this._tickCallCount > 1) {\n        this.tickImmediate();\n      }\n      this._tickCallCount = 0;\n    }\n  }\n  tickImmediate() {\n    this.clearNextTick();\n    this._tickTimer = self.setTimeout(this._boundTick, 0);\n  }\n  /**\n   * For subclass to implement task logic\n   * @abstract\n   */\n  doTick() {\n  }\n};\nvar FragmentState = {\n  NOT_LOADED: \"NOT_LOADED\",\n  APPENDING: \"APPENDING\",\n  PARTIAL: \"PARTIAL\",\n  OK: \"OK\"\n};\nvar FragmentTracker = class {\n  constructor(hls) {\n    this.activePartLists = /* @__PURE__ */ Object.create(null);\n    this.endListFragments = /* @__PURE__ */ Object.create(null);\n    this.fragments = /* @__PURE__ */ Object.create(null);\n    this.timeRanges = /* @__PURE__ */ Object.create(null);\n    this.bufferPadding = 0.2;\n    this.hls = void 0;\n    this.hasGaps = false;\n    this.hls = hls;\n    this._registerListeners();\n  }\n  _registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.BUFFER_APPENDED, this.onBufferAppended, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n  }\n  _unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.BUFFER_APPENDED, this.onBufferAppended, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n  }\n  destroy() {\n    this._unregisterListeners();\n    this.fragments = // @ts-ignore\n    this.activePartLists = // @ts-ignore\n    this.endListFragments = this.timeRanges = null;\n  }\n  /**\n   * Return a Fragment or Part with an appended range that matches the position and levelType\n   * Otherwise, return null\n   */\n  getAppendedFrag(position, levelType) {\n    const activeParts = this.activePartLists[levelType];\n    if (activeParts) {\n      for (let i2 = activeParts.length; i2--; ) {\n        const activePart = activeParts[i2];\n        if (!activePart) {\n          break;\n        }\n        const appendedPTS = activePart.end;\n        if (activePart.start <= position && appendedPTS !== null && position <= appendedPTS) {\n          return activePart;\n        }\n      }\n    }\n    return this.getBufferedFrag(position, levelType);\n  }\n  /**\n   * Return a buffered Fragment that matches the position and levelType.\n   * A buffered Fragment is one whose loading, parsing and appending is done (completed or \"partial\" meaning aborted).\n   * If not found any Fragment, return null\n   */\n  getBufferedFrag(position, levelType) {\n    const {\n      fragments\n    } = this;\n    const keys = Object.keys(fragments);\n    for (let i2 = keys.length; i2--; ) {\n      const fragmentEntity = fragments[keys[i2]];\n      if ((fragmentEntity == null ? void 0 : fragmentEntity.body.type) === levelType && fragmentEntity.buffered) {\n        const frag = fragmentEntity.body;\n        if (frag.start <= position && position <= frag.end) {\n          return frag;\n        }\n      }\n    }\n    return null;\n  }\n  /**\n   * Partial fragments effected by coded frame eviction will be removed\n   * The browser will unload parts of the buffer to free up memory for new buffer data\n   * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable)\n   */\n  detectEvictedFragments(elementaryStream, timeRange, playlistType, appendedPart) {\n    if (this.timeRanges) {\n      this.timeRanges[elementaryStream] = timeRange;\n    }\n    const appendedPartSn = (appendedPart == null ? void 0 : appendedPart.fragment.sn) || -1;\n    Object.keys(this.fragments).forEach((key) => {\n      const fragmentEntity = this.fragments[key];\n      if (!fragmentEntity) {\n        return;\n      }\n      if (appendedPartSn >= fragmentEntity.body.sn) {\n        return;\n      }\n      if (!fragmentEntity.buffered && !fragmentEntity.loaded) {\n        if (fragmentEntity.body.type === playlistType) {\n          this.removeFragment(fragmentEntity.body);\n        }\n        return;\n      }\n      const esData = fragmentEntity.range[elementaryStream];\n      if (!esData) {\n        return;\n      }\n      esData.time.some((time) => {\n        const isNotBuffered = !this.isTimeBuffered(time.startPTS, time.endPTS, timeRange);\n        if (isNotBuffered) {\n          this.removeFragment(fragmentEntity.body);\n        }\n        return isNotBuffered;\n      });\n    });\n  }\n  /**\n   * Checks if the fragment passed in is loaded in the buffer properly\n   * Partially loaded fragments will be registered as a partial fragment\n   */\n  detectPartialFragments(data) {\n    const timeRanges = this.timeRanges;\n    const {\n      frag,\n      part\n    } = data;\n    if (!timeRanges || frag.sn === \"initSegment\") {\n      return;\n    }\n    const fragKey = getFragmentKey(frag);\n    const fragmentEntity = this.fragments[fragKey];\n    if (!fragmentEntity || fragmentEntity.buffered && frag.gap) {\n      return;\n    }\n    const isFragHint = !frag.relurl;\n    Object.keys(timeRanges).forEach((elementaryStream) => {\n      const streamInfo = frag.elementaryStreams[elementaryStream];\n      if (!streamInfo) {\n        return;\n      }\n      const timeRange = timeRanges[elementaryStream];\n      const partial = isFragHint || streamInfo.partial === true;\n      fragmentEntity.range[elementaryStream] = this.getBufferedTimes(frag, part, partial, timeRange);\n    });\n    fragmentEntity.loaded = null;\n    if (Object.keys(fragmentEntity.range).length) {\n      fragmentEntity.buffered = true;\n      const endList = fragmentEntity.body.endList = frag.endList || fragmentEntity.body.endList;\n      if (endList) {\n        this.endListFragments[fragmentEntity.body.type] = fragmentEntity;\n      }\n      if (!isPartial(fragmentEntity)) {\n        this.removeParts(frag.sn - 1, frag.type);\n      }\n    } else {\n      this.removeFragment(fragmentEntity.body);\n    }\n  }\n  removeParts(snToKeep, levelType) {\n    const activeParts = this.activePartLists[levelType];\n    if (!activeParts) {\n      return;\n    }\n    this.activePartLists[levelType] = activeParts.filter((part) => part.fragment.sn >= snToKeep);\n  }\n  fragBuffered(frag, force) {\n    const fragKey = getFragmentKey(frag);\n    let fragmentEntity = this.fragments[fragKey];\n    if (!fragmentEntity && force) {\n      fragmentEntity = this.fragments[fragKey] = {\n        body: frag,\n        appendedPTS: null,\n        loaded: null,\n        buffered: false,\n        range: /* @__PURE__ */ Object.create(null)\n      };\n      if (frag.gap) {\n        this.hasGaps = true;\n      }\n    }\n    if (fragmentEntity) {\n      fragmentEntity.loaded = null;\n      fragmentEntity.buffered = true;\n    }\n  }\n  getBufferedTimes(fragment, part, partial, timeRange) {\n    const buffered = {\n      time: [],\n      partial\n    };\n    const startPTS = fragment.start;\n    const endPTS = fragment.end;\n    const minEndPTS = fragment.minEndPTS || endPTS;\n    const maxStartPTS = fragment.maxStartPTS || startPTS;\n    for (let i2 = 0; i2 < timeRange.length; i2++) {\n      const startTime = timeRange.start(i2) - this.bufferPadding;\n      const endTime = timeRange.end(i2) + this.bufferPadding;\n      if (maxStartPTS >= startTime && minEndPTS <= endTime) {\n        buffered.time.push({\n          startPTS: Math.max(startPTS, timeRange.start(i2)),\n          endPTS: Math.min(endPTS, timeRange.end(i2))\n        });\n        break;\n      } else if (startPTS < endTime && endPTS > startTime) {\n        const start = Math.max(startPTS, timeRange.start(i2));\n        const end = Math.min(endPTS, timeRange.end(i2));\n        if (end > start) {\n          buffered.partial = true;\n          buffered.time.push({\n            startPTS: start,\n            endPTS: end\n          });\n        }\n      } else if (endPTS <= startTime) {\n        break;\n      }\n    }\n    return buffered;\n  }\n  /**\n   * Gets the partial fragment for a certain time\n   */\n  getPartialFragment(time) {\n    let bestFragment = null;\n    let timePadding;\n    let startTime;\n    let endTime;\n    let bestOverlap = 0;\n    const {\n      bufferPadding,\n      fragments\n    } = this;\n    Object.keys(fragments).forEach((key) => {\n      const fragmentEntity = fragments[key];\n      if (!fragmentEntity) {\n        return;\n      }\n      if (isPartial(fragmentEntity)) {\n        startTime = fragmentEntity.body.start - bufferPadding;\n        endTime = fragmentEntity.body.end + bufferPadding;\n        if (time >= startTime && time <= endTime) {\n          timePadding = Math.min(time - startTime, endTime - time);\n          if (bestOverlap <= timePadding) {\n            bestFragment = fragmentEntity.body;\n            bestOverlap = timePadding;\n          }\n        }\n      }\n    });\n    return bestFragment;\n  }\n  isEndListAppended(type) {\n    const lastFragmentEntity = this.endListFragments[type];\n    return lastFragmentEntity !== void 0 && (lastFragmentEntity.buffered || isPartial(lastFragmentEntity));\n  }\n  getState(fragment) {\n    const fragKey = getFragmentKey(fragment);\n    const fragmentEntity = this.fragments[fragKey];\n    if (fragmentEntity) {\n      if (!fragmentEntity.buffered) {\n        return FragmentState.APPENDING;\n      } else if (isPartial(fragmentEntity)) {\n        return FragmentState.PARTIAL;\n      } else {\n        return FragmentState.OK;\n      }\n    }\n    return FragmentState.NOT_LOADED;\n  }\n  isTimeBuffered(startPTS, endPTS, timeRange) {\n    let startTime;\n    let endTime;\n    for (let i2 = 0; i2 < timeRange.length; i2++) {\n      startTime = timeRange.start(i2) - this.bufferPadding;\n      endTime = timeRange.end(i2) + this.bufferPadding;\n      if (startPTS >= startTime && endPTS <= endTime) {\n        return true;\n      }\n      if (endPTS <= startTime) {\n        return false;\n      }\n    }\n    return false;\n  }\n  onFragLoaded(event, data) {\n    const {\n      frag,\n      part\n    } = data;\n    if (frag.sn === \"initSegment\" || frag.bitrateTest) {\n      return;\n    }\n    const loaded = part ? null : data;\n    const fragKey = getFragmentKey(frag);\n    this.fragments[fragKey] = {\n      body: frag,\n      appendedPTS: null,\n      loaded,\n      buffered: false,\n      range: /* @__PURE__ */ Object.create(null)\n    };\n  }\n  onBufferAppended(event, data) {\n    const {\n      frag,\n      part,\n      timeRanges\n    } = data;\n    if (frag.sn === \"initSegment\") {\n      return;\n    }\n    const playlistType = frag.type;\n    if (part) {\n      let activeParts = this.activePartLists[playlistType];\n      if (!activeParts) {\n        this.activePartLists[playlistType] = activeParts = [];\n      }\n      activeParts.push(part);\n    }\n    this.timeRanges = timeRanges;\n    Object.keys(timeRanges).forEach((elementaryStream) => {\n      const timeRange = timeRanges[elementaryStream];\n      this.detectEvictedFragments(elementaryStream, timeRange, playlistType, part);\n    });\n  }\n  onFragBuffered(event, data) {\n    this.detectPartialFragments(data);\n  }\n  hasFragment(fragment) {\n    const fragKey = getFragmentKey(fragment);\n    return !!this.fragments[fragKey];\n  }\n  hasParts(type) {\n    var _this$activePartLists;\n    return !!((_this$activePartLists = this.activePartLists[type]) != null && _this$activePartLists.length);\n  }\n  removeFragmentsInRange(start, end, playlistType, withGapOnly, unbufferedOnly) {\n    if (withGapOnly && !this.hasGaps) {\n      return;\n    }\n    Object.keys(this.fragments).forEach((key) => {\n      const fragmentEntity = this.fragments[key];\n      if (!fragmentEntity) {\n        return;\n      }\n      const frag = fragmentEntity.body;\n      if (frag.type !== playlistType || withGapOnly && !frag.gap) {\n        return;\n      }\n      if (frag.start < end && frag.end > start && (fragmentEntity.buffered || unbufferedOnly)) {\n        this.removeFragment(frag);\n      }\n    });\n  }\n  removeFragment(fragment) {\n    const fragKey = getFragmentKey(fragment);\n    fragment.stats.loaded = 0;\n    fragment.clearElementaryStreamInfo();\n    const activeParts = this.activePartLists[fragment.type];\n    if (activeParts) {\n      const snToRemove = fragment.sn;\n      this.activePartLists[fragment.type] = activeParts.filter((part) => part.fragment.sn !== snToRemove);\n    }\n    delete this.fragments[fragKey];\n    if (fragment.endList) {\n      delete this.endListFragments[fragment.type];\n    }\n  }\n  removeAllFragments() {\n    this.fragments = /* @__PURE__ */ Object.create(null);\n    this.endListFragments = /* @__PURE__ */ Object.create(null);\n    this.activePartLists = /* @__PURE__ */ Object.create(null);\n    this.hasGaps = false;\n  }\n};\nfunction isPartial(fragmentEntity) {\n  var _fragmentEntity$range, _fragmentEntity$range2, _fragmentEntity$range3;\n  return fragmentEntity.buffered && (fragmentEntity.body.gap || ((_fragmentEntity$range = fragmentEntity.range.video) == null ? void 0 : _fragmentEntity$range.partial) || ((_fragmentEntity$range2 = fragmentEntity.range.audio) == null ? void 0 : _fragmentEntity$range2.partial) || ((_fragmentEntity$range3 = fragmentEntity.range.audiovideo) == null ? void 0 : _fragmentEntity$range3.partial));\n}\nfunction getFragmentKey(fragment) {\n  return `${fragment.type}_${fragment.level}_${fragment.sn}`;\n}\nvar noopBuffered = {\n  length: 0,\n  start: () => 0,\n  end: () => 0\n};\nvar BufferHelper = class _BufferHelper {\n  /**\n   * Return true if `media`'s buffered include `position`\n   */\n  static isBuffered(media, position) {\n    try {\n      if (media) {\n        const buffered = _BufferHelper.getBuffered(media);\n        for (let i2 = 0; i2 < buffered.length; i2++) {\n          if (position >= buffered.start(i2) && position <= buffered.end(i2)) {\n            return true;\n          }\n        }\n      }\n    } catch (error) {\n    }\n    return false;\n  }\n  static bufferInfo(media, pos, maxHoleDuration) {\n    try {\n      if (media) {\n        const vbuffered = _BufferHelper.getBuffered(media);\n        const buffered = [];\n        let i2;\n        for (i2 = 0; i2 < vbuffered.length; i2++) {\n          buffered.push({\n            start: vbuffered.start(i2),\n            end: vbuffered.end(i2)\n          });\n        }\n        return this.bufferedInfo(buffered, pos, maxHoleDuration);\n      }\n    } catch (error) {\n    }\n    return {\n      len: 0,\n      start: pos,\n      end: pos,\n      nextStart: void 0\n    };\n  }\n  static bufferedInfo(buffered, pos, maxHoleDuration) {\n    pos = Math.max(0, pos);\n    buffered.sort(function(a2, b4) {\n      const diff = a2.start - b4.start;\n      if (diff) {\n        return diff;\n      } else {\n        return b4.end - a2.end;\n      }\n    });\n    let buffered2 = [];\n    if (maxHoleDuration) {\n      for (let i2 = 0; i2 < buffered.length; i2++) {\n        const buf2len = buffered2.length;\n        if (buf2len) {\n          const buf2end = buffered2[buf2len - 1].end;\n          if (buffered[i2].start - buf2end < maxHoleDuration) {\n            if (buffered[i2].end > buf2end) {\n              buffered2[buf2len - 1].end = buffered[i2].end;\n            }\n          } else {\n            buffered2.push(buffered[i2]);\n          }\n        } else {\n          buffered2.push(buffered[i2]);\n        }\n      }\n    } else {\n      buffered2 = buffered;\n    }\n    let bufferLen = 0;\n    let bufferStartNext;\n    let bufferStart = pos;\n    let bufferEnd = pos;\n    for (let i2 = 0; i2 < buffered2.length; i2++) {\n      const start = buffered2[i2].start;\n      const end = buffered2[i2].end;\n      if (pos + maxHoleDuration >= start && pos < end) {\n        bufferStart = start;\n        bufferEnd = end;\n        bufferLen = bufferEnd - pos;\n      } else if (pos + maxHoleDuration < start) {\n        bufferStartNext = start;\n        break;\n      }\n    }\n    return {\n      len: bufferLen,\n      start: bufferStart || 0,\n      end: bufferEnd || 0,\n      nextStart: bufferStartNext\n    };\n  }\n  /**\n   * Safe method to get buffered property.\n   * SourceBuffer.buffered may throw if SourceBuffer is removed from it's MediaSource\n   */\n  static getBuffered(media) {\n    try {\n      return media.buffered;\n    } catch (e) {\n      logger.log(\"failed to get media.buffered\", e);\n      return noopBuffered;\n    }\n  }\n};\nvar ChunkMetadata = class {\n  constructor(level, sn, id, size = 0, part = -1, partial = false) {\n    this.level = void 0;\n    this.sn = void 0;\n    this.part = void 0;\n    this.id = void 0;\n    this.size = void 0;\n    this.partial = void 0;\n    this.transmuxing = getNewPerformanceTiming();\n    this.buffering = {\n      audio: getNewPerformanceTiming(),\n      video: getNewPerformanceTiming(),\n      audiovideo: getNewPerformanceTiming()\n    };\n    this.level = level;\n    this.sn = sn;\n    this.id = id;\n    this.size = size;\n    this.part = part;\n    this.partial = partial;\n  }\n};\nfunction getNewPerformanceTiming() {\n  return {\n    start: 0,\n    executeStart: 0,\n    executeEnd: 0,\n    end: 0\n  };\n}\nfunction findFirstFragWithCC(fragments, cc) {\n  for (let i2 = 0, len = fragments.length; i2 < len; i2++) {\n    var _fragments$i;\n    if (((_fragments$i = fragments[i2]) == null ? void 0 : _fragments$i.cc) === cc) {\n      return fragments[i2];\n    }\n  }\n  return null;\n}\nfunction shouldAlignOnDiscontinuities(lastFrag, switchDetails, details) {\n  if (switchDetails) {\n    if (details.endCC > details.startCC || lastFrag && lastFrag.cc < details.startCC) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction findDiscontinuousReferenceFrag(prevDetails, curDetails) {\n  const prevFrags = prevDetails.fragments;\n  const curFrags = curDetails.fragments;\n  if (!curFrags.length || !prevFrags.length) {\n    logger.log(\"No fragments to align\");\n    return;\n  }\n  const prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);\n  if (!prevStartFrag || prevStartFrag && !prevStartFrag.startPTS) {\n    logger.log(\"No frag in previous level to align on\");\n    return;\n  }\n  return prevStartFrag;\n}\nfunction adjustFragmentStart(frag, sliding) {\n  if (frag) {\n    const start = frag.start + sliding;\n    frag.start = frag.startPTS = start;\n    frag.endPTS = start + frag.duration;\n  }\n}\nfunction adjustSlidingStart(sliding, details) {\n  const fragments = details.fragments;\n  for (let i2 = 0, len = fragments.length; i2 < len; i2++) {\n    adjustFragmentStart(fragments[i2], sliding);\n  }\n  if (details.fragmentHint) {\n    adjustFragmentStart(details.fragmentHint, sliding);\n  }\n  details.alignedSliding = true;\n}\nfunction alignStream(lastFrag, switchDetails, details) {\n  if (!switchDetails) {\n    return;\n  }\n  alignDiscontinuities(lastFrag, details, switchDetails);\n  if (!details.alignedSliding && switchDetails) {\n    alignMediaPlaylistByPDT(details, switchDetails);\n  }\n  if (!details.alignedSliding && switchDetails && !details.skippedSegments) {\n    adjustSliding(switchDetails, details);\n  }\n}\nfunction alignDiscontinuities(lastFrag, details, switchDetails) {\n  if (shouldAlignOnDiscontinuities(lastFrag, switchDetails, details)) {\n    const referenceFrag = findDiscontinuousReferenceFrag(switchDetails, details);\n    if (referenceFrag && isFiniteNumber(referenceFrag.start)) {\n      logger.log(`Adjusting PTS using last level due to CC increase within current level ${details.url}`);\n      adjustSlidingStart(referenceFrag.start, details);\n    }\n  }\n}\nfunction alignMediaPlaylistByPDT(details, refDetails) {\n  if (!details.hasProgramDateTime || !refDetails.hasProgramDateTime) {\n    return;\n  }\n  const fragments = details.fragments;\n  const refFragments = refDetails.fragments;\n  if (!fragments.length || !refFragments.length) {\n    return;\n  }\n  let refFrag;\n  let frag;\n  const targetCC = Math.min(refDetails.endCC, details.endCC);\n  if (refDetails.startCC < targetCC && details.startCC < targetCC) {\n    refFrag = findFirstFragWithCC(refFragments, targetCC);\n    frag = findFirstFragWithCC(fragments, targetCC);\n  }\n  if (!refFrag || !frag) {\n    refFrag = refFragments[Math.floor(refFragments.length / 2)];\n    frag = findFirstFragWithCC(fragments, refFrag.cc) || fragments[Math.floor(fragments.length / 2)];\n  }\n  const refPDT = refFrag.programDateTime;\n  const targetPDT = frag.programDateTime;\n  if (!refPDT || !targetPDT) {\n    return;\n  }\n  const delta = (targetPDT - refPDT) / 1e3 - (frag.start - refFrag.start);\n  adjustSlidingStart(delta, details);\n}\nvar MIN_CHUNK_SIZE = Math.pow(2, 17);\nvar FragmentLoader = class {\n  constructor(config) {\n    this.config = void 0;\n    this.loader = null;\n    this.partLoadTimeout = -1;\n    this.config = config;\n  }\n  destroy() {\n    if (this.loader) {\n      this.loader.destroy();\n      this.loader = null;\n    }\n  }\n  abort() {\n    if (this.loader) {\n      this.loader.abort();\n    }\n  }\n  load(frag, onProgress) {\n    const url = frag.url;\n    if (!url) {\n      return Promise.reject(new LoadError({\n        type: ErrorTypes.NETWORK_ERROR,\n        details: ErrorDetails.FRAG_LOAD_ERROR,\n        fatal: false,\n        frag,\n        error: new Error(`Fragment does not have a ${url ? \"part list\" : \"url\"}`),\n        networkDetails: null\n      }));\n    }\n    this.abort();\n    const config = this.config;\n    const FragmentILoader = config.fLoader;\n    const DefaultILoader = config.loader;\n    return new Promise((resolve, reject) => {\n      if (this.loader) {\n        this.loader.destroy();\n      }\n      if (frag.gap) {\n        if (frag.tagList.some((tags) => tags[0] === \"GAP\")) {\n          reject(createGapLoadError(frag));\n          return;\n        } else {\n          frag.gap = false;\n        }\n      }\n      const loader = this.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n      const loaderContext = createLoaderContext(frag);\n      const loadPolicy = getLoaderConfigWithoutReties(config.fragLoadPolicy.default);\n      const loaderConfig = {\n        loadPolicy,\n        timeout: loadPolicy.maxLoadTimeMs,\n        maxRetry: 0,\n        retryDelay: 0,\n        maxRetryDelay: 0,\n        highWaterMark: frag.sn === \"initSegment\" ? Infinity : MIN_CHUNK_SIZE\n      };\n      frag.stats = loader.stats;\n      loader.load(loaderContext, loaderConfig, {\n        onSuccess: (response, stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          let payload = response.data;\n          if (context.resetIV && frag.decryptdata) {\n            frag.decryptdata.iv = new Uint8Array(payload.slice(0, 16));\n            payload = payload.slice(16);\n          }\n          resolve({\n            frag,\n            part: null,\n            payload,\n            networkDetails\n          });\n        },\n        onError: (response, context, networkDetails, stats) => {\n          this.resetLoader(frag, loader);\n          reject(new LoadError({\n            type: ErrorTypes.NETWORK_ERROR,\n            details: ErrorDetails.FRAG_LOAD_ERROR,\n            fatal: false,\n            frag,\n            response: _objectSpread2({\n              url,\n              data: void 0\n            }, response),\n            error: new Error(`HTTP Error ${response.code} ${response.text}`),\n            networkDetails,\n            stats\n          }));\n        },\n        onAbort: (stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          reject(new LoadError({\n            type: ErrorTypes.NETWORK_ERROR,\n            details: ErrorDetails.INTERNAL_ABORTED,\n            fatal: false,\n            frag,\n            error: new Error(\"Aborted\"),\n            networkDetails,\n            stats\n          }));\n        },\n        onTimeout: (stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          reject(new LoadError({\n            type: ErrorTypes.NETWORK_ERROR,\n            details: ErrorDetails.FRAG_LOAD_TIMEOUT,\n            fatal: false,\n            frag,\n            error: new Error(`Timeout after ${loaderConfig.timeout}ms`),\n            networkDetails,\n            stats\n          }));\n        },\n        onProgress: (stats, context, data, networkDetails) => {\n          if (onProgress) {\n            onProgress({\n              frag,\n              part: null,\n              payload: data,\n              networkDetails\n            });\n          }\n        }\n      });\n    });\n  }\n  loadPart(frag, part, onProgress) {\n    this.abort();\n    const config = this.config;\n    const FragmentILoader = config.fLoader;\n    const DefaultILoader = config.loader;\n    return new Promise((resolve, reject) => {\n      if (this.loader) {\n        this.loader.destroy();\n      }\n      if (frag.gap || part.gap) {\n        reject(createGapLoadError(frag, part));\n        return;\n      }\n      const loader = this.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n      const loaderContext = createLoaderContext(frag, part);\n      const loadPolicy = getLoaderConfigWithoutReties(config.fragLoadPolicy.default);\n      const loaderConfig = {\n        loadPolicy,\n        timeout: loadPolicy.maxLoadTimeMs,\n        maxRetry: 0,\n        retryDelay: 0,\n        maxRetryDelay: 0,\n        highWaterMark: MIN_CHUNK_SIZE\n      };\n      part.stats = loader.stats;\n      loader.load(loaderContext, loaderConfig, {\n        onSuccess: (response, stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          this.updateStatsFromPart(frag, part);\n          const partLoadedData = {\n            frag,\n            part,\n            payload: response.data,\n            networkDetails\n          };\n          onProgress(partLoadedData);\n          resolve(partLoadedData);\n        },\n        onError: (response, context, networkDetails, stats) => {\n          this.resetLoader(frag, loader);\n          reject(new LoadError({\n            type: ErrorTypes.NETWORK_ERROR,\n            details: ErrorDetails.FRAG_LOAD_ERROR,\n            fatal: false,\n            frag,\n            part,\n            response: _objectSpread2({\n              url: loaderContext.url,\n              data: void 0\n            }, response),\n            error: new Error(`HTTP Error ${response.code} ${response.text}`),\n            networkDetails,\n            stats\n          }));\n        },\n        onAbort: (stats, context, networkDetails) => {\n          frag.stats.aborted = part.stats.aborted;\n          this.resetLoader(frag, loader);\n          reject(new LoadError({\n            type: ErrorTypes.NETWORK_ERROR,\n            details: ErrorDetails.INTERNAL_ABORTED,\n            fatal: false,\n            frag,\n            part,\n            error: new Error(\"Aborted\"),\n            networkDetails,\n            stats\n          }));\n        },\n        onTimeout: (stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          reject(new LoadError({\n            type: ErrorTypes.NETWORK_ERROR,\n            details: ErrorDetails.FRAG_LOAD_TIMEOUT,\n            fatal: false,\n            frag,\n            part,\n            error: new Error(`Timeout after ${loaderConfig.timeout}ms`),\n            networkDetails,\n            stats\n          }));\n        }\n      });\n    });\n  }\n  updateStatsFromPart(frag, part) {\n    const fragStats = frag.stats;\n    const partStats = part.stats;\n    const partTotal = partStats.total;\n    fragStats.loaded += partStats.loaded;\n    if (partTotal) {\n      const estTotalParts = Math.round(frag.duration / part.duration);\n      const estLoadedParts = Math.min(Math.round(fragStats.loaded / partTotal), estTotalParts);\n      const estRemainingParts = estTotalParts - estLoadedParts;\n      const estRemainingBytes = estRemainingParts * Math.round(fragStats.loaded / estLoadedParts);\n      fragStats.total = fragStats.loaded + estRemainingBytes;\n    } else {\n      fragStats.total = Math.max(fragStats.loaded, fragStats.total);\n    }\n    const fragLoading = fragStats.loading;\n    const partLoading = partStats.loading;\n    if (fragLoading.start) {\n      fragLoading.first += partLoading.first - partLoading.start;\n    } else {\n      fragLoading.start = partLoading.start;\n      fragLoading.first = partLoading.first;\n    }\n    fragLoading.end = partLoading.end;\n  }\n  resetLoader(frag, loader) {\n    frag.loader = null;\n    if (this.loader === loader) {\n      self.clearTimeout(this.partLoadTimeout);\n      this.loader = null;\n    }\n    loader.destroy();\n  }\n};\nfunction createLoaderContext(frag, part = null) {\n  const segment = part || frag;\n  const loaderContext = {\n    frag,\n    part,\n    responseType: \"arraybuffer\",\n    url: segment.url,\n    headers: {},\n    rangeStart: 0,\n    rangeEnd: 0\n  };\n  const start = segment.byteRangeStartOffset;\n  const end = segment.byteRangeEndOffset;\n  if (isFiniteNumber(start) && isFiniteNumber(end)) {\n    var _frag$decryptdata;\n    let byteRangeStart = start;\n    let byteRangeEnd = end;\n    if (frag.sn === \"initSegment\" && ((_frag$decryptdata = frag.decryptdata) == null ? void 0 : _frag$decryptdata.method) === \"AES-128\") {\n      const fragmentLen = end - start;\n      if (fragmentLen % 16) {\n        byteRangeEnd = end + (16 - fragmentLen % 16);\n      }\n      if (start !== 0) {\n        loaderContext.resetIV = true;\n        byteRangeStart = start - 16;\n      }\n    }\n    loaderContext.rangeStart = byteRangeStart;\n    loaderContext.rangeEnd = byteRangeEnd;\n  }\n  return loaderContext;\n}\nfunction createGapLoadError(frag, part) {\n  const error = new Error(`GAP ${frag.gap ? \"tag\" : \"attribute\"} found`);\n  const errorData = {\n    type: ErrorTypes.MEDIA_ERROR,\n    details: ErrorDetails.FRAG_GAP,\n    fatal: false,\n    frag,\n    error,\n    networkDetails: null\n  };\n  if (part) {\n    errorData.part = part;\n  }\n  (part ? part : frag).stats.aborted = true;\n  return new LoadError(errorData);\n}\nvar LoadError = class extends Error {\n  constructor(data) {\n    super(data.error.message);\n    this.data = void 0;\n    this.data = data;\n  }\n};\nvar AESCrypto = class {\n  constructor(subtle, iv) {\n    this.subtle = void 0;\n    this.aesIV = void 0;\n    this.subtle = subtle;\n    this.aesIV = iv;\n  }\n  decrypt(data, key) {\n    return this.subtle.decrypt({\n      name: \"AES-CBC\",\n      iv: this.aesIV\n    }, key, data);\n  }\n};\nvar FastAESKey = class {\n  constructor(subtle, key) {\n    this.subtle = void 0;\n    this.key = void 0;\n    this.subtle = subtle;\n    this.key = key;\n  }\n  expandKey() {\n    return this.subtle.importKey(\"raw\", this.key, {\n      name: \"AES-CBC\"\n    }, false, [\"encrypt\", \"decrypt\"]);\n  }\n};\nfunction removePadding(array) {\n  const outputBytes = array.byteLength;\n  const paddingBytes = outputBytes && new DataView(array.buffer).getUint8(outputBytes - 1);\n  if (paddingBytes) {\n    return sliceUint8(array, 0, outputBytes - paddingBytes);\n  }\n  return array;\n}\nvar AESDecryptor = class {\n  constructor() {\n    this.rcon = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];\n    this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n    this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n    this.sBox = new Uint32Array(256);\n    this.invSBox = new Uint32Array(256);\n    this.key = new Uint32Array(0);\n    this.ksRows = 0;\n    this.keySize = 0;\n    this.keySchedule = void 0;\n    this.invKeySchedule = void 0;\n    this.initTable();\n  }\n  // Using view.getUint32() also swaps the byte order.\n  uint8ArrayToUint32Array_(arrayBuffer) {\n    const view = new DataView(arrayBuffer);\n    const newArray = new Uint32Array(4);\n    for (let i2 = 0; i2 < 4; i2++) {\n      newArray[i2] = view.getUint32(i2 * 4);\n    }\n    return newArray;\n  }\n  initTable() {\n    const sBox = this.sBox;\n    const invSBox = this.invSBox;\n    const subMix = this.subMix;\n    const subMix0 = subMix[0];\n    const subMix1 = subMix[1];\n    const subMix2 = subMix[2];\n    const subMix3 = subMix[3];\n    const invSubMix = this.invSubMix;\n    const invSubMix0 = invSubMix[0];\n    const invSubMix1 = invSubMix[1];\n    const invSubMix2 = invSubMix[2];\n    const invSubMix3 = invSubMix[3];\n    const d4 = new Uint32Array(256);\n    let x4 = 0;\n    let xi2 = 0;\n    let i2 = 0;\n    for (i2 = 0; i2 < 256; i2++) {\n      if (i2 < 128) {\n        d4[i2] = i2 << 1;\n      } else {\n        d4[i2] = i2 << 1 ^ 283;\n      }\n    }\n    for (i2 = 0; i2 < 256; i2++) {\n      let sx = xi2 ^ xi2 << 1 ^ xi2 << 2 ^ xi2 << 3 ^ xi2 << 4;\n      sx = sx >>> 8 ^ sx & 255 ^ 99;\n      sBox[x4] = sx;\n      invSBox[sx] = x4;\n      const x22 = d4[x4];\n      const x42 = d4[x22];\n      const x8 = d4[x42];\n      let t2 = d4[sx] * 257 ^ sx * 16843008;\n      subMix0[x4] = t2 << 24 | t2 >>> 8;\n      subMix1[x4] = t2 << 16 | t2 >>> 16;\n      subMix2[x4] = t2 << 8 | t2 >>> 24;\n      subMix3[x4] = t2;\n      t2 = x8 * 16843009 ^ x42 * 65537 ^ x22 * 257 ^ x4 * 16843008;\n      invSubMix0[sx] = t2 << 24 | t2 >>> 8;\n      invSubMix1[sx] = t2 << 16 | t2 >>> 16;\n      invSubMix2[sx] = t2 << 8 | t2 >>> 24;\n      invSubMix3[sx] = t2;\n      if (!x4) {\n        x4 = xi2 = 1;\n      } else {\n        x4 = x22 ^ d4[d4[d4[x8 ^ x22]]];\n        xi2 ^= d4[d4[xi2]];\n      }\n    }\n  }\n  expandKey(keyBuffer) {\n    const key = this.uint8ArrayToUint32Array_(keyBuffer);\n    let sameKey = true;\n    let offset = 0;\n    while (offset < key.length && sameKey) {\n      sameKey = key[offset] === this.key[offset];\n      offset++;\n    }\n    if (sameKey) {\n      return;\n    }\n    this.key = key;\n    const keySize = this.keySize = key.length;\n    if (keySize !== 4 && keySize !== 6 && keySize !== 8) {\n      throw new Error(\"Invalid aes key size=\" + keySize);\n    }\n    const ksRows = this.ksRows = (keySize + 6 + 1) * 4;\n    let ksRow;\n    let invKsRow;\n    const keySchedule = this.keySchedule = new Uint32Array(ksRows);\n    const invKeySchedule = this.invKeySchedule = new Uint32Array(ksRows);\n    const sbox = this.sBox;\n    const rcon = this.rcon;\n    const invSubMix = this.invSubMix;\n    const invSubMix0 = invSubMix[0];\n    const invSubMix1 = invSubMix[1];\n    const invSubMix2 = invSubMix[2];\n    const invSubMix3 = invSubMix[3];\n    let prev;\n    let t2;\n    for (ksRow = 0; ksRow < ksRows; ksRow++) {\n      if (ksRow < keySize) {\n        prev = keySchedule[ksRow] = key[ksRow];\n        continue;\n      }\n      t2 = prev;\n      if (ksRow % keySize === 0) {\n        t2 = t2 << 8 | t2 >>> 24;\n        t2 = sbox[t2 >>> 24] << 24 | sbox[t2 >>> 16 & 255] << 16 | sbox[t2 >>> 8 & 255] << 8 | sbox[t2 & 255];\n        t2 ^= rcon[ksRow / keySize | 0] << 24;\n      } else if (keySize > 6 && ksRow % keySize === 4) {\n        t2 = sbox[t2 >>> 24] << 24 | sbox[t2 >>> 16 & 255] << 16 | sbox[t2 >>> 8 & 255] << 8 | sbox[t2 & 255];\n      }\n      keySchedule[ksRow] = prev = (keySchedule[ksRow - keySize] ^ t2) >>> 0;\n    }\n    for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n      ksRow = ksRows - invKsRow;\n      if (invKsRow & 3) {\n        t2 = keySchedule[ksRow];\n      } else {\n        t2 = keySchedule[ksRow - 4];\n      }\n      if (invKsRow < 4 || ksRow <= 4) {\n        invKeySchedule[invKsRow] = t2;\n      } else {\n        invKeySchedule[invKsRow] = invSubMix0[sbox[t2 >>> 24]] ^ invSubMix1[sbox[t2 >>> 16 & 255]] ^ invSubMix2[sbox[t2 >>> 8 & 255]] ^ invSubMix3[sbox[t2 & 255]];\n      }\n      invKeySchedule[invKsRow] = invKeySchedule[invKsRow] >>> 0;\n    }\n  }\n  // Adding this as a method greatly improves performance.\n  networkToHostOrderSwap(word) {\n    return word << 24 | (word & 65280) << 8 | (word & 16711680) >> 8 | word >>> 24;\n  }\n  decrypt(inputArrayBuffer, offset, aesIV) {\n    const nRounds = this.keySize + 6;\n    const invKeySchedule = this.invKeySchedule;\n    const invSBOX = this.invSBox;\n    const invSubMix = this.invSubMix;\n    const invSubMix0 = invSubMix[0];\n    const invSubMix1 = invSubMix[1];\n    const invSubMix2 = invSubMix[2];\n    const invSubMix3 = invSubMix[3];\n    const initVector = this.uint8ArrayToUint32Array_(aesIV);\n    let initVector0 = initVector[0];\n    let initVector1 = initVector[1];\n    let initVector2 = initVector[2];\n    let initVector3 = initVector[3];\n    const inputInt32 = new Int32Array(inputArrayBuffer);\n    const outputInt32 = new Int32Array(inputInt32.length);\n    let t0, t1, t2, t3;\n    let s0, s1, s2, s3;\n    let inputWords0, inputWords1, inputWords2, inputWords3;\n    let ksRow, i2;\n    const swapWord = this.networkToHostOrderSwap;\n    while (offset < inputInt32.length) {\n      inputWords0 = swapWord(inputInt32[offset]);\n      inputWords1 = swapWord(inputInt32[offset + 1]);\n      inputWords2 = swapWord(inputInt32[offset + 2]);\n      inputWords3 = swapWord(inputInt32[offset + 3]);\n      s0 = inputWords0 ^ invKeySchedule[0];\n      s1 = inputWords3 ^ invKeySchedule[1];\n      s2 = inputWords2 ^ invKeySchedule[2];\n      s3 = inputWords1 ^ invKeySchedule[3];\n      ksRow = 4;\n      for (i2 = 1; i2 < nRounds; i2++) {\n        t0 = invSubMix0[s0 >>> 24] ^ invSubMix1[s1 >> 16 & 255] ^ invSubMix2[s2 >> 8 & 255] ^ invSubMix3[s3 & 255] ^ invKeySchedule[ksRow];\n        t1 = invSubMix0[s1 >>> 24] ^ invSubMix1[s2 >> 16 & 255] ^ invSubMix2[s3 >> 8 & 255] ^ invSubMix3[s0 & 255] ^ invKeySchedule[ksRow + 1];\n        t2 = invSubMix0[s2 >>> 24] ^ invSubMix1[s3 >> 16 & 255] ^ invSubMix2[s0 >> 8 & 255] ^ invSubMix3[s1 & 255] ^ invKeySchedule[ksRow + 2];\n        t3 = invSubMix0[s3 >>> 24] ^ invSubMix1[s0 >> 16 & 255] ^ invSubMix2[s1 >> 8 & 255] ^ invSubMix3[s2 & 255] ^ invKeySchedule[ksRow + 3];\n        s0 = t0;\n        s1 = t1;\n        s2 = t2;\n        s3 = t3;\n        ksRow = ksRow + 4;\n      }\n      t0 = invSBOX[s0 >>> 24] << 24 ^ invSBOX[s1 >> 16 & 255] << 16 ^ invSBOX[s2 >> 8 & 255] << 8 ^ invSBOX[s3 & 255] ^ invKeySchedule[ksRow];\n      t1 = invSBOX[s1 >>> 24] << 24 ^ invSBOX[s2 >> 16 & 255] << 16 ^ invSBOX[s3 >> 8 & 255] << 8 ^ invSBOX[s0 & 255] ^ invKeySchedule[ksRow + 1];\n      t2 = invSBOX[s2 >>> 24] << 24 ^ invSBOX[s3 >> 16 & 255] << 16 ^ invSBOX[s0 >> 8 & 255] << 8 ^ invSBOX[s1 & 255] ^ invKeySchedule[ksRow + 2];\n      t3 = invSBOX[s3 >>> 24] << 24 ^ invSBOX[s0 >> 16 & 255] << 16 ^ invSBOX[s1 >> 8 & 255] << 8 ^ invSBOX[s2 & 255] ^ invKeySchedule[ksRow + 3];\n      outputInt32[offset] = swapWord(t0 ^ initVector0);\n      outputInt32[offset + 1] = swapWord(t3 ^ initVector1);\n      outputInt32[offset + 2] = swapWord(t2 ^ initVector2);\n      outputInt32[offset + 3] = swapWord(t1 ^ initVector3);\n      initVector0 = inputWords0;\n      initVector1 = inputWords1;\n      initVector2 = inputWords2;\n      initVector3 = inputWords3;\n      offset = offset + 4;\n    }\n    return outputInt32.buffer;\n  }\n};\nvar CHUNK_SIZE = 16;\nvar Decrypter = class {\n  constructor(config, {\n    removePKCS7Padding = true\n  } = {}) {\n    this.logEnabled = true;\n    this.removePKCS7Padding = void 0;\n    this.subtle = null;\n    this.softwareDecrypter = null;\n    this.key = null;\n    this.fastAesKey = null;\n    this.remainderData = null;\n    this.currentIV = null;\n    this.currentResult = null;\n    this.useSoftware = void 0;\n    this.useSoftware = config.enableSoftwareAES;\n    this.removePKCS7Padding = removePKCS7Padding;\n    if (removePKCS7Padding) {\n      try {\n        const browserCrypto = self.crypto;\n        if (browserCrypto) {\n          this.subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\n        }\n      } catch (e) {\n      }\n    }\n    this.useSoftware = !this.subtle;\n  }\n  destroy() {\n    this.subtle = null;\n    this.softwareDecrypter = null;\n    this.key = null;\n    this.fastAesKey = null;\n    this.remainderData = null;\n    this.currentIV = null;\n    this.currentResult = null;\n  }\n  isSync() {\n    return this.useSoftware;\n  }\n  flush() {\n    const {\n      currentResult,\n      remainderData\n    } = this;\n    if (!currentResult || remainderData) {\n      this.reset();\n      return null;\n    }\n    const data = new Uint8Array(currentResult);\n    this.reset();\n    if (this.removePKCS7Padding) {\n      return removePadding(data);\n    }\n    return data;\n  }\n  reset() {\n    this.currentResult = null;\n    this.currentIV = null;\n    this.remainderData = null;\n    if (this.softwareDecrypter) {\n      this.softwareDecrypter = null;\n    }\n  }\n  decrypt(data, key, iv) {\n    if (this.useSoftware) {\n      return new Promise((resolve, reject) => {\n        this.softwareDecrypt(new Uint8Array(data), key, iv);\n        const decryptResult = this.flush();\n        if (decryptResult) {\n          resolve(decryptResult.buffer);\n        } else {\n          reject(new Error(\"[softwareDecrypt] Failed to decrypt data\"));\n        }\n      });\n    }\n    return this.webCryptoDecrypt(new Uint8Array(data), key, iv);\n  }\n  // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached\n  // data is handled in the flush() call\n  softwareDecrypt(data, key, iv) {\n    const {\n      currentIV,\n      currentResult,\n      remainderData\n    } = this;\n    this.logOnce(\"JS AES decrypt\");\n    if (remainderData) {\n      data = appendUint8Array(remainderData, data);\n      this.remainderData = null;\n    }\n    const currentChunk = this.getValidChunk(data);\n    if (!currentChunk.length) {\n      return null;\n    }\n    if (currentIV) {\n      iv = currentIV;\n    }\n    let softwareDecrypter = this.softwareDecrypter;\n    if (!softwareDecrypter) {\n      softwareDecrypter = this.softwareDecrypter = new AESDecryptor();\n    }\n    softwareDecrypter.expandKey(key);\n    const result = currentResult;\n    this.currentResult = softwareDecrypter.decrypt(currentChunk.buffer, 0, iv);\n    this.currentIV = sliceUint8(currentChunk, -16).buffer;\n    if (!result) {\n      return null;\n    }\n    return result;\n  }\n  webCryptoDecrypt(data, key, iv) {\n    if (this.key !== key || !this.fastAesKey) {\n      if (!this.subtle) {\n        return Promise.resolve(this.onWebCryptoError(data, key, iv));\n      }\n      this.key = key;\n      this.fastAesKey = new FastAESKey(this.subtle, key);\n    }\n    return this.fastAesKey.expandKey().then((aesKey) => {\n      if (!this.subtle) {\n        return Promise.reject(new Error(\"web crypto not initialized\"));\n      }\n      this.logOnce(\"WebCrypto AES decrypt\");\n      const crypto2 = new AESCrypto(this.subtle, new Uint8Array(iv));\n      return crypto2.decrypt(data.buffer, aesKey);\n    }).catch((err) => {\n      logger.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${err.name}: ${err.message}`);\n      return this.onWebCryptoError(data, key, iv);\n    });\n  }\n  onWebCryptoError(data, key, iv) {\n    this.useSoftware = true;\n    this.logEnabled = true;\n    this.softwareDecrypt(data, key, iv);\n    const decryptResult = this.flush();\n    if (decryptResult) {\n      return decryptResult.buffer;\n    }\n    throw new Error(\"WebCrypto and softwareDecrypt: failed to decrypt data\");\n  }\n  getValidChunk(data) {\n    let currentChunk = data;\n    const splitPoint = data.length - data.length % CHUNK_SIZE;\n    if (splitPoint !== data.length) {\n      currentChunk = sliceUint8(data, 0, splitPoint);\n      this.remainderData = sliceUint8(data, splitPoint);\n    }\n    return currentChunk;\n  }\n  logOnce(msg) {\n    if (!this.logEnabled) {\n      return;\n    }\n    logger.log(`[decrypter]: ${msg}`);\n    this.logEnabled = false;\n  }\n};\nvar TimeRanges = {\n  toString: function(r10) {\n    let log = \"\";\n    const len = r10.length;\n    for (let i2 = 0; i2 < len; i2++) {\n      log += `[${r10.start(i2).toFixed(3)}-${r10.end(i2).toFixed(3)}]`;\n    }\n    return log;\n  }\n};\nvar State = {\n  STOPPED: \"STOPPED\",\n  IDLE: \"IDLE\",\n  KEY_LOADING: \"KEY_LOADING\",\n  FRAG_LOADING: \"FRAG_LOADING\",\n  FRAG_LOADING_WAITING_RETRY: \"FRAG_LOADING_WAITING_RETRY\",\n  WAITING_TRACK: \"WAITING_TRACK\",\n  PARSING: \"PARSING\",\n  PARSED: \"PARSED\",\n  ENDED: \"ENDED\",\n  ERROR: \"ERROR\",\n  WAITING_INIT_PTS: \"WAITING_INIT_PTS\",\n  WAITING_LEVEL: \"WAITING_LEVEL\"\n};\nvar BaseStreamController = class extends TaskLoop {\n  constructor(hls, fragmentTracker, keyLoader, logPrefix, playlistType) {\n    super();\n    this.hls = void 0;\n    this.fragPrevious = null;\n    this.fragCurrent = null;\n    this.fragmentTracker = void 0;\n    this.transmuxer = null;\n    this._state = State.STOPPED;\n    this.playlistType = void 0;\n    this.media = null;\n    this.mediaBuffer = null;\n    this.config = void 0;\n    this.bitrateTest = false;\n    this.lastCurrentTime = 0;\n    this.nextLoadPosition = 0;\n    this.startPosition = 0;\n    this.startTimeOffset = null;\n    this.loadedmetadata = false;\n    this.retryDate = 0;\n    this.levels = null;\n    this.fragmentLoader = void 0;\n    this.keyLoader = void 0;\n    this.levelLastLoaded = null;\n    this.startFragRequested = false;\n    this.decrypter = void 0;\n    this.initPTS = [];\n    this.buffering = true;\n    this.onvseeking = null;\n    this.onvended = null;\n    this.logPrefix = \"\";\n    this.log = void 0;\n    this.warn = void 0;\n    this.playlistType = playlistType;\n    this.logPrefix = logPrefix;\n    this.log = logger.log.bind(logger, `${logPrefix}:`);\n    this.warn = logger.warn.bind(logger, `${logPrefix}:`);\n    this.hls = hls;\n    this.fragmentLoader = new FragmentLoader(hls.config);\n    this.keyLoader = keyLoader;\n    this.fragmentTracker = fragmentTracker;\n    this.config = hls.config;\n    this.decrypter = new Decrypter(hls.config);\n    hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n  }\n  doTick() {\n    this.onTickEnd();\n  }\n  onTickEnd() {\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  startLoad(startPosition) {\n  }\n  stopLoad() {\n    this.fragmentLoader.abort();\n    this.keyLoader.abort(this.playlistType);\n    const frag = this.fragCurrent;\n    if (frag != null && frag.loader) {\n      frag.abortRequests();\n      this.fragmentTracker.removeFragment(frag);\n    }\n    this.resetTransmuxer();\n    this.fragCurrent = null;\n    this.fragPrevious = null;\n    this.clearInterval();\n    this.clearNextTick();\n    this.state = State.STOPPED;\n  }\n  pauseBuffering() {\n    this.buffering = false;\n  }\n  resumeBuffering() {\n    this.buffering = true;\n  }\n  _streamEnded(bufferInfo, levelDetails) {\n    if (levelDetails.live || bufferInfo.nextStart || !bufferInfo.end || !this.media) {\n      return false;\n    }\n    const partList = levelDetails.partList;\n    if (partList != null && partList.length) {\n      const lastPart = partList[partList.length - 1];\n      const lastPartBuffered = BufferHelper.isBuffered(this.media, lastPart.start + lastPart.duration / 2);\n      return lastPartBuffered;\n    }\n    const playlistType = levelDetails.fragments[levelDetails.fragments.length - 1].type;\n    return this.fragmentTracker.isEndListAppended(playlistType);\n  }\n  getLevelDetails() {\n    if (this.levels && this.levelLastLoaded !== null) {\n      var _this$levelLastLoaded;\n      return (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details;\n    }\n  }\n  onMediaAttached(event, data) {\n    const media = this.media = this.mediaBuffer = data.media;\n    this.onvseeking = this.onMediaSeeking.bind(this);\n    this.onvended = this.onMediaEnded.bind(this);\n    media.addEventListener(\"seeking\", this.onvseeking);\n    media.addEventListener(\"ended\", this.onvended);\n    const config = this.config;\n    if (this.levels && config.autoStartLoad && this.state === State.STOPPED) {\n      this.startLoad(config.startPosition);\n    }\n  }\n  onMediaDetaching() {\n    const media = this.media;\n    if (media != null && media.ended) {\n      this.log(\"MSE detaching and video ended, reset startPosition\");\n      this.startPosition = this.lastCurrentTime = 0;\n    }\n    if (media && this.onvseeking && this.onvended) {\n      media.removeEventListener(\"seeking\", this.onvseeking);\n      media.removeEventListener(\"ended\", this.onvended);\n      this.onvseeking = this.onvended = null;\n    }\n    if (this.keyLoader) {\n      this.keyLoader.detach();\n    }\n    this.media = this.mediaBuffer = null;\n    this.loadedmetadata = false;\n    this.fragmentTracker.removeAllFragments();\n    this.stopLoad();\n  }\n  onMediaSeeking() {\n    const {\n      config,\n      fragCurrent,\n      media,\n      mediaBuffer,\n      state\n    } = this;\n    const currentTime = media ? media.currentTime : 0;\n    const bufferInfo = BufferHelper.bufferInfo(mediaBuffer ? mediaBuffer : media, currentTime, config.maxBufferHole);\n    this.log(`media seeking to ${isFiniteNumber(currentTime) ? currentTime.toFixed(3) : currentTime}, state: ${state}`);\n    if (this.state === State.ENDED) {\n      this.resetLoadingState();\n    } else if (fragCurrent) {\n      const tolerance = config.maxFragLookUpTolerance;\n      const fragStartOffset = fragCurrent.start - tolerance;\n      const fragEndOffset = fragCurrent.start + fragCurrent.duration + tolerance;\n      if (!bufferInfo.len || fragEndOffset < bufferInfo.start || fragStartOffset > bufferInfo.end) {\n        const pastFragment = currentTime > fragEndOffset;\n        if (currentTime < fragStartOffset || pastFragment) {\n          if (pastFragment && fragCurrent.loader) {\n            this.log(\"seeking outside of buffer while fragment load in progress, cancel fragment load\");\n            fragCurrent.abortRequests();\n            this.resetLoadingState();\n          }\n          this.fragPrevious = null;\n        }\n      }\n    }\n    if (media) {\n      this.fragmentTracker.removeFragmentsInRange(currentTime, Infinity, this.playlistType, true);\n      this.lastCurrentTime = currentTime;\n    }\n    if (!this.loadedmetadata && !bufferInfo.len) {\n      this.nextLoadPosition = this.startPosition = currentTime;\n    }\n    this.tickImmediate();\n  }\n  onMediaEnded() {\n    this.startPosition = this.lastCurrentTime = 0;\n  }\n  onManifestLoaded(event, data) {\n    this.startTimeOffset = data.startTimeOffset;\n    this.initPTS = [];\n  }\n  onHandlerDestroying() {\n    this.hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    this.stopLoad();\n    super.onHandlerDestroying();\n    this.hls = null;\n  }\n  onHandlerDestroyed() {\n    this.state = State.STOPPED;\n    if (this.fragmentLoader) {\n      this.fragmentLoader.destroy();\n    }\n    if (this.keyLoader) {\n      this.keyLoader.destroy();\n    }\n    if (this.decrypter) {\n      this.decrypter.destroy();\n    }\n    this.hls = this.log = this.warn = this.decrypter = this.keyLoader = this.fragmentLoader = this.fragmentTracker = null;\n    super.onHandlerDestroyed();\n  }\n  loadFragment(frag, level, targetBufferTime) {\n    this._loadFragForPlayback(frag, level, targetBufferTime);\n  }\n  _loadFragForPlayback(frag, level, targetBufferTime) {\n    const progressCallback = (data) => {\n      if (this.fragContextChanged(frag)) {\n        this.warn(`Fragment ${frag.sn}${data.part ? \" p: \" + data.part.index : \"\"} of level ${frag.level} was dropped during download.`);\n        this.fragmentTracker.removeFragment(frag);\n        return;\n      }\n      frag.stats.chunkCount++;\n      this._handleFragmentLoadProgress(data);\n    };\n    this._doFragLoad(frag, level, targetBufferTime, progressCallback).then((data) => {\n      if (!data) {\n        return;\n      }\n      const state = this.state;\n      if (this.fragContextChanged(frag)) {\n        if (state === State.FRAG_LOADING || !this.fragCurrent && state === State.PARSING) {\n          this.fragmentTracker.removeFragment(frag);\n          this.state = State.IDLE;\n        }\n        return;\n      }\n      if (\"payload\" in data) {\n        this.log(`Loaded fragment ${frag.sn} of level ${frag.level}`);\n        this.hls.trigger(Events.FRAG_LOADED, data);\n      }\n      this._handleFragmentLoadComplete(data);\n    }).catch((reason) => {\n      if (this.state === State.STOPPED || this.state === State.ERROR) {\n        return;\n      }\n      this.warn(`Frag error: ${(reason == null ? void 0 : reason.message) || reason}`);\n      this.resetFragmentLoading(frag);\n    });\n  }\n  clearTrackerIfNeeded(frag) {\n    var _this$mediaBuffer;\n    const {\n      fragmentTracker\n    } = this;\n    const fragState = fragmentTracker.getState(frag);\n    if (fragState === FragmentState.APPENDING) {\n      const playlistType = frag.type;\n      const bufferedInfo = this.getFwdBufferInfo(this.mediaBuffer, playlistType);\n      const minForwardBufferLength = Math.max(frag.duration, bufferedInfo ? bufferedInfo.len : this.config.maxBufferLength);\n      const backtrackFragment = this.backtrackFragment;\n      const backtracked = backtrackFragment ? frag.sn - backtrackFragment.sn : 0;\n      if (backtracked === 1 || this.reduceMaxBufferLength(minForwardBufferLength, frag.duration)) {\n        fragmentTracker.removeFragment(frag);\n      }\n    } else if (((_this$mediaBuffer = this.mediaBuffer) == null ? void 0 : _this$mediaBuffer.buffered.length) === 0) {\n      fragmentTracker.removeAllFragments();\n    } else if (fragmentTracker.hasParts(frag.type)) {\n      fragmentTracker.detectPartialFragments({\n        frag,\n        part: null,\n        stats: frag.stats,\n        id: frag.type\n      });\n      if (fragmentTracker.getState(frag) === FragmentState.PARTIAL) {\n        fragmentTracker.removeFragment(frag);\n      }\n    }\n  }\n  checkLiveUpdate(details) {\n    if (details.updated && !details.live) {\n      const lastFragment = details.fragments[details.fragments.length - 1];\n      this.fragmentTracker.detectPartialFragments({\n        frag: lastFragment,\n        part: null,\n        stats: lastFragment.stats,\n        id: lastFragment.type\n      });\n    }\n    if (!details.fragments[0]) {\n      details.deltaUpdateFailed = true;\n    }\n  }\n  flushMainBuffer(startOffset, endOffset, type = null) {\n    if (!(startOffset - endOffset)) {\n      return;\n    }\n    const flushScope = {\n      startOffset,\n      endOffset,\n      type\n    };\n    this.hls.trigger(Events.BUFFER_FLUSHING, flushScope);\n  }\n  _loadInitSegment(frag, level) {\n    this._doFragLoad(frag, level).then((data) => {\n      if (!data || this.fragContextChanged(frag) || !this.levels) {\n        throw new Error(\"init load aborted\");\n      }\n      return data;\n    }).then((data) => {\n      const {\n        hls\n      } = this;\n      const {\n        payload\n      } = data;\n      const decryptData = frag.decryptdata;\n      if (payload && payload.byteLength > 0 && decryptData != null && decryptData.key && decryptData.iv && decryptData.method === \"AES-128\") {\n        const startTime = self.performance.now();\n        return this.decrypter.decrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).catch((err) => {\n          hls.trigger(Events.ERROR, {\n            type: ErrorTypes.MEDIA_ERROR,\n            details: ErrorDetails.FRAG_DECRYPT_ERROR,\n            fatal: false,\n            error: err,\n            reason: err.message,\n            frag\n          });\n          throw err;\n        }).then((decryptedData) => {\n          const endTime = self.performance.now();\n          hls.trigger(Events.FRAG_DECRYPTED, {\n            frag,\n            payload: decryptedData,\n            stats: {\n              tstart: startTime,\n              tdecrypt: endTime\n            }\n          });\n          data.payload = decryptedData;\n          return this.completeInitSegmentLoad(data);\n        });\n      }\n      return this.completeInitSegmentLoad(data);\n    }).catch((reason) => {\n      if (this.state === State.STOPPED || this.state === State.ERROR) {\n        return;\n      }\n      this.warn(reason);\n      this.resetFragmentLoading(frag);\n    });\n  }\n  completeInitSegmentLoad(data) {\n    const {\n      levels\n    } = this;\n    if (!levels) {\n      throw new Error(\"init load aborted, missing levels\");\n    }\n    const stats = data.frag.stats;\n    this.state = State.IDLE;\n    data.frag.data = new Uint8Array(data.payload);\n    stats.parsing.start = stats.buffering.start = self.performance.now();\n    stats.parsing.end = stats.buffering.end = self.performance.now();\n    this.tick();\n  }\n  fragContextChanged(frag) {\n    const {\n      fragCurrent\n    } = this;\n    return !frag || !fragCurrent || frag.sn !== fragCurrent.sn || frag.level !== fragCurrent.level;\n  }\n  fragBufferedComplete(frag, part) {\n    var _frag$startPTS, _frag$endPTS, _this$fragCurrent, _this$fragPrevious;\n    const media = this.mediaBuffer ? this.mediaBuffer : this.media;\n    this.log(`Buffered ${frag.type} sn: ${frag.sn}${part ? \" part: \" + part.index : \"\"} of ${this.playlistType === PlaylistLevelType.MAIN ? \"level\" : \"track\"} ${frag.level} (frag:[${((_frag$startPTS = frag.startPTS) != null ? _frag$startPTS : NaN).toFixed(3)}-${((_frag$endPTS = frag.endPTS) != null ? _frag$endPTS : NaN).toFixed(3)}] > buffer:${media ? TimeRanges.toString(BufferHelper.getBuffered(media)) : \"(detached)\"})`);\n    if (frag.sn !== \"initSegment\") {\n      var _this$levels;\n      if (frag.type !== PlaylistLevelType.SUBTITLE) {\n        const el = frag.elementaryStreams;\n        if (!Object.keys(el).some((type) => !!el[type])) {\n          this.state = State.IDLE;\n          return;\n        }\n      }\n      const level = (_this$levels = this.levels) == null ? void 0 : _this$levels[frag.level];\n      if (level != null && level.fragmentError) {\n        this.log(`Resetting level fragment error count of ${level.fragmentError} on frag buffered`);\n        level.fragmentError = 0;\n      }\n    }\n    this.state = State.IDLE;\n    if (!media) {\n      return;\n    }\n    if (!this.loadedmetadata && frag.type == PlaylistLevelType.MAIN && media.buffered.length && ((_this$fragCurrent = this.fragCurrent) == null ? void 0 : _this$fragCurrent.sn) === ((_this$fragPrevious = this.fragPrevious) == null ? void 0 : _this$fragPrevious.sn)) {\n      this.loadedmetadata = true;\n      this.seekToStartPos();\n    }\n    this.tick();\n  }\n  seekToStartPos() {\n  }\n  _handleFragmentLoadComplete(fragLoadedEndData) {\n    const {\n      transmuxer\n    } = this;\n    if (!transmuxer) {\n      return;\n    }\n    const {\n      frag,\n      part,\n      partsLoaded\n    } = fragLoadedEndData;\n    const complete = !partsLoaded || partsLoaded.length === 0 || partsLoaded.some((fragLoaded) => !fragLoaded);\n    const chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount + 1, 0, part ? part.index : -1, !complete);\n    transmuxer.flush(chunkMeta);\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  _handleFragmentLoadProgress(frag) {\n  }\n  _doFragLoad(frag, level, targetBufferTime = null, progressCallback) {\n    var _frag$decryptdata;\n    const details = level == null ? void 0 : level.details;\n    if (!this.levels || !details) {\n      throw new Error(`frag load aborted, missing level${details ? \"\" : \" detail\"}s`);\n    }\n    let keyLoadingPromise = null;\n    if (frag.encrypted && !((_frag$decryptdata = frag.decryptdata) != null && _frag$decryptdata.key)) {\n      this.log(`Loading key for ${frag.sn} of [${details.startSN}-${details.endSN}], ${this.logPrefix === \"[stream-controller]\" ? \"level\" : \"track\"} ${frag.level}`);\n      this.state = State.KEY_LOADING;\n      this.fragCurrent = frag;\n      keyLoadingPromise = this.keyLoader.load(frag).then((keyLoadedData) => {\n        if (!this.fragContextChanged(keyLoadedData.frag)) {\n          this.hls.trigger(Events.KEY_LOADED, keyLoadedData);\n          if (this.state === State.KEY_LOADING) {\n            this.state = State.IDLE;\n          }\n          return keyLoadedData;\n        }\n      });\n      this.hls.trigger(Events.KEY_LOADING, {\n        frag\n      });\n      if (this.fragCurrent === null) {\n        keyLoadingPromise = Promise.reject(new Error(`frag load aborted, context changed in KEY_LOADING`));\n      }\n    } else if (!frag.encrypted && details.encryptedFragments.length) {\n      this.keyLoader.loadClear(frag, details.encryptedFragments);\n    }\n    targetBufferTime = Math.max(frag.start, targetBufferTime || 0);\n    if (this.config.lowLatencyMode && frag.sn !== \"initSegment\") {\n      const partList = details.partList;\n      if (partList && progressCallback) {\n        if (targetBufferTime > frag.end && details.fragmentHint) {\n          frag = details.fragmentHint;\n        }\n        const partIndex = this.getNextPart(partList, frag, targetBufferTime);\n        if (partIndex > -1) {\n          const part = partList[partIndex];\n          this.log(`Loading part sn: ${frag.sn} p: ${part.index} cc: ${frag.cc} of playlist [${details.startSN}-${details.endSN}] parts [0-${partIndex}-${partList.length - 1}] ${this.logPrefix === \"[stream-controller]\" ? \"level\" : \"track\"}: ${frag.level}, target: ${parseFloat(targetBufferTime.toFixed(3))}`);\n          this.nextLoadPosition = part.start + part.duration;\n          this.state = State.FRAG_LOADING;\n          let _result;\n          if (keyLoadingPromise) {\n            _result = keyLoadingPromise.then((keyLoadedData) => {\n              if (!keyLoadedData || this.fragContextChanged(keyLoadedData.frag)) {\n                return null;\n              }\n              return this.doFragPartsLoad(frag, part, level, progressCallback);\n            }).catch((error) => this.handleFragLoadError(error));\n          } else {\n            _result = this.doFragPartsLoad(frag, part, level, progressCallback).catch((error) => this.handleFragLoadError(error));\n          }\n          this.hls.trigger(Events.FRAG_LOADING, {\n            frag,\n            part,\n            targetBufferTime\n          });\n          if (this.fragCurrent === null) {\n            return Promise.reject(new Error(`frag load aborted, context changed in FRAG_LOADING parts`));\n          }\n          return _result;\n        } else if (!frag.url || this.loadedEndOfParts(partList, targetBufferTime)) {\n          return Promise.resolve(null);\n        }\n      }\n    }\n    this.log(`Loading fragment ${frag.sn} cc: ${frag.cc} ${details ? \"of [\" + details.startSN + \"-\" + details.endSN + \"] \" : \"\"}${this.logPrefix === \"[stream-controller]\" ? \"level\" : \"track\"}: ${frag.level}, target: ${parseFloat(targetBufferTime.toFixed(3))}`);\n    if (isFiniteNumber(frag.sn) && !this.bitrateTest) {\n      this.nextLoadPosition = frag.start + frag.duration;\n    }\n    this.state = State.FRAG_LOADING;\n    const dataOnProgress = this.config.progressive;\n    let result;\n    if (dataOnProgress && keyLoadingPromise) {\n      result = keyLoadingPromise.then((keyLoadedData) => {\n        if (!keyLoadedData || this.fragContextChanged(keyLoadedData == null ? void 0 : keyLoadedData.frag)) {\n          return null;\n        }\n        return this.fragmentLoader.load(frag, progressCallback);\n      }).catch((error) => this.handleFragLoadError(error));\n    } else {\n      result = Promise.all([this.fragmentLoader.load(frag, dataOnProgress ? progressCallback : void 0), keyLoadingPromise]).then(([fragLoadedData]) => {\n        if (!dataOnProgress && fragLoadedData && progressCallback) {\n          progressCallback(fragLoadedData);\n        }\n        return fragLoadedData;\n      }).catch((error) => this.handleFragLoadError(error));\n    }\n    this.hls.trigger(Events.FRAG_LOADING, {\n      frag,\n      targetBufferTime\n    });\n    if (this.fragCurrent === null) {\n      return Promise.reject(new Error(`frag load aborted, context changed in FRAG_LOADING`));\n    }\n    return result;\n  }\n  doFragPartsLoad(frag, fromPart, level, progressCallback) {\n    return new Promise((resolve, reject) => {\n      var _level$details;\n      const partsLoaded = [];\n      const initialPartList = (_level$details = level.details) == null ? void 0 : _level$details.partList;\n      const loadPart = (part) => {\n        this.fragmentLoader.loadPart(frag, part, progressCallback).then((partLoadedData) => {\n          partsLoaded[part.index] = partLoadedData;\n          const loadedPart = partLoadedData.part;\n          this.hls.trigger(Events.FRAG_LOADED, partLoadedData);\n          const nextPart = getPartWith(level, frag.sn, part.index + 1) || findPart(initialPartList, frag.sn, part.index + 1);\n          if (nextPart) {\n            loadPart(nextPart);\n          } else {\n            return resolve({\n              frag,\n              part: loadedPart,\n              partsLoaded\n            });\n          }\n        }).catch(reject);\n      };\n      loadPart(fromPart);\n    });\n  }\n  handleFragLoadError(error) {\n    if (\"data\" in error) {\n      const data = error.data;\n      if (error.data && data.details === ErrorDetails.INTERNAL_ABORTED) {\n        this.handleFragLoadAborted(data.frag, data.part);\n      } else {\n        this.hls.trigger(Events.ERROR, data);\n      }\n    } else {\n      this.hls.trigger(Events.ERROR, {\n        type: ErrorTypes.OTHER_ERROR,\n        details: ErrorDetails.INTERNAL_EXCEPTION,\n        err: error,\n        error,\n        fatal: true\n      });\n    }\n    return null;\n  }\n  _handleTransmuxerFlush(chunkMeta) {\n    const context = this.getCurrentContext(chunkMeta);\n    if (!context || this.state !== State.PARSING) {\n      if (!this.fragCurrent && this.state !== State.STOPPED && this.state !== State.ERROR) {\n        this.state = State.IDLE;\n      }\n      return;\n    }\n    const {\n      frag,\n      part,\n      level\n    } = context;\n    const now2 = self.performance.now();\n    frag.stats.parsing.end = now2;\n    if (part) {\n      part.stats.parsing.end = now2;\n    }\n    this.updateLevelTiming(frag, part, level, chunkMeta.partial);\n  }\n  getCurrentContext(chunkMeta) {\n    const {\n      levels,\n      fragCurrent\n    } = this;\n    const {\n      level: levelIndex,\n      sn,\n      part: partIndex\n    } = chunkMeta;\n    if (!(levels != null && levels[levelIndex])) {\n      this.warn(`Levels object was unset while buffering fragment ${sn} of level ${levelIndex}. The current chunk will not be buffered.`);\n      return null;\n    }\n    const level = levels[levelIndex];\n    const part = partIndex > -1 ? getPartWith(level, sn, partIndex) : null;\n    const frag = part ? part.fragment : getFragmentWithSN(level, sn, fragCurrent);\n    if (!frag) {\n      return null;\n    }\n    if (fragCurrent && fragCurrent !== frag) {\n      frag.stats = fragCurrent.stats;\n    }\n    return {\n      frag,\n      part,\n      level\n    };\n  }\n  bufferFragmentData(data, frag, part, chunkMeta, noBacktracking) {\n    var _buffer;\n    if (!data || this.state !== State.PARSING) {\n      return;\n    }\n    const {\n      data1,\n      data2\n    } = data;\n    let buffer = data1;\n    if (data1 && data2) {\n      buffer = appendUint8Array(data1, data2);\n    }\n    if (!((_buffer = buffer) != null && _buffer.length)) {\n      return;\n    }\n    const segment = {\n      type: data.type,\n      frag,\n      part,\n      chunkMeta,\n      parent: frag.type,\n      data: buffer\n    };\n    this.hls.trigger(Events.BUFFER_APPENDING, segment);\n    if (data.dropped && data.independent && !part) {\n      if (noBacktracking) {\n        return;\n      }\n      this.flushBufferGap(frag);\n    }\n  }\n  flushBufferGap(frag) {\n    const media = this.media;\n    if (!media) {\n      return;\n    }\n    if (!BufferHelper.isBuffered(media, media.currentTime)) {\n      this.flushMainBuffer(0, frag.start);\n      return;\n    }\n    const currentTime = media.currentTime;\n    const bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n    const fragDuration = frag.duration;\n    const segmentFraction = Math.min(this.config.maxFragLookUpTolerance * 2, fragDuration * 0.25);\n    const start = Math.max(Math.min(frag.start - segmentFraction, bufferInfo.end - segmentFraction), currentTime + segmentFraction);\n    if (frag.start - start > segmentFraction) {\n      this.flushMainBuffer(start, frag.start);\n    }\n  }\n  getFwdBufferInfo(bufferable, type) {\n    const pos = this.getLoadPosition();\n    if (!isFiniteNumber(pos)) {\n      return null;\n    }\n    return this.getFwdBufferInfoAtPos(bufferable, pos, type);\n  }\n  getFwdBufferInfoAtPos(bufferable, pos, type) {\n    const {\n      config: {\n        maxBufferHole\n      }\n    } = this;\n    const bufferInfo = BufferHelper.bufferInfo(bufferable, pos, maxBufferHole);\n    if (bufferInfo.len === 0 && bufferInfo.nextStart !== void 0) {\n      const bufferedFragAtPos = this.fragmentTracker.getBufferedFrag(pos, type);\n      if (bufferedFragAtPos && bufferInfo.nextStart < bufferedFragAtPos.end) {\n        return BufferHelper.bufferInfo(bufferable, pos, Math.max(bufferInfo.nextStart, maxBufferHole));\n      }\n    }\n    return bufferInfo;\n  }\n  getMaxBufferLength(levelBitrate) {\n    const {\n      config\n    } = this;\n    let maxBufLen;\n    if (levelBitrate) {\n      maxBufLen = Math.max(8 * config.maxBufferSize / levelBitrate, config.maxBufferLength);\n    } else {\n      maxBufLen = config.maxBufferLength;\n    }\n    return Math.min(maxBufLen, config.maxMaxBufferLength);\n  }\n  reduceMaxBufferLength(threshold, fragDuration) {\n    const config = this.config;\n    const minLength = Math.max(Math.min(threshold - fragDuration, config.maxBufferLength), fragDuration);\n    const reducedLength = Math.max(threshold - fragDuration * 3, config.maxMaxBufferLength / 2, minLength);\n    if (reducedLength >= minLength) {\n      config.maxMaxBufferLength = reducedLength;\n      this.warn(`Reduce max buffer length to ${reducedLength}s`);\n      return true;\n    }\n    return false;\n  }\n  getAppendedFrag(position, playlistType = PlaylistLevelType.MAIN) {\n    const fragOrPart = this.fragmentTracker.getAppendedFrag(position, PlaylistLevelType.MAIN);\n    if (fragOrPart && \"fragment\" in fragOrPart) {\n      return fragOrPart.fragment;\n    }\n    return fragOrPart;\n  }\n  getNextFragment(pos, levelDetails) {\n    const fragments = levelDetails.fragments;\n    const fragLen = fragments.length;\n    if (!fragLen) {\n      return null;\n    }\n    const {\n      config\n    } = this;\n    const start = fragments[0].start;\n    let frag;\n    if (levelDetails.live) {\n      const initialLiveManifestSize = config.initialLiveManifestSize;\n      if (fragLen < initialLiveManifestSize) {\n        this.warn(`Not enough fragments to start playback (have: ${fragLen}, need: ${initialLiveManifestSize})`);\n        return null;\n      }\n      if (!levelDetails.PTSKnown && !this.startFragRequested && this.startPosition === -1 || pos < start) {\n        frag = this.getInitialLiveFragment(levelDetails, fragments);\n        this.startPosition = this.nextLoadPosition = frag ? this.hls.liveSyncPosition || frag.start : pos;\n      }\n    } else if (pos <= start) {\n      frag = fragments[0];\n    }\n    if (!frag) {\n      const end = config.lowLatencyMode ? levelDetails.partEnd : levelDetails.fragmentEnd;\n      frag = this.getFragmentAtPosition(pos, end, levelDetails);\n    }\n    return this.mapToInitFragWhenRequired(frag);\n  }\n  isLoopLoading(frag, targetBufferTime) {\n    const trackerState = this.fragmentTracker.getState(frag);\n    return (trackerState === FragmentState.OK || trackerState === FragmentState.PARTIAL && !!frag.gap) && this.nextLoadPosition > targetBufferTime;\n  }\n  getNextFragmentLoopLoading(frag, levelDetails, bufferInfo, playlistType, maxBufLen) {\n    const gapStart = frag.gap;\n    const nextFragment = this.getNextFragment(this.nextLoadPosition, levelDetails);\n    if (nextFragment === null) {\n      return nextFragment;\n    }\n    frag = nextFragment;\n    if (gapStart && frag && !frag.gap && bufferInfo.nextStart) {\n      const nextbufferInfo = this.getFwdBufferInfoAtPos(this.mediaBuffer ? this.mediaBuffer : this.media, bufferInfo.nextStart, playlistType);\n      if (nextbufferInfo !== null && bufferInfo.len + nextbufferInfo.len >= maxBufLen) {\n        this.log(`buffer full after gaps in \"${playlistType}\" playlist starting at sn: ${frag.sn}`);\n        return null;\n      }\n    }\n    return frag;\n  }\n  mapToInitFragWhenRequired(frag) {\n    if (frag != null && frag.initSegment && !(frag != null && frag.initSegment.data) && !this.bitrateTest) {\n      return frag.initSegment;\n    }\n    return frag;\n  }\n  getNextPart(partList, frag, targetBufferTime) {\n    let nextPart = -1;\n    let contiguous = false;\n    let independentAttrOmitted = true;\n    for (let i2 = 0, len = partList.length; i2 < len; i2++) {\n      const part = partList[i2];\n      independentAttrOmitted = independentAttrOmitted && !part.independent;\n      if (nextPart > -1 && targetBufferTime < part.start) {\n        break;\n      }\n      const loaded = part.loaded;\n      if (loaded) {\n        nextPart = -1;\n      } else if ((contiguous || part.independent || independentAttrOmitted) && part.fragment === frag) {\n        nextPart = i2;\n      }\n      contiguous = loaded;\n    }\n    return nextPart;\n  }\n  loadedEndOfParts(partList, targetBufferTime) {\n    const lastPart = partList[partList.length - 1];\n    return lastPart && targetBufferTime > lastPart.start && lastPart.loaded;\n  }\n  /*\n   This method is used find the best matching first fragment for a live playlist. This fragment is used to calculate the\n   \"sliding\" of the playlist, which is its offset from the start of playback. After sliding we can compute the real\n   start and end times for each fragment in the playlist (after which this method will not need to be called).\n  */\n  getInitialLiveFragment(levelDetails, fragments) {\n    const fragPrevious = this.fragPrevious;\n    let frag = null;\n    if (fragPrevious) {\n      if (levelDetails.hasProgramDateTime) {\n        this.log(`Live playlist, switching playlist, load frag with same PDT: ${fragPrevious.programDateTime}`);\n        frag = findFragmentByPDT(fragments, fragPrevious.endProgramDateTime, this.config.maxFragLookUpTolerance);\n      }\n      if (!frag) {\n        const targetSN = fragPrevious.sn + 1;\n        if (targetSN >= levelDetails.startSN && targetSN <= levelDetails.endSN) {\n          const fragNext = fragments[targetSN - levelDetails.startSN];\n          if (fragPrevious.cc === fragNext.cc) {\n            frag = fragNext;\n            this.log(`Live playlist, switching playlist, load frag with next SN: ${frag.sn}`);\n          }\n        }\n        if (!frag) {\n          frag = findFragWithCC(fragments, fragPrevious.cc);\n          if (frag) {\n            this.log(`Live playlist, switching playlist, load frag with same CC: ${frag.sn}`);\n          }\n        }\n      }\n    } else {\n      const liveStart = this.hls.liveSyncPosition;\n      if (liveStart !== null) {\n        frag = this.getFragmentAtPosition(liveStart, this.bitrateTest ? levelDetails.fragmentEnd : levelDetails.edge, levelDetails);\n      }\n    }\n    return frag;\n  }\n  /*\n  This method finds the best matching fragment given the provided position.\n   */\n  getFragmentAtPosition(bufferEnd, end, levelDetails) {\n    const {\n      config\n    } = this;\n    let {\n      fragPrevious\n    } = this;\n    let {\n      fragments,\n      endSN\n    } = levelDetails;\n    const {\n      fragmentHint\n    } = levelDetails;\n    const {\n      maxFragLookUpTolerance\n    } = config;\n    const partList = levelDetails.partList;\n    const loadingParts = !!(config.lowLatencyMode && partList != null && partList.length && fragmentHint);\n    if (loadingParts && fragmentHint && !this.bitrateTest) {\n      fragments = fragments.concat(fragmentHint);\n      endSN = fragmentHint.sn;\n    }\n    let frag;\n    if (bufferEnd < end) {\n      const lookupTolerance = bufferEnd > end - maxFragLookUpTolerance ? 0 : maxFragLookUpTolerance;\n      frag = findFragmentByPTS(fragPrevious, fragments, bufferEnd, lookupTolerance);\n    } else {\n      frag = fragments[fragments.length - 1];\n    }\n    if (frag) {\n      const curSNIdx = frag.sn - levelDetails.startSN;\n      const fragState = this.fragmentTracker.getState(frag);\n      if (fragState === FragmentState.OK || fragState === FragmentState.PARTIAL && frag.gap) {\n        fragPrevious = frag;\n      }\n      if (fragPrevious && frag.sn === fragPrevious.sn && (!loadingParts || partList[0].fragment.sn > frag.sn)) {\n        const sameLevel = fragPrevious && frag.level === fragPrevious.level;\n        if (sameLevel) {\n          const nextFrag = fragments[curSNIdx + 1];\n          if (frag.sn < endSN && this.fragmentTracker.getState(nextFrag) !== FragmentState.OK) {\n            frag = nextFrag;\n          } else {\n            frag = null;\n          }\n        }\n      }\n    }\n    return frag;\n  }\n  synchronizeToLiveEdge(levelDetails) {\n    const {\n      config,\n      media\n    } = this;\n    if (!media) {\n      return;\n    }\n    const liveSyncPosition = this.hls.liveSyncPosition;\n    const currentTime = media.currentTime;\n    const start = levelDetails.fragments[0].start;\n    const end = levelDetails.edge;\n    const withinSlidingWindow = currentTime >= start - config.maxFragLookUpTolerance && currentTime <= end;\n    if (liveSyncPosition !== null && media.duration > liveSyncPosition && (currentTime < liveSyncPosition || !withinSlidingWindow)) {\n      const maxLatency = config.liveMaxLatencyDuration !== void 0 ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount * levelDetails.targetduration;\n      if (!withinSlidingWindow && media.readyState < 4 || currentTime < end - maxLatency) {\n        if (!this.loadedmetadata) {\n          this.nextLoadPosition = liveSyncPosition;\n        }\n        if (media.readyState) {\n          this.warn(`Playback: ${currentTime.toFixed(3)} is located too far from the end of live sliding playlist: ${end}, reset currentTime to : ${liveSyncPosition.toFixed(3)}`);\n          media.currentTime = liveSyncPosition;\n        }\n      }\n    }\n  }\n  alignPlaylists(details, previousDetails, switchDetails) {\n    const length = details.fragments.length;\n    if (!length) {\n      this.warn(`No fragments in live playlist`);\n      return 0;\n    }\n    const slidingStart = details.fragments[0].start;\n    const firstLevelLoad = !previousDetails;\n    const aligned = details.alignedSliding && isFiniteNumber(slidingStart);\n    if (firstLevelLoad || !aligned && !slidingStart) {\n      const {\n        fragPrevious\n      } = this;\n      alignStream(fragPrevious, switchDetails, details);\n      const alignedSlidingStart = details.fragments[0].start;\n      this.log(`Live playlist sliding: ${alignedSlidingStart.toFixed(2)} start-sn: ${previousDetails ? previousDetails.startSN : \"na\"}->${details.startSN} prev-sn: ${fragPrevious ? fragPrevious.sn : \"na\"} fragments: ${length}`);\n      return alignedSlidingStart;\n    }\n    return slidingStart;\n  }\n  waitForCdnTuneIn(details) {\n    const advancePartLimit = 3;\n    return details.live && details.canBlockReload && details.partTarget && details.tuneInGoal > Math.max(details.partHoldBack, details.partTarget * advancePartLimit);\n  }\n  setStartPosition(details, sliding) {\n    let startPosition = this.startPosition;\n    if (startPosition < sliding) {\n      startPosition = -1;\n    }\n    if (startPosition === -1 || this.lastCurrentTime === -1) {\n      const offsetInMultivariantPlaylist = this.startTimeOffset !== null;\n      const startTimeOffset = offsetInMultivariantPlaylist ? this.startTimeOffset : details.startTimeOffset;\n      if (startTimeOffset !== null && isFiniteNumber(startTimeOffset)) {\n        startPosition = sliding + startTimeOffset;\n        if (startTimeOffset < 0) {\n          startPosition += details.totalduration;\n        }\n        startPosition = Math.min(Math.max(sliding, startPosition), sliding + details.totalduration);\n        this.log(`Start time offset ${startTimeOffset} found in ${offsetInMultivariantPlaylist ? \"multivariant\" : \"media\"} playlist, adjust startPosition to ${startPosition}`);\n        this.startPosition = startPosition;\n      } else if (details.live) {\n        startPosition = this.hls.liveSyncPosition || sliding;\n      } else {\n        this.startPosition = startPosition = 0;\n      }\n      this.lastCurrentTime = startPosition;\n    }\n    this.nextLoadPosition = startPosition;\n  }\n  getLoadPosition() {\n    const {\n      media\n    } = this;\n    let pos = 0;\n    if (this.loadedmetadata && media) {\n      pos = media.currentTime;\n    } else if (this.nextLoadPosition) {\n      pos = this.nextLoadPosition;\n    }\n    return pos;\n  }\n  handleFragLoadAborted(frag, part) {\n    if (this.transmuxer && frag.sn !== \"initSegment\" && frag.stats.aborted) {\n      this.warn(`Fragment ${frag.sn}${part ? \" part \" + part.index : \"\"} of level ${frag.level} was aborted`);\n      this.resetFragmentLoading(frag);\n    }\n  }\n  resetFragmentLoading(frag) {\n    if (!this.fragCurrent || !this.fragContextChanged(frag) && this.state !== State.FRAG_LOADING_WAITING_RETRY) {\n      this.state = State.IDLE;\n    }\n  }\n  onFragmentOrKeyLoadError(filterType, data) {\n    if (data.chunkMeta && !data.frag) {\n      const context = this.getCurrentContext(data.chunkMeta);\n      if (context) {\n        data.frag = context.frag;\n      }\n    }\n    const frag = data.frag;\n    if (!frag || frag.type !== filterType || !this.levels) {\n      return;\n    }\n    if (this.fragContextChanged(frag)) {\n      var _this$fragCurrent2;\n      this.warn(`Frag load error must match current frag to retry ${frag.url} > ${(_this$fragCurrent2 = this.fragCurrent) == null ? void 0 : _this$fragCurrent2.url}`);\n      return;\n    }\n    const gapTagEncountered = data.details === ErrorDetails.FRAG_GAP;\n    if (gapTagEncountered) {\n      this.fragmentTracker.fragBuffered(frag, true);\n    }\n    const errorAction = data.errorAction;\n    const {\n      action,\n      retryCount = 0,\n      retryConfig\n    } = errorAction || {};\n    if (errorAction && action === NetworkErrorAction.RetryRequest && retryConfig) {\n      this.resetStartWhenNotLoaded(this.levelLastLoaded);\n      const delay2 = getRetryDelay(retryConfig, retryCount);\n      this.warn(`Fragment ${frag.sn} of ${filterType} ${frag.level} errored with ${data.details}, retrying loading ${retryCount + 1}/${retryConfig.maxNumRetry} in ${delay2}ms`);\n      errorAction.resolved = true;\n      this.retryDate = self.performance.now() + delay2;\n      this.state = State.FRAG_LOADING_WAITING_RETRY;\n    } else if (retryConfig && errorAction) {\n      this.resetFragmentErrors(filterType);\n      if (retryCount < retryConfig.maxNumRetry) {\n        if (!gapTagEncountered && action !== NetworkErrorAction.RemoveAlternatePermanently) {\n          errorAction.resolved = true;\n        }\n      } else {\n        logger.warn(`${data.details} reached or exceeded max retry (${retryCount})`);\n        return;\n      }\n    } else if ((errorAction == null ? void 0 : errorAction.action) === NetworkErrorAction.SendAlternateToPenaltyBox) {\n      this.state = State.WAITING_LEVEL;\n    } else {\n      this.state = State.ERROR;\n    }\n    this.tickImmediate();\n  }\n  reduceLengthAndFlushBuffer(data) {\n    if (this.state === State.PARSING || this.state === State.PARSED) {\n      const frag = data.frag;\n      const playlistType = data.parent;\n      const bufferedInfo = this.getFwdBufferInfo(this.mediaBuffer, playlistType);\n      const buffered = bufferedInfo && bufferedInfo.len > 0.5;\n      if (buffered) {\n        this.reduceMaxBufferLength(bufferedInfo.len, (frag == null ? void 0 : frag.duration) || 10);\n      }\n      const flushBuffer = !buffered;\n      if (flushBuffer) {\n        this.warn(`Buffer full error while media.currentTime is not buffered, flush ${playlistType} buffer`);\n      }\n      if (frag) {\n        this.fragmentTracker.removeFragment(frag);\n        this.nextLoadPosition = frag.start;\n      }\n      this.resetLoadingState();\n      return flushBuffer;\n    }\n    return false;\n  }\n  resetFragmentErrors(filterType) {\n    if (filterType === PlaylistLevelType.AUDIO) {\n      this.fragCurrent = null;\n    }\n    if (!this.loadedmetadata) {\n      this.startFragRequested = false;\n    }\n    if (this.state !== State.STOPPED) {\n      this.state = State.IDLE;\n    }\n  }\n  afterBufferFlushed(media, bufferType, playlistType) {\n    if (!media) {\n      return;\n    }\n    const bufferedTimeRanges = BufferHelper.getBuffered(media);\n    this.fragmentTracker.detectEvictedFragments(bufferType, bufferedTimeRanges, playlistType);\n    if (this.state === State.ENDED) {\n      this.resetLoadingState();\n    }\n  }\n  resetLoadingState() {\n    this.log(\"Reset loading state\");\n    this.fragCurrent = null;\n    this.fragPrevious = null;\n    this.state = State.IDLE;\n  }\n  resetStartWhenNotLoaded(level) {\n    if (!this.loadedmetadata) {\n      this.startFragRequested = false;\n      const details = level ? level.details : null;\n      if (details != null && details.live) {\n        this.startPosition = -1;\n        this.setStartPosition(details, 0);\n        this.resetLoadingState();\n      } else {\n        this.nextLoadPosition = this.startPosition;\n      }\n    }\n  }\n  resetWhenMissingContext(chunkMeta) {\n    this.warn(`The loading context changed while buffering fragment ${chunkMeta.sn} of level ${chunkMeta.level}. This chunk will not be buffered.`);\n    this.removeUnbufferedFrags();\n    this.resetStartWhenNotLoaded(this.levelLastLoaded);\n    this.resetLoadingState();\n  }\n  removeUnbufferedFrags(start = 0) {\n    this.fragmentTracker.removeFragmentsInRange(start, Infinity, this.playlistType, false, true);\n  }\n  updateLevelTiming(frag, part, level, partial) {\n    var _this$transmuxer;\n    const details = level.details;\n    if (!details) {\n      this.warn(\"level.details undefined\");\n      return;\n    }\n    const parsed = Object.keys(frag.elementaryStreams).reduce((result, type) => {\n      const info = frag.elementaryStreams[type];\n      if (info) {\n        const parsedDuration = info.endPTS - info.startPTS;\n        if (parsedDuration <= 0) {\n          this.warn(`Could not parse fragment ${frag.sn} ${type} duration reliably (${parsedDuration})`);\n          return result || false;\n        }\n        const drift = partial ? 0 : updateFragPTSDTS(details, frag, info.startPTS, info.endPTS, info.startDTS, info.endDTS);\n        this.hls.trigger(Events.LEVEL_PTS_UPDATED, {\n          details,\n          level,\n          drift,\n          type,\n          frag,\n          start: info.startPTS,\n          end: info.endPTS\n        });\n        return true;\n      }\n      return result;\n    }, false);\n    if (!parsed && ((_this$transmuxer = this.transmuxer) == null ? void 0 : _this$transmuxer.error) === null) {\n      const error = new Error(`Found no media in fragment ${frag.sn} of level ${frag.level} resetting transmuxer to fallback to playlist timing`);\n      if (level.fragmentError === 0) {\n        level.fragmentError++;\n        frag.gap = true;\n        this.fragmentTracker.removeFragment(frag);\n        this.fragmentTracker.fragBuffered(frag, true);\n      }\n      this.warn(error.message);\n      this.hls.trigger(Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.FRAG_PARSING_ERROR,\n        fatal: false,\n        error,\n        frag,\n        reason: `Found no media in msn ${frag.sn} of level \"${level.url}\"`\n      });\n      if (!this.hls) {\n        return;\n      }\n      this.resetTransmuxer();\n    }\n    this.state = State.PARSED;\n    this.hls.trigger(Events.FRAG_PARSED, {\n      frag,\n      part\n    });\n  }\n  resetTransmuxer() {\n    if (this.transmuxer) {\n      this.transmuxer.destroy();\n      this.transmuxer = null;\n    }\n  }\n  recoverWorkerError(data) {\n    if (data.event === \"demuxerWorker\") {\n      this.fragmentTracker.removeAllFragments();\n      this.resetTransmuxer();\n      this.resetStartWhenNotLoaded(this.levelLastLoaded);\n      this.resetLoadingState();\n    }\n  }\n  set state(nextState) {\n    const previousState = this._state;\n    if (previousState !== nextState) {\n      this._state = nextState;\n      this.log(`${previousState}->${nextState}`);\n    }\n  }\n  get state() {\n    return this._state;\n  }\n};\nvar ChunkCache = class {\n  constructor() {\n    this.chunks = [];\n    this.dataLength = 0;\n  }\n  push(chunk) {\n    this.chunks.push(chunk);\n    this.dataLength += chunk.length;\n  }\n  flush() {\n    const {\n      chunks,\n      dataLength\n    } = this;\n    let result;\n    if (!chunks.length) {\n      return new Uint8Array(0);\n    } else if (chunks.length === 1) {\n      result = chunks[0];\n    } else {\n      result = concatUint8Arrays(chunks, dataLength);\n    }\n    this.reset();\n    return result;\n  }\n  reset() {\n    this.chunks.length = 0;\n    this.dataLength = 0;\n  }\n};\nfunction concatUint8Arrays(chunks, dataLength) {\n  const result = new Uint8Array(dataLength);\n  let offset = 0;\n  for (let i2 = 0; i2 < chunks.length; i2++) {\n    const chunk = chunks[i2];\n    result.set(chunk, offset);\n    offset += chunk.length;\n  }\n  return result;\n}\nfunction hasUMDWorker() {\n  return typeof __HLS_WORKER_BUNDLE__ === \"function\";\n}\nfunction injectWorker() {\n  const blob = new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`], {\n    type: \"text/javascript\"\n  });\n  const objectURL = self.URL.createObjectURL(blob);\n  const worker = new self.Worker(objectURL);\n  return {\n    worker,\n    objectURL\n  };\n}\nfunction loadWorker(path) {\n  const scriptURL = new self.URL(path, self.location.href).href;\n  const worker = new self.Worker(scriptURL);\n  return {\n    worker,\n    scriptURL\n  };\n}\nfunction dummyTrack(type = \"\", inputTimeScale = 9e4) {\n  return {\n    type,\n    id: -1,\n    pid: -1,\n    inputTimeScale,\n    sequenceNumber: -1,\n    samples: [],\n    dropped: 0\n  };\n}\nvar BaseAudioDemuxer = class {\n  constructor() {\n    this._audioTrack = void 0;\n    this._id3Track = void 0;\n    this.frameIndex = 0;\n    this.cachedData = null;\n    this.basePTS = null;\n    this.initPTS = null;\n    this.lastPTS = null;\n  }\n  resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n    this._id3Track = {\n      type: \"id3\",\n      id: 3,\n      pid: -1,\n      inputTimeScale: 9e4,\n      sequenceNumber: 0,\n      samples: [],\n      dropped: 0\n    };\n  }\n  resetTimeStamp(deaultTimestamp) {\n    this.initPTS = deaultTimestamp;\n    this.resetContiguity();\n  }\n  resetContiguity() {\n    this.basePTS = null;\n    this.lastPTS = null;\n    this.frameIndex = 0;\n  }\n  canParse(data, offset) {\n    return false;\n  }\n  appendFrame(track, data, offset) {\n  }\n  // feed incoming data to the front of the parsing pipeline\n  demux(data, timeOffset) {\n    if (this.cachedData) {\n      data = appendUint8Array(this.cachedData, data);\n      this.cachedData = null;\n    }\n    let id3Data = getID3Data(data, 0);\n    let offset = id3Data ? id3Data.length : 0;\n    let lastDataIndex;\n    const track = this._audioTrack;\n    const id3Track = this._id3Track;\n    const timestamp = id3Data ? getTimeStamp(id3Data) : void 0;\n    const length = data.length;\n    if (this.basePTS === null || this.frameIndex === 0 && isFiniteNumber(timestamp)) {\n      this.basePTS = initPTSFn(timestamp, timeOffset, this.initPTS);\n      this.lastPTS = this.basePTS;\n    }\n    if (this.lastPTS === null) {\n      this.lastPTS = this.basePTS;\n    }\n    if (id3Data && id3Data.length > 0) {\n      id3Track.samples.push({\n        pts: this.lastPTS,\n        dts: this.lastPTS,\n        data: id3Data,\n        type: MetadataSchema.audioId3,\n        duration: Number.POSITIVE_INFINITY\n      });\n    }\n    while (offset < length) {\n      if (this.canParse(data, offset)) {\n        const frame = this.appendFrame(track, data, offset);\n        if (frame) {\n          this.frameIndex++;\n          this.lastPTS = frame.sample.pts;\n          offset += frame.length;\n          lastDataIndex = offset;\n        } else {\n          offset = length;\n        }\n      } else if (canParse$2(data, offset)) {\n        id3Data = getID3Data(data, offset);\n        id3Track.samples.push({\n          pts: this.lastPTS,\n          dts: this.lastPTS,\n          data: id3Data,\n          type: MetadataSchema.audioId3,\n          duration: Number.POSITIVE_INFINITY\n        });\n        offset += id3Data.length;\n        lastDataIndex = offset;\n      } else {\n        offset++;\n      }\n      if (offset === length && lastDataIndex !== length) {\n        const partialData = sliceUint8(data, lastDataIndex);\n        if (this.cachedData) {\n          this.cachedData = appendUint8Array(this.cachedData, partialData);\n        } else {\n          this.cachedData = partialData;\n        }\n      }\n    }\n    return {\n      audioTrack: track,\n      videoTrack: dummyTrack(),\n      id3Track,\n      textTrack: dummyTrack()\n    };\n  }\n  demuxSampleAes(data, keyData, timeOffset) {\n    return Promise.reject(new Error(`[${this}] This demuxer does not support Sample-AES decryption`));\n  }\n  flush(timeOffset) {\n    const cachedData = this.cachedData;\n    if (cachedData) {\n      this.cachedData = null;\n      this.demux(cachedData, 0);\n    }\n    return {\n      audioTrack: this._audioTrack,\n      videoTrack: dummyTrack(),\n      id3Track: this._id3Track,\n      textTrack: dummyTrack()\n    };\n  }\n  destroy() {\n  }\n};\nvar initPTSFn = (timestamp, timeOffset, initPTS) => {\n  if (isFiniteNumber(timestamp)) {\n    return timestamp * 90;\n  }\n  const init90kHz = initPTS ? initPTS.baseTime * 9e4 / initPTS.timescale : 0;\n  return timeOffset * 9e4 + init90kHz;\n};\nfunction getAudioConfig(observer2, data, offset, audioCodec) {\n  let adtsObjectType;\n  let adtsExtensionSamplingIndex;\n  let adtsChannelConfig;\n  let config;\n  const userAgent = navigator.userAgent.toLowerCase();\n  const manifestCodec = audioCodec;\n  const adtsSamplingRates = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350];\n  adtsObjectType = ((data[offset + 2] & 192) >>> 6) + 1;\n  const adtsSamplingIndex = (data[offset + 2] & 60) >>> 2;\n  if (adtsSamplingIndex > adtsSamplingRates.length - 1) {\n    const error = new Error(`invalid ADTS sampling index:${adtsSamplingIndex}`);\n    observer2.emit(Events.ERROR, Events.ERROR, {\n      type: ErrorTypes.MEDIA_ERROR,\n      details: ErrorDetails.FRAG_PARSING_ERROR,\n      fatal: true,\n      error,\n      reason: error.message\n    });\n    return;\n  }\n  adtsChannelConfig = (data[offset + 2] & 1) << 2;\n  adtsChannelConfig |= (data[offset + 3] & 192) >>> 6;\n  logger.log(`manifest codec:${audioCodec}, ADTS type:${adtsObjectType}, samplingIndex:${adtsSamplingIndex}`);\n  if (/firefox/i.test(userAgent)) {\n    if (adtsSamplingIndex >= 6) {\n      adtsObjectType = 5;\n      config = new Array(4);\n      adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n    } else {\n      adtsObjectType = 2;\n      config = new Array(2);\n      adtsExtensionSamplingIndex = adtsSamplingIndex;\n    }\n  } else if (userAgent.indexOf(\"android\") !== -1) {\n    adtsObjectType = 2;\n    config = new Array(2);\n    adtsExtensionSamplingIndex = adtsSamplingIndex;\n  } else {\n    adtsObjectType = 5;\n    config = new Array(4);\n    if (audioCodec && (audioCodec.indexOf(\"mp4a.40.29\") !== -1 || audioCodec.indexOf(\"mp4a.40.5\") !== -1) || !audioCodec && adtsSamplingIndex >= 6) {\n      adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n    } else {\n      if (audioCodec && audioCodec.indexOf(\"mp4a.40.2\") !== -1 && (adtsSamplingIndex >= 6 && adtsChannelConfig === 1 || /vivaldi/i.test(userAgent)) || !audioCodec && adtsChannelConfig === 1) {\n        adtsObjectType = 2;\n        config = new Array(2);\n      }\n      adtsExtensionSamplingIndex = adtsSamplingIndex;\n    }\n  }\n  config[0] = adtsObjectType << 3;\n  config[0] |= (adtsSamplingIndex & 14) >> 1;\n  config[1] |= (adtsSamplingIndex & 1) << 7;\n  config[1] |= adtsChannelConfig << 3;\n  if (adtsObjectType === 5) {\n    config[1] |= (adtsExtensionSamplingIndex & 14) >> 1;\n    config[2] = (adtsExtensionSamplingIndex & 1) << 7;\n    config[2] |= 2 << 2;\n    config[3] = 0;\n  }\n  return {\n    config,\n    samplerate: adtsSamplingRates[adtsSamplingIndex],\n    channelCount: adtsChannelConfig,\n    codec: \"mp4a.40.\" + adtsObjectType,\n    manifestCodec\n  };\n}\nfunction isHeaderPattern$1(data, offset) {\n  return data[offset] === 255 && (data[offset + 1] & 246) === 240;\n}\nfunction getHeaderLength(data, offset) {\n  return data[offset + 1] & 1 ? 7 : 9;\n}\nfunction getFullFrameLength(data, offset) {\n  return (data[offset + 3] & 3) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 224) >>> 5;\n}\nfunction canGetFrameLength(data, offset) {\n  return offset + 5 < data.length;\n}\nfunction isHeader$1(data, offset) {\n  return offset + 1 < data.length && isHeaderPattern$1(data, offset);\n}\nfunction canParse$1(data, offset) {\n  return canGetFrameLength(data, offset) && isHeaderPattern$1(data, offset) && getFullFrameLength(data, offset) <= data.length - offset;\n}\nfunction probe$1(data, offset) {\n  if (isHeader$1(data, offset)) {\n    const headerLength = getHeaderLength(data, offset);\n    if (offset + headerLength >= data.length) {\n      return false;\n    }\n    const frameLength = getFullFrameLength(data, offset);\n    if (frameLength <= headerLength) {\n      return false;\n    }\n    const newOffset = offset + frameLength;\n    return newOffset === data.length || isHeader$1(data, newOffset);\n  }\n  return false;\n}\nfunction initTrackConfig(track, observer2, data, offset, audioCodec) {\n  if (!track.samplerate) {\n    const config = getAudioConfig(observer2, data, offset, audioCodec);\n    if (!config) {\n      return;\n    }\n    track.config = config.config;\n    track.samplerate = config.samplerate;\n    track.channelCount = config.channelCount;\n    track.codec = config.codec;\n    track.manifestCodec = config.manifestCodec;\n    logger.log(`parsed codec:${track.codec}, rate:${config.samplerate}, channels:${config.channelCount}`);\n  }\n}\nfunction getFrameDuration(samplerate) {\n  return 1024 * 9e4 / samplerate;\n}\nfunction parseFrameHeader(data, offset) {\n  const headerLength = getHeaderLength(data, offset);\n  if (offset + headerLength <= data.length) {\n    const frameLength = getFullFrameLength(data, offset) - headerLength;\n    if (frameLength > 0) {\n      return {\n        headerLength,\n        frameLength\n      };\n    }\n  }\n}\nfunction appendFrame$2(track, data, offset, pts, frameIndex) {\n  const frameDuration = getFrameDuration(track.samplerate);\n  const stamp = pts + frameIndex * frameDuration;\n  const header = parseFrameHeader(data, offset);\n  let unit;\n  if (header) {\n    const {\n      frameLength,\n      headerLength\n    } = header;\n    const _length = headerLength + frameLength;\n    const missing = Math.max(0, offset + _length - data.length);\n    if (missing) {\n      unit = new Uint8Array(_length - headerLength);\n      unit.set(data.subarray(offset + headerLength, data.length), 0);\n    } else {\n      unit = data.subarray(offset + headerLength, offset + _length);\n    }\n    const _sample = {\n      unit,\n      pts: stamp\n    };\n    if (!missing) {\n      track.samples.push(_sample);\n    }\n    return {\n      sample: _sample,\n      length: _length,\n      missing\n    };\n  }\n  const length = data.length - offset;\n  unit = new Uint8Array(length);\n  unit.set(data.subarray(offset, data.length), 0);\n  const sample = {\n    unit,\n    pts: stamp\n  };\n  return {\n    sample,\n    length,\n    missing: -1\n  };\n}\nvar chromeVersion$1 = null;\nvar BitratesMap = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160];\nvar SamplingRateMap = [44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3];\nvar SamplesCoefficients = [\n  // MPEG 2.5\n  [\n    0,\n    // Reserved\n    72,\n    // Layer3\n    144,\n    // Layer2\n    12\n    // Layer1\n  ],\n  // Reserved\n  [\n    0,\n    // Reserved\n    0,\n    // Layer3\n    0,\n    // Layer2\n    0\n    // Layer1\n  ],\n  // MPEG 2\n  [\n    0,\n    // Reserved\n    72,\n    // Layer3\n    144,\n    // Layer2\n    12\n    // Layer1\n  ],\n  // MPEG 1\n  [\n    0,\n    // Reserved\n    144,\n    // Layer3\n    144,\n    // Layer2\n    12\n    // Layer1\n  ]\n];\nvar BytesInSlot = [\n  0,\n  // Reserved\n  1,\n  // Layer3\n  1,\n  // Layer2\n  4\n  // Layer1\n];\nfunction appendFrame$1(track, data, offset, pts, frameIndex) {\n  if (offset + 24 > data.length) {\n    return;\n  }\n  const header = parseHeader(data, offset);\n  if (header && offset + header.frameLength <= data.length) {\n    const frameDuration = header.samplesPerFrame * 9e4 / header.sampleRate;\n    const stamp = pts + frameIndex * frameDuration;\n    const sample = {\n      unit: data.subarray(offset, offset + header.frameLength),\n      pts: stamp,\n      dts: stamp\n    };\n    track.config = [];\n    track.channelCount = header.channelCount;\n    track.samplerate = header.sampleRate;\n    track.samples.push(sample);\n    return {\n      sample,\n      length: header.frameLength,\n      missing: 0\n    };\n  }\n}\nfunction parseHeader(data, offset) {\n  const mpegVersion = data[offset + 1] >> 3 & 3;\n  const mpegLayer = data[offset + 1] >> 1 & 3;\n  const bitRateIndex = data[offset + 2] >> 4 & 15;\n  const sampleRateIndex = data[offset + 2] >> 2 & 3;\n  if (mpegVersion !== 1 && bitRateIndex !== 0 && bitRateIndex !== 15 && sampleRateIndex !== 3) {\n    const paddingBit = data[offset + 2] >> 1 & 1;\n    const channelMode = data[offset + 3] >> 6;\n    const columnInBitrates = mpegVersion === 3 ? 3 - mpegLayer : mpegLayer === 3 ? 3 : 4;\n    const bitRate = BitratesMap[columnInBitrates * 14 + bitRateIndex - 1] * 1e3;\n    const columnInSampleRates = mpegVersion === 3 ? 0 : mpegVersion === 2 ? 1 : 2;\n    const sampleRate = SamplingRateMap[columnInSampleRates * 3 + sampleRateIndex];\n    const channelCount = channelMode === 3 ? 1 : 2;\n    const sampleCoefficient = SamplesCoefficients[mpegVersion][mpegLayer];\n    const bytesInSlot = BytesInSlot[mpegLayer];\n    const samplesPerFrame = sampleCoefficient * 8 * bytesInSlot;\n    const frameLength = Math.floor(sampleCoefficient * bitRate / sampleRate + paddingBit) * bytesInSlot;\n    if (chromeVersion$1 === null) {\n      const userAgent = navigator.userAgent || \"\";\n      const result = userAgent.match(/Chrome\\/(\\d+)/i);\n      chromeVersion$1 = result ? parseInt(result[1]) : 0;\n    }\n    const needChromeFix = !!chromeVersion$1 && chromeVersion$1 <= 87;\n    if (needChromeFix && mpegLayer === 2 && bitRate >= 224e3 && channelMode === 0) {\n      data[offset + 3] = data[offset + 3] | 128;\n    }\n    return {\n      sampleRate,\n      channelCount,\n      frameLength,\n      samplesPerFrame\n    };\n  }\n}\nfunction isHeaderPattern(data, offset) {\n  return data[offset] === 255 && (data[offset + 1] & 224) === 224 && (data[offset + 1] & 6) !== 0;\n}\nfunction isHeader(data, offset) {\n  return offset + 1 < data.length && isHeaderPattern(data, offset);\n}\nfunction canParse(data, offset) {\n  const headerSize = 4;\n  return isHeaderPattern(data, offset) && headerSize <= data.length - offset;\n}\nfunction probe(data, offset) {\n  if (offset + 1 < data.length && isHeaderPattern(data, offset)) {\n    const headerLength = 4;\n    const header = parseHeader(data, offset);\n    let frameLength = headerLength;\n    if (header != null && header.frameLength) {\n      frameLength = header.frameLength;\n    }\n    const newOffset = offset + frameLength;\n    return newOffset === data.length || isHeader(data, newOffset);\n  }\n  return false;\n}\nvar AACDemuxer = class extends BaseAudioDemuxer {\n  constructor(observer2, config) {\n    super();\n    this.observer = void 0;\n    this.config = void 0;\n    this.observer = observer2;\n    this.config = config;\n  }\n  resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n    super.resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration);\n    this._audioTrack = {\n      container: \"audio/adts\",\n      type: \"audio\",\n      id: 2,\n      pid: -1,\n      sequenceNumber: 0,\n      segmentCodec: \"aac\",\n      samples: [],\n      manifestCodec: audioCodec,\n      duration: trackDuration,\n      inputTimeScale: 9e4,\n      dropped: 0\n    };\n  }\n  // Source for probe info - https://wiki.multimedia.cx/index.php?title=ADTS\n  static probe(data) {\n    if (!data) {\n      return false;\n    }\n    const id3Data = getID3Data(data, 0);\n    let offset = (id3Data == null ? void 0 : id3Data.length) || 0;\n    if (probe(data, offset)) {\n      return false;\n    }\n    for (let length = data.length; offset < length; offset++) {\n      if (probe$1(data, offset)) {\n        logger.log(\"ADTS sync word found !\");\n        return true;\n      }\n    }\n    return false;\n  }\n  canParse(data, offset) {\n    return canParse$1(data, offset);\n  }\n  appendFrame(track, data, offset) {\n    initTrackConfig(track, this.observer, data, offset, track.manifestCodec);\n    const frame = appendFrame$2(track, data, offset, this.basePTS, this.frameIndex);\n    if (frame && frame.missing === 0) {\n      return frame;\n    }\n  }\n};\nvar emsgSchemePattern = /\\/emsg[-/]ID3/i;\nvar MP4Demuxer = class {\n  constructor(observer2, config) {\n    this.remainderData = null;\n    this.timeOffset = 0;\n    this.config = void 0;\n    this.videoTrack = void 0;\n    this.audioTrack = void 0;\n    this.id3Track = void 0;\n    this.txtTrack = void 0;\n    this.config = config;\n  }\n  resetTimeStamp() {\n  }\n  resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n    const videoTrack = this.videoTrack = dummyTrack(\"video\", 1);\n    const audioTrack = this.audioTrack = dummyTrack(\"audio\", 1);\n    const captionTrack = this.txtTrack = dummyTrack(\"text\", 1);\n    this.id3Track = dummyTrack(\"id3\", 1);\n    this.timeOffset = 0;\n    if (!(initSegment != null && initSegment.byteLength)) {\n      return;\n    }\n    const initData = parseInitSegment(initSegment);\n    if (initData.video) {\n      const {\n        id,\n        timescale,\n        codec\n      } = initData.video;\n      videoTrack.id = id;\n      videoTrack.timescale = captionTrack.timescale = timescale;\n      videoTrack.codec = codec;\n    }\n    if (initData.audio) {\n      const {\n        id,\n        timescale,\n        codec\n      } = initData.audio;\n      audioTrack.id = id;\n      audioTrack.timescale = timescale;\n      audioTrack.codec = codec;\n    }\n    captionTrack.id = RemuxerTrackIdConfig.text;\n    videoTrack.sampleDuration = 0;\n    videoTrack.duration = audioTrack.duration = trackDuration;\n  }\n  resetContiguity() {\n    this.remainderData = null;\n  }\n  static probe(data) {\n    return hasMoofData(data);\n  }\n  demux(data, timeOffset) {\n    this.timeOffset = timeOffset;\n    let videoSamples = data;\n    const videoTrack = this.videoTrack;\n    const textTrack = this.txtTrack;\n    if (this.config.progressive) {\n      if (this.remainderData) {\n        videoSamples = appendUint8Array(this.remainderData, data);\n      }\n      const segmentedData = segmentValidRange(videoSamples);\n      this.remainderData = segmentedData.remainder;\n      videoTrack.samples = segmentedData.valid || new Uint8Array();\n    } else {\n      videoTrack.samples = videoSamples;\n    }\n    const id3Track = this.extractID3Track(videoTrack, timeOffset);\n    textTrack.samples = parseSamples(timeOffset, videoTrack);\n    return {\n      videoTrack,\n      audioTrack: this.audioTrack,\n      id3Track,\n      textTrack: this.txtTrack\n    };\n  }\n  flush() {\n    const timeOffset = this.timeOffset;\n    const videoTrack = this.videoTrack;\n    const textTrack = this.txtTrack;\n    videoTrack.samples = this.remainderData || new Uint8Array();\n    this.remainderData = null;\n    const id3Track = this.extractID3Track(videoTrack, this.timeOffset);\n    textTrack.samples = parseSamples(timeOffset, videoTrack);\n    return {\n      videoTrack,\n      audioTrack: dummyTrack(),\n      id3Track,\n      textTrack: dummyTrack()\n    };\n  }\n  extractID3Track(videoTrack, timeOffset) {\n    const id3Track = this.id3Track;\n    if (videoTrack.samples.length) {\n      const emsgs = findBox(videoTrack.samples, [\"emsg\"]);\n      if (emsgs) {\n        emsgs.forEach((data) => {\n          const emsgInfo = parseEmsg(data);\n          if (emsgSchemePattern.test(emsgInfo.schemeIdUri)) {\n            const pts = isFiniteNumber(emsgInfo.presentationTime) ? emsgInfo.presentationTime / emsgInfo.timeScale : timeOffset + emsgInfo.presentationTimeDelta / emsgInfo.timeScale;\n            let duration = emsgInfo.eventDuration === 4294967295 ? Number.POSITIVE_INFINITY : emsgInfo.eventDuration / emsgInfo.timeScale;\n            if (duration <= 1e-3) {\n              duration = Number.POSITIVE_INFINITY;\n            }\n            const payload = emsgInfo.payload;\n            id3Track.samples.push({\n              data: payload,\n              len: payload.byteLength,\n              dts: pts,\n              pts,\n              type: MetadataSchema.emsg,\n              duration\n            });\n          }\n        });\n      }\n    }\n    return id3Track;\n  }\n  demuxSampleAes(data, keyData, timeOffset) {\n    return Promise.reject(new Error(\"The MP4 demuxer does not support SAMPLE-AES decryption\"));\n  }\n  destroy() {\n  }\n};\nvar getAudioBSID = (data, offset) => {\n  let bsid = 0;\n  let numBits = 5;\n  offset += numBits;\n  const temp = new Uint32Array(1);\n  const mask = new Uint32Array(1);\n  const byte = new Uint8Array(1);\n  while (numBits > 0) {\n    byte[0] = data[offset];\n    const bits = Math.min(numBits, 8);\n    const shift = 8 - bits;\n    mask[0] = 4278190080 >>> 24 + shift << shift;\n    temp[0] = (byte[0] & mask[0]) >> shift;\n    bsid = !bsid ? temp[0] : bsid << bits | temp[0];\n    offset += 1;\n    numBits -= bits;\n  }\n  return bsid;\n};\nvar AC3Demuxer = class extends BaseAudioDemuxer {\n  constructor(observer2) {\n    super();\n    this.observer = void 0;\n    this.observer = observer2;\n  }\n  resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n    super.resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration);\n    this._audioTrack = {\n      container: \"audio/ac-3\",\n      type: \"audio\",\n      id: 2,\n      pid: -1,\n      sequenceNumber: 0,\n      segmentCodec: \"ac3\",\n      samples: [],\n      manifestCodec: audioCodec,\n      duration: trackDuration,\n      inputTimeScale: 9e4,\n      dropped: 0\n    };\n  }\n  canParse(data, offset) {\n    return offset + 64 < data.length;\n  }\n  appendFrame(track, data, offset) {\n    const frameLength = appendFrame(track, data, offset, this.basePTS, this.frameIndex);\n    if (frameLength !== -1) {\n      const sample = track.samples[track.samples.length - 1];\n      return {\n        sample,\n        length: frameLength,\n        missing: 0\n      };\n    }\n  }\n  static probe(data) {\n    if (!data) {\n      return false;\n    }\n    const id3Data = getID3Data(data, 0);\n    if (!id3Data) {\n      return false;\n    }\n    const offset = id3Data.length;\n    if (data[offset] === 11 && data[offset + 1] === 119 && getTimeStamp(id3Data) !== void 0 && // check the bsid to confirm ac-3\n    getAudioBSID(data, offset) < 16) {\n      return true;\n    }\n    return false;\n  }\n};\nfunction appendFrame(track, data, start, pts, frameIndex) {\n  if (start + 8 > data.length) {\n    return -1;\n  }\n  if (data[start] !== 11 || data[start + 1] !== 119) {\n    return -1;\n  }\n  const samplingRateCode = data[start + 4] >> 6;\n  if (samplingRateCode >= 3) {\n    return -1;\n  }\n  const samplingRateMap = [48e3, 44100, 32e3];\n  const sampleRate = samplingRateMap[samplingRateCode];\n  const frameSizeCode = data[start + 4] & 63;\n  const frameSizeMap = [64, 69, 96, 64, 70, 96, 80, 87, 120, 80, 88, 120, 96, 104, 144, 96, 105, 144, 112, 121, 168, 112, 122, 168, 128, 139, 192, 128, 140, 192, 160, 174, 240, 160, 175, 240, 192, 208, 288, 192, 209, 288, 224, 243, 336, 224, 244, 336, 256, 278, 384, 256, 279, 384, 320, 348, 480, 320, 349, 480, 384, 417, 576, 384, 418, 576, 448, 487, 672, 448, 488, 672, 512, 557, 768, 512, 558, 768, 640, 696, 960, 640, 697, 960, 768, 835, 1152, 768, 836, 1152, 896, 975, 1344, 896, 976, 1344, 1024, 1114, 1536, 1024, 1115, 1536, 1152, 1253, 1728, 1152, 1254, 1728, 1280, 1393, 1920, 1280, 1394, 1920];\n  const frameLength = frameSizeMap[frameSizeCode * 3 + samplingRateCode] * 2;\n  if (start + frameLength > data.length) {\n    return -1;\n  }\n  const channelMode = data[start + 6] >> 5;\n  let skipCount = 0;\n  if (channelMode === 2) {\n    skipCount += 2;\n  } else {\n    if (channelMode & 1 && channelMode !== 1) {\n      skipCount += 2;\n    }\n    if (channelMode & 4) {\n      skipCount += 2;\n    }\n  }\n  const lfeon = (data[start + 6] << 8 | data[start + 7]) >> 12 - skipCount & 1;\n  const channelsMap = [2, 1, 2, 3, 3, 4, 4, 5];\n  const channelCount = channelsMap[channelMode] + lfeon;\n  const bsid = data[start + 5] >> 3;\n  const bsmod = data[start + 5] & 7;\n  const config = new Uint8Array([samplingRateCode << 6 | bsid << 1 | bsmod >> 2, (bsmod & 3) << 6 | channelMode << 3 | lfeon << 2 | frameSizeCode >> 4, frameSizeCode << 4 & 224]);\n  const frameDuration = 1536 / sampleRate * 9e4;\n  const stamp = pts + frameIndex * frameDuration;\n  const unit = data.subarray(start, start + frameLength);\n  track.config = config;\n  track.channelCount = channelCount;\n  track.samplerate = sampleRate;\n  track.samples.push({\n    unit,\n    pts: stamp\n  });\n  return frameLength;\n}\nvar BaseVideoParser = class {\n  constructor() {\n    this.VideoSample = null;\n  }\n  createVideoSample(key, pts, dts, debug) {\n    return {\n      key,\n      frame: false,\n      pts,\n      dts,\n      units: [],\n      debug,\n      length: 0\n    };\n  }\n  getLastNalUnit(samples) {\n    var _VideoSample;\n    let VideoSample = this.VideoSample;\n    let lastUnit;\n    if (!VideoSample || VideoSample.units.length === 0) {\n      VideoSample = samples[samples.length - 1];\n    }\n    if ((_VideoSample = VideoSample) != null && _VideoSample.units) {\n      const units = VideoSample.units;\n      lastUnit = units[units.length - 1];\n    }\n    return lastUnit;\n  }\n  pushAccessUnit(VideoSample, videoTrack) {\n    if (VideoSample.units.length && VideoSample.frame) {\n      if (VideoSample.pts === void 0) {\n        const samples = videoTrack.samples;\n        const nbSamples = samples.length;\n        if (nbSamples) {\n          const lastSample = samples[nbSamples - 1];\n          VideoSample.pts = lastSample.pts;\n          VideoSample.dts = lastSample.dts;\n        } else {\n          videoTrack.dropped++;\n          return;\n        }\n      }\n      videoTrack.samples.push(VideoSample);\n    }\n    if (VideoSample.debug.length) {\n      logger.log(VideoSample.pts + \"/\" + VideoSample.dts + \":\" + VideoSample.debug);\n    }\n  }\n};\nvar ExpGolomb = class {\n  constructor(data) {\n    this.data = void 0;\n    this.bytesAvailable = void 0;\n    this.word = void 0;\n    this.bitsAvailable = void 0;\n    this.data = data;\n    this.bytesAvailable = data.byteLength;\n    this.word = 0;\n    this.bitsAvailable = 0;\n  }\n  // ():void\n  loadWord() {\n    const data = this.data;\n    const bytesAvailable = this.bytesAvailable;\n    const position = data.byteLength - bytesAvailable;\n    const workingBytes = new Uint8Array(4);\n    const availableBytes = Math.min(4, bytesAvailable);\n    if (availableBytes === 0) {\n      throw new Error(\"no bytes available\");\n    }\n    workingBytes.set(data.subarray(position, position + availableBytes));\n    this.word = new DataView(workingBytes.buffer).getUint32(0);\n    this.bitsAvailable = availableBytes * 8;\n    this.bytesAvailable -= availableBytes;\n  }\n  // (count:int):void\n  skipBits(count) {\n    let skipBytes;\n    count = Math.min(count, this.bytesAvailable * 8 + this.bitsAvailable);\n    if (this.bitsAvailable > count) {\n      this.word <<= count;\n      this.bitsAvailable -= count;\n    } else {\n      count -= this.bitsAvailable;\n      skipBytes = count >> 3;\n      count -= skipBytes << 3;\n      this.bytesAvailable -= skipBytes;\n      this.loadWord();\n      this.word <<= count;\n      this.bitsAvailable -= count;\n    }\n  }\n  // (size:int):uint\n  readBits(size) {\n    let bits = Math.min(this.bitsAvailable, size);\n    const valu = this.word >>> 32 - bits;\n    if (size > 32) {\n      logger.error(\"Cannot read more than 32 bits at a time\");\n    }\n    this.bitsAvailable -= bits;\n    if (this.bitsAvailable > 0) {\n      this.word <<= bits;\n    } else if (this.bytesAvailable > 0) {\n      this.loadWord();\n    } else {\n      throw new Error(\"no bits available\");\n    }\n    bits = size - bits;\n    if (bits > 0 && this.bitsAvailable) {\n      return valu << bits | this.readBits(bits);\n    } else {\n      return valu;\n    }\n  }\n  // ():uint\n  skipLZ() {\n    let leadingZeroCount;\n    for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) {\n      if ((this.word & 2147483648 >>> leadingZeroCount) !== 0) {\n        this.word <<= leadingZeroCount;\n        this.bitsAvailable -= leadingZeroCount;\n        return leadingZeroCount;\n      }\n    }\n    this.loadWord();\n    return leadingZeroCount + this.skipLZ();\n  }\n  // ():void\n  skipUEG() {\n    this.skipBits(1 + this.skipLZ());\n  }\n  // ():void\n  skipEG() {\n    this.skipBits(1 + this.skipLZ());\n  }\n  // ():uint\n  readUEG() {\n    const clz = this.skipLZ();\n    return this.readBits(clz + 1) - 1;\n  }\n  // ():int\n  readEG() {\n    const valu = this.readUEG();\n    if (1 & valu) {\n      return 1 + valu >>> 1;\n    } else {\n      return -1 * (valu >>> 1);\n    }\n  }\n  // Some convenience functions\n  // :Boolean\n  readBoolean() {\n    return this.readBits(1) === 1;\n  }\n  // ():int\n  readUByte() {\n    return this.readBits(8);\n  }\n  // ():int\n  readUShort() {\n    return this.readBits(16);\n  }\n  // ():int\n  readUInt() {\n    return this.readBits(32);\n  }\n  /**\n   * Advance the ExpGolomb decoder past a scaling list. The scaling\n   * list is optionally transmitted as part of a sequence parameter\n   * set and is not relevant to transmuxing.\n   * @param count the number of entries in this scaling list\n   * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1\n   */\n  skipScalingList(count) {\n    let lastScale = 8;\n    let nextScale = 8;\n    let deltaScale;\n    for (let j4 = 0; j4 < count; j4++) {\n      if (nextScale !== 0) {\n        deltaScale = this.readEG();\n        nextScale = (lastScale + deltaScale + 256) % 256;\n      }\n      lastScale = nextScale === 0 ? lastScale : nextScale;\n    }\n  }\n  /**\n   * Read a sequence parameter set and return some interesting video\n   * properties. A sequence parameter set is the H264 metadata that\n   * describes the properties of upcoming video frames.\n   * @returns an object with configuration parsed from the\n   * sequence parameter set, including the dimensions of the\n   * associated video frames.\n   */\n  readSPS() {\n    let frameCropLeftOffset = 0;\n    let frameCropRightOffset = 0;\n    let frameCropTopOffset = 0;\n    let frameCropBottomOffset = 0;\n    let numRefFramesInPicOrderCntCycle;\n    let scalingListCount;\n    let i2;\n    const readUByte = this.readUByte.bind(this);\n    const readBits = this.readBits.bind(this);\n    const readUEG = this.readUEG.bind(this);\n    const readBoolean = this.readBoolean.bind(this);\n    const skipBits = this.skipBits.bind(this);\n    const skipEG = this.skipEG.bind(this);\n    const skipUEG = this.skipUEG.bind(this);\n    const skipScalingList = this.skipScalingList.bind(this);\n    readUByte();\n    const profileIdc = readUByte();\n    readBits(5);\n    skipBits(3);\n    readUByte();\n    skipUEG();\n    if (profileIdc === 100 || profileIdc === 110 || profileIdc === 122 || profileIdc === 244 || profileIdc === 44 || profileIdc === 83 || profileIdc === 86 || profileIdc === 118 || profileIdc === 128) {\n      const chromaFormatIdc = readUEG();\n      if (chromaFormatIdc === 3) {\n        skipBits(1);\n      }\n      skipUEG();\n      skipUEG();\n      skipBits(1);\n      if (readBoolean()) {\n        scalingListCount = chromaFormatIdc !== 3 ? 8 : 12;\n        for (i2 = 0; i2 < scalingListCount; i2++) {\n          if (readBoolean()) {\n            if (i2 < 6) {\n              skipScalingList(16);\n            } else {\n              skipScalingList(64);\n            }\n          }\n        }\n      }\n    }\n    skipUEG();\n    const picOrderCntType = readUEG();\n    if (picOrderCntType === 0) {\n      readUEG();\n    } else if (picOrderCntType === 1) {\n      skipBits(1);\n      skipEG();\n      skipEG();\n      numRefFramesInPicOrderCntCycle = readUEG();\n      for (i2 = 0; i2 < numRefFramesInPicOrderCntCycle; i2++) {\n        skipEG();\n      }\n    }\n    skipUEG();\n    skipBits(1);\n    const picWidthInMbsMinus1 = readUEG();\n    const picHeightInMapUnitsMinus1 = readUEG();\n    const frameMbsOnlyFlag = readBits(1);\n    if (frameMbsOnlyFlag === 0) {\n      skipBits(1);\n    }\n    skipBits(1);\n    if (readBoolean()) {\n      frameCropLeftOffset = readUEG();\n      frameCropRightOffset = readUEG();\n      frameCropTopOffset = readUEG();\n      frameCropBottomOffset = readUEG();\n    }\n    let pixelRatio = [1, 1];\n    if (readBoolean()) {\n      if (readBoolean()) {\n        const aspectRatioIdc = readUByte();\n        switch (aspectRatioIdc) {\n          case 1:\n            pixelRatio = [1, 1];\n            break;\n          case 2:\n            pixelRatio = [12, 11];\n            break;\n          case 3:\n            pixelRatio = [10, 11];\n            break;\n          case 4:\n            pixelRatio = [16, 11];\n            break;\n          case 5:\n            pixelRatio = [40, 33];\n            break;\n          case 6:\n            pixelRatio = [24, 11];\n            break;\n          case 7:\n            pixelRatio = [20, 11];\n            break;\n          case 8:\n            pixelRatio = [32, 11];\n            break;\n          case 9:\n            pixelRatio = [80, 33];\n            break;\n          case 10:\n            pixelRatio = [18, 11];\n            break;\n          case 11:\n            pixelRatio = [15, 11];\n            break;\n          case 12:\n            pixelRatio = [64, 33];\n            break;\n          case 13:\n            pixelRatio = [160, 99];\n            break;\n          case 14:\n            pixelRatio = [4, 3];\n            break;\n          case 15:\n            pixelRatio = [3, 2];\n            break;\n          case 16:\n            pixelRatio = [2, 1];\n            break;\n          case 255: {\n            pixelRatio = [readUByte() << 8 | readUByte(), readUByte() << 8 | readUByte()];\n            break;\n          }\n        }\n      }\n    }\n    return {\n      width: Math.ceil((picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2),\n      height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - (frameMbsOnlyFlag ? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset),\n      pixelRatio\n    };\n  }\n  readSliceType() {\n    this.readUByte();\n    this.readUEG();\n    return this.readUEG();\n  }\n};\nvar AvcVideoParser = class extends BaseVideoParser {\n  parseAVCPES(track, textTrack, pes, last, duration) {\n    const units = this.parseAVCNALu(track, pes.data);\n    let VideoSample = this.VideoSample;\n    let push2;\n    let spsfound = false;\n    pes.data = null;\n    if (VideoSample && units.length && !track.audFound) {\n      this.pushAccessUnit(VideoSample, track);\n      VideoSample = this.VideoSample = this.createVideoSample(false, pes.pts, pes.dts, \"\");\n    }\n    units.forEach((unit) => {\n      var _VideoSample2;\n      switch (unit.type) {\n        // NDR\n        case 1: {\n          let iskey = false;\n          push2 = true;\n          const data = unit.data;\n          if (spsfound && data.length > 4) {\n            const sliceType = new ExpGolomb(data).readSliceType();\n            if (sliceType === 2 || sliceType === 4 || sliceType === 7 || sliceType === 9) {\n              iskey = true;\n            }\n          }\n          if (iskey) {\n            var _VideoSample;\n            if ((_VideoSample = VideoSample) != null && _VideoSample.frame && !VideoSample.key) {\n              this.pushAccessUnit(VideoSample, track);\n              VideoSample = this.VideoSample = null;\n            }\n          }\n          if (!VideoSample) {\n            VideoSample = this.VideoSample = this.createVideoSample(true, pes.pts, pes.dts, \"\");\n          }\n          VideoSample.frame = true;\n          VideoSample.key = iskey;\n          break;\n        }\n        case 5:\n          push2 = true;\n          if ((_VideoSample2 = VideoSample) != null && _VideoSample2.frame && !VideoSample.key) {\n            this.pushAccessUnit(VideoSample, track);\n            VideoSample = this.VideoSample = null;\n          }\n          if (!VideoSample) {\n            VideoSample = this.VideoSample = this.createVideoSample(true, pes.pts, pes.dts, \"\");\n          }\n          VideoSample.key = true;\n          VideoSample.frame = true;\n          break;\n        // SEI\n        case 6: {\n          push2 = true;\n          parseSEIMessageFromNALu(unit.data, 1, pes.pts, textTrack.samples);\n          break;\n        }\n        case 7: {\n          var _track$pixelRatio, _track$pixelRatio2;\n          push2 = true;\n          spsfound = true;\n          const sps = unit.data;\n          const expGolombDecoder = new ExpGolomb(sps);\n          const config = expGolombDecoder.readSPS();\n          if (!track.sps || track.width !== config.width || track.height !== config.height || ((_track$pixelRatio = track.pixelRatio) == null ? void 0 : _track$pixelRatio[0]) !== config.pixelRatio[0] || ((_track$pixelRatio2 = track.pixelRatio) == null ? void 0 : _track$pixelRatio2[1]) !== config.pixelRatio[1]) {\n            track.width = config.width;\n            track.height = config.height;\n            track.pixelRatio = config.pixelRatio;\n            track.sps = [sps];\n            track.duration = duration;\n            const codecarray = sps.subarray(1, 4);\n            let codecstring = \"avc1.\";\n            for (let i2 = 0; i2 < 3; i2++) {\n              let h3 = codecarray[i2].toString(16);\n              if (h3.length < 2) {\n                h3 = \"0\" + h3;\n              }\n              codecstring += h3;\n            }\n            track.codec = codecstring;\n          }\n          break;\n        }\n        // PPS\n        case 8:\n          push2 = true;\n          track.pps = [unit.data];\n          break;\n        // AUD\n        case 9:\n          push2 = true;\n          track.audFound = true;\n          if (VideoSample) {\n            this.pushAccessUnit(VideoSample, track);\n          }\n          VideoSample = this.VideoSample = this.createVideoSample(false, pes.pts, pes.dts, \"\");\n          break;\n        // Filler Data\n        case 12:\n          push2 = true;\n          break;\n        default:\n          push2 = false;\n          if (VideoSample) {\n            VideoSample.debug += \"unknown NAL \" + unit.type + \" \";\n          }\n          break;\n      }\n      if (VideoSample && push2) {\n        const units2 = VideoSample.units;\n        units2.push(unit);\n      }\n    });\n    if (last && VideoSample) {\n      this.pushAccessUnit(VideoSample, track);\n      this.VideoSample = null;\n    }\n  }\n  parseAVCNALu(track, array) {\n    const len = array.byteLength;\n    let state = track.naluState || 0;\n    const lastState = state;\n    const units = [];\n    let i2 = 0;\n    let value;\n    let overflow;\n    let unitType;\n    let lastUnitStart = -1;\n    let lastUnitType = 0;\n    if (state === -1) {\n      lastUnitStart = 0;\n      lastUnitType = array[0] & 31;\n      state = 0;\n      i2 = 1;\n    }\n    while (i2 < len) {\n      value = array[i2++];\n      if (!state) {\n        state = value ? 0 : 1;\n        continue;\n      }\n      if (state === 1) {\n        state = value ? 0 : 2;\n        continue;\n      }\n      if (!value) {\n        state = 3;\n      } else if (value === 1) {\n        overflow = i2 - state - 1;\n        if (lastUnitStart >= 0) {\n          const unit = {\n            data: array.subarray(lastUnitStart, overflow),\n            type: lastUnitType\n          };\n          units.push(unit);\n        } else {\n          const lastUnit = this.getLastNalUnit(track.samples);\n          if (lastUnit) {\n            if (lastState && i2 <= 4 - lastState) {\n              if (lastUnit.state) {\n                lastUnit.data = lastUnit.data.subarray(0, lastUnit.data.byteLength - lastState);\n              }\n            }\n            if (overflow > 0) {\n              lastUnit.data = appendUint8Array(lastUnit.data, array.subarray(0, overflow));\n              lastUnit.state = 0;\n            }\n          }\n        }\n        if (i2 < len) {\n          unitType = array[i2] & 31;\n          lastUnitStart = i2;\n          lastUnitType = unitType;\n          state = 0;\n        } else {\n          state = -1;\n        }\n      } else {\n        state = 0;\n      }\n    }\n    if (lastUnitStart >= 0 && state >= 0) {\n      const unit = {\n        data: array.subarray(lastUnitStart, len),\n        type: lastUnitType,\n        state\n      };\n      units.push(unit);\n    }\n    if (units.length === 0) {\n      const lastUnit = this.getLastNalUnit(track.samples);\n      if (lastUnit) {\n        lastUnit.data = appendUint8Array(lastUnit.data, array);\n      }\n    }\n    track.naluState = state;\n    return units;\n  }\n};\nvar SampleAesDecrypter = class {\n  constructor(observer2, config, keyData) {\n    this.keyData = void 0;\n    this.decrypter = void 0;\n    this.keyData = keyData;\n    this.decrypter = new Decrypter(config, {\n      removePKCS7Padding: false\n    });\n  }\n  decryptBuffer(encryptedData) {\n    return this.decrypter.decrypt(encryptedData, this.keyData.key.buffer, this.keyData.iv.buffer);\n  }\n  // AAC - encrypt all full 16 bytes blocks starting from offset 16\n  decryptAacSample(samples, sampleIndex, callback) {\n    const curUnit = samples[sampleIndex].unit;\n    if (curUnit.length <= 16) {\n      return;\n    }\n    const encryptedData = curUnit.subarray(16, curUnit.length - curUnit.length % 16);\n    const encryptedBuffer = encryptedData.buffer.slice(encryptedData.byteOffset, encryptedData.byteOffset + encryptedData.length);\n    this.decryptBuffer(encryptedBuffer).then((decryptedBuffer) => {\n      const decryptedData = new Uint8Array(decryptedBuffer);\n      curUnit.set(decryptedData, 16);\n      if (!this.decrypter.isSync()) {\n        this.decryptAacSamples(samples, sampleIndex + 1, callback);\n      }\n    });\n  }\n  decryptAacSamples(samples, sampleIndex, callback) {\n    for (; ; sampleIndex++) {\n      if (sampleIndex >= samples.length) {\n        callback();\n        return;\n      }\n      if (samples[sampleIndex].unit.length < 32) {\n        continue;\n      }\n      this.decryptAacSample(samples, sampleIndex, callback);\n      if (!this.decrypter.isSync()) {\n        return;\n      }\n    }\n  }\n  // AVC - encrypt one 16 bytes block out of ten, starting from offset 32\n  getAvcEncryptedData(decodedData) {\n    const encryptedDataLen = Math.floor((decodedData.length - 48) / 160) * 16 + 16;\n    const encryptedData = new Int8Array(encryptedDataLen);\n    let outputPos = 0;\n    for (let inputPos = 32; inputPos < decodedData.length - 16; inputPos += 160, outputPos += 16) {\n      encryptedData.set(decodedData.subarray(inputPos, inputPos + 16), outputPos);\n    }\n    return encryptedData;\n  }\n  getAvcDecryptedUnit(decodedData, decryptedData) {\n    const uint8DecryptedData = new Uint8Array(decryptedData);\n    let inputPos = 0;\n    for (let outputPos = 32; outputPos < decodedData.length - 16; outputPos += 160, inputPos += 16) {\n      decodedData.set(uint8DecryptedData.subarray(inputPos, inputPos + 16), outputPos);\n    }\n    return decodedData;\n  }\n  decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit) {\n    const decodedData = discardEPB(curUnit.data);\n    const encryptedData = this.getAvcEncryptedData(decodedData);\n    this.decryptBuffer(encryptedData.buffer).then((decryptedBuffer) => {\n      curUnit.data = this.getAvcDecryptedUnit(decodedData, decryptedBuffer);\n      if (!this.decrypter.isSync()) {\n        this.decryptAvcSamples(samples, sampleIndex, unitIndex + 1, callback);\n      }\n    });\n  }\n  decryptAvcSamples(samples, sampleIndex, unitIndex, callback) {\n    if (samples instanceof Uint8Array) {\n      throw new Error(\"Cannot decrypt samples of type Uint8Array\");\n    }\n    for (; ; sampleIndex++, unitIndex = 0) {\n      if (sampleIndex >= samples.length) {\n        callback();\n        return;\n      }\n      const curUnits = samples[sampleIndex].units;\n      for (; ; unitIndex++) {\n        if (unitIndex >= curUnits.length) {\n          break;\n        }\n        const curUnit = curUnits[unitIndex];\n        if (curUnit.data.length <= 48 || curUnit.type !== 1 && curUnit.type !== 5) {\n          continue;\n        }\n        this.decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit);\n        if (!this.decrypter.isSync()) {\n          return;\n        }\n      }\n    }\n  }\n};\nvar PACKET_LENGTH = 188;\nvar TSDemuxer = class _TSDemuxer {\n  constructor(observer2, config, typeSupported) {\n    this.observer = void 0;\n    this.config = void 0;\n    this.typeSupported = void 0;\n    this.sampleAes = null;\n    this.pmtParsed = false;\n    this.audioCodec = void 0;\n    this.videoCodec = void 0;\n    this._duration = 0;\n    this._pmtId = -1;\n    this._videoTrack = void 0;\n    this._audioTrack = void 0;\n    this._id3Track = void 0;\n    this._txtTrack = void 0;\n    this.aacOverFlow = null;\n    this.remainderData = null;\n    this.videoParser = void 0;\n    this.observer = observer2;\n    this.config = config;\n    this.typeSupported = typeSupported;\n    this.videoParser = new AvcVideoParser();\n  }\n  static probe(data) {\n    const syncOffset = _TSDemuxer.syncOffset(data);\n    if (syncOffset > 0) {\n      logger.warn(`MPEG2-TS detected but first sync word found @ offset ${syncOffset}`);\n    }\n    return syncOffset !== -1;\n  }\n  static syncOffset(data) {\n    const length = data.length;\n    let scanwindow = Math.min(PACKET_LENGTH * 5, length - PACKET_LENGTH) + 1;\n    let i2 = 0;\n    while (i2 < scanwindow) {\n      let foundPat = false;\n      let packetStart = -1;\n      let tsPackets = 0;\n      for (let j4 = i2; j4 < length; j4 += PACKET_LENGTH) {\n        if (data[j4] === 71 && (length - j4 === PACKET_LENGTH || data[j4 + PACKET_LENGTH] === 71)) {\n          tsPackets++;\n          if (packetStart === -1) {\n            packetStart = j4;\n            if (packetStart !== 0) {\n              scanwindow = Math.min(packetStart + PACKET_LENGTH * 99, data.length - PACKET_LENGTH) + 1;\n            }\n          }\n          if (!foundPat) {\n            foundPat = parsePID(data, j4) === 0;\n          }\n          if (foundPat && tsPackets > 1 && (packetStart === 0 && tsPackets > 2 || j4 + PACKET_LENGTH > scanwindow)) {\n            return packetStart;\n          }\n        } else if (tsPackets) {\n          return -1;\n        } else {\n          break;\n        }\n      }\n      i2++;\n    }\n    return -1;\n  }\n  /**\n   * Creates a track model internal to demuxer used to drive remuxing input\n   */\n  static createTrack(type, duration) {\n    return {\n      container: type === \"video\" || type === \"audio\" ? \"video/mp2t\" : void 0,\n      type,\n      id: RemuxerTrackIdConfig[type],\n      pid: -1,\n      inputTimeScale: 9e4,\n      sequenceNumber: 0,\n      samples: [],\n      dropped: 0,\n      duration: type === \"audio\" ? duration : void 0\n    };\n  }\n  /**\n   * Initializes a new init segment on the demuxer/remuxer interface. Needed for discontinuities/track-switches (or at stream start)\n   * Resets all internal track instances of the demuxer.\n   */\n  resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n    this.pmtParsed = false;\n    this._pmtId = -1;\n    this._videoTrack = _TSDemuxer.createTrack(\"video\");\n    this._audioTrack = _TSDemuxer.createTrack(\"audio\", trackDuration);\n    this._id3Track = _TSDemuxer.createTrack(\"id3\");\n    this._txtTrack = _TSDemuxer.createTrack(\"text\");\n    this._audioTrack.segmentCodec = \"aac\";\n    this.aacOverFlow = null;\n    this.remainderData = null;\n    this.audioCodec = audioCodec;\n    this.videoCodec = videoCodec;\n    this._duration = trackDuration;\n  }\n  resetTimeStamp() {\n  }\n  resetContiguity() {\n    const {\n      _audioTrack,\n      _videoTrack,\n      _id3Track\n    } = this;\n    if (_audioTrack) {\n      _audioTrack.pesData = null;\n    }\n    if (_videoTrack) {\n      _videoTrack.pesData = null;\n    }\n    if (_id3Track) {\n      _id3Track.pesData = null;\n    }\n    this.aacOverFlow = null;\n    this.remainderData = null;\n  }\n  demux(data, timeOffset, isSampleAes = false, flush = false) {\n    if (!isSampleAes) {\n      this.sampleAes = null;\n    }\n    let pes;\n    const videoTrack = this._videoTrack;\n    const audioTrack = this._audioTrack;\n    const id3Track = this._id3Track;\n    const textTrack = this._txtTrack;\n    let videoPid = videoTrack.pid;\n    let videoData = videoTrack.pesData;\n    let audioPid = audioTrack.pid;\n    let id3Pid = id3Track.pid;\n    let audioData = audioTrack.pesData;\n    let id3Data = id3Track.pesData;\n    let unknownPID = null;\n    let pmtParsed = this.pmtParsed;\n    let pmtId = this._pmtId;\n    let len = data.length;\n    if (this.remainderData) {\n      data = appendUint8Array(this.remainderData, data);\n      len = data.length;\n      this.remainderData = null;\n    }\n    if (len < PACKET_LENGTH && !flush) {\n      this.remainderData = data;\n      return {\n        audioTrack,\n        videoTrack,\n        id3Track,\n        textTrack\n      };\n    }\n    const syncOffset = Math.max(0, _TSDemuxer.syncOffset(data));\n    len -= (len - syncOffset) % PACKET_LENGTH;\n    if (len < data.byteLength && !flush) {\n      this.remainderData = new Uint8Array(data.buffer, len, data.buffer.byteLength - len);\n    }\n    let tsPacketErrors = 0;\n    for (let start = syncOffset; start < len; start += PACKET_LENGTH) {\n      if (data[start] === 71) {\n        const stt = !!(data[start + 1] & 64);\n        const pid = parsePID(data, start);\n        const atf = (data[start + 3] & 48) >> 4;\n        let offset;\n        if (atf > 1) {\n          offset = start + 5 + data[start + 4];\n          if (offset === start + PACKET_LENGTH) {\n            continue;\n          }\n        } else {\n          offset = start + 4;\n        }\n        switch (pid) {\n          case videoPid:\n            if (stt) {\n              if (videoData && (pes = parsePES(videoData))) {\n                this.videoParser.parseAVCPES(videoTrack, textTrack, pes, false, this._duration);\n              }\n              videoData = {\n                data: [],\n                size: 0\n              };\n            }\n            if (videoData) {\n              videoData.data.push(data.subarray(offset, start + PACKET_LENGTH));\n              videoData.size += start + PACKET_LENGTH - offset;\n            }\n            break;\n          case audioPid:\n            if (stt) {\n              if (audioData && (pes = parsePES(audioData))) {\n                switch (audioTrack.segmentCodec) {\n                  case \"aac\":\n                    this.parseAACPES(audioTrack, pes);\n                    break;\n                  case \"mp3\":\n                    this.parseMPEGPES(audioTrack, pes);\n                    break;\n                  case \"ac3\":\n                    {\n                      this.parseAC3PES(audioTrack, pes);\n                    }\n                    break;\n                }\n              }\n              audioData = {\n                data: [],\n                size: 0\n              };\n            }\n            if (audioData) {\n              audioData.data.push(data.subarray(offset, start + PACKET_LENGTH));\n              audioData.size += start + PACKET_LENGTH - offset;\n            }\n            break;\n          case id3Pid:\n            if (stt) {\n              if (id3Data && (pes = parsePES(id3Data))) {\n                this.parseID3PES(id3Track, pes);\n              }\n              id3Data = {\n                data: [],\n                size: 0\n              };\n            }\n            if (id3Data) {\n              id3Data.data.push(data.subarray(offset, start + PACKET_LENGTH));\n              id3Data.size += start + PACKET_LENGTH - offset;\n            }\n            break;\n          case 0:\n            if (stt) {\n              offset += data[offset] + 1;\n            }\n            pmtId = this._pmtId = parsePAT(data, offset);\n            break;\n          case pmtId: {\n            if (stt) {\n              offset += data[offset] + 1;\n            }\n            const parsedPIDs = parsePMT(data, offset, this.typeSupported, isSampleAes, this.observer);\n            videoPid = parsedPIDs.videoPid;\n            if (videoPid > 0) {\n              videoTrack.pid = videoPid;\n              videoTrack.segmentCodec = parsedPIDs.segmentVideoCodec;\n            }\n            audioPid = parsedPIDs.audioPid;\n            if (audioPid > 0) {\n              audioTrack.pid = audioPid;\n              audioTrack.segmentCodec = parsedPIDs.segmentAudioCodec;\n            }\n            id3Pid = parsedPIDs.id3Pid;\n            if (id3Pid > 0) {\n              id3Track.pid = id3Pid;\n            }\n            if (unknownPID !== null && !pmtParsed) {\n              logger.warn(`MPEG-TS PMT found at ${start} after unknown PID '${unknownPID}'. Backtracking to sync byte @${syncOffset} to parse all TS packets.`);\n              unknownPID = null;\n              start = syncOffset - 188;\n            }\n            pmtParsed = this.pmtParsed = true;\n            break;\n          }\n          case 17:\n          case 8191:\n            break;\n          default:\n            unknownPID = pid;\n            break;\n        }\n      } else {\n        tsPacketErrors++;\n      }\n    }\n    if (tsPacketErrors > 0) {\n      emitParsingError(this.observer, new Error(`Found ${tsPacketErrors} TS packet/s that do not start with 0x47`));\n    }\n    videoTrack.pesData = videoData;\n    audioTrack.pesData = audioData;\n    id3Track.pesData = id3Data;\n    const demuxResult = {\n      audioTrack,\n      videoTrack,\n      id3Track,\n      textTrack\n    };\n    if (flush) {\n      this.extractRemainingSamples(demuxResult);\n    }\n    return demuxResult;\n  }\n  flush() {\n    const {\n      remainderData\n    } = this;\n    this.remainderData = null;\n    let result;\n    if (remainderData) {\n      result = this.demux(remainderData, -1, false, true);\n    } else {\n      result = {\n        videoTrack: this._videoTrack,\n        audioTrack: this._audioTrack,\n        id3Track: this._id3Track,\n        textTrack: this._txtTrack\n      };\n    }\n    this.extractRemainingSamples(result);\n    if (this.sampleAes) {\n      return this.decrypt(result, this.sampleAes);\n    }\n    return result;\n  }\n  extractRemainingSamples(demuxResult) {\n    const {\n      audioTrack,\n      videoTrack,\n      id3Track,\n      textTrack\n    } = demuxResult;\n    const videoData = videoTrack.pesData;\n    const audioData = audioTrack.pesData;\n    const id3Data = id3Track.pesData;\n    let pes;\n    if (videoData && (pes = parsePES(videoData))) {\n      this.videoParser.parseAVCPES(videoTrack, textTrack, pes, true, this._duration);\n      videoTrack.pesData = null;\n    } else {\n      videoTrack.pesData = videoData;\n    }\n    if (audioData && (pes = parsePES(audioData))) {\n      switch (audioTrack.segmentCodec) {\n        case \"aac\":\n          this.parseAACPES(audioTrack, pes);\n          break;\n        case \"mp3\":\n          this.parseMPEGPES(audioTrack, pes);\n          break;\n        case \"ac3\":\n          {\n            this.parseAC3PES(audioTrack, pes);\n          }\n          break;\n      }\n      audioTrack.pesData = null;\n    } else {\n      if (audioData != null && audioData.size) {\n        logger.log(\"last AAC PES packet truncated,might overlap between fragments\");\n      }\n      audioTrack.pesData = audioData;\n    }\n    if (id3Data && (pes = parsePES(id3Data))) {\n      this.parseID3PES(id3Track, pes);\n      id3Track.pesData = null;\n    } else {\n      id3Track.pesData = id3Data;\n    }\n  }\n  demuxSampleAes(data, keyData, timeOffset) {\n    const demuxResult = this.demux(data, timeOffset, true, !this.config.progressive);\n    const sampleAes = this.sampleAes = new SampleAesDecrypter(this.observer, this.config, keyData);\n    return this.decrypt(demuxResult, sampleAes);\n  }\n  decrypt(demuxResult, sampleAes) {\n    return new Promise((resolve) => {\n      const {\n        audioTrack,\n        videoTrack\n      } = demuxResult;\n      if (audioTrack.samples && audioTrack.segmentCodec === \"aac\") {\n        sampleAes.decryptAacSamples(audioTrack.samples, 0, () => {\n          if (videoTrack.samples) {\n            sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, () => {\n              resolve(demuxResult);\n            });\n          } else {\n            resolve(demuxResult);\n          }\n        });\n      } else if (videoTrack.samples) {\n        sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, () => {\n          resolve(demuxResult);\n        });\n      }\n    });\n  }\n  destroy() {\n    this._duration = 0;\n  }\n  parseAACPES(track, pes) {\n    let startOffset = 0;\n    const aacOverFlow = this.aacOverFlow;\n    let data = pes.data;\n    if (aacOverFlow) {\n      this.aacOverFlow = null;\n      const frameMissingBytes = aacOverFlow.missing;\n      const sampleLength = aacOverFlow.sample.unit.byteLength;\n      if (frameMissingBytes === -1) {\n        data = appendUint8Array(aacOverFlow.sample.unit, data);\n      } else {\n        const frameOverflowBytes = sampleLength - frameMissingBytes;\n        aacOverFlow.sample.unit.set(data.subarray(0, frameMissingBytes), frameOverflowBytes);\n        track.samples.push(aacOverFlow.sample);\n        startOffset = aacOverFlow.missing;\n      }\n    }\n    let offset;\n    let len;\n    for (offset = startOffset, len = data.length; offset < len - 1; offset++) {\n      if (isHeader$1(data, offset)) {\n        break;\n      }\n    }\n    if (offset !== startOffset) {\n      let reason;\n      const recoverable = offset < len - 1;\n      if (recoverable) {\n        reason = `AAC PES did not start with ADTS header,offset:${offset}`;\n      } else {\n        reason = \"No ADTS header found in AAC PES\";\n      }\n      emitParsingError(this.observer, new Error(reason), recoverable);\n      if (!recoverable) {\n        return;\n      }\n    }\n    initTrackConfig(track, this.observer, data, offset, this.audioCodec);\n    let pts;\n    if (pes.pts !== void 0) {\n      pts = pes.pts;\n    } else if (aacOverFlow) {\n      const frameDuration = getFrameDuration(track.samplerate);\n      pts = aacOverFlow.sample.pts + frameDuration;\n    } else {\n      logger.warn(\"[tsdemuxer]: AAC PES unknown PTS\");\n      return;\n    }\n    let frameIndex = 0;\n    let frame;\n    while (offset < len) {\n      frame = appendFrame$2(track, data, offset, pts, frameIndex);\n      offset += frame.length;\n      if (!frame.missing) {\n        frameIndex++;\n        for (; offset < len - 1; offset++) {\n          if (isHeader$1(data, offset)) {\n            break;\n          }\n        }\n      } else {\n        this.aacOverFlow = frame;\n        break;\n      }\n    }\n  }\n  parseMPEGPES(track, pes) {\n    const data = pes.data;\n    const length = data.length;\n    let frameIndex = 0;\n    let offset = 0;\n    const pts = pes.pts;\n    if (pts === void 0) {\n      logger.warn(\"[tsdemuxer]: MPEG PES unknown PTS\");\n      return;\n    }\n    while (offset < length) {\n      if (isHeader(data, offset)) {\n        const frame = appendFrame$1(track, data, offset, pts, frameIndex);\n        if (frame) {\n          offset += frame.length;\n          frameIndex++;\n        } else {\n          break;\n        }\n      } else {\n        offset++;\n      }\n    }\n  }\n  parseAC3PES(track, pes) {\n    {\n      const data = pes.data;\n      const pts = pes.pts;\n      if (pts === void 0) {\n        logger.warn(\"[tsdemuxer]: AC3 PES unknown PTS\");\n        return;\n      }\n      const length = data.length;\n      let frameIndex = 0;\n      let offset = 0;\n      let parsed;\n      while (offset < length && (parsed = appendFrame(track, data, offset, pts, frameIndex++)) > 0) {\n        offset += parsed;\n      }\n    }\n  }\n  parseID3PES(id3Track, pes) {\n    if (pes.pts === void 0) {\n      logger.warn(\"[tsdemuxer]: ID3 PES unknown PTS\");\n      return;\n    }\n    const id3Sample = _extends({}, pes, {\n      type: this._videoTrack ? MetadataSchema.emsg : MetadataSchema.audioId3,\n      duration: Number.POSITIVE_INFINITY\n    });\n    id3Track.samples.push(id3Sample);\n  }\n};\nfunction parsePID(data, offset) {\n  return ((data[offset + 1] & 31) << 8) + data[offset + 2];\n}\nfunction parsePAT(data, offset) {\n  return (data[offset + 10] & 31) << 8 | data[offset + 11];\n}\nfunction parsePMT(data, offset, typeSupported, isSampleAes, observer2) {\n  const result = {\n    audioPid: -1,\n    videoPid: -1,\n    id3Pid: -1,\n    segmentVideoCodec: \"avc\",\n    segmentAudioCodec: \"aac\"\n  };\n  const sectionLength = (data[offset + 1] & 15) << 8 | data[offset + 2];\n  const tableEnd = offset + 3 + sectionLength - 4;\n  const programInfoLength = (data[offset + 10] & 15) << 8 | data[offset + 11];\n  offset += 12 + programInfoLength;\n  while (offset < tableEnd) {\n    const pid = parsePID(data, offset);\n    const esInfoLength = (data[offset + 3] & 15) << 8 | data[offset + 4];\n    switch (data[offset]) {\n      case 207:\n        if (!isSampleAes) {\n          logEncryptedSamplesFoundInUnencryptedStream(\"ADTS AAC\");\n          break;\n        }\n      /* falls through */\n      case 15:\n        if (result.audioPid === -1) {\n          result.audioPid = pid;\n        }\n        break;\n      // Packetized metadata (ID3)\n      case 21:\n        if (result.id3Pid === -1) {\n          result.id3Pid = pid;\n        }\n        break;\n      case 219:\n        if (!isSampleAes) {\n          logEncryptedSamplesFoundInUnencryptedStream(\"H.264\");\n          break;\n        }\n      /* falls through */\n      case 27:\n        if (result.videoPid === -1) {\n          result.videoPid = pid;\n          result.segmentVideoCodec = \"avc\";\n        }\n        break;\n      // ISO/IEC 11172-3 (MPEG-1 audio)\n      // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio)\n      case 3:\n      case 4:\n        if (!typeSupported.mpeg && !typeSupported.mp3) {\n          logger.log(\"MPEG audio found, not supported in this browser\");\n        } else if (result.audioPid === -1) {\n          result.audioPid = pid;\n          result.segmentAudioCodec = \"mp3\";\n        }\n        break;\n      case 193:\n        if (!isSampleAes) {\n          logEncryptedSamplesFoundInUnencryptedStream(\"AC-3\");\n          break;\n        }\n      /* falls through */\n      case 129:\n        {\n          if (!typeSupported.ac3) {\n            logger.log(\"AC-3 audio found, not supported in this browser\");\n          } else if (result.audioPid === -1) {\n            result.audioPid = pid;\n            result.segmentAudioCodec = \"ac3\";\n          }\n        }\n        break;\n      case 6:\n        if (result.audioPid === -1 && esInfoLength > 0) {\n          let parsePos = offset + 5;\n          let remaining = esInfoLength;\n          while (remaining > 2) {\n            const descriptorId = data[parsePos];\n            switch (descriptorId) {\n              case 106:\n                {\n                  if (typeSupported.ac3 !== true) {\n                    logger.log(\"AC-3 audio found, not supported in this browser for now\");\n                  } else {\n                    result.audioPid = pid;\n                    result.segmentAudioCodec = \"ac3\";\n                  }\n                }\n                break;\n            }\n            const descriptorLen = data[parsePos + 1] + 2;\n            parsePos += descriptorLen;\n            remaining -= descriptorLen;\n          }\n        }\n        break;\n      case 194:\n      // SAMPLE-AES EC3\n      /* falls through */\n      case 135:\n        emitParsingError(observer2, new Error(\"Unsupported EC-3 in M2TS found\"));\n        return result;\n      case 36:\n        emitParsingError(observer2, new Error(\"Unsupported HEVC in M2TS found\"));\n        return result;\n    }\n    offset += esInfoLength + 5;\n  }\n  return result;\n}\nfunction emitParsingError(observer2, error, levelRetry) {\n  logger.warn(`parsing error: ${error.message}`);\n  observer2.emit(Events.ERROR, Events.ERROR, {\n    type: ErrorTypes.MEDIA_ERROR,\n    details: ErrorDetails.FRAG_PARSING_ERROR,\n    fatal: false,\n    levelRetry,\n    error,\n    reason: error.message\n  });\n}\nfunction logEncryptedSamplesFoundInUnencryptedStream(type) {\n  logger.log(`${type} with AES-128-CBC encryption found in unencrypted stream`);\n}\nfunction parsePES(stream) {\n  let i2 = 0;\n  let frag;\n  let pesLen;\n  let pesHdrLen;\n  let pesPts;\n  let pesDts;\n  const data = stream.data;\n  if (!stream || stream.size === 0) {\n    return null;\n  }\n  while (data[0].length < 19 && data.length > 1) {\n    data[0] = appendUint8Array(data[0], data[1]);\n    data.splice(1, 1);\n  }\n  frag = data[0];\n  const pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];\n  if (pesPrefix === 1) {\n    pesLen = (frag[4] << 8) + frag[5];\n    if (pesLen && pesLen > stream.size - 6) {\n      return null;\n    }\n    const pesFlags = frag[7];\n    if (pesFlags & 192) {\n      pesPts = (frag[9] & 14) * 536870912 + // 1 << 29\n      (frag[10] & 255) * 4194304 + // 1 << 22\n      (frag[11] & 254) * 16384 + // 1 << 14\n      (frag[12] & 255) * 128 + // 1 << 7\n      (frag[13] & 254) / 2;\n      if (pesFlags & 64) {\n        pesDts = (frag[14] & 14) * 536870912 + // 1 << 29\n        (frag[15] & 255) * 4194304 + // 1 << 22\n        (frag[16] & 254) * 16384 + // 1 << 14\n        (frag[17] & 255) * 128 + // 1 << 7\n        (frag[18] & 254) / 2;\n        if (pesPts - pesDts > 60 * 9e4) {\n          logger.warn(`${Math.round((pesPts - pesDts) / 9e4)}s delta between PTS and DTS, align them`);\n          pesPts = pesDts;\n        }\n      } else {\n        pesDts = pesPts;\n      }\n    }\n    pesHdrLen = frag[8];\n    let payloadStartOffset = pesHdrLen + 9;\n    if (stream.size <= payloadStartOffset) {\n      return null;\n    }\n    stream.size -= payloadStartOffset;\n    const pesData = new Uint8Array(stream.size);\n    for (let j4 = 0, dataLen = data.length; j4 < dataLen; j4++) {\n      frag = data[j4];\n      let len = frag.byteLength;\n      if (payloadStartOffset) {\n        if (payloadStartOffset > len) {\n          payloadStartOffset -= len;\n          continue;\n        } else {\n          frag = frag.subarray(payloadStartOffset);\n          len -= payloadStartOffset;\n          payloadStartOffset = 0;\n        }\n      }\n      pesData.set(frag, i2);\n      i2 += len;\n    }\n    if (pesLen) {\n      pesLen -= pesHdrLen + 3;\n    }\n    return {\n      data: pesData,\n      pts: pesPts,\n      dts: pesDts,\n      len: pesLen\n    };\n  }\n  return null;\n}\nvar MP3Demuxer = class extends BaseAudioDemuxer {\n  resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n    super.resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration);\n    this._audioTrack = {\n      container: \"audio/mpeg\",\n      type: \"audio\",\n      id: 2,\n      pid: -1,\n      sequenceNumber: 0,\n      segmentCodec: \"mp3\",\n      samples: [],\n      manifestCodec: audioCodec,\n      duration: trackDuration,\n      inputTimeScale: 9e4,\n      dropped: 0\n    };\n  }\n  static probe(data) {\n    if (!data) {\n      return false;\n    }\n    const id3Data = getID3Data(data, 0);\n    let offset = (id3Data == null ? void 0 : id3Data.length) || 0;\n    if (id3Data && data[offset] === 11 && data[offset + 1] === 119 && getTimeStamp(id3Data) !== void 0 && // check the bsid to confirm ac-3 or ec-3 (not mp3)\n    getAudioBSID(data, offset) <= 16) {\n      return false;\n    }\n    for (let length = data.length; offset < length; offset++) {\n      if (probe(data, offset)) {\n        logger.log(\"MPEG Audio sync word found !\");\n        return true;\n      }\n    }\n    return false;\n  }\n  canParse(data, offset) {\n    return canParse(data, offset);\n  }\n  appendFrame(track, data, offset) {\n    if (this.basePTS === null) {\n      return;\n    }\n    return appendFrame$1(track, data, offset, this.basePTS, this.frameIndex);\n  }\n};\nvar AAC = class {\n  static getSilentFrame(codec, channelCount) {\n    switch (codec) {\n      case \"mp4a.40.2\":\n        if (channelCount === 1) {\n          return new Uint8Array([0, 200, 0, 128, 35, 128]);\n        } else if (channelCount === 2) {\n          return new Uint8Array([33, 0, 73, 144, 2, 25, 0, 35, 128]);\n        } else if (channelCount === 3) {\n          return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142]);\n        } else if (channelCount === 4) {\n          return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44, 128, 8, 2, 56]);\n        } else if (channelCount === 5) {\n          return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 56]);\n        } else if (channelCount === 6) {\n          return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 0, 178, 0, 32, 8, 224]);\n        }\n        break;\n      // handle HE-AAC below (mp4a.40.5 / mp4a.40.29)\n      default:\n        if (channelCount === 1) {\n          return new Uint8Array([1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28, 6, 241, 193, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);\n        } else if (channelCount === 2) {\n          return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);\n        } else if (channelCount === 3) {\n          return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);\n        }\n        break;\n    }\n    return void 0;\n  }\n};\nvar UINT32_MAX = Math.pow(2, 32) - 1;\nvar MP4 = class _MP4 {\n  static init() {\n    _MP4.types = {\n      avc1: [],\n      // codingname\n      avcC: [],\n      btrt: [],\n      dinf: [],\n      dref: [],\n      esds: [],\n      ftyp: [],\n      hdlr: [],\n      mdat: [],\n      mdhd: [],\n      mdia: [],\n      mfhd: [],\n      minf: [],\n      moof: [],\n      moov: [],\n      mp4a: [],\n      \".mp3\": [],\n      dac3: [],\n      \"ac-3\": [],\n      mvex: [],\n      mvhd: [],\n      pasp: [],\n      sdtp: [],\n      stbl: [],\n      stco: [],\n      stsc: [],\n      stsd: [],\n      stsz: [],\n      stts: [],\n      tfdt: [],\n      tfhd: [],\n      traf: [],\n      trak: [],\n      trun: [],\n      trex: [],\n      tkhd: [],\n      vmhd: [],\n      smhd: []\n    };\n    let i2;\n    for (i2 in _MP4.types) {\n      if (_MP4.types.hasOwnProperty(i2)) {\n        _MP4.types[i2] = [i2.charCodeAt(0), i2.charCodeAt(1), i2.charCodeAt(2), i2.charCodeAt(3)];\n      }\n    }\n    const videoHdlr = new Uint8Array([\n      0,\n      // version 0\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      0,\n      // pre_defined\n      118,\n      105,\n      100,\n      101,\n      // handler_type: 'vide'\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      86,\n      105,\n      100,\n      101,\n      111,\n      72,\n      97,\n      110,\n      100,\n      108,\n      101,\n      114,\n      0\n      // name: 'VideoHandler'\n    ]);\n    const audioHdlr = new Uint8Array([\n      0,\n      // version 0\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      0,\n      // pre_defined\n      115,\n      111,\n      117,\n      110,\n      // handler_type: 'soun'\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      83,\n      111,\n      117,\n      110,\n      100,\n      72,\n      97,\n      110,\n      100,\n      108,\n      101,\n      114,\n      0\n      // name: 'SoundHandler'\n    ]);\n    _MP4.HDLR_TYPES = {\n      video: videoHdlr,\n      audio: audioHdlr\n    };\n    const dref = new Uint8Array([\n      0,\n      // version 0\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      1,\n      // entry_count\n      0,\n      0,\n      0,\n      12,\n      // entry_size\n      117,\n      114,\n      108,\n      32,\n      // 'url' type\n      0,\n      // version 0\n      0,\n      0,\n      1\n      // entry_flags\n    ]);\n    const stco = new Uint8Array([\n      0,\n      // version\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      0\n      // entry_count\n    ]);\n    _MP4.STTS = _MP4.STSC = _MP4.STCO = stco;\n    _MP4.STSZ = new Uint8Array([\n      0,\n      // version\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      0,\n      // sample_size\n      0,\n      0,\n      0,\n      0\n      // sample_count\n    ]);\n    _MP4.VMHD = new Uint8Array([\n      0,\n      // version\n      0,\n      0,\n      1,\n      // flags\n      0,\n      0,\n      // graphicsmode\n      0,\n      0,\n      0,\n      0,\n      0,\n      0\n      // opcolor\n    ]);\n    _MP4.SMHD = new Uint8Array([\n      0,\n      // version\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      // balance\n      0,\n      0\n      // reserved\n    ]);\n    _MP4.STSD = new Uint8Array([\n      0,\n      // version 0\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      1\n    ]);\n    const majorBrand = new Uint8Array([105, 115, 111, 109]);\n    const avc1Brand = new Uint8Array([97, 118, 99, 49]);\n    const minorVersion = new Uint8Array([0, 0, 0, 1]);\n    _MP4.FTYP = _MP4.box(_MP4.types.ftyp, majorBrand, minorVersion, majorBrand, avc1Brand);\n    _MP4.DINF = _MP4.box(_MP4.types.dinf, _MP4.box(_MP4.types.dref, dref));\n  }\n  static box(type, ...payload) {\n    let size = 8;\n    let i2 = payload.length;\n    const len = i2;\n    while (i2--) {\n      size += payload[i2].byteLength;\n    }\n    const result = new Uint8Array(size);\n    result[0] = size >> 24 & 255;\n    result[1] = size >> 16 & 255;\n    result[2] = size >> 8 & 255;\n    result[3] = size & 255;\n    result.set(type, 4);\n    for (i2 = 0, size = 8; i2 < len; i2++) {\n      result.set(payload[i2], size);\n      size += payload[i2].byteLength;\n    }\n    return result;\n  }\n  static hdlr(type) {\n    return _MP4.box(_MP4.types.hdlr, _MP4.HDLR_TYPES[type]);\n  }\n  static mdat(data) {\n    return _MP4.box(_MP4.types.mdat, data);\n  }\n  static mdhd(timescale, duration) {\n    duration *= timescale;\n    const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n    const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n    return _MP4.box(_MP4.types.mdhd, new Uint8Array([\n      1,\n      // version 1\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      2,\n      // creation_time\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      3,\n      // modification_time\n      timescale >> 24 & 255,\n      timescale >> 16 & 255,\n      timescale >> 8 & 255,\n      timescale & 255,\n      // timescale\n      upperWordDuration >> 24,\n      upperWordDuration >> 16 & 255,\n      upperWordDuration >> 8 & 255,\n      upperWordDuration & 255,\n      lowerWordDuration >> 24,\n      lowerWordDuration >> 16 & 255,\n      lowerWordDuration >> 8 & 255,\n      lowerWordDuration & 255,\n      85,\n      196,\n      // 'und' language (undetermined)\n      0,\n      0\n    ]));\n  }\n  static mdia(track) {\n    return _MP4.box(_MP4.types.mdia, _MP4.mdhd(track.timescale, track.duration), _MP4.hdlr(track.type), _MP4.minf(track));\n  }\n  static mfhd(sequenceNumber) {\n    return _MP4.box(_MP4.types.mfhd, new Uint8Array([\n      0,\n      0,\n      0,\n      0,\n      // flags\n      sequenceNumber >> 24,\n      sequenceNumber >> 16 & 255,\n      sequenceNumber >> 8 & 255,\n      sequenceNumber & 255\n      // sequence_number\n    ]));\n  }\n  static minf(track) {\n    if (track.type === \"audio\") {\n      return _MP4.box(_MP4.types.minf, _MP4.box(_MP4.types.smhd, _MP4.SMHD), _MP4.DINF, _MP4.stbl(track));\n    } else {\n      return _MP4.box(_MP4.types.minf, _MP4.box(_MP4.types.vmhd, _MP4.VMHD), _MP4.DINF, _MP4.stbl(track));\n    }\n  }\n  static moof(sn, baseMediaDecodeTime, track) {\n    return _MP4.box(_MP4.types.moof, _MP4.mfhd(sn), _MP4.traf(track, baseMediaDecodeTime));\n  }\n  static moov(tracks) {\n    let i2 = tracks.length;\n    const boxes = [];\n    while (i2--) {\n      boxes[i2] = _MP4.trak(tracks[i2]);\n    }\n    return _MP4.box.apply(null, [_MP4.types.moov, _MP4.mvhd(tracks[0].timescale, tracks[0].duration)].concat(boxes).concat(_MP4.mvex(tracks)));\n  }\n  static mvex(tracks) {\n    let i2 = tracks.length;\n    const boxes = [];\n    while (i2--) {\n      boxes[i2] = _MP4.trex(tracks[i2]);\n    }\n    return _MP4.box.apply(null, [_MP4.types.mvex, ...boxes]);\n  }\n  static mvhd(timescale, duration) {\n    duration *= timescale;\n    const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n    const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n    const bytes = new Uint8Array([\n      1,\n      // version 1\n      0,\n      0,\n      0,\n      // flags\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      2,\n      // creation_time\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      3,\n      // modification_time\n      timescale >> 24 & 255,\n      timescale >> 16 & 255,\n      timescale >> 8 & 255,\n      timescale & 255,\n      // timescale\n      upperWordDuration >> 24,\n      upperWordDuration >> 16 & 255,\n      upperWordDuration >> 8 & 255,\n      upperWordDuration & 255,\n      lowerWordDuration >> 24,\n      lowerWordDuration >> 16 & 255,\n      lowerWordDuration >> 8 & 255,\n      lowerWordDuration & 255,\n      0,\n      1,\n      0,\n      0,\n      // 1.0 rate\n      1,\n      0,\n      // 1.0 volume\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      64,\n      0,\n      0,\n      0,\n      // transformation: unity matrix\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      // pre_defined\n      255,\n      255,\n      255,\n      255\n      // next_track_ID\n    ]);\n    return _MP4.box(_MP4.types.mvhd, bytes);\n  }\n  static sdtp(track) {\n    const samples = track.samples || [];\n    const bytes = new Uint8Array(4 + samples.length);\n    let i2;\n    let flags;\n    for (i2 = 0; i2 < samples.length; i2++) {\n      flags = samples[i2].flags;\n      bytes[i2 + 4] = flags.dependsOn << 4 | flags.isDependedOn << 2 | flags.hasRedundancy;\n    }\n    return _MP4.box(_MP4.types.sdtp, bytes);\n  }\n  static stbl(track) {\n    return _MP4.box(_MP4.types.stbl, _MP4.stsd(track), _MP4.box(_MP4.types.stts, _MP4.STTS), _MP4.box(_MP4.types.stsc, _MP4.STSC), _MP4.box(_MP4.types.stsz, _MP4.STSZ), _MP4.box(_MP4.types.stco, _MP4.STCO));\n  }\n  static avc1(track) {\n    let sps = [];\n    let pps = [];\n    let i2;\n    let data;\n    let len;\n    for (i2 = 0; i2 < track.sps.length; i2++) {\n      data = track.sps[i2];\n      len = data.byteLength;\n      sps.push(len >>> 8 & 255);\n      sps.push(len & 255);\n      sps = sps.concat(Array.prototype.slice.call(data));\n    }\n    for (i2 = 0; i2 < track.pps.length; i2++) {\n      data = track.pps[i2];\n      len = data.byteLength;\n      pps.push(len >>> 8 & 255);\n      pps.push(len & 255);\n      pps = pps.concat(Array.prototype.slice.call(data));\n    }\n    const avcc = _MP4.box(_MP4.types.avcC, new Uint8Array([\n      1,\n      // version\n      sps[3],\n      // profile\n      sps[4],\n      // profile compat\n      sps[5],\n      // level\n      252 | 3,\n      // lengthSizeMinusOne, hard-coded to 4 bytes\n      224 | track.sps.length\n      // 3bit reserved (111) + numOfSequenceParameterSets\n    ].concat(sps).concat([\n      track.pps.length\n      // numOfPictureParameterSets\n    ]).concat(pps)));\n    const width = track.width;\n    const height = track.height;\n    const hSpacing = track.pixelRatio[0];\n    const vSpacing = track.pixelRatio[1];\n    return _MP4.box(\n      _MP4.types.avc1,\n      new Uint8Array([\n        0,\n        0,\n        0,\n        // reserved\n        0,\n        0,\n        0,\n        // reserved\n        0,\n        1,\n        // data_reference_index\n        0,\n        0,\n        // pre_defined\n        0,\n        0,\n        // reserved\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        // pre_defined\n        width >> 8 & 255,\n        width & 255,\n        // width\n        height >> 8 & 255,\n        height & 255,\n        // height\n        0,\n        72,\n        0,\n        0,\n        // horizresolution\n        0,\n        72,\n        0,\n        0,\n        // vertresolution\n        0,\n        0,\n        0,\n        0,\n        // reserved\n        0,\n        1,\n        // frame_count\n        18,\n        100,\n        97,\n        105,\n        108,\n        // dailymotion/hls.js\n        121,\n        109,\n        111,\n        116,\n        105,\n        111,\n        110,\n        47,\n        104,\n        108,\n        115,\n        46,\n        106,\n        115,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        // compressorname\n        0,\n        24,\n        // depth = 24\n        17,\n        17\n      ]),\n      // pre_defined = -1\n      avcc,\n      _MP4.box(_MP4.types.btrt, new Uint8Array([\n        0,\n        28,\n        156,\n        128,\n        // bufferSizeDB\n        0,\n        45,\n        198,\n        192,\n        // maxBitrate\n        0,\n        45,\n        198,\n        192\n      ])),\n      // avgBitrate\n      _MP4.box(_MP4.types.pasp, new Uint8Array([\n        hSpacing >> 24,\n        // hSpacing\n        hSpacing >> 16 & 255,\n        hSpacing >> 8 & 255,\n        hSpacing & 255,\n        vSpacing >> 24,\n        // vSpacing\n        vSpacing >> 16 & 255,\n        vSpacing >> 8 & 255,\n        vSpacing & 255\n      ]))\n    );\n  }\n  static esds(track) {\n    const configlen = track.config.length;\n    return new Uint8Array([\n      0,\n      // version 0\n      0,\n      0,\n      0,\n      // flags\n      3,\n      // descriptor_type\n      23 + configlen,\n      // length\n      0,\n      1,\n      // es_id\n      0,\n      // stream_priority\n      4,\n      // descriptor_type\n      15 + configlen,\n      // length\n      64,\n      // codec : mpeg4_audio\n      21,\n      // stream_type\n      0,\n      0,\n      0,\n      // buffer_size\n      0,\n      0,\n      0,\n      0,\n      // maxBitrate\n      0,\n      0,\n      0,\n      0,\n      // avgBitrate\n      5\n      // descriptor_type\n    ].concat([configlen]).concat(track.config).concat([6, 1, 2]));\n  }\n  static audioStsd(track) {\n    const samplerate = track.samplerate;\n    return new Uint8Array([\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      1,\n      // data_reference_index\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      track.channelCount,\n      // channelcount\n      0,\n      16,\n      // sampleSize:16bits\n      0,\n      0,\n      0,\n      0,\n      // reserved2\n      samplerate >> 8 & 255,\n      samplerate & 255,\n      //\n      0,\n      0\n    ]);\n  }\n  static mp4a(track) {\n    return _MP4.box(_MP4.types.mp4a, _MP4.audioStsd(track), _MP4.box(_MP4.types.esds, _MP4.esds(track)));\n  }\n  static mp3(track) {\n    return _MP4.box(_MP4.types[\".mp3\"], _MP4.audioStsd(track));\n  }\n  static ac3(track) {\n    return _MP4.box(_MP4.types[\"ac-3\"], _MP4.audioStsd(track), _MP4.box(_MP4.types.dac3, track.config));\n  }\n  static stsd(track) {\n    if (track.type === \"audio\") {\n      if (track.segmentCodec === \"mp3\" && track.codec === \"mp3\") {\n        return _MP4.box(_MP4.types.stsd, _MP4.STSD, _MP4.mp3(track));\n      }\n      if (track.segmentCodec === \"ac3\") {\n        return _MP4.box(_MP4.types.stsd, _MP4.STSD, _MP4.ac3(track));\n      }\n      return _MP4.box(_MP4.types.stsd, _MP4.STSD, _MP4.mp4a(track));\n    } else {\n      return _MP4.box(_MP4.types.stsd, _MP4.STSD, _MP4.avc1(track));\n    }\n  }\n  static tkhd(track) {\n    const id = track.id;\n    const duration = track.duration * track.timescale;\n    const width = track.width;\n    const height = track.height;\n    const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n    const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n    return _MP4.box(_MP4.types.tkhd, new Uint8Array([\n      1,\n      // version 1\n      0,\n      0,\n      7,\n      // flags\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      2,\n      // creation_time\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      3,\n      // modification_time\n      id >> 24 & 255,\n      id >> 16 & 255,\n      id >> 8 & 255,\n      id & 255,\n      // track_ID\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      upperWordDuration >> 24,\n      upperWordDuration >> 16 & 255,\n      upperWordDuration >> 8 & 255,\n      upperWordDuration & 255,\n      lowerWordDuration >> 24,\n      lowerWordDuration >> 16 & 255,\n      lowerWordDuration >> 8 & 255,\n      lowerWordDuration & 255,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      // reserved\n      0,\n      0,\n      // layer\n      0,\n      0,\n      // alternate_group\n      0,\n      0,\n      // non-audio track volume\n      0,\n      0,\n      // reserved\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      64,\n      0,\n      0,\n      0,\n      // transformation: unity matrix\n      width >> 8 & 255,\n      width & 255,\n      0,\n      0,\n      // width\n      height >> 8 & 255,\n      height & 255,\n      0,\n      0\n      // height\n    ]));\n  }\n  static traf(track, baseMediaDecodeTime) {\n    const sampleDependencyTable = _MP4.sdtp(track);\n    const id = track.id;\n    const upperWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));\n    const lowerWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));\n    return _MP4.box(\n      _MP4.types.traf,\n      _MP4.box(_MP4.types.tfhd, new Uint8Array([\n        0,\n        // version 0\n        0,\n        0,\n        0,\n        // flags\n        id >> 24,\n        id >> 16 & 255,\n        id >> 8 & 255,\n        id & 255\n        // track_ID\n      ])),\n      _MP4.box(_MP4.types.tfdt, new Uint8Array([\n        1,\n        // version 1\n        0,\n        0,\n        0,\n        // flags\n        upperWordBaseMediaDecodeTime >> 24,\n        upperWordBaseMediaDecodeTime >> 16 & 255,\n        upperWordBaseMediaDecodeTime >> 8 & 255,\n        upperWordBaseMediaDecodeTime & 255,\n        lowerWordBaseMediaDecodeTime >> 24,\n        lowerWordBaseMediaDecodeTime >> 16 & 255,\n        lowerWordBaseMediaDecodeTime >> 8 & 255,\n        lowerWordBaseMediaDecodeTime & 255\n      ])),\n      _MP4.trun(track, sampleDependencyTable.length + 16 + // tfhd\n      20 + // tfdt\n      8 + // traf header\n      16 + // mfhd\n      8 + // moof header\n      8),\n      // mdat header\n      sampleDependencyTable\n    );\n  }\n  /**\n   * Generate a track box.\n   * @param track a track definition\n   */\n  static trak(track) {\n    track.duration = track.duration || 4294967295;\n    return _MP4.box(_MP4.types.trak, _MP4.tkhd(track), _MP4.mdia(track));\n  }\n  static trex(track) {\n    const id = track.id;\n    return _MP4.box(_MP4.types.trex, new Uint8Array([\n      0,\n      // version 0\n      0,\n      0,\n      0,\n      // flags\n      id >> 24,\n      id >> 16 & 255,\n      id >> 8 & 255,\n      id & 255,\n      // track_ID\n      0,\n      0,\n      0,\n      1,\n      // default_sample_description_index\n      0,\n      0,\n      0,\n      0,\n      // default_sample_duration\n      0,\n      0,\n      0,\n      0,\n      // default_sample_size\n      0,\n      1,\n      0,\n      1\n      // default_sample_flags\n    ]));\n  }\n  static trun(track, offset) {\n    const samples = track.samples || [];\n    const len = samples.length;\n    const arraylen = 12 + 16 * len;\n    const array = new Uint8Array(arraylen);\n    let i2;\n    let sample;\n    let duration;\n    let size;\n    let flags;\n    let cts;\n    offset += 8 + arraylen;\n    array.set([\n      track.type === \"video\" ? 1 : 0,\n      // version 1 for video with signed-int sample_composition_time_offset\n      0,\n      15,\n      1,\n      // flags\n      len >>> 24 & 255,\n      len >>> 16 & 255,\n      len >>> 8 & 255,\n      len & 255,\n      // sample_count\n      offset >>> 24 & 255,\n      offset >>> 16 & 255,\n      offset >>> 8 & 255,\n      offset & 255\n      // data_offset\n    ], 0);\n    for (i2 = 0; i2 < len; i2++) {\n      sample = samples[i2];\n      duration = sample.duration;\n      size = sample.size;\n      flags = sample.flags;\n      cts = sample.cts;\n      array.set([\n        duration >>> 24 & 255,\n        duration >>> 16 & 255,\n        duration >>> 8 & 255,\n        duration & 255,\n        // sample_duration\n        size >>> 24 & 255,\n        size >>> 16 & 255,\n        size >>> 8 & 255,\n        size & 255,\n        // sample_size\n        flags.isLeading << 2 | flags.dependsOn,\n        flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.paddingValue << 1 | flags.isNonSync,\n        flags.degradPrio & 240 << 8,\n        flags.degradPrio & 15,\n        // sample_flags\n        cts >>> 24 & 255,\n        cts >>> 16 & 255,\n        cts >>> 8 & 255,\n        cts & 255\n        // sample_composition_time_offset\n      ], 12 + 16 * i2);\n    }\n    return _MP4.box(_MP4.types.trun, array);\n  }\n  static initSegment(tracks) {\n    if (!_MP4.types) {\n      _MP4.init();\n    }\n    const movie = _MP4.moov(tracks);\n    const result = appendUint8Array(_MP4.FTYP, movie);\n    return result;\n  }\n};\nMP4.types = void 0;\nMP4.HDLR_TYPES = void 0;\nMP4.STTS = void 0;\nMP4.STSC = void 0;\nMP4.STCO = void 0;\nMP4.STSZ = void 0;\nMP4.VMHD = void 0;\nMP4.SMHD = void 0;\nMP4.STSD = void 0;\nMP4.FTYP = void 0;\nMP4.DINF = void 0;\nvar MPEG_TS_CLOCK_FREQ_HZ = 9e4;\nfunction toTimescaleFromBase(baseTime, destScale, srcBase = 1, round = false) {\n  const result = baseTime * destScale * srcBase;\n  return round ? Math.round(result) : result;\n}\nfunction toTimescaleFromScale(baseTime, destScale, srcScale = 1, round = false) {\n  return toTimescaleFromBase(baseTime, destScale, 1 / srcScale, round);\n}\nfunction toMsFromMpegTsClock(baseTime, round = false) {\n  return toTimescaleFromBase(baseTime, 1e3, 1 / MPEG_TS_CLOCK_FREQ_HZ, round);\n}\nfunction toMpegTsClockFromTimescale(baseTime, srcScale = 1) {\n  return toTimescaleFromBase(baseTime, MPEG_TS_CLOCK_FREQ_HZ, 1 / srcScale);\n}\nvar MAX_SILENT_FRAME_DURATION = 10 * 1e3;\nvar AAC_SAMPLES_PER_FRAME = 1024;\nvar MPEG_AUDIO_SAMPLE_PER_FRAME = 1152;\nvar AC3_SAMPLES_PER_FRAME = 1536;\nvar chromeVersion = null;\nvar safariWebkitVersion = null;\nvar MP4Remuxer = class {\n  constructor(observer2, config, typeSupported, vendor = \"\") {\n    this.observer = void 0;\n    this.config = void 0;\n    this.typeSupported = void 0;\n    this.ISGenerated = false;\n    this._initPTS = null;\n    this._initDTS = null;\n    this.nextAvcDts = null;\n    this.nextAudioPts = null;\n    this.videoSampleDuration = null;\n    this.isAudioContiguous = false;\n    this.isVideoContiguous = false;\n    this.videoTrackConfig = void 0;\n    this.observer = observer2;\n    this.config = config;\n    this.typeSupported = typeSupported;\n    this.ISGenerated = false;\n    if (chromeVersion === null) {\n      const userAgent = navigator.userAgent || \"\";\n      const result = userAgent.match(/Chrome\\/(\\d+)/i);\n      chromeVersion = result ? parseInt(result[1]) : 0;\n    }\n    if (safariWebkitVersion === null) {\n      const result = navigator.userAgent.match(/Safari\\/(\\d+)/i);\n      safariWebkitVersion = result ? parseInt(result[1]) : 0;\n    }\n  }\n  destroy() {\n    this.config = this.videoTrackConfig = this._initPTS = this._initDTS = null;\n  }\n  resetTimeStamp(defaultTimeStamp) {\n    logger.log(\"[mp4-remuxer]: initPTS & initDTS reset\");\n    this._initPTS = this._initDTS = defaultTimeStamp;\n  }\n  resetNextTimestamp() {\n    logger.log(\"[mp4-remuxer]: reset next timestamp\");\n    this.isVideoContiguous = false;\n    this.isAudioContiguous = false;\n  }\n  resetInitSegment() {\n    logger.log(\"[mp4-remuxer]: ISGenerated flag reset\");\n    this.ISGenerated = false;\n    this.videoTrackConfig = void 0;\n  }\n  getVideoStartPts(videoSamples) {\n    let rolloverDetected = false;\n    const firstPts = videoSamples[0].pts;\n    const startPTS = videoSamples.reduce((minPTS, sample) => {\n      let pts = sample.pts;\n      let delta = pts - minPTS;\n      if (delta < -4294967296) {\n        rolloverDetected = true;\n        pts = normalizePts(pts, firstPts);\n        delta = pts - minPTS;\n      }\n      if (delta > 0) {\n        return minPTS;\n      }\n      return pts;\n    }, firstPts);\n    if (rolloverDetected) {\n      logger.debug(\"PTS rollover detected\");\n    }\n    return startPTS;\n  }\n  remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, flush, playlistType) {\n    let video;\n    let audio;\n    let initSegment;\n    let text;\n    let id3;\n    let independent;\n    let audioTimeOffset = timeOffset;\n    let videoTimeOffset = timeOffset;\n    const hasAudio = audioTrack.pid > -1;\n    const hasVideo = videoTrack.pid > -1;\n    const length = videoTrack.samples.length;\n    const enoughAudioSamples = audioTrack.samples.length > 0;\n    const enoughVideoSamples = flush && length > 0 || length > 1;\n    const canRemuxAvc = (!hasAudio || enoughAudioSamples) && (!hasVideo || enoughVideoSamples) || this.ISGenerated || flush;\n    if (canRemuxAvc) {\n      if (this.ISGenerated) {\n        var _videoTrack$pixelRati, _config$pixelRatio, _videoTrack$pixelRati2, _config$pixelRatio2;\n        const config = this.videoTrackConfig;\n        if (config && (videoTrack.width !== config.width || videoTrack.height !== config.height || ((_videoTrack$pixelRati = videoTrack.pixelRatio) == null ? void 0 : _videoTrack$pixelRati[0]) !== ((_config$pixelRatio = config.pixelRatio) == null ? void 0 : _config$pixelRatio[0]) || ((_videoTrack$pixelRati2 = videoTrack.pixelRatio) == null ? void 0 : _videoTrack$pixelRati2[1]) !== ((_config$pixelRatio2 = config.pixelRatio) == null ? void 0 : _config$pixelRatio2[1]))) {\n          this.resetInitSegment();\n        }\n      } else {\n        initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset);\n      }\n      const isVideoContiguous = this.isVideoContiguous;\n      let firstKeyFrameIndex = -1;\n      let firstKeyFramePTS;\n      if (enoughVideoSamples) {\n        firstKeyFrameIndex = findKeyframeIndex(videoTrack.samples);\n        if (!isVideoContiguous && this.config.forceKeyFrameOnDiscontinuity) {\n          independent = true;\n          if (firstKeyFrameIndex > 0) {\n            logger.warn(`[mp4-remuxer]: Dropped ${firstKeyFrameIndex} out of ${length} video samples due to a missing keyframe`);\n            const startPTS = this.getVideoStartPts(videoTrack.samples);\n            videoTrack.samples = videoTrack.samples.slice(firstKeyFrameIndex);\n            videoTrack.dropped += firstKeyFrameIndex;\n            videoTimeOffset += (videoTrack.samples[0].pts - startPTS) / videoTrack.inputTimeScale;\n            firstKeyFramePTS = videoTimeOffset;\n          } else if (firstKeyFrameIndex === -1) {\n            logger.warn(`[mp4-remuxer]: No keyframe found out of ${length} video samples`);\n            independent = false;\n          }\n        }\n      }\n      if (this.ISGenerated) {\n        if (enoughAudioSamples && enoughVideoSamples) {\n          const startPTS = this.getVideoStartPts(videoTrack.samples);\n          const tsDelta = normalizePts(audioTrack.samples[0].pts, startPTS) - startPTS;\n          const audiovideoTimestampDelta = tsDelta / videoTrack.inputTimeScale;\n          audioTimeOffset += Math.max(0, audiovideoTimestampDelta);\n          videoTimeOffset += Math.max(0, -audiovideoTimestampDelta);\n        }\n        if (enoughAudioSamples) {\n          if (!audioTrack.samplerate) {\n            logger.warn(\"[mp4-remuxer]: regenerate InitSegment as audio detected\");\n            initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset);\n          }\n          audio = this.remuxAudio(audioTrack, audioTimeOffset, this.isAudioContiguous, accurateTimeOffset, hasVideo || enoughVideoSamples || playlistType === PlaylistLevelType.AUDIO ? videoTimeOffset : void 0);\n          if (enoughVideoSamples) {\n            const audioTrackLength = audio ? audio.endPTS - audio.startPTS : 0;\n            if (!videoTrack.inputTimeScale) {\n              logger.warn(\"[mp4-remuxer]: regenerate InitSegment as video detected\");\n              initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset);\n            }\n            video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, audioTrackLength);\n          }\n        } else if (enoughVideoSamples) {\n          video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, 0);\n        }\n        if (video) {\n          video.firstKeyFrame = firstKeyFrameIndex;\n          video.independent = firstKeyFrameIndex !== -1;\n          video.firstKeyFramePTS = firstKeyFramePTS;\n        }\n      }\n    }\n    if (this.ISGenerated && this._initPTS && this._initDTS) {\n      if (id3Track.samples.length) {\n        id3 = flushTextTrackMetadataCueSamples(id3Track, timeOffset, this._initPTS, this._initDTS);\n      }\n      if (textTrack.samples.length) {\n        text = flushTextTrackUserdataCueSamples(textTrack, timeOffset, this._initPTS);\n      }\n    }\n    return {\n      audio,\n      video,\n      initSegment,\n      independent,\n      text,\n      id3\n    };\n  }\n  generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset) {\n    const audioSamples = audioTrack.samples;\n    const videoSamples = videoTrack.samples;\n    const typeSupported = this.typeSupported;\n    const tracks = {};\n    const _initPTS = this._initPTS;\n    let computePTSDTS = !_initPTS || accurateTimeOffset;\n    let container = \"audio/mp4\";\n    let initPTS;\n    let initDTS;\n    let timescale;\n    if (computePTSDTS) {\n      initPTS = initDTS = Infinity;\n    }\n    if (audioTrack.config && audioSamples.length) {\n      audioTrack.timescale = audioTrack.samplerate;\n      switch (audioTrack.segmentCodec) {\n        case \"mp3\":\n          if (typeSupported.mpeg) {\n            container = \"audio/mpeg\";\n            audioTrack.codec = \"\";\n          } else if (typeSupported.mp3) {\n            audioTrack.codec = \"mp3\";\n          }\n          break;\n        case \"ac3\":\n          audioTrack.codec = \"ac-3\";\n          break;\n      }\n      tracks.audio = {\n        id: \"audio\",\n        container,\n        codec: audioTrack.codec,\n        initSegment: audioTrack.segmentCodec === \"mp3\" && typeSupported.mpeg ? new Uint8Array(0) : MP4.initSegment([audioTrack]),\n        metadata: {\n          channelCount: audioTrack.channelCount\n        }\n      };\n      if (computePTSDTS) {\n        timescale = audioTrack.inputTimeScale;\n        if (!_initPTS || timescale !== _initPTS.timescale) {\n          initPTS = initDTS = audioSamples[0].pts - Math.round(timescale * timeOffset);\n        } else {\n          computePTSDTS = false;\n        }\n      }\n    }\n    if (videoTrack.sps && videoTrack.pps && videoSamples.length) {\n      videoTrack.timescale = videoTrack.inputTimeScale;\n      tracks.video = {\n        id: \"main\",\n        container: \"video/mp4\",\n        codec: videoTrack.codec,\n        initSegment: MP4.initSegment([videoTrack]),\n        metadata: {\n          width: videoTrack.width,\n          height: videoTrack.height\n        }\n      };\n      if (computePTSDTS) {\n        timescale = videoTrack.inputTimeScale;\n        if (!_initPTS || timescale !== _initPTS.timescale) {\n          const startPTS = this.getVideoStartPts(videoSamples);\n          const startOffset = Math.round(timescale * timeOffset);\n          initDTS = Math.min(initDTS, normalizePts(videoSamples[0].dts, startPTS) - startOffset);\n          initPTS = Math.min(initPTS, startPTS - startOffset);\n        } else {\n          computePTSDTS = false;\n        }\n      }\n      this.videoTrackConfig = {\n        width: videoTrack.width,\n        height: videoTrack.height,\n        pixelRatio: videoTrack.pixelRatio\n      };\n    }\n    if (Object.keys(tracks).length) {\n      this.ISGenerated = true;\n      if (computePTSDTS) {\n        this._initPTS = {\n          baseTime: initPTS,\n          timescale\n        };\n        this._initDTS = {\n          baseTime: initDTS,\n          timescale\n        };\n      } else {\n        initPTS = timescale = void 0;\n      }\n      return {\n        tracks,\n        initPTS,\n        timescale\n      };\n    }\n  }\n  remuxVideo(track, timeOffset, contiguous, audioTrackLength) {\n    const timeScale = track.inputTimeScale;\n    const inputSamples = track.samples;\n    const outputSamples = [];\n    const nbSamples = inputSamples.length;\n    const initPTS = this._initPTS;\n    let nextAvcDts = this.nextAvcDts;\n    let offset = 8;\n    let mp4SampleDuration = this.videoSampleDuration;\n    let firstDTS;\n    let lastDTS;\n    let minPTS = Number.POSITIVE_INFINITY;\n    let maxPTS = Number.NEGATIVE_INFINITY;\n    let sortSamples = false;\n    if (!contiguous || nextAvcDts === null) {\n      const pts = timeOffset * timeScale;\n      const cts = inputSamples[0].pts - normalizePts(inputSamples[0].dts, inputSamples[0].pts);\n      if (chromeVersion && nextAvcDts !== null && Math.abs(pts - cts - nextAvcDts) < 15e3) {\n        contiguous = true;\n      } else {\n        nextAvcDts = pts - cts;\n      }\n    }\n    const initTime = initPTS.baseTime * timeScale / initPTS.timescale;\n    for (let i2 = 0; i2 < nbSamples; i2++) {\n      const sample = inputSamples[i2];\n      sample.pts = normalizePts(sample.pts - initTime, nextAvcDts);\n      sample.dts = normalizePts(sample.dts - initTime, nextAvcDts);\n      if (sample.dts < inputSamples[i2 > 0 ? i2 - 1 : i2].dts) {\n        sortSamples = true;\n      }\n    }\n    if (sortSamples) {\n      inputSamples.sort(function(a2, b4) {\n        const deltadts = a2.dts - b4.dts;\n        const deltapts = a2.pts - b4.pts;\n        return deltadts || deltapts;\n      });\n    }\n    firstDTS = inputSamples[0].dts;\n    lastDTS = inputSamples[inputSamples.length - 1].dts;\n    const inputDuration = lastDTS - firstDTS;\n    const averageSampleDuration = inputDuration ? Math.round(inputDuration / (nbSamples - 1)) : mp4SampleDuration || track.inputTimeScale / 30;\n    if (contiguous) {\n      const delta = firstDTS - nextAvcDts;\n      const foundHole = delta > averageSampleDuration;\n      const foundOverlap = delta < -1;\n      if (foundHole || foundOverlap) {\n        if (foundHole) {\n          logger.warn(`AVC: ${toMsFromMpegTsClock(delta, true)} ms (${delta}dts) hole between fragments detected at ${timeOffset.toFixed(3)}`);\n        } else {\n          logger.warn(`AVC: ${toMsFromMpegTsClock(-delta, true)} ms (${delta}dts) overlapping between fragments detected at ${timeOffset.toFixed(3)}`);\n        }\n        if (!foundOverlap || nextAvcDts >= inputSamples[0].pts || chromeVersion) {\n          firstDTS = nextAvcDts;\n          const firstPTS = inputSamples[0].pts - delta;\n          if (foundHole) {\n            inputSamples[0].dts = firstDTS;\n            inputSamples[0].pts = firstPTS;\n          } else {\n            for (let i2 = 0; i2 < inputSamples.length; i2++) {\n              if (inputSamples[i2].dts > firstPTS) {\n                break;\n              }\n              inputSamples[i2].dts -= delta;\n              inputSamples[i2].pts -= delta;\n            }\n          }\n          logger.log(`Video: Initial PTS/DTS adjusted: ${toMsFromMpegTsClock(firstPTS, true)}/${toMsFromMpegTsClock(firstDTS, true)}, delta: ${toMsFromMpegTsClock(delta, true)} ms`);\n        }\n      }\n    }\n    firstDTS = Math.max(0, firstDTS);\n    let nbNalu = 0;\n    let naluLen = 0;\n    let dtsStep = firstDTS;\n    for (let i2 = 0; i2 < nbSamples; i2++) {\n      const sample = inputSamples[i2];\n      const units = sample.units;\n      const nbUnits = units.length;\n      let sampleLen = 0;\n      for (let j4 = 0; j4 < nbUnits; j4++) {\n        sampleLen += units[j4].data.length;\n      }\n      naluLen += sampleLen;\n      nbNalu += nbUnits;\n      sample.length = sampleLen;\n      if (sample.dts < dtsStep) {\n        sample.dts = dtsStep;\n        dtsStep += averageSampleDuration / 4 | 0 || 1;\n      } else {\n        dtsStep = sample.dts;\n      }\n      minPTS = Math.min(sample.pts, minPTS);\n      maxPTS = Math.max(sample.pts, maxPTS);\n    }\n    lastDTS = inputSamples[nbSamples - 1].dts;\n    const mdatSize = naluLen + 4 * nbNalu + 8;\n    let mdat;\n    try {\n      mdat = new Uint8Array(mdatSize);\n    } catch (err) {\n      this.observer.emit(Events.ERROR, Events.ERROR, {\n        type: ErrorTypes.MUX_ERROR,\n        details: ErrorDetails.REMUX_ALLOC_ERROR,\n        fatal: false,\n        error: err,\n        bytes: mdatSize,\n        reason: `fail allocating video mdat ${mdatSize}`\n      });\n      return;\n    }\n    const view = new DataView(mdat.buffer);\n    view.setUint32(0, mdatSize);\n    mdat.set(MP4.types.mdat, 4);\n    let stretchedLastFrame = false;\n    let minDtsDelta = Number.POSITIVE_INFINITY;\n    let minPtsDelta = Number.POSITIVE_INFINITY;\n    let maxDtsDelta = Number.NEGATIVE_INFINITY;\n    let maxPtsDelta = Number.NEGATIVE_INFINITY;\n    for (let i2 = 0; i2 < nbSamples; i2++) {\n      const VideoSample = inputSamples[i2];\n      const VideoSampleUnits = VideoSample.units;\n      let mp4SampleLength = 0;\n      for (let j4 = 0, nbUnits = VideoSampleUnits.length; j4 < nbUnits; j4++) {\n        const unit = VideoSampleUnits[j4];\n        const unitData = unit.data;\n        const unitDataLen = unit.data.byteLength;\n        view.setUint32(offset, unitDataLen);\n        offset += 4;\n        mdat.set(unitData, offset);\n        offset += unitDataLen;\n        mp4SampleLength += 4 + unitDataLen;\n      }\n      let ptsDelta;\n      if (i2 < nbSamples - 1) {\n        mp4SampleDuration = inputSamples[i2 + 1].dts - VideoSample.dts;\n        ptsDelta = inputSamples[i2 + 1].pts - VideoSample.pts;\n      } else {\n        const config = this.config;\n        const lastFrameDuration = i2 > 0 ? VideoSample.dts - inputSamples[i2 - 1].dts : averageSampleDuration;\n        ptsDelta = i2 > 0 ? VideoSample.pts - inputSamples[i2 - 1].pts : averageSampleDuration;\n        if (config.stretchShortVideoTrack && this.nextAudioPts !== null) {\n          const gapTolerance = Math.floor(config.maxBufferHole * timeScale);\n          const deltaToFrameEnd = (audioTrackLength ? minPTS + audioTrackLength * timeScale : this.nextAudioPts) - VideoSample.pts;\n          if (deltaToFrameEnd > gapTolerance) {\n            mp4SampleDuration = deltaToFrameEnd - lastFrameDuration;\n            if (mp4SampleDuration < 0) {\n              mp4SampleDuration = lastFrameDuration;\n            } else {\n              stretchedLastFrame = true;\n            }\n            logger.log(`[mp4-remuxer]: It is approximately ${deltaToFrameEnd / 90} ms to the next segment; using duration ${mp4SampleDuration / 90} ms for the last video frame.`);\n          } else {\n            mp4SampleDuration = lastFrameDuration;\n          }\n        } else {\n          mp4SampleDuration = lastFrameDuration;\n        }\n      }\n      const compositionTimeOffset = Math.round(VideoSample.pts - VideoSample.dts);\n      minDtsDelta = Math.min(minDtsDelta, mp4SampleDuration);\n      maxDtsDelta = Math.max(maxDtsDelta, mp4SampleDuration);\n      minPtsDelta = Math.min(minPtsDelta, ptsDelta);\n      maxPtsDelta = Math.max(maxPtsDelta, ptsDelta);\n      outputSamples.push(new Mp4Sample(VideoSample.key, mp4SampleDuration, mp4SampleLength, compositionTimeOffset));\n    }\n    if (outputSamples.length) {\n      if (chromeVersion) {\n        if (chromeVersion < 70) {\n          const flags = outputSamples[0].flags;\n          flags.dependsOn = 2;\n          flags.isNonSync = 0;\n        }\n      } else if (safariWebkitVersion) {\n        if (maxPtsDelta - minPtsDelta < maxDtsDelta - minDtsDelta && averageSampleDuration / maxDtsDelta < 0.025 && outputSamples[0].cts === 0) {\n          logger.warn(\"Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.\");\n          let dts = firstDTS;\n          for (let i2 = 0, len = outputSamples.length; i2 < len; i2++) {\n            const nextDts = dts + outputSamples[i2].duration;\n            const pts = dts + outputSamples[i2].cts;\n            if (i2 < len - 1) {\n              const nextPts = nextDts + outputSamples[i2 + 1].cts;\n              outputSamples[i2].duration = nextPts - pts;\n            } else {\n              outputSamples[i2].duration = i2 ? outputSamples[i2 - 1].duration : averageSampleDuration;\n            }\n            outputSamples[i2].cts = 0;\n            dts = nextDts;\n          }\n        }\n      }\n    }\n    mp4SampleDuration = stretchedLastFrame || !mp4SampleDuration ? averageSampleDuration : mp4SampleDuration;\n    this.nextAvcDts = nextAvcDts = lastDTS + mp4SampleDuration;\n    this.videoSampleDuration = mp4SampleDuration;\n    this.isVideoContiguous = true;\n    const moof = MP4.moof(track.sequenceNumber++, firstDTS, _extends({}, track, {\n      samples: outputSamples\n    }));\n    const type = \"video\";\n    const data = {\n      data1: moof,\n      data2: mdat,\n      startPTS: minPTS / timeScale,\n      endPTS: (maxPTS + mp4SampleDuration) / timeScale,\n      startDTS: firstDTS / timeScale,\n      endDTS: nextAvcDts / timeScale,\n      type,\n      hasAudio: false,\n      hasVideo: true,\n      nb: outputSamples.length,\n      dropped: track.dropped\n    };\n    track.samples = [];\n    track.dropped = 0;\n    return data;\n  }\n  getSamplesPerFrame(track) {\n    switch (track.segmentCodec) {\n      case \"mp3\":\n        return MPEG_AUDIO_SAMPLE_PER_FRAME;\n      case \"ac3\":\n        return AC3_SAMPLES_PER_FRAME;\n      default:\n        return AAC_SAMPLES_PER_FRAME;\n    }\n  }\n  remuxAudio(track, timeOffset, contiguous, accurateTimeOffset, videoTimeOffset) {\n    const inputTimeScale = track.inputTimeScale;\n    const mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n    const scaleFactor = inputTimeScale / mp4timeScale;\n    const mp4SampleDuration = this.getSamplesPerFrame(track);\n    const inputSampleDuration = mp4SampleDuration * scaleFactor;\n    const initPTS = this._initPTS;\n    const rawMPEG = track.segmentCodec === \"mp3\" && this.typeSupported.mpeg;\n    const outputSamples = [];\n    const alignedWithVideo = videoTimeOffset !== void 0;\n    let inputSamples = track.samples;\n    let offset = rawMPEG ? 0 : 8;\n    let nextAudioPts = this.nextAudioPts || -1;\n    const timeOffsetMpegTS = timeOffset * inputTimeScale;\n    const initTime = initPTS.baseTime * inputTimeScale / initPTS.timescale;\n    this.isAudioContiguous = contiguous = contiguous || inputSamples.length && nextAudioPts > 0 && (accurateTimeOffset && Math.abs(timeOffsetMpegTS - nextAudioPts) < 9e3 || Math.abs(normalizePts(inputSamples[0].pts - initTime, timeOffsetMpegTS) - nextAudioPts) < 20 * inputSampleDuration);\n    inputSamples.forEach(function(sample) {\n      sample.pts = normalizePts(sample.pts - initTime, timeOffsetMpegTS);\n    });\n    if (!contiguous || nextAudioPts < 0) {\n      inputSamples = inputSamples.filter((sample) => sample.pts >= 0);\n      if (!inputSamples.length) {\n        return;\n      }\n      if (videoTimeOffset === 0) {\n        nextAudioPts = 0;\n      } else if (accurateTimeOffset && !alignedWithVideo) {\n        nextAudioPts = Math.max(0, timeOffsetMpegTS);\n      } else {\n        nextAudioPts = inputSamples[0].pts;\n      }\n    }\n    if (track.segmentCodec === \"aac\") {\n      const maxAudioFramesDrift = this.config.maxAudioFramesDrift;\n      for (let i2 = 0, nextPts = nextAudioPts; i2 < inputSamples.length; i2++) {\n        const sample = inputSamples[i2];\n        const pts = sample.pts;\n        const delta = pts - nextPts;\n        const duration = Math.abs(1e3 * delta / inputTimeScale);\n        if (delta <= -maxAudioFramesDrift * inputSampleDuration && alignedWithVideo) {\n          if (i2 === 0) {\n            logger.warn(`Audio frame @ ${(pts / inputTimeScale).toFixed(3)}s overlaps nextAudioPts by ${Math.round(1e3 * delta / inputTimeScale)} ms.`);\n            this.nextAudioPts = nextAudioPts = nextPts = pts;\n          }\n        } else if (delta >= maxAudioFramesDrift * inputSampleDuration && duration < MAX_SILENT_FRAME_DURATION && alignedWithVideo) {\n          let missing = Math.round(delta / inputSampleDuration);\n          nextPts = pts - missing * inputSampleDuration;\n          if (nextPts < 0) {\n            missing--;\n            nextPts += inputSampleDuration;\n          }\n          if (i2 === 0) {\n            this.nextAudioPts = nextAudioPts = nextPts;\n          }\n          logger.warn(`[mp4-remuxer]: Injecting ${missing} audio frame @ ${(nextPts / inputTimeScale).toFixed(3)}s due to ${Math.round(1e3 * delta / inputTimeScale)} ms gap.`);\n          for (let j4 = 0; j4 < missing; j4++) {\n            const newStamp = Math.max(nextPts, 0);\n            let fillFrame = AAC.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n            if (!fillFrame) {\n              logger.log(\"[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead.\");\n              fillFrame = sample.unit.subarray();\n            }\n            inputSamples.splice(i2, 0, {\n              unit: fillFrame,\n              pts: newStamp\n            });\n            nextPts += inputSampleDuration;\n            i2++;\n          }\n        }\n        sample.pts = nextPts;\n        nextPts += inputSampleDuration;\n      }\n    }\n    let firstPTS = null;\n    let lastPTS = null;\n    let mdat;\n    let mdatSize = 0;\n    let sampleLength = inputSamples.length;\n    while (sampleLength--) {\n      mdatSize += inputSamples[sampleLength].unit.byteLength;\n    }\n    for (let j4 = 0, _nbSamples = inputSamples.length; j4 < _nbSamples; j4++) {\n      const audioSample = inputSamples[j4];\n      const unit = audioSample.unit;\n      let pts = audioSample.pts;\n      if (lastPTS !== null) {\n        const prevSample = outputSamples[j4 - 1];\n        prevSample.duration = Math.round((pts - lastPTS) / scaleFactor);\n      } else {\n        if (contiguous && track.segmentCodec === \"aac\") {\n          pts = nextAudioPts;\n        }\n        firstPTS = pts;\n        if (mdatSize > 0) {\n          mdatSize += offset;\n          try {\n            mdat = new Uint8Array(mdatSize);\n          } catch (err) {\n            this.observer.emit(Events.ERROR, Events.ERROR, {\n              type: ErrorTypes.MUX_ERROR,\n              details: ErrorDetails.REMUX_ALLOC_ERROR,\n              fatal: false,\n              error: err,\n              bytes: mdatSize,\n              reason: `fail allocating audio mdat ${mdatSize}`\n            });\n            return;\n          }\n          if (!rawMPEG) {\n            const view = new DataView(mdat.buffer);\n            view.setUint32(0, mdatSize);\n            mdat.set(MP4.types.mdat, 4);\n          }\n        } else {\n          return;\n        }\n      }\n      mdat.set(unit, offset);\n      const unitLen = unit.byteLength;\n      offset += unitLen;\n      outputSamples.push(new Mp4Sample(true, mp4SampleDuration, unitLen, 0));\n      lastPTS = pts;\n    }\n    const nbSamples = outputSamples.length;\n    if (!nbSamples) {\n      return;\n    }\n    const lastSample = outputSamples[outputSamples.length - 1];\n    this.nextAudioPts = nextAudioPts = lastPTS + scaleFactor * lastSample.duration;\n    const moof = rawMPEG ? new Uint8Array(0) : MP4.moof(track.sequenceNumber++, firstPTS / scaleFactor, _extends({}, track, {\n      samples: outputSamples\n    }));\n    track.samples = [];\n    const start = firstPTS / inputTimeScale;\n    const end = nextAudioPts / inputTimeScale;\n    const type = \"audio\";\n    const audioData = {\n      data1: moof,\n      data2: mdat,\n      startPTS: start,\n      endPTS: end,\n      startDTS: start,\n      endDTS: end,\n      type,\n      hasAudio: true,\n      hasVideo: false,\n      nb: nbSamples\n    };\n    this.isAudioContiguous = true;\n    return audioData;\n  }\n  remuxEmptyAudio(track, timeOffset, contiguous, videoData) {\n    const inputTimeScale = track.inputTimeScale;\n    const mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n    const scaleFactor = inputTimeScale / mp4timeScale;\n    const nextAudioPts = this.nextAudioPts;\n    const initDTS = this._initDTS;\n    const init90kHz = initDTS.baseTime * 9e4 / initDTS.timescale;\n    const startDTS = (nextAudioPts !== null ? nextAudioPts : videoData.startDTS * inputTimeScale) + init90kHz;\n    const endDTS = videoData.endDTS * inputTimeScale + init90kHz;\n    const frameDuration = scaleFactor * AAC_SAMPLES_PER_FRAME;\n    const nbSamples = Math.ceil((endDTS - startDTS) / frameDuration);\n    const silentFrame = AAC.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n    logger.warn(\"[mp4-remuxer]: remux empty Audio\");\n    if (!silentFrame) {\n      logger.trace(\"[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec\");\n      return;\n    }\n    const samples = [];\n    for (let i2 = 0; i2 < nbSamples; i2++) {\n      const stamp = startDTS + i2 * frameDuration;\n      samples.push({\n        unit: silentFrame,\n        pts: stamp,\n        dts: stamp\n      });\n    }\n    track.samples = samples;\n    return this.remuxAudio(track, timeOffset, contiguous, false);\n  }\n};\nfunction normalizePts(value, reference) {\n  let offset;\n  if (reference === null) {\n    return value;\n  }\n  if (reference < value) {\n    offset = -8589934592;\n  } else {\n    offset = 8589934592;\n  }\n  while (Math.abs(value - reference) > 4294967296) {\n    value += offset;\n  }\n  return value;\n}\nfunction findKeyframeIndex(samples) {\n  for (let i2 = 0; i2 < samples.length; i2++) {\n    if (samples[i2].key) {\n      return i2;\n    }\n  }\n  return -1;\n}\nfunction flushTextTrackMetadataCueSamples(track, timeOffset, initPTS, initDTS) {\n  const length = track.samples.length;\n  if (!length) {\n    return;\n  }\n  const inputTimeScale = track.inputTimeScale;\n  for (let index = 0; index < length; index++) {\n    const sample = track.samples[index];\n    sample.pts = normalizePts(sample.pts - initPTS.baseTime * inputTimeScale / initPTS.timescale, timeOffset * inputTimeScale) / inputTimeScale;\n    sample.dts = normalizePts(sample.dts - initDTS.baseTime * inputTimeScale / initDTS.timescale, timeOffset * inputTimeScale) / inputTimeScale;\n  }\n  const samples = track.samples;\n  track.samples = [];\n  return {\n    samples\n  };\n}\nfunction flushTextTrackUserdataCueSamples(track, timeOffset, initPTS) {\n  const length = track.samples.length;\n  if (!length) {\n    return;\n  }\n  const inputTimeScale = track.inputTimeScale;\n  for (let index = 0; index < length; index++) {\n    const sample = track.samples[index];\n    sample.pts = normalizePts(sample.pts - initPTS.baseTime * inputTimeScale / initPTS.timescale, timeOffset * inputTimeScale) / inputTimeScale;\n  }\n  track.samples.sort((a2, b4) => a2.pts - b4.pts);\n  const samples = track.samples;\n  track.samples = [];\n  return {\n    samples\n  };\n}\nvar Mp4Sample = class {\n  constructor(isKeyframe, duration, size, cts) {\n    this.size = void 0;\n    this.duration = void 0;\n    this.cts = void 0;\n    this.flags = void 0;\n    this.duration = duration;\n    this.size = size;\n    this.cts = cts;\n    this.flags = {\n      isLeading: 0,\n      isDependedOn: 0,\n      hasRedundancy: 0,\n      degradPrio: 0,\n      dependsOn: isKeyframe ? 2 : 1,\n      isNonSync: isKeyframe ? 0 : 1\n    };\n  }\n};\nvar PassThroughRemuxer = class {\n  constructor() {\n    this.emitInitSegment = false;\n    this.audioCodec = void 0;\n    this.videoCodec = void 0;\n    this.initData = void 0;\n    this.initPTS = null;\n    this.initTracks = void 0;\n    this.lastEndTime = null;\n  }\n  destroy() {\n  }\n  resetTimeStamp(defaultInitPTS) {\n    this.initPTS = defaultInitPTS;\n    this.lastEndTime = null;\n  }\n  resetNextTimestamp() {\n    this.lastEndTime = null;\n  }\n  resetInitSegment(initSegment, audioCodec, videoCodec, decryptdata) {\n    this.audioCodec = audioCodec;\n    this.videoCodec = videoCodec;\n    this.generateInitSegment(patchEncyptionData(initSegment, decryptdata));\n    this.emitInitSegment = true;\n  }\n  generateInitSegment(initSegment) {\n    let {\n      audioCodec,\n      videoCodec\n    } = this;\n    if (!(initSegment != null && initSegment.byteLength)) {\n      this.initTracks = void 0;\n      this.initData = void 0;\n      return;\n    }\n    const initData = this.initData = parseInitSegment(initSegment);\n    if (initData.audio) {\n      audioCodec = getParsedTrackCodec(initData.audio, ElementaryStreamTypes.AUDIO);\n    }\n    if (initData.video) {\n      videoCodec = getParsedTrackCodec(initData.video, ElementaryStreamTypes.VIDEO);\n    }\n    const tracks = {};\n    if (initData.audio && initData.video) {\n      tracks.audiovideo = {\n        container: \"video/mp4\",\n        codec: audioCodec + \",\" + videoCodec,\n        initSegment,\n        id: \"main\"\n      };\n    } else if (initData.audio) {\n      tracks.audio = {\n        container: \"audio/mp4\",\n        codec: audioCodec,\n        initSegment,\n        id: \"audio\"\n      };\n    } else if (initData.video) {\n      tracks.video = {\n        container: \"video/mp4\",\n        codec: videoCodec,\n        initSegment,\n        id: \"main\"\n      };\n    } else {\n      logger.warn(\"[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes.\");\n    }\n    this.initTracks = tracks;\n  }\n  remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset) {\n    var _initData, _initData2;\n    let {\n      initPTS,\n      lastEndTime\n    } = this;\n    const result = {\n      audio: void 0,\n      video: void 0,\n      text: textTrack,\n      id3: id3Track,\n      initSegment: void 0\n    };\n    if (!isFiniteNumber(lastEndTime)) {\n      lastEndTime = this.lastEndTime = timeOffset || 0;\n    }\n    const data = videoTrack.samples;\n    if (!(data != null && data.length)) {\n      return result;\n    }\n    const initSegment = {\n      initPTS: void 0,\n      timescale: 1\n    };\n    let initData = this.initData;\n    if (!((_initData = initData) != null && _initData.length)) {\n      this.generateInitSegment(data);\n      initData = this.initData;\n    }\n    if (!((_initData2 = initData) != null && _initData2.length)) {\n      logger.warn(\"[passthrough-remuxer.ts]: Failed to generate initSegment.\");\n      return result;\n    }\n    if (this.emitInitSegment) {\n      initSegment.tracks = this.initTracks;\n      this.emitInitSegment = false;\n    }\n    const duration = getDuration(data, initData);\n    const startDTS = getStartDTS(initData, data);\n    const decodeTime = startDTS === null ? timeOffset : startDTS;\n    if (isInvalidInitPts(initPTS, decodeTime, timeOffset, duration) || initSegment.timescale !== initPTS.timescale && accurateTimeOffset) {\n      initSegment.initPTS = decodeTime - timeOffset;\n      if (initPTS && initPTS.timescale === 1) {\n        logger.warn(`Adjusting initPTS by ${initSegment.initPTS - initPTS.baseTime}`);\n      }\n      this.initPTS = initPTS = {\n        baseTime: initSegment.initPTS,\n        timescale: 1\n      };\n    }\n    const startTime = audioTrack ? decodeTime - initPTS.baseTime / initPTS.timescale : lastEndTime;\n    const endTime = startTime + duration;\n    offsetStartDTS(initData, data, initPTS.baseTime / initPTS.timescale);\n    if (duration > 0) {\n      this.lastEndTime = endTime;\n    } else {\n      logger.warn(\"Duration parsed from mp4 should be greater than zero\");\n      this.resetNextTimestamp();\n    }\n    const hasAudio = !!initData.audio;\n    const hasVideo = !!initData.video;\n    let type = \"\";\n    if (hasAudio) {\n      type += \"audio\";\n    }\n    if (hasVideo) {\n      type += \"video\";\n    }\n    const track = {\n      data1: data,\n      startPTS: startTime,\n      startDTS: startTime,\n      endPTS: endTime,\n      endDTS: endTime,\n      type,\n      hasAudio,\n      hasVideo,\n      nb: 1,\n      dropped: 0\n    };\n    result.audio = track.type === \"audio\" ? track : void 0;\n    result.video = track.type !== \"audio\" ? track : void 0;\n    result.initSegment = initSegment;\n    result.id3 = flushTextTrackMetadataCueSamples(id3Track, timeOffset, initPTS, initPTS);\n    if (textTrack.samples.length) {\n      result.text = flushTextTrackUserdataCueSamples(textTrack, timeOffset, initPTS);\n    }\n    return result;\n  }\n};\nfunction isInvalidInitPts(initPTS, startDTS, timeOffset, duration) {\n  if (initPTS === null) {\n    return true;\n  }\n  const minDuration = Math.max(duration, 1);\n  const startTime = startDTS - initPTS.baseTime / initPTS.timescale;\n  return Math.abs(startTime - timeOffset) > minDuration;\n}\nfunction getParsedTrackCodec(track, type) {\n  const parsedCodec = track == null ? void 0 : track.codec;\n  if (parsedCodec && parsedCodec.length > 4) {\n    return parsedCodec;\n  }\n  if (type === ElementaryStreamTypes.AUDIO) {\n    if (parsedCodec === \"ec-3\" || parsedCodec === \"ac-3\" || parsedCodec === \"alac\") {\n      return parsedCodec;\n    }\n    if (parsedCodec === \"fLaC\" || parsedCodec === \"Opus\") {\n      const preferManagedMediaSource = false;\n      return getCodecCompatibleName(parsedCodec, preferManagedMediaSource);\n    }\n    const result = \"mp4a.40.5\";\n    logger.info(`Parsed audio codec \"${parsedCodec}\" or audio object type not handled. Using \"${result}\"`);\n    return result;\n  }\n  logger.warn(`Unhandled video codec \"${parsedCodec}\"`);\n  if (parsedCodec === \"hvc1\" || parsedCodec === \"hev1\") {\n    return \"hvc1.1.6.L120.90\";\n  }\n  if (parsedCodec === \"av01\") {\n    return \"av01.0.04M.08\";\n  }\n  return \"avc1.42e01e\";\n}\nvar now;\ntry {\n  now = self.performance.now.bind(self.performance);\n} catch (err) {\n  logger.debug(\"Unable to use Performance API on this environment\");\n  now = optionalSelf == null ? void 0 : optionalSelf.Date.now;\n}\nvar muxConfig = [{\n  demux: MP4Demuxer,\n  remux: PassThroughRemuxer\n}, {\n  demux: TSDemuxer,\n  remux: MP4Remuxer\n}, {\n  demux: AACDemuxer,\n  remux: MP4Remuxer\n}, {\n  demux: MP3Demuxer,\n  remux: MP4Remuxer\n}];\n{\n  muxConfig.splice(2, 0, {\n    demux: AC3Demuxer,\n    remux: MP4Remuxer\n  });\n}\nvar Transmuxer = class {\n  constructor(observer2, typeSupported, config, vendor, id) {\n    this.async = false;\n    this.observer = void 0;\n    this.typeSupported = void 0;\n    this.config = void 0;\n    this.vendor = void 0;\n    this.id = void 0;\n    this.demuxer = void 0;\n    this.remuxer = void 0;\n    this.decrypter = void 0;\n    this.probe = void 0;\n    this.decryptionPromise = null;\n    this.transmuxConfig = void 0;\n    this.currentTransmuxState = void 0;\n    this.observer = observer2;\n    this.typeSupported = typeSupported;\n    this.config = config;\n    this.vendor = vendor;\n    this.id = id;\n  }\n  configure(transmuxConfig) {\n    this.transmuxConfig = transmuxConfig;\n    if (this.decrypter) {\n      this.decrypter.reset();\n    }\n  }\n  push(data, decryptdata, chunkMeta, state) {\n    const stats = chunkMeta.transmuxing;\n    stats.executeStart = now();\n    let uintData = new Uint8Array(data);\n    const {\n      currentTransmuxState,\n      transmuxConfig\n    } = this;\n    if (state) {\n      this.currentTransmuxState = state;\n    }\n    const {\n      contiguous,\n      discontinuity,\n      trackSwitch,\n      accurateTimeOffset,\n      timeOffset,\n      initSegmentChange\n    } = state || currentTransmuxState;\n    const {\n      audioCodec,\n      videoCodec,\n      defaultInitPts,\n      duration,\n      initSegmentData\n    } = transmuxConfig;\n    const keyData = getEncryptionType(uintData, decryptdata);\n    if (keyData && keyData.method === \"AES-128\") {\n      const decrypter = this.getDecrypter();\n      if (decrypter.isSync()) {\n        let decryptedData = decrypter.softwareDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer);\n        const loadingParts = chunkMeta.part > -1;\n        if (loadingParts) {\n          decryptedData = decrypter.flush();\n        }\n        if (!decryptedData) {\n          stats.executeEnd = now();\n          return emptyResult(chunkMeta);\n        }\n        uintData = new Uint8Array(decryptedData);\n      } else {\n        this.decryptionPromise = decrypter.webCryptoDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer).then((decryptedData) => {\n          const result2 = this.push(decryptedData, null, chunkMeta);\n          this.decryptionPromise = null;\n          return result2;\n        });\n        return this.decryptionPromise;\n      }\n    }\n    const resetMuxers = this.needsProbing(discontinuity, trackSwitch);\n    if (resetMuxers) {\n      const error = this.configureTransmuxer(uintData);\n      if (error) {\n        logger.warn(`[transmuxer] ${error.message}`);\n        this.observer.emit(Events.ERROR, Events.ERROR, {\n          type: ErrorTypes.MEDIA_ERROR,\n          details: ErrorDetails.FRAG_PARSING_ERROR,\n          fatal: false,\n          error,\n          reason: error.message\n        });\n        stats.executeEnd = now();\n        return emptyResult(chunkMeta);\n      }\n    }\n    if (discontinuity || trackSwitch || initSegmentChange || resetMuxers) {\n      this.resetInitSegment(initSegmentData, audioCodec, videoCodec, duration, decryptdata);\n    }\n    if (discontinuity || initSegmentChange || resetMuxers) {\n      this.resetInitialTimestamp(defaultInitPts);\n    }\n    if (!contiguous) {\n      this.resetContiguity();\n    }\n    const result = this.transmux(uintData, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n    const currentState = this.currentTransmuxState;\n    currentState.contiguous = true;\n    currentState.discontinuity = false;\n    currentState.trackSwitch = false;\n    stats.executeEnd = now();\n    return result;\n  }\n  // Due to data caching, flush calls can produce more than one TransmuxerResult (hence the Array type)\n  flush(chunkMeta) {\n    const stats = chunkMeta.transmuxing;\n    stats.executeStart = now();\n    const {\n      decrypter,\n      currentTransmuxState,\n      decryptionPromise\n    } = this;\n    if (decryptionPromise) {\n      return decryptionPromise.then(() => {\n        return this.flush(chunkMeta);\n      });\n    }\n    const transmuxResults = [];\n    const {\n      timeOffset\n    } = currentTransmuxState;\n    if (decrypter) {\n      const decryptedData = decrypter.flush();\n      if (decryptedData) {\n        transmuxResults.push(this.push(decryptedData, null, chunkMeta));\n      }\n    }\n    const {\n      demuxer,\n      remuxer\n    } = this;\n    if (!demuxer || !remuxer) {\n      stats.executeEnd = now();\n      return [emptyResult(chunkMeta)];\n    }\n    const demuxResultOrPromise = demuxer.flush(timeOffset);\n    if (isPromise(demuxResultOrPromise)) {\n      return demuxResultOrPromise.then((demuxResult) => {\n        this.flushRemux(transmuxResults, demuxResult, chunkMeta);\n        return transmuxResults;\n      });\n    }\n    this.flushRemux(transmuxResults, demuxResultOrPromise, chunkMeta);\n    return transmuxResults;\n  }\n  flushRemux(transmuxResults, demuxResult, chunkMeta) {\n    const {\n      audioTrack,\n      videoTrack,\n      id3Track,\n      textTrack\n    } = demuxResult;\n    const {\n      accurateTimeOffset,\n      timeOffset\n    } = this.currentTransmuxState;\n    logger.log(`[transmuxer.ts]: Flushed fragment ${chunkMeta.sn}${chunkMeta.part > -1 ? \" p: \" + chunkMeta.part : \"\"} of level ${chunkMeta.level}`);\n    const remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, true, this.id);\n    transmuxResults.push({\n      remuxResult,\n      chunkMeta\n    });\n    chunkMeta.transmuxing.executeEnd = now();\n  }\n  resetInitialTimestamp(defaultInitPts) {\n    const {\n      demuxer,\n      remuxer\n    } = this;\n    if (!demuxer || !remuxer) {\n      return;\n    }\n    demuxer.resetTimeStamp(defaultInitPts);\n    remuxer.resetTimeStamp(defaultInitPts);\n  }\n  resetContiguity() {\n    const {\n      demuxer,\n      remuxer\n    } = this;\n    if (!demuxer || !remuxer) {\n      return;\n    }\n    demuxer.resetContiguity();\n    remuxer.resetNextTimestamp();\n  }\n  resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration, decryptdata) {\n    const {\n      demuxer,\n      remuxer\n    } = this;\n    if (!demuxer || !remuxer) {\n      return;\n    }\n    demuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration);\n    remuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec, decryptdata);\n  }\n  destroy() {\n    if (this.demuxer) {\n      this.demuxer.destroy();\n      this.demuxer = void 0;\n    }\n    if (this.remuxer) {\n      this.remuxer.destroy();\n      this.remuxer = void 0;\n    }\n  }\n  transmux(data, keyData, timeOffset, accurateTimeOffset, chunkMeta) {\n    let result;\n    if (keyData && keyData.method === \"SAMPLE-AES\") {\n      result = this.transmuxSampleAes(data, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n    } else {\n      result = this.transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta);\n    }\n    return result;\n  }\n  transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta) {\n    const {\n      audioTrack,\n      videoTrack,\n      id3Track,\n      textTrack\n    } = this.demuxer.demux(data, timeOffset, false, !this.config.progressive);\n    const remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, false, this.id);\n    return {\n      remuxResult,\n      chunkMeta\n    };\n  }\n  transmuxSampleAes(data, decryptData, timeOffset, accurateTimeOffset, chunkMeta) {\n    return this.demuxer.demuxSampleAes(data, decryptData, timeOffset).then((demuxResult) => {\n      const remuxResult = this.remuxer.remux(demuxResult.audioTrack, demuxResult.videoTrack, demuxResult.id3Track, demuxResult.textTrack, timeOffset, accurateTimeOffset, false, this.id);\n      return {\n        remuxResult,\n        chunkMeta\n      };\n    });\n  }\n  configureTransmuxer(data) {\n    const {\n      config,\n      observer: observer2,\n      typeSupported,\n      vendor\n    } = this;\n    let mux;\n    for (let i2 = 0, len = muxConfig.length; i2 < len; i2++) {\n      var _muxConfig$i$demux;\n      if ((_muxConfig$i$demux = muxConfig[i2].demux) != null && _muxConfig$i$demux.probe(data)) {\n        mux = muxConfig[i2];\n        break;\n      }\n    }\n    if (!mux) {\n      return new Error(\"Failed to find demuxer by probing fragment data\");\n    }\n    const demuxer = this.demuxer;\n    const remuxer = this.remuxer;\n    const Remuxer = mux.remux;\n    const Demuxer = mux.demux;\n    if (!remuxer || !(remuxer instanceof Remuxer)) {\n      this.remuxer = new Remuxer(observer2, config, typeSupported, vendor);\n    }\n    if (!demuxer || !(demuxer instanceof Demuxer)) {\n      this.demuxer = new Demuxer(observer2, config, typeSupported);\n      this.probe = Demuxer.probe;\n    }\n  }\n  needsProbing(discontinuity, trackSwitch) {\n    return !this.demuxer || !this.remuxer || discontinuity || trackSwitch;\n  }\n  getDecrypter() {\n    let decrypter = this.decrypter;\n    if (!decrypter) {\n      decrypter = this.decrypter = new Decrypter(this.config);\n    }\n    return decrypter;\n  }\n};\nfunction getEncryptionType(data, decryptData) {\n  let encryptionType = null;\n  if (data.byteLength > 0 && (decryptData == null ? void 0 : decryptData.key) != null && decryptData.iv !== null && decryptData.method != null) {\n    encryptionType = decryptData;\n  }\n  return encryptionType;\n}\nvar emptyResult = (chunkMeta) => ({\n  remuxResult: {},\n  chunkMeta\n});\nfunction isPromise(p3) {\n  return \"then\" in p3 && p3.then instanceof Function;\n}\nvar TransmuxConfig = class {\n  constructor(audioCodec, videoCodec, initSegmentData, duration, defaultInitPts) {\n    this.audioCodec = void 0;\n    this.videoCodec = void 0;\n    this.initSegmentData = void 0;\n    this.duration = void 0;\n    this.defaultInitPts = void 0;\n    this.audioCodec = audioCodec;\n    this.videoCodec = videoCodec;\n    this.initSegmentData = initSegmentData;\n    this.duration = duration;\n    this.defaultInitPts = defaultInitPts || null;\n  }\n};\nvar TransmuxState = class {\n  constructor(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange) {\n    this.discontinuity = void 0;\n    this.contiguous = void 0;\n    this.accurateTimeOffset = void 0;\n    this.trackSwitch = void 0;\n    this.timeOffset = void 0;\n    this.initSegmentChange = void 0;\n    this.discontinuity = discontinuity;\n    this.contiguous = contiguous;\n    this.accurateTimeOffset = accurateTimeOffset;\n    this.trackSwitch = trackSwitch;\n    this.timeOffset = timeOffset;\n    this.initSegmentChange = initSegmentChange;\n  }\n};\nvar eventemitter3 = { exports: {} };\n(function(module) {\n  var has = Object.prototype.hasOwnProperty, prefix = \"~\";\n  function Events2() {\n  }\n  if (Object.create) {\n    Events2.prototype = /* @__PURE__ */ Object.create(null);\n    if (!new Events2().__proto__) prefix = false;\n  }\n  function EE(fn, context, once) {\n    this.fn = fn;\n    this.context = context;\n    this.once = once || false;\n  }\n  function addListener(emitter, event, fn, context, once) {\n    if (typeof fn !== \"function\") {\n      throw new TypeError(\"The listener must be a function\");\n    }\n    var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;\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    return emitter;\n  }\n  function clearEvent(emitter, evt) {\n    if (--emitter._eventsCount === 0) emitter._events = new Events2();\n    else delete emitter._events[evt];\n  }\n  function EventEmitter2() {\n    this._events = new Events2();\n    this._eventsCount = 0;\n  }\n  EventEmitter2.prototype.eventNames = function eventNames() {\n    var names = [], events, name;\n    if (this._eventsCount === 0) return names;\n    for (name in events = this._events) {\n      if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n    }\n    if (Object.getOwnPropertySymbols) {\n      return names.concat(Object.getOwnPropertySymbols(events));\n    }\n    return names;\n  };\n  EventEmitter2.prototype.listeners = function listeners(event) {\n    var evt = prefix ? prefix + event : event, handlers = this._events[evt];\n    if (!handlers) return [];\n    if (handlers.fn) return [handlers.fn];\n    for (var i2 = 0, l = handlers.length, ee6 = new Array(l); i2 < l; i2++) {\n      ee6[i2] = handlers[i2].fn;\n    }\n    return ee6;\n  };\n  EventEmitter2.prototype.listenerCount = function listenerCount(event) {\n    var evt = prefix ? prefix + event : event, listeners = this._events[evt];\n    if (!listeners) return 0;\n    if (listeners.fn) return 1;\n    return listeners.length;\n  };\n  EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n    var evt = prefix ? prefix + event : event;\n    if (!this._events[evt]) return false;\n    var listeners = this._events[evt], len = arguments.length, args, i2;\n    if (listeners.fn) {\n      if (listeners.once) this.removeListener(event, listeners.fn, void 0, true);\n      switch (len) {\n        case 1:\n          return listeners.fn.call(listeners.context), true;\n        case 2:\n          return listeners.fn.call(listeners.context, a1), true;\n        case 3:\n          return listeners.fn.call(listeners.context, a1, a2), true;\n        case 4:\n          return listeners.fn.call(listeners.context, a1, a2, a3), true;\n        case 5:\n          return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n        case 6:\n          return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n      }\n      for (i2 = 1, args = new Array(len - 1); i2 < len; i2++) {\n        args[i2 - 1] = arguments[i2];\n      }\n      listeners.fn.apply(listeners.context, args);\n    } else {\n      var length = listeners.length, j4;\n      for (i2 = 0; i2 < length; i2++) {\n        if (listeners[i2].once) this.removeListener(event, listeners[i2].fn, void 0, true);\n        switch (len) {\n          case 1:\n            listeners[i2].fn.call(listeners[i2].context);\n            break;\n          case 2:\n            listeners[i2].fn.call(listeners[i2].context, a1);\n            break;\n          case 3:\n            listeners[i2].fn.call(listeners[i2].context, a1, a2);\n            break;\n          case 4:\n            listeners[i2].fn.call(listeners[i2].context, a1, a2, a3);\n            break;\n          default:\n            if (!args) for (j4 = 1, args = new Array(len - 1); j4 < len; j4++) {\n              args[j4 - 1] = arguments[j4];\n            }\n            listeners[i2].fn.apply(listeners[i2].context, args);\n        }\n      }\n    }\n    return true;\n  };\n  EventEmitter2.prototype.on = function on(event, fn, context) {\n    return addListener(this, event, fn, context, false);\n  };\n  EventEmitter2.prototype.once = function once(event, fn, context) {\n    return addListener(this, event, fn, context, true);\n  };\n  EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {\n    var evt = prefix ? prefix + event : event;\n    if (!this._events[evt]) return this;\n    if (!fn) {\n      clearEvent(this, evt);\n      return this;\n    }\n    var listeners = this._events[evt];\n    if (listeners.fn) {\n      if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n        clearEvent(this, evt);\n      }\n    } else {\n      for (var i2 = 0, events = [], length = listeners.length; i2 < length; i2++) {\n        if (listeners[i2].fn !== fn || once && !listeners[i2].once || context && listeners[i2].context !== context) {\n          events.push(listeners[i2]);\n        }\n      }\n      if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n      else clearEvent(this, evt);\n    }\n    return this;\n  };\n  EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {\n    var evt;\n    if (event) {\n      evt = prefix ? prefix + event : event;\n      if (this._events[evt]) clearEvent(this, evt);\n    } else {\n      this._events = new Events2();\n      this._eventsCount = 0;\n    }\n    return this;\n  };\n  EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;\n  EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;\n  EventEmitter2.prefixed = prefix;\n  EventEmitter2.EventEmitter = EventEmitter2;\n  {\n    module.exports = EventEmitter2;\n  }\n})(eventemitter3);\nvar eventemitter3Exports = eventemitter3.exports;\nvar EventEmitter = /* @__PURE__ */ getDefaultExportFromCjs(eventemitter3Exports);\nvar TransmuxerInterface = class {\n  constructor(hls, id, onTransmuxComplete, onFlush) {\n    this.error = null;\n    this.hls = void 0;\n    this.id = void 0;\n    this.observer = void 0;\n    this.frag = null;\n    this.part = null;\n    this.useWorker = void 0;\n    this.workerContext = null;\n    this.onwmsg = void 0;\n    this.transmuxer = null;\n    this.onTransmuxComplete = void 0;\n    this.onFlush = void 0;\n    const config = hls.config;\n    this.hls = hls;\n    this.id = id;\n    this.useWorker = !!config.enableWorker;\n    this.onTransmuxComplete = onTransmuxComplete;\n    this.onFlush = onFlush;\n    const forwardMessage = (ev, data) => {\n      data = data || {};\n      data.frag = this.frag;\n      data.id = this.id;\n      if (ev === Events.ERROR) {\n        this.error = data.error;\n      }\n      this.hls.trigger(ev, data);\n    };\n    this.observer = new EventEmitter();\n    this.observer.on(Events.FRAG_DECRYPTED, forwardMessage);\n    this.observer.on(Events.ERROR, forwardMessage);\n    const MediaSource = getMediaSource(config.preferManagedMediaSource) || {\n      isTypeSupported: () => false\n    };\n    const m2tsTypeSupported = {\n      mpeg: MediaSource.isTypeSupported(\"audio/mpeg\"),\n      mp3: MediaSource.isTypeSupported('audio/mp4; codecs=\"mp3\"'),\n      ac3: MediaSource.isTypeSupported('audio/mp4; codecs=\"ac-3\"')\n    };\n    if (this.useWorker && typeof Worker !== \"undefined\") {\n      const canCreateWorker = config.workerPath || hasUMDWorker();\n      if (canCreateWorker) {\n        try {\n          if (config.workerPath) {\n            logger.log(`loading Web Worker ${config.workerPath} for \"${id}\"`);\n            this.workerContext = loadWorker(config.workerPath);\n          } else {\n            logger.log(`injecting Web Worker for \"${id}\"`);\n            this.workerContext = injectWorker();\n          }\n          this.onwmsg = (event) => this.onWorkerMessage(event);\n          const {\n            worker\n          } = this.workerContext;\n          worker.addEventListener(\"message\", this.onwmsg);\n          worker.onerror = (event) => {\n            const error = new Error(`${event.message}  (${event.filename}:${event.lineno})`);\n            config.enableWorker = false;\n            logger.warn(`Error in \"${id}\" Web Worker, fallback to inline`);\n            this.hls.trigger(Events.ERROR, {\n              type: ErrorTypes.OTHER_ERROR,\n              details: ErrorDetails.INTERNAL_EXCEPTION,\n              fatal: false,\n              event: \"demuxerWorker\",\n              error\n            });\n          };\n          worker.postMessage({\n            cmd: \"init\",\n            typeSupported: m2tsTypeSupported,\n            vendor: \"\",\n            id,\n            config: JSON.stringify(config)\n          });\n        } catch (err) {\n          logger.warn(`Error setting up \"${id}\" Web Worker, fallback to inline`, err);\n          this.resetWorker();\n          this.error = null;\n          this.transmuxer = new Transmuxer(this.observer, m2tsTypeSupported, config, \"\", id);\n        }\n        return;\n      }\n    }\n    this.transmuxer = new Transmuxer(this.observer, m2tsTypeSupported, config, \"\", id);\n  }\n  resetWorker() {\n    if (this.workerContext) {\n      const {\n        worker,\n        objectURL\n      } = this.workerContext;\n      if (objectURL) {\n        self.URL.revokeObjectURL(objectURL);\n      }\n      worker.removeEventListener(\"message\", this.onwmsg);\n      worker.onerror = null;\n      worker.terminate();\n      this.workerContext = null;\n    }\n  }\n  destroy() {\n    if (this.workerContext) {\n      this.resetWorker();\n      this.onwmsg = void 0;\n    } else {\n      const transmuxer = this.transmuxer;\n      if (transmuxer) {\n        transmuxer.destroy();\n        this.transmuxer = null;\n      }\n    }\n    const observer2 = this.observer;\n    if (observer2) {\n      observer2.removeAllListeners();\n    }\n    this.frag = null;\n    this.observer = null;\n    this.hls = null;\n  }\n  push(data, initSegmentData, audioCodec, videoCodec, frag, part, duration, accurateTimeOffset, chunkMeta, defaultInitPTS) {\n    var _frag$initSegment, _lastFrag$initSegment;\n    chunkMeta.transmuxing.start = self.performance.now();\n    const {\n      transmuxer\n    } = this;\n    const timeOffset = part ? part.start : frag.start;\n    const decryptdata = frag.decryptdata;\n    const lastFrag = this.frag;\n    const discontinuity = !(lastFrag && frag.cc === lastFrag.cc);\n    const trackSwitch = !(lastFrag && chunkMeta.level === lastFrag.level);\n    const snDiff = lastFrag ? chunkMeta.sn - lastFrag.sn : -1;\n    const partDiff = this.part ? chunkMeta.part - this.part.index : -1;\n    const progressive = snDiff === 0 && chunkMeta.id > 1 && chunkMeta.id === (lastFrag == null ? void 0 : lastFrag.stats.chunkCount);\n    const contiguous = !trackSwitch && (snDiff === 1 || snDiff === 0 && (partDiff === 1 || progressive && partDiff <= 0));\n    const now2 = self.performance.now();\n    if (trackSwitch || snDiff || frag.stats.parsing.start === 0) {\n      frag.stats.parsing.start = now2;\n    }\n    if (part && (partDiff || !contiguous)) {\n      part.stats.parsing.start = now2;\n    }\n    const initSegmentChange = !(lastFrag && ((_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.url) === ((_lastFrag$initSegment = lastFrag.initSegment) == null ? void 0 : _lastFrag$initSegment.url));\n    const state = new TransmuxState(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange);\n    if (!contiguous || discontinuity || initSegmentChange) {\n      logger.log(`[transmuxer-interface, ${frag.type}]: Starting new transmux session for sn: ${chunkMeta.sn} p: ${chunkMeta.part} level: ${chunkMeta.level} id: ${chunkMeta.id}\n        discontinuity: ${discontinuity}\n        trackSwitch: ${trackSwitch}\n        contiguous: ${contiguous}\n        accurateTimeOffset: ${accurateTimeOffset}\n        timeOffset: ${timeOffset}\n        initSegmentChange: ${initSegmentChange}`);\n      const config = new TransmuxConfig(audioCodec, videoCodec, initSegmentData, duration, defaultInitPTS);\n      this.configureTransmuxer(config);\n    }\n    this.frag = frag;\n    this.part = part;\n    if (this.workerContext) {\n      this.workerContext.worker.postMessage({\n        cmd: \"demux\",\n        data,\n        decryptdata,\n        chunkMeta,\n        state\n      }, data instanceof ArrayBuffer ? [data] : []);\n    } else if (transmuxer) {\n      const transmuxResult = transmuxer.push(data, decryptdata, chunkMeta, state);\n      if (isPromise(transmuxResult)) {\n        transmuxer.async = true;\n        transmuxResult.then((data2) => {\n          this.handleTransmuxComplete(data2);\n        }).catch((error) => {\n          this.transmuxerError(error, chunkMeta, \"transmuxer-interface push error\");\n        });\n      } else {\n        transmuxer.async = false;\n        this.handleTransmuxComplete(transmuxResult);\n      }\n    }\n  }\n  flush(chunkMeta) {\n    chunkMeta.transmuxing.start = self.performance.now();\n    const {\n      transmuxer\n    } = this;\n    if (this.workerContext) {\n      this.workerContext.worker.postMessage({\n        cmd: \"flush\",\n        chunkMeta\n      });\n    } else if (transmuxer) {\n      let transmuxResult = transmuxer.flush(chunkMeta);\n      const asyncFlush = isPromise(transmuxResult);\n      if (asyncFlush || transmuxer.async) {\n        if (!isPromise(transmuxResult)) {\n          transmuxResult = Promise.resolve(transmuxResult);\n        }\n        transmuxResult.then((data) => {\n          this.handleFlushResult(data, chunkMeta);\n        }).catch((error) => {\n          this.transmuxerError(error, chunkMeta, \"transmuxer-interface flush error\");\n        });\n      } else {\n        this.handleFlushResult(transmuxResult, chunkMeta);\n      }\n    }\n  }\n  transmuxerError(error, chunkMeta, reason) {\n    if (!this.hls) {\n      return;\n    }\n    this.error = error;\n    this.hls.trigger(Events.ERROR, {\n      type: ErrorTypes.MEDIA_ERROR,\n      details: ErrorDetails.FRAG_PARSING_ERROR,\n      chunkMeta,\n      frag: this.frag || void 0,\n      fatal: false,\n      error,\n      err: error,\n      reason\n    });\n  }\n  handleFlushResult(results, chunkMeta) {\n    results.forEach((result) => {\n      this.handleTransmuxComplete(result);\n    });\n    this.onFlush(chunkMeta);\n  }\n  onWorkerMessage(event) {\n    const data = event.data;\n    if (!(data != null && data.event)) {\n      logger.warn(`worker message received with no ${data ? \"event name\" : \"data\"}`);\n      return;\n    }\n    const hls = this.hls;\n    if (!this.hls) {\n      return;\n    }\n    switch (data.event) {\n      case \"init\": {\n        var _this$workerContext;\n        const objectURL = (_this$workerContext = this.workerContext) == null ? void 0 : _this$workerContext.objectURL;\n        if (objectURL) {\n          self.URL.revokeObjectURL(objectURL);\n        }\n        break;\n      }\n      case \"transmuxComplete\": {\n        this.handleTransmuxComplete(data.data);\n        break;\n      }\n      case \"flush\": {\n        this.onFlush(data.data);\n        break;\n      }\n      // pass logs from the worker thread to the main logger\n      case \"workerLog\":\n        if (logger[data.data.logType]) {\n          logger[data.data.logType](data.data.message);\n        }\n        break;\n      default: {\n        data.data = data.data || {};\n        data.data.frag = this.frag;\n        data.data.id = this.id;\n        hls.trigger(data.event, data.data);\n        break;\n      }\n    }\n  }\n  configureTransmuxer(config) {\n    const {\n      transmuxer\n    } = this;\n    if (this.workerContext) {\n      this.workerContext.worker.postMessage({\n        cmd: \"configure\",\n        config\n      });\n    } else if (transmuxer) {\n      transmuxer.configure(config);\n    }\n  }\n  handleTransmuxComplete(result) {\n    result.chunkMeta.transmuxing.end = self.performance.now();\n    this.onTransmuxComplete(result);\n  }\n};\nvar TICK_INTERVAL$2 = 100;\nvar AudioStreamController = class extends BaseStreamController {\n  constructor(hls, fragmentTracker, keyLoader) {\n    super(hls, fragmentTracker, keyLoader, \"[audio-stream-controller]\", PlaylistLevelType.AUDIO);\n    this.videoBuffer = null;\n    this.videoTrackCC = -1;\n    this.waitingVideoCC = -1;\n    this.bufferedTrack = null;\n    this.switchingTrack = null;\n    this.trackId = -1;\n    this.waitingData = null;\n    this.mainDetails = null;\n    this.flushing = false;\n    this.bufferFlushed = false;\n    this.cachedTrackLoadedData = null;\n    this._registerListeners();\n  }\n  onHandlerDestroying() {\n    this._unregisterListeners();\n    super.onHandlerDestroying();\n    this.mainDetails = null;\n    this.bufferedTrack = null;\n    this.switchingTrack = null;\n  }\n  _registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n    hls.on(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n    hls.on(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n    hls.on(Events.ERROR, this.onError, this);\n    hls.on(Events.BUFFER_RESET, this.onBufferReset, this);\n    hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.on(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n    hls.on(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n  _unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n    hls.off(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n    hls.off(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n    hls.off(Events.ERROR, this.onError, this);\n    hls.off(Events.BUFFER_RESET, this.onBufferReset, this);\n    hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.off(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n    hls.off(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n  // INIT_PTS_FOUND is triggered when the video track parsed in the stream-controller has a new PTS value\n  onInitPtsFound(event, {\n    frag,\n    id,\n    initPTS,\n    timescale\n  }) {\n    if (id === \"main\") {\n      const cc = frag.cc;\n      this.initPTS[frag.cc] = {\n        baseTime: initPTS,\n        timescale\n      };\n      this.log(`InitPTS for cc: ${cc} found from main: ${initPTS}`);\n      this.videoTrackCC = cc;\n      if (this.state === State.WAITING_INIT_PTS) {\n        this.tick();\n      }\n    }\n  }\n  startLoad(startPosition) {\n    if (!this.levels) {\n      this.startPosition = startPosition;\n      this.state = State.STOPPED;\n      return;\n    }\n    const lastCurrentTime = this.lastCurrentTime;\n    this.stopLoad();\n    this.setInterval(TICK_INTERVAL$2);\n    if (lastCurrentTime > 0 && startPosition === -1) {\n      this.log(`Override startPosition with lastCurrentTime @${lastCurrentTime.toFixed(3)}`);\n      startPosition = lastCurrentTime;\n      this.state = State.IDLE;\n    } else {\n      this.loadedmetadata = false;\n      this.state = State.WAITING_TRACK;\n    }\n    this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n    this.tick();\n  }\n  doTick() {\n    switch (this.state) {\n      case State.IDLE:\n        this.doTickIdle();\n        break;\n      case State.WAITING_TRACK: {\n        var _levels$trackId;\n        const {\n          levels,\n          trackId\n        } = this;\n        const details = levels == null ? void 0 : (_levels$trackId = levels[trackId]) == null ? void 0 : _levels$trackId.details;\n        if (details) {\n          if (this.waitForCdnTuneIn(details)) {\n            break;\n          }\n          this.state = State.WAITING_INIT_PTS;\n        }\n        break;\n      }\n      case State.FRAG_LOADING_WAITING_RETRY: {\n        var _this$media;\n        const now2 = performance.now();\n        const retryDate = this.retryDate;\n        if (!retryDate || now2 >= retryDate || (_this$media = this.media) != null && _this$media.seeking) {\n          const {\n            levels,\n            trackId\n          } = this;\n          this.log(\"RetryDate reached, switch back to IDLE state\");\n          this.resetStartWhenNotLoaded((levels == null ? void 0 : levels[trackId]) || null);\n          this.state = State.IDLE;\n        }\n        break;\n      }\n      case State.WAITING_INIT_PTS: {\n        const waitingData = this.waitingData;\n        if (waitingData) {\n          const {\n            frag,\n            part,\n            cache,\n            complete\n          } = waitingData;\n          if (this.initPTS[frag.cc] !== void 0) {\n            this.waitingData = null;\n            this.waitingVideoCC = -1;\n            this.state = State.FRAG_LOADING;\n            const payload = cache.flush();\n            const data = {\n              frag,\n              part,\n              payload,\n              networkDetails: null\n            };\n            this._handleFragmentLoadProgress(data);\n            if (complete) {\n              super._handleFragmentLoadComplete(data);\n            }\n          } else if (this.videoTrackCC !== this.waitingVideoCC) {\n            this.log(`Waiting fragment cc (${frag.cc}) cancelled because video is at cc ${this.videoTrackCC}`);\n            this.clearWaitingFragment();\n          } else {\n            const pos = this.getLoadPosition();\n            const bufferInfo = BufferHelper.bufferInfo(this.mediaBuffer, pos, this.config.maxBufferHole);\n            const waitingFragmentAtPosition = fragmentWithinToleranceTest(bufferInfo.end, this.config.maxFragLookUpTolerance, frag);\n            if (waitingFragmentAtPosition < 0) {\n              this.log(`Waiting fragment cc (${frag.cc}) @ ${frag.start} cancelled because another fragment at ${bufferInfo.end} is needed`);\n              this.clearWaitingFragment();\n            }\n          }\n        } else {\n          this.state = State.IDLE;\n        }\n      }\n    }\n    this.onTickEnd();\n  }\n  clearWaitingFragment() {\n    const waitingData = this.waitingData;\n    if (waitingData) {\n      this.fragmentTracker.removeFragment(waitingData.frag);\n      this.waitingData = null;\n      this.waitingVideoCC = -1;\n      this.state = State.IDLE;\n    }\n  }\n  resetLoadingState() {\n    this.clearWaitingFragment();\n    super.resetLoadingState();\n  }\n  onTickEnd() {\n    const {\n      media\n    } = this;\n    if (!(media != null && media.readyState)) {\n      return;\n    }\n    this.lastCurrentTime = media.currentTime;\n  }\n  doTickIdle() {\n    const {\n      hls,\n      levels,\n      media,\n      trackId\n    } = this;\n    const config = hls.config;\n    if (!this.buffering || !media && (this.startFragRequested || !config.startFragPrefetch) || !(levels != null && levels[trackId])) {\n      return;\n    }\n    const levelInfo = levels[trackId];\n    const trackDetails = levelInfo.details;\n    if (!trackDetails || trackDetails.live && this.levelLastLoaded !== levelInfo || this.waitForCdnTuneIn(trackDetails)) {\n      this.state = State.WAITING_TRACK;\n      return;\n    }\n    const bufferable = this.mediaBuffer ? this.mediaBuffer : this.media;\n    if (this.bufferFlushed && bufferable) {\n      this.bufferFlushed = false;\n      this.afterBufferFlushed(bufferable, ElementaryStreamTypes.AUDIO, PlaylistLevelType.AUDIO);\n    }\n    const bufferInfo = this.getFwdBufferInfo(bufferable, PlaylistLevelType.AUDIO);\n    if (bufferInfo === null) {\n      return;\n    }\n    if (!this.switchingTrack && this._streamEnded(bufferInfo, trackDetails)) {\n      hls.trigger(Events.BUFFER_EOS, {\n        type: \"audio\"\n      });\n      this.state = State.ENDED;\n      return;\n    }\n    const mainBufferInfo = this.getFwdBufferInfo(this.videoBuffer ? this.videoBuffer : this.media, PlaylistLevelType.MAIN);\n    const bufferLen = bufferInfo.len;\n    const maxBufLen = this.getMaxBufferLength(mainBufferInfo == null ? void 0 : mainBufferInfo.len);\n    const fragments = trackDetails.fragments;\n    const start = fragments[0].start;\n    const loadPosition = this.getLoadPosition();\n    const targetBufferTime = this.flushing ? loadPosition : bufferInfo.end;\n    if (this.switchingTrack && media) {\n      const pos = loadPosition;\n      if (trackDetails.PTSKnown && pos < start) {\n        if (bufferInfo.end > start || bufferInfo.nextStart) {\n          this.log(\"Alt audio track ahead of main track, seek to start of alt audio track\");\n          media.currentTime = start + 0.05;\n        }\n      }\n    }\n    if (bufferLen >= maxBufLen && !this.switchingTrack && targetBufferTime < fragments[fragments.length - 1].start) {\n      return;\n    }\n    let frag = this.getNextFragment(targetBufferTime, trackDetails);\n    let atGap = false;\n    if (frag && this.isLoopLoading(frag, targetBufferTime)) {\n      atGap = !!frag.gap;\n      frag = this.getNextFragmentLoopLoading(frag, trackDetails, bufferInfo, PlaylistLevelType.MAIN, maxBufLen);\n    }\n    if (!frag) {\n      this.bufferFlushed = true;\n      return;\n    }\n    const atBufferSyncLimit = mainBufferInfo && frag.start > mainBufferInfo.end + trackDetails.targetduration;\n    if (atBufferSyncLimit || // Or wait for main buffer after buffing some audio\n    !(mainBufferInfo != null && mainBufferInfo.len) && bufferInfo.len) {\n      const mainFrag = this.getAppendedFrag(frag.start, PlaylistLevelType.MAIN);\n      if (mainFrag === null) {\n        return;\n      }\n      atGap || (atGap = !!mainFrag.gap || !!atBufferSyncLimit && mainBufferInfo.len === 0);\n      if (atBufferSyncLimit && !atGap || atGap && bufferInfo.nextStart && bufferInfo.nextStart < mainFrag.end) {\n        return;\n      }\n    }\n    this.loadFragment(frag, levelInfo, targetBufferTime);\n  }\n  getMaxBufferLength(mainBufferLength) {\n    const maxConfigBuffer = super.getMaxBufferLength();\n    if (!mainBufferLength) {\n      return maxConfigBuffer;\n    }\n    return Math.min(Math.max(maxConfigBuffer, mainBufferLength), this.config.maxMaxBufferLength);\n  }\n  onMediaDetaching() {\n    this.videoBuffer = null;\n    this.bufferFlushed = this.flushing = false;\n    super.onMediaDetaching();\n  }\n  onAudioTracksUpdated(event, {\n    audioTracks\n  }) {\n    this.resetTransmuxer();\n    this.levels = audioTracks.map((mediaPlaylist) => new Level(mediaPlaylist));\n  }\n  onAudioTrackSwitching(event, data) {\n    const altAudio = !!data.url;\n    this.trackId = data.id;\n    const {\n      fragCurrent\n    } = this;\n    if (fragCurrent) {\n      fragCurrent.abortRequests();\n      this.removeUnbufferedFrags(fragCurrent.start);\n    }\n    this.resetLoadingState();\n    if (!altAudio) {\n      this.resetTransmuxer();\n    } else {\n      this.setInterval(TICK_INTERVAL$2);\n    }\n    if (altAudio) {\n      this.switchingTrack = data;\n      this.state = State.IDLE;\n      this.flushAudioIfNeeded(data);\n    } else {\n      this.switchingTrack = null;\n      this.bufferedTrack = data;\n      this.state = State.STOPPED;\n    }\n    this.tick();\n  }\n  onManifestLoading() {\n    this.fragmentTracker.removeAllFragments();\n    this.startPosition = this.lastCurrentTime = 0;\n    this.bufferFlushed = this.flushing = false;\n    this.levels = this.mainDetails = this.waitingData = this.bufferedTrack = this.cachedTrackLoadedData = this.switchingTrack = null;\n    this.startFragRequested = false;\n    this.trackId = this.videoTrackCC = this.waitingVideoCC = -1;\n  }\n  onLevelLoaded(event, data) {\n    this.mainDetails = data.details;\n    if (this.cachedTrackLoadedData !== null) {\n      this.hls.trigger(Events.AUDIO_TRACK_LOADED, this.cachedTrackLoadedData);\n      this.cachedTrackLoadedData = null;\n    }\n  }\n  onAudioTrackLoaded(event, data) {\n    var _track$details;\n    if (this.mainDetails == null) {\n      this.cachedTrackLoadedData = data;\n      return;\n    }\n    const {\n      levels\n    } = this;\n    const {\n      details: newDetails,\n      id: trackId\n    } = data;\n    if (!levels) {\n      this.warn(`Audio tracks were reset while loading level ${trackId}`);\n      return;\n    }\n    this.log(`Audio track ${trackId} loaded [${newDetails.startSN},${newDetails.endSN}]${newDetails.lastPartSn ? `[part-${newDetails.lastPartSn}-${newDetails.lastPartIndex}]` : \"\"},duration:${newDetails.totalduration}`);\n    const track = levels[trackId];\n    let sliding = 0;\n    if (newDetails.live || (_track$details = track.details) != null && _track$details.live) {\n      this.checkLiveUpdate(newDetails);\n      const mainDetails = this.mainDetails;\n      if (newDetails.deltaUpdateFailed || !mainDetails) {\n        return;\n      }\n      if (!track.details && newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n        alignMediaPlaylistByPDT(newDetails, mainDetails);\n        sliding = newDetails.fragments[0].start;\n      } else {\n        var _this$levelLastLoaded;\n        sliding = this.alignPlaylists(newDetails, track.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details);\n      }\n    }\n    track.details = newDetails;\n    this.levelLastLoaded = track;\n    if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {\n      this.setStartPosition(this.mainDetails || newDetails, sliding);\n    }\n    if (this.state === State.WAITING_TRACK && !this.waitForCdnTuneIn(newDetails)) {\n      this.state = State.IDLE;\n    }\n    this.tick();\n  }\n  _handleFragmentLoadProgress(data) {\n    var _frag$initSegment;\n    const {\n      frag,\n      part,\n      payload\n    } = data;\n    const {\n      config,\n      trackId,\n      levels\n    } = this;\n    if (!levels) {\n      this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${frag.sn} of level ${frag.level} will not be buffered`);\n      return;\n    }\n    const track = levels[trackId];\n    if (!track) {\n      this.warn(\"Audio track is undefined on fragment load progress\");\n      return;\n    }\n    const details = track.details;\n    if (!details) {\n      this.warn(\"Audio track details undefined on fragment load progress\");\n      this.removeUnbufferedFrags(frag.start);\n      return;\n    }\n    const audioCodec = config.defaultAudioCodec || track.audioCodec || \"mp4a.40.2\";\n    let transmuxer = this.transmuxer;\n    if (!transmuxer) {\n      transmuxer = this.transmuxer = new TransmuxerInterface(this.hls, PlaylistLevelType.AUDIO, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n    }\n    const initPTS = this.initPTS[frag.cc];\n    const initSegmentData = (_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.data;\n    if (initPTS !== void 0) {\n      const accurateTimeOffset = false;\n      const partIndex = part ? part.index : -1;\n      const partial = partIndex !== -1;\n      const chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n      transmuxer.push(payload, initSegmentData, audioCodec, \"\", frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n    } else {\n      this.log(`Unknown video PTS for cc ${frag.cc}, waiting for video PTS before demuxing audio frag ${frag.sn} of [${details.startSN} ,${details.endSN}],track ${trackId}`);\n      const {\n        cache\n      } = this.waitingData = this.waitingData || {\n        frag,\n        part,\n        cache: new ChunkCache(),\n        complete: false\n      };\n      cache.push(new Uint8Array(payload));\n      this.waitingVideoCC = this.videoTrackCC;\n      this.state = State.WAITING_INIT_PTS;\n    }\n  }\n  _handleFragmentLoadComplete(fragLoadedData) {\n    if (this.waitingData) {\n      this.waitingData.complete = true;\n      return;\n    }\n    super._handleFragmentLoadComplete(fragLoadedData);\n  }\n  onBufferReset() {\n    this.mediaBuffer = this.videoBuffer = null;\n    this.loadedmetadata = false;\n  }\n  onBufferCreated(event, data) {\n    const audioTrack = data.tracks.audio;\n    if (audioTrack) {\n      this.mediaBuffer = audioTrack.buffer || null;\n    }\n    if (data.tracks.video) {\n      this.videoBuffer = data.tracks.video.buffer || null;\n    }\n  }\n  onFragBuffered(event, data) {\n    const {\n      frag,\n      part\n    } = data;\n    if (frag.type !== PlaylistLevelType.AUDIO) {\n      if (!this.loadedmetadata && frag.type === PlaylistLevelType.MAIN) {\n        const bufferable = this.videoBuffer || this.media;\n        if (bufferable) {\n          const bufferedTimeRanges = BufferHelper.getBuffered(bufferable);\n          if (bufferedTimeRanges.length) {\n            this.loadedmetadata = true;\n          }\n        }\n      }\n      return;\n    }\n    if (this.fragContextChanged(frag)) {\n      this.warn(`Fragment ${frag.sn}${part ? \" p: \" + part.index : \"\"} of level ${frag.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack ? this.switchingTrack.name : \"false\"}`);\n      return;\n    }\n    if (frag.sn !== \"initSegment\") {\n      this.fragPrevious = frag;\n      const track = this.switchingTrack;\n      if (track) {\n        this.bufferedTrack = track;\n        this.switchingTrack = null;\n        this.hls.trigger(Events.AUDIO_TRACK_SWITCHED, _objectSpread2({}, track));\n      }\n    }\n    this.fragBufferedComplete(frag, part);\n  }\n  onError(event, data) {\n    var _data$context;\n    if (data.fatal) {\n      this.state = State.ERROR;\n      return;\n    }\n    switch (data.details) {\n      case ErrorDetails.FRAG_GAP:\n      case ErrorDetails.FRAG_PARSING_ERROR:\n      case ErrorDetails.FRAG_DECRYPT_ERROR:\n      case ErrorDetails.FRAG_LOAD_ERROR:\n      case ErrorDetails.FRAG_LOAD_TIMEOUT:\n      case ErrorDetails.KEY_LOAD_ERROR:\n      case ErrorDetails.KEY_LOAD_TIMEOUT:\n        this.onFragmentOrKeyLoadError(PlaylistLevelType.AUDIO, data);\n        break;\n      case ErrorDetails.AUDIO_TRACK_LOAD_ERROR:\n      case ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:\n      case ErrorDetails.LEVEL_PARSING_ERROR:\n        if (!data.levelRetry && this.state === State.WAITING_TRACK && ((_data$context = data.context) == null ? void 0 : _data$context.type) === PlaylistContextType.AUDIO_TRACK) {\n          this.state = State.IDLE;\n        }\n        break;\n      case ErrorDetails.BUFFER_APPEND_ERROR:\n      case ErrorDetails.BUFFER_FULL_ERROR:\n        if (!data.parent || data.parent !== \"audio\") {\n          return;\n        }\n        if (data.details === ErrorDetails.BUFFER_APPEND_ERROR) {\n          this.resetLoadingState();\n          return;\n        }\n        if (this.reduceLengthAndFlushBuffer(data)) {\n          this.bufferedTrack = null;\n          super.flushMainBuffer(0, Number.POSITIVE_INFINITY, \"audio\");\n        }\n        break;\n      case ErrorDetails.INTERNAL_EXCEPTION:\n        this.recoverWorkerError(data);\n        break;\n    }\n  }\n  onBufferFlushing(event, {\n    type\n  }) {\n    if (type !== ElementaryStreamTypes.VIDEO) {\n      this.flushing = true;\n    }\n  }\n  onBufferFlushed(event, {\n    type\n  }) {\n    if (type !== ElementaryStreamTypes.VIDEO) {\n      this.flushing = false;\n      this.bufferFlushed = true;\n      if (this.state === State.ENDED) {\n        this.state = State.IDLE;\n      }\n      const mediaBuffer = this.mediaBuffer || this.media;\n      if (mediaBuffer) {\n        this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.AUDIO);\n        this.tick();\n      }\n    }\n  }\n  _handleTransmuxComplete(transmuxResult) {\n    var _id3$samples;\n    const id = \"audio\";\n    const {\n      hls\n    } = this;\n    const {\n      remuxResult,\n      chunkMeta\n    } = transmuxResult;\n    const context = this.getCurrentContext(chunkMeta);\n    if (!context) {\n      this.resetWhenMissingContext(chunkMeta);\n      return;\n    }\n    const {\n      frag,\n      part,\n      level\n    } = context;\n    const {\n      details\n    } = level;\n    const {\n      audio,\n      text,\n      id3,\n      initSegment\n    } = remuxResult;\n    if (this.fragContextChanged(frag) || !details) {\n      this.fragmentTracker.removeFragment(frag);\n      return;\n    }\n    this.state = State.PARSING;\n    if (this.switchingTrack && audio) {\n      this.completeAudioSwitch(this.switchingTrack);\n    }\n    if (initSegment != null && initSegment.tracks) {\n      const mapFragment = frag.initSegment || frag;\n      this._bufferInitSegment(level, initSegment.tracks, mapFragment, chunkMeta);\n      hls.trigger(Events.FRAG_PARSING_INIT_SEGMENT, {\n        frag: mapFragment,\n        id,\n        tracks: initSegment.tracks\n      });\n    }\n    if (audio) {\n      const {\n        startPTS,\n        endPTS,\n        startDTS,\n        endDTS\n      } = audio;\n      if (part) {\n        part.elementaryStreams[ElementaryStreamTypes.AUDIO] = {\n          startPTS,\n          endPTS,\n          startDTS,\n          endDTS\n        };\n      }\n      frag.setElementaryStreamInfo(ElementaryStreamTypes.AUDIO, startPTS, endPTS, startDTS, endDTS);\n      this.bufferFragmentData(audio, frag, part, chunkMeta);\n    }\n    if (id3 != null && (_id3$samples = id3.samples) != null && _id3$samples.length) {\n      const emittedID3 = _extends({\n        id,\n        frag,\n        details\n      }, id3);\n      hls.trigger(Events.FRAG_PARSING_METADATA, emittedID3);\n    }\n    if (text) {\n      const emittedText = _extends({\n        id,\n        frag,\n        details\n      }, text);\n      hls.trigger(Events.FRAG_PARSING_USERDATA, emittedText);\n    }\n  }\n  _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) {\n    if (this.state !== State.PARSING) {\n      return;\n    }\n    if (tracks.video) {\n      delete tracks.video;\n    }\n    const track = tracks.audio;\n    if (!track) {\n      return;\n    }\n    track.id = \"audio\";\n    const variantAudioCodecs = currentLevel.audioCodec;\n    this.log(`Init audio buffer, container:${track.container}, codecs[level/parsed]=[${variantAudioCodecs}/${track.codec}]`);\n    if (variantAudioCodecs && variantAudioCodecs.split(\",\").length === 1) {\n      track.levelCodec = variantAudioCodecs;\n    }\n    this.hls.trigger(Events.BUFFER_CODECS, tracks);\n    const initSegment = track.initSegment;\n    if (initSegment != null && initSegment.byteLength) {\n      const segment = {\n        type: \"audio\",\n        frag,\n        part: null,\n        chunkMeta,\n        parent: frag.type,\n        data: initSegment\n      };\n      this.hls.trigger(Events.BUFFER_APPENDING, segment);\n    }\n    this.tickImmediate();\n  }\n  loadFragment(frag, track, targetBufferTime) {\n    const fragState = this.fragmentTracker.getState(frag);\n    this.fragCurrent = frag;\n    if (this.switchingTrack || fragState === FragmentState.NOT_LOADED || fragState === FragmentState.PARTIAL) {\n      var _track$details2;\n      if (frag.sn === \"initSegment\") {\n        this._loadInitSegment(frag, track);\n      } else if ((_track$details2 = track.details) != null && _track$details2.live && !this.initPTS[frag.cc]) {\n        this.log(`Waiting for video PTS in continuity counter ${frag.cc} of live stream before loading audio fragment ${frag.sn} of level ${this.trackId}`);\n        this.state = State.WAITING_INIT_PTS;\n        const mainDetails = this.mainDetails;\n        if (mainDetails && mainDetails.fragments[0].start !== track.details.fragments[0].start) {\n          alignMediaPlaylistByPDT(track.details, mainDetails);\n        }\n      } else {\n        this.startFragRequested = true;\n        super.loadFragment(frag, track, targetBufferTime);\n      }\n    } else {\n      this.clearTrackerIfNeeded(frag);\n    }\n  }\n  flushAudioIfNeeded(switchingTrack) {\n    if (this.media && this.bufferedTrack) {\n      const {\n        name,\n        lang,\n        assocLang,\n        characteristics,\n        audioCodec,\n        channels\n      } = this.bufferedTrack;\n      if (!matchesOption({\n        name,\n        lang,\n        assocLang,\n        characteristics,\n        audioCodec,\n        channels\n      }, switchingTrack, audioMatchPredicate)) {\n        this.log(\"Switching audio track : flushing all audio\");\n        super.flushMainBuffer(0, Number.POSITIVE_INFINITY, \"audio\");\n        this.bufferedTrack = null;\n      }\n    }\n  }\n  completeAudioSwitch(switchingTrack) {\n    const {\n      hls\n    } = this;\n    this.flushAudioIfNeeded(switchingTrack);\n    this.bufferedTrack = switchingTrack;\n    this.switchingTrack = null;\n    hls.trigger(Events.AUDIO_TRACK_SWITCHED, _objectSpread2({}, switchingTrack));\n  }\n};\nfunction subtitleOptionsIdentical(trackList1, trackList2) {\n  if (trackList1.length !== trackList2.length) {\n    return false;\n  }\n  for (let i2 = 0; i2 < trackList1.length; i2++) {\n    if (!mediaAttributesIdentical(trackList1[i2].attrs, trackList2[i2].attrs)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction mediaAttributesIdentical(attrs1, attrs2, customAttributes) {\n  const stableRenditionId = attrs1[\"STABLE-RENDITION-ID\"];\n  if (stableRenditionId && !customAttributes) {\n    return stableRenditionId === attrs2[\"STABLE-RENDITION-ID\"];\n  }\n  return !(customAttributes || [\"LANGUAGE\", \"NAME\", \"CHARACTERISTICS\", \"AUTOSELECT\", \"DEFAULT\", \"FORCED\", \"ASSOC-LANGUAGE\"]).some((subtitleAttribute) => attrs1[subtitleAttribute] !== attrs2[subtitleAttribute]);\n}\nfunction subtitleTrackMatchesTextTrack(subtitleTrack, textTrack) {\n  return textTrack.label.toLowerCase() === subtitleTrack.name.toLowerCase() && (!textTrack.language || textTrack.language.toLowerCase() === (subtitleTrack.lang || \"\").toLowerCase());\n}\nvar AudioTrackController = class extends BasePlaylistController {\n  constructor(hls) {\n    super(hls, \"[audio-track-controller]\");\n    this.tracks = [];\n    this.groupIds = null;\n    this.tracksInGroup = [];\n    this.trackId = -1;\n    this.currentTrack = null;\n    this.selectDefaultTrack = true;\n    this.registerListeners();\n  }\n  registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.on(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n  unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.off(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.tracks.length = 0;\n    this.tracksInGroup.length = 0;\n    this.currentTrack = null;\n    super.destroy();\n  }\n  onManifestLoading() {\n    this.tracks = [];\n    this.tracksInGroup = [];\n    this.groupIds = null;\n    this.currentTrack = null;\n    this.trackId = -1;\n    this.selectDefaultTrack = true;\n  }\n  onManifestParsed(event, data) {\n    this.tracks = data.audioTracks || [];\n  }\n  onAudioTrackLoaded(event, data) {\n    const {\n      id,\n      groupId,\n      details\n    } = data;\n    const trackInActiveGroup = this.tracksInGroup[id];\n    if (!trackInActiveGroup || trackInActiveGroup.groupId !== groupId) {\n      this.warn(`Audio track with id:${id} and group:${groupId} not found in active group ${trackInActiveGroup == null ? void 0 : trackInActiveGroup.groupId}`);\n      return;\n    }\n    const curDetails = trackInActiveGroup.details;\n    trackInActiveGroup.details = data.details;\n    this.log(`Audio track ${id} \"${trackInActiveGroup.name}\" lang:${trackInActiveGroup.lang} group:${groupId} loaded [${details.startSN}-${details.endSN}]`);\n    if (id === this.trackId) {\n      this.playlistLoaded(id, data, curDetails);\n    }\n  }\n  onLevelLoading(event, data) {\n    this.switchLevel(data.level);\n  }\n  onLevelSwitching(event, data) {\n    this.switchLevel(data.level);\n  }\n  switchLevel(levelIndex) {\n    const levelInfo = this.hls.levels[levelIndex];\n    if (!levelInfo) {\n      return;\n    }\n    const audioGroups = levelInfo.audioGroups || null;\n    const currentGroups = this.groupIds;\n    let currentTrack = this.currentTrack;\n    if (!audioGroups || (currentGroups == null ? void 0 : currentGroups.length) !== (audioGroups == null ? void 0 : audioGroups.length) || audioGroups != null && audioGroups.some((groupId) => (currentGroups == null ? void 0 : currentGroups.indexOf(groupId)) === -1)) {\n      this.groupIds = audioGroups;\n      this.trackId = -1;\n      this.currentTrack = null;\n      const audioTracks = this.tracks.filter((track) => !audioGroups || audioGroups.indexOf(track.groupId) !== -1);\n      if (audioTracks.length) {\n        if (this.selectDefaultTrack && !audioTracks.some((track) => track.default)) {\n          this.selectDefaultTrack = false;\n        }\n        audioTracks.forEach((track, i2) => {\n          track.id = i2;\n        });\n      } else if (!currentTrack && !this.tracksInGroup.length) {\n        return;\n      }\n      this.tracksInGroup = audioTracks;\n      const audioPreference = this.hls.config.audioPreference;\n      if (!currentTrack && audioPreference) {\n        const groupIndex = findMatchingOption(audioPreference, audioTracks, audioMatchPredicate);\n        if (groupIndex > -1) {\n          currentTrack = audioTracks[groupIndex];\n        } else {\n          const allIndex = findMatchingOption(audioPreference, this.tracks);\n          currentTrack = this.tracks[allIndex];\n        }\n      }\n      let trackId = this.findTrackId(currentTrack);\n      if (trackId === -1 && currentTrack) {\n        trackId = this.findTrackId(null);\n      }\n      const audioTracksUpdated = {\n        audioTracks\n      };\n      this.log(`Updating audio tracks, ${audioTracks.length} track(s) found in group(s): ${audioGroups == null ? void 0 : audioGroups.join(\",\")}`);\n      this.hls.trigger(Events.AUDIO_TRACKS_UPDATED, audioTracksUpdated);\n      const selectedTrackId = this.trackId;\n      if (trackId !== -1 && selectedTrackId === -1) {\n        this.setAudioTrack(trackId);\n      } else if (audioTracks.length && selectedTrackId === -1) {\n        var _this$groupIds;\n        const error = new Error(`No audio track selected for current audio group-ID(s): ${(_this$groupIds = this.groupIds) == null ? void 0 : _this$groupIds.join(\",\")} track count: ${audioTracks.length}`);\n        this.warn(error.message);\n        this.hls.trigger(Events.ERROR, {\n          type: ErrorTypes.MEDIA_ERROR,\n          details: ErrorDetails.AUDIO_TRACK_LOAD_ERROR,\n          fatal: true,\n          error\n        });\n      }\n    } else if (this.shouldReloadPlaylist(currentTrack)) {\n      this.setAudioTrack(this.trackId);\n    }\n  }\n  onError(event, data) {\n    if (data.fatal || !data.context) {\n      return;\n    }\n    if (data.context.type === PlaylistContextType.AUDIO_TRACK && data.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(data.context.groupId) !== -1)) {\n      this.requestScheduled = -1;\n      this.checkRetry(data);\n    }\n  }\n  get allAudioTracks() {\n    return this.tracks;\n  }\n  get audioTracks() {\n    return this.tracksInGroup;\n  }\n  get audioTrack() {\n    return this.trackId;\n  }\n  set audioTrack(newId) {\n    this.selectDefaultTrack = false;\n    this.setAudioTrack(newId);\n  }\n  setAudioOption(audioOption) {\n    const hls = this.hls;\n    hls.config.audioPreference = audioOption;\n    if (audioOption) {\n      const allAudioTracks = this.allAudioTracks;\n      this.selectDefaultTrack = false;\n      if (allAudioTracks.length) {\n        const currentTrack = this.currentTrack;\n        if (currentTrack && matchesOption(audioOption, currentTrack, audioMatchPredicate)) {\n          return currentTrack;\n        }\n        const groupIndex = findMatchingOption(audioOption, this.tracksInGroup, audioMatchPredicate);\n        if (groupIndex > -1) {\n          const track = this.tracksInGroup[groupIndex];\n          this.setAudioTrack(groupIndex);\n          return track;\n        } else if (currentTrack) {\n          let searchIndex = hls.loadLevel;\n          if (searchIndex === -1) {\n            searchIndex = hls.firstAutoLevel;\n          }\n          const switchIndex = findClosestLevelWithAudioGroup(audioOption, hls.levels, allAudioTracks, searchIndex, audioMatchPredicate);\n          if (switchIndex === -1) {\n            return null;\n          }\n          hls.nextLoadLevel = switchIndex;\n        }\n        if (audioOption.channels || audioOption.audioCodec) {\n          const withoutCodecAndChannelsMatch = findMatchingOption(audioOption, allAudioTracks);\n          if (withoutCodecAndChannelsMatch > -1) {\n            return allAudioTracks[withoutCodecAndChannelsMatch];\n          }\n        }\n      }\n    }\n    return null;\n  }\n  setAudioTrack(newId) {\n    const tracks = this.tracksInGroup;\n    if (newId < 0 || newId >= tracks.length) {\n      this.warn(`Invalid audio track id: ${newId}`);\n      return;\n    }\n    this.clearTimer();\n    this.selectDefaultTrack = false;\n    const lastTrack = this.currentTrack;\n    const track = tracks[newId];\n    const trackLoaded = track.details && !track.details.live;\n    if (newId === this.trackId && track === lastTrack && trackLoaded) {\n      return;\n    }\n    this.log(`Switching to audio-track ${newId} \"${track.name}\" lang:${track.lang} group:${track.groupId} channels:${track.channels}`);\n    this.trackId = newId;\n    this.currentTrack = track;\n    this.hls.trigger(Events.AUDIO_TRACK_SWITCHING, _objectSpread2({}, track));\n    if (trackLoaded) {\n      return;\n    }\n    const hlsUrlParameters = this.switchParams(track.url, lastTrack == null ? void 0 : lastTrack.details, track.details);\n    this.loadPlaylist(hlsUrlParameters);\n  }\n  findTrackId(currentTrack) {\n    const audioTracks = this.tracksInGroup;\n    for (let i2 = 0; i2 < audioTracks.length; i2++) {\n      const track = audioTracks[i2];\n      if (this.selectDefaultTrack && !track.default) {\n        continue;\n      }\n      if (!currentTrack || matchesOption(currentTrack, track, audioMatchPredicate)) {\n        return i2;\n      }\n    }\n    if (currentTrack) {\n      const {\n        name,\n        lang,\n        assocLang,\n        characteristics,\n        audioCodec,\n        channels\n      } = currentTrack;\n      for (let i2 = 0; i2 < audioTracks.length; i2++) {\n        const track = audioTracks[i2];\n        if (matchesOption({\n          name,\n          lang,\n          assocLang,\n          characteristics,\n          audioCodec,\n          channels\n        }, track, audioMatchPredicate)) {\n          return i2;\n        }\n      }\n      for (let i2 = 0; i2 < audioTracks.length; i2++) {\n        const track = audioTracks[i2];\n        if (mediaAttributesIdentical(currentTrack.attrs, track.attrs, [\"LANGUAGE\", \"ASSOC-LANGUAGE\", \"CHARACTERISTICS\"])) {\n          return i2;\n        }\n      }\n      for (let i2 = 0; i2 < audioTracks.length; i2++) {\n        const track = audioTracks[i2];\n        if (mediaAttributesIdentical(currentTrack.attrs, track.attrs, [\"LANGUAGE\"])) {\n          return i2;\n        }\n      }\n    }\n    return -1;\n  }\n  loadPlaylist(hlsUrlParameters) {\n    const audioTrack = this.currentTrack;\n    if (this.shouldLoadPlaylist(audioTrack) && audioTrack) {\n      super.loadPlaylist();\n      const id = audioTrack.id;\n      const groupId = audioTrack.groupId;\n      let url = audioTrack.url;\n      if (hlsUrlParameters) {\n        try {\n          url = hlsUrlParameters.addDirectives(url);\n        } catch (error) {\n          this.warn(`Could not construct new URL with HLS Delivery Directives: ${error}`);\n        }\n      }\n      this.log(`loading audio-track playlist ${id} \"${audioTrack.name}\" lang:${audioTrack.lang} group:${groupId}`);\n      this.clearTimer();\n      this.hls.trigger(Events.AUDIO_TRACK_LOADING, {\n        url,\n        id,\n        groupId,\n        deliveryDirectives: hlsUrlParameters || null\n      });\n    }\n  }\n};\nvar TICK_INTERVAL$1 = 500;\nvar SubtitleStreamController = class extends BaseStreamController {\n  constructor(hls, fragmentTracker, keyLoader) {\n    super(hls, fragmentTracker, keyLoader, \"[subtitle-stream-controller]\", PlaylistLevelType.SUBTITLE);\n    this.currentTrackId = -1;\n    this.tracksBuffered = [];\n    this.mainDetails = null;\n    this._registerListeners();\n  }\n  onHandlerDestroying() {\n    this._unregisterListeners();\n    super.onHandlerDestroying();\n    this.mainDetails = null;\n  }\n  _registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(Events.ERROR, this.onError, this);\n    hls.on(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n    hls.on(Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n    hls.on(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n    hls.on(Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n  _unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(Events.ERROR, this.onError, this);\n    hls.off(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n    hls.off(Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n    hls.off(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n    hls.off(Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n  startLoad(startPosition) {\n    this.stopLoad();\n    this.state = State.IDLE;\n    this.setInterval(TICK_INTERVAL$1);\n    this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n    this.tick();\n  }\n  onManifestLoading() {\n    this.mainDetails = null;\n    this.fragmentTracker.removeAllFragments();\n  }\n  onMediaDetaching() {\n    this.tracksBuffered = [];\n    super.onMediaDetaching();\n  }\n  onLevelLoaded(event, data) {\n    this.mainDetails = data.details;\n  }\n  onSubtitleFragProcessed(event, data) {\n    const {\n      frag,\n      success\n    } = data;\n    this.fragPrevious = frag;\n    this.state = State.IDLE;\n    if (!success) {\n      return;\n    }\n    const buffered = this.tracksBuffered[this.currentTrackId];\n    if (!buffered) {\n      return;\n    }\n    let timeRange;\n    const fragStart = frag.start;\n    for (let i2 = 0; i2 < buffered.length; i2++) {\n      if (fragStart >= buffered[i2].start && fragStart <= buffered[i2].end) {\n        timeRange = buffered[i2];\n        break;\n      }\n    }\n    const fragEnd = frag.start + frag.duration;\n    if (timeRange) {\n      timeRange.end = fragEnd;\n    } else {\n      timeRange = {\n        start: fragStart,\n        end: fragEnd\n      };\n      buffered.push(timeRange);\n    }\n    this.fragmentTracker.fragBuffered(frag);\n    this.fragBufferedComplete(frag, null);\n  }\n  onBufferFlushing(event, data) {\n    const {\n      startOffset,\n      endOffset\n    } = data;\n    if (startOffset === 0 && endOffset !== Number.POSITIVE_INFINITY) {\n      const endOffsetSubtitles = endOffset - 1;\n      if (endOffsetSubtitles <= 0) {\n        return;\n      }\n      data.endOffsetSubtitles = Math.max(0, endOffsetSubtitles);\n      this.tracksBuffered.forEach((buffered) => {\n        for (let i2 = 0; i2 < buffered.length; ) {\n          if (buffered[i2].end <= endOffsetSubtitles) {\n            buffered.shift();\n            continue;\n          } else if (buffered[i2].start < endOffsetSubtitles) {\n            buffered[i2].start = endOffsetSubtitles;\n          } else {\n            break;\n          }\n          i2++;\n        }\n      });\n      this.fragmentTracker.removeFragmentsInRange(startOffset, endOffsetSubtitles, PlaylistLevelType.SUBTITLE);\n    }\n  }\n  onFragBuffered(event, data) {\n    if (!this.loadedmetadata && data.frag.type === PlaylistLevelType.MAIN) {\n      var _this$media;\n      if ((_this$media = this.media) != null && _this$media.buffered.length) {\n        this.loadedmetadata = true;\n      }\n    }\n  }\n  // If something goes wrong, proceed to next frag, if we were processing one.\n  onError(event, data) {\n    const frag = data.frag;\n    if ((frag == null ? void 0 : frag.type) === PlaylistLevelType.SUBTITLE) {\n      if (data.details === ErrorDetails.FRAG_GAP) {\n        this.fragmentTracker.fragBuffered(frag, true);\n      }\n      if (this.fragCurrent) {\n        this.fragCurrent.abortRequests();\n      }\n      if (this.state !== State.STOPPED) {\n        this.state = State.IDLE;\n      }\n    }\n  }\n  // Got all new subtitle levels.\n  onSubtitleTracksUpdated(event, {\n    subtitleTracks\n  }) {\n    if (this.levels && subtitleOptionsIdentical(this.levels, subtitleTracks)) {\n      this.levels = subtitleTracks.map((mediaPlaylist) => new Level(mediaPlaylist));\n      return;\n    }\n    this.tracksBuffered = [];\n    this.levels = subtitleTracks.map((mediaPlaylist) => {\n      const level = new Level(mediaPlaylist);\n      this.tracksBuffered[level.id] = [];\n      return level;\n    });\n    this.fragmentTracker.removeFragmentsInRange(0, Number.POSITIVE_INFINITY, PlaylistLevelType.SUBTITLE);\n    this.fragPrevious = null;\n    this.mediaBuffer = null;\n  }\n  onSubtitleTrackSwitch(event, data) {\n    var _this$levels;\n    this.currentTrackId = data.id;\n    if (!((_this$levels = this.levels) != null && _this$levels.length) || this.currentTrackId === -1) {\n      this.clearInterval();\n      return;\n    }\n    const currentTrack = this.levels[this.currentTrackId];\n    if (currentTrack != null && currentTrack.details) {\n      this.mediaBuffer = this.mediaBufferTimeRanges;\n    } else {\n      this.mediaBuffer = null;\n    }\n    if (currentTrack) {\n      this.setInterval(TICK_INTERVAL$1);\n    }\n  }\n  // Got a new set of subtitle fragments.\n  onSubtitleTrackLoaded(event, data) {\n    var _track$details;\n    const {\n      currentTrackId,\n      levels\n    } = this;\n    const {\n      details: newDetails,\n      id: trackId\n    } = data;\n    if (!levels) {\n      this.warn(`Subtitle tracks were reset while loading level ${trackId}`);\n      return;\n    }\n    const track = levels[trackId];\n    if (trackId >= levels.length || !track) {\n      return;\n    }\n    this.log(`Subtitle track ${trackId} loaded [${newDetails.startSN},${newDetails.endSN}]${newDetails.lastPartSn ? `[part-${newDetails.lastPartSn}-${newDetails.lastPartIndex}]` : \"\"},duration:${newDetails.totalduration}`);\n    this.mediaBuffer = this.mediaBufferTimeRanges;\n    let sliding = 0;\n    if (newDetails.live || (_track$details = track.details) != null && _track$details.live) {\n      const mainDetails = this.mainDetails;\n      if (newDetails.deltaUpdateFailed || !mainDetails) {\n        return;\n      }\n      const mainSlidingStartFragment = mainDetails.fragments[0];\n      if (!track.details) {\n        if (newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n          alignMediaPlaylistByPDT(newDetails, mainDetails);\n          sliding = newDetails.fragments[0].start;\n        } else if (mainSlidingStartFragment) {\n          sliding = mainSlidingStartFragment.start;\n          addSliding(newDetails, sliding);\n        }\n      } else {\n        var _this$levelLastLoaded;\n        sliding = this.alignPlaylists(newDetails, track.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details);\n        if (sliding === 0 && mainSlidingStartFragment) {\n          sliding = mainSlidingStartFragment.start;\n          addSliding(newDetails, sliding);\n        }\n      }\n    }\n    track.details = newDetails;\n    this.levelLastLoaded = track;\n    if (trackId !== currentTrackId) {\n      return;\n    }\n    if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {\n      this.setStartPosition(this.mainDetails || newDetails, sliding);\n    }\n    this.tick();\n    if (newDetails.live && !this.fragCurrent && this.media && this.state === State.IDLE) {\n      const foundFrag = findFragmentByPTS(null, newDetails.fragments, this.media.currentTime, 0);\n      if (!foundFrag) {\n        this.warn(\"Subtitle playlist not aligned with playback\");\n        track.details = void 0;\n      }\n    }\n  }\n  _handleFragmentLoadComplete(fragLoadedData) {\n    const {\n      frag,\n      payload\n    } = fragLoadedData;\n    const decryptData = frag.decryptdata;\n    const hls = this.hls;\n    if (this.fragContextChanged(frag)) {\n      return;\n    }\n    if (payload && payload.byteLength > 0 && decryptData != null && decryptData.key && decryptData.iv && decryptData.method === \"AES-128\") {\n      const startTime = performance.now();\n      this.decrypter.decrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).catch((err) => {\n        hls.trigger(Events.ERROR, {\n          type: ErrorTypes.MEDIA_ERROR,\n          details: ErrorDetails.FRAG_DECRYPT_ERROR,\n          fatal: false,\n          error: err,\n          reason: err.message,\n          frag\n        });\n        throw err;\n      }).then((decryptedData) => {\n        const endTime = performance.now();\n        hls.trigger(Events.FRAG_DECRYPTED, {\n          frag,\n          payload: decryptedData,\n          stats: {\n            tstart: startTime,\n            tdecrypt: endTime\n          }\n        });\n      }).catch((err) => {\n        this.warn(`${err.name}: ${err.message}`);\n        this.state = State.IDLE;\n      });\n    }\n  }\n  doTick() {\n    if (!this.media) {\n      this.state = State.IDLE;\n      return;\n    }\n    if (this.state === State.IDLE) {\n      const {\n        currentTrackId,\n        levels\n      } = this;\n      const track = levels == null ? void 0 : levels[currentTrackId];\n      if (!track || !levels.length || !track.details) {\n        return;\n      }\n      const {\n        config\n      } = this;\n      const currentTime = this.getLoadPosition();\n      const bufferedInfo = BufferHelper.bufferedInfo(this.tracksBuffered[this.currentTrackId] || [], currentTime, config.maxBufferHole);\n      const {\n        end: targetBufferTime,\n        len: bufferLen\n      } = bufferedInfo;\n      const mainBufferInfo = this.getFwdBufferInfo(this.media, PlaylistLevelType.MAIN);\n      const trackDetails = track.details;\n      const maxBufLen = this.getMaxBufferLength(mainBufferInfo == null ? void 0 : mainBufferInfo.len) + trackDetails.levelTargetDuration;\n      if (bufferLen > maxBufLen) {\n        return;\n      }\n      const fragments = trackDetails.fragments;\n      const fragLen = fragments.length;\n      const end = trackDetails.edge;\n      let foundFrag = null;\n      const fragPrevious = this.fragPrevious;\n      if (targetBufferTime < end) {\n        const tolerance = config.maxFragLookUpTolerance;\n        const lookupTolerance = targetBufferTime > end - tolerance ? 0 : tolerance;\n        foundFrag = findFragmentByPTS(fragPrevious, fragments, Math.max(fragments[0].start, targetBufferTime), lookupTolerance);\n        if (!foundFrag && fragPrevious && fragPrevious.start < fragments[0].start) {\n          foundFrag = fragments[0];\n        }\n      } else {\n        foundFrag = fragments[fragLen - 1];\n      }\n      if (!foundFrag) {\n        return;\n      }\n      foundFrag = this.mapToInitFragWhenRequired(foundFrag);\n      if (foundFrag.sn !== \"initSegment\") {\n        const curSNIdx = foundFrag.sn - trackDetails.startSN;\n        const prevFrag = fragments[curSNIdx - 1];\n        if (prevFrag && prevFrag.cc === foundFrag.cc && this.fragmentTracker.getState(prevFrag) === FragmentState.NOT_LOADED) {\n          foundFrag = prevFrag;\n        }\n      }\n      if (this.fragmentTracker.getState(foundFrag) === FragmentState.NOT_LOADED) {\n        this.loadFragment(foundFrag, track, targetBufferTime);\n      }\n    }\n  }\n  getMaxBufferLength(mainBufferLength) {\n    const maxConfigBuffer = super.getMaxBufferLength();\n    if (!mainBufferLength) {\n      return maxConfigBuffer;\n    }\n    return Math.max(maxConfigBuffer, mainBufferLength);\n  }\n  loadFragment(frag, level, targetBufferTime) {\n    this.fragCurrent = frag;\n    if (frag.sn === \"initSegment\") {\n      this._loadInitSegment(frag, level);\n    } else {\n      this.startFragRequested = true;\n      super.loadFragment(frag, level, targetBufferTime);\n    }\n  }\n  get mediaBufferTimeRanges() {\n    return new BufferableInstance(this.tracksBuffered[this.currentTrackId] || []);\n  }\n};\nvar BufferableInstance = class {\n  constructor(timeranges) {\n    this.buffered = void 0;\n    const getRange = (name, index, length) => {\n      index = index >>> 0;\n      if (index > length - 1) {\n        throw new DOMException(`Failed to execute '${name}' on 'TimeRanges': The index provided (${index}) is greater than the maximum bound (${length})`);\n      }\n      return timeranges[index][name];\n    };\n    this.buffered = {\n      get length() {\n        return timeranges.length;\n      },\n      end(index) {\n        return getRange(\"end\", index, timeranges.length);\n      },\n      start(index) {\n        return getRange(\"start\", index, timeranges.length);\n      }\n    };\n  }\n};\nvar SubtitleTrackController = class extends BasePlaylistController {\n  constructor(hls) {\n    super(hls, \"[subtitle-track-controller]\");\n    this.media = null;\n    this.tracks = [];\n    this.groupIds = null;\n    this.tracksInGroup = [];\n    this.trackId = -1;\n    this.currentTrack = null;\n    this.selectDefaultTrack = true;\n    this.queuedDefaultTrack = -1;\n    this.asyncPollTrackChange = () => this.pollTrackChange(0);\n    this.useTextTrackPolling = false;\n    this.subtitlePollingInterval = -1;\n    this._subtitleDisplay = true;\n    this.onTextTracksChanged = () => {\n      if (!this.useTextTrackPolling) {\n        self.clearInterval(this.subtitlePollingInterval);\n      }\n      if (!this.media || !this.hls.config.renderTextTracksNatively) {\n        return;\n      }\n      let textTrack = null;\n      const tracks = filterSubtitleTracks(this.media.textTracks);\n      for (let i2 = 0; i2 < tracks.length; i2++) {\n        if (tracks[i2].mode === \"hidden\") {\n          textTrack = tracks[i2];\n        } else if (tracks[i2].mode === \"showing\") {\n          textTrack = tracks[i2];\n          break;\n        }\n      }\n      const trackId = this.findTrackForTextTrack(textTrack);\n      if (this.subtitleTrack !== trackId) {\n        this.setSubtitleTrack(trackId);\n      }\n    };\n    this.registerListeners();\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.tracks.length = 0;\n    this.tracksInGroup.length = 0;\n    this.currentTrack = null;\n    this.onTextTracksChanged = this.asyncPollTrackChange = null;\n    super.destroy();\n  }\n  get subtitleDisplay() {\n    return this._subtitleDisplay;\n  }\n  set subtitleDisplay(value) {\n    this._subtitleDisplay = value;\n    if (this.trackId > -1) {\n      this.toggleTrackModes();\n    }\n  }\n  registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.on(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n  unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.off(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n  // Listen for subtitle track change, then extract the current track ID.\n  onMediaAttached(event, data) {\n    this.media = data.media;\n    if (!this.media) {\n      return;\n    }\n    if (this.queuedDefaultTrack > -1) {\n      this.subtitleTrack = this.queuedDefaultTrack;\n      this.queuedDefaultTrack = -1;\n    }\n    this.useTextTrackPolling = !(this.media.textTracks && \"onchange\" in this.media.textTracks);\n    if (this.useTextTrackPolling) {\n      this.pollTrackChange(500);\n    } else {\n      this.media.textTracks.addEventListener(\"change\", this.asyncPollTrackChange);\n    }\n  }\n  pollTrackChange(timeout) {\n    self.clearInterval(this.subtitlePollingInterval);\n    this.subtitlePollingInterval = self.setInterval(this.onTextTracksChanged, timeout);\n  }\n  onMediaDetaching() {\n    if (!this.media) {\n      return;\n    }\n    self.clearInterval(this.subtitlePollingInterval);\n    if (!this.useTextTrackPolling) {\n      this.media.textTracks.removeEventListener(\"change\", this.asyncPollTrackChange);\n    }\n    if (this.trackId > -1) {\n      this.queuedDefaultTrack = this.trackId;\n    }\n    const textTracks = filterSubtitleTracks(this.media.textTracks);\n    textTracks.forEach((track) => {\n      clearCurrentCues(track);\n    });\n    this.subtitleTrack = -1;\n    this.media = null;\n  }\n  onManifestLoading() {\n    this.tracks = [];\n    this.groupIds = null;\n    this.tracksInGroup = [];\n    this.trackId = -1;\n    this.currentTrack = null;\n    this.selectDefaultTrack = true;\n  }\n  // Fired whenever a new manifest is loaded.\n  onManifestParsed(event, data) {\n    this.tracks = data.subtitleTracks;\n  }\n  onSubtitleTrackLoaded(event, data) {\n    const {\n      id,\n      groupId,\n      details\n    } = data;\n    const trackInActiveGroup = this.tracksInGroup[id];\n    if (!trackInActiveGroup || trackInActiveGroup.groupId !== groupId) {\n      this.warn(`Subtitle track with id:${id} and group:${groupId} not found in active group ${trackInActiveGroup == null ? void 0 : trackInActiveGroup.groupId}`);\n      return;\n    }\n    const curDetails = trackInActiveGroup.details;\n    trackInActiveGroup.details = data.details;\n    this.log(`Subtitle track ${id} \"${trackInActiveGroup.name}\" lang:${trackInActiveGroup.lang} group:${groupId} loaded [${details.startSN}-${details.endSN}]`);\n    if (id === this.trackId) {\n      this.playlistLoaded(id, data, curDetails);\n    }\n  }\n  onLevelLoading(event, data) {\n    this.switchLevel(data.level);\n  }\n  onLevelSwitching(event, data) {\n    this.switchLevel(data.level);\n  }\n  switchLevel(levelIndex) {\n    const levelInfo = this.hls.levels[levelIndex];\n    if (!levelInfo) {\n      return;\n    }\n    const subtitleGroups = levelInfo.subtitleGroups || null;\n    const currentGroups = this.groupIds;\n    let currentTrack = this.currentTrack;\n    if (!subtitleGroups || (currentGroups == null ? void 0 : currentGroups.length) !== (subtitleGroups == null ? void 0 : subtitleGroups.length) || subtitleGroups != null && subtitleGroups.some((groupId) => (currentGroups == null ? void 0 : currentGroups.indexOf(groupId)) === -1)) {\n      this.groupIds = subtitleGroups;\n      this.trackId = -1;\n      this.currentTrack = null;\n      const subtitleTracks = this.tracks.filter((track) => !subtitleGroups || subtitleGroups.indexOf(track.groupId) !== -1);\n      if (subtitleTracks.length) {\n        if (this.selectDefaultTrack && !subtitleTracks.some((track) => track.default)) {\n          this.selectDefaultTrack = false;\n        }\n        subtitleTracks.forEach((track, i2) => {\n          track.id = i2;\n        });\n      } else if (!currentTrack && !this.tracksInGroup.length) {\n        return;\n      }\n      this.tracksInGroup = subtitleTracks;\n      const subtitlePreference = this.hls.config.subtitlePreference;\n      if (!currentTrack && subtitlePreference) {\n        this.selectDefaultTrack = false;\n        const groupIndex = findMatchingOption(subtitlePreference, subtitleTracks);\n        if (groupIndex > -1) {\n          currentTrack = subtitleTracks[groupIndex];\n        } else {\n          const allIndex = findMatchingOption(subtitlePreference, this.tracks);\n          currentTrack = this.tracks[allIndex];\n        }\n      }\n      let trackId = this.findTrackId(currentTrack);\n      if (trackId === -1 && currentTrack) {\n        trackId = this.findTrackId(null);\n      }\n      const subtitleTracksUpdated = {\n        subtitleTracks\n      };\n      this.log(`Updating subtitle tracks, ${subtitleTracks.length} track(s) found in \"${subtitleGroups == null ? void 0 : subtitleGroups.join(\",\")}\" group-id`);\n      this.hls.trigger(Events.SUBTITLE_TRACKS_UPDATED, subtitleTracksUpdated);\n      if (trackId !== -1 && this.trackId === -1) {\n        this.setSubtitleTrack(trackId);\n      }\n    } else if (this.shouldReloadPlaylist(currentTrack)) {\n      this.setSubtitleTrack(this.trackId);\n    }\n  }\n  findTrackId(currentTrack) {\n    const tracks = this.tracksInGroup;\n    const selectDefault = this.selectDefaultTrack;\n    for (let i2 = 0; i2 < tracks.length; i2++) {\n      const track = tracks[i2];\n      if (selectDefault && !track.default || !selectDefault && !currentTrack) {\n        continue;\n      }\n      if (!currentTrack || matchesOption(track, currentTrack)) {\n        return i2;\n      }\n    }\n    if (currentTrack) {\n      for (let i2 = 0; i2 < tracks.length; i2++) {\n        const track = tracks[i2];\n        if (mediaAttributesIdentical(currentTrack.attrs, track.attrs, [\"LANGUAGE\", \"ASSOC-LANGUAGE\", \"CHARACTERISTICS\"])) {\n          return i2;\n        }\n      }\n      for (let i2 = 0; i2 < tracks.length; i2++) {\n        const track = tracks[i2];\n        if (mediaAttributesIdentical(currentTrack.attrs, track.attrs, [\"LANGUAGE\"])) {\n          return i2;\n        }\n      }\n    }\n    return -1;\n  }\n  findTrackForTextTrack(textTrack) {\n    if (textTrack) {\n      const tracks = this.tracksInGroup;\n      for (let i2 = 0; i2 < tracks.length; i2++) {\n        const track = tracks[i2];\n        if (subtitleTrackMatchesTextTrack(track, textTrack)) {\n          return i2;\n        }\n      }\n    }\n    return -1;\n  }\n  onError(event, data) {\n    if (data.fatal || !data.context) {\n      return;\n    }\n    if (data.context.type === PlaylistContextType.SUBTITLE_TRACK && data.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(data.context.groupId) !== -1)) {\n      this.checkRetry(data);\n    }\n  }\n  get allSubtitleTracks() {\n    return this.tracks;\n  }\n  /** get alternate subtitle tracks list from playlist **/\n  get subtitleTracks() {\n    return this.tracksInGroup;\n  }\n  /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/\n  get subtitleTrack() {\n    return this.trackId;\n  }\n  set subtitleTrack(newId) {\n    this.selectDefaultTrack = false;\n    this.setSubtitleTrack(newId);\n  }\n  setSubtitleOption(subtitleOption) {\n    this.hls.config.subtitlePreference = subtitleOption;\n    if (subtitleOption) {\n      const allSubtitleTracks = this.allSubtitleTracks;\n      this.selectDefaultTrack = false;\n      if (allSubtitleTracks.length) {\n        const currentTrack = this.currentTrack;\n        if (currentTrack && matchesOption(subtitleOption, currentTrack)) {\n          return currentTrack;\n        }\n        const groupIndex = findMatchingOption(subtitleOption, this.tracksInGroup);\n        if (groupIndex > -1) {\n          const track = this.tracksInGroup[groupIndex];\n          this.setSubtitleTrack(groupIndex);\n          return track;\n        } else if (currentTrack) {\n          return null;\n        } else {\n          const allIndex = findMatchingOption(subtitleOption, allSubtitleTracks);\n          if (allIndex > -1) {\n            return allSubtitleTracks[allIndex];\n          }\n        }\n      }\n    }\n    return null;\n  }\n  loadPlaylist(hlsUrlParameters) {\n    super.loadPlaylist();\n    const currentTrack = this.currentTrack;\n    if (this.shouldLoadPlaylist(currentTrack) && currentTrack) {\n      const id = currentTrack.id;\n      const groupId = currentTrack.groupId;\n      let url = currentTrack.url;\n      if (hlsUrlParameters) {\n        try {\n          url = hlsUrlParameters.addDirectives(url);\n        } catch (error) {\n          this.warn(`Could not construct new URL with HLS Delivery Directives: ${error}`);\n        }\n      }\n      this.log(`Loading subtitle playlist for id ${id}`);\n      this.hls.trigger(Events.SUBTITLE_TRACK_LOADING, {\n        url,\n        id,\n        groupId,\n        deliveryDirectives: hlsUrlParameters || null\n      });\n    }\n  }\n  /**\n   * Disables the old subtitleTrack and sets current mode on the next subtitleTrack.\n   * This operates on the DOM textTracks.\n   * A value of -1 will disable all subtitle tracks.\n   */\n  toggleTrackModes() {\n    const {\n      media\n    } = this;\n    if (!media) {\n      return;\n    }\n    const textTracks = filterSubtitleTracks(media.textTracks);\n    const currentTrack = this.currentTrack;\n    let nextTrack;\n    if (currentTrack) {\n      nextTrack = textTracks.filter((textTrack) => subtitleTrackMatchesTextTrack(currentTrack, textTrack))[0];\n      if (!nextTrack) {\n        this.warn(`Unable to find subtitle TextTrack with name \"${currentTrack.name}\" and language \"${currentTrack.lang}\"`);\n      }\n    }\n    [].slice.call(textTracks).forEach((track) => {\n      if (track.mode !== \"disabled\" && track !== nextTrack) {\n        track.mode = \"disabled\";\n      }\n    });\n    if (nextTrack) {\n      const mode = this.subtitleDisplay ? \"showing\" : \"hidden\";\n      if (nextTrack.mode !== mode) {\n        nextTrack.mode = mode;\n      }\n    }\n  }\n  /**\n   * This method is responsible for validating the subtitle index and periodically reloading if live.\n   * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track.\n   */\n  setSubtitleTrack(newId) {\n    const tracks = this.tracksInGroup;\n    if (!this.media) {\n      this.queuedDefaultTrack = newId;\n      return;\n    }\n    if (newId < -1 || newId >= tracks.length || !isFiniteNumber(newId)) {\n      this.warn(`Invalid subtitle track id: ${newId}`);\n      return;\n    }\n    this.clearTimer();\n    this.selectDefaultTrack = false;\n    const lastTrack = this.currentTrack;\n    const track = tracks[newId] || null;\n    this.trackId = newId;\n    this.currentTrack = track;\n    this.toggleTrackModes();\n    if (!track) {\n      this.hls.trigger(Events.SUBTITLE_TRACK_SWITCH, {\n        id: newId\n      });\n      return;\n    }\n    const trackLoaded = !!track.details && !track.details.live;\n    if (newId === this.trackId && track === lastTrack && trackLoaded) {\n      return;\n    }\n    this.log(`Switching to subtitle-track ${newId}` + (track ? ` \"${track.name}\" lang:${track.lang} group:${track.groupId}` : \"\"));\n    const {\n      id,\n      groupId = \"\",\n      name,\n      type,\n      url\n    } = track;\n    this.hls.trigger(Events.SUBTITLE_TRACK_SWITCH, {\n      id,\n      groupId,\n      name,\n      type,\n      url\n    });\n    const hlsUrlParameters = this.switchParams(track.url, lastTrack == null ? void 0 : lastTrack.details, track.details);\n    this.loadPlaylist(hlsUrlParameters);\n  }\n};\nvar BufferOperationQueue = class {\n  constructor(sourceBufferReference) {\n    this.buffers = void 0;\n    this.queues = {\n      video: [],\n      audio: [],\n      audiovideo: []\n    };\n    this.buffers = sourceBufferReference;\n  }\n  append(operation, type, pending) {\n    const queue = this.queues[type];\n    queue.push(operation);\n    if (queue.length === 1 && !pending) {\n      this.executeNext(type);\n    }\n  }\n  insertAbort(operation, type) {\n    const queue = this.queues[type];\n    queue.unshift(operation);\n    this.executeNext(type);\n  }\n  appendBlocker(type) {\n    let execute;\n    const promise = new Promise((resolve) => {\n      execute = resolve;\n    });\n    const operation = {\n      execute,\n      onStart: () => {\n      },\n      onComplete: () => {\n      },\n      onError: () => {\n      }\n    };\n    this.append(operation, type);\n    return promise;\n  }\n  executeNext(type) {\n    const queue = this.queues[type];\n    if (queue.length) {\n      const operation = queue[0];\n      try {\n        operation.execute();\n      } catch (error) {\n        logger.warn(`[buffer-operation-queue]: Exception executing \"${type}\" SourceBuffer operation: ${error}`);\n        operation.onError(error);\n        const sb = this.buffers[type];\n        if (!(sb != null && sb.updating)) {\n          this.shiftAndExecuteNext(type);\n        }\n      }\n    }\n  }\n  shiftAndExecuteNext(type) {\n    this.queues[type].shift();\n    this.executeNext(type);\n  }\n  current(type) {\n    return this.queues[type][0];\n  }\n};\nvar VIDEO_CODEC_PROFILE_REPLACE = /(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\\.[^.,]+)+/;\nvar BufferController = class {\n  constructor(hls) {\n    this.details = null;\n    this._objectUrl = null;\n    this.operationQueue = void 0;\n    this.listeners = void 0;\n    this.hls = void 0;\n    this.bufferCodecEventsExpected = 0;\n    this._bufferCodecEventsTotal = 0;\n    this.media = null;\n    this.mediaSource = null;\n    this.lastMpegAudioChunk = null;\n    this.appendSource = void 0;\n    this.appendErrors = {\n      audio: 0,\n      video: 0,\n      audiovideo: 0\n    };\n    this.tracks = {};\n    this.pendingTracks = {};\n    this.sourceBuffer = void 0;\n    this.log = void 0;\n    this.warn = void 0;\n    this.error = void 0;\n    this._onEndStreaming = (event) => {\n      if (!this.hls) {\n        return;\n      }\n      this.hls.pauseBuffering();\n    };\n    this._onStartStreaming = (event) => {\n      if (!this.hls) {\n        return;\n      }\n      this.hls.resumeBuffering();\n    };\n    this._onMediaSourceOpen = () => {\n      const {\n        media,\n        mediaSource\n      } = this;\n      this.log(\"Media source opened\");\n      if (media) {\n        media.removeEventListener(\"emptied\", this._onMediaEmptied);\n        this.updateMediaElementDuration();\n        this.hls.trigger(Events.MEDIA_ATTACHED, {\n          media,\n          mediaSource\n        });\n      }\n      if (mediaSource) {\n        mediaSource.removeEventListener(\"sourceopen\", this._onMediaSourceOpen);\n      }\n      this.checkPendingTracks();\n    };\n    this._onMediaSourceClose = () => {\n      this.log(\"Media source closed\");\n    };\n    this._onMediaSourceEnded = () => {\n      this.log(\"Media source ended\");\n    };\n    this._onMediaEmptied = () => {\n      const {\n        mediaSrc,\n        _objectUrl\n      } = this;\n      if (mediaSrc !== _objectUrl) {\n        logger.error(`Media element src was set while attaching MediaSource (${_objectUrl} > ${mediaSrc})`);\n      }\n    };\n    this.hls = hls;\n    const logPrefix = \"[buffer-controller]\";\n    this.appendSource = isManagedMediaSource(getMediaSource(hls.config.preferManagedMediaSource));\n    this.log = logger.log.bind(logger, logPrefix);\n    this.warn = logger.warn.bind(logger, logPrefix);\n    this.error = logger.error.bind(logger, logPrefix);\n    this._initSourceBuffer();\n    this.registerListeners();\n  }\n  hasSourceTypes() {\n    return this.getSourceBufferTypes().length > 0 || Object.keys(this.pendingTracks).length > 0;\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.details = null;\n    this.lastMpegAudioChunk = null;\n    this.hls = null;\n  }\n  registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.BUFFER_RESET, this.onBufferReset, this);\n    hls.on(Events.BUFFER_APPENDING, this.onBufferAppending, this);\n    hls.on(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n    hls.on(Events.BUFFER_EOS, this.onBufferEos, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n    hls.on(Events.FRAG_PARSED, this.onFragParsed, this);\n    hls.on(Events.FRAG_CHANGED, this.onFragChanged, this);\n  }\n  unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.BUFFER_RESET, this.onBufferReset, this);\n    hls.off(Events.BUFFER_APPENDING, this.onBufferAppending, this);\n    hls.off(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n    hls.off(Events.BUFFER_EOS, this.onBufferEos, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n    hls.off(Events.FRAG_PARSED, this.onFragParsed, this);\n    hls.off(Events.FRAG_CHANGED, this.onFragChanged, this);\n  }\n  _initSourceBuffer() {\n    this.sourceBuffer = {};\n    this.operationQueue = new BufferOperationQueue(this.sourceBuffer);\n    this.listeners = {\n      audio: [],\n      video: [],\n      audiovideo: []\n    };\n    this.appendErrors = {\n      audio: 0,\n      video: 0,\n      audiovideo: 0\n    };\n    this.lastMpegAudioChunk = null;\n  }\n  onManifestLoading() {\n    this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = 0;\n    this.details = null;\n  }\n  onManifestParsed(event, data) {\n    let codecEvents = 2;\n    if (data.audio && !data.video || !data.altAudio || false) {\n      codecEvents = 1;\n    }\n    this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = codecEvents;\n    this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`);\n  }\n  onMediaAttaching(event, data) {\n    const media = this.media = data.media;\n    const MediaSource = getMediaSource(this.appendSource);\n    if (media && MediaSource) {\n      var _ms$constructor;\n      const ms = this.mediaSource = new MediaSource();\n      this.log(`created media source: ${(_ms$constructor = ms.constructor) == null ? void 0 : _ms$constructor.name}`);\n      ms.addEventListener(\"sourceopen\", this._onMediaSourceOpen);\n      ms.addEventListener(\"sourceended\", this._onMediaSourceEnded);\n      ms.addEventListener(\"sourceclose\", this._onMediaSourceClose);\n      if (this.appendSource) {\n        ms.addEventListener(\"startstreaming\", this._onStartStreaming);\n        ms.addEventListener(\"endstreaming\", this._onEndStreaming);\n      }\n      const objectUrl = this._objectUrl = self.URL.createObjectURL(ms);\n      if (this.appendSource) {\n        try {\n          media.removeAttribute(\"src\");\n          const MMS = self.ManagedMediaSource;\n          media.disableRemotePlayback = media.disableRemotePlayback || MMS && ms instanceof MMS;\n          removeSourceChildren(media);\n          addSource(media, objectUrl);\n          media.load();\n        } catch (error) {\n          media.src = objectUrl;\n        }\n      } else {\n        media.src = objectUrl;\n      }\n      media.addEventListener(\"emptied\", this._onMediaEmptied);\n    }\n  }\n  onMediaDetaching() {\n    const {\n      media,\n      mediaSource,\n      _objectUrl\n    } = this;\n    if (mediaSource) {\n      this.log(\"media source detaching\");\n      if (mediaSource.readyState === \"open\") {\n        try {\n          mediaSource.endOfStream();\n        } catch (err) {\n          this.warn(`onMediaDetaching: ${err.message} while calling endOfStream`);\n        }\n      }\n      this.onBufferReset();\n      mediaSource.removeEventListener(\"sourceopen\", this._onMediaSourceOpen);\n      mediaSource.removeEventListener(\"sourceended\", this._onMediaSourceEnded);\n      mediaSource.removeEventListener(\"sourceclose\", this._onMediaSourceClose);\n      if (this.appendSource) {\n        mediaSource.removeEventListener(\"startstreaming\", this._onStartStreaming);\n        mediaSource.removeEventListener(\"endstreaming\", this._onEndStreaming);\n      }\n      if (media) {\n        media.removeEventListener(\"emptied\", this._onMediaEmptied);\n        if (_objectUrl) {\n          self.URL.revokeObjectURL(_objectUrl);\n        }\n        if (this.mediaSrc === _objectUrl) {\n          media.removeAttribute(\"src\");\n          if (this.appendSource) {\n            removeSourceChildren(media);\n          }\n          media.load();\n        } else {\n          this.warn(\"media|source.src was changed by a third party - skip cleanup\");\n        }\n      }\n      this.mediaSource = null;\n      this.media = null;\n      this._objectUrl = null;\n      this.bufferCodecEventsExpected = this._bufferCodecEventsTotal;\n      this.pendingTracks = {};\n      this.tracks = {};\n    }\n    this.hls.trigger(Events.MEDIA_DETACHED, void 0);\n  }\n  onBufferReset() {\n    this.getSourceBufferTypes().forEach((type) => {\n      this.resetBuffer(type);\n    });\n    this._initSourceBuffer();\n    this.hls.resumeBuffering();\n  }\n  resetBuffer(type) {\n    const sb = this.sourceBuffer[type];\n    try {\n      if (sb) {\n        var _this$mediaSource;\n        this.removeBufferListeners(type);\n        this.sourceBuffer[type] = void 0;\n        if ((_this$mediaSource = this.mediaSource) != null && _this$mediaSource.sourceBuffers.length) {\n          this.mediaSource.removeSourceBuffer(sb);\n        }\n      }\n    } catch (err) {\n      this.warn(`onBufferReset ${type}`, err);\n    }\n  }\n  onBufferCodecs(event, data) {\n    const sourceBufferCount = this.getSourceBufferTypes().length;\n    const trackNames = Object.keys(data);\n    trackNames.forEach((trackName) => {\n      if (sourceBufferCount) {\n        const track = this.tracks[trackName];\n        if (track && typeof track.buffer.changeType === \"function\") {\n          var _trackCodec;\n          const {\n            id,\n            codec,\n            levelCodec,\n            container,\n            metadata\n          } = data[trackName];\n          const currentCodecFull = pickMostCompleteCodecName(track.codec, track.levelCodec);\n          const currentCodec = currentCodecFull == null ? void 0 : currentCodecFull.replace(VIDEO_CODEC_PROFILE_REPLACE, \"$1\");\n          let trackCodec = pickMostCompleteCodecName(codec, levelCodec);\n          const nextCodec = (_trackCodec = trackCodec) == null ? void 0 : _trackCodec.replace(VIDEO_CODEC_PROFILE_REPLACE, \"$1\");\n          if (trackCodec && currentCodec !== nextCodec) {\n            if (trackName.slice(0, 5) === \"audio\") {\n              trackCodec = getCodecCompatibleName(trackCodec, this.appendSource);\n            }\n            const mimeType = `${container};codecs=${trackCodec}`;\n            this.appendChangeType(trackName, mimeType);\n            this.log(`switching codec ${currentCodecFull} to ${trackCodec}`);\n            this.tracks[trackName] = {\n              buffer: track.buffer,\n              codec,\n              container,\n              levelCodec,\n              metadata,\n              id\n            };\n          }\n        }\n      } else {\n        this.pendingTracks[trackName] = data[trackName];\n      }\n    });\n    if (sourceBufferCount) {\n      return;\n    }\n    const bufferCodecEventsExpected = Math.max(this.bufferCodecEventsExpected - 1, 0);\n    if (this.bufferCodecEventsExpected !== bufferCodecEventsExpected) {\n      this.log(`${bufferCodecEventsExpected} bufferCodec event(s) expected ${trackNames.join(\",\")}`);\n      this.bufferCodecEventsExpected = bufferCodecEventsExpected;\n    }\n    if (this.mediaSource && this.mediaSource.readyState === \"open\") {\n      this.checkPendingTracks();\n    }\n  }\n  appendChangeType(type, mimeType) {\n    const {\n      operationQueue\n    } = this;\n    const operation = {\n      execute: () => {\n        const sb = this.sourceBuffer[type];\n        if (sb) {\n          this.log(`changing ${type} sourceBuffer type to ${mimeType}`);\n          sb.changeType(mimeType);\n        }\n        operationQueue.shiftAndExecuteNext(type);\n      },\n      onStart: () => {\n      },\n      onComplete: () => {\n      },\n      onError: (error) => {\n        this.warn(`Failed to change ${type} SourceBuffer type`, error);\n      }\n    };\n    operationQueue.append(operation, type, !!this.pendingTracks[type]);\n  }\n  onBufferAppending(event, eventData) {\n    const {\n      hls,\n      operationQueue,\n      tracks\n    } = this;\n    const {\n      data,\n      type,\n      frag,\n      part,\n      chunkMeta\n    } = eventData;\n    const chunkStats = chunkMeta.buffering[type];\n    const bufferAppendingStart = self.performance.now();\n    chunkStats.start = bufferAppendingStart;\n    const fragBuffering = frag.stats.buffering;\n    const partBuffering = part ? part.stats.buffering : null;\n    if (fragBuffering.start === 0) {\n      fragBuffering.start = bufferAppendingStart;\n    }\n    if (partBuffering && partBuffering.start === 0) {\n      partBuffering.start = bufferAppendingStart;\n    }\n    const audioTrack = tracks.audio;\n    let checkTimestampOffset = false;\n    if (type === \"audio\" && (audioTrack == null ? void 0 : audioTrack.container) === \"audio/mpeg\") {\n      checkTimestampOffset = !this.lastMpegAudioChunk || chunkMeta.id === 1 || this.lastMpegAudioChunk.sn !== chunkMeta.sn;\n      this.lastMpegAudioChunk = chunkMeta;\n    }\n    const fragStart = frag.start;\n    const operation = {\n      execute: () => {\n        chunkStats.executeStart = self.performance.now();\n        if (checkTimestampOffset) {\n          const sb = this.sourceBuffer[type];\n          if (sb) {\n            const delta = fragStart - sb.timestampOffset;\n            if (Math.abs(delta) >= 0.1) {\n              this.log(`Updating audio SourceBuffer timestampOffset to ${fragStart} (delta: ${delta}) sn: ${frag.sn})`);\n              sb.timestampOffset = fragStart;\n            }\n          }\n        }\n        this.appendExecutor(data, type);\n      },\n      onStart: () => {\n      },\n      onComplete: () => {\n        const end = self.performance.now();\n        chunkStats.executeEnd = chunkStats.end = end;\n        if (fragBuffering.first === 0) {\n          fragBuffering.first = end;\n        }\n        if (partBuffering && partBuffering.first === 0) {\n          partBuffering.first = end;\n        }\n        const {\n          sourceBuffer\n        } = this;\n        const timeRanges = {};\n        for (const type2 in sourceBuffer) {\n          timeRanges[type2] = BufferHelper.getBuffered(sourceBuffer[type2]);\n        }\n        this.appendErrors[type] = 0;\n        if (type === \"audio\" || type === \"video\") {\n          this.appendErrors.audiovideo = 0;\n        } else {\n          this.appendErrors.audio = 0;\n          this.appendErrors.video = 0;\n        }\n        this.hls.trigger(Events.BUFFER_APPENDED, {\n          type,\n          frag,\n          part,\n          chunkMeta,\n          parent: frag.type,\n          timeRanges\n        });\n      },\n      onError: (error) => {\n        const event2 = {\n          type: ErrorTypes.MEDIA_ERROR,\n          parent: frag.type,\n          details: ErrorDetails.BUFFER_APPEND_ERROR,\n          sourceBufferName: type,\n          frag,\n          part,\n          chunkMeta,\n          error,\n          err: error,\n          fatal: false\n        };\n        if (error.code === DOMException.QUOTA_EXCEEDED_ERR) {\n          event2.details = ErrorDetails.BUFFER_FULL_ERROR;\n        } else {\n          const appendErrorCount = ++this.appendErrors[type];\n          event2.details = ErrorDetails.BUFFER_APPEND_ERROR;\n          this.warn(`Failed ${appendErrorCount}/${hls.config.appendErrorMaxRetry} times to append segment in \"${type}\" sourceBuffer`);\n          if (appendErrorCount >= hls.config.appendErrorMaxRetry) {\n            event2.fatal = true;\n          }\n        }\n        hls.trigger(Events.ERROR, event2);\n      }\n    };\n    operationQueue.append(operation, type, !!this.pendingTracks[type]);\n  }\n  onBufferFlushing(event, data) {\n    const {\n      operationQueue\n    } = this;\n    const flushOperation = (type) => ({\n      execute: this.removeExecutor.bind(this, type, data.startOffset, data.endOffset),\n      onStart: () => {\n      },\n      onComplete: () => {\n        this.hls.trigger(Events.BUFFER_FLUSHED, {\n          type\n        });\n      },\n      onError: (error) => {\n        this.warn(`Failed to remove from ${type} SourceBuffer`, error);\n      }\n    });\n    if (data.type) {\n      operationQueue.append(flushOperation(data.type), data.type);\n    } else {\n      this.getSourceBufferTypes().forEach((type) => {\n        operationQueue.append(flushOperation(type), type);\n      });\n    }\n  }\n  onFragParsed(event, data) {\n    const {\n      frag,\n      part\n    } = data;\n    const buffersAppendedTo = [];\n    const elementaryStreams = part ? part.elementaryStreams : frag.elementaryStreams;\n    if (elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO]) {\n      buffersAppendedTo.push(\"audiovideo\");\n    } else {\n      if (elementaryStreams[ElementaryStreamTypes.AUDIO]) {\n        buffersAppendedTo.push(\"audio\");\n      }\n      if (elementaryStreams[ElementaryStreamTypes.VIDEO]) {\n        buffersAppendedTo.push(\"video\");\n      }\n    }\n    const onUnblocked = () => {\n      const now2 = self.performance.now();\n      frag.stats.buffering.end = now2;\n      if (part) {\n        part.stats.buffering.end = now2;\n      }\n      const stats = part ? part.stats : frag.stats;\n      this.hls.trigger(Events.FRAG_BUFFERED, {\n        frag,\n        part,\n        stats,\n        id: frag.type\n      });\n    };\n    if (buffersAppendedTo.length === 0) {\n      this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${frag.type} level: ${frag.level} sn: ${frag.sn}`);\n    }\n    this.blockBuffers(onUnblocked, buffersAppendedTo);\n  }\n  onFragChanged(event, data) {\n    this.trimBuffers();\n  }\n  // on BUFFER_EOS mark matching sourcebuffer(s) as ended and trigger checkEos()\n  // an undefined data.type will mark all buffers as EOS.\n  onBufferEos(event, data) {\n    const ended = this.getSourceBufferTypes().reduce((acc, type) => {\n      const sb = this.sourceBuffer[type];\n      if (sb && (!data.type || data.type === type)) {\n        sb.ending = true;\n        if (!sb.ended) {\n          sb.ended = true;\n          this.log(`${type} sourceBuffer now EOS`);\n        }\n      }\n      return acc && !!(!sb || sb.ended);\n    }, true);\n    if (ended) {\n      this.log(`Queueing mediaSource.endOfStream()`);\n      this.blockBuffers(() => {\n        this.getSourceBufferTypes().forEach((type) => {\n          const sb = this.sourceBuffer[type];\n          if (sb) {\n            sb.ending = false;\n          }\n        });\n        const {\n          mediaSource\n        } = this;\n        if (!mediaSource || mediaSource.readyState !== \"open\") {\n          if (mediaSource) {\n            this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${mediaSource.readyState}`);\n          }\n          return;\n        }\n        this.log(`Calling mediaSource.endOfStream()`);\n        mediaSource.endOfStream();\n      });\n    }\n  }\n  onLevelUpdated(event, {\n    details\n  }) {\n    if (!details.fragments.length) {\n      return;\n    }\n    this.details = details;\n    if (this.getSourceBufferTypes().length) {\n      this.blockBuffers(this.updateMediaElementDuration.bind(this));\n    } else {\n      this.updateMediaElementDuration();\n    }\n  }\n  trimBuffers() {\n    const {\n      hls,\n      details,\n      media\n    } = this;\n    if (!media || details === null) {\n      return;\n    }\n    const sourceBufferTypes = this.getSourceBufferTypes();\n    if (!sourceBufferTypes.length) {\n      return;\n    }\n    const config = hls.config;\n    const currentTime = media.currentTime;\n    const targetDuration = details.levelTargetDuration;\n    const backBufferLength = details.live && config.liveBackBufferLength !== null ? config.liveBackBufferLength : config.backBufferLength;\n    if (isFiniteNumber(backBufferLength) && backBufferLength > 0) {\n      const maxBackBufferLength = Math.max(backBufferLength, targetDuration);\n      const targetBackBufferPosition = Math.floor(currentTime / targetDuration) * targetDuration - maxBackBufferLength;\n      this.flushBackBuffer(currentTime, targetDuration, targetBackBufferPosition);\n    }\n    if (isFiniteNumber(config.frontBufferFlushThreshold) && config.frontBufferFlushThreshold > 0) {\n      const frontBufferLength = Math.max(config.maxBufferLength, config.frontBufferFlushThreshold);\n      const maxFrontBufferLength = Math.max(frontBufferLength, targetDuration);\n      const targetFrontBufferPosition = Math.floor(currentTime / targetDuration) * targetDuration + maxFrontBufferLength;\n      this.flushFrontBuffer(currentTime, targetDuration, targetFrontBufferPosition);\n    }\n  }\n  flushBackBuffer(currentTime, targetDuration, targetBackBufferPosition) {\n    const {\n      details,\n      sourceBuffer\n    } = this;\n    const sourceBufferTypes = this.getSourceBufferTypes();\n    sourceBufferTypes.forEach((type) => {\n      const sb = sourceBuffer[type];\n      if (sb) {\n        const buffered = BufferHelper.getBuffered(sb);\n        if (buffered.length > 0 && targetBackBufferPosition > buffered.start(0)) {\n          this.hls.trigger(Events.BACK_BUFFER_REACHED, {\n            bufferEnd: targetBackBufferPosition\n          });\n          if (details != null && details.live) {\n            this.hls.trigger(Events.LIVE_BACK_BUFFER_REACHED, {\n              bufferEnd: targetBackBufferPosition\n            });\n          } else if (sb.ended && buffered.end(buffered.length - 1) - currentTime < targetDuration * 2) {\n            this.log(`Cannot flush ${type} back buffer while SourceBuffer is in ended state`);\n            return;\n          }\n          this.hls.trigger(Events.BUFFER_FLUSHING, {\n            startOffset: 0,\n            endOffset: targetBackBufferPosition,\n            type\n          });\n        }\n      }\n    });\n  }\n  flushFrontBuffer(currentTime, targetDuration, targetFrontBufferPosition) {\n    const {\n      sourceBuffer\n    } = this;\n    const sourceBufferTypes = this.getSourceBufferTypes();\n    sourceBufferTypes.forEach((type) => {\n      const sb = sourceBuffer[type];\n      if (sb) {\n        const buffered = BufferHelper.getBuffered(sb);\n        const numBufferedRanges = buffered.length;\n        if (numBufferedRanges < 2) {\n          return;\n        }\n        const bufferStart = buffered.start(numBufferedRanges - 1);\n        const bufferEnd = buffered.end(numBufferedRanges - 1);\n        if (targetFrontBufferPosition > bufferStart || currentTime >= bufferStart && currentTime <= bufferEnd) {\n          return;\n        } else if (sb.ended && currentTime - bufferEnd < 2 * targetDuration) {\n          this.log(`Cannot flush ${type} front buffer while SourceBuffer is in ended state`);\n          return;\n        }\n        this.hls.trigger(Events.BUFFER_FLUSHING, {\n          startOffset: bufferStart,\n          endOffset: Infinity,\n          type\n        });\n      }\n    });\n  }\n  /**\n   * Update Media Source duration to current level duration or override to Infinity if configuration parameter\n   * 'liveDurationInfinity` is set to `true`\n   * More details: https://github.com/video-dev/hls.js/issues/355\n   */\n  updateMediaElementDuration() {\n    if (!this.details || !this.media || !this.mediaSource || this.mediaSource.readyState !== \"open\") {\n      return;\n    }\n    const {\n      details,\n      hls,\n      media,\n      mediaSource\n    } = this;\n    const levelDuration = details.fragments[0].start + details.totalduration;\n    const mediaDuration = media.duration;\n    const msDuration = isFiniteNumber(mediaSource.duration) ? mediaSource.duration : 0;\n    if (details.live && hls.config.liveDurationInfinity) {\n      mediaSource.duration = Infinity;\n      this.updateSeekableRange(details);\n    } else if (levelDuration > msDuration && levelDuration > mediaDuration || !isFiniteNumber(mediaDuration)) {\n      this.log(`Updating Media Source duration to ${levelDuration.toFixed(3)}`);\n      mediaSource.duration = levelDuration;\n    }\n  }\n  updateSeekableRange(levelDetails) {\n    const mediaSource = this.mediaSource;\n    const fragments = levelDetails.fragments;\n    const len = fragments.length;\n    if (len && levelDetails.live && mediaSource != null && mediaSource.setLiveSeekableRange) {\n      const start = Math.max(0, fragments[0].start);\n      const end = Math.max(start, start + levelDetails.totalduration);\n      this.log(`Media Source duration is set to ${mediaSource.duration}. Setting seekable range to ${start}-${end}.`);\n      mediaSource.setLiveSeekableRange(start, end);\n    }\n  }\n  checkPendingTracks() {\n    const {\n      bufferCodecEventsExpected,\n      operationQueue,\n      pendingTracks\n    } = this;\n    const pendingTracksCount = Object.keys(pendingTracks).length;\n    if (pendingTracksCount && (!bufferCodecEventsExpected || pendingTracksCount === 2 || \"audiovideo\" in pendingTracks)) {\n      this.createSourceBuffers(pendingTracks);\n      this.pendingTracks = {};\n      const buffers = this.getSourceBufferTypes();\n      if (buffers.length) {\n        this.hls.trigger(Events.BUFFER_CREATED, {\n          tracks: this.tracks\n        });\n        buffers.forEach((type) => {\n          operationQueue.executeNext(type);\n        });\n      } else {\n        const error = new Error(\"could not create source buffer for media codec(s)\");\n        this.hls.trigger(Events.ERROR, {\n          type: ErrorTypes.MEDIA_ERROR,\n          details: ErrorDetails.BUFFER_INCOMPATIBLE_CODECS_ERROR,\n          fatal: true,\n          error,\n          reason: error.message\n        });\n      }\n    }\n  }\n  createSourceBuffers(tracks) {\n    const {\n      sourceBuffer,\n      mediaSource\n    } = this;\n    if (!mediaSource) {\n      throw Error(\"createSourceBuffers called when mediaSource was null\");\n    }\n    for (const trackName in tracks) {\n      if (!sourceBuffer[trackName]) {\n        var _track$levelCodec;\n        const track = tracks[trackName];\n        if (!track) {\n          throw Error(`source buffer exists for track ${trackName}, however track does not`);\n        }\n        let codec = ((_track$levelCodec = track.levelCodec) == null ? void 0 : _track$levelCodec.indexOf(\",\")) === -1 ? track.levelCodec : track.codec;\n        if (codec) {\n          if (trackName.slice(0, 5) === \"audio\") {\n            codec = getCodecCompatibleName(codec, this.appendSource);\n          }\n        }\n        const mimeType = `${track.container};codecs=${codec}`;\n        this.log(`creating sourceBuffer(${mimeType})`);\n        try {\n          const sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType);\n          const sbName = trackName;\n          this.addBufferListener(sbName, \"updatestart\", this._onSBUpdateStart);\n          this.addBufferListener(sbName, \"updateend\", this._onSBUpdateEnd);\n          this.addBufferListener(sbName, \"error\", this._onSBUpdateError);\n          if (this.appendSource) {\n            this.addBufferListener(sbName, \"bufferedchange\", (type, event) => {\n              const removedRanges = event.removedRanges;\n              if (removedRanges != null && removedRanges.length) {\n                this.hls.trigger(Events.BUFFER_FLUSHED, {\n                  type: trackName\n                });\n              }\n            });\n          }\n          this.tracks[trackName] = {\n            buffer: sb,\n            codec,\n            container: track.container,\n            levelCodec: track.levelCodec,\n            metadata: track.metadata,\n            id: track.id\n          };\n        } catch (err) {\n          this.error(`error while trying to add sourceBuffer: ${err.message}`);\n          this.hls.trigger(Events.ERROR, {\n            type: ErrorTypes.MEDIA_ERROR,\n            details: ErrorDetails.BUFFER_ADD_CODEC_ERROR,\n            fatal: false,\n            error: err,\n            sourceBufferName: trackName,\n            mimeType\n          });\n        }\n      }\n    }\n  }\n  get mediaSrc() {\n    var _this$media, _this$media$querySele;\n    const media = ((_this$media = this.media) == null ? void 0 : (_this$media$querySele = _this$media.querySelector) == null ? void 0 : _this$media$querySele.call(_this$media, \"source\")) || this.media;\n    return media == null ? void 0 : media.src;\n  }\n  _onSBUpdateStart(type) {\n    const {\n      operationQueue\n    } = this;\n    const operation = operationQueue.current(type);\n    operation.onStart();\n  }\n  _onSBUpdateEnd(type) {\n    var _this$mediaSource2;\n    if (((_this$mediaSource2 = this.mediaSource) == null ? void 0 : _this$mediaSource2.readyState) === \"closed\") {\n      this.resetBuffer(type);\n      return;\n    }\n    const {\n      operationQueue\n    } = this;\n    const operation = operationQueue.current(type);\n    operation.onComplete();\n    operationQueue.shiftAndExecuteNext(type);\n  }\n  _onSBUpdateError(type, event) {\n    var _this$mediaSource3;\n    const error = new Error(`${type} SourceBuffer error. MediaSource readyState: ${(_this$mediaSource3 = this.mediaSource) == null ? void 0 : _this$mediaSource3.readyState}`);\n    this.error(`${error}`, event);\n    this.hls.trigger(Events.ERROR, {\n      type: ErrorTypes.MEDIA_ERROR,\n      details: ErrorDetails.BUFFER_APPENDING_ERROR,\n      sourceBufferName: type,\n      error,\n      fatal: false\n    });\n    const operation = this.operationQueue.current(type);\n    if (operation) {\n      operation.onError(error);\n    }\n  }\n  // This method must result in an updateend event; if remove is not called, _onSBUpdateEnd must be called manually\n  removeExecutor(type, startOffset, endOffset) {\n    const {\n      media,\n      mediaSource,\n      operationQueue,\n      sourceBuffer\n    } = this;\n    const sb = sourceBuffer[type];\n    if (!media || !mediaSource || !sb) {\n      this.warn(`Attempting to remove from the ${type} SourceBuffer, but it does not exist`);\n      operationQueue.shiftAndExecuteNext(type);\n      return;\n    }\n    const mediaDuration = isFiniteNumber(media.duration) ? media.duration : Infinity;\n    const msDuration = isFiniteNumber(mediaSource.duration) ? mediaSource.duration : Infinity;\n    const removeStart = Math.max(0, startOffset);\n    const removeEnd = Math.min(endOffset, mediaDuration, msDuration);\n    if (removeEnd > removeStart && (!sb.ending || sb.ended)) {\n      sb.ended = false;\n      this.log(`Removing [${removeStart},${removeEnd}] from the ${type} SourceBuffer`);\n      sb.remove(removeStart, removeEnd);\n    } else {\n      operationQueue.shiftAndExecuteNext(type);\n    }\n  }\n  // This method must result in an updateend event; if append is not called, _onSBUpdateEnd must be called manually\n  appendExecutor(data, type) {\n    const sb = this.sourceBuffer[type];\n    if (!sb) {\n      if (!this.pendingTracks[type]) {\n        throw new Error(`Attempting to append to the ${type} SourceBuffer, but it does not exist`);\n      }\n      return;\n    }\n    sb.ended = false;\n    sb.appendBuffer(data);\n  }\n  // Enqueues an operation to each SourceBuffer queue which, upon execution, resolves a promise. When all promises\n  // resolve, the onUnblocked function is executed. Functions calling this method do not need to unblock the queue\n  // upon completion, since we already do it here\n  blockBuffers(onUnblocked, buffers = this.getSourceBufferTypes()) {\n    if (!buffers.length) {\n      this.log(\"Blocking operation requested, but no SourceBuffers exist\");\n      Promise.resolve().then(onUnblocked);\n      return;\n    }\n    const {\n      operationQueue\n    } = this;\n    const blockingOperations = buffers.map((type) => operationQueue.appendBlocker(type));\n    Promise.all(blockingOperations).then(() => {\n      onUnblocked();\n      buffers.forEach((type) => {\n        const sb = this.sourceBuffer[type];\n        if (!(sb != null && sb.updating)) {\n          operationQueue.shiftAndExecuteNext(type);\n        }\n      });\n    });\n  }\n  getSourceBufferTypes() {\n    return Object.keys(this.sourceBuffer);\n  }\n  addBufferListener(type, event, fn) {\n    const buffer = this.sourceBuffer[type];\n    if (!buffer) {\n      return;\n    }\n    const listener = fn.bind(this, type);\n    this.listeners[type].push({\n      event,\n      listener\n    });\n    buffer.addEventListener(event, listener);\n  }\n  removeBufferListeners(type) {\n    const buffer = this.sourceBuffer[type];\n    if (!buffer) {\n      return;\n    }\n    this.listeners[type].forEach((l) => {\n      buffer.removeEventListener(l.event, l.listener);\n    });\n  }\n};\nfunction removeSourceChildren(node) {\n  const sourceChildren = node.querySelectorAll(\"source\");\n  [].slice.call(sourceChildren).forEach((source) => {\n    node.removeChild(source);\n  });\n}\nfunction addSource(media, url) {\n  const source = self.document.createElement(\"source\");\n  source.type = \"video/mp4\";\n  source.src = url;\n  media.appendChild(source);\n}\nvar specialCea608CharsCodes = {\n  42: 225,\n  // lowercase a, acute accent\n  92: 233,\n  // lowercase e, acute accent\n  94: 237,\n  // lowercase i, acute accent\n  95: 243,\n  // lowercase o, acute accent\n  96: 250,\n  // lowercase u, acute accent\n  123: 231,\n  // lowercase c with cedilla\n  124: 247,\n  // division symbol\n  125: 209,\n  // uppercase N tilde\n  126: 241,\n  // lowercase n tilde\n  127: 9608,\n  // Full block\n  // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n  // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F\n  // THIS MEANS THAT \\x50 MUST BE ADDED TO THE VALUES\n  128: 174,\n  // Registered symbol (R)\n  129: 176,\n  // degree sign\n  130: 189,\n  // 1/2 symbol\n  131: 191,\n  // Inverted (open) question mark\n  132: 8482,\n  // Trademark symbol (TM)\n  133: 162,\n  // Cents symbol\n  134: 163,\n  // Pounds sterling\n  135: 9834,\n  // Music 8'th note\n  136: 224,\n  // lowercase a, grave accent\n  137: 32,\n  // transparent space (regular)\n  138: 232,\n  // lowercase e, grave accent\n  139: 226,\n  // lowercase a, circumflex accent\n  140: 234,\n  // lowercase e, circumflex accent\n  141: 238,\n  // lowercase i, circumflex accent\n  142: 244,\n  // lowercase o, circumflex accent\n  143: 251,\n  // lowercase u, circumflex accent\n  // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n  // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F\n  144: 193,\n  // capital letter A with acute\n  145: 201,\n  // capital letter E with acute\n  146: 211,\n  // capital letter O with acute\n  147: 218,\n  // capital letter U with acute\n  148: 220,\n  // capital letter U with diaresis\n  149: 252,\n  // lowercase letter U with diaeresis\n  150: 8216,\n  // opening single quote\n  151: 161,\n  // inverted exclamation mark\n  152: 42,\n  // asterisk\n  153: 8217,\n  // closing single quote\n  154: 9473,\n  // box drawings heavy horizontal\n  155: 169,\n  // copyright sign\n  156: 8480,\n  // Service mark\n  157: 8226,\n  // (round) bullet\n  158: 8220,\n  // Left double quotation mark\n  159: 8221,\n  // Right double quotation mark\n  160: 192,\n  // uppercase A, grave accent\n  161: 194,\n  // uppercase A, circumflex\n  162: 199,\n  // uppercase C with cedilla\n  163: 200,\n  // uppercase E, grave accent\n  164: 202,\n  // uppercase E, circumflex\n  165: 203,\n  // capital letter E with diaresis\n  166: 235,\n  // lowercase letter e with diaresis\n  167: 206,\n  // uppercase I, circumflex\n  168: 207,\n  // uppercase I, with diaresis\n  169: 239,\n  // lowercase i, with diaresis\n  170: 212,\n  // uppercase O, circumflex\n  171: 217,\n  // uppercase U, grave accent\n  172: 249,\n  // lowercase u, grave accent\n  173: 219,\n  // uppercase U, circumflex\n  174: 171,\n  // left-pointing double angle quotation mark\n  175: 187,\n  // right-pointing double angle quotation mark\n  // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n  // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F\n  176: 195,\n  // Uppercase A, tilde\n  177: 227,\n  // Lowercase a, tilde\n  178: 205,\n  // Uppercase I, acute accent\n  179: 204,\n  // Uppercase I, grave accent\n  180: 236,\n  // Lowercase i, grave accent\n  181: 210,\n  // Uppercase O, grave accent\n  182: 242,\n  // Lowercase o, grave accent\n  183: 213,\n  // Uppercase O, tilde\n  184: 245,\n  // Lowercase o, tilde\n  185: 123,\n  // Open curly brace\n  186: 125,\n  // Closing curly brace\n  187: 92,\n  // Backslash\n  188: 94,\n  // Caret\n  189: 95,\n  // Underscore\n  190: 124,\n  // Pipe (vertical line)\n  191: 8764,\n  // Tilde operator\n  192: 196,\n  // Uppercase A, umlaut\n  193: 228,\n  // Lowercase A, umlaut\n  194: 214,\n  // Uppercase O, umlaut\n  195: 246,\n  // Lowercase o, umlaut\n  196: 223,\n  // Esszett (sharp S)\n  197: 165,\n  // Yen symbol\n  198: 164,\n  // Generic currency sign\n  199: 9475,\n  // Box drawings heavy vertical\n  200: 197,\n  // Uppercase A, ring\n  201: 229,\n  // Lowercase A, ring\n  202: 216,\n  // Uppercase O, stroke\n  203: 248,\n  // Lowercase o, strok\n  204: 9487,\n  // Box drawings heavy down and right\n  205: 9491,\n  // Box drawings heavy down and left\n  206: 9495,\n  // Box drawings heavy up and right\n  207: 9499\n  // Box drawings heavy up and left\n};\nvar getCharForByte = (byte) => String.fromCharCode(specialCea608CharsCodes[byte] || byte);\nvar NR_ROWS = 15;\nvar NR_COLS = 100;\nvar rowsLowCh1 = {\n  17: 1,\n  18: 3,\n  21: 5,\n  22: 7,\n  23: 9,\n  16: 11,\n  19: 12,\n  20: 14\n};\nvar rowsHighCh1 = {\n  17: 2,\n  18: 4,\n  21: 6,\n  22: 8,\n  23: 10,\n  19: 13,\n  20: 15\n};\nvar rowsLowCh2 = {\n  25: 1,\n  26: 3,\n  29: 5,\n  30: 7,\n  31: 9,\n  24: 11,\n  27: 12,\n  28: 14\n};\nvar rowsHighCh2 = {\n  25: 2,\n  26: 4,\n  29: 6,\n  30: 8,\n  31: 10,\n  27: 13,\n  28: 15\n};\nvar backgroundColors = [\"white\", \"green\", \"blue\", \"cyan\", \"red\", \"yellow\", \"magenta\", \"black\", \"transparent\"];\nvar CaptionsLogger = class {\n  constructor() {\n    this.time = null;\n    this.verboseLevel = 0;\n  }\n  log(severity, msg) {\n    if (this.verboseLevel >= severity) {\n      const m3 = typeof msg === \"function\" ? msg() : msg;\n      logger.log(`${this.time} [${severity}] ${m3}`);\n    }\n  }\n};\nvar numArrayToHexArray = function numArrayToHexArray2(numArray) {\n  const hexArray = [];\n  for (let j4 = 0; j4 < numArray.length; j4++) {\n    hexArray.push(numArray[j4].toString(16));\n  }\n  return hexArray;\n};\nvar PenState = class {\n  constructor() {\n    this.foreground = \"white\";\n    this.underline = false;\n    this.italics = false;\n    this.background = \"black\";\n    this.flash = false;\n  }\n  reset() {\n    this.foreground = \"white\";\n    this.underline = false;\n    this.italics = false;\n    this.background = \"black\";\n    this.flash = false;\n  }\n  setStyles(styles) {\n    const attribs = [\"foreground\", \"underline\", \"italics\", \"background\", \"flash\"];\n    for (let i2 = 0; i2 < attribs.length; i2++) {\n      const style = attribs[i2];\n      if (styles.hasOwnProperty(style)) {\n        this[style] = styles[style];\n      }\n    }\n  }\n  isDefault() {\n    return this.foreground === \"white\" && !this.underline && !this.italics && this.background === \"black\" && !this.flash;\n  }\n  equals(other) {\n    return this.foreground === other.foreground && this.underline === other.underline && this.italics === other.italics && this.background === other.background && this.flash === other.flash;\n  }\n  copy(newPenState) {\n    this.foreground = newPenState.foreground;\n    this.underline = newPenState.underline;\n    this.italics = newPenState.italics;\n    this.background = newPenState.background;\n    this.flash = newPenState.flash;\n  }\n  toString() {\n    return \"color=\" + this.foreground + \", underline=\" + this.underline + \", italics=\" + this.italics + \", background=\" + this.background + \", flash=\" + this.flash;\n  }\n};\nvar StyledUnicodeChar = class {\n  constructor() {\n    this.uchar = \" \";\n    this.penState = new PenState();\n  }\n  reset() {\n    this.uchar = \" \";\n    this.penState.reset();\n  }\n  setChar(uchar, newPenState) {\n    this.uchar = uchar;\n    this.penState.copy(newPenState);\n  }\n  setPenState(newPenState) {\n    this.penState.copy(newPenState);\n  }\n  equals(other) {\n    return this.uchar === other.uchar && this.penState.equals(other.penState);\n  }\n  copy(newChar) {\n    this.uchar = newChar.uchar;\n    this.penState.copy(newChar.penState);\n  }\n  isEmpty() {\n    return this.uchar === \" \" && this.penState.isDefault();\n  }\n};\nvar Row = class {\n  constructor(logger2) {\n    this.chars = [];\n    this.pos = 0;\n    this.currPenState = new PenState();\n    this.cueStartTime = null;\n    this.logger = void 0;\n    for (let i2 = 0; i2 < NR_COLS; i2++) {\n      this.chars.push(new StyledUnicodeChar());\n    }\n    this.logger = logger2;\n  }\n  equals(other) {\n    for (let i2 = 0; i2 < NR_COLS; i2++) {\n      if (!this.chars[i2].equals(other.chars[i2])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  copy(other) {\n    for (let i2 = 0; i2 < NR_COLS; i2++) {\n      this.chars[i2].copy(other.chars[i2]);\n    }\n  }\n  isEmpty() {\n    let empty = true;\n    for (let i2 = 0; i2 < NR_COLS; i2++) {\n      if (!this.chars[i2].isEmpty()) {\n        empty = false;\n        break;\n      }\n    }\n    return empty;\n  }\n  /**\n   *  Set the cursor to a valid column.\n   */\n  setCursor(absPos) {\n    if (this.pos !== absPos) {\n      this.pos = absPos;\n    }\n    if (this.pos < 0) {\n      this.logger.log(3, \"Negative cursor position \" + this.pos);\n      this.pos = 0;\n    } else if (this.pos > NR_COLS) {\n      this.logger.log(3, \"Too large cursor position \" + this.pos);\n      this.pos = NR_COLS;\n    }\n  }\n  /**\n   * Move the cursor relative to current position.\n   */\n  moveCursor(relPos) {\n    const newPos = this.pos + relPos;\n    if (relPos > 1) {\n      for (let i2 = this.pos + 1; i2 < newPos + 1; i2++) {\n        this.chars[i2].setPenState(this.currPenState);\n      }\n    }\n    this.setCursor(newPos);\n  }\n  /**\n   * Backspace, move one step back and clear character.\n   */\n  backSpace() {\n    this.moveCursor(-1);\n    this.chars[this.pos].setChar(\" \", this.currPenState);\n  }\n  insertChar(byte) {\n    if (byte >= 144) {\n      this.backSpace();\n    }\n    const char = getCharForByte(byte);\n    if (this.pos >= NR_COLS) {\n      this.logger.log(0, () => \"Cannot insert \" + byte.toString(16) + \" (\" + char + \") at position \" + this.pos + \". Skipping it!\");\n      return;\n    }\n    this.chars[this.pos].setChar(char, this.currPenState);\n    this.moveCursor(1);\n  }\n  clearFromPos(startPos) {\n    let i2;\n    for (i2 = startPos; i2 < NR_COLS; i2++) {\n      this.chars[i2].reset();\n    }\n  }\n  clear() {\n    this.clearFromPos(0);\n    this.pos = 0;\n    this.currPenState.reset();\n  }\n  clearToEndOfRow() {\n    this.clearFromPos(this.pos);\n  }\n  getTextString() {\n    const chars = [];\n    let empty = true;\n    for (let i2 = 0; i2 < NR_COLS; i2++) {\n      const char = this.chars[i2].uchar;\n      if (char !== \" \") {\n        empty = false;\n      }\n      chars.push(char);\n    }\n    if (empty) {\n      return \"\";\n    } else {\n      return chars.join(\"\");\n    }\n  }\n  setPenStyles(styles) {\n    this.currPenState.setStyles(styles);\n    const currChar = this.chars[this.pos];\n    currChar.setPenState(this.currPenState);\n  }\n};\nvar CaptionScreen = class {\n  constructor(logger2) {\n    this.rows = [];\n    this.currRow = NR_ROWS - 1;\n    this.nrRollUpRows = null;\n    this.lastOutputScreen = null;\n    this.logger = void 0;\n    for (let i2 = 0; i2 < NR_ROWS; i2++) {\n      this.rows.push(new Row(logger2));\n    }\n    this.logger = logger2;\n  }\n  reset() {\n    for (let i2 = 0; i2 < NR_ROWS; i2++) {\n      this.rows[i2].clear();\n    }\n    this.currRow = NR_ROWS - 1;\n  }\n  equals(other) {\n    let equal = true;\n    for (let i2 = 0; i2 < NR_ROWS; i2++) {\n      if (!this.rows[i2].equals(other.rows[i2])) {\n        equal = false;\n        break;\n      }\n    }\n    return equal;\n  }\n  copy(other) {\n    for (let i2 = 0; i2 < NR_ROWS; i2++) {\n      this.rows[i2].copy(other.rows[i2]);\n    }\n  }\n  isEmpty() {\n    let empty = true;\n    for (let i2 = 0; i2 < NR_ROWS; i2++) {\n      if (!this.rows[i2].isEmpty()) {\n        empty = false;\n        break;\n      }\n    }\n    return empty;\n  }\n  backSpace() {\n    const row = this.rows[this.currRow];\n    row.backSpace();\n  }\n  clearToEndOfRow() {\n    const row = this.rows[this.currRow];\n    row.clearToEndOfRow();\n  }\n  /**\n   * Insert a character (without styling) in the current row.\n   */\n  insertChar(char) {\n    const row = this.rows[this.currRow];\n    row.insertChar(char);\n  }\n  setPen(styles) {\n    const row = this.rows[this.currRow];\n    row.setPenStyles(styles);\n  }\n  moveCursor(relPos) {\n    const row = this.rows[this.currRow];\n    row.moveCursor(relPos);\n  }\n  setCursor(absPos) {\n    this.logger.log(2, \"setCursor: \" + absPos);\n    const row = this.rows[this.currRow];\n    row.setCursor(absPos);\n  }\n  setPAC(pacData) {\n    this.logger.log(2, () => \"pacData = \" + JSON.stringify(pacData));\n    let newRow = pacData.row - 1;\n    if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) {\n      newRow = this.nrRollUpRows - 1;\n    }\n    if (this.nrRollUpRows && this.currRow !== newRow) {\n      for (let i2 = 0; i2 < NR_ROWS; i2++) {\n        this.rows[i2].clear();\n      }\n      const topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n      const lastOutputScreen = this.lastOutputScreen;\n      if (lastOutputScreen) {\n        const prevLineTime = lastOutputScreen.rows[topRowIndex].cueStartTime;\n        const time = this.logger.time;\n        if (prevLineTime !== null && time !== null && prevLineTime < time) {\n          for (let i2 = 0; i2 < this.nrRollUpRows; i2++) {\n            this.rows[newRow - this.nrRollUpRows + i2 + 1].copy(lastOutputScreen.rows[topRowIndex + i2]);\n          }\n        }\n      }\n    }\n    this.currRow = newRow;\n    const row = this.rows[this.currRow];\n    if (pacData.indent !== null) {\n      const indent = pacData.indent;\n      const prevPos = Math.max(indent - 1, 0);\n      row.setCursor(pacData.indent);\n      pacData.color = row.chars[prevPos].penState.foreground;\n    }\n    const styles = {\n      foreground: pacData.color,\n      underline: pacData.underline,\n      italics: pacData.italics,\n      background: \"black\",\n      flash: false\n    };\n    this.setPen(styles);\n  }\n  /**\n   * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).\n   */\n  setBkgData(bkgData) {\n    this.logger.log(2, () => \"bkgData = \" + JSON.stringify(bkgData));\n    this.backSpace();\n    this.setPen(bkgData);\n    this.insertChar(32);\n  }\n  setRollUpRows(nrRows) {\n    this.nrRollUpRows = nrRows;\n  }\n  rollUp() {\n    if (this.nrRollUpRows === null) {\n      this.logger.log(3, \"roll_up but nrRollUpRows not set yet\");\n      return;\n    }\n    this.logger.log(1, () => this.getDisplayText());\n    const topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n    const topRow = this.rows.splice(topRowIndex, 1)[0];\n    topRow.clear();\n    this.rows.splice(this.currRow, 0, topRow);\n    this.logger.log(2, \"Rolling up\");\n  }\n  /**\n   * Get all non-empty rows with as unicode text.\n   */\n  getDisplayText(asOneRow) {\n    asOneRow = asOneRow || false;\n    const displayText = [];\n    let text = \"\";\n    let rowNr = -1;\n    for (let i2 = 0; i2 < NR_ROWS; i2++) {\n      const rowText = this.rows[i2].getTextString();\n      if (rowText) {\n        rowNr = i2 + 1;\n        if (asOneRow) {\n          displayText.push(\"Row \" + rowNr + \": '\" + rowText + \"'\");\n        } else {\n          displayText.push(rowText.trim());\n        }\n      }\n    }\n    if (displayText.length > 0) {\n      if (asOneRow) {\n        text = \"[\" + displayText.join(\" | \") + \"]\";\n      } else {\n        text = displayText.join(\"\\n\");\n      }\n    }\n    return text;\n  }\n  getTextAndFormat() {\n    return this.rows;\n  }\n};\nvar Cea608Channel = class {\n  constructor(channelNumber, outputFilter, logger2) {\n    this.chNr = void 0;\n    this.outputFilter = void 0;\n    this.mode = void 0;\n    this.verbose = void 0;\n    this.displayedMemory = void 0;\n    this.nonDisplayedMemory = void 0;\n    this.lastOutputScreen = void 0;\n    this.currRollUpRow = void 0;\n    this.writeScreen = void 0;\n    this.cueStartTime = void 0;\n    this.logger = void 0;\n    this.chNr = channelNumber;\n    this.outputFilter = outputFilter;\n    this.mode = null;\n    this.verbose = 0;\n    this.displayedMemory = new CaptionScreen(logger2);\n    this.nonDisplayedMemory = new CaptionScreen(logger2);\n    this.lastOutputScreen = new CaptionScreen(logger2);\n    this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n    this.writeScreen = this.displayedMemory;\n    this.mode = null;\n    this.cueStartTime = null;\n    this.logger = logger2;\n  }\n  reset() {\n    this.mode = null;\n    this.displayedMemory.reset();\n    this.nonDisplayedMemory.reset();\n    this.lastOutputScreen.reset();\n    this.outputFilter.reset();\n    this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n    this.writeScreen = this.displayedMemory;\n    this.mode = null;\n    this.cueStartTime = null;\n  }\n  getHandler() {\n    return this.outputFilter;\n  }\n  setHandler(newHandler) {\n    this.outputFilter = newHandler;\n  }\n  setPAC(pacData) {\n    this.writeScreen.setPAC(pacData);\n  }\n  setBkgData(bkgData) {\n    this.writeScreen.setBkgData(bkgData);\n  }\n  setMode(newMode) {\n    if (newMode === this.mode) {\n      return;\n    }\n    this.mode = newMode;\n    this.logger.log(2, () => \"MODE=\" + newMode);\n    if (this.mode === \"MODE_POP-ON\") {\n      this.writeScreen = this.nonDisplayedMemory;\n    } else {\n      this.writeScreen = this.displayedMemory;\n      this.writeScreen.reset();\n    }\n    if (this.mode !== \"MODE_ROLL-UP\") {\n      this.displayedMemory.nrRollUpRows = null;\n      this.nonDisplayedMemory.nrRollUpRows = null;\n    }\n    this.mode = newMode;\n  }\n  insertChars(chars) {\n    for (let i2 = 0; i2 < chars.length; i2++) {\n      this.writeScreen.insertChar(chars[i2]);\n    }\n    const screen = this.writeScreen === this.displayedMemory ? \"DISP\" : \"NON_DISP\";\n    this.logger.log(2, () => screen + \": \" + this.writeScreen.getDisplayText(true));\n    if (this.mode === \"MODE_PAINT-ON\" || this.mode === \"MODE_ROLL-UP\") {\n      this.logger.log(1, () => \"DISPLAYED: \" + this.displayedMemory.getDisplayText(true));\n      this.outputDataUpdate();\n    }\n  }\n  ccRCL() {\n    this.logger.log(2, \"RCL - Resume Caption Loading\");\n    this.setMode(\"MODE_POP-ON\");\n  }\n  ccBS() {\n    this.logger.log(2, \"BS - BackSpace\");\n    if (this.mode === \"MODE_TEXT\") {\n      return;\n    }\n    this.writeScreen.backSpace();\n    if (this.writeScreen === this.displayedMemory) {\n      this.outputDataUpdate();\n    }\n  }\n  ccAOF() {\n  }\n  ccAON() {\n  }\n  ccDER() {\n    this.logger.log(2, \"DER- Delete to End of Row\");\n    this.writeScreen.clearToEndOfRow();\n    this.outputDataUpdate();\n  }\n  ccRU(nrRows) {\n    this.logger.log(2, \"RU(\" + nrRows + \") - Roll Up\");\n    this.writeScreen = this.displayedMemory;\n    this.setMode(\"MODE_ROLL-UP\");\n    this.writeScreen.setRollUpRows(nrRows);\n  }\n  ccFON() {\n    this.logger.log(2, \"FON - Flash On\");\n    this.writeScreen.setPen({\n      flash: true\n    });\n  }\n  ccRDC() {\n    this.logger.log(2, \"RDC - Resume Direct Captioning\");\n    this.setMode(\"MODE_PAINT-ON\");\n  }\n  ccTR() {\n    this.logger.log(2, \"TR\");\n    this.setMode(\"MODE_TEXT\");\n  }\n  ccRTD() {\n    this.logger.log(2, \"RTD\");\n    this.setMode(\"MODE_TEXT\");\n  }\n  ccEDM() {\n    this.logger.log(2, \"EDM - Erase Displayed Memory\");\n    this.displayedMemory.reset();\n    this.outputDataUpdate(true);\n  }\n  ccCR() {\n    this.logger.log(2, \"CR - Carriage Return\");\n    this.writeScreen.rollUp();\n    this.outputDataUpdate(true);\n  }\n  ccENM() {\n    this.logger.log(2, \"ENM - Erase Non-displayed Memory\");\n    this.nonDisplayedMemory.reset();\n  }\n  ccEOC() {\n    this.logger.log(2, \"EOC - End Of Caption\");\n    if (this.mode === \"MODE_POP-ON\") {\n      const tmp = this.displayedMemory;\n      this.displayedMemory = this.nonDisplayedMemory;\n      this.nonDisplayedMemory = tmp;\n      this.writeScreen = this.nonDisplayedMemory;\n      this.logger.log(1, () => \"DISP: \" + this.displayedMemory.getDisplayText());\n    }\n    this.outputDataUpdate(true);\n  }\n  ccTO(nrCols) {\n    this.logger.log(2, \"TO(\" + nrCols + \") - Tab Offset\");\n    this.writeScreen.moveCursor(nrCols);\n  }\n  ccMIDROW(secondByte) {\n    const styles = {\n      flash: false\n    };\n    styles.underline = secondByte % 2 === 1;\n    styles.italics = secondByte >= 46;\n    if (!styles.italics) {\n      const colorIndex = Math.floor(secondByte / 2) - 16;\n      const colors = [\"white\", \"green\", \"blue\", \"cyan\", \"red\", \"yellow\", \"magenta\"];\n      styles.foreground = colors[colorIndex];\n    } else {\n      styles.foreground = \"white\";\n    }\n    this.logger.log(2, \"MIDROW: \" + JSON.stringify(styles));\n    this.writeScreen.setPen(styles);\n  }\n  outputDataUpdate(dispatch = false) {\n    const time = this.logger.time;\n    if (time === null) {\n      return;\n    }\n    if (this.outputFilter) {\n      if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) {\n        this.cueStartTime = time;\n      } else {\n        if (!this.displayedMemory.equals(this.lastOutputScreen)) {\n          this.outputFilter.newCue(this.cueStartTime, time, this.lastOutputScreen);\n          if (dispatch && this.outputFilter.dispatchCue) {\n            this.outputFilter.dispatchCue();\n          }\n          this.cueStartTime = this.displayedMemory.isEmpty() ? null : time;\n        }\n      }\n      this.lastOutputScreen.copy(this.displayedMemory);\n    }\n  }\n  cueSplitAtTime(t2) {\n    if (this.outputFilter) {\n      if (!this.displayedMemory.isEmpty()) {\n        if (this.outputFilter.newCue) {\n          this.outputFilter.newCue(this.cueStartTime, t2, this.displayedMemory);\n        }\n        this.cueStartTime = t2;\n      }\n    }\n  }\n};\nvar Cea608Parser = class {\n  constructor(field, out1, out2) {\n    this.channels = void 0;\n    this.currentChannel = 0;\n    this.cmdHistory = createCmdHistory();\n    this.logger = void 0;\n    const logger2 = this.logger = new CaptionsLogger();\n    this.channels = [null, new Cea608Channel(field, out1, logger2), new Cea608Channel(field + 1, out2, logger2)];\n  }\n  getHandler(channel) {\n    return this.channels[channel].getHandler();\n  }\n  setHandler(channel, newHandler) {\n    this.channels[channel].setHandler(newHandler);\n  }\n  /**\n   * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\n   */\n  addData(time, byteList) {\n    this.logger.time = time;\n    for (let i2 = 0; i2 < byteList.length; i2 += 2) {\n      const a2 = byteList[i2] & 127;\n      const b4 = byteList[i2 + 1] & 127;\n      let cmdFound = false;\n      let charsFound = null;\n      if (a2 === 0 && b4 === 0) {\n        continue;\n      } else {\n        this.logger.log(3, () => \"[\" + numArrayToHexArray([byteList[i2], byteList[i2 + 1]]) + \"] -> (\" + numArrayToHexArray([a2, b4]) + \")\");\n      }\n      const cmdHistory = this.cmdHistory;\n      const isControlCode = a2 >= 16 && a2 <= 31;\n      if (isControlCode) {\n        if (hasCmdRepeated(a2, b4, cmdHistory)) {\n          setLastCmd(null, null, cmdHistory);\n          this.logger.log(3, () => \"Repeated command (\" + numArrayToHexArray([a2, b4]) + \") is dropped\");\n          continue;\n        }\n        setLastCmd(a2, b4, this.cmdHistory);\n        cmdFound = this.parseCmd(a2, b4);\n        if (!cmdFound) {\n          cmdFound = this.parseMidrow(a2, b4);\n        }\n        if (!cmdFound) {\n          cmdFound = this.parsePAC(a2, b4);\n        }\n        if (!cmdFound) {\n          cmdFound = this.parseBackgroundAttributes(a2, b4);\n        }\n      } else {\n        setLastCmd(null, null, cmdHistory);\n      }\n      if (!cmdFound) {\n        charsFound = this.parseChars(a2, b4);\n        if (charsFound) {\n          const currChNr = this.currentChannel;\n          if (currChNr && currChNr > 0) {\n            const channel = this.channels[currChNr];\n            channel.insertChars(charsFound);\n          } else {\n            this.logger.log(2, \"No channel found yet. TEXT-MODE?\");\n          }\n        }\n      }\n      if (!cmdFound && !charsFound) {\n        this.logger.log(2, () => \"Couldn't parse cleaned data \" + numArrayToHexArray([a2, b4]) + \" orig: \" + numArrayToHexArray([byteList[i2], byteList[i2 + 1]]));\n      }\n    }\n  }\n  /**\n   * Parse Command.\n   * @returns True if a command was found\n   */\n  parseCmd(a2, b4) {\n    const cond1 = (a2 === 20 || a2 === 28 || a2 === 21 || a2 === 29) && b4 >= 32 && b4 <= 47;\n    const cond2 = (a2 === 23 || a2 === 31) && b4 >= 33 && b4 <= 35;\n    if (!(cond1 || cond2)) {\n      return false;\n    }\n    const chNr = a2 === 20 || a2 === 21 || a2 === 23 ? 1 : 2;\n    const channel = this.channels[chNr];\n    if (a2 === 20 || a2 === 21 || a2 === 28 || a2 === 29) {\n      if (b4 === 32) {\n        channel.ccRCL();\n      } else if (b4 === 33) {\n        channel.ccBS();\n      } else if (b4 === 34) {\n        channel.ccAOF();\n      } else if (b4 === 35) {\n        channel.ccAON();\n      } else if (b4 === 36) {\n        channel.ccDER();\n      } else if (b4 === 37) {\n        channel.ccRU(2);\n      } else if (b4 === 38) {\n        channel.ccRU(3);\n      } else if (b4 === 39) {\n        channel.ccRU(4);\n      } else if (b4 === 40) {\n        channel.ccFON();\n      } else if (b4 === 41) {\n        channel.ccRDC();\n      } else if (b4 === 42) {\n        channel.ccTR();\n      } else if (b4 === 43) {\n        channel.ccRTD();\n      } else if (b4 === 44) {\n        channel.ccEDM();\n      } else if (b4 === 45) {\n        channel.ccCR();\n      } else if (b4 === 46) {\n        channel.ccENM();\n      } else if (b4 === 47) {\n        channel.ccEOC();\n      }\n    } else {\n      channel.ccTO(b4 - 32);\n    }\n    this.currentChannel = chNr;\n    return true;\n  }\n  /**\n   * Parse midrow styling command\n   */\n  parseMidrow(a2, b4) {\n    let chNr = 0;\n    if ((a2 === 17 || a2 === 25) && b4 >= 32 && b4 <= 47) {\n      if (a2 === 17) {\n        chNr = 1;\n      } else {\n        chNr = 2;\n      }\n      if (chNr !== this.currentChannel) {\n        this.logger.log(0, \"Mismatch channel in midrow parsing\");\n        return false;\n      }\n      const channel = this.channels[chNr];\n      if (!channel) {\n        return false;\n      }\n      channel.ccMIDROW(b4);\n      this.logger.log(3, () => \"MIDROW (\" + numArrayToHexArray([a2, b4]) + \")\");\n      return true;\n    }\n    return false;\n  }\n  /**\n   * Parse Preable Access Codes (Table 53).\n   * @returns {Boolean} Tells if PAC found\n   */\n  parsePAC(a2, b4) {\n    let row;\n    const case1 = (a2 >= 17 && a2 <= 23 || a2 >= 25 && a2 <= 31) && b4 >= 64 && b4 <= 127;\n    const case2 = (a2 === 16 || a2 === 24) && b4 >= 64 && b4 <= 95;\n    if (!(case1 || case2)) {\n      return false;\n    }\n    const chNr = a2 <= 23 ? 1 : 2;\n    if (b4 >= 64 && b4 <= 95) {\n      row = chNr === 1 ? rowsLowCh1[a2] : rowsLowCh2[a2];\n    } else {\n      row = chNr === 1 ? rowsHighCh1[a2] : rowsHighCh2[a2];\n    }\n    const channel = this.channels[chNr];\n    if (!channel) {\n      return false;\n    }\n    channel.setPAC(this.interpretPAC(row, b4));\n    this.currentChannel = chNr;\n    return true;\n  }\n  /**\n   * Interpret the second byte of the pac, and return the information.\n   * @returns pacData with style parameters\n   */\n  interpretPAC(row, byte) {\n    let pacIndex;\n    const pacData = {\n      color: null,\n      italics: false,\n      indent: null,\n      underline: false,\n      row\n    };\n    if (byte > 95) {\n      pacIndex = byte - 96;\n    } else {\n      pacIndex = byte - 64;\n    }\n    pacData.underline = (pacIndex & 1) === 1;\n    if (pacIndex <= 13) {\n      pacData.color = [\"white\", \"green\", \"blue\", \"cyan\", \"red\", \"yellow\", \"magenta\", \"white\"][Math.floor(pacIndex / 2)];\n    } else if (pacIndex <= 15) {\n      pacData.italics = true;\n      pacData.color = \"white\";\n    } else {\n      pacData.indent = Math.floor((pacIndex - 16) / 2) * 4;\n    }\n    return pacData;\n  }\n  /**\n   * Parse characters.\n   * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\n   */\n  parseChars(a2, b4) {\n    let channelNr;\n    let charCodes = null;\n    let charCode1 = null;\n    if (a2 >= 25) {\n      channelNr = 2;\n      charCode1 = a2 - 8;\n    } else {\n      channelNr = 1;\n      charCode1 = a2;\n    }\n    if (charCode1 >= 17 && charCode1 <= 19) {\n      let oneCode;\n      if (charCode1 === 17) {\n        oneCode = b4 + 80;\n      } else if (charCode1 === 18) {\n        oneCode = b4 + 112;\n      } else {\n        oneCode = b4 + 144;\n      }\n      this.logger.log(2, () => \"Special char '\" + getCharForByte(oneCode) + \"' in channel \" + channelNr);\n      charCodes = [oneCode];\n    } else if (a2 >= 32 && a2 <= 127) {\n      charCodes = b4 === 0 ? [a2] : [a2, b4];\n    }\n    if (charCodes) {\n      this.logger.log(3, () => \"Char codes =  \" + numArrayToHexArray(charCodes).join(\",\"));\n    }\n    return charCodes;\n  }\n  /**\n   * Parse extended background attributes as well as new foreground color black.\n   * @returns True if background attributes are found\n   */\n  parseBackgroundAttributes(a2, b4) {\n    const case1 = (a2 === 16 || a2 === 24) && b4 >= 32 && b4 <= 47;\n    const case2 = (a2 === 23 || a2 === 31) && b4 >= 45 && b4 <= 47;\n    if (!(case1 || case2)) {\n      return false;\n    }\n    let index;\n    const bkgData = {};\n    if (a2 === 16 || a2 === 24) {\n      index = Math.floor((b4 - 32) / 2);\n      bkgData.background = backgroundColors[index];\n      if (b4 % 2 === 1) {\n        bkgData.background = bkgData.background + \"_semi\";\n      }\n    } else if (b4 === 45) {\n      bkgData.background = \"transparent\";\n    } else {\n      bkgData.foreground = \"black\";\n      if (b4 === 47) {\n        bkgData.underline = true;\n      }\n    }\n    const chNr = a2 <= 23 ? 1 : 2;\n    const channel = this.channels[chNr];\n    channel.setBkgData(bkgData);\n    return true;\n  }\n  /**\n   * Reset state of parser and its channels.\n   */\n  reset() {\n    for (let i2 = 0; i2 < Object.keys(this.channels).length; i2++) {\n      const channel = this.channels[i2];\n      if (channel) {\n        channel.reset();\n      }\n    }\n    setLastCmd(null, null, this.cmdHistory);\n  }\n  /**\n   * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.\n   */\n  cueSplitAtTime(t2) {\n    for (let i2 = 0; i2 < this.channels.length; i2++) {\n      const channel = this.channels[i2];\n      if (channel) {\n        channel.cueSplitAtTime(t2);\n      }\n    }\n  }\n};\nfunction setLastCmd(a2, b4, cmdHistory) {\n  cmdHistory.a = a2;\n  cmdHistory.b = b4;\n}\nfunction hasCmdRepeated(a2, b4, cmdHistory) {\n  return cmdHistory.a === a2 && cmdHistory.b === b4;\n}\nfunction createCmdHistory() {\n  return {\n    a: null,\n    b: null\n  };\n}\nvar OutputFilter = class {\n  constructor(timelineController, trackName) {\n    this.timelineController = void 0;\n    this.cueRanges = [];\n    this.trackName = void 0;\n    this.startTime = null;\n    this.endTime = null;\n    this.screen = null;\n    this.timelineController = timelineController;\n    this.trackName = trackName;\n  }\n  dispatchCue() {\n    if (this.startTime === null) {\n      return;\n    }\n    this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen, this.cueRanges);\n    this.startTime = null;\n  }\n  newCue(startTime, endTime, screen) {\n    if (this.startTime === null || this.startTime > startTime) {\n      this.startTime = startTime;\n    }\n    this.endTime = endTime;\n    this.screen = screen;\n    this.timelineController.createCaptionsTrack(this.trackName);\n  }\n  reset() {\n    this.cueRanges = [];\n    this.startTime = null;\n  }\n};\nvar VTTCue2 = function() {\n  if (optionalSelf != null && optionalSelf.VTTCue) {\n    return self.VTTCue;\n  }\n  const AllowedDirections = [\"\", \"lr\", \"rl\"];\n  const AllowedAlignments = [\"start\", \"middle\", \"end\", \"left\", \"right\"];\n  function isAllowedValue(allowed, value) {\n    if (typeof value !== \"string\") {\n      return false;\n    }\n    if (!Array.isArray(allowed)) {\n      return false;\n    }\n    const lcValue = value.toLowerCase();\n    if (~allowed.indexOf(lcValue)) {\n      return lcValue;\n    }\n    return false;\n  }\n  function findDirectionSetting(value) {\n    return isAllowedValue(AllowedDirections, value);\n  }\n  function findAlignSetting(value) {\n    return isAllowedValue(AllowedAlignments, value);\n  }\n  function extend(obj, ...rest) {\n    let i2 = 1;\n    for (; i2 < arguments.length; i2++) {\n      const cobj = arguments[i2];\n      for (const p3 in cobj) {\n        obj[p3] = cobj[p3];\n      }\n    }\n    return obj;\n  }\n  function VTTCue3(startTime, endTime, text) {\n    const cue = this;\n    const baseObj = {\n      enumerable: true\n    };\n    cue.hasBeenReset = false;\n    let _id2 = \"\";\n    let _pauseOnExit = false;\n    let _startTime2 = startTime;\n    let _endTime = endTime;\n    let _text = text;\n    let _region = null;\n    let _vertical = \"\";\n    let _snapToLines = true;\n    let _line = \"auto\";\n    let _lineAlign = \"start\";\n    let _position = 50;\n    let _positionAlign = \"middle\";\n    let _size = 50;\n    let _align = \"middle\";\n    Object.defineProperty(cue, \"id\", extend({}, baseObj, {\n      get: function() {\n        return _id2;\n      },\n      set: function(value) {\n        _id2 = \"\" + value;\n      }\n    }));\n    Object.defineProperty(cue, \"pauseOnExit\", extend({}, baseObj, {\n      get: function() {\n        return _pauseOnExit;\n      },\n      set: function(value) {\n        _pauseOnExit = !!value;\n      }\n    }));\n    Object.defineProperty(cue, \"startTime\", extend({}, baseObj, {\n      get: function() {\n        return _startTime2;\n      },\n      set: function(value) {\n        if (typeof value !== \"number\") {\n          throw new TypeError(\"Start time must be set to a number.\");\n        }\n        _startTime2 = value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"endTime\", extend({}, baseObj, {\n      get: function() {\n        return _endTime;\n      },\n      set: function(value) {\n        if (typeof value !== \"number\") {\n          throw new TypeError(\"End time must be set to a number.\");\n        }\n        _endTime = value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"text\", extend({}, baseObj, {\n      get: function() {\n        return _text;\n      },\n      set: function(value) {\n        _text = \"\" + value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"region\", extend({}, baseObj, {\n      get: function() {\n        return _region;\n      },\n      set: function(value) {\n        _region = value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"vertical\", extend({}, baseObj, {\n      get: function() {\n        return _vertical;\n      },\n      set: function(value) {\n        const setting = findDirectionSetting(value);\n        if (setting === false) {\n          throw new SyntaxError(\"An invalid or illegal string was specified.\");\n        }\n        _vertical = setting;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"snapToLines\", extend({}, baseObj, {\n      get: function() {\n        return _snapToLines;\n      },\n      set: function(value) {\n        _snapToLines = !!value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"line\", extend({}, baseObj, {\n      get: function() {\n        return _line;\n      },\n      set: function(value) {\n        if (typeof value !== \"number\" && value !== \"auto\") {\n          throw new SyntaxError(\"An invalid number or illegal string was specified.\");\n        }\n        _line = value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"lineAlign\", extend({}, baseObj, {\n      get: function() {\n        return _lineAlign;\n      },\n      set: function(value) {\n        const setting = findAlignSetting(value);\n        if (!setting) {\n          throw new SyntaxError(\"An invalid or illegal string was specified.\");\n        }\n        _lineAlign = setting;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"position\", extend({}, baseObj, {\n      get: function() {\n        return _position;\n      },\n      set: function(value) {\n        if (value < 0 || value > 100) {\n          throw new Error(\"Position must be between 0 and 100.\");\n        }\n        _position = value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"positionAlign\", extend({}, baseObj, {\n      get: function() {\n        return _positionAlign;\n      },\n      set: function(value) {\n        const setting = findAlignSetting(value);\n        if (!setting) {\n          throw new SyntaxError(\"An invalid or illegal string was specified.\");\n        }\n        _positionAlign = setting;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"size\", extend({}, baseObj, {\n      get: function() {\n        return _size;\n      },\n      set: function(value) {\n        if (value < 0 || value > 100) {\n          throw new Error(\"Size must be between 0 and 100.\");\n        }\n        _size = value;\n        this.hasBeenReset = true;\n      }\n    }));\n    Object.defineProperty(cue, \"align\", extend({}, baseObj, {\n      get: function() {\n        return _align;\n      },\n      set: function(value) {\n        const setting = findAlignSetting(value);\n        if (!setting) {\n          throw new SyntaxError(\"An invalid or illegal string was specified.\");\n        }\n        _align = setting;\n        this.hasBeenReset = true;\n      }\n    }));\n    cue.displayState = void 0;\n  }\n  VTTCue3.prototype.getCueAsHTML = function() {\n    const WebVTT = self.WebVTT;\n    return WebVTT.convertCueToDOMTree(self, this.text);\n  };\n  return VTTCue3;\n}();\nvar StringDecoder = class {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  decode(data, options) {\n    if (!data) {\n      return \"\";\n    }\n    if (typeof data !== \"string\") {\n      throw new Error(\"Error - expected string data.\");\n    }\n    return decodeURIComponent(encodeURIComponent(data));\n  }\n};\nfunction parseTimeStamp(input) {\n  function computeSeconds(h3, m4, s, f) {\n    return (h3 | 0) * 3600 + (m4 | 0) * 60 + (s | 0) + parseFloat(f || 0);\n  }\n  const m3 = input.match(/^(?:(\\d+):)?(\\d{2}):(\\d{2})(\\.\\d+)?/);\n  if (!m3) {\n    return null;\n  }\n  if (parseFloat(m3[2]) > 59) {\n    return computeSeconds(m3[2], m3[3], 0, m3[4]);\n  }\n  return computeSeconds(m3[1], m3[2], m3[3], m3[4]);\n}\nvar Settings = class {\n  constructor() {\n    this.values = /* @__PURE__ */ Object.create(null);\n  }\n  // Only accept the first assignment to any key.\n  set(k3, v4) {\n    if (!this.get(k3) && v4 !== \"\") {\n      this.values[k3] = v4;\n    }\n  }\n  // Return the value for a key, or a default value.\n  // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n  // a number of possible default values as properties where 'defaultKey' is\n  // the key of the property that will be chosen; otherwise it's assumed to be\n  // a single value.\n  get(k3, dflt, defaultKey) {\n    if (defaultKey) {\n      return this.has(k3) ? this.values[k3] : dflt[defaultKey];\n    }\n    return this.has(k3) ? this.values[k3] : dflt;\n  }\n  // Check whether we have a value for a key.\n  has(k3) {\n    return k3 in this.values;\n  }\n  // Accept a setting if its one of the given alternatives.\n  alt(k3, v4, a2) {\n    for (let n2 = 0; n2 < a2.length; ++n2) {\n      if (v4 === a2[n2]) {\n        this.set(k3, v4);\n        break;\n      }\n    }\n  }\n  // Accept a setting if its a valid (signed) integer.\n  integer(k3, v4) {\n    if (/^-?\\d+$/.test(v4)) {\n      this.set(k3, parseInt(v4, 10));\n    }\n  }\n  // Accept a setting if its a valid percentage.\n  percent(k3, v4) {\n    if (/^([\\d]{1,3})(\\.[\\d]*)?%$/.test(v4)) {\n      const percent = parseFloat(v4);\n      if (percent >= 0 && percent <= 100) {\n        this.set(k3, percent);\n        return true;\n      }\n    }\n    return false;\n  }\n};\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n  const groups = groupDelim ? input.split(groupDelim) : [input];\n  for (const i2 in groups) {\n    if (typeof groups[i2] !== \"string\") {\n      continue;\n    }\n    const kv = groups[i2].split(keyValueDelim);\n    if (kv.length !== 2) {\n      continue;\n    }\n    const k3 = kv[0];\n    const v4 = kv[1];\n    callback(k3, v4);\n  }\n}\nvar defaults = new VTTCue2(0, 0, \"\");\nvar center = defaults.align === \"middle\" ? \"middle\" : \"center\";\nfunction parseCue(input, cue, regionList) {\n  const oInput = input;\n  function consumeTimeStamp() {\n    const ts = parseTimeStamp(input);\n    if (ts === null) {\n      throw new Error(\"Malformed timestamp: \" + oInput);\n    }\n    input = input.replace(/^[^\\sa-zA-Z-]+/, \"\");\n    return ts;\n  }\n  function consumeCueSettings(input2, cue2) {\n    const settings = new Settings();\n    parseOptions(input2, function(k3, v4) {\n      let vals;\n      switch (k3) {\n        case \"region\":\n          for (let i2 = regionList.length - 1; i2 >= 0; i2--) {\n            if (regionList[i2].id === v4) {\n              settings.set(k3, regionList[i2].region);\n              break;\n            }\n          }\n          break;\n        case \"vertical\":\n          settings.alt(k3, v4, [\"rl\", \"lr\"]);\n          break;\n        case \"line\":\n          vals = v4.split(\",\");\n          settings.integer(k3, vals[0]);\n          if (settings.percent(k3, vals[0])) {\n            settings.set(\"snapToLines\", false);\n          }\n          settings.alt(k3, vals[0], [\"auto\"]);\n          if (vals.length === 2) {\n            settings.alt(\"lineAlign\", vals[1], [\"start\", center, \"end\"]);\n          }\n          break;\n        case \"position\":\n          vals = v4.split(\",\");\n          settings.percent(k3, vals[0]);\n          if (vals.length === 2) {\n            settings.alt(\"positionAlign\", vals[1], [\"start\", center, \"end\", \"line-left\", \"line-right\", \"auto\"]);\n          }\n          break;\n        case \"size\":\n          settings.percent(k3, v4);\n          break;\n        case \"align\":\n          settings.alt(k3, v4, [\"start\", center, \"end\", \"left\", \"right\"]);\n          break;\n      }\n    }, /:/, /\\s/);\n    cue2.region = settings.get(\"region\", null);\n    cue2.vertical = settings.get(\"vertical\", \"\");\n    let line = settings.get(\"line\", \"auto\");\n    if (line === \"auto\" && defaults.line === -1) {\n      line = -1;\n    }\n    cue2.line = line;\n    cue2.lineAlign = settings.get(\"lineAlign\", \"start\");\n    cue2.snapToLines = settings.get(\"snapToLines\", true);\n    cue2.size = settings.get(\"size\", 100);\n    cue2.align = settings.get(\"align\", center);\n    let position = settings.get(\"position\", \"auto\");\n    if (position === \"auto\" && defaults.position === 50) {\n      position = cue2.align === \"start\" || cue2.align === \"left\" ? 0 : cue2.align === \"end\" || cue2.align === \"right\" ? 100 : 50;\n    }\n    cue2.position = position;\n  }\n  function skipWhitespace() {\n    input = input.replace(/^\\s+/, \"\");\n  }\n  skipWhitespace();\n  cue.startTime = consumeTimeStamp();\n  skipWhitespace();\n  if (input.slice(0, 3) !== \"-->\") {\n    throw new Error(\"Malformed time stamp (time stamps must be separated by '-->'): \" + oInput);\n  }\n  input = input.slice(3);\n  skipWhitespace();\n  cue.endTime = consumeTimeStamp();\n  skipWhitespace();\n  consumeCueSettings(input, cue);\n}\nfunction fixLineBreaks(input) {\n  return input.replace(/<br(?: \\/)?>/gi, \"\\n\");\n}\nvar VTTParser = class {\n  constructor() {\n    this.state = \"INITIAL\";\n    this.buffer = \"\";\n    this.decoder = new StringDecoder();\n    this.regionList = [];\n    this.cue = null;\n    this.oncue = void 0;\n    this.onparsingerror = void 0;\n    this.onflush = void 0;\n  }\n  parse(data) {\n    const _this = this;\n    if (data) {\n      _this.buffer += _this.decoder.decode(data, {\n        stream: true\n      });\n    }\n    function collectNextLine() {\n      let buffer = _this.buffer;\n      let pos = 0;\n      buffer = fixLineBreaks(buffer);\n      while (pos < buffer.length && buffer[pos] !== \"\\r\" && buffer[pos] !== \"\\n\") {\n        ++pos;\n      }\n      const line = buffer.slice(0, pos);\n      if (buffer[pos] === \"\\r\") {\n        ++pos;\n      }\n      if (buffer[pos] === \"\\n\") {\n        ++pos;\n      }\n      _this.buffer = buffer.slice(pos);\n      return line;\n    }\n    function parseHeader2(input) {\n      parseOptions(input, function(k3, v4) {\n      }, /:/);\n    }\n    try {\n      let line = \"\";\n      if (_this.state === \"INITIAL\") {\n        if (!/\\r\\n|\\n/.test(_this.buffer)) {\n          return this;\n        }\n        line = collectNextLine();\n        const m3 = line.match(/^(\u00EF\u00BB\u00BF)?WEBVTT([ \\t].*)?$/);\n        if (!(m3 != null && m3[0])) {\n          throw new Error(\"Malformed WebVTT signature.\");\n        }\n        _this.state = \"HEADER\";\n      }\n      let alreadyCollectedLine = false;\n      while (_this.buffer) {\n        if (!/\\r\\n|\\n/.test(_this.buffer)) {\n          return this;\n        }\n        if (!alreadyCollectedLine) {\n          line = collectNextLine();\n        } else {\n          alreadyCollectedLine = false;\n        }\n        switch (_this.state) {\n          case \"HEADER\":\n            if (/:/.test(line)) {\n              parseHeader2(line);\n            } else if (!line) {\n              _this.state = \"ID\";\n            }\n            continue;\n          case \"NOTE\":\n            if (!line) {\n              _this.state = \"ID\";\n            }\n            continue;\n          case \"ID\":\n            if (/^NOTE($|[ \\t])/.test(line)) {\n              _this.state = \"NOTE\";\n              break;\n            }\n            if (!line) {\n              continue;\n            }\n            _this.cue = new VTTCue2(0, 0, \"\");\n            _this.state = \"CUE\";\n            if (line.indexOf(\"-->\") === -1) {\n              _this.cue.id = line;\n              continue;\n            }\n          // Process line as start of a cue.\n          /* falls through */\n          case \"CUE\":\n            if (!_this.cue) {\n              _this.state = \"BADCUE\";\n              continue;\n            }\n            try {\n              parseCue(line, _this.cue, _this.regionList);\n            } catch (e) {\n              _this.cue = null;\n              _this.state = \"BADCUE\";\n              continue;\n            }\n            _this.state = \"CUETEXT\";\n            continue;\n          case \"CUETEXT\":\n            {\n              const hasSubstring = line.indexOf(\"-->\") !== -1;\n              if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n                if (_this.oncue && _this.cue) {\n                  _this.oncue(_this.cue);\n                }\n                _this.cue = null;\n                _this.state = \"ID\";\n                continue;\n              }\n              if (_this.cue === null) {\n                continue;\n              }\n              if (_this.cue.text) {\n                _this.cue.text += \"\\n\";\n              }\n              _this.cue.text += line;\n            }\n            continue;\n          case \"BADCUE\":\n            if (!line) {\n              _this.state = \"ID\";\n            }\n        }\n      }\n    } catch (e) {\n      if (_this.state === \"CUETEXT\" && _this.cue && _this.oncue) {\n        _this.oncue(_this.cue);\n      }\n      _this.cue = null;\n      _this.state = _this.state === \"INITIAL\" ? \"BADWEBVTT\" : \"BADCUE\";\n    }\n    return this;\n  }\n  flush() {\n    const _this = this;\n    try {\n      if (_this.cue || _this.state === \"HEADER\") {\n        _this.buffer += \"\\n\\n\";\n        _this.parse();\n      }\n      if (_this.state === \"INITIAL\" || _this.state === \"BADWEBVTT\") {\n        throw new Error(\"Malformed WebVTT signature.\");\n      }\n    } catch (e) {\n      if (_this.onparsingerror) {\n        _this.onparsingerror(e);\n      }\n    }\n    if (_this.onflush) {\n      _this.onflush();\n    }\n    return this;\n  }\n};\nvar LINEBREAKS = /\\r\\n|\\n\\r|\\n|\\r/g;\nvar startsWith = function startsWith2(inputString, searchString, position = 0) {\n  return inputString.slice(position, position + searchString.length) === searchString;\n};\nvar cueString2millis = function cueString2millis2(timeString) {\n  let ts = parseInt(timeString.slice(-3));\n  const secs = parseInt(timeString.slice(-6, -4));\n  const mins = parseInt(timeString.slice(-9, -7));\n  const hours = timeString.length > 9 ? parseInt(timeString.substring(0, timeString.indexOf(\":\"))) : 0;\n  if (!isFiniteNumber(ts) || !isFiniteNumber(secs) || !isFiniteNumber(mins) || !isFiniteNumber(hours)) {\n    throw Error(`Malformed X-TIMESTAMP-MAP: Local:${timeString}`);\n  }\n  ts += 1e3 * secs;\n  ts += 60 * 1e3 * mins;\n  ts += 60 * 60 * 1e3 * hours;\n  return ts;\n};\nvar hash = function hash2(text) {\n  let _hash = 5381;\n  let i2 = text.length;\n  while (i2) {\n    _hash = _hash * 33 ^ text.charCodeAt(--i2);\n  }\n  return (_hash >>> 0).toString();\n};\nfunction generateCueId(startTime, endTime, text) {\n  return hash(startTime.toString()) + hash(endTime.toString()) + hash(text);\n}\nvar calculateOffset = function calculateOffset2(vttCCs, cc, presentationTime) {\n  let currCC = vttCCs[cc];\n  let prevCC = vttCCs[currCC.prevCC];\n  if (!prevCC || !prevCC.new && currCC.new) {\n    vttCCs.ccOffset = vttCCs.presentationOffset = currCC.start;\n    currCC.new = false;\n    return;\n  }\n  while ((_prevCC = prevCC) != null && _prevCC.new) {\n    var _prevCC;\n    vttCCs.ccOffset += currCC.start - prevCC.start;\n    currCC.new = false;\n    currCC = prevCC;\n    prevCC = vttCCs[currCC.prevCC];\n  }\n  vttCCs.presentationOffset = presentationTime;\n};\nfunction parseWebVTT(vttByteArray, initPTS, vttCCs, cc, timeOffset, callBack, errorCallBack) {\n  const parser = new VTTParser();\n  const vttLines = utf8ArrayToStr(new Uint8Array(vttByteArray)).trim().replace(LINEBREAKS, \"\\n\").split(\"\\n\");\n  const cues = [];\n  const init90kHz = initPTS ? toMpegTsClockFromTimescale(initPTS.baseTime, initPTS.timescale) : 0;\n  let cueTime = \"00:00.000\";\n  let timestampMapMPEGTS = 0;\n  let timestampMapLOCAL = 0;\n  let parsingError;\n  let inHeader = true;\n  parser.oncue = function(cue) {\n    const currCC = vttCCs[cc];\n    let cueOffset = vttCCs.ccOffset;\n    const webVttMpegTsMapOffset = (timestampMapMPEGTS - init90kHz) / 9e4;\n    if (currCC != null && currCC.new) {\n      if (timestampMapLOCAL !== void 0) {\n        cueOffset = vttCCs.ccOffset = currCC.start;\n      } else {\n        calculateOffset(vttCCs, cc, webVttMpegTsMapOffset);\n      }\n    }\n    if (webVttMpegTsMapOffset) {\n      if (!initPTS) {\n        parsingError = new Error(\"Missing initPTS for VTT MPEGTS\");\n        return;\n      }\n      cueOffset = webVttMpegTsMapOffset - vttCCs.presentationOffset;\n    }\n    const duration = cue.endTime - cue.startTime;\n    const startTime = normalizePts((cue.startTime + cueOffset - timestampMapLOCAL) * 9e4, timeOffset * 9e4) / 9e4;\n    cue.startTime = Math.max(startTime, 0);\n    cue.endTime = Math.max(startTime + duration, 0);\n    const text = cue.text.trim();\n    cue.text = decodeURIComponent(encodeURIComponent(text));\n    if (!cue.id) {\n      cue.id = generateCueId(cue.startTime, cue.endTime, text);\n    }\n    if (cue.endTime > 0) {\n      cues.push(cue);\n    }\n  };\n  parser.onparsingerror = function(error) {\n    parsingError = error;\n  };\n  parser.onflush = function() {\n    if (parsingError) {\n      errorCallBack(parsingError);\n      return;\n    }\n    callBack(cues);\n  };\n  vttLines.forEach((line) => {\n    if (inHeader) {\n      if (startsWith(line, \"X-TIMESTAMP-MAP=\")) {\n        inHeader = false;\n        line.slice(16).split(\",\").forEach((timestamp) => {\n          if (startsWith(timestamp, \"LOCAL:\")) {\n            cueTime = timestamp.slice(6);\n          } else if (startsWith(timestamp, \"MPEGTS:\")) {\n            timestampMapMPEGTS = parseInt(timestamp.slice(7));\n          }\n        });\n        try {\n          timestampMapLOCAL = cueString2millis(cueTime) / 1e3;\n        } catch (error) {\n          parsingError = error;\n        }\n        return;\n      } else if (line === \"\") {\n        inHeader = false;\n      }\n    }\n    parser.parse(line + \"\\n\");\n  });\n  parser.flush();\n}\nvar IMSC1_CODEC = \"stpp.ttml.im1t\";\nvar HMSF_REGEX = /^(\\d{2,}):(\\d{2}):(\\d{2}):(\\d{2})\\.?(\\d+)?$/;\nvar TIME_UNIT_REGEX = /^(\\d*(?:\\.\\d*)?)(h|m|s|ms|f|t)$/;\nvar textAlignToLineAlign = {\n  left: \"start\",\n  center: \"center\",\n  right: \"end\",\n  start: \"start\",\n  end: \"end\"\n};\nfunction parseIMSC1(payload, initPTS, callBack, errorCallBack) {\n  const results = findBox(new Uint8Array(payload), [\"mdat\"]);\n  if (results.length === 0) {\n    errorCallBack(new Error(\"Could not parse IMSC1 mdat\"));\n    return;\n  }\n  const ttmlList = results.map((mdat) => utf8ArrayToStr(mdat));\n  const syncTime = toTimescaleFromScale(initPTS.baseTime, 1, initPTS.timescale);\n  try {\n    ttmlList.forEach((ttml) => callBack(parseTTML(ttml, syncTime)));\n  } catch (error) {\n    errorCallBack(error);\n  }\n}\nfunction parseTTML(ttml, syncTime) {\n  const parser = new DOMParser();\n  const xmlDoc = parser.parseFromString(ttml, \"text/xml\");\n  const tt4 = xmlDoc.getElementsByTagName(\"tt\")[0];\n  if (!tt4) {\n    throw new Error(\"Invalid ttml\");\n  }\n  const defaultRateInfo = {\n    frameRate: 30,\n    subFrameRate: 1,\n    frameRateMultiplier: 0,\n    tickRate: 0\n  };\n  const rateInfo = Object.keys(defaultRateInfo).reduce((result, key) => {\n    result[key] = tt4.getAttribute(`ttp:${key}`) || defaultRateInfo[key];\n    return result;\n  }, {});\n  const trim = tt4.getAttribute(\"xml:space\") !== \"preserve\";\n  const styleElements = collectionToDictionary(getElementCollection(tt4, \"styling\", \"style\"));\n  const regionElements = collectionToDictionary(getElementCollection(tt4, \"layout\", \"region\"));\n  const cueElements = getElementCollection(tt4, \"body\", \"[begin]\");\n  return [].map.call(cueElements, (cueElement) => {\n    const cueText = getTextContent(cueElement, trim);\n    if (!cueText || !cueElement.hasAttribute(\"begin\")) {\n      return null;\n    }\n    const startTime = parseTtmlTime(cueElement.getAttribute(\"begin\"), rateInfo);\n    const duration = parseTtmlTime(cueElement.getAttribute(\"dur\"), rateInfo);\n    let endTime = parseTtmlTime(cueElement.getAttribute(\"end\"), rateInfo);\n    if (startTime === null) {\n      throw timestampParsingError(cueElement);\n    }\n    if (endTime === null) {\n      if (duration === null) {\n        throw timestampParsingError(cueElement);\n      }\n      endTime = startTime + duration;\n    }\n    const cue = new VTTCue2(startTime - syncTime, endTime - syncTime, cueText);\n    cue.id = generateCueId(cue.startTime, cue.endTime, cue.text);\n    const region = regionElements[cueElement.getAttribute(\"region\")];\n    const style = styleElements[cueElement.getAttribute(\"style\")];\n    const styles = getTtmlStyles(region, style, styleElements);\n    const {\n      textAlign\n    } = styles;\n    if (textAlign) {\n      const lineAlign = textAlignToLineAlign[textAlign];\n      if (lineAlign) {\n        cue.lineAlign = lineAlign;\n      }\n      cue.align = textAlign;\n    }\n    _extends(cue, styles);\n    return cue;\n  }).filter((cue) => cue !== null);\n}\nfunction getElementCollection(fromElement, parentName, childName) {\n  const parent = fromElement.getElementsByTagName(parentName)[0];\n  if (parent) {\n    return [].slice.call(parent.querySelectorAll(childName));\n  }\n  return [];\n}\nfunction collectionToDictionary(elementsWithId) {\n  return elementsWithId.reduce((dict, element) => {\n    const id = element.getAttribute(\"xml:id\");\n    if (id) {\n      dict[id] = element;\n    }\n    return dict;\n  }, {});\n}\nfunction getTextContent(element, trim) {\n  return [].slice.call(element.childNodes).reduce((str, node, i2) => {\n    var _node$childNodes;\n    if (node.nodeName === \"br\" && i2) {\n      return str + \"\\n\";\n    }\n    if ((_node$childNodes = node.childNodes) != null && _node$childNodes.length) {\n      return getTextContent(node, trim);\n    } else if (trim) {\n      return str + node.textContent.trim().replace(/\\s+/g, \" \");\n    }\n    return str + node.textContent;\n  }, \"\");\n}\nfunction getTtmlStyles(region, style, styleElements) {\n  const ttsNs = \"http://www.w3.org/ns/ttml#styling\";\n  let regionStyle = null;\n  const styleAttributes = [\n    \"displayAlign\",\n    \"textAlign\",\n    \"color\",\n    \"backgroundColor\",\n    \"fontSize\",\n    \"fontFamily\"\n    // 'fontWeight',\n    // 'lineHeight',\n    // 'wrapOption',\n    // 'fontStyle',\n    // 'direction',\n    // 'writingMode'\n  ];\n  const regionStyleName = region != null && region.hasAttribute(\"style\") ? region.getAttribute(\"style\") : null;\n  if (regionStyleName && styleElements.hasOwnProperty(regionStyleName)) {\n    regionStyle = styleElements[regionStyleName];\n  }\n  return styleAttributes.reduce((styles, name) => {\n    const value = getAttributeNS(style, ttsNs, name) || getAttributeNS(region, ttsNs, name) || getAttributeNS(regionStyle, ttsNs, name);\n    if (value) {\n      styles[name] = value;\n    }\n    return styles;\n  }, {});\n}\nfunction getAttributeNS(element, ns, name) {\n  if (!element) {\n    return null;\n  }\n  return element.hasAttributeNS(ns, name) ? element.getAttributeNS(ns, name) : null;\n}\nfunction timestampParsingError(node) {\n  return new Error(`Could not parse ttml timestamp ${node}`);\n}\nfunction parseTtmlTime(timeAttributeValue, rateInfo) {\n  if (!timeAttributeValue) {\n    return null;\n  }\n  let seconds = parseTimeStamp(timeAttributeValue);\n  if (seconds === null) {\n    if (HMSF_REGEX.test(timeAttributeValue)) {\n      seconds = parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo);\n    } else if (TIME_UNIT_REGEX.test(timeAttributeValue)) {\n      seconds = parseTimeUnits(timeAttributeValue, rateInfo);\n    }\n  }\n  return seconds;\n}\nfunction parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo) {\n  const m3 = HMSF_REGEX.exec(timeAttributeValue);\n  const frames = (m3[4] | 0) + (m3[5] | 0) / rateInfo.subFrameRate;\n  return (m3[1] | 0) * 3600 + (m3[2] | 0) * 60 + (m3[3] | 0) + frames / rateInfo.frameRate;\n}\nfunction parseTimeUnits(timeAttributeValue, rateInfo) {\n  const m3 = TIME_UNIT_REGEX.exec(timeAttributeValue);\n  const value = Number(m3[1]);\n  const unit = m3[2];\n  switch (unit) {\n    case \"h\":\n      return value * 3600;\n    case \"m\":\n      return value * 60;\n    case \"ms\":\n      return value * 1e3;\n    case \"f\":\n      return value / rateInfo.frameRate;\n    case \"t\":\n      return value / rateInfo.tickRate;\n  }\n  return value;\n}\nvar TimelineController = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.media = null;\n    this.config = void 0;\n    this.enabled = true;\n    this.Cues = void 0;\n    this.textTracks = [];\n    this.tracks = [];\n    this.initPTS = [];\n    this.unparsedVttFrags = [];\n    this.captionsTracks = {};\n    this.nonNativeCaptionsTracks = {};\n    this.cea608Parser1 = void 0;\n    this.cea608Parser2 = void 0;\n    this.lastCc = -1;\n    this.lastSn = -1;\n    this.lastPartIndex = -1;\n    this.prevCC = -1;\n    this.vttCCs = newVTTCCs();\n    this.captionsProperties = void 0;\n    this.hls = hls;\n    this.config = hls.config;\n    this.Cues = hls.config.cueHandler;\n    this.captionsProperties = {\n      textTrack1: {\n        label: this.config.captionsTextTrack1Label,\n        languageCode: this.config.captionsTextTrack1LanguageCode\n      },\n      textTrack2: {\n        label: this.config.captionsTextTrack2Label,\n        languageCode: this.config.captionsTextTrack2LanguageCode\n      },\n      textTrack3: {\n        label: this.config.captionsTextTrack3Label,\n        languageCode: this.config.captionsTextTrack3LanguageCode\n      },\n      textTrack4: {\n        label: this.config.captionsTextTrack4Label,\n        languageCode: this.config.captionsTextTrack4LanguageCode\n      }\n    };\n    hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.on(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n    hls.on(Events.FRAG_LOADING, this.onFragLoading, this);\n    hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.on(Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n    hls.on(Events.FRAG_DECRYPTED, this.onFragDecrypted, this);\n    hls.on(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n    hls.on(Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n  }\n  destroy() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.off(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n    hls.off(Events.FRAG_LOADING, this.onFragLoading, this);\n    hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.off(Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n    hls.off(Events.FRAG_DECRYPTED, this.onFragDecrypted, this);\n    hls.off(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n    hls.off(Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    this.hls = this.config = null;\n    this.cea608Parser1 = this.cea608Parser2 = void 0;\n  }\n  initCea608Parsers() {\n    if (this.config.enableCEA708Captions && (!this.cea608Parser1 || !this.cea608Parser2)) {\n      const channel1 = new OutputFilter(this, \"textTrack1\");\n      const channel2 = new OutputFilter(this, \"textTrack2\");\n      const channel3 = new OutputFilter(this, \"textTrack3\");\n      const channel4 = new OutputFilter(this, \"textTrack4\");\n      this.cea608Parser1 = new Cea608Parser(1, channel1, channel2);\n      this.cea608Parser2 = new Cea608Parser(3, channel3, channel4);\n    }\n  }\n  addCues(trackName, startTime, endTime, screen, cueRanges) {\n    let merged = false;\n    for (let i2 = cueRanges.length; i2--; ) {\n      const cueRange = cueRanges[i2];\n      const overlap = intersection(cueRange[0], cueRange[1], startTime, endTime);\n      if (overlap >= 0) {\n        cueRange[0] = Math.min(cueRange[0], startTime);\n        cueRange[1] = Math.max(cueRange[1], endTime);\n        merged = true;\n        if (overlap / (endTime - startTime) > 0.5) {\n          return;\n        }\n      }\n    }\n    if (!merged) {\n      cueRanges.push([startTime, endTime]);\n    }\n    if (this.config.renderTextTracksNatively) {\n      const track = this.captionsTracks[trackName];\n      this.Cues.newCue(track, startTime, endTime, screen);\n    } else {\n      const cues = this.Cues.newCue(null, startTime, endTime, screen);\n      this.hls.trigger(Events.CUES_PARSED, {\n        type: \"captions\",\n        cues,\n        track: trackName\n      });\n    }\n  }\n  // Triggered when an initial PTS is found; used for synchronisation of WebVTT.\n  onInitPtsFound(event, {\n    frag,\n    id,\n    initPTS,\n    timescale\n  }) {\n    const {\n      unparsedVttFrags\n    } = this;\n    if (id === \"main\") {\n      this.initPTS[frag.cc] = {\n        baseTime: initPTS,\n        timescale\n      };\n    }\n    if (unparsedVttFrags.length) {\n      this.unparsedVttFrags = [];\n      unparsedVttFrags.forEach((frag2) => {\n        this.onFragLoaded(Events.FRAG_LOADED, frag2);\n      });\n    }\n  }\n  getExistingTrack(label, language) {\n    const {\n      media\n    } = this;\n    if (media) {\n      for (let i2 = 0; i2 < media.textTracks.length; i2++) {\n        const textTrack = media.textTracks[i2];\n        if (canReuseVttTextTrack(textTrack, {\n          name: label,\n          lang: language,\n          attrs: {}\n        })) {\n          return textTrack;\n        }\n      }\n    }\n    return null;\n  }\n  createCaptionsTrack(trackName) {\n    if (this.config.renderTextTracksNatively) {\n      this.createNativeTrack(trackName);\n    } else {\n      this.createNonNativeTrack(trackName);\n    }\n  }\n  createNativeTrack(trackName) {\n    if (this.captionsTracks[trackName]) {\n      return;\n    }\n    const {\n      captionsProperties,\n      captionsTracks,\n      media\n    } = this;\n    const {\n      label,\n      languageCode\n    } = captionsProperties[trackName];\n    const existingTrack = this.getExistingTrack(label, languageCode);\n    if (!existingTrack) {\n      const textTrack = this.createTextTrack(\"captions\", label, languageCode);\n      if (textTrack) {\n        textTrack[trackName] = true;\n        captionsTracks[trackName] = textTrack;\n      }\n    } else {\n      captionsTracks[trackName] = existingTrack;\n      clearCurrentCues(captionsTracks[trackName]);\n      sendAddTrackEvent(captionsTracks[trackName], media);\n    }\n  }\n  createNonNativeTrack(trackName) {\n    if (this.nonNativeCaptionsTracks[trackName]) {\n      return;\n    }\n    const trackProperties = this.captionsProperties[trackName];\n    if (!trackProperties) {\n      return;\n    }\n    const label = trackProperties.label;\n    const track = {\n      _id: trackName,\n      label,\n      kind: \"captions\",\n      default: trackProperties.media ? !!trackProperties.media.default : false,\n      closedCaptions: trackProperties.media\n    };\n    this.nonNativeCaptionsTracks[trackName] = track;\n    this.hls.trigger(Events.NON_NATIVE_TEXT_TRACKS_FOUND, {\n      tracks: [track]\n    });\n  }\n  createTextTrack(kind, label, lang) {\n    const media = this.media;\n    if (!media) {\n      return;\n    }\n    return media.addTextTrack(kind, label, lang);\n  }\n  onMediaAttaching(event, data) {\n    this.media = data.media;\n    this._cleanTracks();\n  }\n  onMediaDetaching() {\n    const {\n      captionsTracks\n    } = this;\n    Object.keys(captionsTracks).forEach((trackName) => {\n      clearCurrentCues(captionsTracks[trackName]);\n      delete captionsTracks[trackName];\n    });\n    this.nonNativeCaptionsTracks = {};\n  }\n  onManifestLoading() {\n    this.lastCc = -1;\n    this.lastSn = -1;\n    this.lastPartIndex = -1;\n    this.prevCC = -1;\n    this.vttCCs = newVTTCCs();\n    this._cleanTracks();\n    this.tracks = [];\n    this.captionsTracks = {};\n    this.nonNativeCaptionsTracks = {};\n    this.textTracks = [];\n    this.unparsedVttFrags = [];\n    this.initPTS = [];\n    if (this.cea608Parser1 && this.cea608Parser2) {\n      this.cea608Parser1.reset();\n      this.cea608Parser2.reset();\n    }\n  }\n  _cleanTracks() {\n    const {\n      media\n    } = this;\n    if (!media) {\n      return;\n    }\n    const textTracks = media.textTracks;\n    if (textTracks) {\n      for (let i2 = 0; i2 < textTracks.length; i2++) {\n        clearCurrentCues(textTracks[i2]);\n      }\n    }\n  }\n  onSubtitleTracksUpdated(event, data) {\n    const tracks = data.subtitleTracks || [];\n    const hasIMSC1 = tracks.some((track) => track.textCodec === IMSC1_CODEC);\n    if (this.config.enableWebVTT || hasIMSC1 && this.config.enableIMSC1) {\n      const listIsIdentical = subtitleOptionsIdentical(this.tracks, tracks);\n      if (listIsIdentical) {\n        this.tracks = tracks;\n        return;\n      }\n      this.textTracks = [];\n      this.tracks = tracks;\n      if (this.config.renderTextTracksNatively) {\n        const media = this.media;\n        const inUseTracks = media ? filterSubtitleTracks(media.textTracks) : null;\n        this.tracks.forEach((track, index) => {\n          let textTrack;\n          if (inUseTracks) {\n            let inUseTrack = null;\n            for (let i2 = 0; i2 < inUseTracks.length; i2++) {\n              if (inUseTracks[i2] && canReuseVttTextTrack(inUseTracks[i2], track)) {\n                inUseTrack = inUseTracks[i2];\n                inUseTracks[i2] = null;\n                break;\n              }\n            }\n            if (inUseTrack) {\n              textTrack = inUseTrack;\n            }\n          }\n          if (textTrack) {\n            clearCurrentCues(textTrack);\n          } else {\n            const textTrackKind = captionsOrSubtitlesFromCharacteristics(track);\n            textTrack = this.createTextTrack(textTrackKind, track.name, track.lang);\n            if (textTrack) {\n              textTrack.mode = \"disabled\";\n            }\n          }\n          if (textTrack) {\n            this.textTracks.push(textTrack);\n          }\n        });\n        if (inUseTracks != null && inUseTracks.length) {\n          const unusedTextTracks = inUseTracks.filter((t2) => t2 !== null).map((t2) => t2.label);\n          if (unusedTextTracks.length) {\n            logger.warn(`Media element contains unused subtitle tracks: ${unusedTextTracks.join(\", \")}. Replace media element for each source to clear TextTracks and captions menu.`);\n          }\n        }\n      } else if (this.tracks.length) {\n        const tracksList = this.tracks.map((track) => {\n          return {\n            label: track.name,\n            kind: track.type.toLowerCase(),\n            default: track.default,\n            subtitleTrack: track\n          };\n        });\n        this.hls.trigger(Events.NON_NATIVE_TEXT_TRACKS_FOUND, {\n          tracks: tracksList\n        });\n      }\n    }\n  }\n  onManifestLoaded(event, data) {\n    if (this.config.enableCEA708Captions && data.captions) {\n      data.captions.forEach((captionsTrack) => {\n        const instreamIdMatch = /(?:CC|SERVICE)([1-4])/.exec(captionsTrack.instreamId);\n        if (!instreamIdMatch) {\n          return;\n        }\n        const trackName = `textTrack${instreamIdMatch[1]}`;\n        const trackProperties = this.captionsProperties[trackName];\n        if (!trackProperties) {\n          return;\n        }\n        trackProperties.label = captionsTrack.name;\n        if (captionsTrack.lang) {\n          trackProperties.languageCode = captionsTrack.lang;\n        }\n        trackProperties.media = captionsTrack;\n      });\n    }\n  }\n  closedCaptionsForLevel(frag) {\n    const level = this.hls.levels[frag.level];\n    return level == null ? void 0 : level.attrs[\"CLOSED-CAPTIONS\"];\n  }\n  onFragLoading(event, data) {\n    if (this.enabled && data.frag.type === PlaylistLevelType.MAIN) {\n      var _data$part$index, _data$part;\n      const {\n        cea608Parser1,\n        cea608Parser2,\n        lastSn\n      } = this;\n      const {\n        cc,\n        sn\n      } = data.frag;\n      const partIndex = (_data$part$index = (_data$part = data.part) == null ? void 0 : _data$part.index) != null ? _data$part$index : -1;\n      if (cea608Parser1 && cea608Parser2) {\n        if (sn !== lastSn + 1 || sn === lastSn && partIndex !== this.lastPartIndex + 1 || cc !== this.lastCc) {\n          cea608Parser1.reset();\n          cea608Parser2.reset();\n        }\n      }\n      this.lastCc = cc;\n      this.lastSn = sn;\n      this.lastPartIndex = partIndex;\n    }\n  }\n  onFragLoaded(event, data) {\n    const {\n      frag,\n      payload\n    } = data;\n    if (frag.type === PlaylistLevelType.SUBTITLE) {\n      if (payload.byteLength) {\n        const decryptData = frag.decryptdata;\n        const decrypted = \"stats\" in data;\n        if (decryptData == null || !decryptData.encrypted || decrypted) {\n          const trackPlaylistMedia = this.tracks[frag.level];\n          const vttCCs = this.vttCCs;\n          if (!vttCCs[frag.cc]) {\n            vttCCs[frag.cc] = {\n              start: frag.start,\n              prevCC: this.prevCC,\n              new: true\n            };\n            this.prevCC = frag.cc;\n          }\n          if (trackPlaylistMedia && trackPlaylistMedia.textCodec === IMSC1_CODEC) {\n            this._parseIMSC1(frag, payload);\n          } else {\n            this._parseVTTs(data);\n          }\n        }\n      } else {\n        this.hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n          success: false,\n          frag,\n          error: new Error(\"Empty subtitle payload\")\n        });\n      }\n    }\n  }\n  _parseIMSC1(frag, payload) {\n    const hls = this.hls;\n    parseIMSC1(payload, this.initPTS[frag.cc], (cues) => {\n      this._appendCues(cues, frag.level);\n      hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n        success: true,\n        frag\n      });\n    }, (error) => {\n      logger.log(`Failed to parse IMSC1: ${error}`);\n      hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n        success: false,\n        frag,\n        error\n      });\n    });\n  }\n  _parseVTTs(data) {\n    var _frag$initSegment;\n    const {\n      frag,\n      payload\n    } = data;\n    const {\n      initPTS,\n      unparsedVttFrags\n    } = this;\n    const maxAvCC = initPTS.length - 1;\n    if (!initPTS[frag.cc] && maxAvCC === -1) {\n      unparsedVttFrags.push(data);\n      return;\n    }\n    const hls = this.hls;\n    const payloadWebVTT = (_frag$initSegment = frag.initSegment) != null && _frag$initSegment.data ? appendUint8Array(frag.initSegment.data, new Uint8Array(payload)) : payload;\n    parseWebVTT(payloadWebVTT, this.initPTS[frag.cc], this.vttCCs, frag.cc, frag.start, (cues) => {\n      this._appendCues(cues, frag.level);\n      hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n        success: true,\n        frag\n      });\n    }, (error) => {\n      const missingInitPTS = error.message === \"Missing initPTS for VTT MPEGTS\";\n      if (missingInitPTS) {\n        unparsedVttFrags.push(data);\n      } else {\n        this._fallbackToIMSC1(frag, payload);\n      }\n      logger.log(`Failed to parse VTT cue: ${error}`);\n      if (missingInitPTS && maxAvCC > frag.cc) {\n        return;\n      }\n      hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n        success: false,\n        frag,\n        error\n      });\n    });\n  }\n  _fallbackToIMSC1(frag, payload) {\n    const trackPlaylistMedia = this.tracks[frag.level];\n    if (!trackPlaylistMedia.textCodec) {\n      parseIMSC1(payload, this.initPTS[frag.cc], () => {\n        trackPlaylistMedia.textCodec = IMSC1_CODEC;\n        this._parseIMSC1(frag, payload);\n      }, () => {\n        trackPlaylistMedia.textCodec = \"wvtt\";\n      });\n    }\n  }\n  _appendCues(cues, fragLevel) {\n    const hls = this.hls;\n    if (this.config.renderTextTracksNatively) {\n      const textTrack = this.textTracks[fragLevel];\n      if (!textTrack || textTrack.mode === \"disabled\") {\n        return;\n      }\n      cues.forEach((cue) => addCueToTrack(textTrack, cue));\n    } else {\n      const currentTrack = this.tracks[fragLevel];\n      if (!currentTrack) {\n        return;\n      }\n      const track = currentTrack.default ? \"default\" : \"subtitles\" + fragLevel;\n      hls.trigger(Events.CUES_PARSED, {\n        type: \"subtitles\",\n        cues,\n        track\n      });\n    }\n  }\n  onFragDecrypted(event, data) {\n    const {\n      frag\n    } = data;\n    if (frag.type === PlaylistLevelType.SUBTITLE) {\n      this.onFragLoaded(Events.FRAG_LOADED, data);\n    }\n  }\n  onSubtitleTracksCleared() {\n    this.tracks = [];\n    this.captionsTracks = {};\n  }\n  onFragParsingUserdata(event, data) {\n    this.initCea608Parsers();\n    const {\n      cea608Parser1,\n      cea608Parser2\n    } = this;\n    if (!this.enabled || !cea608Parser1 || !cea608Parser2) {\n      return;\n    }\n    const {\n      frag,\n      samples\n    } = data;\n    if (frag.type === PlaylistLevelType.MAIN && this.closedCaptionsForLevel(frag) === \"NONE\") {\n      return;\n    }\n    for (let i2 = 0; i2 < samples.length; i2++) {\n      const ccBytes = samples[i2].bytes;\n      if (ccBytes) {\n        const ccdatas = this.extractCea608Data(ccBytes);\n        cea608Parser1.addData(samples[i2].pts, ccdatas[0]);\n        cea608Parser2.addData(samples[i2].pts, ccdatas[1]);\n      }\n    }\n  }\n  onBufferFlushing(event, {\n    startOffset,\n    endOffset,\n    endOffsetSubtitles,\n    type\n  }) {\n    const {\n      media\n    } = this;\n    if (!media || media.currentTime < endOffset) {\n      return;\n    }\n    if (!type || type === \"video\") {\n      const {\n        captionsTracks\n      } = this;\n      Object.keys(captionsTracks).forEach((trackName) => removeCuesInRange(captionsTracks[trackName], startOffset, endOffset));\n    }\n    if (this.config.renderTextTracksNatively) {\n      if (startOffset === 0 && endOffsetSubtitles !== void 0) {\n        const {\n          textTracks\n        } = this;\n        Object.keys(textTracks).forEach((trackName) => removeCuesInRange(textTracks[trackName], startOffset, endOffsetSubtitles));\n      }\n    }\n  }\n  extractCea608Data(byteArray) {\n    const actualCCBytes = [[], []];\n    const count = byteArray[0] & 31;\n    let position = 2;\n    for (let j4 = 0; j4 < count; j4++) {\n      const tmpByte = byteArray[position++];\n      const ccbyte1 = 127 & byteArray[position++];\n      const ccbyte2 = 127 & byteArray[position++];\n      if (ccbyte1 === 0 && ccbyte2 === 0) {\n        continue;\n      }\n      const ccValid = (4 & tmpByte) !== 0;\n      if (ccValid) {\n        const ccType = 3 & tmpByte;\n        if (0 === ccType || 1 === ccType) {\n          actualCCBytes[ccType].push(ccbyte1);\n          actualCCBytes[ccType].push(ccbyte2);\n        }\n      }\n    }\n    return actualCCBytes;\n  }\n};\nfunction captionsOrSubtitlesFromCharacteristics(track) {\n  if (track.characteristics) {\n    if (/transcribes-spoken-dialog/gi.test(track.characteristics) && /describes-music-and-sound/gi.test(track.characteristics)) {\n      return \"captions\";\n    }\n  }\n  return \"subtitles\";\n}\nfunction canReuseVttTextTrack(inUseTrack, manifestTrack) {\n  return !!inUseTrack && inUseTrack.kind === captionsOrSubtitlesFromCharacteristics(manifestTrack) && subtitleTrackMatchesTextTrack(manifestTrack, inUseTrack);\n}\nfunction intersection(x1, x22, y1, y22) {\n  return Math.min(x22, y22) - Math.max(x1, y1);\n}\nfunction newVTTCCs() {\n  return {\n    ccOffset: 0,\n    presentationOffset: 0,\n    0: {\n      start: 0,\n      prevCC: -1,\n      new: true\n    }\n  };\n}\nvar CapLevelController = class _CapLevelController {\n  constructor(hls) {\n    this.hls = void 0;\n    this.autoLevelCapping = void 0;\n    this.firstLevel = void 0;\n    this.media = void 0;\n    this.restrictedLevels = void 0;\n    this.timer = void 0;\n    this.clientRect = void 0;\n    this.streamController = void 0;\n    this.hls = hls;\n    this.autoLevelCapping = Number.POSITIVE_INFINITY;\n    this.firstLevel = -1;\n    this.media = null;\n    this.restrictedLevels = [];\n    this.timer = void 0;\n    this.clientRect = null;\n    this.registerListeners();\n  }\n  setStreamController(streamController) {\n    this.streamController = streamController;\n  }\n  destroy() {\n    if (this.hls) {\n      this.unregisterListener();\n    }\n    if (this.timer) {\n      this.stopCapping();\n    }\n    this.media = null;\n    this.clientRect = null;\n    this.hls = this.streamController = null;\n  }\n  registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n    hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.on(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n  }\n  unregisterListener() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n    hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.off(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n  }\n  onFpsDropLevelCapping(event, data) {\n    const level = this.hls.levels[data.droppedLevel];\n    if (this.isLevelAllowed(level)) {\n      this.restrictedLevels.push({\n        bitrate: level.bitrate,\n        height: level.height,\n        width: level.width\n      });\n    }\n  }\n  onMediaAttaching(event, data) {\n    this.media = data.media instanceof HTMLVideoElement ? data.media : null;\n    this.clientRect = null;\n    if (this.timer && this.hls.levels.length) {\n      this.detectPlayerSize();\n    }\n  }\n  onManifestParsed(event, data) {\n    const hls = this.hls;\n    this.restrictedLevels = [];\n    this.firstLevel = data.firstLevel;\n    if (hls.config.capLevelToPlayerSize && data.video) {\n      this.startCapping();\n    }\n  }\n  onLevelsUpdated(event, data) {\n    if (this.timer && isFiniteNumber(this.autoLevelCapping)) {\n      this.detectPlayerSize();\n    }\n  }\n  // Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted\n  // to the first level\n  onBufferCodecs(event, data) {\n    const hls = this.hls;\n    if (hls.config.capLevelToPlayerSize && data.video) {\n      this.startCapping();\n    }\n  }\n  onMediaDetaching() {\n    this.stopCapping();\n  }\n  detectPlayerSize() {\n    if (this.media) {\n      if (this.mediaHeight <= 0 || this.mediaWidth <= 0) {\n        this.clientRect = null;\n        return;\n      }\n      const levels = this.hls.levels;\n      if (levels.length) {\n        const hls = this.hls;\n        const maxLevel = this.getMaxLevel(levels.length - 1);\n        if (maxLevel !== this.autoLevelCapping) {\n          logger.log(`Setting autoLevelCapping to ${maxLevel}: ${levels[maxLevel].height}p@${levels[maxLevel].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`);\n        }\n        hls.autoLevelCapping = maxLevel;\n        if (hls.autoLevelCapping > this.autoLevelCapping && this.streamController) {\n          this.streamController.nextLevelSwitch();\n        }\n        this.autoLevelCapping = hls.autoLevelCapping;\n      }\n    }\n  }\n  /*\n   * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled)\n   */\n  getMaxLevel(capLevelIndex) {\n    const levels = this.hls.levels;\n    if (!levels.length) {\n      return -1;\n    }\n    const validLevels = levels.filter((level, index) => this.isLevelAllowed(level) && index <= capLevelIndex);\n    this.clientRect = null;\n    return _CapLevelController.getMaxLevelByMediaSize(validLevels, this.mediaWidth, this.mediaHeight);\n  }\n  startCapping() {\n    if (this.timer) {\n      return;\n    }\n    this.autoLevelCapping = Number.POSITIVE_INFINITY;\n    self.clearInterval(this.timer);\n    this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1e3);\n    this.detectPlayerSize();\n  }\n  stopCapping() {\n    this.restrictedLevels = [];\n    this.firstLevel = -1;\n    this.autoLevelCapping = Number.POSITIVE_INFINITY;\n    if (this.timer) {\n      self.clearInterval(this.timer);\n      this.timer = void 0;\n    }\n  }\n  getDimensions() {\n    if (this.clientRect) {\n      return this.clientRect;\n    }\n    const media = this.media;\n    const boundsRect = {\n      width: 0,\n      height: 0\n    };\n    if (media) {\n      const clientRect = media.getBoundingClientRect();\n      boundsRect.width = clientRect.width;\n      boundsRect.height = clientRect.height;\n      if (!boundsRect.width && !boundsRect.height) {\n        boundsRect.width = clientRect.right - clientRect.left || media.width || 0;\n        boundsRect.height = clientRect.bottom - clientRect.top || media.height || 0;\n      }\n    }\n    this.clientRect = boundsRect;\n    return boundsRect;\n  }\n  get mediaWidth() {\n    return this.getDimensions().width * this.contentScaleFactor;\n  }\n  get mediaHeight() {\n    return this.getDimensions().height * this.contentScaleFactor;\n  }\n  get contentScaleFactor() {\n    let pixelRatio = 1;\n    if (!this.hls.config.ignoreDevicePixelRatio) {\n      try {\n        pixelRatio = self.devicePixelRatio;\n      } catch (e) {\n      }\n    }\n    return pixelRatio;\n  }\n  isLevelAllowed(level) {\n    const restrictedLevels = this.restrictedLevels;\n    return !restrictedLevels.some((restrictedLevel) => {\n      return level.bitrate === restrictedLevel.bitrate && level.width === restrictedLevel.width && level.height === restrictedLevel.height;\n    });\n  }\n  static getMaxLevelByMediaSize(levels, width, height) {\n    if (!(levels != null && levels.length)) {\n      return -1;\n    }\n    const atGreatestBandwidth = (curLevel, nextLevel) => {\n      if (!nextLevel) {\n        return true;\n      }\n      return curLevel.width !== nextLevel.width || curLevel.height !== nextLevel.height;\n    };\n    let maxLevelIndex = levels.length - 1;\n    const squareSize = Math.max(width, height);\n    for (let i2 = 0; i2 < levels.length; i2 += 1) {\n      const level = levels[i2];\n      if ((level.width >= squareSize || level.height >= squareSize) && atGreatestBandwidth(level, levels[i2 + 1])) {\n        maxLevelIndex = i2;\n        break;\n      }\n    }\n    return maxLevelIndex;\n  }\n};\nvar FPSController = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.isVideoPlaybackQualityAvailable = false;\n    this.timer = void 0;\n    this.media = null;\n    this.lastTime = void 0;\n    this.lastDroppedFrames = 0;\n    this.lastDecodedFrames = 0;\n    this.streamController = void 0;\n    this.hls = hls;\n    this.registerListeners();\n  }\n  setStreamController(streamController) {\n    this.streamController = streamController;\n  }\n  registerListeners() {\n    this.hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n  }\n  unregisterListeners() {\n    this.hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n  }\n  destroy() {\n    if (this.timer) {\n      clearInterval(this.timer);\n    }\n    this.unregisterListeners();\n    this.isVideoPlaybackQualityAvailable = false;\n    this.media = null;\n  }\n  onMediaAttaching(event, data) {\n    const config = this.hls.config;\n    if (config.capLevelOnFPSDrop) {\n      const media = data.media instanceof self.HTMLVideoElement ? data.media : null;\n      this.media = media;\n      if (media && typeof media.getVideoPlaybackQuality === \"function\") {\n        this.isVideoPlaybackQualityAvailable = true;\n      }\n      self.clearInterval(this.timer);\n      this.timer = self.setInterval(this.checkFPSInterval.bind(this), config.fpsDroppedMonitoringPeriod);\n    }\n  }\n  checkFPS(video, decodedFrames, droppedFrames) {\n    const currentTime = performance.now();\n    if (decodedFrames) {\n      if (this.lastTime) {\n        const currentPeriod = currentTime - this.lastTime;\n        const currentDropped = droppedFrames - this.lastDroppedFrames;\n        const currentDecoded = decodedFrames - this.lastDecodedFrames;\n        const droppedFPS = 1e3 * currentDropped / currentPeriod;\n        const hls = this.hls;\n        hls.trigger(Events.FPS_DROP, {\n          currentDropped,\n          currentDecoded,\n          totalDroppedFrames: droppedFrames\n        });\n        if (droppedFPS > 0) {\n          if (currentDropped > hls.config.fpsDroppedMonitoringThreshold * currentDecoded) {\n            let currentLevel = hls.currentLevel;\n            logger.warn(\"drop FPS ratio greater than max allowed value for currentLevel: \" + currentLevel);\n            if (currentLevel > 0 && (hls.autoLevelCapping === -1 || hls.autoLevelCapping >= currentLevel)) {\n              currentLevel = currentLevel - 1;\n              hls.trigger(Events.FPS_DROP_LEVEL_CAPPING, {\n                level: currentLevel,\n                droppedLevel: hls.currentLevel\n              });\n              hls.autoLevelCapping = currentLevel;\n              this.streamController.nextLevelSwitch();\n            }\n          }\n        }\n      }\n      this.lastTime = currentTime;\n      this.lastDroppedFrames = droppedFrames;\n      this.lastDecodedFrames = decodedFrames;\n    }\n  }\n  checkFPSInterval() {\n    const video = this.media;\n    if (video) {\n      if (this.isVideoPlaybackQualityAvailable) {\n        const videoPlaybackQuality = video.getVideoPlaybackQuality();\n        this.checkFPS(video, videoPlaybackQuality.totalVideoFrames, videoPlaybackQuality.droppedVideoFrames);\n      } else {\n        this.checkFPS(video, video.webkitDecodedFrameCount, video.webkitDroppedFrameCount);\n      }\n    }\n  }\n};\nvar LOGGER_PREFIX = \"[eme]\";\nvar EMEController = class _EMEController {\n  constructor(hls) {\n    this.hls = void 0;\n    this.config = void 0;\n    this.media = null;\n    this.keyFormatPromise = null;\n    this.keySystemAccessPromises = {};\n    this._requestLicenseFailureCount = 0;\n    this.mediaKeySessions = [];\n    this.keyIdToKeySessionPromise = {};\n    this.setMediaKeysQueue = _EMEController.CDMCleanupPromise ? [_EMEController.CDMCleanupPromise] : [];\n    this.debug = logger.debug.bind(logger, LOGGER_PREFIX);\n    this.log = logger.log.bind(logger, LOGGER_PREFIX);\n    this.warn = logger.warn.bind(logger, LOGGER_PREFIX);\n    this.error = logger.error.bind(logger, LOGGER_PREFIX);\n    this.onMediaEncrypted = (event) => {\n      const {\n        initDataType,\n        initData\n      } = event;\n      const logMessage = `\"${event.type}\" event: init data type: \"${initDataType}\"`;\n      this.debug(logMessage);\n      if (initData === null) {\n        return;\n      }\n      if (!this.keyFormatPromise) {\n        let keySystems = Object.keys(this.keySystemAccessPromises);\n        if (!keySystems.length) {\n          keySystems = getKeySystemsForConfig(this.config);\n        }\n        const keyFormats = keySystems.map(keySystemDomainToKeySystemFormat).filter((k3) => !!k3);\n        this.keyFormatPromise = this.getKeyFormatPromise(keyFormats);\n      }\n      this.keyFormatPromise.then((keySystemFormat) => {\n        const keySystem = keySystemFormatToKeySystemDomain(keySystemFormat);\n        let keyId;\n        let keySystemDomain;\n        if (initDataType === \"sinf\") {\n          if (keySystem !== KeySystems.FAIRPLAY) {\n            this.warn(`Ignoring unexpected \"${event.type}\" event with init data type: \"${initDataType}\" for selected key-system ${keySystem}`);\n            return;\n          }\n          const json = bin2str(new Uint8Array(initData));\n          try {\n            const sinf = base64Decode(JSON.parse(json).sinf);\n            const tenc = parseSinf(sinf);\n            if (!tenc) {\n              throw new Error(`'schm' box missing or not cbcs/cenc with schi > tenc`);\n            }\n            keyId = tenc.subarray(8, 24);\n            keySystemDomain = KeySystems.FAIRPLAY;\n          } catch (error) {\n            this.warn(`${logMessage} Failed to parse sinf: ${error}`);\n            return;\n          }\n        } else {\n          if (keySystem !== KeySystems.WIDEVINE && keySystem !== KeySystems.PLAYREADY) {\n            this.warn(`Ignoring unexpected \"${event.type}\" event with init data type: \"${initDataType}\" for selected key-system ${keySystem}`);\n            return;\n          }\n          const psshResults = parseMultiPssh(initData);\n          const psshInfos = psshResults.filter((pssh) => !!pssh.systemId && keySystemIdToKeySystemDomain(pssh.systemId) === keySystem);\n          if (psshInfos.length > 1) {\n            this.warn(`${logMessage} Using first of ${psshInfos.length} pssh found for selected key-system ${keySystem}`);\n          }\n          const psshInfo = psshInfos[0];\n          if (!psshInfo) {\n            if (psshResults.length === 0 || psshResults.some((pssh) => !pssh.systemId)) {\n              this.warn(`${logMessage} contains incomplete or invalid pssh data`);\n            } else {\n              this.log(`ignoring ${logMessage} for ${psshResults.map((pssh) => keySystemIdToKeySystemDomain(pssh.systemId)).join(\",\")} pssh data in favor of playlist keys`);\n            }\n            return;\n          }\n          keySystemDomain = keySystemIdToKeySystemDomain(psshInfo.systemId);\n          if (psshInfo.version === 0 && psshInfo.data) {\n            if (keySystemDomain === KeySystems.WIDEVINE) {\n              const offset = psshInfo.data.length - 22;\n              keyId = psshInfo.data.subarray(offset, offset + 16);\n            } else if (keySystemDomain === KeySystems.PLAYREADY) {\n              keyId = parsePlayReadyWRM(psshInfo.data);\n            }\n          }\n        }\n        if (!keySystemDomain || !keyId) {\n          this.log(`Unable to handle ${logMessage} with key-system ${keySystem}`);\n          return;\n        }\n        const keyIdHex = Hex.hexDump(keyId);\n        const {\n          keyIdToKeySessionPromise,\n          mediaKeySessions\n        } = this;\n        let keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex];\n        for (let i2 = 0; i2 < mediaKeySessions.length; i2++) {\n          const keyContext = mediaKeySessions[i2];\n          const decryptdata = keyContext.decryptdata;\n          if (!decryptdata.keyId) {\n            continue;\n          }\n          const oldKeyIdHex = Hex.hexDump(decryptdata.keyId);\n          if (keyIdHex === oldKeyIdHex || decryptdata.uri.replace(/-/g, \"\").indexOf(keyIdHex) !== -1) {\n            keySessionContextPromise = keyIdToKeySessionPromise[oldKeyIdHex];\n            if (decryptdata.pssh) {\n              break;\n            }\n            delete keyIdToKeySessionPromise[oldKeyIdHex];\n            decryptdata.pssh = new Uint8Array(initData);\n            decryptdata.keyId = keyId;\n            keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] = keySessionContextPromise.then(() => {\n              return this.generateRequestWithPreferredKeySession(keyContext, initDataType, initData, \"encrypted-event-key-match\");\n            });\n            keySessionContextPromise.catch((error) => this.handleError(error));\n            break;\n          }\n        }\n        if (!keySessionContextPromise) {\n          if (keySystemDomain !== keySystem) {\n            this.log(`Ignoring \"${logMessage}\" with ${keySystemDomain} init data for selected key-system ${keySystem}`);\n            return;\n          }\n          keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] = this.getKeySystemSelectionPromise([keySystemDomain]).then(({\n            keySystem: keySystem2,\n            mediaKeys\n          }) => {\n            var _keySystemToKeySystem;\n            this.throwIfDestroyed();\n            const decryptdata = new LevelKey(\"ISO-23001-7\", keyIdHex, (_keySystemToKeySystem = keySystemDomainToKeySystemFormat(keySystem2)) != null ? _keySystemToKeySystem : \"\");\n            decryptdata.pssh = new Uint8Array(initData);\n            decryptdata.keyId = keyId;\n            return this.attemptSetMediaKeys(keySystem2, mediaKeys).then(() => {\n              this.throwIfDestroyed();\n              const keySessionContext = this.createMediaKeySessionContext({\n                decryptdata,\n                keySystem: keySystem2,\n                mediaKeys\n              });\n              return this.generateRequestWithPreferredKeySession(keySessionContext, initDataType, initData, \"encrypted-event-no-match\");\n            });\n          });\n          keySessionContextPromise.catch((error) => this.handleError(error));\n        }\n      });\n    };\n    this.onWaitingForKey = (event) => {\n      this.log(`\"${event.type}\" event`);\n    };\n    this.hls = hls;\n    this.config = hls.config;\n    this.registerListeners();\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.onMediaDetached();\n    const config = this.config;\n    config.requestMediaKeySystemAccessFunc = null;\n    config.licenseXhrSetup = config.licenseResponseCallback = void 0;\n    config.drmSystems = config.drmSystemOptions = {};\n    this.hls = this.config = this.keyIdToKeySessionPromise = null;\n    this.onMediaEncrypted = this.onWaitingForKey = null;\n  }\n  registerListeners() {\n    this.hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    this.hls.on(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n    this.hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    this.hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n  }\n  unregisterListeners() {\n    this.hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    this.hls.off(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n    this.hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    this.hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n  }\n  getLicenseServerUrl(keySystem) {\n    const {\n      drmSystems,\n      widevineLicenseUrl\n    } = this.config;\n    const keySystemConfiguration = drmSystems[keySystem];\n    if (keySystemConfiguration) {\n      return keySystemConfiguration.licenseUrl;\n    }\n    if (keySystem === KeySystems.WIDEVINE && widevineLicenseUrl) {\n      return widevineLicenseUrl;\n    }\n  }\n  getLicenseServerUrlOrThrow(keySystem) {\n    const url = this.getLicenseServerUrl(keySystem);\n    if (url === void 0) {\n      throw new Error(`no license server URL configured for key-system \"${keySystem}\"`);\n    }\n    return url;\n  }\n  getServerCertificateUrl(keySystem) {\n    const {\n      drmSystems\n    } = this.config;\n    const keySystemConfiguration = drmSystems[keySystem];\n    if (keySystemConfiguration) {\n      return keySystemConfiguration.serverCertificateUrl;\n    } else {\n      this.log(`No Server Certificate in config.drmSystems[\"${keySystem}\"]`);\n    }\n  }\n  attemptKeySystemAccess(keySystemsToAttempt) {\n    const levels = this.hls.levels;\n    const uniqueCodec = (value, i2, a2) => !!value && a2.indexOf(value) === i2;\n    const audioCodecs = levels.map((level) => level.audioCodec).filter(uniqueCodec);\n    const videoCodecs = levels.map((level) => level.videoCodec).filter(uniqueCodec);\n    if (audioCodecs.length + videoCodecs.length === 0) {\n      videoCodecs.push(\"avc1.42e01e\");\n    }\n    return new Promise((resolve, reject) => {\n      const attempt = (keySystems) => {\n        const keySystem = keySystems.shift();\n        this.getMediaKeysPromise(keySystem, audioCodecs, videoCodecs).then((mediaKeys) => resolve({\n          keySystem,\n          mediaKeys\n        })).catch((error) => {\n          if (keySystems.length) {\n            attempt(keySystems);\n          } else if (error instanceof EMEKeyError) {\n            reject(error);\n          } else {\n            reject(new EMEKeyError({\n              type: ErrorTypes.KEY_SYSTEM_ERROR,\n              details: ErrorDetails.KEY_SYSTEM_NO_ACCESS,\n              error,\n              fatal: true\n            }, error.message));\n          }\n        });\n      };\n      attempt(keySystemsToAttempt);\n    });\n  }\n  requestMediaKeySystemAccess(keySystem, supportedConfigurations) {\n    const {\n      requestMediaKeySystemAccessFunc\n    } = this.config;\n    if (!(typeof requestMediaKeySystemAccessFunc === \"function\")) {\n      let errMessage = `Configured requestMediaKeySystemAccess is not a function ${requestMediaKeySystemAccessFunc}`;\n      if (requestMediaKeySystemAccess === null && self.location.protocol === \"http:\") {\n        errMessage = `navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`;\n      }\n      return Promise.reject(new Error(errMessage));\n    }\n    return requestMediaKeySystemAccessFunc(keySystem, supportedConfigurations);\n  }\n  getMediaKeysPromise(keySystem, audioCodecs, videoCodecs) {\n    const mediaKeySystemConfigs = getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, this.config.drmSystemOptions);\n    const keySystemAccessPromises = this.keySystemAccessPromises[keySystem];\n    let keySystemAccess = keySystemAccessPromises == null ? void 0 : keySystemAccessPromises.keySystemAccess;\n    if (!keySystemAccess) {\n      this.log(`Requesting encrypted media \"${keySystem}\" key-system access with config: ${JSON.stringify(mediaKeySystemConfigs)}`);\n      keySystemAccess = this.requestMediaKeySystemAccess(keySystem, mediaKeySystemConfigs);\n      const _keySystemAccessPromises = this.keySystemAccessPromises[keySystem] = {\n        keySystemAccess\n      };\n      keySystemAccess.catch((error) => {\n        this.log(`Failed to obtain access to key-system \"${keySystem}\": ${error}`);\n      });\n      return keySystemAccess.then((mediaKeySystemAccess) => {\n        this.log(`Access for key-system \"${mediaKeySystemAccess.keySystem}\" obtained`);\n        const certificateRequest = this.fetchServerCertificate(keySystem);\n        this.log(`Create media-keys for \"${keySystem}\"`);\n        _keySystemAccessPromises.mediaKeys = mediaKeySystemAccess.createMediaKeys().then((mediaKeys) => {\n          this.log(`Media-keys created for \"${keySystem}\"`);\n          return certificateRequest.then((certificate) => {\n            if (certificate) {\n              return this.setMediaKeysServerCertificate(mediaKeys, keySystem, certificate);\n            }\n            return mediaKeys;\n          });\n        });\n        _keySystemAccessPromises.mediaKeys.catch((error) => {\n          this.error(`Failed to create media-keys for \"${keySystem}\"}: ${error}`);\n        });\n        return _keySystemAccessPromises.mediaKeys;\n      });\n    }\n    return keySystemAccess.then(() => keySystemAccessPromises.mediaKeys);\n  }\n  createMediaKeySessionContext({\n    decryptdata,\n    keySystem,\n    mediaKeys\n  }) {\n    this.log(`Creating key-system session \"${keySystem}\" keyId: ${Hex.hexDump(decryptdata.keyId || [])}`);\n    const mediaKeysSession = mediaKeys.createSession();\n    const mediaKeySessionContext = {\n      decryptdata,\n      keySystem,\n      mediaKeys,\n      mediaKeysSession,\n      keyStatus: \"status-pending\"\n    };\n    this.mediaKeySessions.push(mediaKeySessionContext);\n    return mediaKeySessionContext;\n  }\n  renewKeySession(mediaKeySessionContext) {\n    const decryptdata = mediaKeySessionContext.decryptdata;\n    if (decryptdata.pssh) {\n      const keySessionContext = this.createMediaKeySessionContext(mediaKeySessionContext);\n      const keyId = this.getKeyIdString(decryptdata);\n      const scheme = \"cenc\";\n      this.keyIdToKeySessionPromise[keyId] = this.generateRequestWithPreferredKeySession(keySessionContext, scheme, decryptdata.pssh, \"expired\");\n    } else {\n      this.warn(`Could not renew expired session. Missing pssh initData.`);\n    }\n    this.removeSession(mediaKeySessionContext);\n  }\n  getKeyIdString(decryptdata) {\n    if (!decryptdata) {\n      throw new Error(\"Could not read keyId of undefined decryptdata\");\n    }\n    if (decryptdata.keyId === null) {\n      throw new Error(\"keyId is null\");\n    }\n    return Hex.hexDump(decryptdata.keyId);\n  }\n  updateKeySession(mediaKeySessionContext, data) {\n    var _mediaKeySessionConte;\n    const keySession = mediaKeySessionContext.mediaKeysSession;\n    this.log(`Updating key-session \"${keySession.sessionId}\" for keyID ${Hex.hexDump(((_mediaKeySessionConte = mediaKeySessionContext.decryptdata) == null ? void 0 : _mediaKeySessionConte.keyId) || [])}\n      } (data length: ${data ? data.byteLength : data})`);\n    return keySession.update(data);\n  }\n  selectKeySystemFormat(frag) {\n    const keyFormats = Object.keys(frag.levelkeys || {});\n    if (!this.keyFormatPromise) {\n      this.log(`Selecting key-system from fragment (sn: ${frag.sn} ${frag.type}: ${frag.level}) key formats ${keyFormats.join(\", \")}`);\n      this.keyFormatPromise = this.getKeyFormatPromise(keyFormats);\n    }\n    return this.keyFormatPromise;\n  }\n  getKeyFormatPromise(keyFormats) {\n    return new Promise((resolve, reject) => {\n      const keySystemsInConfig = getKeySystemsForConfig(this.config);\n      const keySystemsToAttempt = keyFormats.map(keySystemFormatToKeySystemDomain).filter((value) => !!value && keySystemsInConfig.indexOf(value) !== -1);\n      return this.getKeySystemSelectionPromise(keySystemsToAttempt).then(({\n        keySystem\n      }) => {\n        const keySystemFormat = keySystemDomainToKeySystemFormat(keySystem);\n        if (keySystemFormat) {\n          resolve(keySystemFormat);\n        } else {\n          reject(new Error(`Unable to find format for key-system \"${keySystem}\"`));\n        }\n      }).catch(reject);\n    });\n  }\n  loadKey(data) {\n    const decryptdata = data.keyInfo.decryptdata;\n    const keyId = this.getKeyIdString(decryptdata);\n    const keyDetails = `(keyId: ${keyId} format: \"${decryptdata.keyFormat}\" method: ${decryptdata.method} uri: ${decryptdata.uri})`;\n    this.log(`Starting session for key ${keyDetails}`);\n    let keySessionContextPromise = this.keyIdToKeySessionPromise[keyId];\n    if (!keySessionContextPromise) {\n      keySessionContextPromise = this.keyIdToKeySessionPromise[keyId] = this.getKeySystemForKeyPromise(decryptdata).then(({\n        keySystem,\n        mediaKeys\n      }) => {\n        this.throwIfDestroyed();\n        this.log(`Handle encrypted media sn: ${data.frag.sn} ${data.frag.type}: ${data.frag.level} using key ${keyDetails}`);\n        return this.attemptSetMediaKeys(keySystem, mediaKeys).then(() => {\n          this.throwIfDestroyed();\n          const keySessionContext = this.createMediaKeySessionContext({\n            keySystem,\n            mediaKeys,\n            decryptdata\n          });\n          const scheme = \"cenc\";\n          return this.generateRequestWithPreferredKeySession(keySessionContext, scheme, decryptdata.pssh, \"playlist-key\");\n        });\n      });\n      keySessionContextPromise.catch((error) => this.handleError(error));\n    }\n    return keySessionContextPromise;\n  }\n  throwIfDestroyed(message = \"Invalid state\") {\n    if (!this.hls) {\n      throw new Error(\"invalid state\");\n    }\n  }\n  handleError(error) {\n    if (!this.hls) {\n      return;\n    }\n    this.error(error.message);\n    if (error instanceof EMEKeyError) {\n      this.hls.trigger(Events.ERROR, error.data);\n    } else {\n      this.hls.trigger(Events.ERROR, {\n        type: ErrorTypes.KEY_SYSTEM_ERROR,\n        details: ErrorDetails.KEY_SYSTEM_NO_KEYS,\n        error,\n        fatal: true\n      });\n    }\n  }\n  getKeySystemForKeyPromise(decryptdata) {\n    const keyId = this.getKeyIdString(decryptdata);\n    const mediaKeySessionContext = this.keyIdToKeySessionPromise[keyId];\n    if (!mediaKeySessionContext) {\n      const keySystem = keySystemFormatToKeySystemDomain(decryptdata.keyFormat);\n      const keySystemsToAttempt = keySystem ? [keySystem] : getKeySystemsForConfig(this.config);\n      return this.attemptKeySystemAccess(keySystemsToAttempt);\n    }\n    return mediaKeySessionContext;\n  }\n  getKeySystemSelectionPromise(keySystemsToAttempt) {\n    if (!keySystemsToAttempt.length) {\n      keySystemsToAttempt = getKeySystemsForConfig(this.config);\n    }\n    if (keySystemsToAttempt.length === 0) {\n      throw new EMEKeyError({\n        type: ErrorTypes.KEY_SYSTEM_ERROR,\n        details: ErrorDetails.KEY_SYSTEM_NO_CONFIGURED_LICENSE,\n        fatal: true\n      }, `Missing key-system license configuration options ${JSON.stringify({\n        drmSystems: this.config.drmSystems\n      })}`);\n    }\n    return this.attemptKeySystemAccess(keySystemsToAttempt);\n  }\n  attemptSetMediaKeys(keySystem, mediaKeys) {\n    const queue = this.setMediaKeysQueue.slice();\n    this.log(`Setting media-keys for \"${keySystem}\"`);\n    const setMediaKeysPromise = Promise.all(queue).then(() => {\n      if (!this.media) {\n        throw new Error(\"Attempted to set mediaKeys without media element attached\");\n      }\n      return this.media.setMediaKeys(mediaKeys);\n    });\n    this.setMediaKeysQueue.push(setMediaKeysPromise);\n    return setMediaKeysPromise.then(() => {\n      this.log(`Media-keys set for \"${keySystem}\"`);\n      queue.push(setMediaKeysPromise);\n      this.setMediaKeysQueue = this.setMediaKeysQueue.filter((p3) => queue.indexOf(p3) === -1);\n    });\n  }\n  generateRequestWithPreferredKeySession(context, initDataType, initData, reason) {\n    var _this$config$drmSyste, _this$config$drmSyste2;\n    const generateRequestFilter = (_this$config$drmSyste = this.config.drmSystems) == null ? void 0 : (_this$config$drmSyste2 = _this$config$drmSyste[context.keySystem]) == null ? void 0 : _this$config$drmSyste2.generateRequest;\n    if (generateRequestFilter) {\n      try {\n        const mappedInitData = generateRequestFilter.call(this.hls, initDataType, initData, context);\n        if (!mappedInitData) {\n          throw new Error(\"Invalid response from configured generateRequest filter\");\n        }\n        initDataType = mappedInitData.initDataType;\n        initData = context.decryptdata.pssh = mappedInitData.initData ? new Uint8Array(mappedInitData.initData) : null;\n      } catch (error) {\n        var _this$hls;\n        this.warn(error.message);\n        if ((_this$hls = this.hls) != null && _this$hls.config.debug) {\n          throw error;\n        }\n      }\n    }\n    if (initData === null) {\n      this.log(`Skipping key-session request for \"${reason}\" (no initData)`);\n      return Promise.resolve(context);\n    }\n    const keyId = this.getKeyIdString(context.decryptdata);\n    this.log(`Generating key-session request for \"${reason}\": ${keyId} (init data type: ${initDataType} length: ${initData ? initData.byteLength : null})`);\n    const licenseStatus = new EventEmitter();\n    const onmessage = context._onmessage = (event) => {\n      const keySession = context.mediaKeysSession;\n      if (!keySession) {\n        licenseStatus.emit(\"error\", new Error(\"invalid state\"));\n        return;\n      }\n      const {\n        messageType,\n        message\n      } = event;\n      this.log(`\"${messageType}\" message event for session \"${keySession.sessionId}\" message size: ${message.byteLength}`);\n      if (messageType === \"license-request\" || messageType === \"license-renewal\") {\n        this.renewLicense(context, message).catch((error) => {\n          this.handleError(error);\n          licenseStatus.emit(\"error\", error);\n        });\n      } else if (messageType === \"license-release\") {\n        if (context.keySystem === KeySystems.FAIRPLAY) {\n          this.updateKeySession(context, strToUtf8array(\"acknowledged\"));\n          this.removeSession(context);\n        }\n      } else {\n        this.warn(`unhandled media key message type \"${messageType}\"`);\n      }\n    };\n    const onkeystatuseschange = context._onkeystatuseschange = (event) => {\n      const keySession = context.mediaKeysSession;\n      if (!keySession) {\n        licenseStatus.emit(\"error\", new Error(\"invalid state\"));\n        return;\n      }\n      this.onKeyStatusChange(context);\n      const keyStatus = context.keyStatus;\n      licenseStatus.emit(\"keyStatus\", keyStatus);\n      if (keyStatus === \"expired\") {\n        this.warn(`${context.keySystem} expired for key ${keyId}`);\n        this.renewKeySession(context);\n      }\n    };\n    context.mediaKeysSession.addEventListener(\"message\", onmessage);\n    context.mediaKeysSession.addEventListener(\"keystatuseschange\", onkeystatuseschange);\n    const keyUsablePromise = new Promise((resolve, reject) => {\n      licenseStatus.on(\"error\", reject);\n      licenseStatus.on(\"keyStatus\", (keyStatus) => {\n        if (keyStatus.startsWith(\"usable\")) {\n          resolve();\n        } else if (keyStatus === \"output-restricted\") {\n          reject(new EMEKeyError({\n            type: ErrorTypes.KEY_SYSTEM_ERROR,\n            details: ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,\n            fatal: false\n          }, \"HDCP level output restricted\"));\n        } else if (keyStatus === \"internal-error\") {\n          reject(new EMEKeyError({\n            type: ErrorTypes.KEY_SYSTEM_ERROR,\n            details: ErrorDetails.KEY_SYSTEM_STATUS_INTERNAL_ERROR,\n            fatal: true\n          }, `key status changed to \"${keyStatus}\"`));\n        } else if (keyStatus === \"expired\") {\n          reject(new Error(\"key expired while generating request\"));\n        } else {\n          this.warn(`unhandled key status change \"${keyStatus}\"`);\n        }\n      });\n    });\n    return context.mediaKeysSession.generateRequest(initDataType, initData).then(() => {\n      var _context$mediaKeysSes;\n      this.log(`Request generated for key-session \"${(_context$mediaKeysSes = context.mediaKeysSession) == null ? void 0 : _context$mediaKeysSes.sessionId}\" keyId: ${keyId}`);\n    }).catch((error) => {\n      throw new EMEKeyError({\n        type: ErrorTypes.KEY_SYSTEM_ERROR,\n        details: ErrorDetails.KEY_SYSTEM_NO_SESSION,\n        error,\n        fatal: false\n      }, `Error generating key-session request: ${error}`);\n    }).then(() => keyUsablePromise).catch((error) => {\n      licenseStatus.removeAllListeners();\n      this.removeSession(context);\n      throw error;\n    }).then(() => {\n      licenseStatus.removeAllListeners();\n      return context;\n    });\n  }\n  onKeyStatusChange(mediaKeySessionContext) {\n    mediaKeySessionContext.mediaKeysSession.keyStatuses.forEach((status2, keyId) => {\n      this.log(`key status change \"${status2}\" for keyStatuses keyId: ${Hex.hexDump(\"buffer\" in keyId ? new Uint8Array(keyId.buffer, keyId.byteOffset, keyId.byteLength) : new Uint8Array(keyId))} session keyId: ${Hex.hexDump(new Uint8Array(mediaKeySessionContext.decryptdata.keyId || []))} uri: ${mediaKeySessionContext.decryptdata.uri}`);\n      mediaKeySessionContext.keyStatus = status2;\n    });\n  }\n  fetchServerCertificate(keySystem) {\n    const config = this.config;\n    const Loader = config.loader;\n    const certLoader = new Loader(config);\n    const url = this.getServerCertificateUrl(keySystem);\n    if (!url) {\n      return Promise.resolve();\n    }\n    this.log(`Fetching server certificate for \"${keySystem}\"`);\n    return new Promise((resolve, reject) => {\n      const loaderContext = {\n        responseType: \"arraybuffer\",\n        url\n      };\n      const loadPolicy = config.certLoadPolicy.default;\n      const loaderConfig = {\n        loadPolicy,\n        timeout: loadPolicy.maxLoadTimeMs,\n        maxRetry: 0,\n        retryDelay: 0,\n        maxRetryDelay: 0\n      };\n      const loaderCallbacks = {\n        onSuccess: (response, stats, context, networkDetails) => {\n          resolve(response.data);\n        },\n        onError: (response, contex, networkDetails, stats) => {\n          reject(new EMEKeyError({\n            type: ErrorTypes.KEY_SYSTEM_ERROR,\n            details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,\n            fatal: true,\n            networkDetails,\n            response: _objectSpread2({\n              url: loaderContext.url,\n              data: void 0\n            }, response)\n          }, `\"${keySystem}\" certificate request failed (${url}). Status: ${response.code} (${response.text})`));\n        },\n        onTimeout: (stats, context, networkDetails) => {\n          reject(new EMEKeyError({\n            type: ErrorTypes.KEY_SYSTEM_ERROR,\n            details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,\n            fatal: true,\n            networkDetails,\n            response: {\n              url: loaderContext.url,\n              data: void 0\n            }\n          }, `\"${keySystem}\" certificate request timed out (${url})`));\n        },\n        onAbort: (stats, context, networkDetails) => {\n          reject(new Error(\"aborted\"));\n        }\n      };\n      certLoader.load(loaderContext, loaderConfig, loaderCallbacks);\n    });\n  }\n  setMediaKeysServerCertificate(mediaKeys, keySystem, cert) {\n    return new Promise((resolve, reject) => {\n      mediaKeys.setServerCertificate(cert).then((success) => {\n        this.log(`setServerCertificate ${success ? \"success\" : \"not supported by CDM\"} (${cert == null ? void 0 : cert.byteLength}) on \"${keySystem}\"`);\n        resolve(mediaKeys);\n      }).catch((error) => {\n        reject(new EMEKeyError({\n          type: ErrorTypes.KEY_SYSTEM_ERROR,\n          details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,\n          error,\n          fatal: true\n        }, error.message));\n      });\n    });\n  }\n  renewLicense(context, keyMessage) {\n    return this.requestLicense(context, new Uint8Array(keyMessage)).then((data) => {\n      return this.updateKeySession(context, new Uint8Array(data)).catch((error) => {\n        throw new EMEKeyError({\n          type: ErrorTypes.KEY_SYSTEM_ERROR,\n          details: ErrorDetails.KEY_SYSTEM_SESSION_UPDATE_FAILED,\n          error,\n          fatal: true\n        }, error.message);\n      });\n    });\n  }\n  unpackPlayReadyKeyMessage(xhr, licenseChallenge) {\n    const xmlString = String.fromCharCode.apply(null, new Uint16Array(licenseChallenge.buffer));\n    if (!xmlString.includes(\"PlayReadyKeyMessage\")) {\n      xhr.setRequestHeader(\"Content-Type\", \"text/xml; charset=utf-8\");\n      return licenseChallenge;\n    }\n    const keyMessageXml = new DOMParser().parseFromString(xmlString, \"application/xml\");\n    const headers = keyMessageXml.querySelectorAll(\"HttpHeader\");\n    if (headers.length > 0) {\n      let header;\n      for (let i2 = 0, len = headers.length; i2 < len; i2++) {\n        var _header$querySelector, _header$querySelector2;\n        header = headers[i2];\n        const name = (_header$querySelector = header.querySelector(\"name\")) == null ? void 0 : _header$querySelector.textContent;\n        const value = (_header$querySelector2 = header.querySelector(\"value\")) == null ? void 0 : _header$querySelector2.textContent;\n        if (name && value) {\n          xhr.setRequestHeader(name, value);\n        }\n      }\n    }\n    const challengeElement = keyMessageXml.querySelector(\"Challenge\");\n    const challengeText = challengeElement == null ? void 0 : challengeElement.textContent;\n    if (!challengeText) {\n      throw new Error(`Cannot find <Challenge> in key message`);\n    }\n    return strToUtf8array(atob(challengeText));\n  }\n  setupLicenseXHR(xhr, url, keysListItem, licenseChallenge) {\n    const licenseXhrSetup = this.config.licenseXhrSetup;\n    if (!licenseXhrSetup) {\n      xhr.open(\"POST\", url, true);\n      return Promise.resolve({\n        xhr,\n        licenseChallenge\n      });\n    }\n    return Promise.resolve().then(() => {\n      if (!keysListItem.decryptdata) {\n        throw new Error(\"Key removed\");\n      }\n      return licenseXhrSetup.call(this.hls, xhr, url, keysListItem, licenseChallenge);\n    }).catch((error) => {\n      if (!keysListItem.decryptdata) {\n        throw error;\n      }\n      xhr.open(\"POST\", url, true);\n      return licenseXhrSetup.call(this.hls, xhr, url, keysListItem, licenseChallenge);\n    }).then((licenseXhrSetupResult) => {\n      if (!xhr.readyState) {\n        xhr.open(\"POST\", url, true);\n      }\n      const finalLicenseChallenge = licenseXhrSetupResult ? licenseXhrSetupResult : licenseChallenge;\n      return {\n        xhr,\n        licenseChallenge: finalLicenseChallenge\n      };\n    });\n  }\n  requestLicense(keySessionContext, licenseChallenge) {\n    const keyLoadPolicy = this.config.keyLoadPolicy.default;\n    return new Promise((resolve, reject) => {\n      const url = this.getLicenseServerUrlOrThrow(keySessionContext.keySystem);\n      this.log(`Sending license request to URL: ${url}`);\n      const xhr = new XMLHttpRequest();\n      xhr.responseType = \"arraybuffer\";\n      xhr.onreadystatechange = () => {\n        if (!this.hls || !keySessionContext.mediaKeysSession) {\n          return reject(new Error(\"invalid state\"));\n        }\n        if (xhr.readyState === 4) {\n          if (xhr.status === 200) {\n            this._requestLicenseFailureCount = 0;\n            let data = xhr.response;\n            this.log(`License received ${data instanceof ArrayBuffer ? data.byteLength : data}`);\n            const licenseResponseCallback = this.config.licenseResponseCallback;\n            if (licenseResponseCallback) {\n              try {\n                data = licenseResponseCallback.call(this.hls, xhr, url, keySessionContext);\n              } catch (error) {\n                this.error(error);\n              }\n            }\n            resolve(data);\n          } else {\n            const retryConfig = keyLoadPolicy.errorRetry;\n            const maxNumRetry = retryConfig ? retryConfig.maxNumRetry : 0;\n            this._requestLicenseFailureCount++;\n            if (this._requestLicenseFailureCount > maxNumRetry || xhr.status >= 400 && xhr.status < 500) {\n              reject(new EMEKeyError({\n                type: ErrorTypes.KEY_SYSTEM_ERROR,\n                details: ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n                fatal: true,\n                networkDetails: xhr,\n                response: {\n                  url,\n                  data: void 0,\n                  code: xhr.status,\n                  text: xhr.statusText\n                }\n              }, `License Request XHR failed (${url}). Status: ${xhr.status} (${xhr.statusText})`));\n            } else {\n              const attemptsLeft = maxNumRetry - this._requestLicenseFailureCount + 1;\n              this.warn(`Retrying license request, ${attemptsLeft} attempts left`);\n              this.requestLicense(keySessionContext, licenseChallenge).then(resolve, reject);\n            }\n          }\n        }\n      };\n      if (keySessionContext.licenseXhr && keySessionContext.licenseXhr.readyState !== XMLHttpRequest.DONE) {\n        keySessionContext.licenseXhr.abort();\n      }\n      keySessionContext.licenseXhr = xhr;\n      this.setupLicenseXHR(xhr, url, keySessionContext, licenseChallenge).then(({\n        xhr: xhr2,\n        licenseChallenge: licenseChallenge2\n      }) => {\n        if (keySessionContext.keySystem == KeySystems.PLAYREADY) {\n          licenseChallenge2 = this.unpackPlayReadyKeyMessage(xhr2, licenseChallenge2);\n        }\n        xhr2.send(licenseChallenge2);\n      });\n    });\n  }\n  onMediaAttached(event, data) {\n    if (!this.config.emeEnabled) {\n      return;\n    }\n    const media = data.media;\n    this.media = media;\n    media.removeEventListener(\"encrypted\", this.onMediaEncrypted);\n    media.removeEventListener(\"waitingforkey\", this.onWaitingForKey);\n    media.addEventListener(\"encrypted\", this.onMediaEncrypted);\n    media.addEventListener(\"waitingforkey\", this.onWaitingForKey);\n  }\n  onMediaDetached() {\n    const media = this.media;\n    const mediaKeysList = this.mediaKeySessions;\n    if (media) {\n      media.removeEventListener(\"encrypted\", this.onMediaEncrypted);\n      media.removeEventListener(\"waitingforkey\", this.onWaitingForKey);\n      this.media = null;\n    }\n    this._requestLicenseFailureCount = 0;\n    this.setMediaKeysQueue = [];\n    this.mediaKeySessions = [];\n    this.keyIdToKeySessionPromise = {};\n    LevelKey.clearKeyUriToKeyIdMap();\n    const keySessionCount = mediaKeysList.length;\n    _EMEController.CDMCleanupPromise = Promise.all(mediaKeysList.map((mediaKeySessionContext) => this.removeSession(mediaKeySessionContext)).concat(media == null ? void 0 : media.setMediaKeys(null).catch((error) => {\n      this.log(`Could not clear media keys: ${error}`);\n    }))).then(() => {\n      if (keySessionCount) {\n        this.log(\"finished closing key sessions and clearing media keys\");\n        mediaKeysList.length = 0;\n      }\n    }).catch((error) => {\n      this.log(`Could not close sessions and clear media keys: ${error}`);\n    });\n  }\n  onManifestLoading() {\n    this.keyFormatPromise = null;\n  }\n  onManifestLoaded(event, {\n    sessionKeys\n  }) {\n    if (!sessionKeys || !this.config.emeEnabled) {\n      return;\n    }\n    if (!this.keyFormatPromise) {\n      const keyFormats = sessionKeys.reduce((formats, sessionKey) => {\n        if (formats.indexOf(sessionKey.keyFormat) === -1) {\n          formats.push(sessionKey.keyFormat);\n        }\n        return formats;\n      }, []);\n      this.log(`Selecting key-system from session-keys ${keyFormats.join(\", \")}`);\n      this.keyFormatPromise = this.getKeyFormatPromise(keyFormats);\n    }\n  }\n  removeSession(mediaKeySessionContext) {\n    const {\n      mediaKeysSession,\n      licenseXhr\n    } = mediaKeySessionContext;\n    if (mediaKeysSession) {\n      this.log(`Remove licenses and keys and close session ${mediaKeysSession.sessionId}`);\n      if (mediaKeySessionContext._onmessage) {\n        mediaKeysSession.removeEventListener(\"message\", mediaKeySessionContext._onmessage);\n        mediaKeySessionContext._onmessage = void 0;\n      }\n      if (mediaKeySessionContext._onkeystatuseschange) {\n        mediaKeysSession.removeEventListener(\"keystatuseschange\", mediaKeySessionContext._onkeystatuseschange);\n        mediaKeySessionContext._onkeystatuseschange = void 0;\n      }\n      if (licenseXhr && licenseXhr.readyState !== XMLHttpRequest.DONE) {\n        licenseXhr.abort();\n      }\n      mediaKeySessionContext.mediaKeysSession = mediaKeySessionContext.decryptdata = mediaKeySessionContext.licenseXhr = void 0;\n      const index = this.mediaKeySessions.indexOf(mediaKeySessionContext);\n      if (index > -1) {\n        this.mediaKeySessions.splice(index, 1);\n      }\n      return mediaKeysSession.remove().catch((error) => {\n        this.log(`Could not remove session: ${error}`);\n      }).then(() => {\n        return mediaKeysSession.close();\n      }).catch((error) => {\n        this.log(`Could not close session: ${error}`);\n      });\n    }\n  }\n};\nEMEController.CDMCleanupPromise = void 0;\nvar EMEKeyError = class extends Error {\n  constructor(data, message) {\n    super(message);\n    this.data = void 0;\n    data.error || (data.error = new Error(message));\n    this.data = data;\n    data.err = data.error;\n  }\n};\nvar CmObjectType;\n(function(CmObjectType2) {\n  CmObjectType2[\"MANIFEST\"] = \"m\";\n  CmObjectType2[\"AUDIO\"] = \"a\";\n  CmObjectType2[\"VIDEO\"] = \"v\";\n  CmObjectType2[\"MUXED\"] = \"av\";\n  CmObjectType2[\"INIT\"] = \"i\";\n  CmObjectType2[\"CAPTION\"] = \"c\";\n  CmObjectType2[\"TIMED_TEXT\"] = \"tt\";\n  CmObjectType2[\"KEY\"] = \"k\";\n  CmObjectType2[\"OTHER\"] = \"o\";\n})(CmObjectType || (CmObjectType = {}));\nvar CmStreamingFormat;\n(function(CmStreamingFormat2) {\n  CmStreamingFormat2[\"DASH\"] = \"d\";\n  CmStreamingFormat2[\"HLS\"] = \"h\";\n  CmStreamingFormat2[\"SMOOTH\"] = \"s\";\n  CmStreamingFormat2[\"OTHER\"] = \"o\";\n})(CmStreamingFormat || (CmStreamingFormat = {}));\nvar CmcdHeaderField;\n(function(CmcdHeaderField2) {\n  CmcdHeaderField2[\"OBJECT\"] = \"CMCD-Object\";\n  CmcdHeaderField2[\"REQUEST\"] = \"CMCD-Request\";\n  CmcdHeaderField2[\"SESSION\"] = \"CMCD-Session\";\n  CmcdHeaderField2[\"STATUS\"] = \"CMCD-Status\";\n})(CmcdHeaderField || (CmcdHeaderField = {}));\nvar CmcdHeaderMap = {\n  [CmcdHeaderField.OBJECT]: [\"br\", \"d\", \"ot\", \"tb\"],\n  [CmcdHeaderField.REQUEST]: [\"bl\", \"dl\", \"mtp\", \"nor\", \"nrr\", \"su\"],\n  [CmcdHeaderField.SESSION]: [\"cid\", \"pr\", \"sf\", \"sid\", \"st\", \"v\"],\n  [CmcdHeaderField.STATUS]: [\"bs\", \"rtp\"]\n};\nvar SfItem = class _SfItem {\n  constructor(value, params) {\n    this.value = void 0;\n    this.params = void 0;\n    if (Array.isArray(value)) {\n      value = value.map((v4) => v4 instanceof _SfItem ? v4 : new _SfItem(v4));\n    }\n    this.value = value;\n    this.params = params;\n  }\n};\nvar SfToken = class {\n  constructor(description) {\n    this.description = void 0;\n    this.description = description;\n  }\n};\nvar DICT = \"Dict\";\nfunction format(value) {\n  if (Array.isArray(value)) {\n    return JSON.stringify(value);\n  }\n  if (value instanceof Map) {\n    return \"Map{}\";\n  }\n  if (value instanceof Set) {\n    return \"Set{}\";\n  }\n  if (typeof value === \"object\") {\n    return JSON.stringify(value);\n  }\n  return String(value);\n}\nfunction throwError(action, src, type, cause) {\n  return new Error(`failed to ${action} \"${format(src)}\" as ${type}`, {\n    cause\n  });\n}\nvar BARE_ITEM = \"Bare Item\";\nvar BOOLEAN = \"Boolean\";\nvar BYTES = \"Byte Sequence\";\nvar DECIMAL = \"Decimal\";\nvar INTEGER = \"Integer\";\nfunction isInvalidInt(value) {\n  return value < -999999999999999 || 999999999999999 < value;\n}\nvar STRING_REGEX = /[\\x00-\\x1f\\x7f]+/;\nvar TOKEN = \"Token\";\nvar KEY = \"Key\";\nfunction serializeError(src, type, cause) {\n  return throwError(\"serialize\", src, type, cause);\n}\nfunction serializeBoolean(value) {\n  if (typeof value !== \"boolean\") {\n    throw serializeError(value, BOOLEAN);\n  }\n  return value ? \"?1\" : \"?0\";\n}\nfunction base64encode(binary) {\n  return btoa(String.fromCharCode(...binary));\n}\nfunction serializeByteSequence(value) {\n  if (ArrayBuffer.isView(value) === false) {\n    throw serializeError(value, BYTES);\n  }\n  return `:${base64encode(value)}:`;\n}\nfunction serializeInteger(value) {\n  if (isInvalidInt(value)) {\n    throw serializeError(value, INTEGER);\n  }\n  return value.toString();\n}\nfunction serializeDate(value) {\n  return `@${serializeInteger(value.getTime() / 1e3)}`;\n}\nfunction roundToEven(value, precision) {\n  if (value < 0) {\n    return -roundToEven(-value, precision);\n  }\n  const decimalShift = Math.pow(10, precision);\n  const isEquidistant = Math.abs(value * decimalShift % 1 - 0.5) < Number.EPSILON;\n  if (isEquidistant) {\n    const flooredValue = Math.floor(value * decimalShift);\n    return (flooredValue % 2 === 0 ? flooredValue : flooredValue + 1) / decimalShift;\n  } else {\n    return Math.round(value * decimalShift) / decimalShift;\n  }\n}\nfunction serializeDecimal(value) {\n  const roundedValue = roundToEven(value, 3);\n  if (Math.floor(Math.abs(roundedValue)).toString().length > 12) {\n    throw serializeError(value, DECIMAL);\n  }\n  const stringValue = roundedValue.toString();\n  return stringValue.includes(\".\") ? stringValue : `${stringValue}.0`;\n}\nvar STRING = \"String\";\nfunction serializeString(value) {\n  if (STRING_REGEX.test(value)) {\n    throw serializeError(value, STRING);\n  }\n  return `\"${value.replace(/\\\\/g, `\\\\\\\\`).replace(/\"/g, `\\\\\"`)}\"`;\n}\nfunction symbolToStr(symbol) {\n  return symbol.description || symbol.toString().slice(7, -1);\n}\nfunction serializeToken(token) {\n  const value = symbolToStr(token);\n  if (/^([a-zA-Z*])([!#$%&'*+\\-.^_`|~\\w:/]*)$/.test(value) === false) {\n    throw serializeError(value, TOKEN);\n  }\n  return value;\n}\nfunction serializeBareItem(value) {\n  switch (typeof value) {\n    case \"number\":\n      if (!isFiniteNumber(value)) {\n        throw serializeError(value, BARE_ITEM);\n      }\n      if (Number.isInteger(value)) {\n        return serializeInteger(value);\n      }\n      return serializeDecimal(value);\n    case \"string\":\n      return serializeString(value);\n    case \"symbol\":\n      return serializeToken(value);\n    case \"boolean\":\n      return serializeBoolean(value);\n    case \"object\":\n      if (value instanceof Date) {\n        return serializeDate(value);\n      }\n      if (value instanceof Uint8Array) {\n        return serializeByteSequence(value);\n      }\n      if (value instanceof SfToken) {\n        return serializeToken(value);\n      }\n    default:\n      throw serializeError(value, BARE_ITEM);\n  }\n}\nfunction serializeKey(value) {\n  if (/^[a-z*][a-z0-9\\-_.*]*$/.test(value) === false) {\n    throw serializeError(value, KEY);\n  }\n  return value;\n}\nfunction serializeParams(params) {\n  if (params == null) {\n    return \"\";\n  }\n  return Object.entries(params).map(([key, value]) => {\n    if (value === true) {\n      return `;${serializeKey(key)}`;\n    }\n    return `;${serializeKey(key)}=${serializeBareItem(value)}`;\n  }).join(\"\");\n}\nfunction serializeItem(value) {\n  if (value instanceof SfItem) {\n    return `${serializeBareItem(value.value)}${serializeParams(value.params)}`;\n  } else {\n    return serializeBareItem(value);\n  }\n}\nfunction serializeInnerList(value) {\n  return `(${value.value.map(serializeItem).join(\" \")})${serializeParams(value.params)}`;\n}\nfunction serializeDict(dict, options = {\n  whitespace: true\n}) {\n  if (typeof dict !== \"object\") {\n    throw serializeError(dict, DICT);\n  }\n  const entries = dict instanceof Map ? dict.entries() : Object.entries(dict);\n  const optionalWhiteSpace = options != null && options.whitespace ? \" \" : \"\";\n  return Array.from(entries).map(([key, item]) => {\n    if (item instanceof SfItem === false) {\n      item = new SfItem(item);\n    }\n    let output = serializeKey(key);\n    if (item.value === true) {\n      output += serializeParams(item.params);\n    } else {\n      output += \"=\";\n      if (Array.isArray(item.value)) {\n        output += serializeInnerList(item);\n      } else {\n        output += serializeItem(item);\n      }\n    }\n    return output;\n  }).join(`,${optionalWhiteSpace}`);\n}\nfunction encodeSfDict(value, options) {\n  return serializeDict(value, options);\n}\nvar isTokenField = (key) => key === \"ot\" || key === \"sf\" || key === \"st\";\nvar isValid = (value) => {\n  if (typeof value === \"number\") {\n    return isFiniteNumber(value);\n  }\n  return value != null && value !== \"\" && value !== false;\n};\nfunction urlToRelativePath(url, base) {\n  const to = new URL(url);\n  const from = new URL(base);\n  if (to.origin !== from.origin) {\n    return url;\n  }\n  const toPath = to.pathname.split(\"/\").slice(1);\n  const fromPath = from.pathname.split(\"/\").slice(1, -1);\n  while (toPath[0] === fromPath[0]) {\n    toPath.shift();\n    fromPath.shift();\n  }\n  while (fromPath.length) {\n    fromPath.shift();\n    toPath.unshift(\"..\");\n  }\n  return toPath.join(\"/\");\n}\nfunction uuid() {\n  try {\n    return crypto.randomUUID();\n  } catch (error) {\n    try {\n      const url = URL.createObjectURL(new Blob());\n      const uuid2 = url.toString();\n      URL.revokeObjectURL(url);\n      return uuid2.slice(uuid2.lastIndexOf(\"/\") + 1);\n    } catch (error2) {\n      let dt5 = (/* @__PURE__ */ new Date()).getTime();\n      const uuid2 = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c4) => {\n        const r10 = (dt5 + Math.random() * 16) % 16 | 0;\n        dt5 = Math.floor(dt5 / 16);\n        return (c4 == \"x\" ? r10 : r10 & 3 | 8).toString(16);\n      });\n      return uuid2;\n    }\n  }\n}\nvar toRounded = (value) => Math.round(value);\nvar toUrlSafe = (value, options) => {\n  if (options != null && options.baseUrl) {\n    value = urlToRelativePath(value, options.baseUrl);\n  }\n  return encodeURIComponent(value);\n};\nvar toHundred = (value) => toRounded(value / 100) * 100;\nvar CmcdFormatters = {\n  /**\n   * Bitrate (kbps) rounded integer\n   */\n  br: toRounded,\n  /**\n   * Duration (milliseconds) rounded integer\n   */\n  d: toRounded,\n  /**\n   * Buffer Length (milliseconds) rounded nearest 100ms\n   */\n  bl: toHundred,\n  /**\n   * Deadline (milliseconds) rounded nearest 100ms\n   */\n  dl: toHundred,\n  /**\n   * Measured Throughput (kbps) rounded nearest 100kbps\n   */\n  mtp: toHundred,\n  /**\n   * Next Object Request URL encoded\n   */\n  nor: toUrlSafe,\n  /**\n   * Requested maximum throughput (kbps) rounded nearest 100kbps\n   */\n  rtp: toHundred,\n  /**\n   * Top Bitrate (kbps) rounded integer\n   */\n  tb: toRounded\n};\nfunction processCmcd(obj, options) {\n  const results = {};\n  if (obj == null || typeof obj !== \"object\") {\n    return results;\n  }\n  const keys = Object.keys(obj).sort();\n  const formatters = _extends({}, CmcdFormatters, options == null ? void 0 : options.formatters);\n  const filter = options == null ? void 0 : options.filter;\n  keys.forEach((key) => {\n    if (filter != null && filter(key)) {\n      return;\n    }\n    let value = obj[key];\n    const formatter = formatters[key];\n    if (formatter) {\n      value = formatter(value, options);\n    }\n    if (key === \"v\" && value === 1) {\n      return;\n    }\n    if (key == \"pr\" && value === 1) {\n      return;\n    }\n    if (!isValid(value)) {\n      return;\n    }\n    if (isTokenField(key) && typeof value === \"string\") {\n      value = new SfToken(value);\n    }\n    results[key] = value;\n  });\n  return results;\n}\nfunction encodeCmcd(cmcd, options = {}) {\n  if (!cmcd) {\n    return \"\";\n  }\n  return encodeSfDict(processCmcd(cmcd, options), _extends({\n    whitespace: false\n  }, options));\n}\nfunction toCmcdHeaders(cmcd, options = {}) {\n  if (!cmcd) {\n    return {};\n  }\n  const entries = Object.entries(cmcd);\n  const headerMap = Object.entries(CmcdHeaderMap).concat(Object.entries((options == null ? void 0 : options.customHeaderMap) || {}));\n  const shards = entries.reduce((acc, entry) => {\n    var _headerMap$find, _acc$field;\n    const [key, value] = entry;\n    const field = ((_headerMap$find = headerMap.find((entry2) => entry2[1].includes(key))) == null ? void 0 : _headerMap$find[0]) || CmcdHeaderField.REQUEST;\n    (_acc$field = acc[field]) != null ? _acc$field : acc[field] = {};\n    acc[field][key] = value;\n    return acc;\n  }, {});\n  return Object.entries(shards).reduce((acc, [field, value]) => {\n    acc[field] = encodeCmcd(value, options);\n    return acc;\n  }, {});\n}\nfunction appendCmcdHeaders(headers, cmcd, options) {\n  return _extends(headers, toCmcdHeaders(cmcd, options));\n}\nvar CMCD_PARAM = \"CMCD\";\nfunction toCmcdQuery(cmcd, options = {}) {\n  if (!cmcd) {\n    return \"\";\n  }\n  const params = encodeCmcd(cmcd, options);\n  return `${CMCD_PARAM}=${encodeURIComponent(params)}`;\n}\nvar REGEX = /CMCD=[^&#]+/;\nfunction appendCmcdQuery(url, cmcd, options) {\n  const query = toCmcdQuery(cmcd, options);\n  if (!query) {\n    return url;\n  }\n  if (REGEX.test(url)) {\n    return url.replace(REGEX, query);\n  }\n  const separator = url.includes(\"?\") ? \"&\" : \"?\";\n  return `${url}${separator}${query}`;\n}\nvar CMCDController = class {\n  // eslint-disable-line no-restricted-globals\n  constructor(hls) {\n    this.hls = void 0;\n    this.config = void 0;\n    this.media = void 0;\n    this.sid = void 0;\n    this.cid = void 0;\n    this.useHeaders = false;\n    this.includeKeys = void 0;\n    this.initialized = false;\n    this.starved = false;\n    this.buffering = true;\n    this.audioBuffer = void 0;\n    this.videoBuffer = void 0;\n    this.onWaiting = () => {\n      if (this.initialized) {\n        this.starved = true;\n      }\n      this.buffering = true;\n    };\n    this.onPlaying = () => {\n      if (!this.initialized) {\n        this.initialized = true;\n      }\n      this.buffering = false;\n    };\n    this.applyPlaylistData = (context) => {\n      try {\n        this.apply(context, {\n          ot: CmObjectType.MANIFEST,\n          su: !this.initialized\n        });\n      } catch (error) {\n        logger.warn(\"Could not generate manifest CMCD data.\", error);\n      }\n    };\n    this.applyFragmentData = (context) => {\n      try {\n        const fragment = context.frag;\n        const level = this.hls.levels[fragment.level];\n        const ot4 = this.getObjectType(fragment);\n        const data = {\n          d: fragment.duration * 1e3,\n          ot: ot4\n        };\n        if (ot4 === CmObjectType.VIDEO || ot4 === CmObjectType.AUDIO || ot4 == CmObjectType.MUXED) {\n          data.br = level.bitrate / 1e3;\n          data.tb = this.getTopBandwidth(ot4) / 1e3;\n          data.bl = this.getBufferLength(ot4);\n        }\n        this.apply(context, data);\n      } catch (error) {\n        logger.warn(\"Could not generate segment CMCD data.\", error);\n      }\n    };\n    this.hls = hls;\n    const config = this.config = hls.config;\n    const {\n      cmcd\n    } = config;\n    if (cmcd != null) {\n      config.pLoader = this.createPlaylistLoader();\n      config.fLoader = this.createFragmentLoader();\n      this.sid = cmcd.sessionId || uuid();\n      this.cid = cmcd.contentId;\n      this.useHeaders = cmcd.useHeaders === true;\n      this.includeKeys = cmcd.includeKeys;\n      this.registerListeners();\n    }\n  }\n  registerListeners() {\n    const hls = this.hls;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n    hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n  }\n  unregisterListeners() {\n    const hls = this.hls;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n    hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.onMediaDetached();\n    this.hls = this.config = this.audioBuffer = this.videoBuffer = null;\n    this.onWaiting = this.onPlaying = null;\n  }\n  onMediaAttached(event, data) {\n    this.media = data.media;\n    this.media.addEventListener(\"waiting\", this.onWaiting);\n    this.media.addEventListener(\"playing\", this.onPlaying);\n  }\n  onMediaDetached() {\n    if (!this.media) {\n      return;\n    }\n    this.media.removeEventListener(\"waiting\", this.onWaiting);\n    this.media.removeEventListener(\"playing\", this.onPlaying);\n    this.media = null;\n  }\n  onBufferCreated(event, data) {\n    var _data$tracks$audio, _data$tracks$video;\n    this.audioBuffer = (_data$tracks$audio = data.tracks.audio) == null ? void 0 : _data$tracks$audio.buffer;\n    this.videoBuffer = (_data$tracks$video = data.tracks.video) == null ? void 0 : _data$tracks$video.buffer;\n  }\n  /**\n   * Create baseline CMCD data\n   */\n  createData() {\n    var _this$media;\n    return {\n      v: 1,\n      sf: CmStreamingFormat.HLS,\n      sid: this.sid,\n      cid: this.cid,\n      pr: (_this$media = this.media) == null ? void 0 : _this$media.playbackRate,\n      mtp: this.hls.bandwidthEstimate / 1e3\n    };\n  }\n  /**\n   * Apply CMCD data to a request.\n   */\n  apply(context, data = {}) {\n    _extends(data, this.createData());\n    const isVideo = data.ot === CmObjectType.INIT || data.ot === CmObjectType.VIDEO || data.ot === CmObjectType.MUXED;\n    if (this.starved && isVideo) {\n      data.bs = true;\n      data.su = true;\n      this.starved = false;\n    }\n    if (data.su == null) {\n      data.su = this.buffering;\n    }\n    const {\n      includeKeys\n    } = this;\n    if (includeKeys) {\n      data = Object.keys(data).reduce((acc, key) => {\n        includeKeys.includes(key) && (acc[key] = data[key]);\n        return acc;\n      }, {});\n    }\n    if (this.useHeaders) {\n      if (!context.headers) {\n        context.headers = {};\n      }\n      appendCmcdHeaders(context.headers, data);\n    } else {\n      context.url = appendCmcdQuery(context.url, data);\n    }\n  }\n  /**\n   * The CMCD object type.\n   */\n  getObjectType(fragment) {\n    const {\n      type\n    } = fragment;\n    if (type === \"subtitle\") {\n      return CmObjectType.TIMED_TEXT;\n    }\n    if (fragment.sn === \"initSegment\") {\n      return CmObjectType.INIT;\n    }\n    if (type === \"audio\") {\n      return CmObjectType.AUDIO;\n    }\n    if (type === \"main\") {\n      if (!this.hls.audioTracks.length) {\n        return CmObjectType.MUXED;\n      }\n      return CmObjectType.VIDEO;\n    }\n    return void 0;\n  }\n  /**\n   * Get the highest bitrate.\n   */\n  getTopBandwidth(type) {\n    let bitrate = 0;\n    let levels;\n    const hls = this.hls;\n    if (type === CmObjectType.AUDIO) {\n      levels = hls.audioTracks;\n    } else {\n      const max = hls.maxAutoLevel;\n      const len = max > -1 ? max + 1 : hls.levels.length;\n      levels = hls.levels.slice(0, len);\n    }\n    for (const level of levels) {\n      if (level.bitrate > bitrate) {\n        bitrate = level.bitrate;\n      }\n    }\n    return bitrate > 0 ? bitrate : NaN;\n  }\n  /**\n   * Get the buffer length for a media type in milliseconds\n   */\n  getBufferLength(type) {\n    const media = this.hls.media;\n    const buffer = type === CmObjectType.AUDIO ? this.audioBuffer : this.videoBuffer;\n    if (!buffer || !media) {\n      return NaN;\n    }\n    const info = BufferHelper.bufferInfo(buffer, media.currentTime, this.config.maxBufferHole);\n    return info.len * 1e3;\n  }\n  /**\n   * Create a playlist loader\n   */\n  createPlaylistLoader() {\n    const {\n      pLoader\n    } = this.config;\n    const apply = this.applyPlaylistData;\n    const Ctor = pLoader || this.config.loader;\n    return class CmcdPlaylistLoader {\n      constructor(config) {\n        this.loader = void 0;\n        this.loader = new Ctor(config);\n      }\n      get stats() {\n        return this.loader.stats;\n      }\n      get context() {\n        return this.loader.context;\n      }\n      destroy() {\n        this.loader.destroy();\n      }\n      abort() {\n        this.loader.abort();\n      }\n      load(context, config, callbacks) {\n        apply(context);\n        this.loader.load(context, config, callbacks);\n      }\n    };\n  }\n  /**\n   * Create a playlist loader\n   */\n  createFragmentLoader() {\n    const {\n      fLoader\n    } = this.config;\n    const apply = this.applyFragmentData;\n    const Ctor = fLoader || this.config.loader;\n    return class CmcdFragmentLoader {\n      constructor(config) {\n        this.loader = void 0;\n        this.loader = new Ctor(config);\n      }\n      get stats() {\n        return this.loader.stats;\n      }\n      get context() {\n        return this.loader.context;\n      }\n      destroy() {\n        this.loader.destroy();\n      }\n      abort() {\n        this.loader.abort();\n      }\n      load(context, config, callbacks) {\n        apply(context);\n        this.loader.load(context, config, callbacks);\n      }\n    };\n  }\n};\nvar PATHWAY_PENALTY_DURATION_MS = 3e5;\nvar ContentSteeringController = class {\n  constructor(hls) {\n    this.hls = void 0;\n    this.log = void 0;\n    this.loader = null;\n    this.uri = null;\n    this.pathwayId = \".\";\n    this.pathwayPriority = null;\n    this.timeToLoad = 300;\n    this.reloadTimer = -1;\n    this.updated = 0;\n    this.started = false;\n    this.enabled = true;\n    this.levels = null;\n    this.audioTracks = null;\n    this.subtitleTracks = null;\n    this.penalizedPathways = {};\n    this.hls = hls;\n    this.log = logger.log.bind(logger, `[content-steering]:`);\n    this.registerListeners();\n  }\n  registerListeners() {\n    const hls = this.hls;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n  unregisterListeners() {\n    const hls = this.hls;\n    if (!hls) {\n      return;\n    }\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n  startLoad() {\n    this.started = true;\n    this.clearTimeout();\n    if (this.enabled && this.uri) {\n      if (this.updated) {\n        const ttl = this.timeToLoad * 1e3 - (performance.now() - this.updated);\n        if (ttl > 0) {\n          this.scheduleRefresh(this.uri, ttl);\n          return;\n        }\n      }\n      this.loadSteeringManifest(this.uri);\n    }\n  }\n  stopLoad() {\n    this.started = false;\n    if (this.loader) {\n      this.loader.destroy();\n      this.loader = null;\n    }\n    this.clearTimeout();\n  }\n  clearTimeout() {\n    if (this.reloadTimer !== -1) {\n      self.clearTimeout(this.reloadTimer);\n      this.reloadTimer = -1;\n    }\n  }\n  destroy() {\n    this.unregisterListeners();\n    this.stopLoad();\n    this.hls = null;\n    this.levels = this.audioTracks = this.subtitleTracks = null;\n  }\n  removeLevel(levelToRemove) {\n    const levels = this.levels;\n    if (levels) {\n      this.levels = levels.filter((level) => level !== levelToRemove);\n    }\n  }\n  onManifestLoading() {\n    this.stopLoad();\n    this.enabled = true;\n    this.timeToLoad = 300;\n    this.updated = 0;\n    this.uri = null;\n    this.pathwayId = \".\";\n    this.levels = this.audioTracks = this.subtitleTracks = null;\n  }\n  onManifestLoaded(event, data) {\n    const {\n      contentSteering\n    } = data;\n    if (contentSteering === null) {\n      return;\n    }\n    this.pathwayId = contentSteering.pathwayId;\n    this.uri = contentSteering.uri;\n    if (this.started) {\n      this.startLoad();\n    }\n  }\n  onManifestParsed(event, data) {\n    this.audioTracks = data.audioTracks;\n    this.subtitleTracks = data.subtitleTracks;\n  }\n  onError(event, data) {\n    const {\n      errorAction\n    } = data;\n    if ((errorAction == null ? void 0 : errorAction.action) === NetworkErrorAction.SendAlternateToPenaltyBox && errorAction.flags === ErrorActionFlags.MoveAllAlternatesMatchingHost) {\n      const levels = this.levels;\n      let pathwayPriority = this.pathwayPriority;\n      let errorPathway = this.pathwayId;\n      if (data.context) {\n        const {\n          groupId,\n          pathwayId,\n          type\n        } = data.context;\n        if (groupId && levels) {\n          errorPathway = this.getPathwayForGroupId(groupId, type, errorPathway);\n        } else if (pathwayId) {\n          errorPathway = pathwayId;\n        }\n      }\n      if (!(errorPathway in this.penalizedPathways)) {\n        this.penalizedPathways[errorPathway] = performance.now();\n      }\n      if (!pathwayPriority && levels) {\n        pathwayPriority = levels.reduce((pathways, level) => {\n          if (pathways.indexOf(level.pathwayId) === -1) {\n            pathways.push(level.pathwayId);\n          }\n          return pathways;\n        }, []);\n      }\n      if (pathwayPriority && pathwayPriority.length > 1) {\n        this.updatePathwayPriority(pathwayPriority);\n        errorAction.resolved = this.pathwayId !== errorPathway;\n      }\n      if (!errorAction.resolved) {\n        logger.warn(`Could not resolve ${data.details} (\"${data.error.message}\") with content-steering for Pathway: ${errorPathway} levels: ${levels ? levels.length : levels} priorities: ${JSON.stringify(pathwayPriority)} penalized: ${JSON.stringify(this.penalizedPathways)}`);\n      }\n    }\n  }\n  filterParsedLevels(levels) {\n    this.levels = levels;\n    let pathwayLevels = this.getLevelsForPathway(this.pathwayId);\n    if (pathwayLevels.length === 0) {\n      const pathwayId = levels[0].pathwayId;\n      this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to \"${pathwayId}\"`);\n      pathwayLevels = this.getLevelsForPathway(pathwayId);\n      this.pathwayId = pathwayId;\n    }\n    if (pathwayLevels.length !== levels.length) {\n      this.log(`Found ${pathwayLevels.length}/${levels.length} levels in Pathway \"${this.pathwayId}\"`);\n    }\n    return pathwayLevels;\n  }\n  getLevelsForPathway(pathwayId) {\n    if (this.levels === null) {\n      return [];\n    }\n    return this.levels.filter((level) => pathwayId === level.pathwayId);\n  }\n  updatePathwayPriority(pathwayPriority) {\n    this.pathwayPriority = pathwayPriority;\n    let levels;\n    const penalizedPathways = this.penalizedPathways;\n    const now2 = performance.now();\n    Object.keys(penalizedPathways).forEach((pathwayId) => {\n      if (now2 - penalizedPathways[pathwayId] > PATHWAY_PENALTY_DURATION_MS) {\n        delete penalizedPathways[pathwayId];\n      }\n    });\n    for (let i2 = 0; i2 < pathwayPriority.length; i2++) {\n      const pathwayId = pathwayPriority[i2];\n      if (pathwayId in penalizedPathways) {\n        continue;\n      }\n      if (pathwayId === this.pathwayId) {\n        return;\n      }\n      const selectedIndex = this.hls.nextLoadLevel;\n      const selectedLevel = this.hls.levels[selectedIndex];\n      levels = this.getLevelsForPathway(pathwayId);\n      if (levels.length > 0) {\n        this.log(`Setting Pathway to \"${pathwayId}\"`);\n        this.pathwayId = pathwayId;\n        reassignFragmentLevelIndexes(levels);\n        this.hls.trigger(Events.LEVELS_UPDATED, {\n          levels\n        });\n        const levelAfterChange = this.hls.levels[selectedIndex];\n        if (selectedLevel && levelAfterChange && this.levels) {\n          if (levelAfterChange.attrs[\"STABLE-VARIANT-ID\"] !== selectedLevel.attrs[\"STABLE-VARIANT-ID\"] && levelAfterChange.bitrate !== selectedLevel.bitrate) {\n            this.log(`Unstable Pathways change from bitrate ${selectedLevel.bitrate} to ${levelAfterChange.bitrate}`);\n          }\n          this.hls.nextLoadLevel = selectedIndex;\n        }\n        break;\n      }\n    }\n  }\n  getPathwayForGroupId(groupId, type, defaultPathway) {\n    const levels = this.getLevelsForPathway(defaultPathway).concat(this.levels || []);\n    for (let i2 = 0; i2 < levels.length; i2++) {\n      if (type === PlaylistContextType.AUDIO_TRACK && levels[i2].hasAudioGroup(groupId) || type === PlaylistContextType.SUBTITLE_TRACK && levels[i2].hasSubtitleGroup(groupId)) {\n        return levels[i2].pathwayId;\n      }\n    }\n    return defaultPathway;\n  }\n  clonePathways(pathwayClones) {\n    const levels = this.levels;\n    if (!levels) {\n      return;\n    }\n    const audioGroupCloneMap = {};\n    const subtitleGroupCloneMap = {};\n    pathwayClones.forEach((pathwayClone) => {\n      const {\n        ID: cloneId,\n        \"BASE-ID\": baseId,\n        \"URI-REPLACEMENT\": uriReplacement\n      } = pathwayClone;\n      if (levels.some((level) => level.pathwayId === cloneId)) {\n        return;\n      }\n      const clonedVariants = this.getLevelsForPathway(baseId).map((baseLevel) => {\n        const attributes = new AttrList(baseLevel.attrs);\n        attributes[\"PATHWAY-ID\"] = cloneId;\n        const clonedAudioGroupId = attributes.AUDIO && `${attributes.AUDIO}_clone_${cloneId}`;\n        const clonedSubtitleGroupId = attributes.SUBTITLES && `${attributes.SUBTITLES}_clone_${cloneId}`;\n        if (clonedAudioGroupId) {\n          audioGroupCloneMap[attributes.AUDIO] = clonedAudioGroupId;\n          attributes.AUDIO = clonedAudioGroupId;\n        }\n        if (clonedSubtitleGroupId) {\n          subtitleGroupCloneMap[attributes.SUBTITLES] = clonedSubtitleGroupId;\n          attributes.SUBTITLES = clonedSubtitleGroupId;\n        }\n        const url = performUriReplacement(baseLevel.uri, attributes[\"STABLE-VARIANT-ID\"], \"PER-VARIANT-URIS\", uriReplacement);\n        const clonedLevel = new Level({\n          attrs: attributes,\n          audioCodec: baseLevel.audioCodec,\n          bitrate: baseLevel.bitrate,\n          height: baseLevel.height,\n          name: baseLevel.name,\n          url,\n          videoCodec: baseLevel.videoCodec,\n          width: baseLevel.width\n        });\n        if (baseLevel.audioGroups) {\n          for (let i2 = 1; i2 < baseLevel.audioGroups.length; i2++) {\n            clonedLevel.addGroupId(\"audio\", `${baseLevel.audioGroups[i2]}_clone_${cloneId}`);\n          }\n        }\n        if (baseLevel.subtitleGroups) {\n          for (let i2 = 1; i2 < baseLevel.subtitleGroups.length; i2++) {\n            clonedLevel.addGroupId(\"text\", `${baseLevel.subtitleGroups[i2]}_clone_${cloneId}`);\n          }\n        }\n        return clonedLevel;\n      });\n      levels.push(...clonedVariants);\n      cloneRenditionGroups(this.audioTracks, audioGroupCloneMap, uriReplacement, cloneId);\n      cloneRenditionGroups(this.subtitleTracks, subtitleGroupCloneMap, uriReplacement, cloneId);\n    });\n  }\n  loadSteeringManifest(uri) {\n    const config = this.hls.config;\n    const Loader = config.loader;\n    if (this.loader) {\n      this.loader.destroy();\n    }\n    this.loader = new Loader(config);\n    let url;\n    try {\n      url = new self.URL(uri);\n    } catch (error) {\n      this.enabled = false;\n      this.log(`Failed to parse Steering Manifest URI: ${uri}`);\n      return;\n    }\n    if (url.protocol !== \"data:\") {\n      const throughput = (this.hls.bandwidthEstimate || config.abrEwmaDefaultEstimate) | 0;\n      url.searchParams.set(\"_HLS_pathway\", this.pathwayId);\n      url.searchParams.set(\"_HLS_throughput\", \"\" + throughput);\n    }\n    const context = {\n      responseType: \"json\",\n      url: url.href\n    };\n    const loadPolicy = config.steeringManifestLoadPolicy.default;\n    const legacyRetryCompatibility = loadPolicy.errorRetry || loadPolicy.timeoutRetry || {};\n    const loaderConfig = {\n      loadPolicy,\n      timeout: loadPolicy.maxLoadTimeMs,\n      maxRetry: legacyRetryCompatibility.maxNumRetry || 0,\n      retryDelay: legacyRetryCompatibility.retryDelayMs || 0,\n      maxRetryDelay: legacyRetryCompatibility.maxRetryDelayMs || 0\n    };\n    const callbacks = {\n      onSuccess: (response, stats, context2, networkDetails) => {\n        this.log(`Loaded steering manifest: \"${url}\"`);\n        const steeringData = response.data;\n        if (steeringData.VERSION !== 1) {\n          this.log(`Steering VERSION ${steeringData.VERSION} not supported!`);\n          return;\n        }\n        this.updated = performance.now();\n        this.timeToLoad = steeringData.TTL;\n        const {\n          \"RELOAD-URI\": reloadUri,\n          \"PATHWAY-CLONES\": pathwayClones,\n          \"PATHWAY-PRIORITY\": pathwayPriority\n        } = steeringData;\n        if (reloadUri) {\n          try {\n            this.uri = new self.URL(reloadUri, url).href;\n          } catch (error) {\n            this.enabled = false;\n            this.log(`Failed to parse Steering Manifest RELOAD-URI: ${reloadUri}`);\n            return;\n          }\n        }\n        this.scheduleRefresh(this.uri || context2.url);\n        if (pathwayClones) {\n          this.clonePathways(pathwayClones);\n        }\n        const loadedSteeringData = {\n          steeringManifest: steeringData,\n          url: url.toString()\n        };\n        this.hls.trigger(Events.STEERING_MANIFEST_LOADED, loadedSteeringData);\n        if (pathwayPriority) {\n          this.updatePathwayPriority(pathwayPriority);\n        }\n      },\n      onError: (error, context2, networkDetails, stats) => {\n        this.log(`Error loading steering manifest: ${error.code} ${error.text} (${context2.url})`);\n        this.stopLoad();\n        if (error.code === 410) {\n          this.enabled = false;\n          this.log(`Steering manifest ${context2.url} no longer available`);\n          return;\n        }\n        let ttl = this.timeToLoad * 1e3;\n        if (error.code === 429) {\n          const loader = this.loader;\n          if (typeof (loader == null ? void 0 : loader.getResponseHeader) === \"function\") {\n            const retryAfter = loader.getResponseHeader(\"Retry-After\");\n            if (retryAfter) {\n              ttl = parseFloat(retryAfter) * 1e3;\n            }\n          }\n          this.log(`Steering manifest ${context2.url} rate limited`);\n          return;\n        }\n        this.scheduleRefresh(this.uri || context2.url, ttl);\n      },\n      onTimeout: (stats, context2, networkDetails) => {\n        this.log(`Timeout loading steering manifest (${context2.url})`);\n        this.scheduleRefresh(this.uri || context2.url);\n      }\n    };\n    this.log(`Requesting steering manifest: ${url}`);\n    this.loader.load(context, loaderConfig, callbacks);\n  }\n  scheduleRefresh(uri, ttlMs = this.timeToLoad * 1e3) {\n    this.clearTimeout();\n    this.reloadTimer = self.setTimeout(() => {\n      var _this$hls;\n      const media = (_this$hls = this.hls) == null ? void 0 : _this$hls.media;\n      if (media && !media.ended) {\n        this.loadSteeringManifest(uri);\n        return;\n      }\n      this.scheduleRefresh(uri, this.timeToLoad * 1e3);\n    }, ttlMs);\n  }\n};\nfunction cloneRenditionGroups(tracks, groupCloneMap, uriReplacement, cloneId) {\n  if (!tracks) {\n    return;\n  }\n  Object.keys(groupCloneMap).forEach((audioGroupId) => {\n    const clonedTracks = tracks.filter((track) => track.groupId === audioGroupId).map((track) => {\n      const clonedTrack = _extends({}, track);\n      clonedTrack.details = void 0;\n      clonedTrack.attrs = new AttrList(clonedTrack.attrs);\n      clonedTrack.url = clonedTrack.attrs.URI = performUriReplacement(track.url, track.attrs[\"STABLE-RENDITION-ID\"], \"PER-RENDITION-URIS\", uriReplacement);\n      clonedTrack.groupId = clonedTrack.attrs[\"GROUP-ID\"] = groupCloneMap[audioGroupId];\n      clonedTrack.attrs[\"PATHWAY-ID\"] = cloneId;\n      return clonedTrack;\n    });\n    tracks.push(...clonedTracks);\n  });\n}\nfunction performUriReplacement(uri, stableId, perOptionKey, uriReplacement) {\n  const {\n    HOST: host,\n    PARAMS: params,\n    [perOptionKey]: perOptionUris\n  } = uriReplacement;\n  let perVariantUri;\n  if (stableId) {\n    perVariantUri = perOptionUris == null ? void 0 : perOptionUris[stableId];\n    if (perVariantUri) {\n      uri = perVariantUri;\n    }\n  }\n  const url = new self.URL(uri);\n  if (host && !perVariantUri) {\n    url.host = host;\n  }\n  if (params) {\n    Object.keys(params).sort().forEach((key) => {\n      if (key) {\n        url.searchParams.set(key, params[key]);\n      }\n    });\n  }\n  return url.href;\n}\nvar AGE_HEADER_LINE_REGEX = /^age:\\s*[\\d.]+\\s*$/im;\nvar XhrLoader = class {\n  constructor(config) {\n    this.xhrSetup = void 0;\n    this.requestTimeout = void 0;\n    this.retryTimeout = void 0;\n    this.retryDelay = void 0;\n    this.config = null;\n    this.callbacks = null;\n    this.context = null;\n    this.loader = null;\n    this.stats = void 0;\n    this.xhrSetup = config ? config.xhrSetup || null : null;\n    this.stats = new LoadStats();\n    this.retryDelay = 0;\n  }\n  destroy() {\n    this.callbacks = null;\n    this.abortInternal();\n    this.loader = null;\n    this.config = null;\n    this.context = null;\n    this.xhrSetup = null;\n  }\n  abortInternal() {\n    const loader = this.loader;\n    self.clearTimeout(this.requestTimeout);\n    self.clearTimeout(this.retryTimeout);\n    if (loader) {\n      loader.onreadystatechange = null;\n      loader.onprogress = null;\n      if (loader.readyState !== 4) {\n        this.stats.aborted = true;\n        loader.abort();\n      }\n    }\n  }\n  abort() {\n    var _this$callbacks;\n    this.abortInternal();\n    if ((_this$callbacks = this.callbacks) != null && _this$callbacks.onAbort) {\n      this.callbacks.onAbort(this.stats, this.context, this.loader);\n    }\n  }\n  load(context, config, callbacks) {\n    if (this.stats.loading.start) {\n      throw new Error(\"Loader can only be used once.\");\n    }\n    this.stats.loading.start = self.performance.now();\n    this.context = context;\n    this.config = config;\n    this.callbacks = callbacks;\n    this.loadInternal();\n  }\n  loadInternal() {\n    const {\n      config,\n      context\n    } = this;\n    if (!config || !context) {\n      return;\n    }\n    const xhr = this.loader = new self.XMLHttpRequest();\n    const stats = this.stats;\n    stats.loading.first = 0;\n    stats.loaded = 0;\n    stats.aborted = false;\n    const xhrSetup = this.xhrSetup;\n    if (xhrSetup) {\n      Promise.resolve().then(() => {\n        if (this.loader !== xhr || this.stats.aborted) return;\n        return xhrSetup(xhr, context.url);\n      }).catch((error) => {\n        if (this.loader !== xhr || this.stats.aborted) return;\n        xhr.open(\"GET\", context.url, true);\n        return xhrSetup(xhr, context.url);\n      }).then(() => {\n        if (this.loader !== xhr || this.stats.aborted) return;\n        this.openAndSendXhr(xhr, context, config);\n      }).catch((error) => {\n        this.callbacks.onError({\n          code: xhr.status,\n          text: error.message\n        }, context, xhr, stats);\n        return;\n      });\n    } else {\n      this.openAndSendXhr(xhr, context, config);\n    }\n  }\n  openAndSendXhr(xhr, context, config) {\n    if (!xhr.readyState) {\n      xhr.open(\"GET\", context.url, true);\n    }\n    const headers = context.headers;\n    const {\n      maxTimeToFirstByteMs,\n      maxLoadTimeMs\n    } = config.loadPolicy;\n    if (headers) {\n      for (const header in headers) {\n        xhr.setRequestHeader(header, headers[header]);\n      }\n    }\n    if (context.rangeEnd) {\n      xhr.setRequestHeader(\"Range\", \"bytes=\" + context.rangeStart + \"-\" + (context.rangeEnd - 1));\n    }\n    xhr.onreadystatechange = this.readystatechange.bind(this);\n    xhr.onprogress = this.loadprogress.bind(this);\n    xhr.responseType = context.responseType;\n    self.clearTimeout(this.requestTimeout);\n    config.timeout = maxTimeToFirstByteMs && isFiniteNumber(maxTimeToFirstByteMs) ? maxTimeToFirstByteMs : maxLoadTimeMs;\n    this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.timeout);\n    xhr.send();\n  }\n  readystatechange() {\n    const {\n      context,\n      loader: xhr,\n      stats\n    } = this;\n    if (!context || !xhr) {\n      return;\n    }\n    const readyState = xhr.readyState;\n    const config = this.config;\n    if (stats.aborted) {\n      return;\n    }\n    if (readyState >= 2) {\n      if (stats.loading.first === 0) {\n        stats.loading.first = Math.max(self.performance.now(), stats.loading.start);\n        if (config.timeout !== config.loadPolicy.maxLoadTimeMs) {\n          self.clearTimeout(this.requestTimeout);\n          config.timeout = config.loadPolicy.maxLoadTimeMs;\n          this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.loadPolicy.maxLoadTimeMs - (stats.loading.first - stats.loading.start));\n        }\n      }\n      if (readyState === 4) {\n        self.clearTimeout(this.requestTimeout);\n        xhr.onreadystatechange = null;\n        xhr.onprogress = null;\n        const status2 = xhr.status;\n        const useResponseText = xhr.responseType === \"text\" ? xhr.responseText : null;\n        if (status2 >= 200 && status2 < 300) {\n          const data = useResponseText != null ? useResponseText : xhr.response;\n          if (data != null) {\n            stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n            const len = xhr.responseType === \"arraybuffer\" ? data.byteLength : data.length;\n            stats.loaded = stats.total = len;\n            stats.bwEstimate = stats.total * 8e3 / (stats.loading.end - stats.loading.first);\n            if (!this.callbacks) {\n              return;\n            }\n            const onProgress = this.callbacks.onProgress;\n            if (onProgress) {\n              onProgress(stats, context, data, xhr);\n            }\n            if (!this.callbacks) {\n              return;\n            }\n            const _response = {\n              url: xhr.responseURL,\n              data,\n              code: status2\n            };\n            this.callbacks.onSuccess(_response, stats, context, xhr);\n            return;\n          }\n        }\n        const retryConfig = config.loadPolicy.errorRetry;\n        const retryCount = stats.retry;\n        const response = {\n          url: context.url,\n          data: void 0,\n          code: status2\n        };\n        if (shouldRetry(retryConfig, retryCount, false, response)) {\n          this.retry(retryConfig);\n        } else {\n          logger.error(`${status2} while loading ${context.url}`);\n          this.callbacks.onError({\n            code: status2,\n            text: xhr.statusText\n          }, context, xhr, stats);\n        }\n      }\n    }\n  }\n  loadtimeout() {\n    if (!this.config) return;\n    const retryConfig = this.config.loadPolicy.timeoutRetry;\n    const retryCount = this.stats.retry;\n    if (shouldRetry(retryConfig, retryCount, true)) {\n      this.retry(retryConfig);\n    } else {\n      var _this$context;\n      logger.warn(`timeout while loading ${(_this$context = this.context) == null ? void 0 : _this$context.url}`);\n      const callbacks = this.callbacks;\n      if (callbacks) {\n        this.abortInternal();\n        callbacks.onTimeout(this.stats, this.context, this.loader);\n      }\n    }\n  }\n  retry(retryConfig) {\n    const {\n      context,\n      stats\n    } = this;\n    this.retryDelay = getRetryDelay(retryConfig, stats.retry);\n    stats.retry++;\n    logger.warn(`${status ? \"HTTP Status \" + status : \"Timeout\"} while loading ${context == null ? void 0 : context.url}, retrying ${stats.retry}/${retryConfig.maxNumRetry} in ${this.retryDelay}ms`);\n    this.abortInternal();\n    this.loader = null;\n    self.clearTimeout(this.retryTimeout);\n    this.retryTimeout = self.setTimeout(this.loadInternal.bind(this), this.retryDelay);\n  }\n  loadprogress(event) {\n    const stats = this.stats;\n    stats.loaded = event.loaded;\n    if (event.lengthComputable) {\n      stats.total = event.total;\n    }\n  }\n  getCacheAge() {\n    let result = null;\n    if (this.loader && AGE_HEADER_LINE_REGEX.test(this.loader.getAllResponseHeaders())) {\n      const ageHeader = this.loader.getResponseHeader(\"age\");\n      result = ageHeader ? parseFloat(ageHeader) : null;\n    }\n    return result;\n  }\n  getResponseHeader(name) {\n    if (this.loader && new RegExp(`^${name}:\\\\s*[\\\\d.]+\\\\s*$`, \"im\").test(this.loader.getAllResponseHeaders())) {\n      return this.loader.getResponseHeader(name);\n    }\n    return null;\n  }\n};\nfunction fetchSupported() {\n  if (\n    // @ts-ignore\n    self.fetch && self.AbortController && self.ReadableStream && self.Request\n  ) {\n    try {\n      new self.ReadableStream({});\n      return true;\n    } catch (e) {\n    }\n  }\n  return false;\n}\nvar BYTERANGE = /(\\d+)-(\\d+)\\/(\\d+)/;\nvar FetchLoader = class {\n  constructor(config) {\n    this.fetchSetup = void 0;\n    this.requestTimeout = void 0;\n    this.request = null;\n    this.response = null;\n    this.controller = void 0;\n    this.context = null;\n    this.config = null;\n    this.callbacks = null;\n    this.stats = void 0;\n    this.loader = null;\n    this.fetchSetup = config.fetchSetup || getRequest;\n    this.controller = new self.AbortController();\n    this.stats = new LoadStats();\n  }\n  destroy() {\n    this.loader = this.callbacks = this.context = this.config = this.request = null;\n    this.abortInternal();\n    this.response = null;\n    this.fetchSetup = this.controller = this.stats = null;\n  }\n  abortInternal() {\n    if (this.controller && !this.stats.loading.end) {\n      this.stats.aborted = true;\n      this.controller.abort();\n    }\n  }\n  abort() {\n    var _this$callbacks;\n    this.abortInternal();\n    if ((_this$callbacks = this.callbacks) != null && _this$callbacks.onAbort) {\n      this.callbacks.onAbort(this.stats, this.context, this.response);\n    }\n  }\n  load(context, config, callbacks) {\n    const stats = this.stats;\n    if (stats.loading.start) {\n      throw new Error(\"Loader can only be used once.\");\n    }\n    stats.loading.start = self.performance.now();\n    const initParams = getRequestParameters(context, this.controller.signal);\n    const onProgress = callbacks.onProgress;\n    const isArrayBuffer = context.responseType === \"arraybuffer\";\n    const LENGTH = isArrayBuffer ? \"byteLength\" : \"length\";\n    const {\n      maxTimeToFirstByteMs,\n      maxLoadTimeMs\n    } = config.loadPolicy;\n    this.context = context;\n    this.config = config;\n    this.callbacks = callbacks;\n    this.request = this.fetchSetup(context, initParams);\n    self.clearTimeout(this.requestTimeout);\n    config.timeout = maxTimeToFirstByteMs && isFiniteNumber(maxTimeToFirstByteMs) ? maxTimeToFirstByteMs : maxLoadTimeMs;\n    this.requestTimeout = self.setTimeout(() => {\n      this.abortInternal();\n      callbacks.onTimeout(stats, context, this.response);\n    }, config.timeout);\n    self.fetch(this.request).then((response) => {\n      this.response = this.loader = response;\n      const first = Math.max(self.performance.now(), stats.loading.start);\n      self.clearTimeout(this.requestTimeout);\n      config.timeout = maxLoadTimeMs;\n      this.requestTimeout = self.setTimeout(() => {\n        this.abortInternal();\n        callbacks.onTimeout(stats, context, this.response);\n      }, maxLoadTimeMs - (first - stats.loading.start));\n      if (!response.ok) {\n        const {\n          status: status2,\n          statusText\n        } = response;\n        throw new FetchError(statusText || \"fetch, bad network response\", status2, response);\n      }\n      stats.loading.first = first;\n      stats.total = getContentLength(response.headers) || stats.total;\n      if (onProgress && isFiniteNumber(config.highWaterMark)) {\n        return this.loadProgressively(response, stats, context, config.highWaterMark, onProgress);\n      }\n      if (isArrayBuffer) {\n        return response.arrayBuffer();\n      }\n      if (context.responseType === \"json\") {\n        return response.json();\n      }\n      return response.text();\n    }).then((responseData) => {\n      const response = this.response;\n      if (!response) {\n        throw new Error(\"loader destroyed\");\n      }\n      self.clearTimeout(this.requestTimeout);\n      stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n      const total = responseData[LENGTH];\n      if (total) {\n        stats.loaded = stats.total = total;\n      }\n      const loaderResponse = {\n        url: response.url,\n        data: responseData,\n        code: response.status\n      };\n      if (onProgress && !isFiniteNumber(config.highWaterMark)) {\n        onProgress(stats, context, responseData, response);\n      }\n      callbacks.onSuccess(loaderResponse, stats, context, response);\n    }).catch((error) => {\n      self.clearTimeout(this.requestTimeout);\n      if (stats.aborted) {\n        return;\n      }\n      const code = !error ? 0 : error.code || 0;\n      const text = !error ? null : error.message;\n      callbacks.onError({\n        code,\n        text\n      }, context, error ? error.details : null, stats);\n    });\n  }\n  getCacheAge() {\n    let result = null;\n    if (this.response) {\n      const ageHeader = this.response.headers.get(\"age\");\n      result = ageHeader ? parseFloat(ageHeader) : null;\n    }\n    return result;\n  }\n  getResponseHeader(name) {\n    return this.response ? this.response.headers.get(name) : null;\n  }\n  loadProgressively(response, stats, context, highWaterMark = 0, onProgress) {\n    const chunkCache = new ChunkCache();\n    const reader = response.body.getReader();\n    const pump = () => {\n      return reader.read().then((data) => {\n        if (data.done) {\n          if (chunkCache.dataLength) {\n            onProgress(stats, context, chunkCache.flush(), response);\n          }\n          return Promise.resolve(new ArrayBuffer(0));\n        }\n        const chunk = data.value;\n        const len = chunk.length;\n        stats.loaded += len;\n        if (len < highWaterMark || chunkCache.dataLength) {\n          chunkCache.push(chunk);\n          if (chunkCache.dataLength >= highWaterMark) {\n            onProgress(stats, context, chunkCache.flush(), response);\n          }\n        } else {\n          onProgress(stats, context, chunk, response);\n        }\n        return pump();\n      }).catch(() => {\n        return Promise.reject();\n      });\n    };\n    return pump();\n  }\n};\nfunction getRequestParameters(context, signal) {\n  const initParams = {\n    method: \"GET\",\n    mode: \"cors\",\n    credentials: \"same-origin\",\n    signal,\n    headers: new self.Headers(_extends({}, context.headers))\n  };\n  if (context.rangeEnd) {\n    initParams.headers.set(\"Range\", \"bytes=\" + context.rangeStart + \"-\" + String(context.rangeEnd - 1));\n  }\n  return initParams;\n}\nfunction getByteRangeLength(byteRangeHeader) {\n  const result = BYTERANGE.exec(byteRangeHeader);\n  if (result) {\n    return parseInt(result[2]) - parseInt(result[1]) + 1;\n  }\n}\nfunction getContentLength(headers) {\n  const contentRange = headers.get(\"Content-Range\");\n  if (contentRange) {\n    const byteRangeLength = getByteRangeLength(contentRange);\n    if (isFiniteNumber(byteRangeLength)) {\n      return byteRangeLength;\n    }\n  }\n  const contentLength = headers.get(\"Content-Length\");\n  if (contentLength) {\n    return parseInt(contentLength);\n  }\n}\nfunction getRequest(context, initParams) {\n  return new self.Request(context.url, initParams);\n}\nvar FetchError = class extends Error {\n  constructor(message, code, details) {\n    super(message);\n    this.code = void 0;\n    this.details = void 0;\n    this.code = code;\n    this.details = details;\n  }\n};\nvar WHITESPACE_CHAR = /\\s/;\nvar Cues = {\n  newCue(track, startTime, endTime, captionScreen) {\n    const result = [];\n    let row;\n    let cue;\n    let indenting;\n    let indent;\n    let text;\n    const Cue = self.VTTCue || self.TextTrackCue;\n    for (let r10 = 0; r10 < captionScreen.rows.length; r10++) {\n      row = captionScreen.rows[r10];\n      indenting = true;\n      indent = 0;\n      text = \"\";\n      if (!row.isEmpty()) {\n        var _track$cues;\n        for (let c4 = 0; c4 < row.chars.length; c4++) {\n          if (WHITESPACE_CHAR.test(row.chars[c4].uchar) && indenting) {\n            indent++;\n          } else {\n            text += row.chars[c4].uchar;\n            indenting = false;\n          }\n        }\n        row.cueStartTime = startTime;\n        if (startTime === endTime) {\n          endTime += 1e-4;\n        }\n        if (indent >= 16) {\n          indent--;\n        } else {\n          indent++;\n        }\n        const cueText = fixLineBreaks(text.trim());\n        const id = generateCueId(startTime, endTime, cueText);\n        if (!(track != null && (_track$cues = track.cues) != null && _track$cues.getCueById(id))) {\n          cue = new Cue(startTime, endTime, cueText);\n          cue.id = id;\n          cue.line = r10 + 1;\n          cue.align = \"left\";\n          cue.position = 10 + Math.min(80, Math.floor(indent * 8 / 32) * 10);\n          result.push(cue);\n        }\n      }\n    }\n    if (track && result.length) {\n      result.sort((cueA, cueB) => {\n        if (cueA.line === \"auto\" || cueB.line === \"auto\") {\n          return 0;\n        }\n        if (cueA.line > 8 && cueB.line > 8) {\n          return cueB.line - cueA.line;\n        }\n        return cueA.line - cueB.line;\n      });\n      result.forEach((cue2) => addCueToTrack(track, cue2));\n    }\n    return result;\n  }\n};\nvar defaultLoadPolicy = {\n  maxTimeToFirstByteMs: 8e3,\n  maxLoadTimeMs: 2e4,\n  timeoutRetry: null,\n  errorRetry: null\n};\nvar hlsDefaultConfig = _objectSpread2(_objectSpread2({\n  autoStartLoad: true,\n  // used by stream-controller\n  startPosition: -1,\n  // used by stream-controller\n  defaultAudioCodec: void 0,\n  // used by stream-controller\n  debug: false,\n  // used by logger\n  capLevelOnFPSDrop: false,\n  // used by fps-controller\n  capLevelToPlayerSize: false,\n  // used by cap-level-controller\n  ignoreDevicePixelRatio: false,\n  // used by cap-level-controller\n  preferManagedMediaSource: true,\n  initialLiveManifestSize: 1,\n  // used by stream-controller\n  maxBufferLength: 30,\n  // used by stream-controller\n  backBufferLength: Infinity,\n  // used by buffer-controller\n  frontBufferFlushThreshold: Infinity,\n  maxBufferSize: 60 * 1e3 * 1e3,\n  // used by stream-controller\n  maxBufferHole: 0.1,\n  // used by stream-controller\n  highBufferWatchdogPeriod: 2,\n  // used by stream-controller\n  nudgeOffset: 0.1,\n  // used by stream-controller\n  nudgeMaxRetry: 3,\n  // used by stream-controller\n  maxFragLookUpTolerance: 0.25,\n  // used by stream-controller\n  liveSyncDurationCount: 3,\n  // used by latency-controller\n  liveMaxLatencyDurationCount: Infinity,\n  // used by latency-controller\n  liveSyncDuration: void 0,\n  // used by latency-controller\n  liveMaxLatencyDuration: void 0,\n  // used by latency-controller\n  maxLiveSyncPlaybackRate: 1,\n  // used by latency-controller\n  liveDurationInfinity: false,\n  // used by buffer-controller\n  /**\n   * @deprecated use backBufferLength\n   */\n  liveBackBufferLength: null,\n  // used by buffer-controller\n  maxMaxBufferLength: 600,\n  // used by stream-controller\n  enableWorker: true,\n  // used by transmuxer\n  workerPath: null,\n  // used by transmuxer\n  enableSoftwareAES: true,\n  // used by decrypter\n  startLevel: void 0,\n  // used by level-controller\n  startFragPrefetch: false,\n  // used by stream-controller\n  fpsDroppedMonitoringPeriod: 5e3,\n  // used by fps-controller\n  fpsDroppedMonitoringThreshold: 0.2,\n  // used by fps-controller\n  appendErrorMaxRetry: 3,\n  // used by buffer-controller\n  loader: XhrLoader,\n  // loader: FetchLoader,\n  fLoader: void 0,\n  // used by fragment-loader\n  pLoader: void 0,\n  // used by playlist-loader\n  xhrSetup: void 0,\n  // used by xhr-loader\n  licenseXhrSetup: void 0,\n  // used by eme-controller\n  licenseResponseCallback: void 0,\n  // used by eme-controller\n  abrController: AbrController,\n  bufferController: BufferController,\n  capLevelController: CapLevelController,\n  errorController: ErrorController,\n  fpsController: FPSController,\n  stretchShortVideoTrack: false,\n  // used by mp4-remuxer\n  maxAudioFramesDrift: 1,\n  // used by mp4-remuxer\n  forceKeyFrameOnDiscontinuity: true,\n  // used by ts-demuxer\n  abrEwmaFastLive: 3,\n  // used by abr-controller\n  abrEwmaSlowLive: 9,\n  // used by abr-controller\n  abrEwmaFastVoD: 3,\n  // used by abr-controller\n  abrEwmaSlowVoD: 9,\n  // used by abr-controller\n  abrEwmaDefaultEstimate: 5e5,\n  // 500 kbps  // used by abr-controller\n  abrEwmaDefaultEstimateMax: 5e6,\n  // 5 mbps\n  abrBandWidthFactor: 0.95,\n  // used by abr-controller\n  abrBandWidthUpFactor: 0.7,\n  // used by abr-controller\n  abrMaxWithRealBitrate: false,\n  // used by abr-controller\n  maxStarvationDelay: 4,\n  // used by abr-controller\n  maxLoadingDelay: 4,\n  // used by abr-controller\n  minAutoBitrate: 0,\n  // used by hls\n  emeEnabled: false,\n  // used by eme-controller\n  widevineLicenseUrl: void 0,\n  // used by eme-controller\n  drmSystems: {},\n  // used by eme-controller\n  drmSystemOptions: {},\n  // used by eme-controller\n  requestMediaKeySystemAccessFunc: requestMediaKeySystemAccess,\n  // used by eme-controller\n  testBandwidth: true,\n  progressive: false,\n  lowLatencyMode: true,\n  cmcd: void 0,\n  enableDateRangeMetadataCues: true,\n  enableEmsgMetadataCues: true,\n  enableID3MetadataCues: true,\n  useMediaCapabilities: true,\n  certLoadPolicy: {\n    default: defaultLoadPolicy\n  },\n  keyLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: 8e3,\n      maxLoadTimeMs: 2e4,\n      timeoutRetry: {\n        maxNumRetry: 1,\n        retryDelayMs: 1e3,\n        maxRetryDelayMs: 2e4,\n        backoff: \"linear\"\n      },\n      errorRetry: {\n        maxNumRetry: 8,\n        retryDelayMs: 1e3,\n        maxRetryDelayMs: 2e4,\n        backoff: \"linear\"\n      }\n    }\n  },\n  manifestLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: Infinity,\n      maxLoadTimeMs: 2e4,\n      timeoutRetry: {\n        maxNumRetry: 2,\n        retryDelayMs: 0,\n        maxRetryDelayMs: 0\n      },\n      errorRetry: {\n        maxNumRetry: 1,\n        retryDelayMs: 1e3,\n        maxRetryDelayMs: 8e3\n      }\n    }\n  },\n  playlistLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: 1e4,\n      maxLoadTimeMs: 2e4,\n      timeoutRetry: {\n        maxNumRetry: 2,\n        retryDelayMs: 0,\n        maxRetryDelayMs: 0\n      },\n      errorRetry: {\n        maxNumRetry: 2,\n        retryDelayMs: 1e3,\n        maxRetryDelayMs: 8e3\n      }\n    }\n  },\n  fragLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: 1e4,\n      maxLoadTimeMs: 12e4,\n      timeoutRetry: {\n        maxNumRetry: 4,\n        retryDelayMs: 0,\n        maxRetryDelayMs: 0\n      },\n      errorRetry: {\n        maxNumRetry: 6,\n        retryDelayMs: 1e3,\n        maxRetryDelayMs: 8e3\n      }\n    }\n  },\n  steeringManifestLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: 1e4,\n      maxLoadTimeMs: 2e4,\n      timeoutRetry: {\n        maxNumRetry: 2,\n        retryDelayMs: 0,\n        maxRetryDelayMs: 0\n      },\n      errorRetry: {\n        maxNumRetry: 1,\n        retryDelayMs: 1e3,\n        maxRetryDelayMs: 8e3\n      }\n    }\n  },\n  // These default settings are deprecated in favor of the above policies\n  // and are maintained for backwards compatibility\n  manifestLoadingTimeOut: 1e4,\n  manifestLoadingMaxRetry: 1,\n  manifestLoadingRetryDelay: 1e3,\n  manifestLoadingMaxRetryTimeout: 64e3,\n  levelLoadingTimeOut: 1e4,\n  levelLoadingMaxRetry: 4,\n  levelLoadingRetryDelay: 1e3,\n  levelLoadingMaxRetryTimeout: 64e3,\n  fragLoadingTimeOut: 2e4,\n  fragLoadingMaxRetry: 6,\n  fragLoadingRetryDelay: 1e3,\n  fragLoadingMaxRetryTimeout: 64e3\n}, timelineConfig()), {}, {\n  subtitleStreamController: SubtitleStreamController,\n  subtitleTrackController: SubtitleTrackController,\n  timelineController: TimelineController,\n  audioStreamController: AudioStreamController,\n  audioTrackController: AudioTrackController,\n  emeController: EMEController,\n  cmcdController: CMCDController,\n  contentSteeringController: ContentSteeringController\n});\nfunction timelineConfig() {\n  return {\n    cueHandler: Cues,\n    // used by timeline-controller\n    enableWebVTT: true,\n    // used by timeline-controller\n    enableIMSC1: true,\n    // used by timeline-controller\n    enableCEA708Captions: true,\n    // used by timeline-controller\n    captionsTextTrack1Label: \"English\",\n    // used by timeline-controller\n    captionsTextTrack1LanguageCode: \"en\",\n    // used by timeline-controller\n    captionsTextTrack2Label: \"Spanish\",\n    // used by timeline-controller\n    captionsTextTrack2LanguageCode: \"es\",\n    // used by timeline-controller\n    captionsTextTrack3Label: \"Unknown CC\",\n    // used by timeline-controller\n    captionsTextTrack3LanguageCode: \"\",\n    // used by timeline-controller\n    captionsTextTrack4Label: \"Unknown CC\",\n    // used by timeline-controller\n    captionsTextTrack4LanguageCode: \"\",\n    // used by timeline-controller\n    renderTextTracksNatively: true\n  };\n}\nfunction mergeConfig(defaultConfig, userConfig) {\n  if ((userConfig.liveSyncDurationCount || userConfig.liveMaxLatencyDurationCount) && (userConfig.liveSyncDuration || userConfig.liveMaxLatencyDuration)) {\n    throw new Error(\"Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration\");\n  }\n  if (userConfig.liveMaxLatencyDurationCount !== void 0 && (userConfig.liveSyncDurationCount === void 0 || userConfig.liveMaxLatencyDurationCount <= userConfig.liveSyncDurationCount)) {\n    throw new Error('Illegal hls.js config: \"liveMaxLatencyDurationCount\" must be greater than \"liveSyncDurationCount\"');\n  }\n  if (userConfig.liveMaxLatencyDuration !== void 0 && (userConfig.liveSyncDuration === void 0 || userConfig.liveMaxLatencyDuration <= userConfig.liveSyncDuration)) {\n    throw new Error('Illegal hls.js config: \"liveMaxLatencyDuration\" must be greater than \"liveSyncDuration\"');\n  }\n  const defaultsCopy = deepCpy(defaultConfig);\n  const deprecatedSettingTypes = [\"manifest\", \"level\", \"frag\"];\n  const deprecatedSettings = [\"TimeOut\", \"MaxRetry\", \"RetryDelay\", \"MaxRetryTimeout\"];\n  deprecatedSettingTypes.forEach((type) => {\n    const policyName = `${type === \"level\" ? \"playlist\" : type}LoadPolicy`;\n    const policyNotSet = userConfig[policyName] === void 0;\n    const report = [];\n    deprecatedSettings.forEach((setting) => {\n      const deprecatedSetting = `${type}Loading${setting}`;\n      const value = userConfig[deprecatedSetting];\n      if (value !== void 0 && policyNotSet) {\n        report.push(deprecatedSetting);\n        const settings = defaultsCopy[policyName].default;\n        userConfig[policyName] = {\n          default: settings\n        };\n        switch (setting) {\n          case \"TimeOut\":\n            settings.maxLoadTimeMs = value;\n            settings.maxTimeToFirstByteMs = value;\n            break;\n          case \"MaxRetry\":\n            settings.errorRetry.maxNumRetry = value;\n            settings.timeoutRetry.maxNumRetry = value;\n            break;\n          case \"RetryDelay\":\n            settings.errorRetry.retryDelayMs = value;\n            settings.timeoutRetry.retryDelayMs = value;\n            break;\n          case \"MaxRetryTimeout\":\n            settings.errorRetry.maxRetryDelayMs = value;\n            settings.timeoutRetry.maxRetryDelayMs = value;\n            break;\n        }\n      }\n    });\n    if (report.length) {\n      logger.warn(`hls.js config: \"${report.join('\", \"')}\" setting(s) are deprecated, use \"${policyName}\": ${JSON.stringify(userConfig[policyName])}`);\n    }\n  });\n  return _objectSpread2(_objectSpread2({}, defaultsCopy), userConfig);\n}\nfunction deepCpy(obj) {\n  if (obj && typeof obj === \"object\") {\n    if (Array.isArray(obj)) {\n      return obj.map(deepCpy);\n    }\n    return Object.keys(obj).reduce((result, key) => {\n      result[key] = deepCpy(obj[key]);\n      return result;\n    }, {});\n  }\n  return obj;\n}\nfunction enableStreamingMode(config) {\n  const currentLoader = config.loader;\n  if (currentLoader !== FetchLoader && currentLoader !== XhrLoader) {\n    logger.log(\"[config]: Custom loader detected, cannot enable progressive streaming\");\n    config.progressive = false;\n  } else {\n    const canStreamProgressively = fetchSupported();\n    if (canStreamProgressively) {\n      config.loader = FetchLoader;\n      config.progressive = true;\n      config.enableSoftwareAES = true;\n      logger.log(\"[config]: Progressive streaming enabled, using FetchLoader\");\n    }\n  }\n}\nvar chromeOrFirefox;\nvar LevelController = class extends BasePlaylistController {\n  constructor(hls, contentSteeringController) {\n    super(hls, \"[level-controller]\");\n    this._levels = [];\n    this._firstLevel = -1;\n    this._maxAutoLevel = -1;\n    this._startLevel = void 0;\n    this.currentLevel = null;\n    this.currentLevelIndex = -1;\n    this.manualLevelIndex = -1;\n    this.steering = void 0;\n    this.onParsedComplete = void 0;\n    this.steering = contentSteeringController;\n    this._registerListeners();\n  }\n  _registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n  _unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n  destroy() {\n    this._unregisterListeners();\n    this.steering = null;\n    this.resetLevels();\n    super.destroy();\n  }\n  stopLoad() {\n    const levels = this._levels;\n    levels.forEach((level) => {\n      level.loadError = 0;\n      level.fragmentError = 0;\n    });\n    super.stopLoad();\n  }\n  resetLevels() {\n    this._startLevel = void 0;\n    this.manualLevelIndex = -1;\n    this.currentLevelIndex = -1;\n    this.currentLevel = null;\n    this._levels = [];\n    this._maxAutoLevel = -1;\n  }\n  onManifestLoading(event, data) {\n    this.resetLevels();\n  }\n  onManifestLoaded(event, data) {\n    const preferManagedMediaSource = this.hls.config.preferManagedMediaSource;\n    const levels = [];\n    const redundantSet = {};\n    const generatePathwaySet = {};\n    let resolutionFound = false;\n    let videoCodecFound = false;\n    let audioCodecFound = false;\n    data.levels.forEach((levelParsed) => {\n      var _audioCodec, _videoCodec;\n      const attributes = levelParsed.attrs;\n      let {\n        audioCodec,\n        videoCodec\n      } = levelParsed;\n      if (((_audioCodec = audioCodec) == null ? void 0 : _audioCodec.indexOf(\"mp4a.40.34\")) !== -1) {\n        chromeOrFirefox || (chromeOrFirefox = /chrome|firefox/i.test(navigator.userAgent));\n        if (chromeOrFirefox) {\n          levelParsed.audioCodec = audioCodec = void 0;\n        }\n      }\n      if (audioCodec) {\n        levelParsed.audioCodec = audioCodec = getCodecCompatibleName(audioCodec, preferManagedMediaSource);\n      }\n      if (((_videoCodec = videoCodec) == null ? void 0 : _videoCodec.indexOf(\"avc1\")) === 0) {\n        videoCodec = levelParsed.videoCodec = convertAVC1ToAVCOTI(videoCodec);\n      }\n      const {\n        width,\n        height,\n        unknownCodecs\n      } = levelParsed;\n      resolutionFound || (resolutionFound = !!(width && height));\n      videoCodecFound || (videoCodecFound = !!videoCodec);\n      audioCodecFound || (audioCodecFound = !!audioCodec);\n      if (unknownCodecs != null && unknownCodecs.length || audioCodec && !areCodecsMediaSourceSupported(audioCodec, \"audio\", preferManagedMediaSource) || videoCodec && !areCodecsMediaSourceSupported(videoCodec, \"video\", preferManagedMediaSource)) {\n        return;\n      }\n      const {\n        CODECS,\n        \"FRAME-RATE\": FRAMERATE,\n        \"HDCP-LEVEL\": HDCP,\n        \"PATHWAY-ID\": PATHWAY,\n        RESOLUTION,\n        \"VIDEO-RANGE\": VIDEO_RANGE\n      } = attributes;\n      const contentSteeringPrefix = `${PATHWAY || \".\"}-`;\n      const levelKey = `${contentSteeringPrefix}${levelParsed.bitrate}-${RESOLUTION}-${FRAMERATE}-${CODECS}-${VIDEO_RANGE}-${HDCP}`;\n      if (!redundantSet[levelKey]) {\n        const level = new Level(levelParsed);\n        redundantSet[levelKey] = level;\n        generatePathwaySet[levelKey] = 1;\n        levels.push(level);\n      } else if (redundantSet[levelKey].uri !== levelParsed.url && !levelParsed.attrs[\"PATHWAY-ID\"]) {\n        const pathwayCount = generatePathwaySet[levelKey] += 1;\n        levelParsed.attrs[\"PATHWAY-ID\"] = new Array(pathwayCount + 1).join(\".\");\n        const level = new Level(levelParsed);\n        redundantSet[levelKey] = level;\n        levels.push(level);\n      } else {\n        redundantSet[levelKey].addGroupId(\"audio\", attributes.AUDIO);\n        redundantSet[levelKey].addGroupId(\"text\", attributes.SUBTITLES);\n      }\n    });\n    this.filterAndSortMediaOptions(levels, data, resolutionFound, videoCodecFound, audioCodecFound);\n  }\n  filterAndSortMediaOptions(filteredLevels, data, resolutionFound, videoCodecFound, audioCodecFound) {\n    let audioTracks = [];\n    let subtitleTracks = [];\n    let levels = filteredLevels;\n    if ((resolutionFound || videoCodecFound) && audioCodecFound) {\n      levels = levels.filter(({\n        videoCodec,\n        videoRange,\n        width,\n        height\n      }) => (!!videoCodec || !!(width && height)) && isVideoRange(videoRange));\n    }\n    if (levels.length === 0) {\n      Promise.resolve().then(() => {\n        if (this.hls) {\n          if (data.levels.length) {\n            this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(data.levels[0].attrs)}`);\n          }\n          const error = new Error(\"no level with compatible codecs found in manifest\");\n          this.hls.trigger(Events.ERROR, {\n            type: ErrorTypes.MEDIA_ERROR,\n            details: ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR,\n            fatal: true,\n            url: data.url,\n            error,\n            reason: error.message\n          });\n        }\n      });\n      return;\n    }\n    if (data.audioTracks) {\n      const {\n        preferManagedMediaSource\n      } = this.hls.config;\n      audioTracks = data.audioTracks.filter((track) => !track.audioCodec || areCodecsMediaSourceSupported(track.audioCodec, \"audio\", preferManagedMediaSource));\n      assignTrackIdsByGroup(audioTracks);\n    }\n    if (data.subtitles) {\n      subtitleTracks = data.subtitles;\n      assignTrackIdsByGroup(subtitleTracks);\n    }\n    const unsortedLevels = levels.slice(0);\n    levels.sort((a2, b4) => {\n      if (a2.attrs[\"HDCP-LEVEL\"] !== b4.attrs[\"HDCP-LEVEL\"]) {\n        return (a2.attrs[\"HDCP-LEVEL\"] || \"\") > (b4.attrs[\"HDCP-LEVEL\"] || \"\") ? 1 : -1;\n      }\n      if (resolutionFound && a2.height !== b4.height) {\n        return a2.height - b4.height;\n      }\n      if (a2.frameRate !== b4.frameRate) {\n        return a2.frameRate - b4.frameRate;\n      }\n      if (a2.videoRange !== b4.videoRange) {\n        return VideoRangeValues.indexOf(a2.videoRange) - VideoRangeValues.indexOf(b4.videoRange);\n      }\n      if (a2.videoCodec !== b4.videoCodec) {\n        const valueA = videoCodecPreferenceValue(a2.videoCodec);\n        const valueB = videoCodecPreferenceValue(b4.videoCodec);\n        if (valueA !== valueB) {\n          return valueB - valueA;\n        }\n      }\n      if (a2.uri === b4.uri && a2.codecSet !== b4.codecSet) {\n        const valueA = codecsSetSelectionPreferenceValue(a2.codecSet);\n        const valueB = codecsSetSelectionPreferenceValue(b4.codecSet);\n        if (valueA !== valueB) {\n          return valueB - valueA;\n        }\n      }\n      if (a2.averageBitrate !== b4.averageBitrate) {\n        return a2.averageBitrate - b4.averageBitrate;\n      }\n      return 0;\n    });\n    let firstLevelInPlaylist = unsortedLevels[0];\n    if (this.steering) {\n      levels = this.steering.filterParsedLevels(levels);\n      if (levels.length !== unsortedLevels.length) {\n        for (let i2 = 0; i2 < unsortedLevels.length; i2++) {\n          if (unsortedLevels[i2].pathwayId === levels[0].pathwayId) {\n            firstLevelInPlaylist = unsortedLevels[i2];\n            break;\n          }\n        }\n      }\n    }\n    this._levels = levels;\n    for (let i2 = 0; i2 < levels.length; i2++) {\n      if (levels[i2] === firstLevelInPlaylist) {\n        var _this$hls$userConfig;\n        this._firstLevel = i2;\n        const firstLevelBitrate = firstLevelInPlaylist.bitrate;\n        const bandwidthEstimate = this.hls.bandwidthEstimate;\n        this.log(`manifest loaded, ${levels.length} level(s) found, first bitrate: ${firstLevelBitrate}`);\n        if (((_this$hls$userConfig = this.hls.userConfig) == null ? void 0 : _this$hls$userConfig.abrEwmaDefaultEstimate) === void 0) {\n          const startingBwEstimate = Math.min(firstLevelBitrate, this.hls.config.abrEwmaDefaultEstimateMax);\n          if (startingBwEstimate > bandwidthEstimate && bandwidthEstimate === hlsDefaultConfig.abrEwmaDefaultEstimate) {\n            this.hls.bandwidthEstimate = startingBwEstimate;\n          }\n        }\n        break;\n      }\n    }\n    const audioOnly = audioCodecFound && !videoCodecFound;\n    const edata = {\n      levels,\n      audioTracks,\n      subtitleTracks,\n      sessionData: data.sessionData,\n      sessionKeys: data.sessionKeys,\n      firstLevel: this._firstLevel,\n      stats: data.stats,\n      audio: audioCodecFound,\n      video: videoCodecFound,\n      altAudio: !audioOnly && audioTracks.some((t2) => !!t2.url)\n    };\n    this.hls.trigger(Events.MANIFEST_PARSED, edata);\n    if (this.hls.config.autoStartLoad || this.hls.forceStartLoad) {\n      this.hls.startLoad(this.hls.config.startPosition);\n    }\n  }\n  get levels() {\n    if (this._levels.length === 0) {\n      return null;\n    }\n    return this._levels;\n  }\n  get level() {\n    return this.currentLevelIndex;\n  }\n  set level(newLevel) {\n    const levels = this._levels;\n    if (levels.length === 0) {\n      return;\n    }\n    if (newLevel < 0 || newLevel >= levels.length) {\n      const error = new Error(\"invalid level idx\");\n      const fatal = newLevel < 0;\n      this.hls.trigger(Events.ERROR, {\n        type: ErrorTypes.OTHER_ERROR,\n        details: ErrorDetails.LEVEL_SWITCH_ERROR,\n        level: newLevel,\n        fatal,\n        error,\n        reason: error.message\n      });\n      if (fatal) {\n        return;\n      }\n      newLevel = Math.min(newLevel, levels.length - 1);\n    }\n    const lastLevelIndex = this.currentLevelIndex;\n    const lastLevel = this.currentLevel;\n    const lastPathwayId = lastLevel ? lastLevel.attrs[\"PATHWAY-ID\"] : void 0;\n    const level = levels[newLevel];\n    const pathwayId = level.attrs[\"PATHWAY-ID\"];\n    this.currentLevelIndex = newLevel;\n    this.currentLevel = level;\n    if (lastLevelIndex === newLevel && level.details && lastLevel && lastPathwayId === pathwayId) {\n      return;\n    }\n    this.log(`Switching to level ${newLevel} (${level.height ? level.height + \"p \" : \"\"}${level.videoRange ? level.videoRange + \" \" : \"\"}${level.codecSet ? level.codecSet + \" \" : \"\"}@${level.bitrate})${pathwayId ? \" with Pathway \" + pathwayId : \"\"} from level ${lastLevelIndex}${lastPathwayId ? \" with Pathway \" + lastPathwayId : \"\"}`);\n    const levelSwitchingData = {\n      level: newLevel,\n      attrs: level.attrs,\n      details: level.details,\n      bitrate: level.bitrate,\n      averageBitrate: level.averageBitrate,\n      maxBitrate: level.maxBitrate,\n      realBitrate: level.realBitrate,\n      width: level.width,\n      height: level.height,\n      codecSet: level.codecSet,\n      audioCodec: level.audioCodec,\n      videoCodec: level.videoCodec,\n      audioGroups: level.audioGroups,\n      subtitleGroups: level.subtitleGroups,\n      loaded: level.loaded,\n      loadError: level.loadError,\n      fragmentError: level.fragmentError,\n      name: level.name,\n      id: level.id,\n      uri: level.uri,\n      url: level.url,\n      urlId: 0,\n      audioGroupIds: level.audioGroupIds,\n      textGroupIds: level.textGroupIds\n    };\n    this.hls.trigger(Events.LEVEL_SWITCHING, levelSwitchingData);\n    const levelDetails = level.details;\n    if (!levelDetails || levelDetails.live) {\n      const hlsUrlParameters = this.switchParams(level.uri, lastLevel == null ? void 0 : lastLevel.details, levelDetails);\n      this.loadPlaylist(hlsUrlParameters);\n    }\n  }\n  get manualLevel() {\n    return this.manualLevelIndex;\n  }\n  set manualLevel(newLevel) {\n    this.manualLevelIndex = newLevel;\n    if (this._startLevel === void 0) {\n      this._startLevel = newLevel;\n    }\n    if (newLevel !== -1) {\n      this.level = newLevel;\n    }\n  }\n  get firstLevel() {\n    return this._firstLevel;\n  }\n  set firstLevel(newLevel) {\n    this._firstLevel = newLevel;\n  }\n  get startLevel() {\n    if (this._startLevel === void 0) {\n      const configStartLevel = this.hls.config.startLevel;\n      if (configStartLevel !== void 0) {\n        return configStartLevel;\n      }\n      return this.hls.firstAutoLevel;\n    }\n    return this._startLevel;\n  }\n  set startLevel(newLevel) {\n    this._startLevel = newLevel;\n  }\n  onError(event, data) {\n    if (data.fatal || !data.context) {\n      return;\n    }\n    if (data.context.type === PlaylistContextType.LEVEL && data.context.level === this.level) {\n      this.checkRetry(data);\n    }\n  }\n  // reset errors on the successful load of a fragment\n  onFragBuffered(event, {\n    frag\n  }) {\n    if (frag !== void 0 && frag.type === PlaylistLevelType.MAIN) {\n      const el = frag.elementaryStreams;\n      if (!Object.keys(el).some((type) => !!el[type])) {\n        return;\n      }\n      const level = this._levels[frag.level];\n      if (level != null && level.loadError) {\n        this.log(`Resetting level error count of ${level.loadError} on frag buffered`);\n        level.loadError = 0;\n      }\n    }\n  }\n  onLevelLoaded(event, data) {\n    var _data$deliveryDirecti2;\n    const {\n      level,\n      details\n    } = data;\n    const curLevel = this._levels[level];\n    if (!curLevel) {\n      var _data$deliveryDirecti;\n      this.warn(`Invalid level index ${level}`);\n      if ((_data$deliveryDirecti = data.deliveryDirectives) != null && _data$deliveryDirecti.skip) {\n        details.deltaUpdateFailed = true;\n      }\n      return;\n    }\n    if (level === this.currentLevelIndex) {\n      if (curLevel.fragmentError === 0) {\n        curLevel.loadError = 0;\n      }\n      this.playlistLoaded(level, data, curLevel.details);\n    } else if ((_data$deliveryDirecti2 = data.deliveryDirectives) != null && _data$deliveryDirecti2.skip) {\n      details.deltaUpdateFailed = true;\n    }\n  }\n  loadPlaylist(hlsUrlParameters) {\n    super.loadPlaylist();\n    const currentLevelIndex = this.currentLevelIndex;\n    const currentLevel = this.currentLevel;\n    if (currentLevel && this.shouldLoadPlaylist(currentLevel)) {\n      let url = currentLevel.uri;\n      if (hlsUrlParameters) {\n        try {\n          url = hlsUrlParameters.addDirectives(url);\n        } catch (error) {\n          this.warn(`Could not construct new URL with HLS Delivery Directives: ${error}`);\n        }\n      }\n      const pathwayId = currentLevel.attrs[\"PATHWAY-ID\"];\n      this.log(`Loading level index ${currentLevelIndex}${(hlsUrlParameters == null ? void 0 : hlsUrlParameters.msn) !== void 0 ? \" at sn \" + hlsUrlParameters.msn + \" part \" + hlsUrlParameters.part : \"\"} with${pathwayId ? \" Pathway \" + pathwayId : \"\"} ${url}`);\n      this.clearTimer();\n      this.hls.trigger(Events.LEVEL_LOADING, {\n        url,\n        level: currentLevelIndex,\n        pathwayId: currentLevel.attrs[\"PATHWAY-ID\"],\n        id: 0,\n        // Deprecated Level urlId\n        deliveryDirectives: hlsUrlParameters || null\n      });\n    }\n  }\n  get nextLoadLevel() {\n    if (this.manualLevelIndex !== -1) {\n      return this.manualLevelIndex;\n    } else {\n      return this.hls.nextAutoLevel;\n    }\n  }\n  set nextLoadLevel(nextLevel) {\n    this.level = nextLevel;\n    if (this.manualLevelIndex === -1) {\n      this.hls.nextAutoLevel = nextLevel;\n    }\n  }\n  removeLevel(levelIndex) {\n    var _this$currentLevel;\n    const levels = this._levels.filter((level, index) => {\n      if (index !== levelIndex) {\n        return true;\n      }\n      if (this.steering) {\n        this.steering.removeLevel(level);\n      }\n      if (level === this.currentLevel) {\n        this.currentLevel = null;\n        this.currentLevelIndex = -1;\n        if (level.details) {\n          level.details.fragments.forEach((f) => f.level = -1);\n        }\n      }\n      return false;\n    });\n    reassignFragmentLevelIndexes(levels);\n    this._levels = levels;\n    if (this.currentLevelIndex > -1 && (_this$currentLevel = this.currentLevel) != null && _this$currentLevel.details) {\n      this.currentLevelIndex = this.currentLevel.details.fragments[0].level;\n    }\n    this.hls.trigger(Events.LEVELS_UPDATED, {\n      levels\n    });\n  }\n  onLevelsUpdated(event, {\n    levels\n  }) {\n    this._levels = levels;\n  }\n  checkMaxAutoUpdated() {\n    const {\n      autoLevelCapping,\n      maxAutoLevel,\n      maxHdcpLevel\n    } = this.hls;\n    if (this._maxAutoLevel !== maxAutoLevel) {\n      this._maxAutoLevel = maxAutoLevel;\n      this.hls.trigger(Events.MAX_AUTO_LEVEL_UPDATED, {\n        autoLevelCapping,\n        levels: this.levels,\n        maxAutoLevel,\n        minAutoLevel: this.hls.minAutoLevel,\n        maxHdcpLevel\n      });\n    }\n  }\n};\nfunction assignTrackIdsByGroup(tracks) {\n  const groups = {};\n  tracks.forEach((track) => {\n    const groupId = track.groupId || \"\";\n    track.id = groups[groupId] = groups[groupId] || 0;\n    groups[groupId]++;\n  });\n}\nvar KeyLoader = class {\n  constructor(config) {\n    this.config = void 0;\n    this.keyUriToKeyInfo = {};\n    this.emeController = null;\n    this.config = config;\n  }\n  abort(type) {\n    for (const uri in this.keyUriToKeyInfo) {\n      const loader = this.keyUriToKeyInfo[uri].loader;\n      if (loader) {\n        var _loader$context;\n        if (type && type !== ((_loader$context = loader.context) == null ? void 0 : _loader$context.frag.type)) {\n          return;\n        }\n        loader.abort();\n      }\n    }\n  }\n  detach() {\n    for (const uri in this.keyUriToKeyInfo) {\n      const keyInfo = this.keyUriToKeyInfo[uri];\n      if (keyInfo.mediaKeySessionContext || keyInfo.decryptdata.isCommonEncryption) {\n        delete this.keyUriToKeyInfo[uri];\n      }\n    }\n  }\n  destroy() {\n    this.detach();\n    for (const uri in this.keyUriToKeyInfo) {\n      const loader = this.keyUriToKeyInfo[uri].loader;\n      if (loader) {\n        loader.destroy();\n      }\n    }\n    this.keyUriToKeyInfo = {};\n  }\n  createKeyLoadError(frag, details = ErrorDetails.KEY_LOAD_ERROR, error, networkDetails, response) {\n    return new LoadError({\n      type: ErrorTypes.NETWORK_ERROR,\n      details,\n      fatal: false,\n      frag,\n      response,\n      error,\n      networkDetails\n    });\n  }\n  loadClear(loadingFrag, encryptedFragments) {\n    if (this.emeController && this.config.emeEnabled) {\n      const {\n        sn,\n        cc\n      } = loadingFrag;\n      for (let i2 = 0; i2 < encryptedFragments.length; i2++) {\n        const frag = encryptedFragments[i2];\n        if (cc <= frag.cc && (sn === \"initSegment\" || frag.sn === \"initSegment\" || sn < frag.sn)) {\n          this.emeController.selectKeySystemFormat(frag).then((keySystemFormat) => {\n            frag.setKeyFormat(keySystemFormat);\n          });\n          break;\n        }\n      }\n    }\n  }\n  load(frag) {\n    if (!frag.decryptdata && frag.encrypted && this.emeController && this.config.emeEnabled) {\n      return this.emeController.selectKeySystemFormat(frag).then((keySystemFormat) => {\n        return this.loadInternal(frag, keySystemFormat);\n      });\n    }\n    return this.loadInternal(frag);\n  }\n  loadInternal(frag, keySystemFormat) {\n    var _keyInfo, _keyInfo2;\n    if (keySystemFormat) {\n      frag.setKeyFormat(keySystemFormat);\n    }\n    const decryptdata = frag.decryptdata;\n    if (!decryptdata) {\n      const error = new Error(keySystemFormat ? `Expected frag.decryptdata to be defined after setting format ${keySystemFormat}` : \"Missing decryption data on fragment in onKeyLoading\");\n      return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, error));\n    }\n    const uri = decryptdata.uri;\n    if (!uri) {\n      return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error(`Invalid key URI: \"${uri}\"`)));\n    }\n    let keyInfo = this.keyUriToKeyInfo[uri];\n    if ((_keyInfo = keyInfo) != null && _keyInfo.decryptdata.key) {\n      decryptdata.key = keyInfo.decryptdata.key;\n      return Promise.resolve({\n        frag,\n        keyInfo\n      });\n    }\n    if ((_keyInfo2 = keyInfo) != null && _keyInfo2.keyLoadPromise) {\n      var _keyInfo$mediaKeySess;\n      switch ((_keyInfo$mediaKeySess = keyInfo.mediaKeySessionContext) == null ? void 0 : _keyInfo$mediaKeySess.keyStatus) {\n        case void 0:\n        case \"status-pending\":\n        case \"usable\":\n        case \"usable-in-future\":\n          return keyInfo.keyLoadPromise.then((keyLoadedData) => {\n            decryptdata.key = keyLoadedData.keyInfo.decryptdata.key;\n            return {\n              frag,\n              keyInfo\n            };\n          });\n      }\n    }\n    keyInfo = this.keyUriToKeyInfo[uri] = {\n      decryptdata,\n      keyLoadPromise: null,\n      loader: null,\n      mediaKeySessionContext: null\n    };\n    switch (decryptdata.method) {\n      case \"ISO-23001-7\":\n      case \"SAMPLE-AES\":\n      case \"SAMPLE-AES-CENC\":\n      case \"SAMPLE-AES-CTR\":\n        if (decryptdata.keyFormat === \"identity\") {\n          return this.loadKeyHTTP(keyInfo, frag);\n        }\n        return this.loadKeyEME(keyInfo, frag);\n      case \"AES-128\":\n        return this.loadKeyHTTP(keyInfo, frag);\n      default:\n        return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error(`Key supplied with unsupported METHOD: \"${decryptdata.method}\"`)));\n    }\n  }\n  loadKeyEME(keyInfo, frag) {\n    const keyLoadedData = {\n      frag,\n      keyInfo\n    };\n    if (this.emeController && this.config.emeEnabled) {\n      const keySessionContextPromise = this.emeController.loadKey(keyLoadedData);\n      if (keySessionContextPromise) {\n        return (keyInfo.keyLoadPromise = keySessionContextPromise.then((keySessionContext) => {\n          keyInfo.mediaKeySessionContext = keySessionContext;\n          return keyLoadedData;\n        })).catch((error) => {\n          keyInfo.keyLoadPromise = null;\n          throw error;\n        });\n      }\n    }\n    return Promise.resolve(keyLoadedData);\n  }\n  loadKeyHTTP(keyInfo, frag) {\n    const config = this.config;\n    const Loader = config.loader;\n    const keyLoader = new Loader(config);\n    frag.keyLoader = keyInfo.loader = keyLoader;\n    return keyInfo.keyLoadPromise = new Promise((resolve, reject) => {\n      const loaderContext = {\n        keyInfo,\n        frag,\n        responseType: \"arraybuffer\",\n        url: keyInfo.decryptdata.uri\n      };\n      const loadPolicy = config.keyLoadPolicy.default;\n      const loaderConfig = {\n        loadPolicy,\n        timeout: loadPolicy.maxLoadTimeMs,\n        maxRetry: 0,\n        retryDelay: 0,\n        maxRetryDelay: 0\n      };\n      const loaderCallbacks = {\n        onSuccess: (response, stats, context, networkDetails) => {\n          const {\n            frag: frag2,\n            keyInfo: keyInfo2,\n            url: uri\n          } = context;\n          if (!frag2.decryptdata || keyInfo2 !== this.keyUriToKeyInfo[uri]) {\n            return reject(this.createKeyLoadError(frag2, ErrorDetails.KEY_LOAD_ERROR, new Error(\"after key load, decryptdata unset or changed\"), networkDetails));\n          }\n          keyInfo2.decryptdata.key = frag2.decryptdata.key = new Uint8Array(response.data);\n          frag2.keyLoader = null;\n          keyInfo2.loader = null;\n          resolve({\n            frag: frag2,\n            keyInfo: keyInfo2\n          });\n        },\n        onError: (response, context, networkDetails, stats) => {\n          this.resetLoader(context);\n          reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error(`HTTP Error ${response.code} loading key ${response.text}`), networkDetails, _objectSpread2({\n            url: loaderContext.url,\n            data: void 0\n          }, response)));\n        },\n        onTimeout: (stats, context, networkDetails) => {\n          this.resetLoader(context);\n          reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_TIMEOUT, new Error(\"key loading timed out\"), networkDetails));\n        },\n        onAbort: (stats, context, networkDetails) => {\n          this.resetLoader(context);\n          reject(this.createKeyLoadError(frag, ErrorDetails.INTERNAL_ABORTED, new Error(\"key loading aborted\"), networkDetails));\n        }\n      };\n      keyLoader.load(loaderContext, loaderConfig, loaderCallbacks);\n    });\n  }\n  resetLoader(context) {\n    const {\n      frag,\n      keyInfo,\n      url: uri\n    } = context;\n    const loader = keyInfo.loader;\n    if (frag.keyLoader === loader) {\n      frag.keyLoader = null;\n      keyInfo.loader = null;\n    }\n    delete this.keyUriToKeyInfo[uri];\n    if (loader) {\n      loader.destroy();\n    }\n  }\n};\nfunction getSourceBuffer() {\n  return self.SourceBuffer || self.WebKitSourceBuffer;\n}\nfunction isMSESupported() {\n  const mediaSource = getMediaSource();\n  if (!mediaSource) {\n    return false;\n  }\n  const sourceBuffer = getSourceBuffer();\n  return !sourceBuffer || sourceBuffer.prototype && typeof sourceBuffer.prototype.appendBuffer === \"function\" && typeof sourceBuffer.prototype.remove === \"function\";\n}\nfunction isSupported() {\n  if (!isMSESupported()) {\n    return false;\n  }\n  const mediaSource = getMediaSource();\n  return typeof (mediaSource == null ? void 0 : mediaSource.isTypeSupported) === \"function\" && ([\"avc1.42E01E,mp4a.40.2\", \"av01.0.01M.08\", \"vp09.00.50.08\"].some((codecsForVideoContainer) => mediaSource.isTypeSupported(mimeTypeForCodec(codecsForVideoContainer, \"video\"))) || [\"mp4a.40.2\", \"fLaC\"].some((codecForAudioContainer) => mediaSource.isTypeSupported(mimeTypeForCodec(codecForAudioContainer, \"audio\"))));\n}\nfunction changeTypeSupported() {\n  var _sourceBuffer$prototy;\n  const sourceBuffer = getSourceBuffer();\n  return typeof (sourceBuffer == null ? void 0 : (_sourceBuffer$prototy = sourceBuffer.prototype) == null ? void 0 : _sourceBuffer$prototy.changeType) === \"function\";\n}\nvar STALL_MINIMUM_DURATION_MS = 250;\nvar MAX_START_GAP_JUMP = 2;\nvar SKIP_BUFFER_HOLE_STEP_SECONDS = 0.1;\nvar SKIP_BUFFER_RANGE_START = 0.05;\nvar GapController = class {\n  constructor(config, media, fragmentTracker, hls) {\n    this.config = void 0;\n    this.media = null;\n    this.fragmentTracker = void 0;\n    this.hls = void 0;\n    this.nudgeRetry = 0;\n    this.stallReported = false;\n    this.stalled = null;\n    this.moved = false;\n    this.seeking = false;\n    this.config = config;\n    this.media = media;\n    this.fragmentTracker = fragmentTracker;\n    this.hls = hls;\n  }\n  destroy() {\n    this.media = null;\n    this.hls = this.fragmentTracker = null;\n  }\n  /**\n   * Checks if the playhead is stuck within a gap, and if so, attempts to free it.\n   * A gap is an unbuffered range between two buffered ranges (or the start and the first buffered range).\n   *\n   * @param lastCurrentTime - Previously read playhead position\n   */\n  poll(lastCurrentTime, activeFrag) {\n    const {\n      config,\n      media,\n      stalled\n    } = this;\n    if (media === null) {\n      return;\n    }\n    const {\n      currentTime,\n      seeking\n    } = media;\n    const seeked = this.seeking && !seeking;\n    const beginSeek = !this.seeking && seeking;\n    this.seeking = seeking;\n    if (currentTime !== lastCurrentTime) {\n      this.moved = true;\n      if (!seeking) {\n        this.nudgeRetry = 0;\n      }\n      if (stalled !== null) {\n        if (this.stallReported) {\n          const _stalledDuration = self.performance.now() - stalled;\n          logger.warn(`playback not stuck anymore @${currentTime}, after ${Math.round(_stalledDuration)}ms`);\n          this.stallReported = false;\n        }\n        this.stalled = null;\n      }\n      return;\n    }\n    if (beginSeek || seeked) {\n      this.stalled = null;\n      return;\n    }\n    if (media.paused && !seeking || media.ended || media.playbackRate === 0 || !BufferHelper.getBuffered(media).length) {\n      this.nudgeRetry = 0;\n      return;\n    }\n    const bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n    const nextStart = bufferInfo.nextStart || 0;\n    if (seeking) {\n      const hasEnoughBuffer = bufferInfo.len > MAX_START_GAP_JUMP;\n      const noBufferGap = !nextStart || activeFrag && activeFrag.start <= currentTime || nextStart - currentTime > MAX_START_GAP_JUMP && !this.fragmentTracker.getPartialFragment(currentTime);\n      if (hasEnoughBuffer || noBufferGap) {\n        return;\n      }\n      this.moved = false;\n    }\n    if (!this.moved && this.stalled !== null) {\n      var _level$details;\n      const isBuffered = bufferInfo.len > 0;\n      if (!isBuffered && !nextStart) {\n        return;\n      }\n      const startJump = Math.max(nextStart, bufferInfo.start || 0) - currentTime;\n      const level = this.hls.levels ? this.hls.levels[this.hls.currentLevel] : null;\n      const isLive = level == null ? void 0 : (_level$details = level.details) == null ? void 0 : _level$details.live;\n      const maxStartGapJump = isLive ? level.details.targetduration * 2 : MAX_START_GAP_JUMP;\n      const partialOrGap = this.fragmentTracker.getPartialFragment(currentTime);\n      if (startJump > 0 && (startJump <= maxStartGapJump || partialOrGap)) {\n        if (!media.paused) {\n          this._trySkipBufferHole(partialOrGap);\n        }\n        return;\n      }\n    }\n    const tnow = self.performance.now();\n    if (stalled === null) {\n      this.stalled = tnow;\n      return;\n    }\n    const stalledDuration = tnow - stalled;\n    if (!seeking && stalledDuration >= STALL_MINIMUM_DURATION_MS) {\n      this._reportStall(bufferInfo);\n      if (!this.media) {\n        return;\n      }\n    }\n    const bufferedWithHoles = BufferHelper.bufferInfo(media, currentTime, config.maxBufferHole);\n    this._tryFixBufferStall(bufferedWithHoles, stalledDuration);\n  }\n  /**\n   * Detects and attempts to fix known buffer stalling issues.\n   * @param bufferInfo - The properties of the current buffer.\n   * @param stalledDurationMs - The amount of time Hls.js has been stalling for.\n   * @private\n   */\n  _tryFixBufferStall(bufferInfo, stalledDurationMs) {\n    const {\n      config,\n      fragmentTracker,\n      media\n    } = this;\n    if (media === null) {\n      return;\n    }\n    const currentTime = media.currentTime;\n    const partial = fragmentTracker.getPartialFragment(currentTime);\n    if (partial) {\n      const targetTime = this._trySkipBufferHole(partial);\n      if (targetTime || !this.media) {\n        return;\n      }\n    }\n    if ((bufferInfo.len > config.maxBufferHole || bufferInfo.nextStart && bufferInfo.nextStart - currentTime < config.maxBufferHole) && stalledDurationMs > config.highBufferWatchdogPeriod * 1e3) {\n      logger.warn(\"Trying to nudge playhead over buffer-hole\");\n      this.stalled = null;\n      this._tryNudgeBuffer();\n    }\n  }\n  /**\n   * Triggers a BUFFER_STALLED_ERROR event, but only once per stall period.\n   * @param bufferLen - The playhead distance from the end of the current buffer segment.\n   * @private\n   */\n  _reportStall(bufferInfo) {\n    const {\n      hls,\n      media,\n      stallReported\n    } = this;\n    if (!stallReported && media) {\n      this.stallReported = true;\n      const error = new Error(`Playback stalling at @${media.currentTime} due to low buffer (${JSON.stringify(bufferInfo)})`);\n      logger.warn(error.message);\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.BUFFER_STALLED_ERROR,\n        fatal: false,\n        error,\n        buffer: bufferInfo.len\n      });\n    }\n  }\n  /**\n   * Attempts to fix buffer stalls by jumping over known gaps caused by partial fragments\n   * @param partial - The partial fragment found at the current time (where playback is stalling).\n   * @private\n   */\n  _trySkipBufferHole(partial) {\n    const {\n      config,\n      hls,\n      media\n    } = this;\n    if (media === null) {\n      return 0;\n    }\n    const currentTime = media.currentTime;\n    const bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n    const startTime = currentTime < bufferInfo.start ? bufferInfo.start : bufferInfo.nextStart;\n    if (startTime) {\n      const bufferStarved = bufferInfo.len <= config.maxBufferHole;\n      const waiting = bufferInfo.len > 0 && bufferInfo.len < 1 && media.readyState < 3;\n      const gapLength = startTime - currentTime;\n      if (gapLength > 0 && (bufferStarved || waiting)) {\n        if (gapLength > config.maxBufferHole) {\n          const {\n            fragmentTracker\n          } = this;\n          let startGap = false;\n          if (currentTime === 0) {\n            const startFrag = fragmentTracker.getAppendedFrag(0, PlaylistLevelType.MAIN);\n            if (startFrag && startTime < startFrag.end) {\n              startGap = true;\n            }\n          }\n          if (!startGap) {\n            const startProvisioned = partial || fragmentTracker.getAppendedFrag(currentTime, PlaylistLevelType.MAIN);\n            if (startProvisioned) {\n              let moreToLoad = false;\n              let pos = startProvisioned.end;\n              while (pos < startTime) {\n                const provisioned = fragmentTracker.getPartialFragment(pos);\n                if (provisioned) {\n                  pos += provisioned.duration;\n                } else {\n                  moreToLoad = true;\n                  break;\n                }\n              }\n              if (moreToLoad) {\n                return 0;\n              }\n            }\n          }\n        }\n        const targetTime = Math.max(startTime + SKIP_BUFFER_RANGE_START, currentTime + SKIP_BUFFER_HOLE_STEP_SECONDS);\n        logger.warn(`skipping hole, adjusting currentTime from ${currentTime} to ${targetTime}`);\n        this.moved = true;\n        this.stalled = null;\n        media.currentTime = targetTime;\n        if (partial && !partial.gap) {\n          const error = new Error(`fragment loaded with buffer holes, seeking from ${currentTime} to ${targetTime}`);\n          hls.trigger(Events.ERROR, {\n            type: ErrorTypes.MEDIA_ERROR,\n            details: ErrorDetails.BUFFER_SEEK_OVER_HOLE,\n            fatal: false,\n            error,\n            reason: error.message,\n            frag: partial\n          });\n        }\n        return targetTime;\n      }\n    }\n    return 0;\n  }\n  /**\n   * Attempts to fix buffer stalls by advancing the mediaElement's current time by a small amount.\n   * @private\n   */\n  _tryNudgeBuffer() {\n    const {\n      config,\n      hls,\n      media,\n      nudgeRetry\n    } = this;\n    if (media === null) {\n      return;\n    }\n    const currentTime = media.currentTime;\n    this.nudgeRetry++;\n    if (nudgeRetry < config.nudgeMaxRetry) {\n      const targetTime = currentTime + (nudgeRetry + 1) * config.nudgeOffset;\n      const error = new Error(`Nudging 'currentTime' from ${currentTime} to ${targetTime}`);\n      logger.warn(error.message);\n      media.currentTime = targetTime;\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.BUFFER_NUDGE_ON_STALL,\n        error,\n        fatal: false\n      });\n    } else {\n      const error = new Error(`Playhead still not moving while enough data buffered @${currentTime} after ${config.nudgeMaxRetry} nudges`);\n      logger.error(error.message);\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.BUFFER_STALLED_ERROR,\n        error,\n        fatal: true\n      });\n    }\n  }\n};\nvar TICK_INTERVAL = 100;\nvar StreamController = class extends BaseStreamController {\n  constructor(hls, fragmentTracker, keyLoader) {\n    super(hls, fragmentTracker, keyLoader, \"[stream-controller]\", PlaylistLevelType.MAIN);\n    this.audioCodecSwap = false;\n    this.gapController = null;\n    this.level = -1;\n    this._forceStartLoad = false;\n    this.altAudio = false;\n    this.audioOnly = false;\n    this.fragPlaying = null;\n    this.onvplaying = null;\n    this.onvseeked = null;\n    this.fragLastKbps = 0;\n    this.couldBacktrack = false;\n    this.backtrackFragment = null;\n    this.audioCodecSwitch = false;\n    this.videoBuffer = null;\n    this._registerListeners();\n  }\n  _registerListeners() {\n    const {\n      hls\n    } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(Events.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n    hls.on(Events.ERROR, this.onError, this);\n    hls.on(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n    hls.on(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n    hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n    hls.on(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n    hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n  _unregisterListeners() {\n    const {\n      hls\n    } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(Events.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n    hls.off(Events.ERROR, this.onError, this);\n    hls.off(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n    hls.off(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n    hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n    hls.off(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n    hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n  onHandlerDestroying() {\n    this._unregisterListeners();\n    super.onHandlerDestroying();\n  }\n  startLoad(startPosition) {\n    if (this.levels) {\n      const {\n        lastCurrentTime,\n        hls\n      } = this;\n      this.stopLoad();\n      this.setInterval(TICK_INTERVAL);\n      this.level = -1;\n      if (!this.startFragRequested) {\n        let startLevel = hls.startLevel;\n        if (startLevel === -1) {\n          if (hls.config.testBandwidth && this.levels.length > 1) {\n            startLevel = 0;\n            this.bitrateTest = true;\n          } else {\n            startLevel = hls.firstAutoLevel;\n          }\n        }\n        hls.nextLoadLevel = startLevel;\n        this.level = hls.loadLevel;\n        this.loadedmetadata = false;\n      }\n      if (lastCurrentTime > 0 && startPosition === -1) {\n        this.log(`Override startPosition with lastCurrentTime @${lastCurrentTime.toFixed(3)}`);\n        startPosition = lastCurrentTime;\n      }\n      this.state = State.IDLE;\n      this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n      this.tick();\n    } else {\n      this._forceStartLoad = true;\n      this.state = State.STOPPED;\n    }\n  }\n  stopLoad() {\n    this._forceStartLoad = false;\n    super.stopLoad();\n  }\n  doTick() {\n    switch (this.state) {\n      case State.WAITING_LEVEL: {\n        const {\n          levels,\n          level\n        } = this;\n        const currentLevel = levels == null ? void 0 : levels[level];\n        const details = currentLevel == null ? void 0 : currentLevel.details;\n        if (details && (!details.live || this.levelLastLoaded === currentLevel)) {\n          if (this.waitForCdnTuneIn(details)) {\n            break;\n          }\n          this.state = State.IDLE;\n          break;\n        } else if (this.hls.nextLoadLevel !== this.level) {\n          this.state = State.IDLE;\n          break;\n        }\n        break;\n      }\n      case State.FRAG_LOADING_WAITING_RETRY:\n        {\n          var _this$media;\n          const now2 = self.performance.now();\n          const retryDate = this.retryDate;\n          if (!retryDate || now2 >= retryDate || (_this$media = this.media) != null && _this$media.seeking) {\n            const {\n              levels,\n              level\n            } = this;\n            const currentLevel = levels == null ? void 0 : levels[level];\n            this.resetStartWhenNotLoaded(currentLevel || null);\n            this.state = State.IDLE;\n          }\n        }\n        break;\n    }\n    if (this.state === State.IDLE) {\n      this.doTickIdle();\n    }\n    this.onTickEnd();\n  }\n  onTickEnd() {\n    super.onTickEnd();\n    this.checkBuffer();\n    this.checkFragmentChanged();\n  }\n  doTickIdle() {\n    const {\n      hls,\n      levelLastLoaded,\n      levels,\n      media\n    } = this;\n    if (levelLastLoaded === null || !media && (this.startFragRequested || !hls.config.startFragPrefetch)) {\n      return;\n    }\n    if (this.altAudio && this.audioOnly) {\n      return;\n    }\n    const level = this.buffering ? hls.nextLoadLevel : hls.loadLevel;\n    if (!(levels != null && levels[level])) {\n      return;\n    }\n    const levelInfo = levels[level];\n    const bufferInfo = this.getMainFwdBufferInfo();\n    if (bufferInfo === null) {\n      return;\n    }\n    const lastDetails = this.getLevelDetails();\n    if (lastDetails && this._streamEnded(bufferInfo, lastDetails)) {\n      const data = {};\n      if (this.altAudio) {\n        data.type = \"video\";\n      }\n      this.hls.trigger(Events.BUFFER_EOS, data);\n      this.state = State.ENDED;\n      return;\n    }\n    if (!this.buffering) {\n      return;\n    }\n    if (hls.loadLevel !== level && hls.manualLevel === -1) {\n      this.log(`Adapting to level ${level} from level ${this.level}`);\n    }\n    this.level = hls.nextLoadLevel = level;\n    const levelDetails = levelInfo.details;\n    if (!levelDetails || this.state === State.WAITING_LEVEL || levelDetails.live && this.levelLastLoaded !== levelInfo) {\n      this.level = level;\n      this.state = State.WAITING_LEVEL;\n      return;\n    }\n    const bufferLen = bufferInfo.len;\n    const maxBufLen = this.getMaxBufferLength(levelInfo.maxBitrate);\n    if (bufferLen >= maxBufLen) {\n      return;\n    }\n    if (this.backtrackFragment && this.backtrackFragment.start > bufferInfo.end) {\n      this.backtrackFragment = null;\n    }\n    const targetBufferTime = this.backtrackFragment ? this.backtrackFragment.start : bufferInfo.end;\n    let frag = this.getNextFragment(targetBufferTime, levelDetails);\n    if (this.couldBacktrack && !this.fragPrevious && frag && frag.sn !== \"initSegment\" && this.fragmentTracker.getState(frag) !== FragmentState.OK) {\n      var _this$backtrackFragme;\n      const backtrackSn = ((_this$backtrackFragme = this.backtrackFragment) != null ? _this$backtrackFragme : frag).sn;\n      const fragIdx = backtrackSn - levelDetails.startSN;\n      const backtrackFrag = levelDetails.fragments[fragIdx - 1];\n      if (backtrackFrag && frag.cc === backtrackFrag.cc) {\n        frag = backtrackFrag;\n        this.fragmentTracker.removeFragment(backtrackFrag);\n      }\n    } else if (this.backtrackFragment && bufferInfo.len) {\n      this.backtrackFragment = null;\n    }\n    if (frag && this.isLoopLoading(frag, targetBufferTime)) {\n      const gapStart = frag.gap;\n      if (!gapStart) {\n        const type = this.audioOnly && !this.altAudio ? ElementaryStreamTypes.AUDIO : ElementaryStreamTypes.VIDEO;\n        const mediaBuffer = (type === ElementaryStreamTypes.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media;\n        if (mediaBuffer) {\n          this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.MAIN);\n        }\n      }\n      frag = this.getNextFragmentLoopLoading(frag, levelDetails, bufferInfo, PlaylistLevelType.MAIN, maxBufLen);\n    }\n    if (!frag) {\n      return;\n    }\n    if (frag.initSegment && !frag.initSegment.data && !this.bitrateTest) {\n      frag = frag.initSegment;\n    }\n    this.loadFragment(frag, levelInfo, targetBufferTime);\n  }\n  loadFragment(frag, level, targetBufferTime) {\n    const fragState = this.fragmentTracker.getState(frag);\n    this.fragCurrent = frag;\n    if (fragState === FragmentState.NOT_LOADED || fragState === FragmentState.PARTIAL) {\n      if (frag.sn === \"initSegment\") {\n        this._loadInitSegment(frag, level);\n      } else if (this.bitrateTest) {\n        this.log(`Fragment ${frag.sn} of level ${frag.level} is being downloaded to test bitrate and will not be buffered`);\n        this._loadBitrateTestFrag(frag, level);\n      } else {\n        this.startFragRequested = true;\n        super.loadFragment(frag, level, targetBufferTime);\n      }\n    } else {\n      this.clearTrackerIfNeeded(frag);\n    }\n  }\n  getBufferedFrag(position) {\n    return this.fragmentTracker.getBufferedFrag(position, PlaylistLevelType.MAIN);\n  }\n  followingBufferedFrag(frag) {\n    if (frag) {\n      return this.getBufferedFrag(frag.end + 0.5);\n    }\n    return null;\n  }\n  /*\n    on immediate level switch :\n     - pause playback if playing\n     - cancel any pending load request\n     - and trigger a buffer flush\n  */\n  immediateLevelSwitch() {\n    this.abortCurrentFrag();\n    this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n  }\n  /**\n   * try to switch ASAP without breaking video playback:\n   * in order to ensure smooth but quick level switching,\n   * we need to find the next flushable buffer range\n   * we should take into account new segment fetch time\n   */\n  nextLevelSwitch() {\n    const {\n      levels,\n      media\n    } = this;\n    if (media != null && media.readyState) {\n      let fetchdelay;\n      const fragPlayingCurrent = this.getAppendedFrag(media.currentTime);\n      if (fragPlayingCurrent && fragPlayingCurrent.start > 1) {\n        this.flushMainBuffer(0, fragPlayingCurrent.start - 1);\n      }\n      const levelDetails = this.getLevelDetails();\n      if (levelDetails != null && levelDetails.live) {\n        const bufferInfo = this.getMainFwdBufferInfo();\n        if (!bufferInfo || bufferInfo.len < levelDetails.targetduration * 2) {\n          return;\n        }\n      }\n      if (!media.paused && levels) {\n        const nextLevelId = this.hls.nextLoadLevel;\n        const nextLevel = levels[nextLevelId];\n        const fragLastKbps = this.fragLastKbps;\n        if (fragLastKbps && this.fragCurrent) {\n          fetchdelay = this.fragCurrent.duration * nextLevel.maxBitrate / (1e3 * fragLastKbps) + 1;\n        } else {\n          fetchdelay = 0;\n        }\n      } else {\n        fetchdelay = 0;\n      }\n      const bufferedFrag = this.getBufferedFrag(media.currentTime + fetchdelay);\n      if (bufferedFrag) {\n        const nextBufferedFrag = this.followingBufferedFrag(bufferedFrag);\n        if (nextBufferedFrag) {\n          this.abortCurrentFrag();\n          const maxStart = nextBufferedFrag.maxStartPTS ? nextBufferedFrag.maxStartPTS : nextBufferedFrag.start;\n          const fragDuration = nextBufferedFrag.duration;\n          const startPts = Math.max(bufferedFrag.end, maxStart + Math.min(Math.max(fragDuration - this.config.maxFragLookUpTolerance, fragDuration * (this.couldBacktrack ? 0.5 : 0.125)), fragDuration * (this.couldBacktrack ? 0.75 : 0.25)));\n          this.flushMainBuffer(startPts, Number.POSITIVE_INFINITY);\n        }\n      }\n    }\n  }\n  abortCurrentFrag() {\n    const fragCurrent = this.fragCurrent;\n    this.fragCurrent = null;\n    this.backtrackFragment = null;\n    if (fragCurrent) {\n      fragCurrent.abortRequests();\n      this.fragmentTracker.removeFragment(fragCurrent);\n    }\n    switch (this.state) {\n      case State.KEY_LOADING:\n      case State.FRAG_LOADING:\n      case State.FRAG_LOADING_WAITING_RETRY:\n      case State.PARSING:\n      case State.PARSED:\n        this.state = State.IDLE;\n        break;\n    }\n    this.nextLoadPosition = this.getLoadPosition();\n  }\n  flushMainBuffer(startOffset, endOffset) {\n    super.flushMainBuffer(startOffset, endOffset, this.altAudio ? \"video\" : null);\n  }\n  onMediaAttached(event, data) {\n    super.onMediaAttached(event, data);\n    const media = data.media;\n    this.onvplaying = this.onMediaPlaying.bind(this);\n    this.onvseeked = this.onMediaSeeked.bind(this);\n    media.addEventListener(\"playing\", this.onvplaying);\n    media.addEventListener(\"seeked\", this.onvseeked);\n    this.gapController = new GapController(this.config, media, this.fragmentTracker, this.hls);\n  }\n  onMediaDetaching() {\n    const {\n      media\n    } = this;\n    if (media && this.onvplaying && this.onvseeked) {\n      media.removeEventListener(\"playing\", this.onvplaying);\n      media.removeEventListener(\"seeked\", this.onvseeked);\n      this.onvplaying = this.onvseeked = null;\n      this.videoBuffer = null;\n    }\n    this.fragPlaying = null;\n    if (this.gapController) {\n      this.gapController.destroy();\n      this.gapController = null;\n    }\n    super.onMediaDetaching();\n  }\n  onMediaPlaying() {\n    this.tick();\n  }\n  onMediaSeeked() {\n    const media = this.media;\n    const currentTime = media ? media.currentTime : null;\n    if (isFiniteNumber(currentTime)) {\n      this.log(`Media seeked to ${currentTime.toFixed(3)}`);\n    }\n    const bufferInfo = this.getMainFwdBufferInfo();\n    if (bufferInfo === null || bufferInfo.len === 0) {\n      this.warn(`Main forward buffer length on \"seeked\" event ${bufferInfo ? bufferInfo.len : \"empty\"})`);\n      return;\n    }\n    this.tick();\n  }\n  onManifestLoading() {\n    this.log(\"Trigger BUFFER_RESET\");\n    this.hls.trigger(Events.BUFFER_RESET, void 0);\n    this.fragmentTracker.removeAllFragments();\n    this.couldBacktrack = false;\n    this.startPosition = this.lastCurrentTime = this.fragLastKbps = 0;\n    this.levels = this.fragPlaying = this.backtrackFragment = this.levelLastLoaded = null;\n    this.altAudio = this.audioOnly = this.startFragRequested = false;\n  }\n  onManifestParsed(event, data) {\n    let aac = false;\n    let heaac = false;\n    data.levels.forEach((level) => {\n      const codec = level.audioCodec;\n      if (codec) {\n        aac = aac || codec.indexOf(\"mp4a.40.2\") !== -1;\n        heaac = heaac || codec.indexOf(\"mp4a.40.5\") !== -1;\n      }\n    });\n    this.audioCodecSwitch = aac && heaac && !changeTypeSupported();\n    if (this.audioCodecSwitch) {\n      this.log(\"Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC\");\n    }\n    this.levels = data.levels;\n    this.startFragRequested = false;\n  }\n  onLevelLoading(event, data) {\n    const {\n      levels\n    } = this;\n    if (!levels || this.state !== State.IDLE) {\n      return;\n    }\n    const level = levels[data.level];\n    if (!level.details || level.details.live && this.levelLastLoaded !== level || this.waitForCdnTuneIn(level.details)) {\n      this.state = State.WAITING_LEVEL;\n    }\n  }\n  onLevelLoaded(event, data) {\n    var _curLevel$details;\n    const {\n      levels\n    } = this;\n    const newLevelId = data.level;\n    const newDetails = data.details;\n    const duration = newDetails.totalduration;\n    if (!levels) {\n      this.warn(`Levels were reset while loading level ${newLevelId}`);\n      return;\n    }\n    this.log(`Level ${newLevelId} loaded [${newDetails.startSN},${newDetails.endSN}]${newDetails.lastPartSn ? `[part-${newDetails.lastPartSn}-${newDetails.lastPartIndex}]` : \"\"}, cc [${newDetails.startCC}, ${newDetails.endCC}] duration:${duration}`);\n    const curLevel = levels[newLevelId];\n    const fragCurrent = this.fragCurrent;\n    if (fragCurrent && (this.state === State.FRAG_LOADING || this.state === State.FRAG_LOADING_WAITING_RETRY)) {\n      if (fragCurrent.level !== data.level && fragCurrent.loader) {\n        this.abortCurrentFrag();\n      }\n    }\n    let sliding = 0;\n    if (newDetails.live || (_curLevel$details = curLevel.details) != null && _curLevel$details.live) {\n      var _this$levelLastLoaded;\n      this.checkLiveUpdate(newDetails);\n      if (newDetails.deltaUpdateFailed) {\n        return;\n      }\n      sliding = this.alignPlaylists(newDetails, curLevel.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details);\n    }\n    curLevel.details = newDetails;\n    this.levelLastLoaded = curLevel;\n    this.hls.trigger(Events.LEVEL_UPDATED, {\n      details: newDetails,\n      level: newLevelId\n    });\n    if (this.state === State.WAITING_LEVEL) {\n      if (this.waitForCdnTuneIn(newDetails)) {\n        return;\n      }\n      this.state = State.IDLE;\n    }\n    if (!this.startFragRequested) {\n      this.setStartPosition(newDetails, sliding);\n    } else if (newDetails.live) {\n      this.synchronizeToLiveEdge(newDetails);\n    }\n    this.tick();\n  }\n  _handleFragmentLoadProgress(data) {\n    var _frag$initSegment;\n    const {\n      frag,\n      part,\n      payload\n    } = data;\n    const {\n      levels\n    } = this;\n    if (!levels) {\n      this.warn(`Levels were reset while fragment load was in progress. Fragment ${frag.sn} of level ${frag.level} will not be buffered`);\n      return;\n    }\n    const currentLevel = levels[frag.level];\n    const details = currentLevel.details;\n    if (!details) {\n      this.warn(`Dropping fragment ${frag.sn} of level ${frag.level} after level details were reset`);\n      this.fragmentTracker.removeFragment(frag);\n      return;\n    }\n    const videoCodec = currentLevel.videoCodec;\n    const accurateTimeOffset = details.PTSKnown || !details.live;\n    const initSegmentData = (_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.data;\n    const audioCodec = this._getAudioCodec(currentLevel);\n    const transmuxer = this.transmuxer = this.transmuxer || new TransmuxerInterface(this.hls, PlaylistLevelType.MAIN, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n    const partIndex = part ? part.index : -1;\n    const partial = partIndex !== -1;\n    const chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n    const initPTS = this.initPTS[frag.cc];\n    transmuxer.push(payload, initSegmentData, audioCodec, videoCodec, frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n  }\n  onAudioTrackSwitching(event, data) {\n    const fromAltAudio = this.altAudio;\n    const altAudio = !!data.url;\n    if (!altAudio) {\n      if (this.mediaBuffer !== this.media) {\n        this.log(\"Switching on main audio, use media.buffered to schedule main fragment loading\");\n        this.mediaBuffer = this.media;\n        const fragCurrent = this.fragCurrent;\n        if (fragCurrent) {\n          this.log(\"Switching to main audio track, cancel main fragment load\");\n          fragCurrent.abortRequests();\n          this.fragmentTracker.removeFragment(fragCurrent);\n        }\n        this.resetTransmuxer();\n        this.resetLoadingState();\n      } else if (this.audioOnly) {\n        this.resetTransmuxer();\n      }\n      const hls = this.hls;\n      if (fromAltAudio) {\n        hls.trigger(Events.BUFFER_FLUSHING, {\n          startOffset: 0,\n          endOffset: Number.POSITIVE_INFINITY,\n          type: null\n        });\n        this.fragmentTracker.removeAllFragments();\n      }\n      hls.trigger(Events.AUDIO_TRACK_SWITCHED, data);\n    }\n  }\n  onAudioTrackSwitched(event, data) {\n    const trackId = data.id;\n    const altAudio = !!this.hls.audioTracks[trackId].url;\n    if (altAudio) {\n      const videoBuffer = this.videoBuffer;\n      if (videoBuffer && this.mediaBuffer !== videoBuffer) {\n        this.log(\"Switching on alternate audio, use video.buffered to schedule main fragment loading\");\n        this.mediaBuffer = videoBuffer;\n      }\n    }\n    this.altAudio = altAudio;\n    this.tick();\n  }\n  onBufferCreated(event, data) {\n    const tracks = data.tracks;\n    let mediaTrack;\n    let name;\n    let alternate = false;\n    for (const type in tracks) {\n      const track = tracks[type];\n      if (track.id === \"main\") {\n        name = type;\n        mediaTrack = track;\n        if (type === \"video\") {\n          const videoTrack = tracks[type];\n          if (videoTrack) {\n            this.videoBuffer = videoTrack.buffer;\n          }\n        }\n      } else {\n        alternate = true;\n      }\n    }\n    if (alternate && mediaTrack) {\n      this.log(`Alternate track found, use ${name}.buffered to schedule main fragment loading`);\n      this.mediaBuffer = mediaTrack.buffer;\n    } else {\n      this.mediaBuffer = this.media;\n    }\n  }\n  onFragBuffered(event, data) {\n    const {\n      frag,\n      part\n    } = data;\n    if (frag && frag.type !== PlaylistLevelType.MAIN) {\n      return;\n    }\n    if (this.fragContextChanged(frag)) {\n      this.warn(`Fragment ${frag.sn}${part ? \" p: \" + part.index : \"\"} of level ${frag.level} finished buffering, but was aborted. state: ${this.state}`);\n      if (this.state === State.PARSED) {\n        this.state = State.IDLE;\n      }\n      return;\n    }\n    const stats = part ? part.stats : frag.stats;\n    this.fragLastKbps = Math.round(8 * stats.total / (stats.buffering.end - stats.loading.first));\n    if (frag.sn !== \"initSegment\") {\n      this.fragPrevious = frag;\n    }\n    this.fragBufferedComplete(frag, part);\n  }\n  onError(event, data) {\n    var _data$context;\n    if (data.fatal) {\n      this.state = State.ERROR;\n      return;\n    }\n    switch (data.details) {\n      case ErrorDetails.FRAG_GAP:\n      case ErrorDetails.FRAG_PARSING_ERROR:\n      case ErrorDetails.FRAG_DECRYPT_ERROR:\n      case ErrorDetails.FRAG_LOAD_ERROR:\n      case ErrorDetails.FRAG_LOAD_TIMEOUT:\n      case ErrorDetails.KEY_LOAD_ERROR:\n      case ErrorDetails.KEY_LOAD_TIMEOUT:\n        this.onFragmentOrKeyLoadError(PlaylistLevelType.MAIN, data);\n        break;\n      case ErrorDetails.LEVEL_LOAD_ERROR:\n      case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n      case ErrorDetails.LEVEL_PARSING_ERROR:\n        if (!data.levelRetry && this.state === State.WAITING_LEVEL && ((_data$context = data.context) == null ? void 0 : _data$context.type) === PlaylistContextType.LEVEL) {\n          this.state = State.IDLE;\n        }\n        break;\n      case ErrorDetails.BUFFER_APPEND_ERROR:\n      case ErrorDetails.BUFFER_FULL_ERROR:\n        if (!data.parent || data.parent !== \"main\") {\n          return;\n        }\n        if (data.details === ErrorDetails.BUFFER_APPEND_ERROR) {\n          this.resetLoadingState();\n          return;\n        }\n        if (this.reduceLengthAndFlushBuffer(data)) {\n          this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n        }\n        break;\n      case ErrorDetails.INTERNAL_EXCEPTION:\n        this.recoverWorkerError(data);\n        break;\n    }\n  }\n  // Checks the health of the buffer and attempts to resolve playback stalls.\n  checkBuffer() {\n    const {\n      media,\n      gapController\n    } = this;\n    if (!media || !gapController || !media.readyState) {\n      return;\n    }\n    if (this.loadedmetadata || !BufferHelper.getBuffered(media).length) {\n      const activeFrag = this.state !== State.IDLE ? this.fragCurrent : null;\n      gapController.poll(this.lastCurrentTime, activeFrag);\n    }\n    this.lastCurrentTime = media.currentTime;\n  }\n  onFragLoadEmergencyAborted() {\n    this.state = State.IDLE;\n    if (!this.loadedmetadata) {\n      this.startFragRequested = false;\n      this.nextLoadPosition = this.startPosition;\n    }\n    this.tickImmediate();\n  }\n  onBufferFlushed(event, {\n    type\n  }) {\n    if (type !== ElementaryStreamTypes.AUDIO || this.audioOnly && !this.altAudio) {\n      const mediaBuffer = (type === ElementaryStreamTypes.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media;\n      this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.MAIN);\n      this.tick();\n    }\n  }\n  onLevelsUpdated(event, data) {\n    if (this.level > -1 && this.fragCurrent) {\n      this.level = this.fragCurrent.level;\n    }\n    this.levels = data.levels;\n  }\n  swapAudioCodec() {\n    this.audioCodecSwap = !this.audioCodecSwap;\n  }\n  /**\n   * Seeks to the set startPosition if not equal to the mediaElement's current time.\n   */\n  seekToStartPos() {\n    const {\n      media\n    } = this;\n    if (!media) {\n      return;\n    }\n    const currentTime = media.currentTime;\n    let startPosition = this.startPosition;\n    if (startPosition >= 0 && currentTime < startPosition) {\n      if (media.seeking) {\n        this.log(`could not seek to ${startPosition}, already seeking at ${currentTime}`);\n        return;\n      }\n      const buffered = BufferHelper.getBuffered(media);\n      const bufferStart = buffered.length ? buffered.start(0) : 0;\n      const delta = bufferStart - startPosition;\n      if (delta > 0 && (delta < this.config.maxBufferHole || delta < this.config.maxFragLookUpTolerance)) {\n        this.log(`adjusting start position by ${delta} to match buffer start`);\n        startPosition += delta;\n        this.startPosition = startPosition;\n      }\n      this.log(`seek to target start position ${startPosition} from current time ${currentTime}`);\n      media.currentTime = startPosition;\n    }\n  }\n  _getAudioCodec(currentLevel) {\n    let audioCodec = this.config.defaultAudioCodec || currentLevel.audioCodec;\n    if (this.audioCodecSwap && audioCodec) {\n      this.log(\"Swapping audio codec\");\n      if (audioCodec.indexOf(\"mp4a.40.5\") !== -1) {\n        audioCodec = \"mp4a.40.2\";\n      } else {\n        audioCodec = \"mp4a.40.5\";\n      }\n    }\n    return audioCodec;\n  }\n  _loadBitrateTestFrag(frag, level) {\n    frag.bitrateTest = true;\n    this._doFragLoad(frag, level).then((data) => {\n      const {\n        hls\n      } = this;\n      if (!data || this.fragContextChanged(frag)) {\n        return;\n      }\n      level.fragmentError = 0;\n      this.state = State.IDLE;\n      this.startFragRequested = false;\n      this.bitrateTest = false;\n      const stats = frag.stats;\n      stats.parsing.start = stats.parsing.end = stats.buffering.start = stats.buffering.end = self.performance.now();\n      hls.trigger(Events.FRAG_LOADED, data);\n      frag.bitrateTest = false;\n    });\n  }\n  _handleTransmuxComplete(transmuxResult) {\n    var _id3$samples;\n    const id = \"main\";\n    const {\n      hls\n    } = this;\n    const {\n      remuxResult,\n      chunkMeta\n    } = transmuxResult;\n    const context = this.getCurrentContext(chunkMeta);\n    if (!context) {\n      this.resetWhenMissingContext(chunkMeta);\n      return;\n    }\n    const {\n      frag,\n      part,\n      level\n    } = context;\n    const {\n      video,\n      text,\n      id3,\n      initSegment\n    } = remuxResult;\n    const {\n      details\n    } = level;\n    const audio = this.altAudio ? void 0 : remuxResult.audio;\n    if (this.fragContextChanged(frag)) {\n      this.fragmentTracker.removeFragment(frag);\n      return;\n    }\n    this.state = State.PARSING;\n    if (initSegment) {\n      if (initSegment != null && initSegment.tracks) {\n        const mapFragment = frag.initSegment || frag;\n        this._bufferInitSegment(level, initSegment.tracks, mapFragment, chunkMeta);\n        hls.trigger(Events.FRAG_PARSING_INIT_SEGMENT, {\n          frag: mapFragment,\n          id,\n          tracks: initSegment.tracks\n        });\n      }\n      const initPTS = initSegment.initPTS;\n      const timescale = initSegment.timescale;\n      if (isFiniteNumber(initPTS)) {\n        this.initPTS[frag.cc] = {\n          baseTime: initPTS,\n          timescale\n        };\n        hls.trigger(Events.INIT_PTS_FOUND, {\n          frag,\n          id,\n          initPTS,\n          timescale\n        });\n      }\n    }\n    if (video && details && frag.sn !== \"initSegment\") {\n      const prevFrag = details.fragments[frag.sn - 1 - details.startSN];\n      const isFirstFragment = frag.sn === details.startSN;\n      const isFirstInDiscontinuity = !prevFrag || frag.cc > prevFrag.cc;\n      if (remuxResult.independent !== false) {\n        const {\n          startPTS,\n          endPTS,\n          startDTS,\n          endDTS\n        } = video;\n        if (part) {\n          part.elementaryStreams[video.type] = {\n            startPTS,\n            endPTS,\n            startDTS,\n            endDTS\n          };\n        } else {\n          if (video.firstKeyFrame && video.independent && chunkMeta.id === 1 && !isFirstInDiscontinuity) {\n            this.couldBacktrack = true;\n          }\n          if (video.dropped && video.independent) {\n            const bufferInfo = this.getMainFwdBufferInfo();\n            const targetBufferTime = (bufferInfo ? bufferInfo.end : this.getLoadPosition()) + this.config.maxBufferHole;\n            const startTime = video.firstKeyFramePTS ? video.firstKeyFramePTS : startPTS;\n            if (!isFirstFragment && targetBufferTime < startTime - this.config.maxBufferHole && !isFirstInDiscontinuity) {\n              this.backtrack(frag);\n              return;\n            } else if (isFirstInDiscontinuity) {\n              frag.gap = true;\n            }\n            frag.setElementaryStreamInfo(video.type, frag.start, endPTS, frag.start, endDTS, true);\n          } else if (isFirstFragment && startPTS > MAX_START_GAP_JUMP) {\n            frag.gap = true;\n          }\n        }\n        frag.setElementaryStreamInfo(video.type, startPTS, endPTS, startDTS, endDTS);\n        if (this.backtrackFragment) {\n          this.backtrackFragment = frag;\n        }\n        this.bufferFragmentData(video, frag, part, chunkMeta, isFirstFragment || isFirstInDiscontinuity);\n      } else if (isFirstFragment || isFirstInDiscontinuity) {\n        frag.gap = true;\n      } else {\n        this.backtrack(frag);\n        return;\n      }\n    }\n    if (audio) {\n      const {\n        startPTS,\n        endPTS,\n        startDTS,\n        endDTS\n      } = audio;\n      if (part) {\n        part.elementaryStreams[ElementaryStreamTypes.AUDIO] = {\n          startPTS,\n          endPTS,\n          startDTS,\n          endDTS\n        };\n      }\n      frag.setElementaryStreamInfo(ElementaryStreamTypes.AUDIO, startPTS, endPTS, startDTS, endDTS);\n      this.bufferFragmentData(audio, frag, part, chunkMeta);\n    }\n    if (details && id3 != null && (_id3$samples = id3.samples) != null && _id3$samples.length) {\n      const emittedID3 = {\n        id,\n        frag,\n        details,\n        samples: id3.samples\n      };\n      hls.trigger(Events.FRAG_PARSING_METADATA, emittedID3);\n    }\n    if (details && text) {\n      const emittedText = {\n        id,\n        frag,\n        details,\n        samples: text.samples\n      };\n      hls.trigger(Events.FRAG_PARSING_USERDATA, emittedText);\n    }\n  }\n  _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) {\n    if (this.state !== State.PARSING) {\n      return;\n    }\n    this.audioOnly = !!tracks.audio && !tracks.video;\n    if (this.altAudio && !this.audioOnly) {\n      delete tracks.audio;\n    }\n    const {\n      audio,\n      video,\n      audiovideo\n    } = tracks;\n    if (audio) {\n      let audioCodec = currentLevel.audioCodec;\n      const ua2 = navigator.userAgent.toLowerCase();\n      if (this.audioCodecSwitch) {\n        if (audioCodec) {\n          if (audioCodec.indexOf(\"mp4a.40.5\") !== -1) {\n            audioCodec = \"mp4a.40.2\";\n          } else {\n            audioCodec = \"mp4a.40.5\";\n          }\n        }\n        const audioMetadata = audio.metadata;\n        if (audioMetadata && \"channelCount\" in audioMetadata && (audioMetadata.channelCount || 1) !== 1 && ua2.indexOf(\"firefox\") === -1) {\n          audioCodec = \"mp4a.40.5\";\n        }\n      }\n      if (audioCodec && audioCodec.indexOf(\"mp4a.40.5\") !== -1 && ua2.indexOf(\"android\") !== -1 && audio.container !== \"audio/mpeg\") {\n        audioCodec = \"mp4a.40.2\";\n        this.log(`Android: force audio codec to ${audioCodec}`);\n      }\n      if (currentLevel.audioCodec && currentLevel.audioCodec !== audioCodec) {\n        this.log(`Swapping manifest audio codec \"${currentLevel.audioCodec}\" for \"${audioCodec}\"`);\n      }\n      audio.levelCodec = audioCodec;\n      audio.id = \"main\";\n      this.log(`Init audio buffer, container:${audio.container}, codecs[selected/level/parsed]=[${audioCodec || \"\"}/${currentLevel.audioCodec || \"\"}/${audio.codec}]`);\n    }\n    if (video) {\n      video.levelCodec = currentLevel.videoCodec;\n      video.id = \"main\";\n      this.log(`Init video buffer, container:${video.container}, codecs[level/parsed]=[${currentLevel.videoCodec || \"\"}/${video.codec}]`);\n    }\n    if (audiovideo) {\n      this.log(`Init audiovideo buffer, container:${audiovideo.container}, codecs[level/parsed]=[${currentLevel.codecs}/${audiovideo.codec}]`);\n    }\n    this.hls.trigger(Events.BUFFER_CODECS, tracks);\n    Object.keys(tracks).forEach((trackName) => {\n      const track = tracks[trackName];\n      const initSegment = track.initSegment;\n      if (initSegment != null && initSegment.byteLength) {\n        this.hls.trigger(Events.BUFFER_APPENDING, {\n          type: trackName,\n          data: initSegment,\n          frag,\n          part: null,\n          chunkMeta,\n          parent: frag.type\n        });\n      }\n    });\n    this.tickImmediate();\n  }\n  getMainFwdBufferInfo() {\n    return this.getFwdBufferInfo(this.mediaBuffer ? this.mediaBuffer : this.media, PlaylistLevelType.MAIN);\n  }\n  backtrack(frag) {\n    this.couldBacktrack = true;\n    this.backtrackFragment = frag;\n    this.resetTransmuxer();\n    this.flushBufferGap(frag);\n    this.fragmentTracker.removeFragment(frag);\n    this.fragPrevious = null;\n    this.nextLoadPosition = frag.start;\n    this.state = State.IDLE;\n  }\n  checkFragmentChanged() {\n    const video = this.media;\n    let fragPlayingCurrent = null;\n    if (video && video.readyState > 1 && video.seeking === false) {\n      const currentTime = video.currentTime;\n      if (BufferHelper.isBuffered(video, currentTime)) {\n        fragPlayingCurrent = this.getAppendedFrag(currentTime);\n      } else if (BufferHelper.isBuffered(video, currentTime + 0.1)) {\n        fragPlayingCurrent = this.getAppendedFrag(currentTime + 0.1);\n      }\n      if (fragPlayingCurrent) {\n        this.backtrackFragment = null;\n        const fragPlaying = this.fragPlaying;\n        const fragCurrentLevel = fragPlayingCurrent.level;\n        if (!fragPlaying || fragPlayingCurrent.sn !== fragPlaying.sn || fragPlaying.level !== fragCurrentLevel) {\n          this.fragPlaying = fragPlayingCurrent;\n          this.hls.trigger(Events.FRAG_CHANGED, {\n            frag: fragPlayingCurrent\n          });\n          if (!fragPlaying || fragPlaying.level !== fragCurrentLevel) {\n            this.hls.trigger(Events.LEVEL_SWITCHED, {\n              level: fragCurrentLevel\n            });\n          }\n        }\n      }\n    }\n  }\n  get nextLevel() {\n    const frag = this.nextBufferedFrag;\n    if (frag) {\n      return frag.level;\n    }\n    return -1;\n  }\n  get currentFrag() {\n    const media = this.media;\n    if (media) {\n      return this.fragPlaying || this.getAppendedFrag(media.currentTime);\n    }\n    return null;\n  }\n  get currentProgramDateTime() {\n    const media = this.media;\n    if (media) {\n      const currentTime = media.currentTime;\n      const frag = this.currentFrag;\n      if (frag && isFiniteNumber(currentTime) && isFiniteNumber(frag.programDateTime)) {\n        const epocMs = frag.programDateTime + (currentTime - frag.start) * 1e3;\n        return new Date(epocMs);\n      }\n    }\n    return null;\n  }\n  get currentLevel() {\n    const frag = this.currentFrag;\n    if (frag) {\n      return frag.level;\n    }\n    return -1;\n  }\n  get nextBufferedFrag() {\n    const frag = this.currentFrag;\n    if (frag) {\n      return this.followingBufferedFrag(frag);\n    }\n    return null;\n  }\n  get forceStartLoad() {\n    return this._forceStartLoad;\n  }\n};\nvar Hls = class _Hls {\n  /**\n   * Get the video-dev/hls.js package version.\n   */\n  static get version() {\n    return \"1.5.20\";\n  }\n  /**\n   * Check if the required MediaSource Extensions are available.\n   */\n  static isMSESupported() {\n    return isMSESupported();\n  }\n  /**\n   * Check if MediaSource Extensions are available and isTypeSupported checks pass for any baseline codecs.\n   */\n  static isSupported() {\n    return isSupported();\n  }\n  /**\n   * Get the MediaSource global used for MSE playback (ManagedMediaSource, MediaSource, or WebKitMediaSource).\n   */\n  static getMediaSource() {\n    return getMediaSource();\n  }\n  static get Events() {\n    return Events;\n  }\n  static get ErrorTypes() {\n    return ErrorTypes;\n  }\n  static get ErrorDetails() {\n    return ErrorDetails;\n  }\n  /**\n   * Get the default configuration applied to new instances.\n   */\n  static get DefaultConfig() {\n    if (!_Hls.defaultConfig) {\n      return hlsDefaultConfig;\n    }\n    return _Hls.defaultConfig;\n  }\n  /**\n   * Replace the default configuration applied to new instances.\n   */\n  static set DefaultConfig(defaultConfig) {\n    _Hls.defaultConfig = defaultConfig;\n  }\n  /**\n   * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.\n   * @param userConfig - Configuration options applied over `Hls.DefaultConfig`\n   */\n  constructor(userConfig = {}) {\n    this.config = void 0;\n    this.userConfig = void 0;\n    this.coreComponents = void 0;\n    this.networkControllers = void 0;\n    this.started = false;\n    this._emitter = new EventEmitter();\n    this._autoLevelCapping = -1;\n    this._maxHdcpLevel = null;\n    this.abrController = void 0;\n    this.bufferController = void 0;\n    this.capLevelController = void 0;\n    this.latencyController = void 0;\n    this.levelController = void 0;\n    this.streamController = void 0;\n    this.audioTrackController = void 0;\n    this.subtitleTrackController = void 0;\n    this.emeController = void 0;\n    this.cmcdController = void 0;\n    this._media = null;\n    this.url = null;\n    this.triggeringException = void 0;\n    enableLogs(userConfig.debug || false, \"Hls instance\");\n    const config = this.config = mergeConfig(_Hls.DefaultConfig, userConfig);\n    this.userConfig = userConfig;\n    if (config.progressive) {\n      enableStreamingMode(config);\n    }\n    const {\n      abrController: ConfigAbrController,\n      bufferController: ConfigBufferController,\n      capLevelController: ConfigCapLevelController,\n      errorController: ConfigErrorController,\n      fpsController: ConfigFpsController\n    } = config;\n    const errorController = new ConfigErrorController(this);\n    const abrController = this.abrController = new ConfigAbrController(this);\n    const bufferController = this.bufferController = new ConfigBufferController(this);\n    const capLevelController = this.capLevelController = new ConfigCapLevelController(this);\n    const fpsController = new ConfigFpsController(this);\n    const playListLoader = new PlaylistLoader(this);\n    const id3TrackController = new ID3TrackController(this);\n    const ConfigContentSteeringController = config.contentSteeringController;\n    const contentSteering = ConfigContentSteeringController ? new ConfigContentSteeringController(this) : null;\n    const levelController = this.levelController = new LevelController(this, contentSteering);\n    const fragmentTracker = new FragmentTracker(this);\n    const keyLoader = new KeyLoader(this.config);\n    const streamController = this.streamController = new StreamController(this, fragmentTracker, keyLoader);\n    capLevelController.setStreamController(streamController);\n    fpsController.setStreamController(streamController);\n    const networkControllers = [playListLoader, levelController, streamController];\n    if (contentSteering) {\n      networkControllers.splice(1, 0, contentSteering);\n    }\n    this.networkControllers = networkControllers;\n    const coreComponents = [abrController, bufferController, capLevelController, fpsController, id3TrackController, fragmentTracker];\n    this.audioTrackController = this.createController(config.audioTrackController, networkControllers);\n    const AudioStreamControllerClass = config.audioStreamController;\n    if (AudioStreamControllerClass) {\n      networkControllers.push(new AudioStreamControllerClass(this, fragmentTracker, keyLoader));\n    }\n    this.subtitleTrackController = this.createController(config.subtitleTrackController, networkControllers);\n    const SubtitleStreamControllerClass = config.subtitleStreamController;\n    if (SubtitleStreamControllerClass) {\n      networkControllers.push(new SubtitleStreamControllerClass(this, fragmentTracker, keyLoader));\n    }\n    this.createController(config.timelineController, coreComponents);\n    keyLoader.emeController = this.emeController = this.createController(config.emeController, coreComponents);\n    this.cmcdController = this.createController(config.cmcdController, coreComponents);\n    this.latencyController = this.createController(LatencyController, coreComponents);\n    this.coreComponents = coreComponents;\n    networkControllers.push(errorController);\n    const onErrorOut = errorController.onErrorOut;\n    if (typeof onErrorOut === \"function\") {\n      this.on(Events.ERROR, onErrorOut, errorController);\n    }\n  }\n  createController(ControllerClass, components) {\n    if (ControllerClass) {\n      const controllerInstance = new ControllerClass(this);\n      if (components) {\n        components.push(controllerInstance);\n      }\n      return controllerInstance;\n    }\n    return null;\n  }\n  // Delegate the EventEmitter through the public API of Hls.js\n  on(event, listener, context = this) {\n    this._emitter.on(event, listener, context);\n  }\n  once(event, listener, context = this) {\n    this._emitter.once(event, listener, context);\n  }\n  removeAllListeners(event) {\n    this._emitter.removeAllListeners(event);\n  }\n  off(event, listener, context = this, once) {\n    this._emitter.off(event, listener, context, once);\n  }\n  listeners(event) {\n    return this._emitter.listeners(event);\n  }\n  emit(event, name, eventObject) {\n    return this._emitter.emit(event, name, eventObject);\n  }\n  trigger(event, eventObject) {\n    if (this.config.debug) {\n      return this.emit(event, event, eventObject);\n    } else {\n      try {\n        return this.emit(event, event, eventObject);\n      } catch (error) {\n        logger.error(\"An internal error happened while handling event \" + event + '. Error message: \"' + error.message + '\". Here is a stacktrace:', error);\n        if (!this.triggeringException) {\n          this.triggeringException = true;\n          const fatal = event === Events.ERROR;\n          this.trigger(Events.ERROR, {\n            type: ErrorTypes.OTHER_ERROR,\n            details: ErrorDetails.INTERNAL_EXCEPTION,\n            fatal,\n            event,\n            error\n          });\n          this.triggeringException = false;\n        }\n      }\n    }\n    return false;\n  }\n  listenerCount(event) {\n    return this._emitter.listenerCount(event);\n  }\n  /**\n   * Dispose of the instance\n   */\n  destroy() {\n    logger.log(\"destroy\");\n    this.trigger(Events.DESTROYING, void 0);\n    this.detachMedia();\n    this.removeAllListeners();\n    this._autoLevelCapping = -1;\n    this.url = null;\n    this.networkControllers.forEach((component) => component.destroy());\n    this.networkControllers.length = 0;\n    this.coreComponents.forEach((component) => component.destroy());\n    this.coreComponents.length = 0;\n    const config = this.config;\n    config.xhrSetup = config.fetchSetup = void 0;\n    this.userConfig = null;\n  }\n  /**\n   * Attaches Hls.js to a media element\n   */\n  attachMedia(media) {\n    logger.log(\"attachMedia\");\n    this._media = media;\n    this.trigger(Events.MEDIA_ATTACHING, {\n      media\n    });\n  }\n  /**\n   * Detach Hls.js from the media\n   */\n  detachMedia() {\n    logger.log(\"detachMedia\");\n    this.trigger(Events.MEDIA_DETACHING, void 0);\n    this._media = null;\n  }\n  /**\n   * Set the source URL. Can be relative or absolute.\n   */\n  loadSource(url) {\n    this.stopLoad();\n    const media = this.media;\n    const loadedSource = this.url;\n    const loadingSource = this.url = urlToolkitExports.buildAbsoluteURL(self.location.href, url, {\n      alwaysNormalize: true\n    });\n    this._autoLevelCapping = -1;\n    this._maxHdcpLevel = null;\n    logger.log(`loadSource:${loadingSource}`);\n    if (media && loadedSource && (loadedSource !== loadingSource || this.bufferController.hasSourceTypes())) {\n      this.detachMedia();\n      this.attachMedia(media);\n    }\n    this.trigger(Events.MANIFEST_LOADING, {\n      url\n    });\n  }\n  /**\n   * Start loading data from the stream source.\n   * Depending on default config, client starts loading automatically when a source is set.\n   *\n   * @param startPosition - Set the start position to stream from.\n   * Defaults to -1 (None: starts from earliest point)\n   */\n  startLoad(startPosition = -1) {\n    logger.log(`startLoad(${startPosition})`);\n    this.started = true;\n    this.resumeBuffering();\n    for (let i2 = 0; i2 < this.networkControllers.length; i2++) {\n      this.networkControllers[i2].startLoad(startPosition);\n      if (!this.started || !this.networkControllers) {\n        break;\n      }\n    }\n  }\n  /**\n   * Stop loading of any stream data.\n   */\n  stopLoad() {\n    logger.log(\"stopLoad\");\n    this.started = false;\n    for (let i2 = 0; i2 < this.networkControllers.length; i2++) {\n      this.networkControllers[i2].stopLoad();\n      if (this.started || !this.networkControllers) {\n        break;\n      }\n    }\n  }\n  /**\n   * Resumes stream controller segment loading after `pauseBuffering` has been called.\n   */\n  resumeBuffering() {\n    logger.log(`resume buffering`);\n    this.networkControllers.forEach((controller) => {\n      if (controller.resumeBuffering) {\n        controller.resumeBuffering();\n      }\n    });\n  }\n  /**\n   * Prevents stream controller from loading new segments until `resumeBuffering` is called.\n   * This allows for media buffering to be paused without interupting playlist loading.\n   */\n  pauseBuffering() {\n    logger.log(`pause buffering`);\n    this.networkControllers.forEach((controller) => {\n      if (controller.pauseBuffering) {\n        controller.pauseBuffering();\n      }\n    });\n  }\n  /**\n   * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1)\n   */\n  swapAudioCodec() {\n    logger.log(\"swapAudioCodec\");\n    this.streamController.swapAudioCodec();\n  }\n  /**\n   * When the media-element fails, this allows to detach and then re-attach it\n   * as one call (convenience method).\n   *\n   * Automatic recovery of media-errors by this process is configurable.\n   */\n  recoverMediaError() {\n    logger.log(\"recoverMediaError\");\n    const media = this._media;\n    this.detachMedia();\n    if (media) {\n      this.attachMedia(media);\n    }\n  }\n  removeLevel(levelIndex) {\n    this.levelController.removeLevel(levelIndex);\n  }\n  /**\n   * @returns an array of levels (variants) sorted by HDCP-LEVEL, RESOLUTION (height), FRAME-RATE, CODECS, VIDEO-RANGE, and BANDWIDTH\n   */\n  get levels() {\n    const levels = this.levelController.levels;\n    return levels ? levels : [];\n  }\n  /**\n   * Index of quality level (variant) currently played\n   */\n  get currentLevel() {\n    return this.streamController.currentLevel;\n  }\n  /**\n   * Set quality level index immediately. This will flush the current buffer to replace the quality asap. That means playback will interrupt at least shortly to re-buffer and re-sync eventually. Set to -1 for automatic level selection.\n   */\n  set currentLevel(newLevel) {\n    logger.log(`set currentLevel:${newLevel}`);\n    this.levelController.manualLevel = newLevel;\n    this.streamController.immediateLevelSwitch();\n  }\n  /**\n   * Index of next quality level loaded as scheduled by stream controller.\n   */\n  get nextLevel() {\n    return this.streamController.nextLevel;\n  }\n  /**\n   * Set quality level index for next loaded data.\n   * This will switch the video quality asap, without interrupting playback.\n   * May abort current loading of data, and flush parts of buffer (outside currently played fragment region).\n   * @param newLevel - Pass -1 for automatic level selection\n   */\n  set nextLevel(newLevel) {\n    logger.log(`set nextLevel:${newLevel}`);\n    this.levelController.manualLevel = newLevel;\n    this.streamController.nextLevelSwitch();\n  }\n  /**\n   * Return the quality level of the currently or last (of none is loaded currently) segment\n   */\n  get loadLevel() {\n    return this.levelController.level;\n  }\n  /**\n   * Set quality level index for next loaded data in a conservative way.\n   * This will switch the quality without flushing, but interrupt current loading.\n   * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer.\n   * @param newLevel - Pass -1 for automatic level selection\n   */\n  set loadLevel(newLevel) {\n    logger.log(`set loadLevel:${newLevel}`);\n    this.levelController.manualLevel = newLevel;\n  }\n  /**\n   * get next quality level loaded\n   */\n  get nextLoadLevel() {\n    return this.levelController.nextLoadLevel;\n  }\n  /**\n   * Set quality level of next loaded segment in a fully \"non-destructive\" way.\n   * Same as `loadLevel` but will wait for next switch (until current loading is done).\n   */\n  set nextLoadLevel(level) {\n    this.levelController.nextLoadLevel = level;\n  }\n  /**\n   * Return \"first level\": like a default level, if not set,\n   * falls back to index of first level referenced in manifest\n   */\n  get firstLevel() {\n    return Math.max(this.levelController.firstLevel, this.minAutoLevel);\n  }\n  /**\n   * Sets \"first-level\", see getter.\n   */\n  set firstLevel(newLevel) {\n    logger.log(`set firstLevel:${newLevel}`);\n    this.levelController.firstLevel = newLevel;\n  }\n  /**\n   * Return the desired start level for the first fragment that will be loaded.\n   * The default value of -1 indicates automatic start level selection.\n   * Setting hls.nextAutoLevel without setting a startLevel will result in\n   * the nextAutoLevel value being used for one fragment load.\n   */\n  get startLevel() {\n    const startLevel = this.levelController.startLevel;\n    if (startLevel === -1 && this.abrController.forcedAutoLevel > -1) {\n      return this.abrController.forcedAutoLevel;\n    }\n    return startLevel;\n  }\n  /**\n   * set  start level (level of first fragment that will be played back)\n   * if not overrided by user, first level appearing in manifest will be used as start level\n   * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n   * (determined from download of first segment)\n   */\n  set startLevel(newLevel) {\n    logger.log(`set startLevel:${newLevel}`);\n    if (newLevel !== -1) {\n      newLevel = Math.max(newLevel, this.minAutoLevel);\n    }\n    this.levelController.startLevel = newLevel;\n  }\n  /**\n   * Whether level capping is enabled.\n   * Default value is set via `config.capLevelToPlayerSize`.\n   */\n  get capLevelToPlayerSize() {\n    return this.config.capLevelToPlayerSize;\n  }\n  /**\n   * Enables or disables level capping. If disabled after previously enabled, `nextLevelSwitch` will be immediately called.\n   */\n  set capLevelToPlayerSize(shouldStartCapping) {\n    const newCapLevelToPlayerSize = !!shouldStartCapping;\n    if (newCapLevelToPlayerSize !== this.config.capLevelToPlayerSize) {\n      if (newCapLevelToPlayerSize) {\n        this.capLevelController.startCapping();\n      } else {\n        this.capLevelController.stopCapping();\n        this.autoLevelCapping = -1;\n        this.streamController.nextLevelSwitch();\n      }\n      this.config.capLevelToPlayerSize = newCapLevelToPlayerSize;\n    }\n  }\n  /**\n   * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n   */\n  get autoLevelCapping() {\n    return this._autoLevelCapping;\n  }\n  /**\n   * Returns the current bandwidth estimate in bits per second, when available. Otherwise, `NaN` is returned.\n   */\n  get bandwidthEstimate() {\n    const {\n      bwEstimator\n    } = this.abrController;\n    if (!bwEstimator) {\n      return NaN;\n    }\n    return bwEstimator.getEstimate();\n  }\n  set bandwidthEstimate(abrEwmaDefaultEstimate) {\n    this.abrController.resetEstimator(abrEwmaDefaultEstimate);\n  }\n  /**\n   * get time to first byte estimate\n   * @type {number}\n   */\n  get ttfbEstimate() {\n    const {\n      bwEstimator\n    } = this.abrController;\n    if (!bwEstimator) {\n      return NaN;\n    }\n    return bwEstimator.getEstimateTTFB();\n  }\n  /**\n   * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n   */\n  set autoLevelCapping(newLevel) {\n    if (this._autoLevelCapping !== newLevel) {\n      logger.log(`set autoLevelCapping:${newLevel}`);\n      this._autoLevelCapping = newLevel;\n      this.levelController.checkMaxAutoUpdated();\n    }\n  }\n  get maxHdcpLevel() {\n    return this._maxHdcpLevel;\n  }\n  set maxHdcpLevel(value) {\n    if (isHdcpLevel(value) && this._maxHdcpLevel !== value) {\n      this._maxHdcpLevel = value;\n      this.levelController.checkMaxAutoUpdated();\n    }\n  }\n  /**\n   * True when automatic level selection enabled\n   */\n  get autoLevelEnabled() {\n    return this.levelController.manualLevel === -1;\n  }\n  /**\n   * Level set manually (if any)\n   */\n  get manualLevel() {\n    return this.levelController.manualLevel;\n  }\n  /**\n   * min level selectable in auto mode according to config.minAutoBitrate\n   */\n  get minAutoLevel() {\n    const {\n      levels,\n      config: {\n        minAutoBitrate\n      }\n    } = this;\n    if (!levels) return 0;\n    const len = levels.length;\n    for (let i2 = 0; i2 < len; i2++) {\n      if (levels[i2].maxBitrate >= minAutoBitrate) {\n        return i2;\n      }\n    }\n    return 0;\n  }\n  /**\n   * max level selectable in auto mode according to autoLevelCapping\n   */\n  get maxAutoLevel() {\n    const {\n      levels,\n      autoLevelCapping,\n      maxHdcpLevel\n    } = this;\n    let maxAutoLevel;\n    if (autoLevelCapping === -1 && levels != null && levels.length) {\n      maxAutoLevel = levels.length - 1;\n    } else {\n      maxAutoLevel = autoLevelCapping;\n    }\n    if (maxHdcpLevel) {\n      for (let i2 = maxAutoLevel; i2--; ) {\n        const hdcpLevel = levels[i2].attrs[\"HDCP-LEVEL\"];\n        if (hdcpLevel && hdcpLevel <= maxHdcpLevel) {\n          return i2;\n        }\n      }\n    }\n    return maxAutoLevel;\n  }\n  get firstAutoLevel() {\n    return this.abrController.firstAutoLevel;\n  }\n  /**\n   * next automatically selected quality level\n   */\n  get nextAutoLevel() {\n    return this.abrController.nextAutoLevel;\n  }\n  /**\n   * this setter is used to force next auto level.\n   * this is useful to force a switch down in auto mode:\n   * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example)\n   * forced value is valid for one fragment. upon successful frag loading at forced level,\n   * this value will be resetted to -1 by ABR controller.\n   */\n  set nextAutoLevel(nextLevel) {\n    this.abrController.nextAutoLevel = nextLevel;\n  }\n  /**\n   * get the datetime value relative to media.currentTime for the active level Program Date Time if present\n   */\n  get playingDate() {\n    return this.streamController.currentProgramDateTime;\n  }\n  get mainForwardBufferInfo() {\n    return this.streamController.getMainFwdBufferInfo();\n  }\n  /**\n   * Find and select the best matching audio track, making a level switch when a Group change is necessary.\n   * Updates `hls.config.audioPreference`. Returns the selected track, or null when no matching track is found.\n   */\n  setAudioOption(audioOption) {\n    var _this$audioTrackContr;\n    return (_this$audioTrackContr = this.audioTrackController) == null ? void 0 : _this$audioTrackContr.setAudioOption(audioOption);\n  }\n  /**\n   * Find and select the best matching subtitle track, making a level switch when a Group change is necessary.\n   * Updates `hls.config.subtitlePreference`. Returns the selected track, or null when no matching track is found.\n   */\n  setSubtitleOption(subtitleOption) {\n    var _this$subtitleTrackCo;\n    (_this$subtitleTrackCo = this.subtitleTrackController) == null ? void 0 : _this$subtitleTrackCo.setSubtitleOption(subtitleOption);\n    return null;\n  }\n  /**\n   * Get the complete list of audio tracks across all media groups\n   */\n  get allAudioTracks() {\n    const audioTrackController = this.audioTrackController;\n    return audioTrackController ? audioTrackController.allAudioTracks : [];\n  }\n  /**\n   * Get the list of selectable audio tracks\n   */\n  get audioTracks() {\n    const audioTrackController = this.audioTrackController;\n    return audioTrackController ? audioTrackController.audioTracks : [];\n  }\n  /**\n   * index of the selected audio track (index in audio track lists)\n   */\n  get audioTrack() {\n    const audioTrackController = this.audioTrackController;\n    return audioTrackController ? audioTrackController.audioTrack : -1;\n  }\n  /**\n   * selects an audio track, based on its index in audio track lists\n   */\n  set audioTrack(audioTrackId) {\n    const audioTrackController = this.audioTrackController;\n    if (audioTrackController) {\n      audioTrackController.audioTrack = audioTrackId;\n    }\n  }\n  /**\n   * get the complete list of subtitle tracks across all media groups\n   */\n  get allSubtitleTracks() {\n    const subtitleTrackController = this.subtitleTrackController;\n    return subtitleTrackController ? subtitleTrackController.allSubtitleTracks : [];\n  }\n  /**\n   * get alternate subtitle tracks list from playlist\n   */\n  get subtitleTracks() {\n    const subtitleTrackController = this.subtitleTrackController;\n    return subtitleTrackController ? subtitleTrackController.subtitleTracks : [];\n  }\n  /**\n   * index of the selected subtitle track (index in subtitle track lists)\n   */\n  get subtitleTrack() {\n    const subtitleTrackController = this.subtitleTrackController;\n    return subtitleTrackController ? subtitleTrackController.subtitleTrack : -1;\n  }\n  get media() {\n    return this._media;\n  }\n  /**\n   * select an subtitle track, based on its index in subtitle track lists\n   */\n  set subtitleTrack(subtitleTrackId) {\n    const subtitleTrackController = this.subtitleTrackController;\n    if (subtitleTrackController) {\n      subtitleTrackController.subtitleTrack = subtitleTrackId;\n    }\n  }\n  /**\n   * Whether subtitle display is enabled or not\n   */\n  get subtitleDisplay() {\n    const subtitleTrackController = this.subtitleTrackController;\n    return subtitleTrackController ? subtitleTrackController.subtitleDisplay : false;\n  }\n  /**\n   * Enable/disable subtitle display rendering\n   */\n  set subtitleDisplay(value) {\n    const subtitleTrackController = this.subtitleTrackController;\n    if (subtitleTrackController) {\n      subtitleTrackController.subtitleDisplay = value;\n    }\n  }\n  /**\n   * get mode for Low-Latency HLS loading\n   */\n  get lowLatencyMode() {\n    return this.config.lowLatencyMode;\n  }\n  /**\n   * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK.\n   */\n  set lowLatencyMode(mode) {\n    this.config.lowLatencyMode = mode;\n  }\n  /**\n   * Position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```)\n   * @returns null prior to loading live Playlist\n   */\n  get liveSyncPosition() {\n    return this.latencyController.liveSyncPosition;\n  }\n  /**\n   * Estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced)\n   * @returns 0 before first playlist is loaded\n   */\n  get latency() {\n    return this.latencyController.latency;\n  }\n  /**\n   * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition```\n   * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration```\n   * @returns 0 before first playlist is loaded\n   */\n  get maxLatency() {\n    return this.latencyController.maxLatency;\n  }\n  /**\n   * target distance from the edge as calculated by the latency controller\n   */\n  get targetLatency() {\n    return this.latencyController.targetLatency;\n  }\n  /**\n   * the rate at which the edge of the current live playlist is advancing or 1 if there is none\n   */\n  get drift() {\n    return this.latencyController.drift;\n  }\n  /**\n   * set to true when startLoad is called before MANIFEST_PARSED event\n   */\n  get forceStartLoad() {\n    return this.streamController.forceStartLoad;\n  }\n};\nHls.defaultConfig = void 0;\n\n// node_modules/.pnpm/@mux+playback-core@0.25.2/node_modules/@mux/playback-core/dist/index.mjs\nvar T = Hls;\nvar v = class v2 extends Error {\n  constructor(n2, a2 = v2.MEDIA_ERR_CUSTOM, r10, o) {\n    var s;\n    super(n2);\n    this.name = \"MediaError\", this.code = a2, this.context = o, this.fatal = r10 != null ? r10 : a2 >= v2.MEDIA_ERR_NETWORK && a2 <= v2.MEDIA_ERR_ENCRYPTED, this.message || (this.message = (s = v2.defaultMessages[this.code]) != null ? s : \"\");\n  }\n};\nv.MEDIA_ERR_ABORTED = 1, v.MEDIA_ERR_NETWORK = 2, v.MEDIA_ERR_DECODE = 3, v.MEDIA_ERR_SRC_NOT_SUPPORTED = 4, v.MEDIA_ERR_ENCRYPTED = 5, v.MEDIA_ERR_CUSTOM = 100, v.defaultMessages = { 1: \"You aborted the media playback\", 2: \"A network error caused the media download to fail.\", 3: \"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.\", 4: \"An unsupported error occurred. The server or network failed, or your browser does not support this format.\", 5: \"The media is encrypted and there are no keys to decrypt it.\" };\nvar x = v;\nvar we = (e) => e == null;\nvar N = (e, t2) => we(t2) ? false : e in t2;\nvar w = { ANY: \"any\", MUTED: \"muted\" };\nvar g = { ON_DEMAND: \"on-demand\", LIVE: \"live\", UNKNOWN: \"unknown\" };\nvar _ = { MSE: \"mse\", NATIVE: \"native\" };\nvar h = { HEADER: \"header\", QUERY: \"query\", NONE: \"none\" };\nvar dt2 = Object.values(h);\nvar b2 = { M3U8: \"application/vnd.apple.mpegurl\", MP4: \"video/mp4\" };\nvar D = { HLS: b2.M3U8 };\nvar lt2 = Object.keys(D);\nvar pt2 = [...Object.values(b2), \"hls\", \"HLS\"];\nvar y = (e, t2, n2, a2, r10 = e) => {\n  r10.addEventListener(t2, n2, a2), e.addEventListener(\"teardown\", () => {\n    r10.removeEventListener(t2, n2);\n  }, { once: true });\n};\nfunction Q(e, t2, n2) {\n  t2 && n2 > t2 && (n2 = t2);\n  for (let a2 = 0; a2 < e.length; a2++) if (e.start(a2) <= n2 && e.end(a2) >= n2) return true;\n  return false;\n}\nvar Z2 = (e) => {\n  let t2 = e.indexOf(\"?\");\n  if (t2 < 0) return [e];\n  let n2 = e.slice(0, t2), a2 = e.slice(t2);\n  return [n2, a2];\n};\nvar C2 = (e) => {\n  let t2 = e.type;\n  if (t2) {\n    let a2 = t2.toUpperCase();\n    return N(a2, D) ? D[a2] : t2;\n  }\n  let { src: n2 } = e;\n  return n2 ? De2(n2) : \"\";\n};\nvar O2 = (e) => e === \"VOD\" ? g.ON_DEMAND : g.LIVE;\nvar V = (e) => e === \"EVENT\" ? Number.POSITIVE_INFINITY : e === \"VOD\" ? Number.NaN : 0;\nvar De2 = (e) => {\n  let t2 = \"\";\n  try {\n    t2 = new URL(e).pathname;\n  } catch (e2) {\n    console.error(\"invalid url\");\n  }\n  let n2 = t2.lastIndexOf(\".\");\n  if (n2 < 0) return \"\";\n  let r10 = t2.slice(n2 + 1).toUpperCase();\n  return N(r10, b2) ? b2[r10] : \"\";\n};\nvar Ie2 = Object.values(w);\nvar ee2 = (e) => typeof e == \"boolean\" || typeof e == \"string\" && Ie2.includes(e);\nvar te2 = (e, t2, n2) => {\n  let { autoplay: a2 } = e, r10 = false, o = false, s = ee2(a2) ? a2 : !!a2, i2 = () => {\n    r10 || y(t2, \"playing\", () => {\n      r10 = true;\n    }, { once: true });\n  };\n  if (i2(), y(t2, \"loadstart\", () => {\n    r10 = false, i2(), U2(t2, s);\n  }, { once: true }), y(t2, \"loadstart\", () => {\n    n2 || (e.streamType && e.streamType !== g.UNKNOWN ? o = e.streamType === g.LIVE : o = !Number.isFinite(t2.duration)), U2(t2, s);\n  }, { once: true }), n2 && n2.once(T.Events.LEVEL_LOADED, (u3, d4) => {\n    var c4;\n    e.streamType && e.streamType !== g.UNKNOWN ? o = e.streamType === g.LIVE : o = (c4 = d4.details.live) != null ? c4 : false;\n  }), !s) {\n    let u3 = () => {\n      !o || Number.isFinite(e.startTime) || (n2 != null && n2.liveSyncPosition ? t2.currentTime = n2.liveSyncPosition : Number.isFinite(t2.seekable.end(0)) && (t2.currentTime = t2.seekable.end(0)));\n    };\n    n2 && y(t2, \"play\", () => {\n      t2.preload === \"metadata\" ? n2.once(T.Events.LEVEL_UPDATED, u3) : u3();\n    }, { once: true });\n  }\n  return (u3) => {\n    r10 || (s = ee2(u3) ? u3 : !!u3, U2(t2, s));\n  };\n};\nvar U2 = (e, t2) => {\n  if (!t2) return;\n  let n2 = e.muted, a2 = () => e.muted = n2;\n  switch (t2) {\n    case w.ANY:\n      e.play().catch(() => {\n        e.muted = true, e.play().catch(a2);\n      });\n      break;\n    case w.MUTED:\n      e.muted = true, e.play().catch(a2);\n      break;\n    default:\n      e.play().catch(() => {\n      });\n      break;\n  }\n};\nvar ne2 = ({ preload: e, src: t2 }, n2, a2) => {\n  let r10 = (c4) => {\n    c4 != null && [\"\", \"none\", \"metadata\", \"auto\"].includes(c4) ? n2.setAttribute(\"preload\", c4) : n2.removeAttribute(\"preload\");\n  };\n  if (!a2) return r10(e), r10;\n  let o = false, s = false, i2 = a2.config.maxBufferLength, l = a2.config.maxBufferSize, u3 = (c4) => {\n    r10(c4);\n    let p3 = c4 != null ? c4 : n2.preload;\n    s || p3 === \"none\" || (p3 === \"metadata\" ? (a2.config.maxBufferLength = 1, a2.config.maxBufferSize = 1) : (a2.config.maxBufferLength = i2, a2.config.maxBufferSize = l), d4());\n  }, d4 = () => {\n    !o && t2 && (o = true, a2.loadSource(t2));\n  };\n  return y(n2, \"play\", () => {\n    s = true, a2.config.maxBufferLength = i2, a2.config.maxBufferSize = l, d4();\n  }, { once: true }), u3(e), u3;\n};\nfunction re(e, t2) {\n  var l;\n  if (!(\"videoTracks\" in e)) return;\n  let n2 = /* @__PURE__ */ new WeakMap();\n  t2.on(T.Events.MANIFEST_PARSED, function(u3, d4) {\n    i2();\n    let c4 = e.addVideoTrack(\"main\");\n    c4.selected = true;\n    for (let [p3, f] of d4.levels.entries()) {\n      let m3 = c4.addRendition(f.url[0], f.width, f.height, f.videoCodec, f.bitrate);\n      n2.set(f, `${p3}`), m3.id = `${p3}`;\n    }\n  }), t2.on(T.Events.AUDIO_TRACKS_UPDATED, function(u3, d4) {\n    s();\n    for (let c4 of d4.audioTracks) {\n      let p3 = c4.default ? \"main\" : \"alternative\", f = e.addAudioTrack(p3, c4.name, c4.lang);\n      f.id = `${c4.id}`, c4.default && (f.enabled = true);\n    }\n  }), e.audioTracks.addEventListener(\"change\", () => {\n    var c4;\n    let u3 = +((c4 = [...e.audioTracks].find((p3) => p3.enabled)) == null ? void 0 : c4.id), d4 = t2.audioTracks.map((p3) => p3.id);\n    u3 != t2.audioTrack && d4.includes(u3) && (t2.audioTrack = u3);\n  }), t2.on(T.Events.LEVELS_UPDATED, function(u3, d4) {\n    var f;\n    let c4 = e.videoTracks[(f = e.videoTracks.selectedIndex) != null ? f : 0];\n    if (!c4) return;\n    let p3 = d4.levels.map((m3) => n2.get(m3));\n    for (let m3 of e.videoRenditions) m3.id && !p3.includes(m3.id) && c4.removeRendition(m3);\n  });\n  let a2 = (u3) => {\n    let d4 = u3.target.selectedIndex;\n    d4 != t2.nextLevel && r10(d4);\n  }, r10 = (u3) => {\n    let d4 = e.currentTime, c4 = false, p3 = (f, m3) => {\n      c4 || (c4 = !Number.isFinite(m3.endOffset));\n    };\n    t2.on(T.Events.BUFFER_FLUSHING, p3), t2.nextLevel = u3, t2.off(T.Events.BUFFER_FLUSHING, p3), c4 || t2.trigger(T.Events.BUFFER_FLUSHING, { startOffset: d4 + 10, endOffset: 1 / 0, type: \"video\" });\n  };\n  (l = e.videoRenditions) == null || l.addEventListener(\"change\", a2);\n  let o = () => {\n    for (let u3 of e.videoTracks) e.removeVideoTrack(u3);\n  }, s = () => {\n    for (let u3 of e.audioTracks) e.removeAudioTrack(u3);\n  }, i2 = () => {\n    o(), s();\n  };\n  t2.once(T.Events.DESTROYING, i2);\n}\nvar F2 = (e) => \"time\" in e ? e.time : e.startTime;\nfunction ae(e, t2) {\n  t2.on(T.Events.NON_NATIVE_TEXT_TRACKS_FOUND, (r10, { tracks: o }) => {\n    o.forEach((s) => {\n      var u3;\n      let i2 = (u3 = s.subtitleTrack) != null ? u3 : s.closedCaptions, l = t2.subtitleTracks.findIndex(({ lang: d4, name: c4, type: p3 }) => d4 == (i2 == null ? void 0 : i2.lang) && c4 === s.label && p3.toLowerCase() === s.kind);\n      W(e, s.kind, s.label, i2 == null ? void 0 : i2.lang, `${s.kind}${l}`);\n    });\n  });\n  let n2 = () => {\n    var s;\n    if (!t2.subtitleTracks.length) return;\n    let r10 = Array.from(e.textTracks).find((i2) => i2.id && i2.mode === \"showing\" && [\"subtitles\", \"captions\"].includes(i2.kind)), o = `${(s = t2.subtitleTracks[t2.subtitleTrack]) == null ? void 0 : s.type.toLowerCase()}${t2.subtitleTrack}`;\n    if (r10 && (t2.subtitleTrack < 0 || (r10 == null ? void 0 : r10.id) !== o)) {\n      let i2 = t2.subtitleTracks.findIndex(({ lang: l, name: u3, type: d4 }) => l == r10.language && u3 === r10.label && d4.toLowerCase() === r10.kind);\n      t2.subtitleTrack = i2;\n    }\n    r10 && (r10 == null ? void 0 : r10.id) === o && r10.cues && Array.from(r10.cues).forEach((i2) => {\n      r10.addCue(i2);\n    });\n  };\n  e.textTracks.addEventListener(\"change\", n2), t2.on(T.Events.CUES_PARSED, (r10, { track: o, cues: s }) => {\n    let i2 = e.textTracks.getTrackById(o);\n    if (!i2) return;\n    let l = i2.mode === \"disabled\";\n    l && (i2.mode = \"hidden\"), s.forEach((u3) => {\n      var d4;\n      (d4 = i2.cues) != null && d4.getCueById(u3.id) || i2.addCue(u3);\n    }), l && (i2.mode = \"disabled\");\n  }), t2.once(T.Events.DESTROYING, () => {\n    e.textTracks.removeEventListener(\"change\", n2), e.querySelectorAll(\"track[data-removeondestroy]\").forEach((o) => {\n      o.remove();\n    });\n  });\n  let a2 = () => {\n    Array.from(e.textTracks).forEach((r10) => {\n      var o, s;\n      if (![\"subtitles\", \"caption\"].includes(r10.kind) && r10.label === \"thumbnails\") {\n        if (!((o = r10.cues) != null && o.length)) {\n          let i2 = e.querySelector('track[label=\"thumbnails\"]'), l = (s = i2 == null ? void 0 : i2.getAttribute(\"src\")) != null ? s : \"\";\n          i2 == null || i2.removeAttribute(\"src\"), setTimeout(() => {\n            i2 == null || i2.setAttribute(\"src\", l);\n          }, 0);\n        }\n        r10.mode !== \"hidden\" && (r10.mode = \"hidden\");\n      }\n    });\n  };\n  t2.once(T.Events.MANIFEST_LOADED, a2), t2.once(T.Events.MEDIA_ATTACHED, a2);\n}\nfunction W(e, t2, n2, a2, r10) {\n  let o = document.createElement(\"track\");\n  return o.kind = t2, o.label = n2, a2 && (o.srclang = a2), r10 && (o.id = r10), o.track.mode = [\"subtitles\", \"captions\"].includes(t2) ? \"disabled\" : \"hidden\", o.setAttribute(\"data-removeondestroy\", \"\"), e.append(o), o.track;\n}\nfunction Re(e, t2) {\n  let n2 = Array.prototype.find.call(e.querySelectorAll(\"track\"), (a2) => a2.track === t2);\n  n2 == null || n2.remove();\n}\nfunction E(e, t2, n2) {\n  var a2;\n  return (a2 = Array.from(e.querySelectorAll(\"track\")).find((r10) => r10.track.label === t2 && r10.track.kind === n2)) == null ? void 0 : a2.track;\n}\nfunction oe2(e, t2, n2, a2) {\n  return __async(this, null, function* () {\n    let r10 = E(e, n2, a2);\n    return r10 || (r10 = W(e, a2, n2), r10.mode = \"hidden\", yield new Promise((o) => setTimeout(() => o(void 0), 0))), r10.mode !== \"hidden\" && (r10.mode = \"hidden\"), [...t2].sort((o, s) => F2(s) - F2(o)).forEach((o) => {\n      var l, u3;\n      let s = o.value, i2 = F2(o);\n      if (\"endTime\" in o && o.endTime != null) r10 == null || r10.addCue(new VTTCue(i2, o.endTime, a2 === \"chapters\" ? s : JSON.stringify(s != null ? s : null)));\n      else {\n        let d4 = Array.prototype.findIndex.call(r10 == null ? void 0 : r10.cues, (m3) => m3.startTime >= i2), c4 = (l = r10 == null ? void 0 : r10.cues) == null ? void 0 : l[d4], p3 = c4 ? c4.startTime : Number.isFinite(e.duration) ? e.duration : Number.MAX_SAFE_INTEGER, f = (u3 = r10 == null ? void 0 : r10.cues) == null ? void 0 : u3[d4 - 1];\n        f && (f.endTime = i2), r10 == null || r10.addCue(new VTTCue(i2, p3, a2 === \"chapters\" ? s : JSON.stringify(s != null ? s : null)));\n      }\n    }), e.textTracks.dispatchEvent(new Event(\"change\", { bubbles: true, composed: true })), r10;\n  });\n}\nvar K2 = \"cuepoints\";\nvar se2 = Object.freeze({ label: K2 });\nfunction ie2(_0, _1) {\n  return __async(this, arguments, function* (e, t2, n2 = se2) {\n    return oe2(e, t2, n2.label, \"metadata\");\n  });\n}\nvar I2 = (e) => ({ time: e.startTime, value: JSON.parse(e.text) });\nfunction He(e, t2 = { label: K2 }) {\n  let n2 = E(e, t2.label, \"metadata\");\n  return n2 != null && n2.cues ? Array.from(n2.cues, (a2) => I2(a2)) : [];\n}\nfunction ce2(e, t2 = { label: K2 }) {\n  var o, s;\n  let n2 = E(e, t2.label, \"metadata\");\n  if (!((o = n2 == null ? void 0 : n2.activeCues) != null && o.length)) return;\n  if (n2.activeCues.length === 1) return I2(n2.activeCues[0]);\n  let { currentTime: a2 } = e, r10 = Array.prototype.find.call((s = n2.activeCues) != null ? s : [], ({ startTime: i2, endTime: l }) => i2 <= a2 && l > a2);\n  return I2(r10 || n2.activeCues[0]);\n}\nfunction ue2(_0) {\n  return __async(this, arguments, function* (e, t2 = se2) {\n    return new Promise((n2) => {\n      y(e, \"loadstart\", () => __async(null, null, function* () {\n        let a2 = yield ie2(e, [], t2);\n        y(e, \"cuechange\", () => {\n          let r10 = ce2(e);\n          if (r10) {\n            let o = new CustomEvent(\"cuepointchange\", { composed: true, bubbles: true, detail: r10 });\n            e.dispatchEvent(o);\n          }\n        }, {}, a2), n2(a2);\n      }));\n    });\n  });\n}\nvar B2 = \"chapters\";\nvar de2 = Object.freeze({ label: B2 });\nvar R = (e) => ({ startTime: e.startTime, endTime: e.endTime, value: e.text });\nfunction le2(_0, _1) {\n  return __async(this, arguments, function* (e, t2, n2 = de2) {\n    return oe2(e, t2, n2.label, \"chapters\");\n  });\n}\nfunction Ne2(e, t2 = { label: B2 }) {\n  var a2;\n  let n2 = E(e, t2.label, \"chapters\");\n  return (a2 = n2 == null ? void 0 : n2.cues) != null && a2.length ? Array.from(n2.cues, (r10) => R(r10)) : [];\n}\nfunction pe(e, t2 = { label: B2 }) {\n  var o, s;\n  let n2 = E(e, t2.label, \"chapters\");\n  if (!((o = n2 == null ? void 0 : n2.activeCues) != null && o.length)) return;\n  if (n2.activeCues.length === 1) return R(n2.activeCues[0]);\n  let { currentTime: a2 } = e, r10 = Array.prototype.find.call((s = n2.activeCues) != null ? s : [], ({ startTime: i2, endTime: l }) => i2 <= a2 && l > a2);\n  return R(r10 || n2.activeCues[0]);\n}\nfunction fe2(_0) {\n  return __async(this, arguments, function* (e, t2 = de2) {\n    return new Promise((n2) => {\n      y(e, \"loadstart\", () => __async(null, null, function* () {\n        let a2 = yield le2(e, [], t2);\n        y(e, \"cuechange\", () => {\n          let r10 = pe(e);\n          if (r10) {\n            let o = new CustomEvent(\"chapterchange\", { composed: true, bubbles: true, detail: r10 });\n            e.dispatchEvent(o);\n          }\n        }, {}, a2), n2(a2);\n      }));\n    });\n  });\n}\nfunction _e2(e, t2) {\n  if (t2) {\n    let n2 = t2.playingDate;\n    if (n2 != null) return new Date(n2.getTime() - e.currentTime * 1e3);\n  }\n  return typeof e.getStartDate == \"function\" ? e.getStartDate() : /* @__PURE__ */ new Date(NaN);\n}\nfunction Oe2(e, t2) {\n  if (t2 && t2.playingDate) return t2.playingDate;\n  if (typeof e.getStartDate == \"function\") {\n    let n2 = e.getStartDate();\n    return new Date(n2.getTime() + e.currentTime * 1e3);\n  }\n  return /* @__PURE__ */ new Date(NaN);\n}\nvar Ve = (e) => __async(null, null, function* () {\n  return fetch(e).then((t2) => t2.text()).then((t2) => {\n    let n2 = t2.split(`\n`).find((a2, r10, o) => r10 && o[r10 - 1].startsWith(\"#EXT-X-STREAM-INF\"));\n    return fetch(n2).then((a2) => a2.text()).then((a2) => a2.split(`\n`));\n  });\n});\nvar Ue = (e) => {\n  var s, i2, l;\n  let n2 = (i2 = ((s = e.find((u3) => u3.startsWith(\"#EXT-X-PLAYLIST-TYPE\"))) != null ? s : \"\").split(\":\")[1]) == null ? void 0 : i2.trim(), a2 = O2(n2), r10 = V(n2), o;\n  if (a2 === g.LIVE) {\n    let u3 = e.find((c4) => c4.startsWith(\"#EXT-X-PART-INF\"));\n    if (!!u3) o = +u3.split(\":\")[1].split(\"=\")[1] * 2;\n    else {\n      let c4 = e.find((m3) => m3.startsWith(\"#EXT-X-TARGETDURATION\")), p3 = (l = c4 == null ? void 0 : c4.split(\":\")) == null ? void 0 : l[1];\n      o = +(p3 != null ? p3 : 6) * 3;\n    }\n  }\n  return { streamType: a2, targetLiveWindow: r10, liveEdgeStartOffset: o };\n};\nvar Fe = (e, t2) => __async(null, null, function* () {\n  if (t2 === b2.MP4) return { streamType: g.ON_DEMAND, targetLiveWindow: Number.NaN, liveEdgeStartOffset: void 0 };\n  if (t2 === b2.M3U8) {\n    let n2 = yield Ve(e);\n    return Ue(n2);\n  }\n  return console.error(`Media type ${t2} is an unrecognized or unsupported type for src ${e}.`), { streamType: void 0, targetLiveWindow: void 0, liveEdgeStartOffset: void 0 };\n});\nvar $2 = (_0, _1, ..._22) => __async(null, [_0, _1, ..._22], function* (e, t2, n2 = C2({ src: e })) {\n  var s, i2, l;\n  let { streamType: a2, targetLiveWindow: r10, liveEdgeStartOffset: o } = yield Fe(e, n2);\n  ((s = M2.get(t2)) != null ? s : {}).liveEdgeStartOffset = o, ((i2 = M2.get(t2)) != null ? i2 : {}).targetLiveWindow = r10, t2.dispatchEvent(new CustomEvent(\"targetlivewindowchange\", { composed: true, bubbles: true })), ((l = M2.get(t2)) != null ? l : {}).streamType = a2, t2.dispatchEvent(new CustomEvent(\"streamtypechange\", { composed: true, bubbles: true }));\n});\nvar We2 = (e) => {\n  var s;\n  let t2 = e.type, n2 = O2(t2), a2 = V(t2), r10, o = !!((s = e.partList) != null && s.length);\n  return n2 === g.LIVE && (r10 = o ? e.partTarget * 2 : e.targetduration * 3), { streamType: n2, targetLiveWindow: a2, liveEdgeStartOffset: r10, lowLatency: o };\n};\nvar Ke2 = (e, t2, n2) => {\n  var i2, l, u3, d4, c4, p3, f, m3;\n  let { streamType: a2, targetLiveWindow: r10, liveEdgeStartOffset: o, lowLatency: s } = We2(e);\n  if (a2 === g.LIVE) {\n    s ? (n2.config.backBufferLength = (i2 = n2.userConfig.backBufferLength) != null ? i2 : 4, n2.config.maxFragLookUpTolerance = (l = n2.userConfig.maxFragLookUpTolerance) != null ? l : 1e-3, n2.config.abrBandWidthUpFactor = (u3 = n2.userConfig.abrBandWidthUpFactor) != null ? u3 : n2.config.abrBandWidthFactor) : n2.config.backBufferLength = (d4 = n2.userConfig.backBufferLength) != null ? d4 : 8;\n    let P2 = Object.freeze({ get length() {\n      return t2.seekable.length;\n    }, start(L2) {\n      return t2.seekable.start(L2);\n    }, end(L2) {\n      var A3;\n      return L2 > this.length || L2 < 0 || Number.isFinite(t2.duration) ? t2.seekable.end(L2) : (A3 = n2.liveSyncPosition) != null ? A3 : t2.seekable.end(L2);\n    } });\n    ((c4 = M2.get(t2)) != null ? c4 : {}).seekable = P2;\n  }\n  ((p3 = M2.get(t2)) != null ? p3 : {}).liveEdgeStartOffset = o, ((f = M2.get(t2)) != null ? f : {}).targetLiveWindow = r10, t2.dispatchEvent(new CustomEvent(\"targetlivewindowchange\", { composed: true, bubbles: true })), ((m3 = M2.get(t2)) != null ? m3 : {}).streamType = a2, t2.dispatchEvent(new CustomEvent(\"streamtypechange\", { composed: true, bubbles: true }));\n};\nvar ye2;\nvar me2;\nvar Be2 = (me2 = (ye2 = globalThis == null ? void 0 : globalThis.navigator) == null ? void 0 : ye2.userAgent) != null ? me2 : \"\";\nvar $e2 = Be2.toLowerCase().indexOf(\"android\") !== -1;\nvar M2 = /* @__PURE__ */ new WeakMap();\nvar k = \"mux.com\";\nvar ge;\nvar Me2;\nvar ve2 = (Me2 = (ge = T).isSupported) == null ? void 0 : Me2.call(ge);\nvar qe2 = $e2;\nvar Xt2 = () => od.utils.now();\nvar Ye2 = od.utils.generateUUID;\nvar Gt2 = ({ playbackId: e, customDomain: t2 = k, maxResolution: n2, minResolution: a2, renditionOrder: r10, programStartTime: o, programEndTime: s, tokens: { playback: i2 } = {}, extraSourceParams: l = {} } = {}) => {\n  if (!e) return;\n  let [u3, d4 = \"\"] = Z2(e), c4 = new URL(`https://stream.${t2}/${u3}.m3u8${d4}`);\n  return i2 || c4.searchParams.has(\"token\") ? (c4.searchParams.forEach((p3, f) => {\n    f != \"token\" && c4.searchParams.delete(f);\n  }), i2 && c4.searchParams.set(\"token\", i2)) : (n2 && c4.searchParams.set(\"max_resolution\", n2), a2 && (c4.searchParams.set(\"min_resolution\", a2), n2 && +n2.slice(0, -1) < +a2.slice(0, -1) && console.error(\"minResolution must be <= maxResolution\", \"minResolution\", a2, \"maxResolution\", n2)), r10 && c4.searchParams.set(\"rendition_order\", r10), o && c4.searchParams.set(\"program_start_time\", `${o}`), s && c4.searchParams.set(\"program_end_time\", `${s}`), Object.entries(l).forEach(([p3, f]) => {\n    f != null && c4.searchParams.set(p3, f);\n  })), c4.toString();\n};\nvar ze2 = (e) => {\n  if (!e) return;\n  let [t2] = e.split(\"?\");\n  return t2 || void 0;\n};\nvar be = (e) => {\n  if (!e || !e.startsWith(\"https://stream.\")) return;\n  let [t2] = new URL(e).pathname.slice(1).split(\".m3u8\");\n  return t2 || void 0;\n};\nvar Xe2 = (e) => {\n  var t2, n2, a2;\n  return (t2 = e == null ? void 0 : e.metadata) != null && t2.video_id ? e.metadata.video_id : Ee2(e) && (a2 = (n2 = ze2(e.playbackId)) != null ? n2 : be(e.src)) != null ? a2 : e.src;\n};\nvar jt2 = (e) => {\n  var t2;\n  return (t2 = M2.get(e)) == null ? void 0 : t2.error;\n};\nvar Te = (e) => {\n  var t2, n2;\n  return (n2 = (t2 = M2.get(e)) == null ? void 0 : t2.streamType) != null ? n2 : g.UNKNOWN;\n};\nvar Jt2 = (e) => {\n  var t2, n2;\n  return (n2 = (t2 = M2.get(e)) == null ? void 0 : t2.targetLiveWindow) != null ? n2 : Number.NaN;\n};\nvar q = (e) => {\n  var t2, n2;\n  return (n2 = (t2 = M2.get(e)) == null ? void 0 : t2.seekable) != null ? n2 : e.seekable;\n};\nvar Qt2 = (e) => {\n  var a2;\n  let t2 = (a2 = M2.get(e)) == null ? void 0 : a2.liveEdgeStartOffset;\n  if (typeof t2 != \"number\") return Number.NaN;\n  let n2 = q(e);\n  return n2.length ? n2.end(n2.length - 1) - t2 : Number.NaN;\n};\nvar X2 = 0.034;\nvar Ge = (e, t2, n2 = X2) => Math.abs(e - t2) <= n2;\nvar xe2 = (e, t2, n2 = X2) => e > t2 || Ge(e, t2, n2);\nvar je2 = (e, t2 = X2) => e.paused && xe2(e.currentTime, e.duration, t2);\nvar Le2 = (e, t2) => {\n  var u3, d4, c4;\n  if (!t2 || !e.buffered.length) return;\n  if (e.readyState > 2) return false;\n  let n2 = t2.currentLevel >= 0 ? (d4 = (u3 = t2.levels) == null ? void 0 : u3[t2.currentLevel]) == null ? void 0 : d4.details : (c4 = t2.levels.find((p3) => !!p3.details)) == null ? void 0 : c4.details;\n  if (!n2 || n2.live) return;\n  let { fragments: a2 } = n2;\n  if (!(a2 != null && a2.length)) return;\n  if (e.currentTime < e.duration - (n2.targetduration + 0.5)) return false;\n  let r10 = a2[a2.length - 1];\n  if (e.currentTime <= r10.start) return false;\n  let o = r10.start + r10.duration / 2, s = e.buffered.start(e.buffered.length - 1), i2 = e.buffered.end(e.buffered.length - 1);\n  return o > s && o < i2;\n};\nvar Je2 = (e, t2) => e.ended || e.loop ? e.ended : t2 && Le2(e, t2) ? true : je2(e);\nvar Zt = (e, t2, n2) => {\n  Qe2(t2, n2);\n  let { metadata: a2 = {} } = e, { view_session_id: r10 = Ye2() } = a2, o = Xe2(e);\n  a2.view_session_id = r10, a2.video_id = o, e.metadata = a2, M2.set(t2, {});\n  let s = Ze(e, t2), i2 = ne2(e, t2, s);\n  ot2(e, t2, s), st2(e, t2, s), ue2(t2), fe2(t2);\n  let l = te2(e, t2, s);\n  return { engine: s, setAutoplay: l, setPreload: i2 };\n};\nvar Qe2 = (e, t2) => {\n  let n2 = t2 == null ? void 0 : t2.engine;\n  n2 && (n2.detachMedia(), n2.destroy()), e != null && e.mux && !e.mux.deleted && (e.mux.destroy(), delete e.mux), e && (e.removeAttribute(\"src\"), e.load(), e.removeEventListener(\"error\", Ce2), e.removeEventListener(\"error\", Y), e.removeEventListener(\"durationchange\", he2), M2.delete(e), e.dispatchEvent(new Event(\"teardown\")));\n};\nfunction ke2(e, t2) {\n  var u3;\n  let n2 = C2(e);\n  if (!(n2 === b2.M3U8)) return true;\n  let r10 = !n2 || ((u3 = t2.canPlayType(n2)) != null ? u3 : true), { preferPlayback: o } = e, s = o === _.MSE, i2 = o === _.NATIVE;\n  return r10 && (i2 || !(ve2 && (s || qe2)));\n}\nvar Ze = (e, t2) => {\n  let { debug: n2, streamType: a2, startTime: r10 = -1, metadata: o, preferCmcd: s, _hlsConfig: i2 = {} } = e, u3 = C2(e) === b2.M3U8, d4 = ke2(e, t2);\n  if (u3 && !d4 && ve2) {\n    let c4 = { backBufferLength: 30, renderTextTracksNatively: false, liveDurationInfinity: true, capLevelToPlayerSize: true, capLevelOnFPSDrop: true }, p3 = et(a2), f = tt2(e), m3 = s !== h.NONE ? { useHeaders: s === h.HEADER, sessionId: o == null ? void 0 : o.view_session_id, contentId: o == null ? void 0 : o.video_id } : void 0;\n    return new T(__spreadValues(__spreadValues(__spreadValues(__spreadValues({ debug: n2, startPosition: r10, cmcd: m3, xhrSetup: (L2, A3) => {\n      var G4, j4;\n      if (s && s !== h.QUERY) return;\n      let S4 = new URL(A3);\n      if (!S4.searchParams.has(\"CMCD\")) return;\n      let Ae4 = ((j4 = (G4 = S4.searchParams.get(\"CMCD\")) == null ? void 0 : G4.split(\",\")) != null ? j4 : []).filter((J4) => J4.startsWith(\"sid\") || J4.startsWith(\"cid\")).join(\",\");\n      S4.searchParams.set(\"CMCD\", Ae4), L2.open(\"GET\", S4);\n    } }, c4), p3), f), i2));\n  }\n};\nvar et = (e) => e === g.LIVE ? { backBufferLength: 8 } : {};\nvar tt2 = (e) => {\n  let { drmToken: t2, src: n2, playbackId: a2 = be(n2) } = e;\n  return !t2 || !a2 ? {} : { emeEnabled: true, drmSystems: { \"com.apple.fps\": { licenseUrl: H2(e, \"fairplay\"), serverCertificateUrl: Pe2(e, \"fairplay\") }, \"com.widevine.alpha\": { licenseUrl: H2(e, \"widevine\") }, \"com.microsoft.playready\": { licenseUrl: H2(e, \"playready\") } }, requestMediaKeySystemAccessFunc: (r10, o) => (r10 === \"com.widevine.alpha\" && (o = [...o.map((s) => {\n    var l;\n    let i2 = (l = s.videoCapabilities) == null ? void 0 : l.map((u3) => __spreadProps(__spreadValues({}, u3), { robustness: \"HW_SECURE_ALL\" }));\n    return __spreadProps(__spreadValues({}, s), { videoCapabilities: i2 });\n  }), ...o]), navigator.requestMediaKeySystemAccess(r10, o)) };\n};\nvar nt2 = (e) => __async(null, null, function* () {\n  return yield (yield fetch(e)).arrayBuffer();\n});\nvar rt = (e, t2) => __async(null, null, function* () {\n  let a2 = yield (yield fetch(t2, { method: \"POST\", headers: { \"Content-type\": \"application/octet-stream\" }, body: e })).arrayBuffer();\n  return new Uint8Array(a2);\n});\nvar at2 = (e, t2) => {\n  y(t2, \"encrypted\", (a2) => __async(null, null, function* () {\n    try {\n      let r10 = a2.initDataType;\n      if (r10 !== \"skd\") {\n        console.error(`Received unexpected initialization data type \"${r10}\"`);\n        return;\n      }\n      if (!t2.mediaKeys) {\n        let d4 = yield (yield navigator.requestMediaKeySystemAccess(\"com.apple.fps\", [{ initDataTypes: [r10], videoCapabilities: [{ contentType: \"application/vnd.apple.mpegurl\", robustness: \"\" }], distinctiveIdentifier: \"not-allowed\", persistentState: \"not-allowed\", sessionTypes: [\"temporary\"] }])).createMediaKeys(), c4 = yield nt2(Pe2(e, \"fairplay\"));\n        yield d4.setServerCertificate(c4), yield t2.setMediaKeys(d4);\n      }\n      let o = a2.initData;\n      if (o == null) {\n        console.error(`Could not start encrypted playback due to missing initData in ${a2.type} event`);\n        return;\n      }\n      let s = t2.mediaKeys.createSession();\n      s.generateRequest(r10, o);\n      let i2 = yield new Promise((u3) => {\n        s.addEventListener(\"message\", (d4) => {\n          u3(d4.message);\n        }, { once: true });\n      }), l = yield rt(i2, H2(e, \"fairplay\"));\n      return yield s.update(l), s;\n    } catch (r10) {\n      console.error(`Could not start encrypted playback due to exception \"${r10}\"`);\n    }\n  }));\n};\nvar H2 = ({ playbackId: e, drmToken: t2, customDomain: n2 = k }, a2) => `https://license.${n2.toLocaleLowerCase().endsWith(k) ? n2 : k}/license/${a2}/${e}?token=${t2}`;\nvar Pe2 = ({ playbackId: e, drmToken: t2, customDomain: n2 = k }, a2) => `https://license.${n2.toLocaleLowerCase().endsWith(k) ? n2 : k}/appcert/${a2}/${e}?token=${t2}`;\nvar Ee2 = ({ playbackId: e, src: t2, customDomain: n2 }) => {\n  if (e) return true;\n  if (typeof t2 != \"string\") return false;\n  let a2 = window == null ? void 0 : window.location.href, r10 = new URL(t2, a2).hostname.toLocaleLowerCase();\n  return r10.includes(k) || !!n2 && r10.includes(n2.toLocaleLowerCase());\n};\nvar ot2 = (e, t2, n2) => {\n  var s;\n  let { envKey: a2, disableTracking: r10 } = e, o = Ee2(e);\n  if (!r10 && (a2 || o)) {\n    let { playerInitTime: i2, playerSoftwareName: l, playerSoftwareVersion: u3, beaconCollectionDomain: d4, debug: c4, disableCookies: p3 } = e, f = __spreadProps(__spreadValues({}, e.metadata), { video_title: ((s = e == null ? void 0 : e.metadata) == null ? void 0 : s.video_title) || void 0 }), m3 = (P2) => typeof P2.player_error_code == \"string\" ? false : typeof e.errorTranslator == \"function\" ? e.errorTranslator(P2) : P2;\n    od.monitor(t2, { debug: c4, beaconCollectionDomain: d4, hlsjs: n2, Hls: n2 ? T : void 0, automaticErrorTracking: false, errorTranslator: m3, disableCookies: p3, data: __spreadValues(__spreadProps(__spreadValues({}, a2 ? { env_key: a2 } : {}), { player_software_name: l, player_software: l, player_software_version: u3, player_init_time: i2 }), f) });\n  }\n};\nvar st2 = (e, t2, n2) => {\n  var u3;\n  let a2 = ke2(e, t2), { src: r10 } = e, o = () => {\n    t2.ended || !Je2(t2, n2) || (Le2(t2, n2) ? t2.currentTime = t2.buffered.end(t2.buffered.length - 1) : t2.dispatchEvent(new Event(\"ended\")));\n  }, s, i2, l = () => {\n    var p3, f;\n    let d4 = (p3 = q(t2)) == null ? void 0 : p3.start(0), c4 = (f = q(t2)) == null ? void 0 : f.end(0);\n    (i2 !== c4 || s !== d4) && t2.dispatchEvent(new CustomEvent(\"seekablechange\", { composed: true })), s = d4, i2 = c4;\n  };\n  if (y(t2, \"durationchange\", l), t2 && a2) {\n    let d4 = C2(e);\n    if (typeof r10 == \"string\") {\n      let c4 = () => {\n        if (Te(t2) !== g.LIVE || Number.isFinite(t2.duration)) return;\n        let p3 = setInterval(l, 1e3);\n        t2.addEventListener(\"teardown\", () => {\n          clearInterval(p3);\n        }, { once: true }), y(t2, \"durationchange\", () => {\n          Number.isFinite(t2.duration) && clearInterval(p3);\n        });\n      };\n      if (t2.preload === \"none\") {\n        let p3 = () => {\n          $2(r10, t2, d4).then(c4), t2.removeEventListener(\"loadedmetadata\", f);\n        }, f = () => {\n          $2(r10, t2, d4).then(c4), t2.removeEventListener(\"play\", p3);\n        };\n        y(t2, \"play\", p3, { once: true }), y(t2, \"loadedmetadata\", f, { once: true });\n      } else $2(r10, t2, d4).then(c4);\n      e.drmToken && at2(e, t2), t2.setAttribute(\"src\", r10), e.startTime && (((u3 = M2.get(t2)) != null ? u3 : {}).startTime = e.startTime, t2.addEventListener(\"durationchange\", he2, { once: true }));\n    } else t2.removeAttribute(\"src\");\n    t2.addEventListener(\"error\", Ce2), t2.addEventListener(\"error\", Y), t2.addEventListener(\"emptied\", () => {\n      t2.querySelectorAll(\"track[data-removeondestroy]\").forEach((p3) => {\n        p3.remove();\n      });\n    }, { once: true }), y(t2, \"pause\", o), y(t2, \"seeked\", o), y(t2, \"play\", () => {\n      t2.ended || xe2(t2.currentTime, t2.duration) && (t2.currentTime = t2.seekable.length ? t2.seekable.start(0) : 0);\n    });\n  } else n2 && r10 ? (n2.once(T.Events.LEVEL_LOADED, (d4, c4) => {\n    Ke2(c4.details, t2, n2), l(), Te(t2) === g.LIVE && !Number.isFinite(t2.duration) && (n2.on(T.Events.LEVEL_UPDATED, l), y(t2, \"durationchange\", () => {\n      Number.isFinite(t2.duration) && n2.off(T.Events.LEVELS_UPDATED, l);\n    }));\n  }), n2.on(T.Events.ERROR, (d4, c4) => {\n    let p3 = { [T.ErrorTypes.NETWORK_ERROR]: x.MEDIA_ERR_NETWORK, [T.ErrorTypes.MEDIA_ERROR]: x.MEDIA_ERR_DECODE }, f = new x(\"\", p3[c4.type]);\n    f.fatal = c4.fatal, f.data = c4, t2.dispatchEvent(new CustomEvent(\"error\", { detail: f }));\n  }), t2.addEventListener(\"error\", Y), y(t2, \"waiting\", o), re(e, n2), ae(t2, n2), n2.attachMedia(t2)) : console.error(\"It looks like the video you're trying to play will not work on this system! If possible, try upgrading to the newest versions of your browser or software.\");\n};\nfunction he2(e) {\n  var a2;\n  let t2 = e.target, n2 = (a2 = M2.get(t2)) == null ? void 0 : a2.startTime;\n  if (n2 && Q(t2.seekable, t2.duration, n2)) {\n    let r10 = t2.preload === \"auto\";\n    r10 && (t2.preload = \"none\"), t2.currentTime = n2, r10 && (t2.preload = \"auto\");\n  }\n}\nfunction Ce2(e) {\n  return __async(this, null, function* () {\n    if (!e.isTrusted) return;\n    e.stopImmediatePropagation();\n    let t2 = e.target;\n    if (!(t2 != null && t2.error)) return;\n    let { message: n2, code: a2 } = t2.error, r10 = new x(n2, a2);\n    if (t2.src && (a2 !== x.MEDIA_ERR_DECODE || a2 !== void 0)) try {\n      let { status: o } = yield fetch(t2.src);\n      r10.data = { response: { code: o } };\n    } catch (e2) {\n    }\n    t2.dispatchEvent(new CustomEvent(\"error\", { detail: r10 }));\n  });\n}\nfunction Y(e) {\n  var a2, r10;\n  if (!(e instanceof CustomEvent) || !(e.detail instanceof x)) return;\n  let t2 = e.target, n2 = e.detail;\n  !n2 || !n2.fatal || (((a2 = M2.get(t2)) != null ? a2 : {}).error = n2, (r10 = t2.mux) == null || r10.emit(\"error\", { player_error_code: n2.code, player_error_message: n2.message, player_error_context: n2.context }));\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/constants.js\nvar MediaUIEvents = {\n  MEDIA_PLAY_REQUEST: \"mediaplayrequest\",\n  MEDIA_PAUSE_REQUEST: \"mediapauserequest\",\n  MEDIA_MUTE_REQUEST: \"mediamuterequest\",\n  MEDIA_UNMUTE_REQUEST: \"mediaunmuterequest\",\n  MEDIA_VOLUME_REQUEST: \"mediavolumerequest\",\n  MEDIA_SEEK_REQUEST: \"mediaseekrequest\",\n  MEDIA_AIRPLAY_REQUEST: \"mediaairplayrequest\",\n  MEDIA_ENTER_FULLSCREEN_REQUEST: \"mediaenterfullscreenrequest\",\n  MEDIA_EXIT_FULLSCREEN_REQUEST: \"mediaexitfullscreenrequest\",\n  MEDIA_PREVIEW_REQUEST: \"mediapreviewrequest\",\n  MEDIA_ENTER_PIP_REQUEST: \"mediaenterpiprequest\",\n  MEDIA_EXIT_PIP_REQUEST: \"mediaexitpiprequest\",\n  MEDIA_ENTER_CAST_REQUEST: \"mediaentercastrequest\",\n  MEDIA_EXIT_CAST_REQUEST: \"mediaexitcastrequest\",\n  MEDIA_SHOW_TEXT_TRACKS_REQUEST: \"mediashowtexttracksrequest\",\n  MEDIA_HIDE_TEXT_TRACKS_REQUEST: \"mediahidetexttracksrequest\",\n  MEDIA_SHOW_SUBTITLES_REQUEST: \"mediashowsubtitlesrequest\",\n  MEDIA_DISABLE_SUBTITLES_REQUEST: \"mediadisablesubtitlesrequest\",\n  MEDIA_TOGGLE_SUBTITLES_REQUEST: \"mediatogglesubtitlesrequest\",\n  MEDIA_PLAYBACK_RATE_REQUEST: \"mediaplaybackraterequest\",\n  MEDIA_RENDITION_REQUEST: \"mediarenditionrequest\",\n  MEDIA_AUDIO_TRACK_REQUEST: \"mediaaudiotrackrequest\",\n  MEDIA_SEEK_TO_LIVE_REQUEST: \"mediaseektoliverequest\",\n  REGISTER_MEDIA_STATE_RECEIVER: \"registermediastatereceiver\",\n  UNREGISTER_MEDIA_STATE_RECEIVER: \"unregistermediastatereceiver\"\n};\nvar MediaStateReceiverAttributes = {\n  MEDIA_CHROME_ATTRIBUTES: \"mediachromeattributes\",\n  MEDIA_CONTROLLER: \"mediacontroller\"\n};\nvar MediaUIProps = {\n  MEDIA_AIRPLAY_UNAVAILABLE: \"mediaAirplayUnavailable\",\n  MEDIA_FULLSCREEN_UNAVAILABLE: \"mediaFullscreenUnavailable\",\n  MEDIA_PIP_UNAVAILABLE: \"mediaPipUnavailable\",\n  MEDIA_CAST_UNAVAILABLE: \"mediaCastUnavailable\",\n  MEDIA_RENDITION_UNAVAILABLE: \"mediaRenditionUnavailable\",\n  MEDIA_AUDIO_TRACK_UNAVAILABLE: \"mediaAudioTrackUnavailable\",\n  MEDIA_PAUSED: \"mediaPaused\",\n  MEDIA_HAS_PLAYED: \"mediaHasPlayed\",\n  MEDIA_ENDED: \"mediaEnded\",\n  MEDIA_MUTED: \"mediaMuted\",\n  MEDIA_VOLUME_LEVEL: \"mediaVolumeLevel\",\n  MEDIA_VOLUME: \"mediaVolume\",\n  MEDIA_VOLUME_UNAVAILABLE: \"mediaVolumeUnavailable\",\n  MEDIA_IS_PIP: \"mediaIsPip\",\n  MEDIA_IS_CASTING: \"mediaIsCasting\",\n  MEDIA_IS_AIRPLAYING: \"mediaIsAirplaying\",\n  MEDIA_SUBTITLES_LIST: \"mediaSubtitlesList\",\n  MEDIA_SUBTITLES_SHOWING: \"mediaSubtitlesShowing\",\n  MEDIA_IS_FULLSCREEN: \"mediaIsFullscreen\",\n  MEDIA_PLAYBACK_RATE: \"mediaPlaybackRate\",\n  MEDIA_CURRENT_TIME: \"mediaCurrentTime\",\n  MEDIA_DURATION: \"mediaDuration\",\n  MEDIA_SEEKABLE: \"mediaSeekable\",\n  MEDIA_PREVIEW_TIME: \"mediaPreviewTime\",\n  MEDIA_PREVIEW_IMAGE: \"mediaPreviewImage\",\n  MEDIA_PREVIEW_COORDS: \"mediaPreviewCoords\",\n  MEDIA_PREVIEW_CHAPTER: \"mediaPreviewChapter\",\n  MEDIA_LOADING: \"mediaLoading\",\n  MEDIA_BUFFERED: \"mediaBuffered\",\n  MEDIA_STREAM_TYPE: \"mediaStreamType\",\n  MEDIA_TARGET_LIVE_WINDOW: \"mediaTargetLiveWindow\",\n  MEDIA_TIME_IS_LIVE: \"mediaTimeIsLive\",\n  MEDIA_RENDITION_LIST: \"mediaRenditionList\",\n  MEDIA_RENDITION_SELECTED: \"mediaRenditionSelected\",\n  MEDIA_AUDIO_TRACK_LIST: \"mediaAudioTrackList\",\n  MEDIA_AUDIO_TRACK_ENABLED: \"mediaAudioTrackEnabled\",\n  MEDIA_CHAPTERS_CUES: \"mediaChaptersCues\"\n};\nvar MediaUIPropsEntries = (\n  /** @type {[keyof MediaUIProps, string][]} */\n  Object.entries(MediaUIProps)\n);\nvar MediaUIAttributes = (\n  /** @type {{ [k in keyof MediaUIProps]: string }} */\n  MediaUIPropsEntries.reduce(\n    (dictObj, [key, propName]) => {\n      dictObj[key] = `${propName.toLowerCase()}`;\n      return dictObj;\n    },\n    /** @type {Partial<{ [k in keyof MediaUIProps]: string }>} */\n    {}\n  )\n);\nvar MediaStateChangeEvents = (\n  /** @type {{ [k in keyof MediaUIProps | 'USER_INACTIVE' | 'BREAKPOINTS_CHANGE' | 'BREAKPOINTS_COMPUTED']: string }} */\n  MediaUIPropsEntries.reduce(\n    (dictObj, [key, propName]) => {\n      dictObj[key] = `${propName.toLowerCase()}`;\n      return dictObj;\n    },\n    /** @type {Partial<{ [k in keyof MediaUIProps | 'USER_INACTIVE' | 'BREAKPOINTS_CHANGE' | 'BREAKPOINTS_COMPUTED']: string  }>} */\n    {\n      USER_INACTIVE: \"userinactivechange\",\n      BREAKPOINTS_CHANGE: \"breakpointchange\",\n      BREAKPOINTS_COMPUTED: \"breakpointscomputed\"\n    }\n  )\n);\nvar StateChangeEventToAttributeMap = Object.entries(\n  MediaStateChangeEvents\n).reduce(\n  (mapObj, [key, eventType]) => {\n    const attrName = MediaUIAttributes[key];\n    if (attrName) {\n      mapObj[eventType] = attrName;\n    }\n    return mapObj;\n  },\n  { userinactivechange: \"userinactive\" }\n);\nvar AttributeToStateChangeEventMap = Object.entries(\n  MediaUIAttributes\n).reduce(\n  (mapObj, [key, attrName]) => {\n    const evtType = MediaStateChangeEvents[key];\n    if (evtType) {\n      mapObj[attrName] = evtType;\n    }\n    return mapObj;\n  },\n  { userinactive: \"userinactivechange\" }\n);\nvar TextTrackKinds = {\n  SUBTITLES: \"subtitles\",\n  CAPTIONS: \"captions\",\n  DESCRIPTIONS: \"descriptions\",\n  CHAPTERS: \"chapters\",\n  METADATA: \"metadata\"\n};\nvar TextTrackModes = {\n  DISABLED: \"disabled\",\n  HIDDEN: \"hidden\",\n  SHOWING: \"showing\"\n};\nvar PointerTypes = {\n  MOUSE: \"mouse\",\n  PEN: \"pen\",\n  TOUCH: \"touch\"\n};\nvar AvailabilityStates = {\n  UNAVAILABLE: \"unavailable\",\n  UNSUPPORTED: \"unsupported\"\n};\nvar StreamTypes = {\n  LIVE: \"live\",\n  ON_DEMAND: \"on-demand\",\n  UNKNOWN: \"unknown\"\n};\nvar WebkitPresentationModes = {\n  INLINE: \"inline\",\n  FULLSCREEN: \"fullscreen\",\n  PICTURE_IN_PICTURE: \"picture-in-picture\"\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/labels/labels.js\nvar nouns = {\n  AUDIO_PLAYER: () => \"audio player\",\n  VIDEO_PLAYER: () => \"video player\",\n  VOLUME: () => \"volume\",\n  SEEK: () => \"seek\",\n  CLOSED_CAPTIONS: () => \"closed captions\",\n  PLAYBACK_RATE: ({ playbackRate = 1 } = {}) => `current playback rate ${playbackRate}`,\n  PLAYBACK_TIME: () => `playback time`,\n  MEDIA_LOADING: () => `media loading`,\n  SETTINGS: () => `settings`,\n  AUDIO_TRACKS: () => `audio tracks`,\n  QUALITY: () => `quality`\n};\nvar verbs = {\n  PLAY: () => \"play\",\n  PAUSE: () => \"pause\",\n  MUTE: () => \"mute\",\n  UNMUTE: () => \"unmute\",\n  ENTER_AIRPLAY: () => \"start airplay\",\n  EXIT_AIRPLAY: () => \"stop airplay\",\n  ENTER_CAST: () => \"start casting\",\n  EXIT_CAST: () => \"stop casting\",\n  ENTER_FULLSCREEN: () => \"enter fullscreen mode\",\n  EXIT_FULLSCREEN: () => \"exit fullscreen mode\",\n  ENTER_PIP: () => \"enter picture in picture mode\",\n  EXIT_PIP: () => \"exit picture in picture mode\",\n  SEEK_FORWARD_N_SECS: ({ seekOffset = 30 } = {}) => `seek forward ${seekOffset} seconds`,\n  SEEK_BACK_N_SECS: ({ seekOffset = 30 } = {}) => `seek back ${seekOffset} seconds`,\n  SEEK_LIVE: () => \"seek to live\",\n  PLAYING_LIVE: () => \"playing live\"\n};\nvar labels_default = __spreadValues(__spreadValues({}, nouns), verbs);\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/utils.js\nfunction stringifyRenditionList(renditions) {\n  return renditions == null ? void 0 : renditions.map(stringifyRendition).join(\" \");\n}\nfunction parseRenditionList(renditions) {\n  return renditions == null ? void 0 : renditions.split(/\\s+/).map(parseRendition);\n}\nfunction stringifyRendition(rendition) {\n  if (rendition) {\n    const { id, width, height } = rendition;\n    return [id, width, height].filter((a2) => a2 != null).join(\":\");\n  }\n}\nfunction parseRendition(rendition) {\n  if (rendition) {\n    const [id, width, height] = rendition.split(\":\");\n    return { id, width, height };\n  }\n}\nfunction stringifyAudioTrackList(audioTracks) {\n  return audioTracks == null ? void 0 : audioTracks.map(stringifyAudioTrack).join(\" \");\n}\nfunction parseAudioTrackList(audioTracks) {\n  return audioTracks == null ? void 0 : audioTracks.split(/\\s+/).map(parseAudioTrack);\n}\nfunction stringifyAudioTrack(audioTrack) {\n  if (audioTrack) {\n    const { id, kind, language, label } = audioTrack;\n    return [id, kind, language, label].filter((a2) => a2 != null).join(\":\");\n  }\n}\nfunction parseAudioTrack(audioTrack) {\n  if (audioTrack) {\n    const [id, kind, language, label] = audioTrack.split(\":\");\n    return { id, kind, language, label };\n  }\n}\nfunction camelCase(name) {\n  return name.replace(/[-_]([a-z])/g, ($0, $1) => $1.toUpperCase());\n}\nfunction isValidNumber(x4) {\n  return typeof x4 === \"number\" && !Number.isNaN(x4) && Number.isFinite(x4);\n}\nfunction isNumericString(str) {\n  if (typeof str != \"string\")\n    return false;\n  return !isNaN(str) && !isNaN(parseFloat(str));\n}\nvar delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/time.js\nvar UnitLabels = [\n  {\n    singular: \"hour\",\n    plural: \"hours\"\n  },\n  {\n    singular: \"minute\",\n    plural: \"minutes\"\n  },\n  {\n    singular: \"second\",\n    plural: \"seconds\"\n  }\n];\nvar toTimeUnitPhrase = (timeUnitValue, unitIndex) => {\n  const unitLabel = timeUnitValue === 1 ? UnitLabels[unitIndex].singular : UnitLabels[unitIndex].plural;\n  return `${timeUnitValue} ${unitLabel}`;\n};\nvar formatAsTimePhrase = (seconds) => {\n  if (!isValidNumber(seconds))\n    return \"\";\n  const positiveSeconds = Math.abs(seconds);\n  const negative = positiveSeconds !== seconds;\n  const secondsDateTime = new Date(0, 0, 0, 0, 0, positiveSeconds, 0);\n  const timeParts = [\n    secondsDateTime.getHours(),\n    secondsDateTime.getMinutes(),\n    secondsDateTime.getSeconds()\n  ];\n  const timeString = timeParts.map(\n    (timeUnitValue, index) => timeUnitValue && toTimeUnitPhrase(timeUnitValue, index)\n  ).filter((x4) => x4).join(\", \");\n  const negativeSuffix = negative ? \" remaining\" : \"\";\n  return `${timeString}${negativeSuffix}`;\n};\nfunction formatTime(seconds, guide) {\n  let negative = false;\n  if (seconds < 0) {\n    negative = true;\n    seconds = 0 - seconds;\n  }\n  seconds = seconds < 0 ? 0 : seconds;\n  let s = Math.floor(seconds % 60);\n  let m3 = Math.floor(seconds / 60 % 60);\n  let h3 = Math.floor(seconds / 3600);\n  const gm = Math.floor(guide / 60 % 60);\n  const gh = Math.floor(guide / 3600);\n  if (isNaN(seconds) || seconds === Infinity) {\n    h3 = m3 = s = \"0\";\n  }\n  h3 = h3 > 0 || gh > 0 ? h3 + \":\" : \"\";\n  m3 = ((h3 || gm >= 10) && m3 < 10 ? \"0\" + m3 : m3) + \":\";\n  s = s < 10 ? \"0\" + s : s;\n  return (negative ? \"-\" : \"\") + h3 + m3 + s;\n}\nvar emptyTimeRanges = Object.freeze({\n  length: 0,\n  start(index) {\n    const unsignedIdx = index >>> 0;\n    if (unsignedIdx >= this.length) {\n      throw new DOMException(\n        `Failed to execute 'start' on 'TimeRanges': The index provided (${unsignedIdx}) is greater than or equal to the maximum bound (${this.length}).`\n      );\n    }\n    return 0;\n  },\n  end(index) {\n    const unsignedIdx = index >>> 0;\n    if (unsignedIdx >= this.length) {\n      throw new DOMException(\n        `Failed to execute 'end' on 'TimeRanges': The index provided (${unsignedIdx}) is greater than or equal to the maximum bound (${this.length}).`\n      );\n    }\n    return 0;\n  }\n});\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/server-safe-globals.js\nvar EventTarget2 = class {\n  addEventListener() {\n  }\n  removeEventListener() {\n  }\n  dispatchEvent() {\n    return true;\n  }\n};\nvar Node = class extends EventTarget2 {\n};\nvar ResizeObserver = class {\n  observe() {\n  }\n  unobserve() {\n  }\n  disconnect() {\n  }\n};\nvar documentShim = {\n  createElement: function() {\n    return new globalThisShim.HTMLElement();\n  },\n  createElementNS: function() {\n    return new globalThisShim.HTMLElement();\n  },\n  addEventListener() {\n  },\n  removeEventListener() {\n  },\n  /**\n   *\n   * @param {Event} event\n   * @returns {boolean}\n   */\n  dispatchEvent(event) {\n    return false;\n  }\n};\nvar globalThisShim = {\n  ResizeObserver,\n  document: documentShim,\n  Node,\n  HTMLElement: class HTMLElement2 extends Node {\n  },\n  DocumentFragment: class DocumentFragment2 extends EventTarget2 {\n  },\n  customElements: {\n    get: function() {\n    },\n    define: function() {\n    },\n    whenDefined: function() {\n    }\n  },\n  localStorage: {\n    /**\n     * @param {string} key\n     * @returns {string|null}\n     */\n    getItem(key) {\n      return null;\n    },\n    /**\n     * @param {string} key\n     * @param {string} value\n     */\n    setItem(key, value) {\n    },\n    // eslint-disable-line no-unused-vars\n    /**\n     * @param {string} key\n     */\n    removeItem(key) {\n    }\n    // eslint-disable-line no-unused-vars\n  },\n  CustomEvent: function CustomEvent2() {\n  },\n  getComputedStyle: function() {\n  },\n  navigator: {\n    languages: [],\n    get userAgent() {\n      return \"\";\n    }\n  },\n  /**\n   * @param {string} media\n   */\n  matchMedia(media) {\n    return {\n      matches: false,\n      media\n    };\n  }\n};\nvar isServer = typeof window === \"undefined\" || typeof window.customElements === \"undefined\";\nvar isShimmed = Object.keys(globalThisShim).every((key) => key in globalThis);\nvar GlobalThis = isServer && !isShimmed ? globalThisShim : globalThis;\nvar Document2 = isServer && !isShimmed ? documentShim : globalThis.document;\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/resize-observer.js\nvar callbacksMap = /* @__PURE__ */ new WeakMap();\nvar getCallbacks = (element) => {\n  let callbacks = callbacksMap.get(element);\n  if (!callbacks)\n    callbacksMap.set(element, callbacks = /* @__PURE__ */ new Set());\n  return callbacks;\n};\nvar observer = new GlobalThis.ResizeObserver((entries) => {\n  for (let entry of entries) {\n    for (let callback of getCallbacks(entry.target)) {\n      callback(entry);\n    }\n  }\n});\nfunction observeResize(element, callback) {\n  getCallbacks(element).add(callback);\n  observer.observe(element);\n}\nfunction unobserveResize(element, callback) {\n  const callbacks = getCallbacks(element);\n  callbacks.delete(callback);\n  if (!callbacks.size) {\n    observer.unobserve(element);\n  }\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/element-utils.js\nfunction getMediaController(host) {\n  var _a3;\n  return (_a3 = getAttributeMediaController(host)) != null ? _a3 : closestComposedNode(host, \"media-controller\");\n}\nfunction getAttributeMediaController(host) {\n  var _a3;\n  const { MEDIA_CONTROLLER } = MediaStateReceiverAttributes;\n  const mediaControllerId = host.getAttribute(MEDIA_CONTROLLER);\n  if (mediaControllerId) {\n    return (\n      /** @type MediaController */\n      /** @type {unknown} */\n      (_a3 = getDocumentOrShadowRoot(host)) == null ? void 0 : _a3.getElementById(mediaControllerId)\n    );\n  }\n}\nvar updateIconText = (svg, value, selector = \".value\") => {\n  const node = svg.querySelector(selector);\n  if (!node)\n    return;\n  node.textContent = value;\n};\nvar getAllSlotted = (el, name) => {\n  const slotSelector = `slot[name=\"${name}\"]`;\n  const slot = el.shadowRoot.querySelector(slotSelector);\n  if (!slot)\n    return [];\n  return slot.children;\n};\nvar getSlotted = (el, name) => getAllSlotted(el, name)[0];\nvar containsComposedNode = (rootNode, childNode) => {\n  if (!rootNode || !childNode)\n    return false;\n  if (rootNode == null ? void 0 : rootNode.contains(childNode))\n    return true;\n  return containsComposedNode(\n    rootNode,\n    /** @type {ShadowRoot} */\n    childNode.getRootNode().host\n  );\n};\nvar closestComposedNode = (childNode, selector) => {\n  if (!childNode)\n    return null;\n  const closest = childNode.closest(selector);\n  if (closest)\n    return closest;\n  return closestComposedNode(childNode.getRootNode().host, selector);\n};\nfunction getActiveElement(root = document) {\n  var _a3;\n  const activeEl = root == null ? void 0 : root.activeElement;\n  if (!activeEl)\n    return null;\n  return (_a3 = getActiveElement(activeEl.shadowRoot)) != null ? _a3 : activeEl;\n}\nfunction getDocumentOrShadowRoot(node) {\n  var _a3;\n  const rootNode = (_a3 = node == null ? void 0 : node.getRootNode) == null ? void 0 : _a3.call(node);\n  if (rootNode instanceof ShadowRoot || rootNode instanceof Document) {\n    return rootNode;\n  }\n  return null;\n}\nfunction isElementVisible(element, depth = 3) {\n  if (element.checkVisibility) {\n    return element.checkVisibility({\n      checkOpacity: true,\n      checkVisibilityCSS: true\n    });\n  }\n  let el = element;\n  while (el && depth > 0) {\n    const style = getComputedStyle(el);\n    if (style.opacity === \"0\" || style.visibility === \"hidden\" || style.display === \"none\") {\n      return false;\n    }\n    el = el.parentElement;\n    depth--;\n  }\n  return true;\n}\nfunction getPointProgressOnLine(x4, y5, p1, p22) {\n  const segment = distance(p1, p22);\n  const toStart = distance(p1, { x: x4, y: y5 });\n  const toEnd = distance(p22, { x: x4, y: y5 });\n  if (toStart > segment || toEnd > segment) {\n    return toStart > toEnd ? 1 : 0;\n  }\n  return toStart / segment;\n}\nfunction distance(p1, p22) {\n  return Math.sqrt(Math.pow(p22.x - p1.x, 2) + Math.pow(p22.y - p1.y, 2));\n}\nfunction getOrInsertCSSRule(styleParent, selectorText) {\n  const cssRule = getCSSRule(styleParent, (st4) => st4 === selectorText);\n  if (cssRule)\n    return cssRule;\n  return insertCSSRule(styleParent, selectorText);\n}\nfunction getCSSRule(styleParent, predicate) {\n  var _a3;\n  let style;\n  for (style of styleParent.querySelectorAll(\"style\")) {\n    let cssRules;\n    try {\n      cssRules = (_a3 = style.sheet) == null ? void 0 : _a3.cssRules;\n    } catch (e) {\n      continue;\n    }\n    for (let rule of cssRules != null ? cssRules : []) {\n      if (predicate(rule.selectorText))\n        return rule;\n    }\n  }\n}\nfunction insertCSSRule(styleParent, selectorText) {\n  var _a3, _b;\n  const styles = (_a3 = styleParent.querySelectorAll(\"style\")) != null ? _a3 : [];\n  const style = styles == null ? void 0 : styles[styles.length - 1];\n  if (!(style == null ? void 0 : style.sheet)) {\n    console.warn(\n      \"Media Chrome: No style sheet found on style tag of\",\n      styleParent\n    );\n    return {\n      // @ts-ignore\n      style: {\n        setProperty: () => {\n        },\n        removeProperty: () => \"\",\n        getPropertyValue: () => \"\"\n      }\n    };\n  }\n  style == null ? void 0 : style.sheet.insertRule(`${selectorText}{}`, style.sheet.cssRules.length);\n  return (\n    /** @type {CSSStyleRule} */\n    (_b = style.sheet.cssRules) == null ? void 0 : _b[style.sheet.cssRules.length - 1]\n  );\n}\nfunction getNumericAttr(el, attrName, defaultValue = Number.NaN) {\n  const attrVal = el.getAttribute(attrName);\n  return attrVal != null ? +attrVal : defaultValue;\n}\nfunction setNumericAttr(el, attrName, value) {\n  const nextNumericValue = +value;\n  if (value == null || Number.isNaN(nextNumericValue)) {\n    if (el.hasAttribute(attrName)) {\n      el.removeAttribute(attrName);\n    }\n    return;\n  }\n  if (getNumericAttr(el, attrName, void 0) === nextNumericValue)\n    return;\n  el.setAttribute(attrName, `${nextNumericValue}`);\n}\nfunction getBooleanAttr(el, attrName) {\n  return el.hasAttribute(attrName);\n}\nfunction setBooleanAttr(el, attrName, value) {\n  if (value == null) {\n    if (el.hasAttribute(attrName)) {\n      el.removeAttribute(attrName);\n    }\n    return;\n  }\n  if (getBooleanAttr(el, attrName) == value)\n    return;\n  el.toggleAttribute(attrName, value);\n}\nfunction getStringAttr(el, attrName, defaultValue = null) {\n  var _a3;\n  return (_a3 = el.getAttribute(attrName)) != null ? _a3 : defaultValue;\n}\nfunction setStringAttr(el, attrName, value) {\n  if (value == null) {\n    if (el.hasAttribute(attrName)) {\n      el.removeAttribute(attrName);\n    }\n    return;\n  }\n  const nextValue = `${value}`;\n  if (getStringAttr(el, attrName, void 0) === nextValue)\n    return;\n  el.setAttribute(attrName, nextValue);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-gesture-receiver.js\nvar __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n  __accessCheck(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _mediaController;\nvar template = Document2.createElement(\"template\");\ntemplate.innerHTML = /*html*/\n`\n<style>\n  :host {\n    display: var(--media-control-display, var(--media-gesture-receiver-display, inline-block));\n    box-sizing: border-box;\n  }\n</style>\n`;\nvar MediaGestureReceiver = class extends GlobalThis.HTMLElement {\n  constructor(options = {}) {\n    super();\n    __privateAdd(this, _mediaController, void 0);\n    if (!this.shadowRoot) {\n      const shadow = this.attachShadow({ mode: \"open\" });\n      const buttonHTML = template.content.cloneNode(true);\n      this.nativeEl = buttonHTML;\n      let slotTemplate20 = options.slotTemplate;\n      if (!slotTemplate20) {\n        slotTemplate20 = Document2.createElement(\"template\");\n        slotTemplate20.innerHTML = `<slot>${options.defaultContent || \"\"}</slot>`;\n      }\n      this.nativeEl.appendChild(slotTemplate20.content.cloneNode(true));\n      shadow.appendChild(buttonHTML);\n    }\n  }\n  // NOTE: Currently \"baking in\" actions + attrs until we come up with\n  // a more robust architecture (CJP)\n  static get observedAttributes() {\n    return [\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER,\n      MediaUIAttributes.MEDIA_PAUSED\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet(this, _mediaController)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet(this, _mediaController, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet(this, _mediaController, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet(this, _mediaController)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c, _d;\n    this.tabIndex = -1;\n    this.setAttribute(\"aria-hidden\", \"true\");\n    __privateSet(this, _mediaController, getMediaControllerEl(this));\n    if (this.getAttribute(MediaStateReceiverAttributes.MEDIA_CONTROLLER)) {\n      (_b = (_a3 = __privateGet(this, _mediaController)) == null ? void 0 : _a3.associateElement) == null ? void 0 : _b.call(_a3, this);\n    }\n    (_c = __privateGet(this, _mediaController)) == null ? void 0 : _c.addEventListener(\"pointerdown\", this);\n    (_d = __privateGet(this, _mediaController)) == null ? void 0 : _d.addEventListener(\"click\", this);\n  }\n  disconnectedCallback() {\n    var _a3, _b, _c, _d;\n    if (this.getAttribute(MediaStateReceiverAttributes.MEDIA_CONTROLLER)) {\n      (_b = (_a3 = __privateGet(this, _mediaController)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    }\n    (_c = __privateGet(this, _mediaController)) == null ? void 0 : _c.removeEventListener(\"pointerdown\", this);\n    (_d = __privateGet(this, _mediaController)) == null ? void 0 : _d.removeEventListener(\"click\", this);\n    __privateSet(this, _mediaController, null);\n  }\n  handleEvent(event) {\n    var _a3;\n    const composedTarget = (_a3 = event.composedPath()) == null ? void 0 : _a3[0];\n    const allowList = [\"video\", \"media-controller\"];\n    if (!allowList.includes(composedTarget == null ? void 0 : composedTarget.localName))\n      return;\n    if (event.type === \"pointerdown\") {\n      this._pointerType = event.pointerType;\n    } else if (event.type === \"click\") {\n      const { clientX, clientY } = event;\n      const { left, top, width, height } = this.getBoundingClientRect();\n      const x4 = clientX - left;\n      const y5 = clientY - top;\n      if (x4 < 0 || y5 < 0 || x4 > width || y5 > height || // In case this element has no dimensions (or display: none) return.\n      width === 0 && height === 0) {\n        return;\n      }\n      const { pointerType = this._pointerType } = event;\n      this._pointerType = void 0;\n      if (pointerType === PointerTypes.TOUCH) {\n        this.handleTap(event);\n        return;\n      } else if (pointerType === PointerTypes.MOUSE) {\n        this.handleMouseClick(event);\n        return;\n      }\n    }\n  }\n  /**\n   * @type {boolean} Is the media paused\n   */\n  get mediaPaused() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED);\n  }\n  set mediaPaused(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED, value);\n  }\n  // NOTE: Currently \"baking in\" actions + attrs until we come up with\n  // a more robust architecture (CJP)\n  /**\n   * @abstract\n   * @argument {Event} e\n   */\n  handleTap(e) {\n  }\n  // eslint-disable-line\n  // eslint-disable-next-line\n  handleMouseClick(e) {\n    const eventName = this.mediaPaused ? MediaUIEvents.MEDIA_PLAY_REQUEST : MediaUIEvents.MEDIA_PAUSE_REQUEST;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(eventName, { composed: true, bubbles: true })\n    );\n  }\n};\n_mediaController = /* @__PURE__ */ new WeakMap();\nfunction getMediaControllerEl(controlEl) {\n  var _a3;\n  const mediaControllerId = controlEl.getAttribute(\n    MediaStateReceiverAttributes.MEDIA_CONTROLLER\n  );\n  if (mediaControllerId) {\n    return (_a3 = controlEl.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId);\n  }\n  return closestComposedNode(controlEl, \"media-controller\");\n}\nif (!GlobalThis.customElements.get(\"media-gesture-receiver\")) {\n  GlobalThis.customElements.define(\n    \"media-gesture-receiver\",\n    MediaGestureReceiver\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-container.js\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n  __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck2 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet2 = (obj, member, getter) => {\n  __accessCheck2(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd2 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet2 = (obj, member, value, setter) => {\n  __accessCheck2(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod = (obj, member, method) => {\n  __accessCheck2(obj, member, \"access private method\");\n  return method;\n};\nvar _pointerDownTimeStamp;\nvar _currentMedia;\nvar _handlePointerMove;\nvar handlePointerMove_fn;\nvar _handlePointerUp;\nvar handlePointerUp_fn;\nvar _setInactive;\nvar setInactive_fn;\nvar _setActive;\nvar setActive_fn;\nvar _scheduleInactive;\nvar scheduleInactive_fn;\nvar Attributes = {\n  AUDIO: \"audio\",\n  AUTOHIDE: \"autohide\",\n  BREAKPOINTS: \"breakpoints\",\n  GESTURES_DISABLED: \"gesturesdisabled\",\n  KEYBOARD_CONTROL: \"keyboardcontrol\",\n  NO_AUTOHIDE: \"noautohide\",\n  USER_INACTIVE: \"userinactive\"\n};\nvar template2 = Document2.createElement(\"template\");\ntemplate2.innerHTML = /*html*/\n`\n  <style>\n    ${/*\n* outline on media is turned off because it is allowed to get focus to faciliate hotkeys.\n* However, on keyboard interactions, the focus outline is shown,\n* which is particularly noticeable when going fullscreen via hotkeys.\n*/\n\"\"}\n    :host([${MediaUIAttributes.MEDIA_IS_FULLSCREEN}]) ::slotted([slot=media]) {\n      outline: none;\n    }\n\n    :host {\n      box-sizing: border-box;\n      position: relative;\n      display: inline-block;\n      line-height: 0;\n      background-color: var(--media-background-color, #000);\n    }\n\n    :host(:not([${Attributes.AUDIO}])) [part~=layer]:not([part~=media-layer]) {\n      position: absolute;\n      top: 0;\n      left: 0;\n      bottom: 0;\n      right: 0;\n      display: flex;\n      flex-flow: column nowrap;\n      align-items: start;\n      pointer-events: none;\n      background: none;\n    }\n\n    slot[name=media] {\n      display: var(--media-slot-display, contents);\n    }\n\n    ${/*\n* when in audio mode, hide the slotted media element by default\n*/\n\"\"}\n    :host([${Attributes.AUDIO}]) slot[name=media] {\n      display: var(--media-slot-display, none);\n    }\n\n    ${/*\n* when in audio mode, hide the gesture-layer which causes media-controller to be taller than the control bar\n*/\n\"\"}\n    :host([${Attributes.AUDIO}]) [part~=layer][part~=gesture-layer] {\n      height: 0;\n      display: block;\n    }\n\n    ${/*\n* if gestures are disabled, don't accept pointer-events\n*/\n\"\"}\n    :host(:not([${Attributes.AUDIO}])[${Attributes.GESTURES_DISABLED}]) ::slotted([slot=gestures-chrome]),\n    :host(:not([${Attributes.AUDIO}])[${Attributes.GESTURES_DISABLED}]) media-gesture-receiver[slot=gestures-chrome] {\n      display: none;\n    }\n\n    ${/*\n* any slotted element that isn't a poster or media slot should be pointer-events auto\n* we'll want to add here any slotted elements that shouldn't get pointer-events by default when slotted\n*/\n\"\"}\n    ::slotted(:not([slot=media]):not([slot=poster]):not(media-loading-indicator):not([hidden])) {\n      pointer-events: auto;\n    }\n\n    :host(:not([${Attributes.AUDIO}])) *[part~=layer][part~=centered-layer] {\n      align-items: center;\n      justify-content: center;\n    }\n\n    :host(:not([${Attributes.AUDIO}])) ::slotted(media-gesture-receiver[slot=gestures-chrome]),\n    :host(:not([${Attributes.AUDIO}])) media-gesture-receiver[slot=gestures-chrome] {\n      align-self: stretch;\n      flex-grow: 1;\n    }\n\n    slot[name=middle-chrome] {\n      display: inline;\n      flex-grow: 1;\n      pointer-events: none;\n      background: none;\n    }\n\n    ${/* Position the media and poster elements to fill the container */\n\"\"}\n    ::slotted([slot=media]),\n    ::slotted([slot=poster]) {\n      width: 100%;\n      height: 100%;\n    }\n\n    ${/* Video specific styles */\n\"\"}\n    :host(:not([${Attributes.AUDIO}])) .spacer {\n      flex-grow: 1;\n    }\n\n    ${/* Safari needs this to actually make the element fill the window */\n\"\"}\n    :host(:-webkit-full-screen) {\n      ${/* Needs to use !important otherwise easy to break */\n\"\"}\n      width: 100% !important;\n      height: 100% !important;\n    }\n\n    ${/* Only add these if auto hide is not disabled */\n\"\"}\n    ::slotted(:not([slot=media]):not([slot=poster]):not([${Attributes.NO_AUTOHIDE}]):not([hidden])) {\n      opacity: 1;\n      transition: opacity 0.25s;\n    }\n\n    ${/* Hide controls when inactive, not paused, not audio and auto hide not disabled */\n\"\"}\n    :host([${Attributes.USER_INACTIVE}]:not([${MediaUIAttributes.MEDIA_PAUSED}]):not([${MediaUIAttributes.MEDIA_IS_AIRPLAYING}]):not([${MediaUIAttributes.MEDIA_IS_CASTING}]):not([${Attributes.AUDIO}])) ::slotted(:not([slot=media]):not([slot=poster]):not([${Attributes.NO_AUTOHIDE}])) {\n      opacity: 0;\n      transition: opacity 1s;\n    }\n\n    :host([${Attributes.USER_INACTIVE}]:not([${MediaUIAttributes.MEDIA_PAUSED}]):not([${MediaUIAttributes.MEDIA_IS_CASTING}]):not([${Attributes.AUDIO}])) ::slotted([slot=media]) {\n      cursor: none;\n    }\n\n    ::slotted(media-control-bar)  {\n      align-self: stretch;\n    }\n\n    ${/* ::slotted([slot=poster]) doesn't work for slot fallback content so hide parent slot instead */\n\"\"}\n    :host(:not([${Attributes.AUDIO}])[${MediaUIAttributes.MEDIA_HAS_PLAYED}]) slot[name=poster] {\n      display: none;\n    }\n\n    ::slotted([role=\"menu\"]) {\n      align-self: end;\n    }\n\n    ::slotted([role=\"dialog\"]) {\n      align-self: center;\n    }\n  </style>\n\n  <slot name=\"media\" part=\"layer media-layer\"></slot>\n  <slot name=\"poster\" part=\"layer poster-layer\"></slot>\n  <slot name=\"gestures-chrome\" part=\"layer gesture-layer\">\n    <media-gesture-receiver slot=\"gestures-chrome\"></media-gesture-receiver>\n  </slot>\n  <span part=\"layer vertical-layer\">\n    <slot name=\"top-chrome\" part=\"top chrome\"></slot>\n    <slot name=\"middle-chrome\" part=\"middle chrome\"></slot>\n    <slot name=\"centered-chrome\" part=\"layer centered-layer center centered chrome\"></slot>\n    ${/* default, effectively \"bottom-chrome\" */\n\"\"}\n    <slot part=\"bottom chrome\"></slot>\n  </span>\n`;\nvar MEDIA_UI_ATTRIBUTE_NAMES = Object.values(MediaUIAttributes);\nvar defaultBreakpoints = \"sm:384 md:576 lg:768 xl:960\";\nfunction resizeCallback(entry) {\n  setBreakpoints(entry.target, entry.contentRect.width);\n}\nfunction setBreakpoints(container, width) {\n  var _a3;\n  if (!container.isConnected)\n    return;\n  const breakpoints = (_a3 = container.getAttribute(Attributes.BREAKPOINTS)) != null ? _a3 : defaultBreakpoints;\n  const ranges = createBreakpointMap(breakpoints);\n  const activeBreakpoints = getBreakpoints(ranges, width);\n  let changed = false;\n  Object.keys(ranges).forEach((name) => {\n    if (activeBreakpoints.includes(name)) {\n      if (!container.hasAttribute(`breakpoint${name}`)) {\n        container.setAttribute(`breakpoint${name}`, \"\");\n        changed = true;\n      }\n      return;\n    }\n    if (container.hasAttribute(`breakpoint${name}`)) {\n      container.removeAttribute(`breakpoint${name}`);\n      changed = true;\n    }\n  });\n  if (changed) {\n    const evt = new CustomEvent(MediaStateChangeEvents.BREAKPOINTS_CHANGE, {\n      detail: activeBreakpoints\n    });\n    container.dispatchEvent(evt);\n  }\n}\nfunction createBreakpointMap(breakpoints) {\n  const pairs = breakpoints.split(/\\s+/);\n  return Object.fromEntries(pairs.map((pair) => pair.split(\":\")));\n}\nfunction getBreakpoints(breakpoints, width) {\n  return Object.keys(breakpoints).filter((name) => {\n    return width >= breakpoints[name];\n  });\n}\nvar MediaContainer = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd2(this, _handlePointerMove);\n    __privateAdd2(this, _handlePointerUp);\n    __privateAdd2(this, _setInactive);\n    __privateAdd2(this, _setActive);\n    __privateAdd2(this, _scheduleInactive);\n    __privateAdd2(this, _pointerDownTimeStamp, 0);\n    __privateAdd2(this, _currentMedia, void 0);\n    __publicField(this, \"breakpointsComputed\", false);\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template2.content.cloneNode(true));\n    }\n    const mutationCallback = (mutationsList) => {\n      const media = this.media;\n      for (let mutation of mutationsList) {\n        if (mutation.type === \"childList\") {\n          mutation.removedNodes.forEach((node) => {\n            if (node.slot == \"media\" && mutation.target == this) {\n              let previousSibling = mutation.previousSibling && mutation.previousSibling.previousElementSibling;\n              if (!previousSibling || !media) {\n                this.mediaUnsetCallback(node);\n              } else {\n                let wasFirst = previousSibling.slot !== \"media\";\n                while ((previousSibling = previousSibling.previousSibling) !== null) {\n                  if (previousSibling.slot == \"media\")\n                    wasFirst = false;\n                }\n                if (wasFirst)\n                  this.mediaUnsetCallback(node);\n              }\n            }\n          });\n          if (media) {\n            mutation.addedNodes.forEach((node) => {\n              if (node === media) {\n                this.handleMediaUpdated(media);\n              }\n            });\n          }\n        }\n      }\n    };\n    const mutationObserver = new MutationObserver(mutationCallback);\n    mutationObserver.observe(this, { childList: true, subtree: true });\n    let pendingResizeCb = false;\n    const deferResizeCallback = (entry) => {\n      if (pendingResizeCb)\n        return;\n      setTimeout(() => {\n        resizeCallback(entry);\n        pendingResizeCb = false;\n        if (!this.breakpointsComputed) {\n          this.breakpointsComputed = true;\n          this.dispatchEvent(\n            new CustomEvent(MediaStateChangeEvents.BREAKPOINTS_COMPUTED, {\n              bubbles: true,\n              composed: true\n            })\n          );\n        }\n      }, 0);\n      pendingResizeCb = true;\n    };\n    observeResize(this, deferResizeCallback);\n    let chainedSlot = this.querySelector(\":scope > slot[slot=media]\");\n    if (chainedSlot) {\n      chainedSlot.addEventListener(\"slotchange\", () => {\n        const slotEls = chainedSlot.assignedElements({ flatten: true });\n        if (!slotEls.length) {\n          if (__privateGet2(this, _currentMedia)) {\n            this.mediaUnsetCallback(__privateGet2(this, _currentMedia));\n          }\n          return;\n        }\n        this.handleMediaUpdated(this.media);\n      });\n    }\n  }\n  static get observedAttributes() {\n    return [Attributes.AUTOHIDE, Attributes.GESTURES_DISABLED].concat(MEDIA_UI_ATTRIBUTE_NAMES).filter(\n      (name) => ![\n        MediaUIAttributes.MEDIA_RENDITION_LIST,\n        MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST,\n        MediaUIAttributes.MEDIA_CHAPTERS_CUES\n      ].includes(name)\n    );\n  }\n  // Could share this code with media-chrome-html-element instead\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName.toLowerCase() == Attributes.AUTOHIDE) {\n      this.autohide = newValue;\n    }\n  }\n  // First direct child with slot=media, or null\n  /**\n   * @returns {HTMLVideoElement &\n   * {buffered,\n   * webkitEnterFullscreen?,\n   * webkitExitFullscreen?,\n   * requestCast?,\n   * webkitShowPlaybackTargetPicker?,\n   * videoTracks?,\n   * }}\n   */\n  get media() {\n    let media = this.querySelector(\":scope > [slot=media]\");\n    if ((media == null ? void 0 : media.nodeName) == \"SLOT\")\n      media = media.assignedElements({ flatten: true })[0];\n    return media;\n  }\n  /**\n   * @param {HTMLMediaElement} media\n   */\n  handleMediaUpdated(media) {\n    return __async(this, null, function* () {\n      if (!media)\n        return;\n      __privateSet2(this, _currentMedia, media);\n      if (media.localName.includes(\"-\")) {\n        yield GlobalThis.customElements.whenDefined(media.localName);\n      }\n      this.mediaSetCallback(media);\n    });\n  }\n  connectedCallback() {\n    var _a3;\n    const isAudioChrome = this.getAttribute(Attributes.AUDIO) != null;\n    const label = isAudioChrome ? nouns.AUDIO_PLAYER() : nouns.VIDEO_PLAYER();\n    this.setAttribute(\"role\", \"region\");\n    this.setAttribute(\"aria-label\", label);\n    this.handleMediaUpdated(this.media);\n    this.setAttribute(Attributes.USER_INACTIVE, \"\");\n    this.addEventListener(\"pointerdown\", this);\n    this.addEventListener(\"pointermove\", this);\n    this.addEventListener(\"pointerup\", this);\n    this.addEventListener(\"mouseleave\", this);\n    this.addEventListener(\"keyup\", this);\n    (_a3 = GlobalThis.window) == null ? void 0 : _a3.addEventListener(\"mouseup\", this);\n  }\n  disconnectedCallback() {\n    var _a3;\n    if (this.media) {\n      this.mediaUnsetCallback(this.media);\n    }\n    (_a3 = GlobalThis.window) == null ? void 0 : _a3.removeEventListener(\"mouseup\", this);\n  }\n  /**\n   * @abstract\n   * @param {HTMLMediaElement} media\n   */\n  mediaSetCallback(media) {\n  }\n  // eslint-disable-line\n  /**\n   * @param {HTMLMediaElement} media\n   */\n  mediaUnsetCallback(media) {\n    __privateSet2(this, _currentMedia, null);\n  }\n  handleEvent(event) {\n    switch (event.type) {\n      case \"pointerdown\":\n        __privateSet2(this, _pointerDownTimeStamp, event.timeStamp);\n        break;\n      case \"pointermove\":\n        __privateMethod(this, _handlePointerMove, handlePointerMove_fn).call(this, event);\n        break;\n      case \"pointerup\":\n        __privateMethod(this, _handlePointerUp, handlePointerUp_fn).call(this, event);\n        break;\n      case \"mouseleave\":\n        __privateMethod(this, _setInactive, setInactive_fn).call(this);\n        break;\n      case \"mouseup\":\n        this.removeAttribute(Attributes.KEYBOARD_CONTROL);\n        break;\n      case \"keyup\":\n        __privateMethod(this, _scheduleInactive, scheduleInactive_fn).call(this);\n        this.setAttribute(Attributes.KEYBOARD_CONTROL, \"\");\n        break;\n    }\n  }\n  set autohide(seconds) {\n    seconds = Number(seconds);\n    this._autohide = isNaN(seconds) ? 0 : seconds;\n  }\n  get autohide() {\n    return this._autohide === void 0 ? 2 : this._autohide;\n  }\n};\n_pointerDownTimeStamp = /* @__PURE__ */ new WeakMap();\n_currentMedia = /* @__PURE__ */ new WeakMap();\n_handlePointerMove = /* @__PURE__ */ new WeakSet();\nhandlePointerMove_fn = function(event) {\n  if (event.pointerType !== \"mouse\") {\n    const MAX_TAP_DURATION = 250;\n    if (event.timeStamp - __privateGet2(this, _pointerDownTimeStamp) < MAX_TAP_DURATION)\n      return;\n  }\n  __privateMethod(this, _setActive, setActive_fn).call(this);\n  clearTimeout(this._inactiveTimeout);\n  if ([this, this.media].includes(event.target)) {\n    __privateMethod(this, _scheduleInactive, scheduleInactive_fn).call(this);\n  }\n};\n_handlePointerUp = /* @__PURE__ */ new WeakSet();\nhandlePointerUp_fn = function(event) {\n  if (event.pointerType === \"touch\") {\n    const controlsVisible = !this.hasAttribute(Attributes.USER_INACTIVE);\n    if ([this, this.media].includes(event.target) && controlsVisible) {\n      __privateMethod(this, _setInactive, setInactive_fn).call(this);\n    } else {\n      __privateMethod(this, _scheduleInactive, scheduleInactive_fn).call(this);\n    }\n  } else if (event.composedPath().some(\n    (el) => [\"media-play-button\", \"media-fullscreen-button\"].includes(\n      el == null ? void 0 : el.localName\n    )\n  )) {\n    __privateMethod(this, _scheduleInactive, scheduleInactive_fn).call(this);\n  }\n};\n_setInactive = /* @__PURE__ */ new WeakSet();\nsetInactive_fn = function() {\n  if (this.autohide < 0)\n    return;\n  if (this.hasAttribute(Attributes.USER_INACTIVE))\n    return;\n  this.setAttribute(Attributes.USER_INACTIVE, \"\");\n  const evt = new GlobalThis.CustomEvent(\n    MediaStateChangeEvents.USER_INACTIVE,\n    { composed: true, bubbles: true, detail: true }\n  );\n  this.dispatchEvent(evt);\n};\n_setActive = /* @__PURE__ */ new WeakSet();\nsetActive_fn = function() {\n  if (!this.hasAttribute(Attributes.USER_INACTIVE))\n    return;\n  this.removeAttribute(Attributes.USER_INACTIVE);\n  const evt = new GlobalThis.CustomEvent(\n    MediaStateChangeEvents.USER_INACTIVE,\n    { composed: true, bubbles: true, detail: false }\n  );\n  this.dispatchEvent(evt);\n};\n_scheduleInactive = /* @__PURE__ */ new WeakSet();\nscheduleInactive_fn = function() {\n  __privateMethod(this, _setActive, setActive_fn).call(this);\n  clearTimeout(this._inactiveTimeout);\n  if (this.autohide < 0)\n    return;\n  this._inactiveTimeout = setTimeout(() => {\n    __privateMethod(this, _setInactive, setInactive_fn).call(this);\n  }, this.autohide * 1e3);\n};\nif (!GlobalThis.customElements.get(\"media-container\")) {\n  GlobalThis.customElements.define(\"media-container\", MediaContainer);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/attribute-token-list.js\nvar __accessCheck3 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet3 = (obj, member, getter) => {\n  __accessCheck3(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd3 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet3 = (obj, member, value, setter) => {\n  __accessCheck3(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _el;\nvar _attr;\nvar _defaultSet;\nvar _tokenSet;\nvar _tokens;\nvar tokens_get;\nvar AttributeTokenList = class {\n  constructor(el, attr, { defaultValue } = { defaultValue: void 0 }) {\n    __privateAdd3(this, _tokens);\n    __privateAdd3(this, _el, void 0);\n    __privateAdd3(this, _attr, void 0);\n    __privateAdd3(this, _defaultSet, void 0);\n    __privateAdd3(this, _tokenSet, /* @__PURE__ */ new Set());\n    __privateSet3(this, _el, el);\n    __privateSet3(this, _attr, attr);\n    __privateSet3(this, _defaultSet, new Set(defaultValue));\n  }\n  [Symbol.iterator]() {\n    return __privateGet3(this, _tokens, tokens_get).values();\n  }\n  get length() {\n    return __privateGet3(this, _tokens, tokens_get).size;\n  }\n  get value() {\n    var _a3;\n    return (_a3 = [...__privateGet3(this, _tokens, tokens_get)].join(\" \")) != null ? _a3 : \"\";\n  }\n  set value(val) {\n    var _a3;\n    if (val === this.value)\n      return;\n    __privateSet3(this, _tokenSet, /* @__PURE__ */ new Set());\n    this.add(...(_a3 = val == null ? void 0 : val.split(\" \")) != null ? _a3 : []);\n  }\n  toString() {\n    return this.value;\n  }\n  item(index) {\n    return [...__privateGet3(this, _tokens, tokens_get)][index];\n  }\n  values() {\n    return __privateGet3(this, _tokens, tokens_get).values();\n  }\n  forEach(callback) {\n    __privateGet3(this, _tokens, tokens_get).forEach(callback);\n  }\n  add(...tokens) {\n    var _a3, _b;\n    tokens.forEach((t2) => __privateGet3(this, _tokenSet).add(t2));\n    if (this.value === \"\" && !((_a3 = __privateGet3(this, _el)) == null ? void 0 : _a3.hasAttribute(`${__privateGet3(this, _attr)}`))) {\n      return;\n    }\n    (_b = __privateGet3(this, _el)) == null ? void 0 : _b.setAttribute(`${__privateGet3(this, _attr)}`, `${this.value}`);\n  }\n  remove(...tokens) {\n    var _a3;\n    tokens.forEach((t2) => __privateGet3(this, _tokenSet).delete(t2));\n    (_a3 = __privateGet3(this, _el)) == null ? void 0 : _a3.setAttribute(`${__privateGet3(this, _attr)}`, `${this.value}`);\n  }\n  contains(token) {\n    return __privateGet3(this, _tokens, tokens_get).has(token);\n  }\n  toggle(token, force) {\n    if (typeof force !== \"undefined\") {\n      if (force) {\n        this.add(token);\n        return true;\n      } else {\n        this.remove(token);\n        return false;\n      }\n    }\n    if (this.contains(token)) {\n      this.remove(token);\n      return false;\n    }\n    this.add(token);\n    return true;\n  }\n  replace(oldToken, newToken) {\n    this.remove(oldToken);\n    this.add(newToken);\n    return oldToken === newToken;\n  }\n};\n_el = /* @__PURE__ */ new WeakMap();\n_attr = /* @__PURE__ */ new WeakMap();\n_defaultSet = /* @__PURE__ */ new WeakMap();\n_tokenSet = /* @__PURE__ */ new WeakMap();\n_tokens = /* @__PURE__ */ new WeakSet();\ntokens_get = function() {\n  return __privateGet3(this, _tokenSet).size ? __privateGet3(this, _tokenSet) : __privateGet3(this, _defaultSet);\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/captions.js\nvar splitTextTracksStr = (textTracksStr = \"\") => textTracksStr.split(/\\s+/);\nvar parseTextTrackStr = (textTrackStr = \"\") => {\n  let [kind, language, encodedLabel] = textTrackStr.split(\":\");\n  const label = encodedLabel ? decodeURIComponent(encodedLabel) : void 0;\n  kind = kind === \"cc\" ? \"captions\" : \"subtitles\";\n  return {\n    kind,\n    language,\n    label\n  };\n};\nvar parseTextTracksStr = (textTracksStr = \"\", textTrackLikeObj = {}) => {\n  return splitTextTracksStr(textTracksStr).map((textTrackStr) => {\n    const textTrackObj = parseTextTrackStr(textTrackStr);\n    return __spreadValues(__spreadValues({}, textTrackLikeObj), textTrackObj);\n  });\n};\nvar parseTracks = (trackOrTracks) => {\n  if (!trackOrTracks)\n    return [];\n  if (Array.isArray(trackOrTracks)) {\n    return trackOrTracks.map((trackObjOrStr) => {\n      if (typeof trackObjOrStr === \"string\") {\n        return parseTextTrackStr(trackObjOrStr);\n      }\n      return trackObjOrStr;\n    });\n  }\n  if (typeof trackOrTracks === \"string\") {\n    return parseTextTracksStr(trackOrTracks);\n  }\n  return [trackOrTracks];\n};\nvar formatTextTrackObj = ({ kind, label, language } = { kind: \"subtitles\" }) => {\n  if (!label)\n    return language;\n  return `${kind === \"captions\" ? \"cc\" : \"sb\"}:${language}:${encodeURIComponent(\n    label\n  )}`;\n};\nvar stringifyTextTrackList = (textTracks = []) => {\n  return Array.prototype.map.call(textTracks, formatTextTrackObj).join(\" \");\n};\nvar isMatchingPropOf = (key, value) => (obj) => obj[key] === value;\nvar textTrackObjAsPred = (filterObj) => {\n  const preds = Object.entries(filterObj).map(([key, value]) => {\n    return isMatchingPropOf(key, value);\n  });\n  return (textTrack) => preds.every((pred) => pred(textTrack));\n};\nvar updateTracksModeTo = (mode, tracks = [], tracksToUpdate = []) => {\n  const preds = parseTracks(tracksToUpdate).map(textTrackObjAsPred);\n  const isTrackToUpdate = (textTrack) => {\n    return preds.some((pred) => pred(textTrack));\n  };\n  Array.from(tracks).filter(isTrackToUpdate).forEach((textTrack) => {\n    textTrack.mode = mode;\n  });\n};\nvar getTextTracksList = (media, filterPredOrObj = () => true) => {\n  if (!(media == null ? void 0 : media.textTracks))\n    return [];\n  const filterPred = typeof filterPredOrObj === \"function\" ? filterPredOrObj : textTrackObjAsPred(filterPredOrObj);\n  return Array.from(media.textTracks).filter(filterPred);\n};\nvar areSubsOn = (el) => {\n  var _a3;\n  const showingSubtitles = !!((_a3 = el.mediaSubtitlesShowing) == null ? void 0 : _a3.length) || el.hasAttribute(MediaUIAttributes.MEDIA_SUBTITLES_SHOWING);\n  return showingSubtitles;\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/fullscreen-api.js\nvar enterFullscreen = (stateOwners) => {\n  var _a3;\n  const { media, fullscreenElement } = stateOwners;\n  const enterFullscreenKey = fullscreenElement && \"requestFullscreen\" in fullscreenElement ? \"requestFullscreen\" : fullscreenElement && \"webkitRequestFullScreen\" in fullscreenElement ? \"webkitRequestFullScreen\" : void 0;\n  if (enterFullscreenKey) {\n    const maybePromise = (_a3 = fullscreenElement[enterFullscreenKey]) == null ? void 0 : _a3.call(fullscreenElement);\n    if (maybePromise instanceof Promise) {\n      return maybePromise.catch(() => {\n      });\n    }\n  } else if (media == null ? void 0 : media.webkitEnterFullscreen) {\n    media.webkitEnterFullscreen();\n  } else if (media == null ? void 0 : media.requestFullscreen) {\n    media.requestFullscreen();\n  }\n};\nvar exitFullscreenKey = \"exitFullscreen\" in Document2 ? \"exitFullscreen\" : \"webkitExitFullscreen\" in Document2 ? \"webkitExitFullscreen\" : \"webkitCancelFullScreen\" in Document2 ? \"webkitCancelFullScreen\" : void 0;\nvar exitFullscreen = (stateOwners) => {\n  var _a3;\n  const { documentElement } = stateOwners;\n  if (exitFullscreenKey) {\n    const maybePromise = (_a3 = documentElement == null ? void 0 : documentElement[exitFullscreenKey]) == null ? void 0 : _a3.call(documentElement);\n    if (maybePromise instanceof Promise) {\n      return maybePromise.catch(() => {\n      });\n    }\n  }\n};\nvar fullscreenElementKey = \"fullscreenElement\" in Document2 ? \"fullscreenElement\" : \"webkitFullscreenElement\" in Document2 ? \"webkitFullscreenElement\" : void 0;\nvar getFullscreenElement = (stateOwners) => {\n  const { documentElement, media } = stateOwners;\n  const docFullscreenElement = documentElement == null ? void 0 : documentElement[fullscreenElementKey];\n  if (!docFullscreenElement && \"webkitDisplayingFullscreen\" in media && \"webkitPresentationMode\" in media && media.webkitDisplayingFullscreen && media.webkitPresentationMode === WebkitPresentationModes.FULLSCREEN) {\n    return media;\n  }\n  return docFullscreenElement;\n};\nvar isFullscreen = (stateOwners) => {\n  var _a3;\n  const { media, documentElement, fullscreenElement = media } = stateOwners;\n  if (!media || !documentElement)\n    return false;\n  const currentFullscreenElement = getFullscreenElement(stateOwners);\n  if (!currentFullscreenElement)\n    return false;\n  if (currentFullscreenElement === fullscreenElement || currentFullscreenElement === media) {\n    return true;\n  }\n  if (currentFullscreenElement.localName.includes(\"-\")) {\n    let currentRoot = currentFullscreenElement.shadowRoot;\n    if (!(fullscreenElementKey in currentRoot)) {\n      return containsComposedNode(\n        currentFullscreenElement,\n        /** @TODO clean up type assumptions (e.g. Node) (CJP) */\n        // @ts-ignore\n        fullscreenElement\n      );\n    }\n    while (currentRoot == null ? void 0 : currentRoot[fullscreenElementKey]) {\n      if (currentRoot[fullscreenElementKey] === fullscreenElement)\n        return true;\n      currentRoot = (_a3 = currentRoot[fullscreenElementKey]) == null ? void 0 : _a3.shadowRoot;\n    }\n  }\n  return false;\n};\nvar fullscreenEnabledKey = \"fullscreenEnabled\" in Document2 ? \"fullscreenEnabled\" : \"webkitFullscreenEnabled\" in Document2 ? \"webkitFullscreenEnabled\" : void 0;\nvar isFullscreenEnabled = (stateOwners) => {\n  const { documentElement, media } = stateOwners;\n  return !!(documentElement == null ? void 0 : documentElement[fullscreenEnabledKey]) || media && \"webkitSupportsFullscreen\" in media;\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/platform-tests.js\nvar testMediaEl;\nvar getTestMediaEl = () => {\n  var _a3, _b;\n  if (testMediaEl)\n    return testMediaEl;\n  testMediaEl = (_b = (_a3 = Document2) == null ? void 0 : _a3.createElement) == null ? void 0 : _b.call(_a3, \"video\");\n  return testMediaEl;\n};\nvar hasVolumeSupportAsync = (..._0) => __async(null, [..._0], function* (mediaEl = getTestMediaEl()) {\n  if (!mediaEl)\n    return false;\n  const prevVolume = mediaEl.volume;\n  mediaEl.volume = prevVolume / 2 + 0.1;\n  yield delay(0);\n  return mediaEl.volume !== prevVolume;\n});\nvar isSafari = /.*Version\\/.*Safari\\/.*/.test(GlobalThis.navigator.userAgent);\nvar hasPipSupport = (mediaEl = getTestMediaEl()) => {\n  if (GlobalThis.matchMedia(\"(display-mode: standalone)\").matches && isSafari)\n    return false;\n  return typeof (mediaEl == null ? void 0 : mediaEl.requestPictureInPicture) === \"function\";\n};\nvar hasFullscreenSupport = (mediaEl = getTestMediaEl()) => {\n  return isFullscreenEnabled({ documentElement: Document2, media: mediaEl });\n};\nvar fullscreenSupported = hasFullscreenSupport();\nvar pipSupported = hasPipSupport();\nvar airplaySupported = !!GlobalThis.WebKitPlaybackTargetAvailabilityEvent;\nvar castSupported = !!GlobalThis.chrome;\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-store/util.js\nvar getSubtitleTracks = (stateOwners) => {\n  return getTextTracksList(stateOwners.media, (textTrack) => {\n    return [TextTrackKinds.SUBTITLES, TextTrackKinds.CAPTIONS].includes(\n      textTrack.kind\n    );\n  }).sort((a2, b4) => a2.kind >= b4.kind ? 1 : -1);\n};\nvar getShowingSubtitleTracks = (stateOwners) => {\n  return getTextTracksList(stateOwners.media, (textTrack) => {\n    return textTrack.mode === TextTrackModes.SHOWING && [TextTrackKinds.SUBTITLES, TextTrackKinds.CAPTIONS].includes(\n      textTrack.kind\n    );\n  });\n};\nvar toggleSubtitleTracks = (stateOwners, force) => {\n  const tracks = getSubtitleTracks(stateOwners);\n  const showingSubitleTracks = getShowingSubtitleTracks(stateOwners);\n  const subtitlesShowing = !!showingSubitleTracks.length;\n  if (!tracks.length)\n    return;\n  if (force === false || subtitlesShowing && force !== true) {\n    updateTracksModeTo(TextTrackModes.DISABLED, tracks, showingSubitleTracks);\n  } else if (force === true || !subtitlesShowing && force !== false) {\n    let subTrack = tracks[0];\n    const { options } = stateOwners;\n    if (!(options == null ? void 0 : options.noSubtitlesLangPref)) {\n      const subtitlesPref = globalThis.localStorage.getItem(\n        \"media-chrome-pref-subtitles-lang\"\n      );\n      const userLangPrefs = subtitlesPref ? [subtitlesPref, ...globalThis.navigator.languages] : globalThis.navigator.languages;\n      const preferredAvailableSubs = tracks.filter((textTrack) => {\n        return userLangPrefs.some(\n          (lang) => textTrack.language.toLowerCase().startsWith(lang.split(\"-\")[0])\n        );\n      }).sort((textTrackA, textTrackB) => {\n        const idxA = userLangPrefs.findIndex(\n          (lang) => textTrackA.language.toLowerCase().startsWith(lang.split(\"-\")[0])\n        );\n        const idxB = userLangPrefs.findIndex(\n          (lang) => textTrackB.language.toLowerCase().startsWith(lang.split(\"-\")[0])\n        );\n        return idxA - idxB;\n      });\n      if (preferredAvailableSubs[0]) {\n        subTrack = preferredAvailableSubs[0];\n      }\n    }\n    const { language, label, kind } = subTrack;\n    updateTracksModeTo(TextTrackModes.DISABLED, tracks, showingSubitleTracks);\n    updateTracksModeTo(TextTrackModes.SHOWING, tracks, [\n      { language, label, kind }\n    ]);\n  }\n};\nvar areValuesEq = (x4, y5) => {\n  if (x4 === y5)\n    return true;\n  if (typeof x4 !== typeof y5)\n    return false;\n  if (typeof x4 === \"number\" && Number.isNaN(x4) && Number.isNaN(y5))\n    return true;\n  if (typeof x4 !== \"object\")\n    return false;\n  if (Array.isArray(x4))\n    return areArraysEq(x4, y5);\n  return Object.entries(x4).every(\n    // NOTE: Checking key in y to disambiguate between between missing keys and keys whose value are undefined (CJP)\n    ([key, value]) => key in y5 && areValuesEq(value, y5[key])\n  );\n};\nvar areArraysEq = (xs, ys) => {\n  const xIsArray = Array.isArray(xs);\n  const yIsArray = Array.isArray(ys);\n  if (xIsArray !== yIsArray)\n    return false;\n  if (!(xIsArray || yIsArray))\n    return true;\n  if (xs.length !== ys.length)\n    return false;\n  return xs.every((x4, i2) => areValuesEq(x4, ys[i2]));\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-store/state-mediator.js\nvar StreamTypeValues = (\n  /** @type {StreamTypeValue[]} */\n  Object.values(StreamTypes)\n);\nvar volumeSupported;\nvar volumeSupportPromise = hasVolumeSupportAsync().then(\n  (supported) => {\n    volumeSupported = supported;\n    return volumeSupported;\n  }\n);\nvar prepareStateOwners = (...stateOwners) => __async(null, null, function* () {\n  yield Promise.all(\n    stateOwners.filter((x4) => x4).map((stateOwner) => __async(null, null, function* () {\n      if (!(\"localName\" in stateOwner && stateOwner instanceof GlobalThis.HTMLElement)) {\n        return;\n      }\n      const name = stateOwner.localName;\n      if (!name.includes(\"-\"))\n        return;\n      const classDef = GlobalThis.customElements.get(name);\n      if (classDef && stateOwner instanceof classDef)\n        return;\n      yield GlobalThis.customElements.whenDefined(name);\n      GlobalThis.customElements.upgrade(stateOwner);\n    }))\n  );\n});\nvar stateMediator = {\n  mediaPaused: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return (_a3 = media == null ? void 0 : media.paused) != null ? _a3 : true;\n    },\n    set(value, stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      if (value) {\n        media.pause();\n      } else {\n        (_a3 = media.play()) == null ? void 0 : _a3.catch(() => {\n        });\n      }\n    },\n    mediaEvents: [\"play\", \"playing\", \"pause\", \"emptied\"]\n  },\n  mediaHasPlayed: {\n    // We want to let the user know that the media started playing at any point (`media-has-played`).\n    // Since these propagators are all called when boostrapping state, let's verify this is\n    // a real playing event by checking that 1) there's media and 2) it isn't currently paused.\n    get(stateOwners, event) {\n      const { media } = stateOwners;\n      if (!media)\n        return false;\n      if (!event)\n        return !media.paused;\n      return event.type === \"playing\";\n    },\n    mediaEvents: [\"playing\", \"emptied\"]\n  },\n  mediaEnded: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return (_a3 = media == null ? void 0 : media.ended) != null ? _a3 : false;\n    },\n    mediaEvents: [\"seeked\", \"ended\", \"emptied\"]\n  },\n  mediaPlaybackRate: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return (_a3 = media == null ? void 0 : media.playbackRate) != null ? _a3 : 1;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      if (!Number.isFinite(+value))\n        return;\n      media.playbackRate = +value;\n    },\n    mediaEvents: [\"ratechange\", \"loadstart\"]\n  },\n  mediaMuted: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return (_a3 = media == null ? void 0 : media.muted) != null ? _a3 : false;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      media.muted = value;\n    },\n    mediaEvents: [\"volumechange\"]\n  },\n  mediaVolume: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return (_a3 = media == null ? void 0 : media.volume) != null ? _a3 : 1;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      try {\n        if (value == null) {\n          GlobalThis.localStorage.removeItem(\"media-chrome-pref-volume\");\n        } else {\n          GlobalThis.localStorage.setItem(\n            \"media-chrome-pref-volume\",\n            value.toString()\n          );\n        }\n      } catch (err) {\n      }\n      if (!Number.isFinite(+value))\n        return;\n      media.volume = +value;\n    },\n    mediaEvents: [\"volumechange\"],\n    stateOwnersUpdateHandlers: [\n      (handler, stateOwners) => {\n        const {\n          options: { noVolumePref }\n        } = stateOwners;\n        if (noVolumePref)\n          return;\n        try {\n          const volumePref = GlobalThis.localStorage.getItem(\n            \"media-chrome-pref-volume\"\n          );\n          if (volumePref == null)\n            return;\n          stateMediator.mediaVolume.set(+volumePref, stateOwners);\n          handler(volumePref);\n        } catch (e) {\n          console.debug(\"Error getting volume pref\", e);\n        }\n      }\n    ]\n  },\n  // NOTE: Keeping this roughly equivalent to prior impl to reduce number of changes,\n  // however we may want to model \"derived\" state differently from \"primary\" state\n  // (in this case, derived === mediaVolumeLevel, primary === mediaMuted, mediaVolume) (CJP)\n  mediaVolumeLevel: {\n    get(stateOwners) {\n      const { media } = stateOwners;\n      if (typeof (media == null ? void 0 : media.volume) == \"undefined\")\n        return \"high\";\n      if (media.muted || media.volume === 0)\n        return \"off\";\n      if (media.volume < 0.5)\n        return \"low\";\n      if (media.volume < 0.75)\n        return \"medium\";\n      return \"high\";\n    },\n    mediaEvents: [\"volumechange\"]\n  },\n  mediaCurrentTime: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return (_a3 = media == null ? void 0 : media.currentTime) != null ? _a3 : 0;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!media || media.readyState === 0)\n        return;\n      media.currentTime = value;\n    },\n    mediaEvents: [\"timeupdate\", \"loadedmetadata\"]\n  },\n  mediaDuration: {\n    get(stateOwners) {\n      const { media, options: { defaultDuration } = {} } = stateOwners;\n      if (defaultDuration && (!media || !media.duration || Number.isNaN(media.duration) || !Number.isFinite(media.duration))) {\n        return defaultDuration;\n      }\n      return Number.isFinite(media == null ? void 0 : media.duration) ? media.duration : Number.NaN;\n    },\n    mediaEvents: [\"durationchange\", \"loadedmetadata\", \"emptied\"]\n  },\n  mediaLoading: {\n    get(stateOwners) {\n      const { media } = stateOwners;\n      return (media == null ? void 0 : media.readyState) < 3;\n    },\n    mediaEvents: [\"waiting\", \"playing\", \"emptied\"]\n  },\n  mediaSeekable: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      if (!((_a3 = media == null ? void 0 : media.seekable) == null ? void 0 : _a3.length))\n        return void 0;\n      const start = media.seekable.start(0);\n      const end = media.seekable.end(media.seekable.length - 1);\n      if (!start && !end)\n        return void 0;\n      return [Number(start.toFixed(3)), Number(end.toFixed(3))];\n    },\n    mediaEvents: [\"loadedmetadata\", \"emptied\", \"progress\", \"seekablechange\"]\n  },\n  mediaBuffered: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      const timeRanges = (\n        /** @type {TimeRanges} */\n        (_a3 = media == null ? void 0 : media.buffered) != null ? _a3 : []\n      );\n      return Array.from(\n        /** @type {ArrayLike<any>} */\n        /** @type unknown */\n        timeRanges\n      ).map((_3, i2) => [\n        Number(timeRanges.start(i2).toFixed(3)),\n        Number(timeRanges.end(i2).toFixed(3))\n      ]);\n    },\n    mediaEvents: [\"progress\", \"emptied\"]\n  },\n  mediaStreamType: {\n    get(stateOwners) {\n      const { media, options: { defaultStreamType } = {} } = stateOwners;\n      const usedDefaultStreamType = [\n        StreamTypes.LIVE,\n        StreamTypes.ON_DEMAND\n      ].includes(\n        /** @type {'live'|'on-demand'} */\n        defaultStreamType\n      ) ? defaultStreamType : void 0;\n      if (!media)\n        return usedDefaultStreamType;\n      const { streamType } = media;\n      if (StreamTypeValues.includes(streamType)) {\n        if (streamType === StreamTypes.UNKNOWN) {\n          return usedDefaultStreamType;\n        }\n        return streamType;\n      }\n      const duration = media.duration;\n      if (duration === Infinity) {\n        return StreamTypes.LIVE;\n      } else if (Number.isFinite(duration)) {\n        return StreamTypes.ON_DEMAND;\n      }\n      return usedDefaultStreamType;\n    },\n    mediaEvents: [\n      \"emptied\",\n      \"durationchange\",\n      \"loadedmetadata\",\n      \"streamtypechange\"\n    ]\n  },\n  mediaTargetLiveWindow: {\n    get(stateOwners) {\n      const { media } = stateOwners;\n      if (!media)\n        return Number.NaN;\n      const { targetLiveWindow } = media;\n      const streamType = stateMediator.mediaStreamType.get(stateOwners);\n      if ((targetLiveWindow == null || Number.isNaN(targetLiveWindow)) && streamType === StreamTypes.LIVE) {\n        return 0;\n      }\n      return targetLiveWindow;\n    },\n    mediaEvents: [\n      \"emptied\",\n      \"durationchange\",\n      \"loadedmetadata\",\n      \"streamtypechange\",\n      \"targetlivewindowchange\"\n    ]\n  },\n  mediaTimeIsLive: {\n    get(stateOwners) {\n      const {\n        media,\n        // Default to 10 seconds\n        options: { liveEdgeOffset = 10 } = {}\n      } = stateOwners;\n      if (!media)\n        return false;\n      if (typeof media.liveEdgeStart === \"number\") {\n        if (Number.isNaN(media.liveEdgeStart))\n          return false;\n        return media.currentTime >= media.liveEdgeStart;\n      }\n      const live = stateMediator.mediaStreamType.get(stateOwners) === StreamTypes.LIVE;\n      if (!live)\n        return false;\n      const seekable = media.seekable;\n      if (!seekable)\n        return true;\n      if (!seekable.length)\n        return false;\n      const liveEdgeStart = seekable.end(seekable.length - 1) - liveEdgeOffset;\n      return media.currentTime >= liveEdgeStart;\n    },\n    mediaEvents: [\"playing\", \"timeupdate\", \"progress\", \"waiting\", \"emptied\"]\n  },\n  // Text Tracks modeling\n  mediaSubtitlesList: {\n    get(stateOwners) {\n      return getSubtitleTracks(stateOwners).map(\n        ({ kind, label, language }) => ({ kind, label, language })\n      );\n    },\n    mediaEvents: [\"loadstart\"],\n    textTracksEvents: [\"addtrack\", \"removetrack\"]\n  },\n  mediaSubtitlesShowing: {\n    get(stateOwners) {\n      return getShowingSubtitleTracks(stateOwners).map(\n        ({ kind, label, language }) => ({ kind, label, language })\n      );\n    },\n    mediaEvents: [\"loadstart\"],\n    textTracksEvents: [\"addtrack\", \"removetrack\", \"change\"],\n    stateOwnersUpdateHandlers: [\n      (_handler, stateOwners) => {\n        var _a3, _b;\n        const { media, options } = stateOwners;\n        if (!media)\n          return;\n        const updateDefaultSubtitlesCallback = (event) => {\n          var _a22;\n          if (!options.defaultSubtitles)\n            return;\n          const nonSubsEvent = event && ![TextTrackKinds.CAPTIONS, TextTrackKinds.SUBTITLES].includes(\n            // @ts-ignore\n            (_a22 = event == null ? void 0 : event.track) == null ? void 0 : _a22.kind\n          );\n          if (nonSubsEvent)\n            return;\n          toggleSubtitleTracks(stateOwners, true);\n        };\n        (_a3 = media.textTracks) == null ? void 0 : _a3.addEventListener(\n          \"addtrack\",\n          updateDefaultSubtitlesCallback\n        );\n        (_b = media.textTracks) == null ? void 0 : _b.addEventListener(\n          \"removetrack\",\n          updateDefaultSubtitlesCallback\n        );\n        updateDefaultSubtitlesCallback();\n        return () => {\n          var _a22, _b2;\n          (_a22 = media.textTracks) == null ? void 0 : _a22.removeEventListener(\n            \"addtrack\",\n            updateDefaultSubtitlesCallback\n          );\n          (_b2 = media.textTracks) == null ? void 0 : _b2.removeEventListener(\n            \"removetrack\",\n            updateDefaultSubtitlesCallback\n          );\n        };\n      }\n    ]\n  },\n  mediaChaptersCues: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      if (!media)\n        return [];\n      const [chaptersTrack] = getTextTracksList(media, {\n        kind: TextTrackKinds.CHAPTERS\n      });\n      return Array.from((_a3 = chaptersTrack == null ? void 0 : chaptersTrack.cues) != null ? _a3 : []).map(\n        ({ text, startTime, endTime }) => ({\n          text,\n          startTime,\n          endTime\n        })\n      );\n    },\n    mediaEvents: [\"loadstart\", \"loadedmetadata\"],\n    textTracksEvents: [\"addtrack\", \"removetrack\", \"change\"],\n    stateOwnersUpdateHandlers: [\n      (handler, stateOwners) => {\n        const { media } = stateOwners;\n        if (!media)\n          return;\n        const chaptersTrack = media.querySelector(\n          'track[kind=\"chapters\"][default][src]'\n        );\n        chaptersTrack == null ? void 0 : chaptersTrack.addEventListener(\"load\", handler);\n        return () => {\n          chaptersTrack == null ? void 0 : chaptersTrack.removeEventListener(\"load\", handler);\n        };\n      }\n    ]\n  },\n  // Modeling state tied to root node\n  mediaIsPip: {\n    get(stateOwners) {\n      var _a3, _b;\n      const { media, documentElement } = stateOwners;\n      if (!media || !documentElement)\n        return false;\n      if (!documentElement.pictureInPictureElement)\n        return false;\n      if (documentElement.pictureInPictureElement === media)\n        return true;\n      if (documentElement.pictureInPictureElement instanceof HTMLMediaElement) {\n        if (!((_a3 = media.localName) == null ? void 0 : _a3.includes(\"-\")))\n          return false;\n        return containsComposedNode(\n          media,\n          documentElement.pictureInPictureElement\n        );\n      }\n      if (documentElement.pictureInPictureElement.localName.includes(\"-\")) {\n        let currentRoot = documentElement.pictureInPictureElement.shadowRoot;\n        while (currentRoot == null ? void 0 : currentRoot.pictureInPictureElement) {\n          if (currentRoot.pictureInPictureElement === media)\n            return true;\n          currentRoot = (_b = currentRoot.pictureInPictureElement) == null ? void 0 : _b.shadowRoot;\n        }\n      }\n      return false;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      if (value) {\n        if (!Document2.pictureInPictureEnabled) {\n          console.warn(\"MediaChrome: Picture-in-picture is not enabled\");\n          return;\n        }\n        if (!media.requestPictureInPicture) {\n          console.warn(\n            \"MediaChrome: The current media does not support picture-in-picture\"\n          );\n          return;\n        }\n        const warnNotReady = () => {\n          console.warn(\n            \"MediaChrome: The media is not ready for picture-in-picture. It must have a readyState > 0.\"\n          );\n        };\n        media.requestPictureInPicture().catch((err) => {\n          if (err.code === 11) {\n            if (!media.src) {\n              console.warn(\n                \"MediaChrome: The media is not ready for picture-in-picture. It must have a src set.\"\n              );\n              return;\n            }\n            if (media.readyState === 0 && media.preload === \"none\") {\n              const cleanup = () => {\n                media.removeEventListener(\"loadedmetadata\", tryPip);\n                media.preload = \"none\";\n              };\n              const tryPip = () => {\n                media.requestPictureInPicture().catch(warnNotReady);\n                cleanup();\n              };\n              media.addEventListener(\"loadedmetadata\", tryPip);\n              media.preload = \"metadata\";\n              setTimeout(() => {\n                if (media.readyState === 0)\n                  warnNotReady();\n                cleanup();\n              }, 1e3);\n            } else {\n              throw err;\n            }\n          } else {\n            throw err;\n          }\n        });\n      } else if (Document2.pictureInPictureElement) {\n        Document2.exitPictureInPicture();\n      }\n    },\n    mediaEvents: [\"enterpictureinpicture\", \"leavepictureinpicture\"]\n  },\n  mediaRenditionList: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return [...(_a3 = media == null ? void 0 : media.videoRenditions) != null ? _a3 : []].map((videoRendition) => __spreadValues({}, videoRendition));\n    },\n    mediaEvents: [\"emptied\", \"loadstart\"],\n    videoRenditionsEvents: [\"addrendition\", \"removerendition\"]\n  },\n  /** @TODO Model this as a derived value? (CJP) */\n  mediaRenditionSelected: {\n    get(stateOwners) {\n      var _a3, _b, _c;\n      const { media } = stateOwners;\n      return (_c = (_b = media == null ? void 0 : media.videoRenditions) == null ? void 0 : _b[(_a3 = media.videoRenditions) == null ? void 0 : _a3.selectedIndex]) == null ? void 0 : _c.id;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!(media == null ? void 0 : media.videoRenditions)) {\n        console.warn(\n          \"MediaController: Rendition selection not supported by this media.\"\n        );\n        return;\n      }\n      const renditionId = value;\n      const index = Array.prototype.findIndex.call(\n        media.videoRenditions,\n        (r10) => r10.id == renditionId\n      );\n      if (media.videoRenditions.selectedIndex != index) {\n        media.videoRenditions.selectedIndex = index;\n      }\n    },\n    mediaEvents: [\"emptied\"],\n    videoRenditionsEvents: [\"addrendition\", \"removerendition\", \"change\"]\n  },\n  mediaAudioTrackList: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      return [...(_a3 = media == null ? void 0 : media.audioTracks) != null ? _a3 : []];\n    },\n    mediaEvents: [\"emptied\", \"loadstart\"],\n    audioTracksEvents: [\"addtrack\", \"removetrack\"]\n  },\n  mediaAudioTrackEnabled: {\n    get(stateOwners) {\n      var _a3, _b;\n      const { media } = stateOwners;\n      return (_b = [...(_a3 = media == null ? void 0 : media.audioTracks) != null ? _a3 : []].find(\n        (audioTrack) => audioTrack.enabled\n      )) == null ? void 0 : _b.id;\n    },\n    set(value, stateOwners) {\n      const { media } = stateOwners;\n      if (!(media == null ? void 0 : media.audioTracks)) {\n        console.warn(\n          \"MediaChrome: Audio track selection not supported by this media.\"\n        );\n        return;\n      }\n      const audioTrackId = value;\n      for (let track of media.audioTracks) {\n        track.enabled = audioTrackId == track.id;\n      }\n    },\n    mediaEvents: [\"emptied\"],\n    audioTracksEvents: [\"addtrack\", \"removetrack\", \"change\"]\n  },\n  mediaIsFullscreen: {\n    get(stateOwners) {\n      return isFullscreen(stateOwners);\n    },\n    set(value, stateOwners) {\n      if (!value) {\n        exitFullscreen(stateOwners);\n      } else {\n        enterFullscreen(stateOwners);\n      }\n    },\n    // older Safari version may require webkit-specific events\n    rootEvents: [\"fullscreenchange\", \"webkitfullscreenchange\"],\n    // iOS requires webkit-specific events on the video.\n    mediaEvents: [\"webkitbeginfullscreen\", \"webkitendfullscreen\", \"webkitpresentationmodechanged\"]\n  },\n  mediaIsCasting: {\n    // Note this relies on a customized castable-video element.\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      if (!(media == null ? void 0 : media.remote) || ((_a3 = media.remote) == null ? void 0 : _a3.state) === \"disconnected\")\n        return false;\n      return !!media.remote.state;\n    },\n    set(value, stateOwners) {\n      var _a3, _b;\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      if (value && ((_a3 = media.remote) == null ? void 0 : _a3.state) !== \"disconnected\")\n        return;\n      if (!value && ((_b = media.remote) == null ? void 0 : _b.state) !== \"connected\")\n        return;\n      if (typeof media.remote.prompt !== \"function\") {\n        console.warn(\n          \"MediaChrome: Casting is not supported in this environment\"\n        );\n        return;\n      }\n      media.remote.prompt().catch(() => {\n      });\n    },\n    remoteEvents: [\"connect\", \"connecting\", \"disconnect\"]\n  },\n  // NOTE: Newly added state for tracking airplaying\n  mediaIsAirplaying: {\n    // NOTE: Cannot know if airplaying since Safari doesn't fully support HTMLMediaElement::remote yet (e.g. remote::state) (CJP)\n    get() {\n      return false;\n    },\n    set(_value2, stateOwners) {\n      const { media } = stateOwners;\n      if (!media)\n        return;\n      if (!(media.webkitShowPlaybackTargetPicker && GlobalThis.WebKitPlaybackTargetAvailabilityEvent)) {\n        console.warn(\n          \"MediaChrome: received a request to select AirPlay but AirPlay is not supported in this environment\"\n        );\n        return;\n      }\n      media.webkitShowPlaybackTargetPicker();\n    },\n    mediaEvents: [\"webkitcurrentplaybacktargetiswirelesschanged\"]\n  },\n  mediaFullscreenUnavailable: {\n    get(stateOwners) {\n      const { media } = stateOwners;\n      if (!fullscreenSupported || !hasFullscreenSupport(media))\n        return AvailabilityStates.UNSUPPORTED;\n      return void 0;\n    }\n  },\n  mediaPipUnavailable: {\n    get(stateOwners) {\n      const { media } = stateOwners;\n      if (!pipSupported || !hasPipSupport(media))\n        return AvailabilityStates.UNSUPPORTED;\n    }\n  },\n  mediaVolumeUnavailable: {\n    get(stateOwners) {\n      const { media } = stateOwners;\n      if (volumeSupported === false || (media == null ? void 0 : media.volume) == void 0) {\n        return AvailabilityStates.UNSUPPORTED;\n      }\n      return void 0;\n    },\n    // NOTE: Slightly different impl here. Added generic support for\n    // \"stateOwnersUpdateHandlers\" since the original impl had to hack around\n    // race conditions. (CJP)\n    stateOwnersUpdateHandlers: [\n      (handler) => {\n        if (volumeSupported == null) {\n          volumeSupportPromise.then(\n            (supported) => handler(supported ? void 0 : AvailabilityStates.UNSUPPORTED)\n          );\n        }\n      }\n    ]\n  },\n  mediaCastUnavailable: {\n    // @ts-ignore\n    get(stateOwners, { availability = \"not-available\" } = {}) {\n      var _a3;\n      const { media } = stateOwners;\n      if (!castSupported || !((_a3 = media == null ? void 0 : media.remote) == null ? void 0 : _a3.state)) {\n        return AvailabilityStates.UNSUPPORTED;\n      }\n      if (availability == null || availability === \"available\")\n        return void 0;\n      return AvailabilityStates.UNAVAILABLE;\n    },\n    stateOwnersUpdateHandlers: [\n      (handler, stateOwners) => {\n        var _a3;\n        const { media } = stateOwners;\n        if (!media)\n          return;\n        const remotePlaybackDisabled = media.disableRemotePlayback || media.hasAttribute(\"disableremoteplayback\");\n        if (!remotePlaybackDisabled) {\n          (_a3 = media == null ? void 0 : media.remote) == null ? void 0 : _a3.watchAvailability((availabilityBool) => {\n            const availability = availabilityBool ? \"available\" : \"not-available\";\n            handler({ availability });\n          }).catch((error) => {\n            if (error.name === \"NotSupportedError\") {\n              handler({ availability: null });\n            } else {\n              handler({ availability: \"not-available\" });\n            }\n          });\n        }\n        return () => {\n          var _a22;\n          (_a22 = media == null ? void 0 : media.remote) == null ? void 0 : _a22.cancelWatchAvailability().catch(() => {\n          });\n        };\n      }\n    ]\n  },\n  mediaAirplayUnavailable: {\n    get(_stateOwners, event) {\n      if (!airplaySupported)\n        return AvailabilityStates.UNSUPPORTED;\n      if ((event == null ? void 0 : event.availability) === \"not-available\") {\n        return AvailabilityStates.UNAVAILABLE;\n      }\n      return void 0;\n    },\n    // NOTE: Keeping this event, as it's still the documented way of monitoring\n    // for AirPlay availability from Apple.\n    // See: https://developer.apple.com/documentation/webkitjs/adding_an_airplay_button_to_your_safari_media_controls#2940021 (CJP)\n    mediaEvents: [\"webkitplaybacktargetavailabilitychanged\"],\n    stateOwnersUpdateHandlers: [\n      (handler, stateOwners) => {\n        var _a3;\n        const { media } = stateOwners;\n        if (!media)\n          return;\n        const remotePlaybackDisabled = media.disableRemotePlayback || media.hasAttribute(\"disableremoteplayback\");\n        if (!remotePlaybackDisabled) {\n          (_a3 = media == null ? void 0 : media.remote) == null ? void 0 : _a3.watchAvailability((availabilityBool) => {\n            const availability = availabilityBool ? \"available\" : \"not-available\";\n            handler({ availability });\n          }).catch((error) => {\n            if (error.name === \"NotSupportedError\") {\n              handler({ availability: null });\n            } else {\n              handler({ availability: \"not-available\" });\n            }\n          });\n        }\n        return () => {\n          var _a22;\n          (_a22 = media == null ? void 0 : media.remote) == null ? void 0 : _a22.cancelWatchAvailability().catch(() => {\n          });\n        };\n      }\n    ]\n  },\n  mediaRenditionUnavailable: {\n    get(stateOwners) {\n      var _a3;\n      const { media } = stateOwners;\n      if (!(media == null ? void 0 : media.videoRenditions)) {\n        return AvailabilityStates.UNSUPPORTED;\n      }\n      if (!((_a3 = media.videoRenditions) == null ? void 0 : _a3.length)) {\n        return AvailabilityStates.UNAVAILABLE;\n      }\n      return void 0;\n    },\n    mediaEvents: [\"emptied\", \"loadstart\"],\n    videoRenditionsEvents: [\"addrendition\", \"removerendition\"]\n  },\n  mediaAudioTrackUnavailable: {\n    get(stateOwners) {\n      var _a3, _b;\n      const { media } = stateOwners;\n      if (!(media == null ? void 0 : media.audioTracks)) {\n        return AvailabilityStates.UNSUPPORTED;\n      }\n      if (((_b = (_a3 = media.audioTracks) == null ? void 0 : _a3.length) != null ? _b : 0) <= 1) {\n        return AvailabilityStates.UNAVAILABLE;\n      }\n      return void 0;\n    },\n    mediaEvents: [\"emptied\", \"loadstart\"],\n    audioTracksEvents: [\"addtrack\", \"removetrack\"]\n  }\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-store/request-map.js\nvar requestMap = {\n  /**\n   * @TODO Consider adding state to `StateMediator` for e.g. `mediaThumbnailCues` and use that for derived state here (CJP)\n   */\n  [MediaUIEvents.MEDIA_PREVIEW_REQUEST](stateMediator2, stateOwners, { detail }) {\n    var _a3, _b, _c;\n    const { media } = stateOwners;\n    const mediaPreviewTime = detail != null ? detail : void 0;\n    let mediaPreviewImage = void 0;\n    let mediaPreviewCoords = void 0;\n    if (media && mediaPreviewTime != null) {\n      const [track] = getTextTracksList(media, {\n        kind: TextTrackKinds.METADATA,\n        label: \"thumbnails\"\n      });\n      const cue = Array.prototype.find.call((_a3 = track == null ? void 0 : track.cues) != null ? _a3 : [], (c4, i2, cs) => {\n        if (i2 === 0)\n          return c4.endTime > mediaPreviewTime;\n        if (i2 === cs.length - 1)\n          return c4.startTime <= mediaPreviewTime;\n        return c4.startTime <= mediaPreviewTime && c4.endTime > mediaPreviewTime;\n      });\n      if (cue) {\n        const base = !/'^(?:[a-z]+:)?\\/\\//i.test(cue.text) ? (\n          /** @type {HTMLTrackElement | null} */\n          (_b = media == null ? void 0 : media.querySelector('track[label=\"thumbnails\"]')) == null ? void 0 : _b.src\n        ) : void 0;\n        const url = new URL(cue.text, base);\n        const previewCoordsStr = new URLSearchParams(url.hash).get(\"#xywh\");\n        mediaPreviewCoords = /** @type {[number, number, number, number]} */\n        previewCoordsStr.split(\",\").map((numStr) => +numStr);\n        mediaPreviewImage = url.href;\n      }\n    }\n    const mediaDuration = stateMediator2.mediaDuration.get(stateOwners);\n    const mediaChaptersCues = stateMediator2.mediaChaptersCues.get(stateOwners);\n    let mediaPreviewChapter = (_c = mediaChaptersCues.find((c4, i2, cs) => {\n      if (i2 === cs.length - 1 && mediaDuration === c4.endTime) {\n        return c4.startTime <= mediaPreviewTime && c4.endTime >= mediaPreviewTime;\n      }\n      return c4.startTime <= mediaPreviewTime && c4.endTime > mediaPreviewTime;\n    })) == null ? void 0 : _c.text;\n    if (detail != null && mediaPreviewChapter == null) {\n      mediaPreviewChapter = \"\";\n    }\n    return {\n      mediaPreviewTime,\n      mediaPreviewImage,\n      mediaPreviewCoords,\n      mediaPreviewChapter\n    };\n  },\n  [MediaUIEvents.MEDIA_PAUSE_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaPaused\";\n    const value = true;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_PLAY_REQUEST](stateMediator2, stateOwners) {\n    var _a3;\n    const key = \"mediaPaused\";\n    const value = false;\n    const live = stateMediator2.mediaStreamType.get(stateOwners) === StreamTypes.LIVE;\n    if (live) {\n      const notDvr = !(stateMediator2.mediaTargetLiveWindow.get(stateOwners) > 0);\n      const liveEdgeTime = (_a3 = stateMediator2.mediaSeekable.get(stateOwners)) == null ? void 0 : _a3[1];\n      if (notDvr && liveEdgeTime) {\n        stateMediator2.mediaCurrentTime.set(liveEdgeTime, stateOwners);\n      }\n    }\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_PLAYBACK_RATE_REQUEST](stateMediator2, stateOwners, { detail }) {\n    const key = \"mediaPlaybackRate\";\n    const value = detail;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_MUTE_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaMuted\";\n    const value = true;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_UNMUTE_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaMuted\";\n    const value = false;\n    if (!stateMediator2.mediaVolume.get(stateOwners)) {\n      stateMediator2.mediaVolume.set(0.25, stateOwners);\n    }\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_VOLUME_REQUEST](stateMediator2, stateOwners, { detail }) {\n    const key = \"mediaVolume\";\n    const value = detail;\n    if (value && stateMediator2.mediaMuted.get(stateOwners)) {\n      stateMediator2.mediaMuted.set(false, stateOwners);\n    }\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_SEEK_REQUEST](stateMediator2, stateOwners, { detail }) {\n    const key = \"mediaCurrentTime\";\n    const value = detail;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_SEEK_TO_LIVE_REQUEST](stateMediator2, stateOwners) {\n    var _a3;\n    const key = \"mediaCurrentTime\";\n    const value = (_a3 = stateMediator2.mediaSeekable.get(stateOwners)) == null ? void 0 : _a3[1];\n    if (!Number.isNaN(Number(value)))\n      return;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  // Text Tracks state change requests\n  [MediaUIEvents.MEDIA_SHOW_SUBTITLES_REQUEST](_stateMediator, stateOwners, { detail }) {\n    var _a3;\n    const { options } = stateOwners;\n    const tracks = getSubtitleTracks(stateOwners);\n    const tracksToUpdate = parseTracks(detail);\n    const preferredLanguage = (_a3 = tracksToUpdate[0]) == null ? void 0 : _a3.language;\n    if (preferredLanguage && !options.noSubtitlesLangPref) {\n      GlobalThis.localStorage.setItem(\n        \"media-chrome-pref-subtitles-lang\",\n        preferredLanguage\n      );\n    }\n    updateTracksModeTo(TextTrackModes.SHOWING, tracks, tracksToUpdate);\n  },\n  [MediaUIEvents.MEDIA_DISABLE_SUBTITLES_REQUEST](_stateMediator, stateOwners, { detail }) {\n    const tracks = getSubtitleTracks(stateOwners);\n    const tracksToUpdate = detail != null ? detail : [];\n    updateTracksModeTo(TextTrackModes.DISABLED, tracks, tracksToUpdate);\n  },\n  [MediaUIEvents.MEDIA_TOGGLE_SUBTITLES_REQUEST](_stateMediator, stateOwners, { detail }) {\n    toggleSubtitleTracks(stateOwners, detail);\n  },\n  // Renditions/Tracks state change requests\n  [MediaUIEvents.MEDIA_RENDITION_REQUEST](stateMediator2, stateOwners, { detail }) {\n    const key = \"mediaRenditionSelected\";\n    const value = detail;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_AUDIO_TRACK_REQUEST](stateMediator2, stateOwners, { detail }) {\n    const key = \"mediaAudioTrackEnabled\";\n    const value = detail;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  // State change requests dependent on root node\n  [MediaUIEvents.MEDIA_ENTER_PIP_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsPip\";\n    const value = true;\n    if (stateMediator2.mediaIsFullscreen.get(stateOwners)) {\n      stateMediator2.mediaIsFullscreen.set(false, stateOwners);\n    }\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_EXIT_PIP_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsPip\";\n    const value = false;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_ENTER_FULLSCREEN_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsFullscreen\";\n    const value = true;\n    if (stateMediator2.mediaIsPip.get(stateOwners)) {\n      stateMediator2.mediaIsPip.set(false, stateOwners);\n    }\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_EXIT_FULLSCREEN_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsFullscreen\";\n    const value = false;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_ENTER_CAST_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsCasting\";\n    const value = true;\n    if (stateMediator2.mediaIsFullscreen.get(stateOwners)) {\n      stateMediator2.mediaIsFullscreen.set(false, stateOwners);\n    }\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_EXIT_CAST_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsCasting\";\n    const value = false;\n    stateMediator2[key].set(value, stateOwners);\n  },\n  [MediaUIEvents.MEDIA_AIRPLAY_REQUEST](stateMediator2, stateOwners) {\n    const key = \"mediaIsAirplaying\";\n    const value = true;\n    stateMediator2[key].set(value, stateOwners);\n  }\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-store/media-store.js\nvar createMediaStore = ({\n  media,\n  fullscreenElement,\n  documentElement,\n  stateMediator: stateMediator2 = stateMediator,\n  requestMap: requestMap2 = requestMap,\n  options = {},\n  monitorStateOwnersOnlyWithSubscriptions = true\n}) => {\n  const callbacks = [];\n  const stateOwners = {\n    // Spreading options here since folks should not rely on holding onto references\n    // for any app-level logic wrt options.\n    options: __spreadValues({}, options)\n  };\n  let state = Object.freeze({\n    mediaPreviewTime: void 0,\n    mediaPreviewImage: void 0,\n    mediaPreviewCoords: void 0,\n    mediaPreviewChapter: void 0\n  });\n  const updateState = (nextStateDelta) => {\n    if (nextStateDelta == void 0)\n      return;\n    if (areValuesEq(nextStateDelta, state)) {\n      return;\n    }\n    state = Object.freeze(__spreadValues(__spreadValues({}, state), nextStateDelta));\n    callbacks.forEach((cb) => cb(state));\n  };\n  const updateStateFromFacade = () => {\n    const nextState = Object.entries(stateMediator2).reduce(\n      (nextState2, [stateName, { get }]) => {\n        nextState2[stateName] = get(stateOwners);\n        return nextState2;\n      },\n      {}\n    );\n    updateState(nextState);\n  };\n  const stateUpdateHandlers = {};\n  let nextStateOwners = void 0;\n  const updateStateOwners = (nextStateOwnersDelta, nextSubscriberCount) => __async(null, null, function* () {\n    var _a3, _b, _c, _d, _e5, _f, _g, _h, _i2, _j, _k, _l, _m, _n, _o, _p;\n    const pendingUpdate = !!nextStateOwners;\n    nextStateOwners = __spreadValues(__spreadValues(__spreadValues({}, stateOwners), nextStateOwners != null ? nextStateOwners : {}), nextStateOwnersDelta);\n    if (pendingUpdate)\n      return;\n    yield prepareStateOwners(...Object.values(nextStateOwnersDelta));\n    const shouldTeardownFromSubscriberCount = callbacks.length > 0 && nextSubscriberCount === 0 && monitorStateOwnersOnlyWithSubscriptions;\n    const mediaChanged = stateOwners.media !== nextStateOwners.media;\n    const textTracksChanged = ((_a3 = stateOwners.media) == null ? void 0 : _a3.textTracks) !== ((_b = nextStateOwners.media) == null ? void 0 : _b.textTracks);\n    const videoRenditionsChanged = ((_c = stateOwners.media) == null ? void 0 : _c.videoRenditions) !== ((_d = nextStateOwners.media) == null ? void 0 : _d.videoRenditions);\n    const audioTracksChanged = ((_e5 = stateOwners.media) == null ? void 0 : _e5.audioTracks) !== ((_f = nextStateOwners.media) == null ? void 0 : _f.audioTracks);\n    const remoteChanged = ((_g = stateOwners.media) == null ? void 0 : _g.remote) !== ((_h = nextStateOwners.media) == null ? void 0 : _h.remote);\n    const rootNodeChanged = stateOwners.documentElement !== nextStateOwners.documentElement;\n    const teardownMedia = !!stateOwners.media && (mediaChanged || shouldTeardownFromSubscriberCount);\n    const teardownTextTracks = !!((_i2 = stateOwners.media) == null ? void 0 : _i2.textTracks) && (textTracksChanged || shouldTeardownFromSubscriberCount);\n    const teardownVideoRenditions = !!((_j = stateOwners.media) == null ? void 0 : _j.videoRenditions) && (videoRenditionsChanged || shouldTeardownFromSubscriberCount);\n    const teardownAudioTracks = !!((_k = stateOwners.media) == null ? void 0 : _k.audioTracks) && (audioTracksChanged || shouldTeardownFromSubscriberCount);\n    const teardownRemote = !!((_l = stateOwners.media) == null ? void 0 : _l.remote) && (remoteChanged || shouldTeardownFromSubscriberCount);\n    const teardownRootNode = !!stateOwners.documentElement && (rootNodeChanged || shouldTeardownFromSubscriberCount);\n    const teardownSomething = teardownMedia || teardownTextTracks || teardownVideoRenditions || teardownAudioTracks || teardownRemote || teardownRootNode;\n    const shouldSetupFromSubscriberCount = callbacks.length === 0 && nextSubscriberCount === 1 && monitorStateOwnersOnlyWithSubscriptions;\n    const setupMedia = !!nextStateOwners.media && (mediaChanged || shouldSetupFromSubscriberCount);\n    const setupTextTracks = !!((_m = nextStateOwners.media) == null ? void 0 : _m.textTracks) && (textTracksChanged || shouldSetupFromSubscriberCount);\n    const setupVideoRenditions = !!((_n = nextStateOwners.media) == null ? void 0 : _n.videoRenditions) && (videoRenditionsChanged || shouldSetupFromSubscriberCount);\n    const setupAudioTracks = !!((_o = nextStateOwners.media) == null ? void 0 : _o.audioTracks) && (audioTracksChanged || shouldSetupFromSubscriberCount);\n    const setupRemote = !!((_p = nextStateOwners.media) == null ? void 0 : _p.remote) && (remoteChanged || shouldSetupFromSubscriberCount);\n    const setupRootNode = !!nextStateOwners.documentElement && (rootNodeChanged || shouldSetupFromSubscriberCount);\n    const setupSomething = setupMedia || setupTextTracks || setupVideoRenditions || setupAudioTracks || setupRemote || setupRootNode;\n    const somethingToDo = teardownSomething || setupSomething;\n    if (!somethingToDo) {\n      Object.entries(nextStateOwners).forEach(\n        ([stateOwnerName, stateOwner]) => {\n          stateOwners[stateOwnerName] = stateOwner;\n        }\n      );\n      updateStateFromFacade();\n      nextStateOwners = void 0;\n      return;\n    }\n    Object.entries(stateMediator2).forEach(\n      ([\n        stateName,\n        {\n          get,\n          mediaEvents = [],\n          textTracksEvents = [],\n          videoRenditionsEvents = [],\n          audioTracksEvents = [],\n          remoteEvents = [],\n          rootEvents = [],\n          stateOwnersUpdateHandlers = []\n        }\n      ]) => {\n        if (!stateUpdateHandlers[stateName]) {\n          stateUpdateHandlers[stateName] = {};\n        }\n        const handler = (event) => {\n          const nextValue = get(stateOwners, event);\n          updateState({ [stateName]: nextValue });\n        };\n        let prevHandler;\n        prevHandler = stateUpdateHandlers[stateName].mediaEvents;\n        mediaEvents.forEach((eventType) => {\n          if (prevHandler && teardownMedia) {\n            stateOwners.media.removeEventListener(eventType, prevHandler);\n            stateUpdateHandlers[stateName].mediaEvents = void 0;\n          }\n          if (setupMedia) {\n            nextStateOwners.media.addEventListener(eventType, handler);\n            stateUpdateHandlers[stateName].mediaEvents = handler;\n          }\n        });\n        prevHandler = stateUpdateHandlers[stateName].textTracksEvents;\n        textTracksEvents.forEach((eventType) => {\n          var _a22, _b2;\n          if (prevHandler && teardownTextTracks) {\n            (_a22 = stateOwners.media.textTracks) == null ? void 0 : _a22.removeEventListener(\n              eventType,\n              prevHandler\n            );\n            stateUpdateHandlers[stateName].textTracksEvents = void 0;\n          }\n          if (setupTextTracks) {\n            (_b2 = nextStateOwners.media.textTracks) == null ? void 0 : _b2.addEventListener(\n              eventType,\n              handler\n            );\n            stateUpdateHandlers[stateName].textTracksEvents = handler;\n          }\n        });\n        prevHandler = stateUpdateHandlers[stateName].videoRenditionsEvents;\n        videoRenditionsEvents.forEach((eventType) => {\n          var _a22, _b2;\n          if (prevHandler && teardownVideoRenditions) {\n            (_a22 = stateOwners.media.videoRenditions) == null ? void 0 : _a22.removeEventListener(\n              eventType,\n              prevHandler\n            );\n            stateUpdateHandlers[stateName].videoRenditionsEvents = void 0;\n          }\n          if (setupVideoRenditions) {\n            (_b2 = nextStateOwners.media.videoRenditions) == null ? void 0 : _b2.addEventListener(\n              eventType,\n              handler\n            );\n            stateUpdateHandlers[stateName].videoRenditionsEvents = handler;\n          }\n        });\n        prevHandler = stateUpdateHandlers[stateName].audioTracksEvents;\n        audioTracksEvents.forEach((eventType) => {\n          var _a22, _b2;\n          if (prevHandler && teardownAudioTracks) {\n            (_a22 = stateOwners.media.audioTracks) == null ? void 0 : _a22.removeEventListener(\n              eventType,\n              prevHandler\n            );\n            stateUpdateHandlers[stateName].audioTracksEvents = void 0;\n          }\n          if (setupAudioTracks) {\n            (_b2 = nextStateOwners.media.audioTracks) == null ? void 0 : _b2.addEventListener(\n              eventType,\n              handler\n            );\n            stateUpdateHandlers[stateName].audioTracksEvents = handler;\n          }\n        });\n        prevHandler = stateUpdateHandlers[stateName].remoteEvents;\n        remoteEvents.forEach((eventType) => {\n          var _a22, _b2;\n          if (prevHandler && teardownRemote) {\n            (_a22 = stateOwners.media.remote) == null ? void 0 : _a22.removeEventListener(\n              eventType,\n              prevHandler\n            );\n            stateUpdateHandlers[stateName].remoteEvents = void 0;\n          }\n          if (setupRemote) {\n            (_b2 = nextStateOwners.media.remote) == null ? void 0 : _b2.addEventListener(eventType, handler);\n            stateUpdateHandlers[stateName].remoteEvents = handler;\n          }\n        });\n        prevHandler = stateUpdateHandlers[stateName].rootEvents;\n        rootEvents.forEach((eventType) => {\n          if (prevHandler && teardownRootNode) {\n            stateOwners.documentElement.removeEventListener(\n              eventType,\n              prevHandler\n            );\n            stateUpdateHandlers[stateName].rootEvents = void 0;\n          }\n          if (setupRootNode) {\n            nextStateOwners.documentElement.addEventListener(\n              eventType,\n              handler\n            );\n            stateUpdateHandlers[stateName].rootEvents = handler;\n          }\n        });\n        const prevHandlerTeardown = stateUpdateHandlers[stateName].stateOwnersUpdateHandlers;\n        stateOwnersUpdateHandlers.forEach((fn) => {\n          if (prevHandlerTeardown && teardownSomething) {\n            prevHandlerTeardown();\n          }\n          if (setupSomething) {\n            stateUpdateHandlers[stateName].stateOwnersUpdateHandlers = fn(\n              handler,\n              nextStateOwners\n            );\n          }\n        });\n      }\n    );\n    Object.entries(nextStateOwners).forEach(([stateOwnerName, stateOwner]) => {\n      stateOwners[stateOwnerName] = stateOwner;\n    });\n    updateStateFromFacade();\n    nextStateOwners = void 0;\n  });\n  updateStateOwners({ media, fullscreenElement, documentElement, options });\n  return {\n    // note that none of these cases directly interact with the media element, root node, full screen element, etc.\n    // note these \"actions\" could just be the events if we wanted, especially if we normalize on \"detail\" for\n    // any payload-relevant values\n    // This is roughly equivalent to our used to be in our state requests dictionary object, though much of the\n    // \"heavy lifting\" is now moved into the facade `set()`\n    dispatch(action) {\n      const { type, detail } = action;\n      if (requestMap2[type]) {\n        updateState(requestMap2[type](stateMediator2, stateOwners, action));\n        return;\n      }\n      if (type === \"mediaelementchangerequest\") {\n        updateStateOwners({ media: detail });\n      } else if (type === \"fullscreenelementchangerequest\") {\n        updateStateOwners({ fullscreenElement: detail });\n      } else if (type === \"documentelementchangerequest\") {\n        updateStateOwners({ documentElement: detail });\n      } else if (type === \"optionschangerequest\") {\n        Object.entries(detail != null ? detail : {}).forEach(([optionName, optionValue]) => {\n          stateOwners.options[optionName] = optionValue;\n        });\n      }\n    },\n    getState() {\n      return state;\n    },\n    subscribe(callback) {\n      updateStateOwners({}, callbacks.length + 1);\n      callbacks.push(callback);\n      callback(state);\n      return () => {\n        const idx = callbacks.indexOf(callback);\n        if (idx >= 0) {\n          updateStateOwners({}, callbacks.length - 1);\n          callbacks.splice(idx, 1);\n        }\n      };\n    }\n  };\n};\nvar media_store_default = createMediaStore;\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-controller.js\nvar __accessCheck4 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet4 = (obj, member, getter) => {\n  __accessCheck4(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd4 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet4 = (obj, member, value, setter) => {\n  __accessCheck4(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod2 = (obj, member, method) => {\n  __accessCheck4(obj, member, \"access private method\");\n  return method;\n};\nvar _hotKeys;\nvar _fullscreenElement;\nvar _mediaStore;\nvar _mediaStateCallback;\nvar _mediaStoreUnsubscribe;\nvar _mediaStateEventHandler;\nvar _setupDefaultStore;\nvar setupDefaultStore_fn;\nvar _keyUpHandler;\nvar keyUpHandler_fn;\nvar _keyDownHandler;\nvar keyDownHandler_fn;\nvar ButtonPressedKeys = [\n  \"ArrowLeft\",\n  \"ArrowRight\",\n  \"Enter\",\n  \" \",\n  \"f\",\n  \"m\",\n  \"k\",\n  \"c\"\n];\nvar DEFAULT_SEEK_OFFSET = 10;\nvar Attributes2 = {\n  DEFAULT_SUBTITLES: \"defaultsubtitles\",\n  DEFAULT_STREAM_TYPE: \"defaultstreamtype\",\n  DEFAULT_DURATION: \"defaultduration\",\n  FULLSCREEN_ELEMENT: \"fullscreenelement\",\n  HOTKEYS: \"hotkeys\",\n  KEYS_USED: \"keysused\",\n  LIVE_EDGE_OFFSET: \"liveedgeoffset\",\n  NO_AUTO_SEEK_TO_LIVE: \"noautoseektolive\",\n  NO_HOTKEYS: \"nohotkeys\",\n  NO_VOLUME_PREF: \"novolumepref\",\n  NO_SUBTITLES_LANG_PREF: \"nosubtitleslangpref\",\n  NO_DEFAULT_STORE: \"nodefaultstore\",\n  KEYBOARD_FORWARD_SEEK_OFFSET: \"keyboardforwardseekoffset\",\n  KEYBOARD_BACKWARD_SEEK_OFFSET: \"keyboardbackwardseekoffset\"\n};\nvar MediaController = class extends MediaContainer {\n  constructor() {\n    super();\n    __privateAdd4(this, _setupDefaultStore);\n    __privateAdd4(this, _keyUpHandler);\n    __privateAdd4(this, _keyDownHandler);\n    __privateAdd4(this, _hotKeys, new AttributeTokenList(this, Attributes2.HOTKEYS));\n    __privateAdd4(this, _fullscreenElement, void 0);\n    __privateAdd4(this, _mediaStore, void 0);\n    __privateAdd4(this, _mediaStateCallback, void 0);\n    __privateAdd4(this, _mediaStoreUnsubscribe, void 0);\n    __privateAdd4(this, _mediaStateEventHandler, (event) => {\n      var _a3;\n      (_a3 = __privateGet4(this, _mediaStore)) == null ? void 0 : _a3.dispatch(event);\n    });\n    this.mediaStateReceivers = [];\n    this.associatedElementSubscriptions = /* @__PURE__ */ new Map();\n    this.associateElement(this);\n    let prevState = {};\n    __privateSet4(this, _mediaStateCallback, (nextState) => {\n      Object.entries(nextState).forEach(([stateName, stateValue]) => {\n        if (stateName in prevState && prevState[stateName] === stateValue)\n          return;\n        this.propagateMediaState(stateName, stateValue);\n        const attrName = stateName.toLowerCase();\n        const evt = new GlobalThis.CustomEvent(\n          AttributeToStateChangeEventMap[attrName],\n          { composed: true, detail: stateValue }\n        );\n        this.dispatchEvent(evt);\n      });\n      prevState = nextState;\n    });\n    this.enableHotkeys();\n  }\n  static get observedAttributes() {\n    return super.observedAttributes.concat(\n      Attributes2.NO_HOTKEYS,\n      Attributes2.HOTKEYS,\n      Attributes2.DEFAULT_STREAM_TYPE,\n      Attributes2.DEFAULT_SUBTITLES,\n      Attributes2.DEFAULT_DURATION\n    );\n  }\n  get mediaStore() {\n    return __privateGet4(this, _mediaStore);\n  }\n  set mediaStore(value) {\n    var _a3, _b;\n    if (__privateGet4(this, _mediaStore)) {\n      (_a3 = __privateGet4(this, _mediaStoreUnsubscribe)) == null ? void 0 : _a3.call(this);\n      __privateSet4(this, _mediaStoreUnsubscribe, void 0);\n    }\n    __privateSet4(this, _mediaStore, value);\n    if (!__privateGet4(this, _mediaStore) && !this.hasAttribute(Attributes2.NO_DEFAULT_STORE)) {\n      __privateMethod2(this, _setupDefaultStore, setupDefaultStore_fn).call(this);\n      return;\n    }\n    __privateSet4(this, _mediaStoreUnsubscribe, (_b = __privateGet4(this, _mediaStore)) == null ? void 0 : _b.subscribe(\n      __privateGet4(this, _mediaStateCallback)\n    ));\n  }\n  get fullscreenElement() {\n    var _a3;\n    return (_a3 = __privateGet4(this, _fullscreenElement)) != null ? _a3 : this;\n  }\n  set fullscreenElement(element) {\n    var _a3;\n    if (this.hasAttribute(Attributes2.FULLSCREEN_ELEMENT)) {\n      this.removeAttribute(Attributes2.FULLSCREEN_ELEMENT);\n    }\n    __privateSet4(this, _fullscreenElement, element);\n    (_a3 = __privateGet4(this, _mediaStore)) == null ? void 0 : _a3.dispatch({\n      type: \"fullscreenelementchangerequest\",\n      detail: this.fullscreenElement\n    });\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5, _f;\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === Attributes2.NO_HOTKEYS) {\n      if (newValue !== oldValue && newValue === \"\") {\n        if (this.hasAttribute(Attributes2.HOTKEYS)) {\n          console.warn(\n            \"Media Chrome: Both `hotkeys` and `nohotkeys` have been set. All hotkeys will be disabled.\"\n          );\n        }\n        this.disableHotkeys();\n      } else if (newValue !== oldValue && newValue === null) {\n        this.enableHotkeys();\n      }\n    } else if (attrName === Attributes2.HOTKEYS) {\n      __privateGet4(this, _hotKeys).value = newValue;\n    } else if (attrName === Attributes2.DEFAULT_SUBTITLES && newValue !== oldValue) {\n      (_a3 = __privateGet4(this, _mediaStore)) == null ? void 0 : _a3.dispatch({\n        type: \"optionschangerequest\",\n        detail: {\n          defaultSubtitles: this.hasAttribute(Attributes2.DEFAULT_SUBTITLES)\n        }\n      });\n    } else if (attrName === Attributes2.DEFAULT_STREAM_TYPE) {\n      (_c = __privateGet4(this, _mediaStore)) == null ? void 0 : _c.dispatch({\n        type: \"optionschangerequest\",\n        detail: {\n          defaultStreamType: (_b = this.getAttribute(Attributes2.DEFAULT_STREAM_TYPE)) != null ? _b : void 0\n        }\n      });\n    } else if (attrName === Attributes2.LIVE_EDGE_OFFSET) {\n      (_d = __privateGet4(this, _mediaStore)) == null ? void 0 : _d.dispatch({\n        type: \"optionschangerequest\",\n        detail: {\n          liveEdgeOffset: this.hasAttribute(Attributes2.LIVE_EDGE_OFFSET) ? +this.getAttribute(Attributes2.LIVE_EDGE_OFFSET) : void 0\n        }\n      });\n    } else if (attrName === Attributes2.FULLSCREEN_ELEMENT) {\n      const el = newValue ? (\n        /** @type {Document|ShadowRoot} */\n        /** @type {unknown} */\n        (_e5 = this.getRootNode()) == null ? void 0 : _e5.getElementById(newValue)\n      ) : void 0;\n      __privateSet4(this, _fullscreenElement, el);\n      (_f = __privateGet4(this, _mediaStore)) == null ? void 0 : _f.dispatch({\n        type: \"fullscreenelementchangerequest\",\n        detail: this.fullscreenElement\n      });\n    }\n  }\n  connectedCallback() {\n    var _a3, _b;\n    if (!__privateGet4(this, _mediaStore) && !this.hasAttribute(Attributes2.NO_DEFAULT_STORE)) {\n      __privateMethod2(this, _setupDefaultStore, setupDefaultStore_fn).call(this);\n    }\n    (_a3 = __privateGet4(this, _mediaStore)) == null ? void 0 : _a3.dispatch({\n      type: \"documentelementchangerequest\",\n      detail: Document2\n    });\n    super.connectedCallback();\n    if (__privateGet4(this, _mediaStore) && !__privateGet4(this, _mediaStoreUnsubscribe)) {\n      __privateSet4(this, _mediaStoreUnsubscribe, (_b = __privateGet4(this, _mediaStore)) == null ? void 0 : _b.subscribe(\n        __privateGet4(this, _mediaStateCallback)\n      ));\n    }\n    this.enableHotkeys();\n  }\n  disconnectedCallback() {\n    var _a3, _b, _c, _d;\n    (_a3 = super.disconnectedCallback) == null ? void 0 : _a3.call(this);\n    if (__privateGet4(this, _mediaStore)) {\n      (_b = __privateGet4(this, _mediaStore)) == null ? void 0 : _b.dispatch({\n        type: \"documentelementchangerequest\",\n        detail: void 0\n      });\n      (_c = __privateGet4(this, _mediaStore)) == null ? void 0 : _c.dispatch({\n        type: MediaUIEvents.MEDIA_TOGGLE_SUBTITLES_REQUEST,\n        detail: false\n      });\n    }\n    if (__privateGet4(this, _mediaStoreUnsubscribe)) {\n      (_d = __privateGet4(this, _mediaStoreUnsubscribe)) == null ? void 0 : _d.call(this);\n      __privateSet4(this, _mediaStoreUnsubscribe, void 0);\n    }\n  }\n  /**\n   * @override\n   * @param {HTMLMediaElement} media\n   */\n  mediaSetCallback(media) {\n    var _a3;\n    super.mediaSetCallback(media);\n    (_a3 = __privateGet4(this, _mediaStore)) == null ? void 0 : _a3.dispatch({\n      type: \"mediaelementchangerequest\",\n      detail: media\n    });\n    if (!media.hasAttribute(\"tabindex\")) {\n      media.tabIndex = -1;\n    }\n  }\n  /**\n   * @override\n   * @param {HTMLMediaElement} media\n   */\n  mediaUnsetCallback(media) {\n    var _a3;\n    super.mediaUnsetCallback(media);\n    (_a3 = __privateGet4(this, _mediaStore)) == null ? void 0 : _a3.dispatch({\n      type: \"mediaelementchangerequest\",\n      detail: void 0\n    });\n  }\n  propagateMediaState(stateName, state) {\n    propagateMediaState(this.mediaStateReceivers, stateName, state);\n  }\n  associateElement(element) {\n    if (!element)\n      return;\n    const { associatedElementSubscriptions } = this;\n    if (associatedElementSubscriptions.has(element))\n      return;\n    const registerMediaStateReceiver = this.registerMediaStateReceiver.bind(this);\n    const unregisterMediaStateReceiver = this.unregisterMediaStateReceiver.bind(this);\n    const unsubscribe = monitorForMediaStateReceivers(\n      element,\n      registerMediaStateReceiver,\n      unregisterMediaStateReceiver\n    );\n    Object.values(MediaUIEvents).forEach((eventName) => {\n      element.addEventListener(eventName, __privateGet4(this, _mediaStateEventHandler));\n    });\n    associatedElementSubscriptions.set(element, unsubscribe);\n  }\n  unassociateElement(element) {\n    if (!element)\n      return;\n    const { associatedElementSubscriptions } = this;\n    if (!associatedElementSubscriptions.has(element))\n      return;\n    const unsubscribe = associatedElementSubscriptions.get(element);\n    unsubscribe();\n    associatedElementSubscriptions.delete(element);\n    Object.values(MediaUIEvents).forEach((eventName) => {\n      element.removeEventListener(eventName, __privateGet4(this, _mediaStateEventHandler));\n    });\n  }\n  registerMediaStateReceiver(el) {\n    if (!el)\n      return;\n    const els = this.mediaStateReceivers;\n    const index = els.indexOf(el);\n    if (index > -1)\n      return;\n    els.push(el);\n    if (__privateGet4(this, _mediaStore)) {\n      Object.entries(__privateGet4(this, _mediaStore).getState()).forEach(\n        ([stateName, stateValue]) => {\n          propagateMediaState([el], stateName, stateValue);\n        }\n      );\n    }\n  }\n  unregisterMediaStateReceiver(el) {\n    const els = this.mediaStateReceivers;\n    const index = els.indexOf(el);\n    if (index < 0)\n      return;\n    els.splice(index, 1);\n  }\n  enableHotkeys() {\n    this.addEventListener(\"keydown\", __privateMethod2(this, _keyDownHandler, keyDownHandler_fn));\n  }\n  disableHotkeys() {\n    this.removeEventListener(\"keydown\", __privateMethod2(this, _keyDownHandler, keyDownHandler_fn));\n    this.removeEventListener(\"keyup\", __privateMethod2(this, _keyUpHandler, keyUpHandler_fn));\n  }\n  get hotkeys() {\n    return __privateGet4(this, _hotKeys);\n  }\n  keyboardShortcutHandler(e) {\n    var _a3, _b, _c, _d, _e5, _f;\n    const keysUsed = ((_d = (_c = (_a3 = e.target.getAttribute(Attributes2.KEYS_USED)) == null ? void 0 : _a3.split(\" \")) != null ? _c : (_b = e.target) == null ? void 0 : _b.keysUsed) != null ? _d : []).map((key) => key === \"Space\" ? \" \" : key).filter(Boolean);\n    if (keysUsed.includes(e.key)) {\n      return;\n    }\n    let eventName, detail, evt;\n    if (__privateGet4(this, _hotKeys).contains(`no${e.key.toLowerCase()}`))\n      return;\n    if (e.key === \" \" && __privateGet4(this, _hotKeys).contains(`nospace`))\n      return;\n    switch (e.key) {\n      case \" \":\n      case \"k\":\n        eventName = __privateGet4(this, _mediaStore).getState().mediaPaused ? MediaUIEvents.MEDIA_PLAY_REQUEST : MediaUIEvents.MEDIA_PAUSE_REQUEST;\n        this.dispatchEvent(\n          new GlobalThis.CustomEvent(eventName, {\n            composed: true,\n            bubbles: true\n          })\n        );\n        break;\n      case \"m\":\n        eventName = this.mediaStore.getState().mediaVolumeLevel === \"off\" ? MediaUIEvents.MEDIA_UNMUTE_REQUEST : MediaUIEvents.MEDIA_MUTE_REQUEST;\n        this.dispatchEvent(\n          new GlobalThis.CustomEvent(eventName, {\n            composed: true,\n            bubbles: true\n          })\n        );\n        break;\n      case \"f\":\n        eventName = this.mediaStore.getState().mediaIsFullscreen ? MediaUIEvents.MEDIA_EXIT_FULLSCREEN_REQUEST : MediaUIEvents.MEDIA_ENTER_FULLSCREEN_REQUEST;\n        this.dispatchEvent(\n          new GlobalThis.CustomEvent(eventName, {\n            composed: true,\n            bubbles: true\n          })\n        );\n        break;\n      case \"c\":\n        this.dispatchEvent(\n          new GlobalThis.CustomEvent(\n            MediaUIEvents.MEDIA_TOGGLE_SUBTITLES_REQUEST,\n            { composed: true, bubbles: true }\n          )\n        );\n        break;\n      case \"ArrowLeft\": {\n        const offsetValue = this.hasAttribute(\n          Attributes2.KEYBOARD_BACKWARD_SEEK_OFFSET\n        ) ? +this.getAttribute(Attributes2.KEYBOARD_BACKWARD_SEEK_OFFSET) : DEFAULT_SEEK_OFFSET;\n        detail = Math.max(\n          ((_e5 = this.mediaStore.getState().mediaCurrentTime) != null ? _e5 : 0) - offsetValue,\n          0\n        );\n        evt = new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_SEEK_REQUEST, {\n          composed: true,\n          bubbles: true,\n          detail\n        });\n        this.dispatchEvent(evt);\n        break;\n      }\n      case \"ArrowRight\": {\n        const offsetValue = this.hasAttribute(\n          Attributes2.KEYBOARD_FORWARD_SEEK_OFFSET\n        ) ? +this.getAttribute(Attributes2.KEYBOARD_FORWARD_SEEK_OFFSET) : DEFAULT_SEEK_OFFSET;\n        detail = Math.max(\n          ((_f = this.mediaStore.getState().mediaCurrentTime) != null ? _f : 0) + offsetValue,\n          0\n        );\n        evt = new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_SEEK_REQUEST, {\n          composed: true,\n          bubbles: true,\n          detail\n        });\n        this.dispatchEvent(evt);\n        break;\n      }\n      default:\n        break;\n    }\n  }\n};\n_hotKeys = /* @__PURE__ */ new WeakMap();\n_fullscreenElement = /* @__PURE__ */ new WeakMap();\n_mediaStore = /* @__PURE__ */ new WeakMap();\n_mediaStateCallback = /* @__PURE__ */ new WeakMap();\n_mediaStoreUnsubscribe = /* @__PURE__ */ new WeakMap();\n_mediaStateEventHandler = /* @__PURE__ */ new WeakMap();\n_setupDefaultStore = /* @__PURE__ */ new WeakSet();\nsetupDefaultStore_fn = function() {\n  var _a3;\n  this.mediaStore = media_store_default({\n    media: this.media,\n    fullscreenElement: this.fullscreenElement,\n    options: {\n      defaultSubtitles: this.hasAttribute(Attributes2.DEFAULT_SUBTITLES),\n      defaultDuration: this.hasAttribute(Attributes2.DEFAULT_DURATION) ? +this.getAttribute(Attributes2.DEFAULT_DURATION) : void 0,\n      defaultStreamType: (\n        /** @type {import('./media-store/state-mediator.js').StreamTypeValue} */\n        (_a3 = this.getAttribute(Attributes2.DEFAULT_STREAM_TYPE)) != null ? _a3 : void 0\n      ),\n      liveEdgeOffset: this.hasAttribute(Attributes2.LIVE_EDGE_OFFSET) ? +this.getAttribute(Attributes2.LIVE_EDGE_OFFSET) : void 0,\n      // NOTE: This wasn't updated if it was changed later. Should it be? (CJP)\n      noVolumePref: this.hasAttribute(Attributes2.NO_VOLUME_PREF),\n      noSubtitlesLangPref: this.hasAttribute(\n        Attributes2.NO_SUBTITLES_LANG_PREF\n      )\n    }\n  });\n};\n_keyUpHandler = /* @__PURE__ */ new WeakSet();\nkeyUpHandler_fn = function(e) {\n  const { key } = e;\n  if (!ButtonPressedKeys.includes(key)) {\n    this.removeEventListener(\"keyup\", __privateMethod2(this, _keyUpHandler, keyUpHandler_fn));\n    return;\n  }\n  this.keyboardShortcutHandler(e);\n};\n_keyDownHandler = /* @__PURE__ */ new WeakSet();\nkeyDownHandler_fn = function(e) {\n  const { metaKey, altKey, key } = e;\n  if (metaKey || altKey || !ButtonPressedKeys.includes(key)) {\n    this.removeEventListener(\"keyup\", __privateMethod2(this, _keyUpHandler, keyUpHandler_fn));\n    return;\n  }\n  if ([\" \", \"ArrowLeft\", \"ArrowRight\"].includes(key) && !(__privateGet4(this, _hotKeys).contains(`no${key.toLowerCase()}`) || key === \" \" && __privateGet4(this, _hotKeys).contains(\"nospace\"))) {\n    e.preventDefault();\n  }\n  this.addEventListener(\"keyup\", __privateMethod2(this, _keyUpHandler, keyUpHandler_fn), { once: true });\n};\nvar MEDIA_UI_ATTRIBUTE_NAMES2 = Object.values(MediaUIAttributes);\nvar MEDIA_UI_PROP_NAMES = Object.values(MediaUIProps);\nvar getMediaUIAttributesFrom = (child) => {\n  var _a3, _b, _c, _d;\n  let { observedAttributes } = child.constructor;\n  if (!observedAttributes && ((_a3 = child.nodeName) == null ? void 0 : _a3.includes(\"-\"))) {\n    GlobalThis.customElements.upgrade(child);\n    ({ observedAttributes } = child.constructor);\n  }\n  const mediaChromeAttributesList = (_d = (_c = (_b = child == null ? void 0 : child.getAttribute) == null ? void 0 : _b.call(child, MediaStateReceiverAttributes.MEDIA_CHROME_ATTRIBUTES)) == null ? void 0 : _c.split) == null ? void 0 : _d.call(_c, /\\s+/);\n  if (!Array.isArray(observedAttributes || mediaChromeAttributesList))\n    return [];\n  return (observedAttributes || mediaChromeAttributesList).filter(\n    (attrName) => MEDIA_UI_ATTRIBUTE_NAMES2.includes(attrName)\n  );\n};\nvar hasMediaUIProps = (mediaStateReceiverCandidate) => {\n  var _a3, _b;\n  if (((_a3 = mediaStateReceiverCandidate.nodeName) == null ? void 0 : _a3.includes(\"-\")) && !!GlobalThis.customElements.get(\n    (_b = mediaStateReceiverCandidate.nodeName) == null ? void 0 : _b.toLowerCase()\n  ) && !(mediaStateReceiverCandidate instanceof GlobalThis.customElements.get(\n    mediaStateReceiverCandidate.nodeName.toLowerCase()\n  ))) {\n    GlobalThis.customElements.upgrade(mediaStateReceiverCandidate);\n  }\n  return MEDIA_UI_PROP_NAMES.some(\n    (propName) => propName in mediaStateReceiverCandidate\n  );\n};\nvar isMediaStateReceiver = (child) => {\n  return hasMediaUIProps(child) || !!getMediaUIAttributesFrom(child).length;\n};\nvar serializeTuple = (tuple) => {\n  var _a3;\n  return (_a3 = tuple == null ? void 0 : tuple.join) == null ? void 0 : _a3.call(tuple, \":\");\n};\nvar CustomAttrSerializer = {\n  [MediaUIAttributes.MEDIA_SUBTITLES_LIST]: stringifyTextTrackList,\n  [MediaUIAttributes.MEDIA_SUBTITLES_SHOWING]: stringifyTextTrackList,\n  [MediaUIAttributes.MEDIA_SEEKABLE]: serializeTuple,\n  [MediaUIAttributes.MEDIA_BUFFERED]: (tuples) => tuples == null ? void 0 : tuples.map(serializeTuple).join(\" \"),\n  [MediaUIAttributes.MEDIA_PREVIEW_COORDS]: (coords) => coords == null ? void 0 : coords.join(\" \"),\n  [MediaUIAttributes.MEDIA_RENDITION_LIST]: stringifyRenditionList,\n  [MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST]: stringifyAudioTrackList\n};\nvar setAttr = (child, attrName, attrValue) => __async(null, null, function* () {\n  var _a3, _b;\n  if (!child.isConnected) {\n    yield delay(0);\n  }\n  if (typeof attrValue === \"boolean\" || attrValue == null) {\n    return setBooleanAttr(child, attrName, attrValue);\n  }\n  if (typeof attrValue === \"number\") {\n    return setNumericAttr(child, attrName, attrValue);\n  }\n  if (typeof attrValue === \"string\") {\n    return setStringAttr(child, attrName, attrValue);\n  }\n  if (Array.isArray(attrValue) && !attrValue.length) {\n    return child.removeAttribute(attrName);\n  }\n  const val = (_b = (_a3 = CustomAttrSerializer[attrName]) == null ? void 0 : _a3.call(CustomAttrSerializer, attrValue)) != null ? _b : attrValue;\n  return child.setAttribute(attrName, val);\n});\nvar isMediaSlotElementDescendant = (el) => {\n  var _a3;\n  return !!((_a3 = el.closest) == null ? void 0 : _a3.call(el, '*[slot=\"media\"]'));\n};\nvar traverseForMediaStateReceivers = (rootNode, mediaStateReceiverCallback) => {\n  if (isMediaSlotElementDescendant(rootNode)) {\n    return;\n  }\n  const traverseForMediaStateReceiversSync = (rootNode2, mediaStateReceiverCallback2) => {\n    var _a3, _b;\n    if (isMediaStateReceiver(rootNode2)) {\n      mediaStateReceiverCallback2(rootNode2);\n    }\n    const { children = [] } = rootNode2 != null ? rootNode2 : {};\n    const shadowChildren = (_b = (_a3 = rootNode2 == null ? void 0 : rootNode2.shadowRoot) == null ? void 0 : _a3.children) != null ? _b : [];\n    const allChildren = [...children, ...shadowChildren];\n    allChildren.forEach(\n      (child) => traverseForMediaStateReceivers(child, mediaStateReceiverCallback2)\n    );\n  };\n  const name = rootNode == null ? void 0 : rootNode.nodeName.toLowerCase();\n  if (name.includes(\"-\") && !isMediaStateReceiver(rootNode)) {\n    GlobalThis.customElements.whenDefined(name).then(() => {\n      traverseForMediaStateReceiversSync(rootNode, mediaStateReceiverCallback);\n    });\n    return;\n  }\n  traverseForMediaStateReceiversSync(rootNode, mediaStateReceiverCallback);\n};\nvar propagateMediaState = (els, stateName, val) => {\n  els.forEach((el) => {\n    if (stateName in el) {\n      el[stateName] = val;\n      return;\n    }\n    const relevantAttrs = getMediaUIAttributesFrom(el);\n    const attrName = stateName.toLowerCase();\n    if (!relevantAttrs.includes(attrName))\n      return;\n    setAttr(el, attrName, val);\n  });\n};\nvar monitorForMediaStateReceivers = (rootNode, registerMediaStateReceiver, unregisterMediaStateReceiver) => {\n  traverseForMediaStateReceivers(rootNode, registerMediaStateReceiver);\n  const registerMediaStateReceiverHandler = (evt) => {\n    var _a3;\n    const el = (_a3 = evt == null ? void 0 : evt.composedPath()[0]) != null ? _a3 : evt.target;\n    registerMediaStateReceiver(el);\n  };\n  const unregisterMediaStateReceiverHandler = (evt) => {\n    var _a3;\n    const el = (_a3 = evt == null ? void 0 : evt.composedPath()[0]) != null ? _a3 : evt.target;\n    unregisterMediaStateReceiver(el);\n  };\n  rootNode.addEventListener(\n    MediaUIEvents.REGISTER_MEDIA_STATE_RECEIVER,\n    registerMediaStateReceiverHandler\n  );\n  rootNode.addEventListener(\n    MediaUIEvents.UNREGISTER_MEDIA_STATE_RECEIVER,\n    unregisterMediaStateReceiverHandler\n  );\n  const mutationCallback = (mutationsList) => {\n    mutationsList.forEach((mutationRecord) => {\n      const {\n        addedNodes = [],\n        removedNodes = [],\n        type,\n        target,\n        attributeName\n      } = mutationRecord;\n      if (type === \"childList\") {\n        Array.prototype.forEach.call(\n          addedNodes,\n          (node) => traverseForMediaStateReceivers(node, registerMediaStateReceiver)\n        );\n        Array.prototype.forEach.call(\n          removedNodes,\n          (node) => traverseForMediaStateReceivers(node, unregisterMediaStateReceiver)\n        );\n      } else if (type === \"attributes\" && attributeName === MediaStateReceiverAttributes.MEDIA_CHROME_ATTRIBUTES) {\n        if (isMediaStateReceiver(target)) {\n          registerMediaStateReceiver(target);\n        } else {\n          unregisterMediaStateReceiver(target);\n        }\n      }\n    });\n  };\n  let prevSlotted = [];\n  const slotChangeHandler = (event) => {\n    const slotEl = (\n      /** @type {HTMLSlotElement} */\n      event.target\n    );\n    if (slotEl.name === \"media\")\n      return;\n    prevSlotted.forEach(\n      (node) => traverseForMediaStateReceivers(node, unregisterMediaStateReceiver)\n    );\n    prevSlotted = /** @type {HTMLElement[]} */\n    [\n      ...slotEl.assignedElements({ flatten: true })\n    ];\n    prevSlotted.forEach(\n      (node) => traverseForMediaStateReceivers(node, registerMediaStateReceiver)\n    );\n  };\n  rootNode.addEventListener(\"slotchange\", slotChangeHandler);\n  const observer2 = new MutationObserver(mutationCallback);\n  observer2.observe(rootNode, {\n    childList: true,\n    attributes: true,\n    subtree: true\n  });\n  const unsubscribe = () => {\n    traverseForMediaStateReceivers(rootNode, unregisterMediaStateReceiver);\n    rootNode.removeEventListener(\"slotchange\", slotChangeHandler);\n    observer2.disconnect();\n    rootNode.removeEventListener(\n      MediaUIEvents.REGISTER_MEDIA_STATE_RECEIVER,\n      registerMediaStateReceiverHandler\n    );\n    rootNode.removeEventListener(\n      MediaUIEvents.UNREGISTER_MEDIA_STATE_RECEIVER,\n      unregisterMediaStateReceiverHandler\n    );\n  };\n  return unsubscribe;\n};\nif (!GlobalThis.customElements.get(\"media-controller\")) {\n  GlobalThis.customElements.define(\"media-controller\", MediaController);\n}\nvar media_controller_default = MediaController;\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-chrome-button.js\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => {\n  __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck5 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet5 = (obj, member, getter) => {\n  __accessCheck5(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd5 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet5 = (obj, member, value, setter) => {\n  __accessCheck5(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _mediaController2;\nvar _clickListener;\nvar _keyupListener;\nvar _keydownListener;\nvar template3 = Document2.createElement(\"template\");\ntemplate3.innerHTML = /*html*/\n`\n<style>\n  :host {\n    font: var(--media-font,\n      var(--media-font-weight, bold)\n      var(--media-font-size, 14px) /\n      var(--media-text-content-height, var(--media-control-height, 24px))\n      var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n    color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n    background: var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .7)));\n    padding: var(--media-button-padding, var(--media-control-padding, 10px));\n    justify-content: var(--media-button-justify-content, center);\n    display: inline-flex;\n    align-items: center;\n    vertical-align: middle;\n    box-sizing: border-box;\n    transition: background .15s linear;\n    pointer-events: auto;\n    cursor: pointer;\n    -webkit-tap-highlight-color: transparent;\n  }\n\n  ${/*\n  Only show outline when keyboard focusing.\n  https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo\n*/\n\"\"}\n  :host(:focus-visible) {\n    box-shadow: inset 0 0 0 2px rgb(27 127 204 / .9);\n    outline: 0;\n  }\n  ${/*\n* hide default focus ring, particularly when using mouse\n*/\n\"\"}\n  :host(:where(:focus)) {\n    box-shadow: none;\n    outline: 0;\n  }\n\n  :host(:hover) {\n    background: var(--media-control-hover-background, rgba(50 50 70 / .7));\n  }\n\n  svg, img, ::slotted(svg), ::slotted(img) {\n    width: var(--media-button-icon-width);\n    height: var(--media-button-icon-height, var(--media-control-height, 24px));\n    transform: var(--media-button-icon-transform);\n    transition: var(--media-button-icon-transition);\n    fill: var(--media-icon-color, var(--media-primary-color, rgb(238 238 238)));\n    vertical-align: middle;\n    max-width: 100%;\n    max-height: 100%;\n    min-width: 100%;\n  }\n</style>\n`;\nvar MediaChromeButton = class extends GlobalThis.HTMLElement {\n  constructor(options = {}) {\n    super();\n    __privateAdd5(this, _mediaController2, void 0);\n    __publicField2(this, \"preventClick\", false);\n    __privateAdd5(this, _clickListener, (e) => {\n      if (!this.preventClick) {\n        this.handleClick(e);\n      }\n    });\n    __privateAdd5(this, _keyupListener, (e) => {\n      const { key } = e;\n      if (!this.keysUsed.includes(key)) {\n        this.removeEventListener(\"keyup\", __privateGet5(this, _keyupListener));\n        return;\n      }\n      if (!this.preventClick) {\n        this.handleClick(e);\n      }\n    });\n    __privateAdd5(this, _keydownListener, (e) => {\n      const { metaKey, altKey, key } = e;\n      if (metaKey || altKey || !this.keysUsed.includes(key)) {\n        this.removeEventListener(\"keyup\", __privateGet5(this, _keyupListener));\n        return;\n      }\n      this.addEventListener(\"keyup\", __privateGet5(this, _keyupListener), { once: true });\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      const buttonHTML = template3.content.cloneNode(true);\n      this.nativeEl = buttonHTML;\n      let slotTemplate20 = options.slotTemplate;\n      if (!slotTemplate20) {\n        slotTemplate20 = Document2.createElement(\"template\");\n        slotTemplate20.innerHTML = `<slot>${options.defaultContent || \"\"}</slot>`;\n      }\n      this.nativeEl.appendChild(slotTemplate20.content.cloneNode(true));\n      this.shadowRoot.appendChild(buttonHTML);\n    }\n  }\n  static get observedAttributes() {\n    return [\"disabled\", MediaStateReceiverAttributes.MEDIA_CONTROLLER];\n  }\n  enable() {\n    this.addEventListener(\"click\", __privateGet5(this, _clickListener));\n    this.addEventListener(\"keydown\", __privateGet5(this, _keydownListener));\n    this.tabIndex = 0;\n  }\n  disable() {\n    this.removeEventListener(\"click\", __privateGet5(this, _clickListener));\n    this.removeEventListener(\"keydown\", __privateGet5(this, _keydownListener));\n    this.removeEventListener(\"keyup\", __privateGet5(this, _keyupListener));\n    this.tabIndex = -1;\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet5(this, _mediaController2)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet5(this, _mediaController2, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet5(this, _mediaController2, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet5(this, _mediaController2)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    } else if (attrName === \"disabled\" && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n    style.setProperty(\n      \"display\",\n      `var(--media-control-display, var(--${this.localName}-display, inline-flex))`\n    );\n    if (!this.hasAttribute(\"disabled\")) {\n      this.enable();\n    }\n    this.setAttribute(\"role\", \"button\");\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet5(\n        this,\n        _mediaController2,\n        // @ts-ignore\n        (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId)\n      );\n      (_c = (_b = __privateGet5(this, _mediaController2)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    this.disable();\n    (_b = (_a3 = __privateGet5(this, _mediaController2)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet5(this, _mediaController2, null);\n  }\n  get keysUsed() {\n    return [\"Enter\", \" \"];\n  }\n  /**\n   * @abstract\n   * @argument {Event} e\n   */\n  handleClick(e) {\n  }\n  // eslint-disable-line\n};\n_mediaController2 = /* @__PURE__ */ new WeakMap();\n_clickListener = /* @__PURE__ */ new WeakMap();\n_keyupListener = /* @__PURE__ */ new WeakMap();\n_keydownListener = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-chrome-button\")) {\n  GlobalThis.customElements.define(\"media-chrome-button\", MediaChromeButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-airplay-button.js\nvar airplayIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M22.13 3H3.87a.87.87 0 0 0-.87.87v13.26a.87.87 0 0 0 .87.87h3.4L9 16H5V5h16v11h-4l1.72 2h3.4a.87.87 0 0 0 .87-.87V3.87a.87.87 0 0 0-.86-.87Zm-8.75 11.44a.5.5 0 0 0-.76 0l-4.91 5.73a.5.5 0 0 0 .38.83h9.82a.501.501 0 0 0 .38-.83l-4.91-5.73Z\"/>\n</svg>\n`;\nvar slotTemplate = Document2.createElement(\"template\");\nslotTemplate.innerHTML = /*html*/\n`\n  <style>\n  :host([${MediaUIAttributes.MEDIA_IS_AIRPLAYING}]) slot:not([name=exit]):not([name=icon]) {\n    display: none !important;\n  }\n\n  ${/* Double negative, but safer if display doesn't equal 'block' */\n\"\"}\n  :host(:not([${MediaUIAttributes.MEDIA_IS_AIRPLAYING}])) slot:not([name=enter]):not([name=icon]) {\n    display: none !important;\n  }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"enter\">${airplayIcon}</slot>\n    <slot name=\"exit\">${airplayIcon}</slot>\n  </slot>\n`;\nvar updateAriaLabel = (el) => {\n  const label = el.mediaIsAirplaying ? verbs.EXIT_AIRPLAY() : verbs.ENTER_AIRPLAY();\n  el.setAttribute(\"aria-label\", label);\n};\nvar MediaAirplayButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_IS_AIRPLAYING,\n      MediaUIAttributes.MEDIA_AIRPLAY_UNAVAILABLE\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate }, options));\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    updateAriaLabel(this);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_IS_AIRPLAYING) {\n      updateAriaLabel(this);\n    }\n  }\n  /**\n   * @type {boolean} Are we currently airplaying\n   */\n  get mediaIsAirplaying() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_IS_AIRPLAYING);\n  }\n  set mediaIsAirplaying(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_IS_AIRPLAYING, value);\n  }\n  /**\n   * @type {string | undefined} Airplay unavailability state\n   */\n  get mediaAirplayUnavailable() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_AIRPLAY_UNAVAILABLE);\n  }\n  set mediaAirplayUnavailable(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_AIRPLAY_UNAVAILABLE, value);\n  }\n  handleClick() {\n    const evt = new GlobalThis.CustomEvent(\n      MediaUIEvents.MEDIA_AIRPLAY_REQUEST,\n      {\n        composed: true,\n        bubbles: true\n      }\n    );\n    this.dispatchEvent(evt);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-airplay-button\")) {\n  GlobalThis.customElements.define(\"media-airplay-button\", MediaAirplayButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/anchor-utils.js\nfunction computePosition({ anchor, floating, placement }) {\n  let rects = getElementRects({ anchor, floating });\n  let { x: x4, y: y5 } = computeCoordsFromPlacement(rects, placement);\n  return { x: x4, y: y5 };\n}\nfunction getElementRects({ anchor, floating }) {\n  return {\n    anchor: getRectRelativeToOffsetParent(anchor, floating.offsetParent),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floating.offsetWidth,\n      height: floating.offsetHeight\n    }\n  };\n}\nfunction getRectRelativeToOffsetParent(element, offsetParent) {\n  let rect = element.getBoundingClientRect();\n  let offsetRect = offsetParent.getBoundingClientRect();\n  return {\n    x: rect.x - offsetRect.x,\n    y: rect.y - offsetRect.y,\n    width: rect.width,\n    height: rect.height\n  };\n}\nfunction computeCoordsFromPlacement({ anchor, floating }, placement) {\n  const alignmentAxis = getSideAxis(placement) === \"x\" ? \"y\" : \"x\";\n  const alignLength = alignmentAxis === \"y\" ? \"height\" : \"width\";\n  const side = getSide(placement);\n  const commonX = anchor.x + anchor.width / 2 - floating.width / 2;\n  const commonY = anchor.y + anchor.height / 2 - floating.height / 2;\n  const commonAlign = anchor[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case \"top\":\n      coords = { x: commonX, y: anchor.y - floating.height };\n      break;\n    case \"bottom\":\n      coords = { x: commonX, y: anchor.y + anchor.height };\n      break;\n    case \"right\":\n      coords = { x: anchor.x + anchor.width, y: commonY };\n      break;\n    case \"left\":\n      coords = { x: anchor.x - floating.width, y: commonY };\n      break;\n    default:\n      coords = { x: anchor.x, y: anchor.y };\n  }\n  switch (placement.split(\"-\")[1]) {\n    case \"start\":\n      coords[alignmentAxis] -= commonAlign;\n      break;\n    case \"end\":\n      coords[alignmentAxis] += commonAlign;\n      break;\n  }\n  return coords;\n}\nfunction getSide(placement) {\n  return placement.split(\"-\")[0];\n}\nfunction getSideAxis(placement) {\n  return [\"top\", \"bottom\"].includes(getSide(placement)) ? \"y\" : \"x\";\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/events.js\nvar __defProp3 = Object.defineProperty;\nvar __defNormalProp3 = (obj, key, value) => key in obj ? __defProp3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField3 = (obj, key, value) => {\n  __defNormalProp3(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar InvokeEvent = class extends Event {\n  /** @param  {EventInit & { action?: string, relatedTarget: Element }} init */\n  constructor(_a3) {\n    var _b = _a3, { action = \"auto\", relatedTarget } = _b, options = __objRest(_b, [\"action\", \"relatedTarget\"]);\n    super(\"invoke\", options);\n    __publicField3(this, \"action\");\n    __publicField3(this, \"relatedTarget\");\n    this.action = action;\n    this.relatedTarget = relatedTarget;\n  }\n};\nvar ToggleEvent = class extends Event {\n  /**\n   * @param  {EventInit & { newState: 'open' | 'closed', oldState: 'open' | 'closed' }} init\n   */\n  constructor(_a3) {\n    var _b = _a3, { newState, oldState } = _b, options = __objRest(_b, [\"newState\", \"oldState\"]);\n    super(\"toggle\", options);\n    __publicField3(this, \"newState\");\n    __publicField3(this, \"oldState\");\n    this.newState = newState;\n    this.oldState = oldState;\n  }\n};\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-chrome-menu.js\nvar __defProp4 = Object.defineProperty;\nvar __defNormalProp4 = (obj, key, value) => key in obj ? __defProp4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField4 = (obj, key, value) => {\n  __defNormalProp4(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck6 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet6 = (obj, member, getter) => {\n  __accessCheck6(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd6 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet6 = (obj, member, value, setter) => {\n  __accessCheck6(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod3 = (obj, member, method) => {\n  __accessCheck6(obj, member, \"access private method\");\n  return method;\n};\nvar _mediaController3;\nvar _previouslyFocused;\nvar _invokerElement;\nvar _keysSoFar;\nvar _clearKeysTimeout;\nvar _previousItems;\nvar _mutationObserver;\nvar _isPopover;\nvar _handleSlotChange;\nvar handleSlotChange_fn;\nvar _handleMenuItems;\nvar _updateLayoutStyle;\nvar updateLayoutStyle_fn;\nvar _handleInvoke;\nvar handleInvoke_fn;\nvar _handleOpen;\nvar handleOpen_fn;\nvar _handleClosed;\nvar handleClosed_fn;\nvar _handleBoundsResize;\nvar _handleMenuResize;\nvar _positionMenu;\nvar positionMenu_fn;\nvar _resizeMenu;\nvar resizeMenu_fn;\nvar _handleClick;\nvar handleClick_fn;\nvar _backButtonElement;\nvar backButtonElement_get;\nvar _handleToggle;\nvar handleToggle_fn;\nvar _checkSubmenuHasExpanded;\nvar checkSubmenuHasExpanded_fn;\nvar _handleFocusOut;\nvar handleFocusOut_fn;\nvar _handleKeyDown;\nvar handleKeyDown_fn;\nvar _getItem;\nvar getItem_fn;\nvar _getTabItem;\nvar getTabItem_fn;\nvar _setTabItem;\nvar setTabItem_fn;\nvar _selectItem;\nvar selectItem_fn;\nfunction createMenuItem({ type, text, value, checked }) {\n  const item = Document2.createElement(\"media-chrome-menu-item\");\n  item.type = type != null ? type : \"\";\n  item.part.add(\"menu-item\");\n  if (type)\n    item.part.add(type);\n  item.value = value;\n  item.checked = checked;\n  const label = Document2.createElement(\"span\");\n  label.textContent = text;\n  item.append(label);\n  return item;\n}\nfunction createIndicator(el, name) {\n  let customIndicator = el.querySelector(`:scope > [slot=\"${name}\"]`);\n  if ((customIndicator == null ? void 0 : customIndicator.nodeName) == \"SLOT\")\n    customIndicator = customIndicator.assignedElements({ flatten: true })[0];\n  if (customIndicator) {\n    customIndicator = customIndicator.cloneNode(true);\n    return customIndicator;\n  }\n  let fallbackIndicator = el.shadowRoot.querySelector(`[name=\"${name}\"] > svg`);\n  if (fallbackIndicator) {\n    return fallbackIndicator.cloneNode(true);\n  }\n  return \"\";\n}\nvar template4 = Document2.createElement(\"template\");\ntemplate4.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      font: var(--media-font,\n        var(--media-font-weight, normal)\n        var(--media-font-size, 14px) /\n        var(--media-text-content-height, var(--media-control-height, 24px))\n        var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n      color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n      background: var(--media-menu-background, var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .8))));\n      border-radius: var(--media-menu-border-radius);\n      border: var(--media-menu-border, none);\n      display: var(--media-menu-display, inline-flex);\n      transition: var(--media-menu-transition-in,\n        visibility 0s,\n        opacity .2s ease-out,\n        transform .15s ease-out,\n        left .2s ease-in-out,\n        min-width .2s ease-in-out,\n        min-height .2s ease-in-out\n      ) !important;\n      ${/* ^^Prevent transition override by media-container */\n\"\"}\n      visibility: var(--media-menu-visibility, visible);\n      opacity: var(--media-menu-opacity, 1);\n      max-height: var(--media-menu-max-height, var(--_menu-max-height, 300px));\n      transform: var(--media-menu-transform-in, translateY(0) scale(1));\n      flex-direction: column;\n      ${/* Prevent overflowing a flex container */\n\"\"}\n      min-height: 0;\n      position: relative;\n      box-sizing: border-box;\n    }\n\n    :host([hidden]) {\n      transition: var(--media-menu-transition-out,\n        visibility .15s ease-in,\n        opacity .15s ease-in,\n        transform .15s ease-in\n      ) !important;\n      visibility: var(--media-menu-hidden-visibility, hidden);\n      opacity: var(--media-menu-hidden-opacity, 0);\n      max-height: var(--media-menu-hidden-max-height,\n        var(--media-menu-max-height, var(--_menu-max-height, 300px)));\n      transform: var(--media-menu-transform-out, translateY(2px) scale(.99));\n      pointer-events: none;\n    }\n\n    :host([slot=\"submenu\"]) {\n      background: none;\n      width: 100%;\n      min-height: 100%;\n      position: absolute;\n      bottom: 0;\n      right: -100%;\n    }\n\n    #container {\n      display: flex;\n      flex-direction: column;\n      min-height: 0;\n      transition: transform .2s ease-out;\n      transform: translate(0, 0);\n    }\n\n    #container.has-expanded {\n      transition: transform .2s ease-in;\n      transform: translate(-100%, 0);\n    }\n\n    slot[name=\"header\"] {\n      display: flex;\n      padding: .4em .7em;\n      border-bottom: 1px solid rgb(255 255 255 / .25);\n      cursor: default;\n    }\n\n    slot[name=\"header\"][hidden] {\n      display: none;\n    }\n\n    button[part~=\"back\"] {\n      background: none;\n      color: inherit;\n      border: none;\n      padding: 0;\n      font: inherit;\n      cursor: pointer;\n      outline: inherit;\n      display: inline-flex;\n      align-items: center;\n      cursor: pointer;\n    }\n\n    svg[part~=\"back\"] {\n      height: var(--media-menu-icon-height, var(--media-control-height, 24px));\n      fill: var(--media-icon-color, var(--media-primary-color, rgb(238 238 238)));\n      display: block;\n      margin-right: .5ch;\n    }\n\n    slot:not([name]) {\n      gap: var(--media-menu-gap);\n      flex-direction: var(--media-menu-flex-direction, column);\n      overflow: var(--media-menu-overflow, hidden auto);\n      display: flex;\n      min-height: 0;\n    }\n\n    :host([role=\"menu\"]) slot:not([name]) {\n      padding-block: .4em;\n    }\n\n    slot:not([name])::slotted([role=\"menu\"]) {\n      background: none;\n    }\n\n    media-chrome-menu-item > span {\n      margin-right: .5ch;\n      max-width: var(--media-menu-item-max-width);\n      text-overflow: ellipsis;\n      overflow: hidden;\n    }\n  </style>\n  <style id=\"layout-row\" media=\"width:0\">\n\n    slot[name=\"header\"] {\n      padding: .4em .5em;\n    }\n\n    slot:not([name]) {\n      gap: var(--media-menu-gap, .25em);\n      flex-direction: var(--media-menu-flex-direction, row);\n      padding-inline: .5em;\n    }\n\n    media-chrome-menu-item {\n      padding: .3em .5em;\n    }\n\n    media-chrome-menu-item[aria-checked=\"true\"] {\n      background: var(--media-menu-item-checked-background, rgb(255 255 255 / .2));\n    }\n\n    ${/* In row layout hide the checked indicator completely. */\n\"\"}\n    media-chrome-menu-item::part(checked-indicator) {\n      display: var(--media-menu-item-checked-indicator-display, none);\n    }\n  </style>\n  <div id=\"container\">\n    <slot name=\"header\" hidden>\n      <button part=\"back button\" aria-label=\"Back to previous menu\">\n        <slot name=\"back-icon\">\n          <svg aria-hidden=\"true\" viewBox=\"0 0 20 24\" part=\"back indicator\">\n            <path d=\"m11.88 17.585.742-.669-4.2-4.665 4.2-4.666-.743-.669-4.803 5.335 4.803 5.334Z\"/>\n          </svg>\n        </slot>\n        <slot name=\"title\"></slot>\n      </button>\n    </slot>\n    <slot></slot>\n  </div>\n  <slot name=\"checked-indicator\" hidden></slot>\n`;\nvar Attributes3 = {\n  STYLE: \"style\",\n  HIDDEN: \"hidden\",\n  DISABLED: \"disabled\",\n  ANCHOR: \"anchor\"\n};\nvar MediaChromeMenu = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd6(this, _handleSlotChange);\n    __privateAdd6(this, _updateLayoutStyle);\n    __privateAdd6(this, _handleInvoke);\n    __privateAdd6(this, _handleOpen);\n    __privateAdd6(this, _handleClosed);\n    __privateAdd6(this, _positionMenu);\n    __privateAdd6(this, _resizeMenu);\n    __privateAdd6(this, _handleClick);\n    __privateAdd6(this, _backButtonElement);\n    __privateAdd6(this, _handleToggle);\n    __privateAdd6(this, _checkSubmenuHasExpanded);\n    __privateAdd6(this, _handleFocusOut);\n    __privateAdd6(this, _handleKeyDown);\n    __privateAdd6(this, _getItem);\n    __privateAdd6(this, _getTabItem);\n    __privateAdd6(this, _setTabItem);\n    __privateAdd6(this, _selectItem);\n    __privateAdd6(this, _mediaController3, void 0);\n    __privateAdd6(this, _previouslyFocused, void 0);\n    __privateAdd6(this, _invokerElement, void 0);\n    __privateAdd6(this, _keysSoFar, \"\");\n    __privateAdd6(this, _clearKeysTimeout, null);\n    __privateAdd6(this, _previousItems, /* @__PURE__ */ new Set());\n    __privateAdd6(this, _mutationObserver, void 0);\n    __privateAdd6(this, _isPopover, false);\n    __privateAdd6(this, _handleMenuItems, () => {\n      const previousItems = __privateGet6(this, _previousItems);\n      const currentItems = new Set(this.items);\n      for (const item of previousItems) {\n        if (!currentItems.has(item)) {\n          this.dispatchEvent(new CustomEvent(\"removemenuitem\", { detail: item }));\n        }\n      }\n      for (const item of currentItems) {\n        if (!previousItems.has(item)) {\n          this.dispatchEvent(new CustomEvent(\"addmenuitem\", { detail: item }));\n        }\n      }\n      __privateSet6(this, _previousItems, currentItems);\n    });\n    __privateAdd6(this, _handleBoundsResize, () => {\n      __privateMethod3(this, _positionMenu, positionMenu_fn).call(this, false);\n      __privateMethod3(this, _resizeMenu, resizeMenu_fn).call(this, false);\n    });\n    __privateAdd6(this, _handleMenuResize, () => {\n      __privateMethod3(this, _positionMenu, positionMenu_fn).call(this, false);\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.nativeEl = this.constructor.template.content.cloneNode(true);\n      this.shadowRoot.append(this.nativeEl);\n    }\n    this.container = this.shadowRoot.querySelector(\"#container\");\n    this.defaultSlot = this.shadowRoot.querySelector(\"slot:not([name])\");\n    this.shadowRoot.addEventListener(\"slotchange\", this);\n    __privateSet6(this, _mutationObserver, new MutationObserver(__privateGet6(this, _handleMenuItems)));\n    __privateGet6(this, _mutationObserver).observe(this.defaultSlot, { childList: true });\n  }\n  static get observedAttributes() {\n    return [\n      Attributes3.DISABLED,\n      Attributes3.HIDDEN,\n      Attributes3.STYLE,\n      Attributes3.ANCHOR,\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    ];\n  }\n  static formatMenuItemText(text) {\n    return text;\n  }\n  enable() {\n    this.addEventListener(\"click\", this);\n    this.addEventListener(\"focusout\", this);\n    this.addEventListener(\"keydown\", this);\n    this.addEventListener(\"invoke\", this);\n    this.addEventListener(\"toggle\", this);\n  }\n  disable() {\n    this.removeEventListener(\"click\", this);\n    this.removeEventListener(\"focusout\", this);\n    this.removeEventListener(\"keyup\", this);\n    this.removeEventListener(\"invoke\", this);\n    this.removeEventListener(\"toggle\", this);\n  }\n  handleEvent(event) {\n    switch (event.type) {\n      case \"slotchange\":\n        __privateMethod3(this, _handleSlotChange, handleSlotChange_fn).call(this, event);\n        break;\n      case \"invoke\":\n        __privateMethod3(this, _handleInvoke, handleInvoke_fn).call(this, event);\n        break;\n      case \"click\":\n        __privateMethod3(this, _handleClick, handleClick_fn).call(this, event);\n        break;\n      case \"toggle\":\n        __privateMethod3(this, _handleToggle, handleToggle_fn).call(this, event);\n        break;\n      case \"focusout\":\n        __privateMethod3(this, _handleFocusOut, handleFocusOut_fn).call(this, event);\n        break;\n      case \"keydown\":\n        __privateMethod3(this, _handleKeyDown, handleKeyDown_fn).call(this, event);\n        break;\n    }\n  }\n  connectedCallback() {\n    var _a3, _b;\n    __privateMethod3(this, _updateLayoutStyle, updateLayoutStyle_fn).call(this);\n    if (!this.hasAttribute(\"disabled\")) {\n      this.enable();\n    }\n    if (!this.role) {\n      this.role = \"menu\";\n    }\n    __privateSet6(this, _mediaController3, getAttributeMediaController(this));\n    (_b = (_a3 = __privateGet6(this, _mediaController3)) == null ? void 0 : _a3.associateElement) == null ? void 0 : _b.call(_a3, this);\n    if (!this.hidden) {\n      observeResize(getBoundsElement(this), __privateGet6(this, _handleBoundsResize));\n      observeResize(this, __privateGet6(this, _handleMenuResize));\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    unobserveResize(getBoundsElement(this), __privateGet6(this, _handleBoundsResize));\n    unobserveResize(this, __privateGet6(this, _handleMenuResize));\n    this.disable();\n    (_b = (_a3 = __privateGet6(this, _mediaController3)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet6(this, _mediaController3, null);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d;\n    if (attrName === Attributes3.HIDDEN && newValue !== oldValue) {\n      if (!__privateGet6(this, _isPopover))\n        __privateSet6(this, _isPopover, true);\n      if (this.hidden) {\n        __privateMethod3(this, _handleClosed, handleClosed_fn).call(this);\n      } else {\n        __privateMethod3(this, _handleOpen, handleOpen_fn).call(this);\n      }\n      this.dispatchEvent(\n        new ToggleEvent({\n          oldState: this.hidden ? \"open\" : \"closed\",\n          newState: this.hidden ? \"closed\" : \"open\",\n          bubbles: true\n        })\n      );\n    } else if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet6(this, _mediaController3)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet6(this, _mediaController3, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet6(this, _mediaController3, getAttributeMediaController(this));\n        (_d = (_c = __privateGet6(this, _mediaController3)) == null ? void 0 : _c.associateElement) == null ? void 0 : _d.call(_c, this);\n      }\n    } else if (attrName === Attributes3.DISABLED && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    } else if (attrName === Attributes3.STYLE && newValue !== oldValue) {\n      __privateMethod3(this, _updateLayoutStyle, updateLayoutStyle_fn).call(this);\n    }\n  }\n  formatMenuItemText(text, data) {\n    return this.constructor.formatMenuItemText(text, data);\n  }\n  get anchor() {\n    return this.getAttribute(\"anchor\");\n  }\n  set anchor(value) {\n    this.setAttribute(\"anchor\", `${value}`);\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   * @return {HTMLElement}\n   */\n  get anchorElement() {\n    var _a3;\n    if (this.anchor) {\n      return (_a3 = getDocumentOrShadowRoot(this)) == null ? void 0 : _a3.querySelector(`#${this.anchor}`);\n    }\n    return null;\n  }\n  /**\n   * Returns the menu items.\n   */\n  get items() {\n    return (\n      /** @type {MediaChromeMenuItem[] | null} */\n      this.defaultSlot.assignedElements({ flatten: true }).filter(isMenuItem)\n    );\n  }\n  get radioGroupItems() {\n    return this.items.filter((item) => item.role === \"menuitemradio\");\n  }\n  get checkedItems() {\n    return this.items.filter((item) => item.checked);\n  }\n  get value() {\n    var _a3, _b;\n    return (_b = (_a3 = this.checkedItems[0]) == null ? void 0 : _a3.value) != null ? _b : \"\";\n  }\n  set value(newValue) {\n    const item = this.items.find((item2) => item2.value === newValue);\n    if (!item)\n      return;\n    __privateMethod3(this, _selectItem, selectItem_fn).call(this, item);\n  }\n  focus() {\n    __privateSet6(this, _previouslyFocused, getActiveElement());\n    if (this.items.length) {\n      __privateMethod3(this, _setTabItem, setTabItem_fn).call(this, this.items[0]);\n      this.items[0].focus();\n      return;\n    }\n    const focusable = this.querySelector(\n      '[autofocus], [tabindex]:not([tabindex=\"-1\"]), [role=\"menu\"]'\n    );\n    focusable == null ? void 0 : focusable.focus();\n  }\n  handleSelect(event) {\n    var _a3;\n    const item = __privateMethod3(this, _getItem, getItem_fn).call(this, event);\n    if (!item)\n      return;\n    __privateMethod3(this, _selectItem, selectItem_fn).call(this, item, item.type === \"checkbox\");\n    if (__privateGet6(this, _invokerElement) && !this.hidden) {\n      (_a3 = __privateGet6(this, _previouslyFocused)) == null ? void 0 : _a3.focus();\n      this.hidden = true;\n    }\n  }\n  get keysUsed() {\n    return [\n      \"Enter\",\n      \"Escape\",\n      \"Tab\",\n      \" \",\n      \"ArrowDown\",\n      \"ArrowUp\",\n      \"Home\",\n      \"End\"\n    ];\n  }\n  handleMove(event) {\n    var _a3, _b;\n    const { key } = event;\n    const items = this.items;\n    const currentItem = (_b = (_a3 = __privateMethod3(this, _getItem, getItem_fn).call(this, event)) != null ? _a3 : __privateMethod3(this, _getTabItem, getTabItem_fn).call(this)) != null ? _b : items[0];\n    const currentIndex = items.indexOf(currentItem);\n    let index = Math.max(0, currentIndex);\n    if (key === \"ArrowDown\") {\n      index++;\n    } else if (key === \"ArrowUp\") {\n      index--;\n    } else if (event.key === \"Home\") {\n      index = 0;\n    } else if (event.key === \"End\") {\n      index = items.length - 1;\n    }\n    if (index < 0) {\n      index = items.length - 1;\n    }\n    if (index > items.length - 1) {\n      index = 0;\n    }\n    __privateMethod3(this, _setTabItem, setTabItem_fn).call(this, items[index]);\n    items[index].focus();\n  }\n};\n_mediaController3 = /* @__PURE__ */ new WeakMap();\n_previouslyFocused = /* @__PURE__ */ new WeakMap();\n_invokerElement = /* @__PURE__ */ new WeakMap();\n_keysSoFar = /* @__PURE__ */ new WeakMap();\n_clearKeysTimeout = /* @__PURE__ */ new WeakMap();\n_previousItems = /* @__PURE__ */ new WeakMap();\n_mutationObserver = /* @__PURE__ */ new WeakMap();\n_isPopover = /* @__PURE__ */ new WeakMap();\n_handleSlotChange = /* @__PURE__ */ new WeakSet();\nhandleSlotChange_fn = function(event) {\n  const slot = event.target;\n  for (let node of slot.assignedNodes({ flatten: true })) {\n    if (node.nodeType === 3 && node.textContent.trim() === \"\") {\n      node.remove();\n    }\n  }\n  if ([\"header\", \"title\"].includes(slot.name)) {\n    const header = this.shadowRoot.querySelector('slot[name=\"header\"]');\n    header.hidden = slot.assignedNodes().length === 0;\n  }\n  if (!slot.name) {\n    __privateGet6(this, _handleMenuItems).call(this);\n  }\n};\n_handleMenuItems = /* @__PURE__ */ new WeakMap();\n_updateLayoutStyle = /* @__PURE__ */ new WeakSet();\nupdateLayoutStyle_fn = function() {\n  var _a3;\n  const layoutRowStyle = this.shadowRoot.querySelector(\"#layout-row\");\n  const menuLayout = (_a3 = getComputedStyle(this).getPropertyValue(\"--media-menu-layout\")) == null ? void 0 : _a3.trim();\n  layoutRowStyle.setAttribute(\"media\", menuLayout === \"row\" ? \"\" : \"width:0\");\n};\n_handleInvoke = /* @__PURE__ */ new WeakSet();\nhandleInvoke_fn = function(event) {\n  __privateSet6(this, _invokerElement, event.relatedTarget);\n  if (!containsComposedNode(this, event.relatedTarget)) {\n    this.hidden = !this.hidden;\n  }\n};\n_handleOpen = /* @__PURE__ */ new WeakSet();\nhandleOpen_fn = function() {\n  var _a3;\n  (_a3 = __privateGet6(this, _invokerElement)) == null ? void 0 : _a3.setAttribute(\"aria-expanded\", \"true\");\n  requestAnimationFrame(() => __privateMethod3(this, _positionMenu, positionMenu_fn).call(this, false));\n  this.addEventListener(\"transitionend\", () => this.focus(), { once: true });\n  observeResize(getBoundsElement(this), __privateGet6(this, _handleBoundsResize));\n  observeResize(this, __privateGet6(this, _handleMenuResize));\n};\n_handleClosed = /* @__PURE__ */ new WeakSet();\nhandleClosed_fn = function() {\n  var _a3;\n  (_a3 = __privateGet6(this, _invokerElement)) == null ? void 0 : _a3.setAttribute(\"aria-expanded\", \"false\");\n  unobserveResize(getBoundsElement(this), __privateGet6(this, _handleBoundsResize));\n  unobserveResize(this, __privateGet6(this, _handleMenuResize));\n};\n_handleBoundsResize = /* @__PURE__ */ new WeakMap();\n_handleMenuResize = /* @__PURE__ */ new WeakMap();\n_positionMenu = /* @__PURE__ */ new WeakSet();\npositionMenu_fn = function(animate, menuWidth) {\n  if (this.hasAttribute(\"mediacontroller\") && !this.anchor)\n    return;\n  if (this.hidden || !this.anchorElement)\n    return;\n  const { x: x4, y: y5 } = computePosition({\n    anchor: this.anchorElement,\n    floating: this,\n    placement: \"top-start\"\n  });\n  menuWidth != null ? menuWidth : menuWidth = this.offsetWidth;\n  const bounds = getBoundsElement(this);\n  const boundsRect = bounds.getBoundingClientRect();\n  const anchorRect = this.anchorElement.getBoundingClientRect();\n  const right = boundsRect.width - x4 - menuWidth;\n  const bottom = boundsRect.height - y5 - this.offsetHeight;\n  const maxHeight = boundsRect.height - anchorRect.height;\n  const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n  if (!animate) {\n    style.setProperty(\"--media-menu-transition-in\", \"none\");\n  }\n  style.setProperty(\"position\", \"absolute\");\n  style.setProperty(\"right\", `${Math.max(0, right)}px`);\n  style.setProperty(\"bottom\", `${bottom}px`);\n  style.setProperty(\"--_menu-max-height\", `${maxHeight}px`);\n  style.removeProperty(\"--media-menu-transition-in\");\n};\n_resizeMenu = /* @__PURE__ */ new WeakSet();\nresizeMenu_fn = function(animate) {\n  const expandedMenuItem = this.querySelector(\n    '[role=\"menuitem\"][aria-haspopup][aria-expanded=\"true\"]'\n  );\n  const expandedSubmenu = expandedMenuItem == null ? void 0 : expandedMenuItem.querySelector('[role=\"menu\"]');\n  const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n  if (!animate) {\n    style.setProperty(\"--media-menu-transition-in\", \"none\");\n  }\n  if (expandedSubmenu) {\n    const height = expandedSubmenu.offsetHeight;\n    const width = Math.max(\n      expandedSubmenu.offsetWidth,\n      expandedMenuItem.offsetWidth\n    );\n    this.style.setProperty(\"min-width\", `${width}px`);\n    this.style.setProperty(\"min-height\", `${height}px`);\n    __privateMethod3(this, _positionMenu, positionMenu_fn).call(this, animate, width);\n  } else {\n    this.style.removeProperty(\"min-width\");\n    this.style.removeProperty(\"min-height\");\n    __privateMethod3(this, _positionMenu, positionMenu_fn).call(this, animate);\n  }\n  style.removeProperty(\"--media-menu-transition-in\");\n};\n_handleClick = /* @__PURE__ */ new WeakSet();\nhandleClick_fn = function(event) {\n  var _a3;\n  event.stopPropagation();\n  if (event.composedPath().includes(__privateGet6(this, _backButtonElement, backButtonElement_get))) {\n    (_a3 = __privateGet6(this, _previouslyFocused)) == null ? void 0 : _a3.focus();\n    this.hidden = true;\n    return;\n  }\n  const item = __privateMethod3(this, _getItem, getItem_fn).call(this, event);\n  if (!item || item.hasAttribute(\"disabled\"))\n    return;\n  __privateMethod3(this, _setTabItem, setTabItem_fn).call(this, item);\n  this.handleSelect(event);\n};\n_backButtonElement = /* @__PURE__ */ new WeakSet();\nbackButtonElement_get = function() {\n  var _a3;\n  const headerSlot = this.shadowRoot.querySelector('slot[name=\"header\"]');\n  return (_a3 = headerSlot.assignedElements({ flatten: true })) == null ? void 0 : _a3.find((el) => el.part.contains(\"back\") && el.part.contains(\"button\"));\n};\n_handleToggle = /* @__PURE__ */ new WeakSet();\nhandleToggle_fn = function(event) {\n  if (event.target === this)\n    return;\n  __privateMethod3(this, _checkSubmenuHasExpanded, checkSubmenuHasExpanded_fn).call(this);\n  const menuItemsWithSubmenu = Array.from(\n    this.querySelectorAll('[role=\"menuitem\"][aria-haspopup]')\n  );\n  for (const item of menuItemsWithSubmenu) {\n    if (item.invokeTargetElement == event.target)\n      continue;\n    if (event.newState == \"open\" && item.getAttribute(\"aria-expanded\") == \"true\" && !item.invokeTargetElement.hidden) {\n      item.invokeTargetElement.dispatchEvent(\n        new InvokeEvent({ relatedTarget: item })\n      );\n    }\n  }\n  for (const item of menuItemsWithSubmenu) {\n    item.setAttribute(\"aria-expanded\", `${!item.submenuElement.hidden}`);\n  }\n  __privateMethod3(this, _resizeMenu, resizeMenu_fn).call(this, true);\n};\n_checkSubmenuHasExpanded = /* @__PURE__ */ new WeakSet();\ncheckSubmenuHasExpanded_fn = function() {\n  const selector = '[role=\"menuitem\"] > [role=\"menu\"]:not([hidden])';\n  const expandedMenuItem = this.querySelector(selector);\n  this.container.classList.toggle(\"has-expanded\", !!expandedMenuItem);\n};\n_handleFocusOut = /* @__PURE__ */ new WeakSet();\nhandleFocusOut_fn = function(event) {\n  var _a3;\n  if (!containsComposedNode(this, event.relatedTarget)) {\n    if (__privateGet6(this, _isPopover)) {\n      (_a3 = __privateGet6(this, _previouslyFocused)) == null ? void 0 : _a3.focus();\n    }\n    if (__privateGet6(this, _invokerElement) && __privateGet6(this, _invokerElement) !== event.relatedTarget && !this.hidden) {\n      this.hidden = true;\n    }\n  }\n};\n_handleKeyDown = /* @__PURE__ */ new WeakSet();\nhandleKeyDown_fn = function(event) {\n  var _a3, _b, _c, _d, _e5;\n  const { key, ctrlKey, altKey, metaKey } = event;\n  if (ctrlKey || altKey || metaKey) {\n    return;\n  }\n  if (!this.keysUsed.includes(key)) {\n    return;\n  }\n  event.preventDefault();\n  event.stopPropagation();\n  if (key === \"Tab\") {\n    if (__privateGet6(this, _isPopover)) {\n      this.hidden = true;\n      return;\n    }\n    if (event.shiftKey) {\n      (_b = (_a3 = this.previousElementSibling) == null ? void 0 : _a3.focus) == null ? void 0 : _b.call(_a3);\n    } else {\n      (_d = (_c = this.nextElementSibling) == null ? void 0 : _c.focus) == null ? void 0 : _d.call(_c);\n    }\n    this.blur();\n  } else if (key === \"Escape\") {\n    (_e5 = __privateGet6(this, _previouslyFocused)) == null ? void 0 : _e5.focus();\n    if (__privateGet6(this, _isPopover)) {\n      this.hidden = true;\n    }\n  } else if (key === \"Enter\" || key === \" \") {\n    this.handleSelect(event);\n  } else {\n    this.handleMove(event);\n  }\n};\n_getItem = /* @__PURE__ */ new WeakSet();\ngetItem_fn = function(event) {\n  return event.composedPath().find((el) => {\n    return [\"menuitemradio\", \"menuitemcheckbox\"].includes(el.role);\n  });\n};\n_getTabItem = /* @__PURE__ */ new WeakSet();\ngetTabItem_fn = function() {\n  return this.items.find((item) => item.tabIndex === 0);\n};\n_setTabItem = /* @__PURE__ */ new WeakSet();\nsetTabItem_fn = function(tabItem) {\n  for (const item of this.items) {\n    item.tabIndex = item === tabItem ? 0 : -1;\n  }\n};\n_selectItem = /* @__PURE__ */ new WeakSet();\nselectItem_fn = function(item, toggle) {\n  const oldCheckedItems = [...this.checkedItems];\n  if (item.type === \"radio\") {\n    this.radioGroupItems.forEach((el) => el.checked = false);\n  }\n  if (toggle) {\n    item.checked = !item.checked;\n  } else {\n    item.checked = true;\n  }\n  if (this.checkedItems.some((opt, i2) => opt != oldCheckedItems[i2])) {\n    this.dispatchEvent(\n      new Event(\"change\", { bubbles: true, composed: true })\n    );\n  }\n};\n__publicField4(MediaChromeMenu, \"template\", template4);\nfunction isMenuItem(element) {\n  return [\"menuitem\", \"menuitemradio\", \"menuitemcheckbox\"].includes(\n    element == null ? void 0 : element.role\n  );\n}\nfunction getBoundsElement(host) {\n  var _a3;\n  return (_a3 = host.getAttribute(\"bounds\") ? closestComposedNode(host, `#${host.getAttribute(\"bounds\")}`) : getMediaController(host) || host.parentElement) != null ? _a3 : host;\n}\nif (!GlobalThis.customElements.get(\"media-chrome-menu\")) {\n  GlobalThis.customElements.define(\"media-chrome-menu\", MediaChromeMenu);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-audio-track-menu.js\nvar __accessCheck7 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet7 = (obj, member, getter) => {\n  __accessCheck7(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd7 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet7 = (obj, member, value, setter) => {\n  __accessCheck7(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod4 = (obj, member, method) => {\n  __accessCheck7(obj, member, \"access private method\");\n  return method;\n};\nvar _audioTrackList;\nvar _prevState;\nvar _render;\nvar render_fn;\nvar _onChange;\nvar onChange_fn;\nvar MediaAudioTrackMenu = class extends MediaChromeMenu {\n  constructor() {\n    super(...arguments);\n    __privateAdd7(this, _render);\n    __privateAdd7(this, _onChange);\n    __privateAdd7(this, _audioTrackList, []);\n    __privateAdd7(this, _prevState, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_UNAVAILABLE\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED && oldValue !== newValue) {\n      this.value = newValue;\n    } else if (attrName === MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST && oldValue !== newValue) {\n      __privateSet7(this, _audioTrackList, parseAudioTrackList(newValue));\n      __privateMethod4(this, _render, render_fn).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod4(this, _onChange, onChange_fn));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod4(this, _onChange, onChange_fn));\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   * @return {HTMLElement}\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\n      \"media-audio-track-menu-button\"\n    );\n  }\n  get mediaAudioTrackList() {\n    return __privateGet7(this, _audioTrackList);\n  }\n  set mediaAudioTrackList(list) {\n    __privateSet7(this, _audioTrackList, list);\n    __privateMethod4(this, _render, render_fn).call(this);\n  }\n  /**\n   * Get enabled audio track id.\n   * @return {string}\n   */\n  get mediaAudioTrackEnabled() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED);\n  }\n  set mediaAudioTrackEnabled(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED, id);\n  }\n};\n_audioTrackList = /* @__PURE__ */ new WeakMap();\n_prevState = /* @__PURE__ */ new WeakMap();\n_render = /* @__PURE__ */ new WeakSet();\nrender_fn = function() {\n  if (__privateGet7(this, _prevState) === JSON.stringify(this.mediaAudioTrackList))\n    return;\n  __privateSet7(this, _prevState, JSON.stringify(this.mediaAudioTrackList));\n  const audioTrackList = this.mediaAudioTrackList;\n  this.defaultSlot.textContent = \"\";\n  for (const audioTrack of audioTrackList) {\n    const text = this.formatMenuItemText(audioTrack.label, audioTrack);\n    const item = createMenuItem({\n      type: \"radio\",\n      text,\n      value: `${audioTrack.id}`,\n      checked: audioTrack.enabled\n    });\n    item.prepend(createIndicator(this, \"checked-indicator\"));\n    this.defaultSlot.append(item);\n  }\n};\n_onChange = /* @__PURE__ */ new WeakSet();\nonChange_fn = function() {\n  if (this.value == null)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_AUDIO_TRACK_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!GlobalThis.customElements.get(\"media-audio-track-menu\")) {\n  GlobalThis.customElements.define(\n    \"media-audio-track-menu\",\n    MediaAudioTrackMenu\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-chrome-menu-button.js\nvar MediaChromeMenuButton = class extends MediaChromeButton {\n  connectedCallback() {\n    super.connectedCallback();\n    if (this.invokeTargetElement) {\n      this.setAttribute(\"aria-haspopup\", \"menu\");\n    }\n  }\n  get invokeTarget() {\n    return this.getAttribute(\"invoketarget\");\n  }\n  set invokeTarget(value) {\n    this.setAttribute(\"invoketarget\", `${value}`);\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    var _a3;\n    if (this.invokeTarget) {\n      return (_a3 = getDocumentOrShadowRoot(this)) == null ? void 0 : _a3.querySelector(\n        `#${this.invokeTarget}`\n      );\n    }\n    return null;\n  }\n  handleClick() {\n    this.invokeTargetElement.dispatchEvent(\n      new InvokeEvent({ relatedTarget: this })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-chrome-menu-button\")) {\n  GlobalThis.customElements.define(\n    \"media-chrome-menu-button\",\n    MediaChromeMenuButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-audio-track-menu-button.js\nvar audioTrackIcon = (\n  /*html*/\n  `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M11 17H9.5V7H11v10Zm-3-3H6.5v-4H8v4Zm6-5h-1.5v6H14V9Zm3 7h-1.5V8H17v8Z\"/>\n  <path d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-2 0a8 8 0 1 0-16 0 8 8 0 0 0 16 0Z\"/>\n</svg>`\n);\nvar slotTemplate2 = Document2.createElement(\"template\");\nslotTemplate2.innerHTML = /*html*/\n`\n  <slot name=\"icon\">${audioTrackIcon}</slot>\n`;\nvar MediaAudioTrackMenuButton = class extends MediaChromeMenuButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_UNAVAILABLE\n    ];\n  }\n  constructor() {\n    super({ slotTemplate: slotTemplate2 });\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.setAttribute(\"aria-label\", nouns.AUDIO_TRACKS());\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return getMediaController(this).querySelector(\"media-audio-track-menu\");\n  }\n  /**\n   * Get enabled audio track id.\n   * @return {string}\n   */\n  get mediaAudioTrackEnabled() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED);\n  }\n  set mediaAudioTrackEnabled(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED, id);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-audio-track-menu-button\")) {\n  GlobalThis.customElements.define(\n    \"media-audio-track-menu-button\",\n    MediaAudioTrackMenuButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-captions-button.js\nvar ccIconOn = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M22.83 5.68a2.58 2.58 0 0 0-2.3-2.5c-3.62-.24-11.44-.24-15.06 0a2.58 2.58 0 0 0-2.3 2.5c-.23 4.21-.23 8.43 0 12.64a2.58 2.58 0 0 0 2.3 2.5c3.62.24 11.44.24 15.06 0a2.58 2.58 0 0 0 2.3-2.5c.23-4.21.23-8.43 0-12.64Zm-11.39 9.45a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.92 3.92 0 0 1 .92-2.77 3.18 3.18 0 0 1 2.43-1 2.94 2.94 0 0 1 2.13.78c.364.359.62.813.74 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.17 1.61 1.61 0 0 0-1.29.58 2.79 2.79 0 0 0-.5 1.89 3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.48 1.48 0 0 0 1-.37 2.1 2.1 0 0 0 .59-1.14l1.4.44a3.23 3.23 0 0 1-1.07 1.69Zm7.22 0a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.88 3.88 0 0 1 .93-2.77 3.14 3.14 0 0 1 2.42-1 3 3 0 0 1 2.16.82 2.8 2.8 0 0 1 .73 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.21 1.61 1.61 0 0 0-1.29.58A2.79 2.79 0 0 0 15 12a3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.44 1.44 0 0 0 1-.37 2.1 2.1 0 0 0 .6-1.15l1.4.44a3.17 3.17 0 0 1-1.1 1.7Z\"/>\n</svg>`;\nvar ccIconOff = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M17.73 14.09a1.4 1.4 0 0 1-1 .37 1.579 1.579 0 0 1-1.27-.58A3 3 0 0 1 15 12a2.8 2.8 0 0 1 .5-1.85 1.63 1.63 0 0 1 1.29-.57 1.47 1.47 0 0 1 1.51 1.2l1.43-.34A2.89 2.89 0 0 0 19 9.07a3 3 0 0 0-2.14-.78 3.14 3.14 0 0 0-2.42 1 3.91 3.91 0 0 0-.93 2.78 3.74 3.74 0 0 0 .92 2.66 3.07 3.07 0 0 0 2.34 1 3.07 3.07 0 0 0 1.91-.57 3.17 3.17 0 0 0 1.07-1.74l-1.4-.45c-.083.43-.3.822-.62 1.12Zm-7.22 0a1.43 1.43 0 0 1-1 .37 1.58 1.58 0 0 1-1.27-.58A3 3 0 0 1 7.76 12a2.8 2.8 0 0 1 .5-1.85 1.63 1.63 0 0 1 1.29-.57 1.47 1.47 0 0 1 1.51 1.2l1.43-.34a2.81 2.81 0 0 0-.74-1.32 2.94 2.94 0 0 0-2.13-.78 3.18 3.18 0 0 0-2.43 1 4 4 0 0 0-.92 2.78 3.74 3.74 0 0 0 .92 2.66 3.07 3.07 0 0 0 2.34 1 3.07 3.07 0 0 0 1.91-.57 3.23 3.23 0 0 0 1.07-1.74l-1.4-.45a2.06 2.06 0 0 1-.6 1.07Zm12.32-8.41a2.59 2.59 0 0 0-2.3-2.51C18.72 3.05 15.86 3 13 3c-2.86 0-5.72.05-7.53.17a2.59 2.59 0 0 0-2.3 2.51c-.23 4.207-.23 8.423 0 12.63a2.57 2.57 0 0 0 2.3 2.5c1.81.13 4.67.19 7.53.19 2.86 0 5.72-.06 7.53-.19a2.57 2.57 0 0 0 2.3-2.5c.23-4.207.23-8.423 0-12.63Zm-1.49 12.53a1.11 1.11 0 0 1-.91 1.11c-1.67.11-4.45.18-7.43.18-2.98 0-5.76-.07-7.43-.18a1.11 1.11 0 0 1-.91-1.11c-.21-4.14-.21-8.29 0-12.43a1.11 1.11 0 0 1 .91-1.11C7.24 4.56 10 4.49 13 4.49s5.76.07 7.43.18a1.11 1.11 0 0 1 .91 1.11c.21 4.14.21 8.29 0 12.43Z\"/>\n</svg>`;\nvar slotTemplate3 = Document2.createElement(\"template\");\nslotTemplate3.innerHTML = /*html*/\n`\n  <style>\n    :host([aria-checked=\"true\"]) slot[name=off] {\n      display: none !important;\n    }\n\n    ${/* Double negative, but safer if display doesn't equal 'block' */\n\"\"}\n    :host(:not([aria-checked=\"true\"])) slot[name=on] {\n      display: none !important;\n    }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"on\">${ccIconOn}</slot>\n    <slot name=\"off\">${ccIconOff}</slot>\n  </slot>\n`;\nvar updateAriaChecked = (el) => {\n  el.setAttribute(\"aria-checked\", areSubsOn(el));\n};\nvar MediaCaptionsButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_SUBTITLES_LIST,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate3 }, options));\n    this._captionsReady = false;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.setAttribute(\"role\", \"switch\");\n    this.setAttribute(\"aria-label\", nouns.CLOSED_CAPTIONS());\n    updateAriaChecked(this);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_SHOWING) {\n      updateAriaChecked(this);\n    }\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesList() {\n    return getSubtitlesListAttr(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST);\n  }\n  set mediaSubtitlesList(list) {\n    setSubtitlesListAttr(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST, list);\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesShowing() {\n    return getSubtitlesListAttr(\n      this,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    );\n  }\n  set mediaSubtitlesShowing(list) {\n    setSubtitlesListAttr(this, MediaUIAttributes.MEDIA_SUBTITLES_SHOWING, list);\n  }\n  handleClick() {\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_TOGGLE_SUBTITLES_REQUEST, {\n        composed: true,\n        bubbles: true\n      })\n    );\n  }\n};\nvar getSubtitlesListAttr = (el, attrName) => {\n  const attrVal = el.getAttribute(attrName);\n  return attrVal ? parseTextTracksStr(attrVal) : [];\n};\nvar setSubtitlesListAttr = (el, attrName, list) => {\n  if (!(list == null ? void 0 : list.length)) {\n    el.removeAttribute(attrName);\n    return;\n  }\n  const newValStr = stringifyTextTrackList(list);\n  const oldVal = el.getAttribute(attrName);\n  if (oldVal === newValStr)\n    return;\n  el.setAttribute(attrName, newValStr);\n};\nif (!GlobalThis.customElements.get(\"media-captions-button\")) {\n  GlobalThis.customElements.define(\n    \"media-captions-button\",\n    MediaCaptionsButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-captions-menu.js\nvar __defProp5 = Object.defineProperty;\nvar __defNormalProp5 = (obj, key, value) => key in obj ? __defProp5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField5 = (obj, key, value) => {\n  __defNormalProp5(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck8 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet8 = (obj, member, getter) => {\n  __accessCheck8(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd8 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet8 = (obj, member, value, setter) => {\n  __accessCheck8(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod5 = (obj, member, method) => {\n  __accessCheck8(obj, member, \"access private method\");\n  return method;\n};\nvar _prevState2;\nvar _render2;\nvar render_fn2;\nvar _onChange2;\nvar onChange_fn2;\nvar ccIcon = (\n  /*html*/\n  `\n  <svg aria-hidden=\"true\" viewBox=\"0 0 26 24\" part=\"captions-indicator indicator\">\n    <path d=\"M22.83 5.68a2.58 2.58 0 0 0-2.3-2.5c-3.62-.24-11.44-.24-15.06 0a2.58 2.58 0 0 0-2.3 2.5c-.23 4.21-.23 8.43 0 12.64a2.58 2.58 0 0 0 2.3 2.5c3.62.24 11.44.24 15.06 0a2.58 2.58 0 0 0 2.3-2.5c.23-4.21.23-8.43 0-12.64Zm-11.39 9.45a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.92 3.92 0 0 1 .92-2.77 3.18 3.18 0 0 1 2.43-1 2.94 2.94 0 0 1 2.13.78c.364.359.62.813.74 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.17 1.61 1.61 0 0 0-1.29.58 2.79 2.79 0 0 0-.5 1.89 3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.48 1.48 0 0 0 1-.37 2.1 2.1 0 0 0 .59-1.14l1.4.44a3.23 3.23 0 0 1-1.07 1.69Zm7.22 0a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.88 3.88 0 0 1 .93-2.77 3.14 3.14 0 0 1 2.42-1 3 3 0 0 1 2.16.82 2.8 2.8 0 0 1 .73 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.21 1.61 1.61 0 0 0-1.29.58A2.79 2.79 0 0 0 15 12a3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.44 1.44 0 0 0 1-.37 2.1 2.1 0 0 0 .6-1.15l1.4.44a3.17 3.17 0 0 1-1.1 1.7Z\"/>\n  </svg>`\n);\nvar template5 = Document2.createElement(\"template\");\ntemplate5.innerHTML = MediaChromeMenu.template.innerHTML + /*html*/\n`\n  <slot name=\"captions-indicator\" hidden>${ccIcon}</slot>`;\nvar MediaCaptionsMenu = class extends MediaChromeMenu {\n  constructor() {\n    super(...arguments);\n    __privateAdd8(this, _render2);\n    __privateAdd8(this, _onChange2);\n    __privateAdd8(this, _prevState2, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_SUBTITLES_LIST,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_LIST && oldValue !== newValue) {\n      __privateMethod5(this, _render2, render_fn2).call(this);\n    } else if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_SHOWING && oldValue !== newValue) {\n      this.value = newValue;\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod5(this, _onChange2, onChange_fn2));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod5(this, _onChange2, onChange_fn2));\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   * @return {HTMLElement}\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\"media-captions-menu-button\");\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesList() {\n    return getSubtitlesListAttr2(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST);\n  }\n  set mediaSubtitlesList(list) {\n    setSubtitlesListAttr2(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST, list);\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesShowing() {\n    return getSubtitlesListAttr2(\n      this,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    );\n  }\n  set mediaSubtitlesShowing(list) {\n    setSubtitlesListAttr2(this, MediaUIAttributes.MEDIA_SUBTITLES_SHOWING, list);\n  }\n};\n_prevState2 = /* @__PURE__ */ new WeakMap();\n_render2 = /* @__PURE__ */ new WeakSet();\nrender_fn2 = function() {\n  var _a3;\n  if (__privateGet8(this, _prevState2) === JSON.stringify(this.mediaSubtitlesList))\n    return;\n  __privateSet8(this, _prevState2, JSON.stringify(this.mediaSubtitlesList));\n  this.defaultSlot.textContent = \"\";\n  const isOff = !this.value;\n  const item = createMenuItem({\n    type: \"radio\",\n    text: this.formatMenuItemText(\"Off\"),\n    value: \"off\",\n    checked: isOff\n  });\n  item.prepend(createIndicator(this, \"checked-indicator\"));\n  this.defaultSlot.append(item);\n  const subtitlesList = this.mediaSubtitlesList;\n  for (const subs of subtitlesList) {\n    const item2 = createMenuItem({\n      type: \"radio\",\n      text: this.formatMenuItemText(subs.label, subs),\n      value: formatTextTrackObj(subs),\n      checked: this.value == formatTextTrackObj(subs)\n    });\n    item2.prepend(createIndicator(this, \"checked-indicator\"));\n    const type = (_a3 = subs.kind) != null ? _a3 : \"subs\";\n    if (type === \"captions\") {\n      item2.append(createIndicator(this, \"captions-indicator\"));\n    }\n    this.defaultSlot.append(item2);\n  }\n};\n_onChange2 = /* @__PURE__ */ new WeakSet();\nonChange_fn2 = function() {\n  const showingSubs = this.mediaSubtitlesShowing;\n  const showingSubsStr = this.getAttribute(\n    MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n  );\n  const localStateChange = this.value !== showingSubsStr;\n  if ((showingSubs == null ? void 0 : showingSubs.length) && localStateChange) {\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(\n        MediaUIEvents.MEDIA_DISABLE_SUBTITLES_REQUEST,\n        {\n          composed: true,\n          bubbles: true,\n          detail: showingSubs\n        }\n      )\n    );\n  }\n  if (!this.value || !localStateChange)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_SHOW_SUBTITLES_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\n__publicField5(MediaCaptionsMenu, \"template\", template5);\nvar getSubtitlesListAttr2 = (el, attrName) => {\n  const attrVal = el.getAttribute(attrName);\n  return attrVal ? parseTextTracksStr(attrVal) : [];\n};\nvar setSubtitlesListAttr2 = (el, attrName, list) => {\n  if (!(list == null ? void 0 : list.length)) {\n    el.removeAttribute(attrName);\n    return;\n  }\n  const newValStr = stringifyTextTrackList(list);\n  const oldVal = el.getAttribute(attrName);\n  if (oldVal === newValStr)\n    return;\n  el.setAttribute(attrName, newValStr);\n};\nif (!GlobalThis.customElements.get(\"media-captions-menu\")) {\n  GlobalThis.customElements.define(\"media-captions-menu\", MediaCaptionsMenu);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-captions-menu-button.js\nvar ccIconOn2 = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M22.83 5.68a2.58 2.58 0 0 0-2.3-2.5c-3.62-.24-11.44-.24-15.06 0a2.58 2.58 0 0 0-2.3 2.5c-.23 4.21-.23 8.43 0 12.64a2.58 2.58 0 0 0 2.3 2.5c3.62.24 11.44.24 15.06 0a2.58 2.58 0 0 0 2.3-2.5c.23-4.21.23-8.43 0-12.64Zm-11.39 9.45a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.92 3.92 0 0 1 .92-2.77 3.18 3.18 0 0 1 2.43-1 2.94 2.94 0 0 1 2.13.78c.364.359.62.813.74 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.17 1.61 1.61 0 0 0-1.29.58 2.79 2.79 0 0 0-.5 1.89 3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.48 1.48 0 0 0 1-.37 2.1 2.1 0 0 0 .59-1.14l1.4.44a3.23 3.23 0 0 1-1.07 1.69Zm7.22 0a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.88 3.88 0 0 1 .93-2.77 3.14 3.14 0 0 1 2.42-1 3 3 0 0 1 2.16.82 2.8 2.8 0 0 1 .73 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.21 1.61 1.61 0 0 0-1.29.58A2.79 2.79 0 0 0 15 12a3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.44 1.44 0 0 0 1-.37 2.1 2.1 0 0 0 .6-1.15l1.4.44a3.17 3.17 0 0 1-1.1 1.7Z\"/>\n</svg>`;\nvar ccIconOff2 = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M17.73 14.09a1.4 1.4 0 0 1-1 .37 1.579 1.579 0 0 1-1.27-.58A3 3 0 0 1 15 12a2.8 2.8 0 0 1 .5-1.85 1.63 1.63 0 0 1 1.29-.57 1.47 1.47 0 0 1 1.51 1.2l1.43-.34A2.89 2.89 0 0 0 19 9.07a3 3 0 0 0-2.14-.78 3.14 3.14 0 0 0-2.42 1 3.91 3.91 0 0 0-.93 2.78 3.74 3.74 0 0 0 .92 2.66 3.07 3.07 0 0 0 2.34 1 3.07 3.07 0 0 0 1.91-.57 3.17 3.17 0 0 0 1.07-1.74l-1.4-.45c-.083.43-.3.822-.62 1.12Zm-7.22 0a1.43 1.43 0 0 1-1 .37 1.58 1.58 0 0 1-1.27-.58A3 3 0 0 1 7.76 12a2.8 2.8 0 0 1 .5-1.85 1.63 1.63 0 0 1 1.29-.57 1.47 1.47 0 0 1 1.51 1.2l1.43-.34a2.81 2.81 0 0 0-.74-1.32 2.94 2.94 0 0 0-2.13-.78 3.18 3.18 0 0 0-2.43 1 4 4 0 0 0-.92 2.78 3.74 3.74 0 0 0 .92 2.66 3.07 3.07 0 0 0 2.34 1 3.07 3.07 0 0 0 1.91-.57 3.23 3.23 0 0 0 1.07-1.74l-1.4-.45a2.06 2.06 0 0 1-.6 1.07Zm12.32-8.41a2.59 2.59 0 0 0-2.3-2.51C18.72 3.05 15.86 3 13 3c-2.86 0-5.72.05-7.53.17a2.59 2.59 0 0 0-2.3 2.51c-.23 4.207-.23 8.423 0 12.63a2.57 2.57 0 0 0 2.3 2.5c1.81.13 4.67.19 7.53.19 2.86 0 5.72-.06 7.53-.19a2.57 2.57 0 0 0 2.3-2.5c.23-4.207.23-8.423 0-12.63Zm-1.49 12.53a1.11 1.11 0 0 1-.91 1.11c-1.67.11-4.45.18-7.43.18-2.98 0-5.76-.07-7.43-.18a1.11 1.11 0 0 1-.91-1.11c-.21-4.14-.21-8.29 0-12.43a1.11 1.11 0 0 1 .91-1.11C7.24 4.56 10 4.49 13 4.49s5.76.07 7.43.18a1.11 1.11 0 0 1 .91 1.11c.21 4.14.21 8.29 0 12.43Z\"/>\n</svg>`;\nvar slotTemplate4 = Document2.createElement(\"template\");\nslotTemplate4.innerHTML = /*html*/\n`\n  <style>\n    :host([aria-checked=\"true\"]) slot[name=off] {\n      display: none !important;\n    }\n\n    ${/* Double negative, but safer if display doesn't equal 'block' */\n\"\"}\n    :host(:not([aria-checked=\"true\"])) slot[name=on] {\n      display: none !important;\n    }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"on\">${ccIconOn2}</slot>\n    <slot name=\"off\">${ccIconOff2}</slot>\n  </slot>\n`;\nvar updateAriaChecked2 = (el) => {\n  el.setAttribute(\"aria-checked\", areSubsOn(el));\n};\nvar MediaCaptionsMenuButton = class extends MediaChromeMenuButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_SUBTITLES_LIST,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate4 }, options));\n    this._captionsReady = false;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.setAttribute(\"aria-label\", nouns.CLOSED_CAPTIONS());\n    updateAriaChecked2(this);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_SHOWING) {\n      updateAriaChecked2(this);\n    }\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return getMediaController(this).querySelector(\"media-captions-menu\");\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesList() {\n    return getSubtitlesListAttr3(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST);\n  }\n  set mediaSubtitlesList(list) {\n    setSubtitlesListAttr3(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST, list);\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesShowing() {\n    return getSubtitlesListAttr3(\n      this,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    );\n  }\n  set mediaSubtitlesShowing(list) {\n    setSubtitlesListAttr3(this, MediaUIAttributes.MEDIA_SUBTITLES_SHOWING, list);\n  }\n};\nvar getSubtitlesListAttr3 = (el, attrName) => {\n  const attrVal = el.getAttribute(attrName);\n  return attrVal ? parseTextTracksStr(attrVal) : [];\n};\nvar setSubtitlesListAttr3 = (el, attrName, list) => {\n  if (!(list == null ? void 0 : list.length)) {\n    el.removeAttribute(attrName);\n    return;\n  }\n  const newValStr = stringifyTextTrackList(list);\n  const oldVal = el.getAttribute(attrName);\n  if (oldVal === newValStr)\n    return;\n  el.setAttribute(attrName, newValStr);\n};\nif (!GlobalThis.customElements.get(\"media-captions-menu-button\")) {\n  GlobalThis.customElements.define(\n    \"media-captions-menu-button\",\n    MediaCaptionsMenuButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-cast-button.js\nvar enterIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\"><g><path class=\"cast_caf_icon_arch0\" d=\"M1,18 L1,21 L4,21 C4,19.3 2.66,18 1,18 L1,18 Z\"/><path class=\"cast_caf_icon_arch1\" d=\"M1,14 L1,16 C3.76,16 6,18.2 6,21 L8,21 C8,17.13 4.87,14 1,14 L1,14 Z\"/><path class=\"cast_caf_icon_arch2\" d=\"M1,10 L1,12 C5.97,12 10,16.0 10,21 L12,21 C12,14.92 7.07,10 1,10 L1,10 Z\"/><path class=\"cast_caf_icon_box\" d=\"M21,3 L3,3 C1.9,3 1,3.9 1,5 L1,8 L3,8 L3,5 L21,5 L21,19 L14,19 L14,21 L21,21 C22.1,21 23,20.1 23,19 L23,5 C23,3.9 22.1,3 21,3 L21,3 Z\"/></g></svg>`;\nvar exitIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\"><g><path class=\"cast_caf_icon_arch0\" d=\"M1,18 L1,21 L4,21 C4,19.3 2.66,18 1,18 L1,18 Z\"/><path class=\"cast_caf_icon_arch1\" d=\"M1,14 L1,16 C3.76,16 6,18.2 6,21 L8,21 C8,17.13 4.87,14 1,14 L1,14 Z\"/><path class=\"cast_caf_icon_arch2\" d=\"M1,10 L1,12 C5.97,12 10,16.0 10,21 L12,21 C12,14.92 7.07,10 1,10 L1,10 Z\"/><path class=\"cast_caf_icon_box\" d=\"M21,3 L3,3 C1.9,3 1,3.9 1,5 L1,8 L3,8 L3,5 L21,5 L21,19 L14,19 L14,21 L21,21 C22.1,21 23,20.1 23,19 L23,5 C23,3.9 22.1,3 21,3 L21,3 Z\"/><path class=\"cast_caf_icon_boxfill\" d=\"M5,7 L5,8.63 C8,8.6 13.37,14 13.37,17 L19,17 L19,7 Z\"/></g></svg>`;\nvar slotTemplate5 = Document2.createElement(\"template\");\nslotTemplate5.innerHTML = /*html*/\n`\n  <style>\n  :host([${MediaUIAttributes.MEDIA_IS_CASTING}]) slot:not([name=exit]):not([name=icon]) {\n    display: none !important;\n  }\n\n  ${/* Double negative, but safer if display doesn't equal 'block' */\n\"\"}\n  :host(:not([${MediaUIAttributes.MEDIA_IS_CASTING}])) slot:not([name=enter]):not([name=icon]) {\n    display: none !important;\n  }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"enter\">${enterIcon}</slot>\n    <slot name=\"exit\">${exitIcon}</slot>\n  </slot>\n`;\nvar updateAriaLabel2 = (el) => {\n  const label = el.mediaIsCasting ? verbs.EXIT_CAST() : verbs.ENTER_CAST();\n  el.setAttribute(\"aria-label\", label);\n};\nvar MediaCastButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_IS_CASTING,\n      MediaUIAttributes.MEDIA_CAST_UNAVAILABLE\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate5 }, options));\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    updateAriaLabel2(this);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_IS_CASTING) {\n      updateAriaLabel2(this);\n    }\n  }\n  /**\n   * @type {boolean} Are we currently casting\n   */\n  get mediaIsCasting() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_IS_CASTING);\n  }\n  set mediaIsCasting(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_IS_CASTING, value);\n  }\n  /**\n   * @type {string | undefined} Cast unavailability state\n   */\n  get mediaCastUnavailable() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_CAST_UNAVAILABLE);\n  }\n  set mediaCastUnavailable(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_CAST_UNAVAILABLE, value);\n  }\n  handleClick() {\n    const eventName = this.mediaIsCasting ? MediaUIEvents.MEDIA_EXIT_CAST_REQUEST : MediaUIEvents.MEDIA_ENTER_CAST_REQUEST;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(eventName, { composed: true, bubbles: true })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-cast-button\")) {\n  GlobalThis.customElements.define(\"media-cast-button\", MediaCastButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-chrome-dialog.js\nvar __defProp6 = Object.defineProperty;\nvar __defNormalProp6 = (obj, key, value) => key in obj ? __defProp6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField6 = (obj, key, value) => {\n  __defNormalProp6(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck9 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet9 = (obj, member, getter) => {\n  __accessCheck9(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd9 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet9 = (obj, member, value, setter) => {\n  __accessCheck9(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod6 = (obj, member, method) => {\n  __accessCheck9(obj, member, \"access private method\");\n  return method;\n};\nvar _previouslyFocused2;\nvar _invokerElement2;\nvar _handleOpen2;\nvar handleOpen_fn2;\nvar _handleClosed2;\nvar handleClosed_fn2;\nvar _handleInvoke2;\nvar handleInvoke_fn2;\nvar _handleFocusOut2;\nvar handleFocusOut_fn2;\nvar _handleKeyDown2;\nvar handleKeyDown_fn2;\nvar template6 = Document2.createElement(\"template\");\ntemplate6.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      font: var(--media-font,\n        var(--media-font-weight, normal)\n        var(--media-font-size, 14px) /\n        var(--media-text-content-height, var(--media-control-height, 24px))\n        var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n      color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n      background: var(--media-dialog-background, var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .8))));\n      border-radius: var(--media-dialog-border-radius);\n      border: var(--media-dialog-border, none);\n      display: var(--media-dialog-display, inline-flex);\n      transition: var(--media-dialog-transition-in,\n        visibility 0s,\n        opacity .2s ease-out,\n        transform .15s ease-out\n      ) !important;\n      ${/* ^^Prevent transition override by media-container */\n\"\"}\n      visibility: var(--media-dialog-visibility, visible);\n      opacity: var(--media-dialog-opacity, 1);\n      transform: var(--media-dialog-transform-in, translateY(0) scale(1));\n    }\n\n    :host([hidden]) {\n      transition: var(--media-dialog-transition-out,\n        visibility .15s ease-in,\n        opacity .15s ease-in,\n        transform .15s ease-in\n      ) !important;\n      visibility: var(--media-dialog-hidden-visibility, hidden);\n      opacity: var(--media-dialog-hidden-opacity, 0);\n      transform: var(--media-dialog-transform-out, translateY(2px) scale(.99));\n      pointer-events: none;\n    }\n  </style>\n  <slot></slot>\n`;\nvar Attributes4 = {\n  HIDDEN: \"hidden\",\n  ANCHOR: \"anchor\"\n};\nvar MediaChromeDialog = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd9(this, _handleOpen2);\n    __privateAdd9(this, _handleClosed2);\n    __privateAdd9(this, _handleInvoke2);\n    __privateAdd9(this, _handleFocusOut2);\n    __privateAdd9(this, _handleKeyDown2);\n    __privateAdd9(this, _previouslyFocused2, void 0);\n    __privateAdd9(this, _invokerElement2, void 0);\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.nativeEl = this.constructor.template.content.cloneNode(true);\n      this.shadowRoot.append(this.nativeEl);\n    }\n    this.addEventListener(\"invoke\", this);\n    this.addEventListener(\"focusout\", this);\n    this.addEventListener(\"keydown\", this);\n  }\n  static get observedAttributes() {\n    return [Attributes4.HIDDEN, Attributes4.ANCHOR];\n  }\n  handleEvent(event) {\n    switch (event.type) {\n      case \"invoke\":\n        __privateMethod6(this, _handleInvoke2, handleInvoke_fn2).call(this, event);\n        break;\n      case \"focusout\":\n        __privateMethod6(this, _handleFocusOut2, handleFocusOut_fn2).call(this, event);\n        break;\n      case \"keydown\":\n        __privateMethod6(this, _handleKeyDown2, handleKeyDown_fn2).call(this, event);\n        break;\n    }\n  }\n  connectedCallback() {\n    if (!this.role) {\n      this.role = \"dialog\";\n    }\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === Attributes4.HIDDEN && newValue !== oldValue) {\n      if (this.hidden) {\n        __privateMethod6(this, _handleClosed2, handleClosed_fn2).call(this);\n      } else {\n        __privateMethod6(this, _handleOpen2, handleOpen_fn2).call(this);\n      }\n    }\n  }\n  focus() {\n    __privateSet9(this, _previouslyFocused2, getActiveElement());\n    const focusable = this.querySelector(\n      '[autofocus], [tabindex]:not([tabindex=\"-1\"]), [role=\"menu\"]'\n    );\n    focusable == null ? void 0 : focusable.focus();\n  }\n  get keysUsed() {\n    return [\"Escape\", \"Tab\"];\n  }\n};\n_previouslyFocused2 = /* @__PURE__ */ new WeakMap();\n_invokerElement2 = /* @__PURE__ */ new WeakMap();\n_handleOpen2 = /* @__PURE__ */ new WeakSet();\nhandleOpen_fn2 = function() {\n  var _a3;\n  (_a3 = __privateGet9(this, _invokerElement2)) == null ? void 0 : _a3.setAttribute(\"aria-expanded\", \"true\");\n  this.addEventListener(\"transitionend\", () => this.focus(), { once: true });\n};\n_handleClosed2 = /* @__PURE__ */ new WeakSet();\nhandleClosed_fn2 = function() {\n  var _a3;\n  (_a3 = __privateGet9(this, _invokerElement2)) == null ? void 0 : _a3.setAttribute(\"aria-expanded\", \"false\");\n};\n_handleInvoke2 = /* @__PURE__ */ new WeakSet();\nhandleInvoke_fn2 = function(event) {\n  __privateSet9(this, _invokerElement2, event.relatedTarget);\n  if (!containsComposedNode(this, event.relatedTarget)) {\n    this.hidden = !this.hidden;\n  }\n};\n_handleFocusOut2 = /* @__PURE__ */ new WeakSet();\nhandleFocusOut_fn2 = function(event) {\n  var _a3;\n  if (!containsComposedNode(this, event.relatedTarget)) {\n    (_a3 = __privateGet9(this, _previouslyFocused2)) == null ? void 0 : _a3.focus();\n    if (__privateGet9(this, _invokerElement2) && __privateGet9(this, _invokerElement2) !== event.relatedTarget && !this.hidden) {\n      this.hidden = true;\n    }\n  }\n};\n_handleKeyDown2 = /* @__PURE__ */ new WeakSet();\nhandleKeyDown_fn2 = function(event) {\n  var _a3, _b, _c, _d, _e5;\n  const { key, ctrlKey, altKey, metaKey } = event;\n  if (ctrlKey || altKey || metaKey) {\n    return;\n  }\n  if (!this.keysUsed.includes(key)) {\n    return;\n  }\n  event.preventDefault();\n  event.stopPropagation();\n  if (key === \"Tab\") {\n    if (event.shiftKey) {\n      (_b = (_a3 = this.previousElementSibling) == null ? void 0 : _a3.focus) == null ? void 0 : _b.call(_a3);\n    } else {\n      (_d = (_c = this.nextElementSibling) == null ? void 0 : _c.focus) == null ? void 0 : _d.call(_c);\n    }\n    this.blur();\n  } else if (key === \"Escape\") {\n    (_e5 = __privateGet9(this, _previouslyFocused2)) == null ? void 0 : _e5.focus();\n    this.hidden = true;\n  }\n};\n__publicField6(MediaChromeDialog, \"template\", template6);\nif (!GlobalThis.customElements.get(\"media-chrome-dialog\")) {\n  GlobalThis.customElements.define(\"media-chrome-dialog\", MediaChromeDialog);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-chrome-menu-item.js\nvar __defProp7 = Object.defineProperty;\nvar __defNormalProp7 = (obj, key, value) => key in obj ? __defProp7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField7 = (obj, key, value) => {\n  __defNormalProp7(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck10 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet10 = (obj, member, getter) => {\n  __accessCheck10(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd10 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet10 = (obj, member, value, setter) => {\n  __accessCheck10(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod7 = (obj, member, method) => {\n  __accessCheck10(obj, member, \"access private method\");\n  return method;\n};\nvar _dirty;\nvar _ownerElement;\nvar _handleSlotChange2;\nvar handleSlotChange_fn2;\nvar _submenuConnected;\nvar submenuConnected_fn;\nvar _submenuDisconnected;\nvar submenuDisconnected_fn;\nvar _handleMenuItem;\nvar _handleKeyUp;\nvar handleKeyUp_fn;\nvar _handleKeyDown3;\nvar handleKeyDown_fn3;\nvar _reset;\nvar reset_fn;\nvar template7 = Document2.createElement(\"template\");\ntemplate7.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      transition: var(--media-menu-item-transition,\n        background .15s linear,\n        opacity .2s ease-in-out\n      );\n      outline: var(--media-menu-item-outline, 0);\n      outline-offset: var(--media-menu-item-outline-offset, -1px);\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      align-self: stretch;\n      justify-self: stretch;\n      white-space: nowrap;\n      white-space-collapse: collapse;\n      text-wrap: nowrap;\n      padding: .4em .8em .4em 1em;\n    }\n\n    :host(:focus-visible) {\n      box-shadow: var(--media-menu-item-focus-shadow, inset 0 0 0 2px rgb(27 127 204 / .9));\n      outline: var(--media-menu-item-hover-outline, 0);\n      outline-offset: var(--media-menu-item-hover-outline-offset,  var(--media-menu-item-outline-offset, -1px));\n    }\n\n    :host(:hover) {\n      cursor: pointer;\n      background: var(--media-menu-item-hover-background, rgb(92 92 102 / .5));\n      outline: var(--media-menu-item-hover-outline);\n      outline-offset: var(--media-menu-item-hover-outline-offset,  var(--media-menu-item-outline-offset, -1px));\n    }\n\n    :host([aria-checked=\"true\"]) {\n      background: var(--media-menu-item-checked-background);\n    }\n\n    :host([hidden]) {\n      display: none;\n    }\n\n    :host([disabled]) {\n      pointer-events: none;\n      color: rgba(255, 255, 255, .3);\n    }\n\n    slot:not([name]) {\n      width: 100%;\n    }\n\n    slot:not([name=\"submenu\"]) {\n      display: inline-flex;\n      align-items: center;\n      transition: inherit;\n      opacity: var(--media-menu-item-opacity, 1);\n    }\n\n    slot[name=\"description\"] {\n      justify-content: end;\n    }\n\n    slot[name=\"description\"] > span {\n      display: inline-block;\n      margin-inline: 1em .2em;\n      max-width: var(--media-menu-item-description-max-width, 100px);\n      text-overflow: ellipsis;\n      overflow: hidden;\n      font-size: .8em;\n      font-weight: 400;\n      text-align: right;\n      position: relative;\n      top: .04em;\n    }\n\n    slot[name=\"checked-indicator\"] {\n      display: none;\n    }\n\n    :host(:is([role=\"menuitemradio\"],[role=\"menuitemcheckbox\"])) slot[name=\"checked-indicator\"] {\n      display: var(--media-menu-item-checked-indicator-display, inline-block);\n    }\n\n    ${/* For all slotted icons in prefix and suffix. */\n\"\"}\n    svg, img, ::slotted(svg), ::slotted(img) {\n      height: var(--media-menu-item-icon-height, var(--media-control-height, 24px));\n      fill: var(--media-icon-color, var(--media-primary-color, rgb(238 238 238)));\n      display: block;\n    }\n\n    ${/* Only for indicator icons like checked-indicator or captions-indicator. */\n\"\"}\n    [part~=\"indicator\"],\n    ::slotted([part~=\"indicator\"]) {\n      fill: var(--media-menu-item-indicator-fill,\n        var(--media-icon-color, var(--media-primary-color, rgb(238 238 238))));\n      height: var(--media-menu-item-indicator-height, 1.25em);\n      margin-right: .5ch;\n    }\n\n    [part~=\"checked-indicator\"] {\n      visibility: hidden;\n    }\n\n    :host([aria-checked=\"true\"]) [part~=\"checked-indicator\"] {\n      visibility: visible;\n    }\n  </style>\n  <slot name=\"checked-indicator\">\n    <svg aria-hidden=\"true\" viewBox=\"0 1 24 24\" part=\"checked-indicator indicator\">\n      <path d=\"m10 15.17 9.193-9.191 1.414 1.414-10.606 10.606-6.364-6.364 1.414-1.414 4.95 4.95Z\"/>\n    </svg>\n  </slot>\n  <slot name=\"prefix\"></slot>\n  <slot></slot>\n  <slot name=\"description\"></slot>\n  <slot name=\"suffix\"></slot>\n  <slot name=\"submenu\"></slot>\n`;\nvar Attributes5 = {\n  TYPE: \"type\",\n  VALUE: \"value\",\n  CHECKED: \"checked\",\n  DISABLED: \"disabled\"\n};\nvar MediaChromeMenuItem = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd10(this, _handleSlotChange2);\n    __privateAdd10(this, _submenuConnected);\n    __privateAdd10(this, _submenuDisconnected);\n    __privateAdd10(this, _handleKeyUp);\n    __privateAdd10(this, _handleKeyDown3);\n    __privateAdd10(this, _reset);\n    __privateAdd10(this, _dirty, false);\n    __privateAdd10(this, _ownerElement, void 0);\n    __privateAdd10(this, _handleMenuItem, () => {\n      var _a3, _b;\n      this.setAttribute(\"submenusize\", `${this.submenuElement.items.length}`);\n      const descriptionSlot = this.shadowRoot.querySelector(\n        'slot[name=\"description\"]'\n      );\n      const description = (_b = (_a3 = this.submenuElement.checkedItems) == null ? void 0 : _a3[0]) == null ? void 0 : _b.text;\n      const span = Document2.createElement(\"span\");\n      span.textContent = description != null ? description : \"\";\n      descriptionSlot.replaceChildren(span);\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.append(this.constructor.template.content.cloneNode(true));\n    }\n    this.shadowRoot.addEventListener(\"slotchange\", this);\n  }\n  static get observedAttributes() {\n    return [\n      Attributes5.TYPE,\n      Attributes5.DISABLED,\n      Attributes5.CHECKED,\n      Attributes5.VALUE\n    ];\n  }\n  enable() {\n    if (!this.hasAttribute(\"tabindex\")) {\n      this.setAttribute(\"tabindex\", \"-1\");\n    }\n    if (isCheckable(this) && !this.hasAttribute(\"aria-checked\")) {\n      this.setAttribute(\"aria-checked\", \"false\");\n    }\n    this.addEventListener(\"click\", this);\n    this.addEventListener(\"keydown\", this);\n  }\n  disable() {\n    this.removeAttribute(\"tabindex\");\n    this.removeEventListener(\"click\", this);\n    this.removeEventListener(\"keydown\", this);\n    this.removeEventListener(\"keyup\", this);\n  }\n  handleEvent(event) {\n    switch (event.type) {\n      case \"slotchange\":\n        __privateMethod7(this, _handleSlotChange2, handleSlotChange_fn2).call(this, event);\n        break;\n      case \"click\":\n        this.handleClick(event);\n        break;\n      case \"keydown\":\n        __privateMethod7(this, _handleKeyDown3, handleKeyDown_fn3).call(this, event);\n        break;\n      case \"keyup\":\n        __privateMethod7(this, _handleKeyUp, handleKeyUp_fn).call(this, event);\n        break;\n    }\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === Attributes5.CHECKED && isCheckable(this) && !__privateGet10(this, _dirty)) {\n      this.setAttribute(\"aria-checked\", newValue != null ? \"true\" : \"false\");\n    } else if (attrName === Attributes5.TYPE && newValue !== oldValue) {\n      this.role = \"menuitem\" + newValue;\n    } else if (attrName === Attributes5.DISABLED && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n  }\n  connectedCallback() {\n    if (!this.hasAttribute(Attributes5.DISABLED)) {\n      this.enable();\n    }\n    this.role = \"menuitem\" + this.type;\n    __privateSet10(this, _ownerElement, closestMenuItemsContainer(this, this.parentNode));\n    __privateMethod7(this, _reset, reset_fn).call(this);\n  }\n  disconnectedCallback() {\n    this.disable();\n    __privateMethod7(this, _reset, reset_fn).call(this);\n    __privateSet10(this, _ownerElement, null);\n  }\n  get invokeTarget() {\n    return this.getAttribute(\"invoketarget\");\n  }\n  set invokeTarget(value) {\n    this.setAttribute(\"invoketarget\", `${value}`);\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute\n   * or the slotted submenu element.\n   * @return {MediaChromeMenu | null}\n   */\n  get invokeTargetElement() {\n    var _a3;\n    if (this.invokeTarget) {\n      return (_a3 = getDocumentOrShadowRoot(this)) == null ? void 0 : _a3.querySelector(\n        `#${this.invokeTarget}`\n      );\n    }\n    return this.submenuElement;\n  }\n  /**\n   * Returns the slotted submenu element.\n   */\n  get submenuElement() {\n    const submenuSlot = this.shadowRoot.querySelector('slot[name=\"submenu\"]');\n    return (\n      /** @type {MediaChromeMenu | null} */\n      submenuSlot.assignedElements({ flatten: true })[0]\n    );\n  }\n  get type() {\n    var _a3;\n    return (_a3 = this.getAttribute(Attributes5.TYPE)) != null ? _a3 : \"\";\n  }\n  set type(val) {\n    this.setAttribute(Attributes5.TYPE, `${val}`);\n  }\n  get value() {\n    var _a3;\n    return (_a3 = this.getAttribute(Attributes5.VALUE)) != null ? _a3 : this.text;\n  }\n  set value(val) {\n    this.setAttribute(Attributes5.VALUE, val);\n  }\n  get text() {\n    var _a3;\n    return ((_a3 = this.textContent) != null ? _a3 : \"\").trim();\n  }\n  get checked() {\n    if (!isCheckable(this))\n      return void 0;\n    return this.getAttribute(\"aria-checked\") === \"true\";\n  }\n  set checked(value) {\n    if (!isCheckable(this))\n      return;\n    __privateSet10(this, _dirty, true);\n    this.setAttribute(\"aria-checked\", value ? \"true\" : \"false\");\n    if (value) {\n      this.part.add(\"checked\");\n    } else {\n      this.part.remove(\"checked\");\n    }\n  }\n  handleClick(event) {\n    if (isCheckable(this))\n      return;\n    if (this.invokeTargetElement && containsComposedNode(this, event.target)) {\n      this.invokeTargetElement.dispatchEvent(\n        new InvokeEvent({ relatedTarget: this })\n      );\n    }\n  }\n  get keysUsed() {\n    return [\"Enter\", \" \"];\n  }\n};\n_dirty = /* @__PURE__ */ new WeakMap();\n_ownerElement = /* @__PURE__ */ new WeakMap();\n_handleSlotChange2 = /* @__PURE__ */ new WeakSet();\nhandleSlotChange_fn2 = function(event) {\n  const slot = event.target;\n  const isDefaultSlot = !(slot == null ? void 0 : slot.name);\n  if (isDefaultSlot) {\n    for (let node of slot.assignedNodes({ flatten: true })) {\n      if (node instanceof Text && node.textContent.trim() === \"\") {\n        node.remove();\n      }\n    }\n  }\n  if (slot.name === \"submenu\") {\n    if (this.submenuElement) {\n      __privateMethod7(this, _submenuConnected, submenuConnected_fn).call(this);\n    } else {\n      __privateMethod7(this, _submenuDisconnected, submenuDisconnected_fn).call(this);\n    }\n  }\n};\n_submenuConnected = /* @__PURE__ */ new WeakSet();\nsubmenuConnected_fn = function() {\n  return __async(this, null, function* () {\n    this.setAttribute(\"aria-haspopup\", \"menu\");\n    this.setAttribute(\"aria-expanded\", `${!this.submenuElement.hidden}`);\n    this.submenuElement.addEventListener(\"change\", __privateGet10(this, _handleMenuItem));\n    this.submenuElement.addEventListener(\"addmenuitem\", __privateGet10(this, _handleMenuItem));\n    this.submenuElement.addEventListener(\n      \"removemenuitem\",\n      __privateGet10(this, _handleMenuItem)\n    );\n    __privateGet10(this, _handleMenuItem).call(this);\n  });\n};\n_submenuDisconnected = /* @__PURE__ */ new WeakSet();\nsubmenuDisconnected_fn = function() {\n  this.removeAttribute(\"aria-haspopup\");\n  this.removeAttribute(\"aria-expanded\");\n  this.submenuElement.removeEventListener(\"change\", __privateGet10(this, _handleMenuItem));\n  this.submenuElement.removeEventListener(\n    \"addmenuitem\",\n    __privateGet10(this, _handleMenuItem)\n  );\n  this.submenuElement.removeEventListener(\n    \"removemenuitem\",\n    __privateGet10(this, _handleMenuItem)\n  );\n  __privateGet10(this, _handleMenuItem).call(this);\n};\n_handleMenuItem = /* @__PURE__ */ new WeakMap();\n_handleKeyUp = /* @__PURE__ */ new WeakSet();\nhandleKeyUp_fn = function(event) {\n  const { key } = event;\n  if (!this.keysUsed.includes(key)) {\n    this.removeEventListener(\"keyup\", __privateMethod7(this, _handleKeyUp, handleKeyUp_fn));\n    return;\n  }\n  this.handleClick(event);\n};\n_handleKeyDown3 = /* @__PURE__ */ new WeakSet();\nhandleKeyDown_fn3 = function(event) {\n  const { metaKey, altKey, key } = event;\n  if (metaKey || altKey || !this.keysUsed.includes(key)) {\n    this.removeEventListener(\"keyup\", __privateMethod7(this, _handleKeyUp, handleKeyUp_fn));\n    return;\n  }\n  this.addEventListener(\"keyup\", __privateMethod7(this, _handleKeyUp, handleKeyUp_fn), { once: true });\n};\n_reset = /* @__PURE__ */ new WeakSet();\nreset_fn = function() {\n  var _a3;\n  const items = (_a3 = __privateGet10(this, _ownerElement)) == null ? void 0 : _a3.radioGroupItems;\n  if (!items)\n    return;\n  let checkedItem = items.filter((item) => item.getAttribute(\"aria-checked\") === \"true\").pop();\n  if (!checkedItem)\n    checkedItem = items[0];\n  for (const item of items) {\n    item.setAttribute(\"aria-checked\", \"false\");\n  }\n  checkedItem == null ? void 0 : checkedItem.setAttribute(\"aria-checked\", \"true\");\n};\n__publicField7(MediaChromeMenuItem, \"template\", template7);\nfunction isCheckable(item) {\n  return item.type === \"radio\" || item.type === \"checkbox\";\n}\nfunction closestMenuItemsContainer(childNode, parentNode) {\n  if (!childNode)\n    return null;\n  const { host } = childNode.getRootNode();\n  if (!parentNode && host)\n    return closestMenuItemsContainer(childNode, host);\n  if (parentNode == null ? void 0 : parentNode.items)\n    return parentNode;\n  return closestMenuItemsContainer(parentNode, parentNode == null ? void 0 : parentNode.parentNode);\n}\nif (!GlobalThis.customElements.get(\"media-chrome-menu-item\")) {\n  GlobalThis.customElements.define(\n    \"media-chrome-menu-item\",\n    MediaChromeMenuItem\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-chrome-range.js\nvar __accessCheck11 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet11 = (obj, member, getter) => {\n  __accessCheck11(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd11 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet11 = (obj, member, value, setter) => {\n  __accessCheck11(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod8 = (obj, member, method) => {\n  __accessCheck11(obj, member, \"access private method\");\n  return method;\n};\nvar _mediaController4;\nvar _isInputTarget;\nvar _startpoint;\nvar _endpoint;\nvar _cssRules;\nvar _segments;\nvar _onFocusIn;\nvar _onFocusOut;\nvar _updateComputedStyles;\nvar _updateActiveSegment;\nvar updateActiveSegment_fn;\nvar _enableUserEvents;\nvar enableUserEvents_fn;\nvar _disableUserEvents;\nvar disableUserEvents_fn;\nvar _handlePointerDown;\nvar handlePointerDown_fn;\nvar _handlePointerEnter;\nvar handlePointerEnter_fn;\nvar _handlePointerUp2;\nvar handlePointerUp_fn2;\nvar _handlePointerLeave;\nvar handlePointerLeave_fn;\nvar _handlePointerMove2;\nvar handlePointerMove_fn2;\nvar template8 = Document2.createElement(\"template\");\ntemplate8.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      --_focus-box-shadow: var(--media-focus-box-shadow, inset 0 0 0 2px rgb(27 127 204 / .9));\n      --_media-range-padding: var(--media-range-padding, var(--media-control-padding, 10px));\n\n      box-shadow: var(--_focus-visible-box-shadow, none);\n      background: var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .7)));\n      height: calc(var(--media-control-height, 24px) + 2 * var(--_media-range-padding));\n      display: inline-flex;\n      align-items: center;\n      ${/* Don't horizontal align w/ justify-content! #container can go negative on the x-axis w/ small width. */\n\"\"}\n      vertical-align: middle;\n      box-sizing: border-box;\n      position: relative;\n      width: 100px;\n      transition: background .15s linear;\n      cursor: pointer;\n      pointer-events: auto;\n      touch-action: none; ${/* Prevent scrolling when dragging on mobile. */\n\"\"}\n      z-index: 1; ${/* Apply z-index to overlap buttons below. */\n\"\"}\n    }\n\n    ${/* Reset before `outline` on track could be set by a CSS var */\n\"\"}\n    input[type=range]:focus {\n      outline: 0;\n    }\n    input[type=range]:focus::-webkit-slider-runnable-track {\n      outline: 0;\n    }\n\n    :host(:hover) {\n      background: var(--media-control-hover-background, rgb(50 50 70 / .7));\n    }\n\n    #leftgap {\n      padding-left: var(--media-range-padding-left, var(--_media-range-padding));\n    }\n\n    #rightgap {\n      padding-right: var(--media-range-padding-right, var(--_media-range-padding));\n    }\n\n    #startpoint,\n    #endpoint {\n      position: absolute;\n    }\n\n    #endpoint {\n      right: 0;\n    }\n\n    #container {\n      ${/* Not using the CSS `padding` prop makes it easier for slide open volume ranges so the width can be zero. */\n\"\"}\n      width: var(--media-range-track-width, 100%);\n      transform: translate(var(--media-range-track-translate-x, 0px), var(--media-range-track-translate-y, 0px));\n      position: relative;\n      height: 100%;\n      display: flex;\n      align-items: center;\n      min-width: 40px;\n    }\n\n    #range {\n      ${/* The input range acts as a hover and hit zone for input events. */\n\"\"}\n      display: var(--media-time-range-hover-display, block);\n      bottom: var(--media-time-range-hover-bottom, -7px);\n      height: var(--media-time-range-hover-height, max(100% + 7px, 25px));\n      width: 100%;\n      position: absolute;\n      cursor: pointer;\n\n      -webkit-appearance: none; ${/* Hides the slider so that custom slider can be made */\n\"\"}\n      -webkit-tap-highlight-color: transparent;\n      background: transparent; ${/* Otherwise white in Chrome */\n\"\"}\n      margin: 0;\n      z-index: 1;\n    }\n\n    @media (hover: hover) {\n      #range {\n        bottom: var(--media-time-range-hover-bottom, -5px);\n        height: var(--media-time-range-hover-height, max(100% + 5px, 20px));\n      }\n    }\n\n    ${/* Special styling for WebKit/Blink */\n\"\"}\n    ${/* Make thumb width/height small so it has no effect on range click position. */\n\"\"}\n    #range::-webkit-slider-thumb {\n      -webkit-appearance: none;\n      background: transparent;\n      width: .1px;\n      height: .1px;\n    }\n\n    ${/* The thumb is not positioned relative to the track in Firefox */\n\"\"}\n    #range::-moz-range-thumb {\n      background: transparent;\n      border: transparent;\n      width: .1px;\n      height: .1px;\n    }\n\n    #appearance {\n      height: var(--media-range-track-height, 4px);\n      display: flex;\n      flex-direction: column;\n      justify-content: center;\n      width: 100%;\n      position: absolute;\n      ${/* Required for Safari to stop glitching track height on hover */\n\"\"}\n      will-change: transform;\n    }\n\n    #background,\n    #track {\n      border-radius: var(--media-range-track-border-radius, 1px);\n      position: absolute;\n      width: 100%;\n      height: 100%;\n    }\n\n    #background {\n      background: var(--media-range-track-background, rgb(255 255 255 / .2));\n      backdrop-filter: var(--media-range-track-background-backdrop-filter);\n      -webkit-backdrop-filter: var(--media-range-track-background-backdrop-filter);\n    }\n\n    #track {\n      border: var(--media-range-track-border, none);\n      outline: var(--media-range-track-outline);\n      outline-offset: var(--media-range-track-outline-offset);\n      backdrop-filter: var(--media-range-track-backdrop-filter);\n      -webkit-backdrop-filter: var(--media-range-track-backdrop-filter);\n      box-shadow: var(--media-range-track-box-shadow, none);\n      overflow: hidden;\n    }\n\n    #progress,\n    #highlight,\n    #pointer {\n      position: absolute;\n      height: 100%;\n      will-change: width;\n    }\n\n    #progress {\n      background: var(--media-range-bar-color, var(--media-primary-color, rgb(238 238 238)));\n      transition: var(--media-range-track-transition);\n    }\n\n    #pointer {\n      background: var(--media-range-track-pointer-background);\n      border-right: var(--media-range-track-pointer-border-right);\n      transition: visibility .25s, opacity .25s;\n      visibility: hidden;\n      opacity: 0;\n    }\n\n    @media (hover: hover) {\n      :host(:hover) #pointer {\n        transition: visibility .5s, opacity .5s;\n        visibility: visible;\n        opacity: 1;\n      }\n    }\n\n    #thumb {\n      width: var(--media-range-thumb-width, 10px);\n      height: var(--media-range-thumb-height, 10px);\n      margin-left: calc(var(--media-range-thumb-width, 10px) / -2);\n      border: var(--media-range-thumb-border, none);\n      border-radius: var(--media-range-thumb-border-radius, 10px);\n      background: var(--media-range-thumb-background, var(--media-primary-color, rgb(238 238 238)));\n      box-shadow: var(--media-range-thumb-box-shadow, 1px 1px 1px transparent);\n      transition: var(--media-range-thumb-transition);\n      transform: var(--media-range-thumb-transform, none);\n      opacity: var(--media-range-thumb-opacity, 1);\n      position: absolute;\n      left: 0;\n      cursor: pointer;\n    }\n\n    :host([disabled]) #thumb {\n      background-color: #777;\n    }\n\n    .segments #appearance {\n      height: var(--media-range-segment-hover-height, 7px);\n    }\n\n    #background,\n    #track {\n      clip-path: url(#segments-clipping);\n    }\n\n    #segments {\n      --segments-gap: var(--media-range-segments-gap, 2px);\n      position: absolute;\n      width: 100%;\n      height: 100%;\n    }\n\n    #segments-clipping {\n      transform: translateX(calc(var(--segments-gap) / 2));\n    }\n\n    #segments-clipping:empty {\n      display: none;\n    }\n\n    #segments-clipping rect {\n      height: var(--media-range-track-height, 4px);\n      y: calc((var(--media-range-segment-hover-height, 7px) - var(--media-range-track-height, 4px)) / 2);\n      transition: var(--media-range-segment-transition, transform .1s ease-in-out);\n      transform: var(--media-range-segment-transform, scaleY(1));\n      transform-origin: center;\n    }\n  </style>\n  <div id=\"leftgap\"></div>\n  <div id=\"container\">\n    <div id=\"startpoint\"></div>\n    <div id=\"endpoint\"></div>\n    <div id=\"appearance\" part=\"appearance\">\n      <div id=\"background\"></div>\n      <div id=\"track\">\n        <div id=\"highlight\"></div>\n        <div id=\"pointer\"></div>\n        <div id=\"progress\"></div>\n      </div>\n      <div id=\"thumb\"></div>\n      <svg id=\"segments\"><clipPath id=\"segments-clipping\"></clipPath></svg>\n    </div>\n    <input id=\"range\" type=\"range\" min=\"0\" max=\"1\" step=\"any\" value=\"0\">\n  </div>\n  <div id=\"rightgap\"></div>\n`;\nvar MediaChromeRange = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd11(this, _updateActiveSegment);\n    __privateAdd11(this, _enableUserEvents);\n    __privateAdd11(this, _disableUserEvents);\n    __privateAdd11(this, _handlePointerDown);\n    __privateAdd11(this, _handlePointerEnter);\n    __privateAdd11(this, _handlePointerUp2);\n    __privateAdd11(this, _handlePointerLeave);\n    __privateAdd11(this, _handlePointerMove2);\n    __privateAdd11(this, _mediaController4, void 0);\n    __privateAdd11(this, _isInputTarget, void 0);\n    __privateAdd11(this, _startpoint, void 0);\n    __privateAdd11(this, _endpoint, void 0);\n    __privateAdd11(this, _cssRules, {});\n    __privateAdd11(this, _segments, []);\n    __privateAdd11(this, _onFocusIn, () => {\n      if (this.range.matches(\":focus-visible\")) {\n        const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n        style.setProperty(\n          \"--_focus-visible-box-shadow\",\n          \"var(--_focus-box-shadow)\"\n        );\n      }\n    });\n    __privateAdd11(this, _onFocusOut, () => {\n      const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n      style.removeProperty(\"--_focus-visible-box-shadow\");\n    });\n    __privateAdd11(this, _updateComputedStyles, () => {\n      const clipping = this.shadowRoot.querySelector(\"#segments-clipping\");\n      if (clipping)\n        clipping.parentNode.append(clipping);\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template8.content.cloneNode(true));\n    }\n    this.container = this.shadowRoot.querySelector(\"#container\");\n    __privateSet11(this, _startpoint, this.shadowRoot.querySelector(\"#startpoint\"));\n    __privateSet11(this, _endpoint, this.shadowRoot.querySelector(\"#endpoint\"));\n    this.range = this.shadowRoot.querySelector(\"#range\");\n    this.appearance = this.shadowRoot.querySelector(\"#appearance\");\n  }\n  static get observedAttributes() {\n    return [\n      \"disabled\",\n      \"aria-disabled\",\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet11(this, _mediaController4)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet11(this, _mediaController4, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet11(this, _mediaController4, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet11(this, _mediaController4)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    } else if (attrName === \"disabled\" || attrName === \"aria-disabled\" && oldValue !== newValue) {\n      if (newValue == null) {\n        this.range.removeAttribute(attrName);\n        __privateMethod8(this, _enableUserEvents, enableUserEvents_fn).call(this);\n      } else {\n        this.range.setAttribute(attrName, newValue);\n        __privateMethod8(this, _disableUserEvents, disableUserEvents_fn).call(this);\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n    style.setProperty(\n      \"display\",\n      `var(--media-control-display, var(--${this.localName}-display, inline-flex))`\n    );\n    __privateGet11(this, _cssRules).pointer = getOrInsertCSSRule(this.shadowRoot, \"#pointer\");\n    __privateGet11(this, _cssRules).progress = getOrInsertCSSRule(this.shadowRoot, \"#progress\");\n    __privateGet11(this, _cssRules).thumb = getOrInsertCSSRule(this.shadowRoot, \"#thumb\");\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet11(\n        this,\n        _mediaController4,\n        // @ts-ignore\n        (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId)\n      );\n      (_c = (_b = __privateGet11(this, _mediaController4)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n    this.updateBar();\n    this.shadowRoot.addEventListener(\"focusin\", __privateGet11(this, _onFocusIn));\n    this.shadowRoot.addEventListener(\"focusout\", __privateGet11(this, _onFocusOut));\n    __privateMethod8(this, _enableUserEvents, enableUserEvents_fn).call(this);\n    observeResize(this.container, __privateGet11(this, _updateComputedStyles));\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    __privateMethod8(this, _disableUserEvents, disableUserEvents_fn).call(this);\n    (_b = (_a3 = __privateGet11(this, _mediaController4)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet11(this, _mediaController4, null);\n    this.shadowRoot.removeEventListener(\"focusin\", __privateGet11(this, _onFocusIn));\n    this.shadowRoot.removeEventListener(\"focusout\", __privateGet11(this, _onFocusOut));\n    unobserveResize(this.container, __privateGet11(this, _updateComputedStyles));\n  }\n  updatePointerBar(evt) {\n    var _a3;\n    (_a3 = __privateGet11(this, _cssRules).pointer) == null ? void 0 : _a3.style.setProperty(\n      \"width\",\n      `${this.getPointerRatio(evt) * 100}%`\n    );\n  }\n  updateBar() {\n    var _a3, _b;\n    const rangePercent = this.range.valueAsNumber * 100;\n    (_a3 = __privateGet11(this, _cssRules).progress) == null ? void 0 : _a3.style.setProperty(\"width\", `${rangePercent}%`);\n    (_b = __privateGet11(this, _cssRules).thumb) == null ? void 0 : _b.style.setProperty(\"left\", `${rangePercent}%`);\n  }\n  updateSegments(segments) {\n    const clipping = this.shadowRoot.querySelector(\"#segments-clipping\");\n    clipping.textContent = \"\";\n    this.container.classList.toggle(\"segments\", !!(segments == null ? void 0 : segments.length));\n    if (!(segments == null ? void 0 : segments.length))\n      return;\n    __privateGet11(this, _cssRules).activeSegment = insertCSSRule(\n      this.shadowRoot,\n      \"#segments-clipping rect:nth-child(0)\"\n    );\n    const normalized = [\n      .../* @__PURE__ */ new Set([\n        +this.range.min,\n        ...segments.flatMap((s) => [s.start, s.end]),\n        +this.range.max\n      ])\n    ];\n    __privateSet11(this, _segments, [...normalized]);\n    const lastMarker = normalized.pop();\n    for (const [i2, marker] of normalized.entries()) {\n      const [isFirst, isLast] = [i2 === 0, i2 === normalized.length - 1];\n      const x4 = isFirst ? \"calc(var(--segments-gap) / -1)\" : `${marker * 100}%`;\n      const x22 = isLast ? lastMarker : normalized[i2 + 1];\n      const width = `calc(${(x22 - marker) * 100}%${isFirst || isLast ? \"\" : ` - var(--segments-gap)`})`;\n      const segmentEl = Document2.createElementNS(\n        \"http://www.w3.org/2000/svg\",\n        \"rect\"\n      );\n      const cssRule = getOrInsertCSSRule(\n        this.shadowRoot,\n        `#segments-clipping rect:nth-child(${i2 + 1})`\n      );\n      cssRule.style.setProperty(\"x\", x4);\n      cssRule.style.setProperty(\"width\", width);\n      clipping.append(segmentEl);\n    }\n  }\n  getPointerRatio(evt) {\n    let pointerRatio = getPointProgressOnLine(\n      evt.clientX,\n      evt.clientY,\n      __privateGet11(this, _startpoint).getBoundingClientRect(),\n      __privateGet11(this, _endpoint).getBoundingClientRect()\n    );\n    return Math.max(0, Math.min(1, pointerRatio));\n  }\n  get dragging() {\n    return this.hasAttribute(\"dragging\");\n  }\n  handleEvent(evt) {\n    switch (evt.type) {\n      case \"pointermove\":\n        __privateMethod8(this, _handlePointerMove2, handlePointerMove_fn2).call(this, evt);\n        break;\n      case \"input\":\n        this.updateBar();\n        break;\n      case \"pointerenter\":\n        __privateMethod8(this, _handlePointerEnter, handlePointerEnter_fn).call(this, evt);\n        break;\n      case \"pointerdown\":\n        __privateMethod8(this, _handlePointerDown, handlePointerDown_fn).call(this, evt);\n        break;\n      case \"pointerup\":\n        __privateMethod8(this, _handlePointerUp2, handlePointerUp_fn2).call(this);\n        break;\n      case \"pointerleave\":\n        __privateMethod8(this, _handlePointerLeave, handlePointerLeave_fn).call(this);\n        break;\n    }\n  }\n  get keysUsed() {\n    return [\"ArrowUp\", \"ArrowRight\", \"ArrowDown\", \"ArrowLeft\"];\n  }\n};\n_mediaController4 = /* @__PURE__ */ new WeakMap();\n_isInputTarget = /* @__PURE__ */ new WeakMap();\n_startpoint = /* @__PURE__ */ new WeakMap();\n_endpoint = /* @__PURE__ */ new WeakMap();\n_cssRules = /* @__PURE__ */ new WeakMap();\n_segments = /* @__PURE__ */ new WeakMap();\n_onFocusIn = /* @__PURE__ */ new WeakMap();\n_onFocusOut = /* @__PURE__ */ new WeakMap();\n_updateComputedStyles = /* @__PURE__ */ new WeakMap();\n_updateActiveSegment = /* @__PURE__ */ new WeakSet();\nupdateActiveSegment_fn = function(evt) {\n  const rule = __privateGet11(this, _cssRules).activeSegment;\n  if (!rule)\n    return;\n  const pointerRatio = this.getPointerRatio(evt);\n  const segmentIndex = __privateGet11(this, _segments).findIndex((start, i2, arr) => {\n    const end = arr[i2 + 1];\n    return end != null && pointerRatio >= start && pointerRatio <= end;\n  });\n  const selectorText = `#segments-clipping rect:nth-child(${segmentIndex + 1})`;\n  if (rule.selectorText != selectorText || !rule.style.transform) {\n    rule.selectorText = selectorText;\n    rule.style.setProperty(\n      \"transform\",\n      \"var(--media-range-segment-hover-transform, scaleY(2))\"\n    );\n  }\n};\n_enableUserEvents = /* @__PURE__ */ new WeakSet();\nenableUserEvents_fn = function() {\n  if (this.hasAttribute(\"disabled\"))\n    return;\n  this.addEventListener(\"input\", this);\n  this.addEventListener(\"pointerdown\", this);\n  this.addEventListener(\"pointerenter\", this);\n};\n_disableUserEvents = /* @__PURE__ */ new WeakSet();\ndisableUserEvents_fn = function() {\n  var _a3, _b;\n  this.removeEventListener(\"input\", this);\n  this.removeEventListener(\"pointerdown\", this);\n  this.removeEventListener(\"pointerenter\", this);\n  (_a3 = GlobalThis.window) == null ? void 0 : _a3.removeEventListener(\"pointerup\", this);\n  (_b = GlobalThis.window) == null ? void 0 : _b.removeEventListener(\"pointermove\", this);\n};\n_handlePointerDown = /* @__PURE__ */ new WeakSet();\nhandlePointerDown_fn = function(evt) {\n  var _a3;\n  __privateSet11(this, _isInputTarget, evt.composedPath().includes(this.range));\n  (_a3 = GlobalThis.window) == null ? void 0 : _a3.addEventListener(\"pointerup\", this);\n};\n_handlePointerEnter = /* @__PURE__ */ new WeakSet();\nhandlePointerEnter_fn = function(evt) {\n  var _a3;\n  if (evt.pointerType !== \"mouse\")\n    __privateMethod8(this, _handlePointerDown, handlePointerDown_fn).call(this, evt);\n  this.addEventListener(\"pointerleave\", this);\n  (_a3 = GlobalThis.window) == null ? void 0 : _a3.addEventListener(\"pointermove\", this);\n};\n_handlePointerUp2 = /* @__PURE__ */ new WeakSet();\nhandlePointerUp_fn2 = function() {\n  var _a3;\n  (_a3 = GlobalThis.window) == null ? void 0 : _a3.removeEventListener(\"pointerup\", this);\n  this.toggleAttribute(\"dragging\", false);\n  this.range.disabled = this.hasAttribute(\"disabled\");\n};\n_handlePointerLeave = /* @__PURE__ */ new WeakSet();\nhandlePointerLeave_fn = function() {\n  var _a3, _b;\n  this.removeEventListener(\"pointerleave\", this);\n  (_a3 = GlobalThis.window) == null ? void 0 : _a3.removeEventListener(\"pointermove\", this);\n  this.toggleAttribute(\"dragging\", false);\n  this.range.disabled = this.hasAttribute(\"disabled\");\n  (_b = __privateGet11(this, _cssRules).activeSegment) == null ? void 0 : _b.style.removeProperty(\"transform\");\n};\n_handlePointerMove2 = /* @__PURE__ */ new WeakSet();\nhandlePointerMove_fn2 = function(evt) {\n  this.toggleAttribute(\n    \"dragging\",\n    evt.buttons === 1 || evt.pointerType !== \"mouse\"\n  );\n  this.updatePointerBar(evt);\n  __privateMethod8(this, _updateActiveSegment, updateActiveSegment_fn).call(this, evt);\n  if (this.dragging && (evt.pointerType !== \"mouse\" || !__privateGet11(this, _isInputTarget))) {\n    this.range.disabled = true;\n    this.range.valueAsNumber = this.getPointerRatio(evt);\n    this.range.dispatchEvent(\n      new Event(\"input\", { bubbles: true, composed: true })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-chrome-range\")) {\n  GlobalThis.customElements.define(\"media-chrome-range\", MediaChromeRange);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-control-bar.js\nvar __accessCheck12 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet12 = (obj, member, getter) => {\n  __accessCheck12(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd12 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet12 = (obj, member, value, setter) => {\n  __accessCheck12(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _mediaController5;\nvar template9 = Document2.createElement(\"template\");\ntemplate9.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      ${/* Need position to display above video for some reason */\n\"\"}\n      box-sizing: border-box;\n      display: var(--media-control-display, var(--media-control-bar-display, inline-flex));\n      color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n      --media-loading-indicator-icon-height: 44px;\n    }\n\n    ::slotted(media-time-range),\n    ::slotted(media-volume-range) {\n      min-height: 100%;\n    }\n\n    ::slotted(media-time-range),\n    ::slotted(media-clip-selector) {\n      flex-grow: 1;\n    }\n  </style>\n\n  <slot></slot>\n`;\nvar MediaControlBar = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd12(this, _mediaController5, void 0);\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template9.content.cloneNode(true));\n    }\n  }\n  static get observedAttributes() {\n    return [MediaStateReceiverAttributes.MEDIA_CONTROLLER];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet12(this, _mediaController5)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet12(this, _mediaController5, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet12(this, _mediaController5, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet12(this, _mediaController5)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet12(this, _mediaController5, (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId));\n      (_c = (_b = __privateGet12(this, _mediaController5)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    (_b = (_a3 = __privateGet12(this, _mediaController5)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet12(this, _mediaController5, null);\n  }\n};\n_mediaController5 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-control-bar\")) {\n  GlobalThis.customElements.define(\"media-control-bar\", MediaControlBar);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-text-display.js\nvar __accessCheck13 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet13 = (obj, member, getter) => {\n  __accessCheck13(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd13 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet13 = (obj, member, value, setter) => {\n  __accessCheck13(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _mediaController6;\nvar template10 = Document2.createElement(\"template\");\ntemplate10.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      font: var(--media-font,\n        var(--media-font-weight, normal)\n        var(--media-font-size, 14px) /\n        var(--media-text-content-height, var(--media-control-height, 24px))\n        var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n      color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n      background: var(--media-text-background, var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .7))));\n      padding: var(--media-control-padding, 10px);\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      vertical-align: middle;\n      box-sizing: border-box;\n      text-align: center;\n      pointer-events: auto;\n    }\n\n    ${/*\n  Only show outline when keyboard focusing.\n  https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo\n*/\n\"\"}\n    :host(:focus-visible) {\n      box-shadow: inset 0 0 0 2px rgb(27 127 204 / .9);\n      outline: 0;\n    }\n\n    ${/*\n* hide default focus ring, particularly when using mouse\n*/\n\"\"}\n    :host(:where(:focus)) {\n      box-shadow: none;\n      outline: 0;\n    }\n  </style>\n  <slot></slot>\n`;\nvar MediaTextDisplay = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd13(this, _mediaController6, void 0);\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template10.content.cloneNode(true));\n    }\n  }\n  static get observedAttributes() {\n    return [MediaStateReceiverAttributes.MEDIA_CONTROLLER];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet13(this, _mediaController6)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet13(this, _mediaController6, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet13(this, _mediaController6, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet13(this, _mediaController6)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n    style.setProperty(\n      \"display\",\n      `var(--media-control-display, var(--${this.localName}-display, inline-flex))`\n    );\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet13(this, _mediaController6, (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId));\n      (_c = (_b = __privateGet13(this, _mediaController6)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    (_b = (_a3 = __privateGet13(this, _mediaController6)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet13(this, _mediaController6, null);\n  }\n};\n_mediaController6 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-text-display\")) {\n  GlobalThis.customElements.define(\"media-text-display\", MediaTextDisplay);\n}\nvar media_text_display_default = MediaTextDisplay;\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-duration-display.js\nvar __accessCheck14 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet14 = (obj, member, getter) => {\n  __accessCheck14(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd14 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet14 = (obj, member, value, setter) => {\n  __accessCheck14(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _slot;\nvar MediaDurationDisplay = class extends MediaTextDisplay {\n  constructor() {\n    super();\n    __privateAdd14(this, _slot, void 0);\n    __privateSet14(this, _slot, this.shadowRoot.querySelector(\"slot\"));\n    __privateGet14(this, _slot).textContent = formatTime(0);\n  }\n  static get observedAttributes() {\n    return [...super.observedAttributes, MediaUIAttributes.MEDIA_DURATION];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === MediaUIAttributes.MEDIA_DURATION) {\n      __privateGet14(this, _slot).textContent = formatTime(+newValue);\n    }\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n  }\n  /**\n   * @type {number | undefined} In seconds\n   */\n  get mediaDuration() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_DURATION);\n  }\n  set mediaDuration(time) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_DURATION, time);\n  }\n};\n_slot = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-duration-display\")) {\n  GlobalThis.customElements.define(\n    \"media-duration-display\",\n    MediaDurationDisplay\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-fullscreen-button.js\nvar enterFullscreenIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M16 3v2.5h3.5V9H22V3h-6ZM4 9h2.5V5.5H10V3H4v6Zm15.5 9.5H16V21h6v-6h-2.5v3.5ZM6.5 15H4v6h6v-2.5H6.5V15Z\"/>\n</svg>`;\nvar exitFullscreenIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M18.5 6.5V3H16v6h6V6.5h-3.5ZM16 21h2.5v-3.5H22V15h-6v6ZM4 17.5h3.5V21H10v-6H4v2.5Zm3.5-11H4V9h6V3H7.5v3.5Z\"/>\n</svg>`;\nvar slotTemplate6 = Document2.createElement(\"template\");\nslotTemplate6.innerHTML = /*html*/\n`\n  <style>\n  :host([${MediaUIAttributes.MEDIA_IS_FULLSCREEN}]) slot:not([name=exit]):not([name=icon]) {\n    display: none !important;\n  }\n\n  ${/* Double negative, but safer if display doesn't equal 'block' */\n\"\"}\n  :host(:not([${MediaUIAttributes.MEDIA_IS_FULLSCREEN}])) slot:not([name=enter]):not([name=icon]) {\n    display: none !important;\n  }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"enter\">${enterFullscreenIcon}</slot>\n    <slot name=\"exit\">${exitFullscreenIcon}</slot>\n  </slot>\n`;\nvar updateAriaLabel3 = (el) => {\n  const label = el.mediaIsFullscreen ? verbs.EXIT_FULLSCREEN() : verbs.ENTER_FULLSCREEN();\n  el.setAttribute(\"aria-label\", label);\n};\nvar MediaFullscreenButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_IS_FULLSCREEN,\n      MediaUIAttributes.MEDIA_FULLSCREEN_UNAVAILABLE\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate6 }, options));\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    updateAriaLabel3(this);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_IS_FULLSCREEN) {\n      updateAriaLabel3(this);\n    }\n  }\n  /**\n   * @type {string | undefined} Fullscreen unavailability state\n   */\n  get mediaFullscreenUnavailable() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_FULLSCREEN_UNAVAILABLE);\n  }\n  set mediaFullscreenUnavailable(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_FULLSCREEN_UNAVAILABLE, value);\n  }\n  /**\n   * @type {boolean} Whether fullscreen is available\n   */\n  get mediaIsFullscreen() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_IS_FULLSCREEN);\n  }\n  set mediaIsFullscreen(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_IS_FULLSCREEN, value);\n  }\n  handleClick() {\n    const eventName = this.mediaIsFullscreen ? MediaUIEvents.MEDIA_EXIT_FULLSCREEN_REQUEST : MediaUIEvents.MEDIA_ENTER_FULLSCREEN_REQUEST;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(eventName, { composed: true, bubbles: true })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-fullscreen-button\")) {\n  GlobalThis.customElements.define(\n    \"media-fullscreen-button\",\n    MediaFullscreenButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-live-button.js\nvar { MEDIA_TIME_IS_LIVE, MEDIA_PAUSED } = MediaUIAttributes;\nvar { MEDIA_SEEK_TO_LIVE_REQUEST, MEDIA_PLAY_REQUEST } = MediaUIEvents;\nvar indicatorSVG = '<svg viewBox=\"0 0 6 12\"><circle cx=\"3\" cy=\"6\" r=\"2\"></circle></svg>';\nvar slotTemplate7 = Document2.createElement(\"template\");\nslotTemplate7.innerHTML = /*html*/\n`\n  <style>\n\n  slot[name=indicator] > *,\n  :host ::slotted([slot=indicator]) {\n    ${/* Override styles for icon-only buttons */\n\"\"}\n    min-width: auto;\n    fill: var(--media-live-button-icon-color, rgb(140, 140, 140));\n    color: var(--media-live-button-icon-color, rgb(140, 140, 140));\n  }\n\n  :host([${MEDIA_TIME_IS_LIVE}]:not([${MEDIA_PAUSED}])) slot[name=indicator] > *,\n  :host([${MEDIA_TIME_IS_LIVE}]:not([${MEDIA_PAUSED}])) ::slotted([slot=indicator]) {\n    fill: var(--media-live-button-indicator-color, rgb(255, 0, 0));\n    color: var(--media-live-button-indicator-color, rgb(255, 0, 0));\n  }\n\n  :host([${MEDIA_TIME_IS_LIVE}]:not([${MEDIA_PAUSED}])) {\n    cursor: not-allowed;\n  }\n\n  </style>\n\n  <slot name=\"indicator\">${indicatorSVG}</slot>\n  ${/*\n  A new line between spacer and text creates inconsistent spacing\n  between slotted items and default slots.\n*/\n\"\"}\n  <slot name=\"spacer\">&nbsp;</slot><slot name=\"text\">LIVE</slot>\n`;\nvar updateAriaAttributes = (el) => {\n  const isPausedOrNotLive = el.mediaPaused || !el.mediaTimeIsLive;\n  const label = isPausedOrNotLive ? verbs.SEEK_LIVE() : verbs.PLAYING_LIVE();\n  el.setAttribute(\"aria-label\", label);\n  isPausedOrNotLive ? el.removeAttribute(\"aria-disabled\") : el.setAttribute(\"aria-disabled\", \"true\");\n};\nvar MediaLiveButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [...super.observedAttributes, MEDIA_PAUSED, MEDIA_TIME_IS_LIVE];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate7 }, options));\n  }\n  connectedCallback() {\n    updateAriaAttributes(this);\n    super.connectedCallback();\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    updateAriaAttributes(this);\n  }\n  /**\n   * @type {boolean} Is the media paused\n   */\n  get mediaPaused() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED);\n  }\n  set mediaPaused(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED, value);\n  }\n  /**\n   * @type {boolean} Is the media playback currently live\n   */\n  get mediaTimeIsLive() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_TIME_IS_LIVE);\n  }\n  set mediaTimeIsLive(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_TIME_IS_LIVE, value);\n  }\n  handleClick() {\n    if (!this.mediaPaused && this.mediaTimeIsLive)\n      return;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(MEDIA_SEEK_TO_LIVE_REQUEST, {\n        composed: true,\n        bubbles: true\n      })\n    );\n    if (this.hasAttribute(MEDIA_PAUSED)) {\n      this.dispatchEvent(\n        new GlobalThis.CustomEvent(MEDIA_PLAY_REQUEST, {\n          composed: true,\n          bubbles: true\n        })\n      );\n    }\n  }\n};\nif (!GlobalThis.customElements.get(\"media-live-button\")) {\n  GlobalThis.customElements.define(\"media-live-button\", MediaLiveButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-loading-indicator.js\nvar __accessCheck15 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet15 = (obj, member, getter) => {\n  __accessCheck15(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd15 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet15 = (obj, member, value, setter) => {\n  __accessCheck15(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _mediaController7;\nvar _delay;\nvar Attributes6 = {\n  LOADING_DELAY: \"loadingdelay\"\n};\nvar DEFAULT_LOADING_DELAY = 500;\nvar template11 = Document2.createElement(\"template\");\nvar loadingIndicatorIcon = `\n<svg aria-hidden=\"true\" viewBox=\"0 0 100 100\">\n  <path d=\"M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50\">\n    <animateTransform\n       attributeName=\"transform\"\n       attributeType=\"XML\"\n       type=\"rotate\"\n       dur=\"1s\"\n       from=\"0 50 50\"\n       to=\"360 50 50\"\n       repeatCount=\"indefinite\" />\n  </path>\n</svg>\n`;\ntemplate11.innerHTML = /*html*/\n`\n<style>\n:host {\n  display: var(--media-control-display, var(--media-loading-indicator-display, inline-block));\n  vertical-align: middle;\n  box-sizing: border-box;\n  --_loading-indicator-delay: var(--media-loading-indicator-transition-delay, ${DEFAULT_LOADING_DELAY}ms);\n}\n\n#status {\n  color: rgba(0,0,0,0);\n  width: 0px;\n  height: 0px;\n}\n\n:host slot[name=icon] > *,\n:host ::slotted([slot=icon]) {\n  opacity: var(--media-loading-indicator-opacity, 0);\n  transition: opacity 0.15s;\n}\n\n:host([${MediaUIAttributes.MEDIA_LOADING}]:not([${MediaUIAttributes.MEDIA_PAUSED}])) slot[name=icon] > *,\n:host([${MediaUIAttributes.MEDIA_LOADING}]:not([${MediaUIAttributes.MEDIA_PAUSED}])) ::slotted([slot=icon]) {\n  opacity: var(--media-loading-indicator-opacity, 1);\n  transition: opacity 0.15s var(--_loading-indicator-delay);\n}\n\n:host #status {\n  visibility: var(--media-loading-indicator-opacity, hidden);\n  transition: visibility 0.15s;\n}\n\n:host([${MediaUIAttributes.MEDIA_LOADING}]:not([${MediaUIAttributes.MEDIA_PAUSED}])) #status {\n  visibility: var(--media-loading-indicator-opacity, visible);\n  transition: visibility 0.15s var(--_loading-indicator-delay);\n}\n\nsvg, img, ::slotted(svg), ::slotted(img) {\n  width: var(--media-loading-indicator-icon-width);\n  height: var(--media-loading-indicator-icon-height, 100px);\n  fill: var(--media-icon-color, var(--media-primary-color, rgb(238 238 238)));\n  vertical-align: middle;\n}\n</style>\n\n<slot name=\"icon\">${loadingIndicatorIcon}</slot>\n<div id=\"status\" role=\"status\" aria-live=\"polite\">${nouns.MEDIA_LOADING()}</div>\n`;\nvar MediaLoadingIndicator = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd15(this, _mediaController7, void 0);\n    __privateAdd15(this, _delay, DEFAULT_LOADING_DELAY);\n    if (!this.shadowRoot) {\n      const shadow = this.attachShadow({ mode: \"open\" });\n      const indicatorHTML = template11.content.cloneNode(true);\n      shadow.appendChild(indicatorHTML);\n    }\n  }\n  static get observedAttributes() {\n    return [\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER,\n      MediaUIAttributes.MEDIA_PAUSED,\n      MediaUIAttributes.MEDIA_LOADING,\n      Attributes6.LOADING_DELAY\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === Attributes6.LOADING_DELAY && oldValue !== newValue) {\n      this.loadingDelay = Number(newValue);\n    } else if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet15(this, _mediaController7)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet15(this, _mediaController7, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet15(this, _mediaController7, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet15(this, _mediaController7)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet15(this, _mediaController7, (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId));\n      (_c = (_b = __privateGet15(this, _mediaController7)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    (_b = (_a3 = __privateGet15(this, _mediaController7)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet15(this, _mediaController7, null);\n  }\n  /**\n   * @type {number} Delay in ms\n   */\n  get loadingDelay() {\n    return __privateGet15(this, _delay);\n  }\n  set loadingDelay(delay2) {\n    __privateSet15(this, _delay, delay2);\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n    style.setProperty(\n      \"--_loading-indicator-delay\",\n      `var(--media-loading-indicator-transition-delay, ${delay2}ms)`\n    );\n  }\n  /**\n   * @type {boolean} Is the media paused\n   */\n  get mediaPaused() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED);\n  }\n  set mediaPaused(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED, value);\n  }\n  /**\n   * @type {boolean} Is the media loading\n   */\n  get mediaLoading() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_LOADING);\n  }\n  set mediaLoading(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_LOADING, value);\n  }\n};\n_mediaController7 = /* @__PURE__ */ new WeakMap();\n_delay = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-loading-indicator\")) {\n  GlobalThis.customElements.define(\n    \"media-loading-indicator\",\n    MediaLoadingIndicator\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-mute-button.js\nvar { MEDIA_VOLUME_LEVEL } = MediaUIAttributes;\nvar offIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M16.5 12A4.5 4.5 0 0 0 14 8v2.18l2.45 2.45a4.22 4.22 0 0 0 .05-.63Zm2.5 0a6.84 6.84 0 0 1-.54 2.64L20 16.15A8.8 8.8 0 0 0 21 12a9 9 0 0 0-7-8.77v2.06A7 7 0 0 1 19 12ZM4.27 3 3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25A6.92 6.92 0 0 1 14 18.7v2.06A9 9 0 0 0 17.69 19l2 2.05L21 19.73l-9-9L4.27 3ZM12 4 9.91 6.09 12 8.18V4Z\"/>\n</svg>`;\nvar lowIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M3 9v6h4l5 5V4L7 9H3Zm13.5 3A4.5 4.5 0 0 0 14 8v8a4.47 4.47 0 0 0 2.5-4Z\"/>\n</svg>`;\nvar highIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M3 9v6h4l5 5V4L7 9H3Zm13.5 3A4.5 4.5 0 0 0 14 8v8a4.47 4.47 0 0 0 2.5-4ZM14 3.23v2.06a7 7 0 0 1 0 13.42v2.06a9 9 0 0 0 0-17.54Z\"/>\n</svg>`;\nvar slotTemplate8 = Document2.createElement(\"template\");\nslotTemplate8.innerHTML = /*html*/\n`\n  <style>\n  ${/* Default to High slot/icon. */\n\"\"}\n  :host(:not([${MEDIA_VOLUME_LEVEL}])) slot:not([name=high]):not([name=icon]), \n  :host([${MEDIA_VOLUME_LEVEL}=high]) slot:not([name=high]):not([name=icon]) {\n    display: none !important;\n  }\n\n  :host([${MEDIA_VOLUME_LEVEL}=off]) slot:not([name=off]):not([name=icon]) {\n    display: none !important;\n  }\n\n  :host([${MEDIA_VOLUME_LEVEL}=low]) slot:not([name=low]):not([name=icon]) {\n    display: none !important;\n  }\n\n  :host([${MEDIA_VOLUME_LEVEL}=medium]) slot:not([name=medium]):not([name=icon]) {\n    display: none !important;\n  }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"off\">${offIcon}</slot>\n    <slot name=\"low\">${lowIcon}</slot>\n    <slot name=\"medium\">${lowIcon}</slot>\n    <slot name=\"high\">${highIcon}</slot>\n  </slot>\n`;\nvar updateAriaLabel4 = (el) => {\n  const muted = el.mediaVolumeLevel === \"off\";\n  const label = muted ? verbs.UNMUTE() : verbs.MUTE();\n  el.setAttribute(\"aria-label\", label);\n};\nvar MediaMuteButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [...super.observedAttributes, MediaUIAttributes.MEDIA_VOLUME_LEVEL];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate8 }, options));\n  }\n  connectedCallback() {\n    updateAriaLabel4(this);\n    super.connectedCallback();\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === MediaUIAttributes.MEDIA_VOLUME_LEVEL) {\n      updateAriaLabel4(this);\n    }\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n  }\n  /**\n   * @type {string | undefined}\n   */\n  get mediaVolumeLevel() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_VOLUME_LEVEL);\n  }\n  set mediaVolumeLevel(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_VOLUME_LEVEL, value);\n  }\n  handleClick() {\n    const eventName = this.mediaVolumeLevel === \"off\" ? MediaUIEvents.MEDIA_UNMUTE_REQUEST : MediaUIEvents.MEDIA_MUTE_REQUEST;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(eventName, { composed: true, bubbles: true })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-mute-button\")) {\n  GlobalThis.customElements.define(\"media-mute-button\", MediaMuteButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-pip-button.js\nvar pipIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 28 24\">\n  <path d=\"M24 3H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1Zm-1 16H5V5h18v14Zm-3-8h-7v5h7v-5Z\"/>\n</svg>`;\nvar slotTemplate9 = Document2.createElement(\"template\");\nslotTemplate9.innerHTML = /*html*/\n`\n  <style>\n  :host([${MediaUIAttributes.MEDIA_IS_PIP}]) slot:not([name=exit]):not([name=icon]) {\n    display: none !important;\n  }\n\n  ${/* Double negative, but safer if display doesn't equal 'block' */\n\"\"}\n  :host(:not([${MediaUIAttributes.MEDIA_IS_PIP}])) slot:not([name=enter]):not([name=icon]) {\n    display: none !important;\n  }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"enter\">${pipIcon}</slot>\n    <slot name=\"exit\">${pipIcon}</slot>\n  </slot>\n`;\nvar updateAriaLabel5 = (el) => {\n  const label = el.mediaIsPip ? verbs.EXIT_PIP() : verbs.ENTER_PIP();\n  el.setAttribute(\"aria-label\", label);\n};\nvar MediaPipButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_IS_PIP,\n      MediaUIAttributes.MEDIA_PIP_UNAVAILABLE\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate9 }, options));\n  }\n  connectedCallback() {\n    updateAriaLabel5(this);\n    super.connectedCallback();\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === MediaUIAttributes.MEDIA_IS_PIP) {\n      updateAriaLabel5(this);\n    }\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n  }\n  /**\n   * @type {string | undefined} Pip unavailability state\n   */\n  get mediaPipUnavailable() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_PIP_UNAVAILABLE);\n  }\n  set mediaPipUnavailable(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_PIP_UNAVAILABLE, value);\n  }\n  /**\n   * @type {boolean} Is the media currently playing picture-in-picture\n   */\n  get mediaIsPip() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_IS_PIP);\n  }\n  set mediaIsPip(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_IS_PIP, value);\n  }\n  handleClick() {\n    const eventName = this.mediaIsPip ? MediaUIEvents.MEDIA_EXIT_PIP_REQUEST : MediaUIEvents.MEDIA_ENTER_PIP_REQUEST;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(eventName, { composed: true, bubbles: true })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-pip-button\")) {\n  GlobalThis.customElements.define(\"media-pip-button\", MediaPipButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-playback-rate-button.js\nvar __accessCheck16 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet16 = (obj, member, getter) => {\n  __accessCheck16(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd16 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar _rates;\nvar Attributes7 = {\n  RATES: \"rates\"\n};\nvar DEFAULT_RATES = [1, 1.2, 1.5, 1.7, 2];\nvar DEFAULT_RATE = 1;\nvar slotTemplate10 = Document2.createElement(\"template\");\nslotTemplate10.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      min-width: 5ch;\n      padding: var(--media-button-padding, var(--media-control-padding, 10px 5px));\n    }\n  </style>\n  <slot name=\"icon\"></slot>\n`;\nvar MediaPlaybackRateButton = class extends MediaChromeButton {\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate10 }, options));\n    __privateAdd16(this, _rates, new AttributeTokenList(this, Attributes7.RATES, {\n      defaultValue: DEFAULT_RATES\n    }));\n    this.container = this.shadowRoot.querySelector('slot[name=\"icon\"]');\n    this.container.innerHTML = `${DEFAULT_RATE}x`;\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      Attributes7.RATES\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === Attributes7.RATES) {\n      __privateGet16(this, _rates).value = newValue;\n    }\n    if (attrName === MediaUIAttributes.MEDIA_PLAYBACK_RATE) {\n      const newPlaybackRate = newValue ? +newValue : Number.NaN;\n      const playbackRate = !Number.isNaN(newPlaybackRate) ? newPlaybackRate : DEFAULT_RATE;\n      this.container.innerHTML = `${playbackRate}x`;\n      this.setAttribute(\"aria-label\", nouns.PLAYBACK_RATE({ playbackRate }));\n    }\n  }\n  /**\n   * @type { AttributeTokenList | Array<number> | undefined} Will return a DOMTokenList.\n   * Setting a value will accept an array of numbers.\n   */\n  get rates() {\n    return __privateGet16(this, _rates);\n  }\n  set rates(value) {\n    if (!value) {\n      __privateGet16(this, _rates).value = \"\";\n    } else if (Array.isArray(value)) {\n      __privateGet16(this, _rates).value = value.join(\" \");\n    }\n  }\n  /**\n   * @type {number} The current playback rate\n   */\n  get mediaPlaybackRate() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      DEFAULT_RATE\n    );\n  }\n  set mediaPlaybackRate(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, value);\n  }\n  handleClick() {\n    var _a3, _b;\n    const availableRates = Array.from(this.rates.values(), (str) => +str).sort(\n      (a2, b4) => a2 - b4\n    );\n    const detail = (_b = (_a3 = availableRates.find((r10) => r10 > this.mediaPlaybackRate)) != null ? _a3 : availableRates[0]) != null ? _b : DEFAULT_RATE;\n    const evt = new GlobalThis.CustomEvent(\n      MediaUIEvents.MEDIA_PLAYBACK_RATE_REQUEST,\n      { composed: true, bubbles: true, detail }\n    );\n    this.dispatchEvent(evt);\n  }\n};\n_rates = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-playback-rate-button\")) {\n  GlobalThis.customElements.define(\n    \"media-playback-rate-button\",\n    MediaPlaybackRateButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-playback-rate-menu.js\nvar __accessCheck17 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet17 = (obj, member, getter) => {\n  __accessCheck17(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd17 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateMethod9 = (obj, member, method) => {\n  __accessCheck17(obj, member, \"access private method\");\n  return method;\n};\nvar _rates2;\nvar _render3;\nvar render_fn3;\nvar _onChange3;\nvar onChange_fn3;\nvar Attributes8 = {\n  RATES: \"rates\"\n};\nvar MediaPlaybackRateMenu = class extends MediaChromeMenu {\n  constructor() {\n    super();\n    __privateAdd17(this, _render3);\n    __privateAdd17(this, _onChange3);\n    __privateAdd17(this, _rates2, new AttributeTokenList(this, Attributes8.RATES, {\n      defaultValue: DEFAULT_RATES\n    }));\n    __privateMethod9(this, _render3, render_fn3).call(this);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      Attributes8.RATES\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_PLAYBACK_RATE && oldValue != newValue) {\n      this.value = newValue;\n    } else if (attrName === Attributes8.RATES && oldValue != newValue) {\n      __privateGet17(this, _rates2).value = newValue;\n      __privateMethod9(this, _render3, render_fn3).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod9(this, _onChange3, onChange_fn3));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod9(this, _onChange3, onChange_fn3));\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   * @return {HTMLElement}\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\n      \"media-playback-rate-menu-button\"\n    );\n  }\n  /**\n   * @type { AttributeTokenList | Array<number> | undefined} Will return a DOMTokenList.\n   * Setting a value will accept an array of numbers.\n   */\n  get rates() {\n    return __privateGet17(this, _rates2);\n  }\n  set rates(value) {\n    if (!value) {\n      __privateGet17(this, _rates2).value = \"\";\n    } else if (Array.isArray(value)) {\n      __privateGet17(this, _rates2).value = value.join(\" \");\n    }\n    __privateMethod9(this, _render3, render_fn3).call(this);\n  }\n  /**\n   * @type {number} The current playback rate\n   */\n  get mediaPlaybackRate() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      DEFAULT_RATE\n    );\n  }\n  set mediaPlaybackRate(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, value);\n  }\n};\n_rates2 = /* @__PURE__ */ new WeakMap();\n_render3 = /* @__PURE__ */ new WeakSet();\nrender_fn3 = function() {\n  this.defaultSlot.textContent = \"\";\n  for (const rate of this.rates) {\n    const item = createMenuItem({\n      type: \"radio\",\n      text: this.formatMenuItemText(`${rate}x`, rate),\n      value: rate,\n      checked: this.mediaPlaybackRate == rate\n    });\n    item.prepend(createIndicator(this, \"checked-indicator\"));\n    this.defaultSlot.append(item);\n  }\n};\n_onChange3 = /* @__PURE__ */ new WeakSet();\nonChange_fn3 = function() {\n  if (!this.value)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_PLAYBACK_RATE_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!GlobalThis.customElements.get(\"media-playback-rate-menu\")) {\n  GlobalThis.customElements.define(\n    \"media-playback-rate-menu\",\n    MediaPlaybackRateMenu\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-playback-rate-menu-button.js\nvar __accessCheck18 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet18 = (obj, member, getter) => {\n  __accessCheck18(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd18 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar _rates3;\nvar Attributes9 = {\n  RATES: \"rates\"\n};\nvar DEFAULT_RATES2 = [1, 1.2, 1.5, 1.7, 2];\nvar DEFAULT_RATE2 = 1;\nvar slotTemplate11 = Document2.createElement(\"template\");\nslotTemplate11.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      min-width: 5ch;\n      padding: var(--media-button-padding, var(--media-control-padding, 10px 5px));\n    }\n  </style>\n  <slot name=\"icon\"></slot>\n`;\nvar MediaPlaybackRateMenuButton = class extends MediaChromeMenuButton {\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate11 }, options));\n    __privateAdd18(this, _rates3, new AttributeTokenList(this, Attributes9.RATES, {\n      defaultValue: DEFAULT_RATES2\n    }));\n    this.container = this.shadowRoot.querySelector('slot[name=\"icon\"]');\n    this.container.innerHTML = `${DEFAULT_RATE2}x`;\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      Attributes9.RATES\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === Attributes9.RATES) {\n      __privateGet18(this, _rates3).value = newValue;\n    }\n    if (attrName === MediaUIAttributes.MEDIA_PLAYBACK_RATE) {\n      const newPlaybackRate = newValue ? +newValue : Number.NaN;\n      const playbackRate = !Number.isNaN(newPlaybackRate) ? newPlaybackRate : DEFAULT_RATE2;\n      this.container.innerHTML = `${playbackRate}x`;\n      this.setAttribute(\"aria-label\", nouns.PLAYBACK_RATE({ playbackRate }));\n    }\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return getMediaController(this).querySelector(\"media-playback-rate-menu\");\n  }\n  /**\n   * @type { AttributeTokenList | Array<number> | undefined} Will return a DOMTokenList.\n   * Setting a value will accept an array of numbers.\n   */\n  get rates() {\n    return __privateGet18(this, _rates3);\n  }\n  set rates(value) {\n    if (!value) {\n      __privateGet18(this, _rates3).value = \"\";\n    } else if (Array.isArray(value)) {\n      __privateGet18(this, _rates3).value = value.join(\" \");\n    }\n  }\n  /**\n   * @type {number} The current playback rate\n   */\n  get mediaPlaybackRate() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      DEFAULT_RATE2\n    );\n  }\n  set mediaPlaybackRate(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, value);\n  }\n};\n_rates3 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-playback-rate-menu-button\")) {\n  GlobalThis.customElements.define(\n    \"media-playback-rate-menu-button\",\n    MediaPlaybackRateMenuButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-play-button.js\nvar playIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"m6 21 15-9L6 3v18Z\"/>\n</svg>`;\nvar pauseIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M6 20h4V4H6v16Zm8-16v16h4V4h-4Z\"/>\n</svg>`;\nvar slotTemplate12 = Document2.createElement(\"template\");\nslotTemplate12.innerHTML = /*html*/\n`\n  <style>\n  :host([${MediaUIAttributes.MEDIA_PAUSED}]) slot[name=pause] {\n    display: none !important;\n  }\n\n  :host(:not([${MediaUIAttributes.MEDIA_PAUSED}])) slot[name=play] {\n    display: none !important;\n  }\n  </style>\n\n  <slot name=\"icon\">\n    <slot name=\"play\">${playIcon}</slot>\n    <slot name=\"pause\">${pauseIcon}</slot>\n  </slot>\n`;\nvar updateAriaLabel6 = (el) => {\n  const label = el.mediaPaused ? verbs.PLAY() : verbs.PAUSE();\n  el.setAttribute(\"aria-label\", label);\n};\nvar MediaPlayButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PAUSED,\n      MediaUIAttributes.MEDIA_ENDED\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate12 }, options));\n  }\n  connectedCallback() {\n    updateAriaLabel6(this);\n    super.connectedCallback();\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === MediaUIAttributes.MEDIA_PAUSED) {\n      updateAriaLabel6(this);\n    }\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n  }\n  /**\n   * @type {boolean} Is the media paused\n   */\n  get mediaPaused() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED);\n  }\n  set mediaPaused(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED, value);\n  }\n  handleClick() {\n    const eventName = this.mediaPaused ? MediaUIEvents.MEDIA_PLAY_REQUEST : MediaUIEvents.MEDIA_PAUSE_REQUEST;\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(eventName, { composed: true, bubbles: true })\n    );\n  }\n};\nif (!GlobalThis.customElements.get(\"media-play-button\")) {\n  GlobalThis.customElements.define(\"media-play-button\", MediaPlayButton);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-poster-image.js\nvar Attributes10 = {\n  PLACEHOLDER_SRC: \"placeholdersrc\",\n  SRC: \"src\"\n};\nvar template12 = Document2.createElement(\"template\");\ntemplate12.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      pointer-events: none;\n      display: var(--media-poster-image-display, inline-block);\n      box-sizing: border-box;\n    }\n\n    img {\n      max-width: 100%;\n      max-height: 100%;\n      min-width: 100%;\n      min-height: 100%;\n      background-repeat: no-repeat;\n      background-position: var(--media-poster-image-background-position, var(--media-object-position, center));\n      background-size: var(--media-poster-image-background-size, var(--media-object-fit, contain));\n      object-fit: var(--media-object-fit, contain);\n      object-position: var(--media-object-position, center);\n    }\n  </style>\n\n  <img part=\"poster img\" aria-hidden=\"true\" id=\"image\"/>\n`;\nvar unsetBackgroundImage = (el) => {\n  el.style.removeProperty(\"background-image\");\n};\nvar setBackgroundImage = (el, image) => {\n  el.style[\"background-image\"] = `url('${image}')`;\n};\nvar MediaPosterImage = class extends GlobalThis.HTMLElement {\n  static get observedAttributes() {\n    return [Attributes10.PLACEHOLDER_SRC, Attributes10.SRC];\n  }\n  constructor() {\n    super();\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template12.content.cloneNode(true));\n    }\n    this.image = this.shadowRoot.querySelector(\"#image\");\n  }\n  attributeChangedCallback(attrName, _oldValue, newValue) {\n    if (attrName === Attributes10.SRC) {\n      if (newValue == null) {\n        this.image.removeAttribute(Attributes10.SRC);\n      } else {\n        this.image.setAttribute(Attributes10.SRC, newValue);\n      }\n    }\n    if (attrName === Attributes10.PLACEHOLDER_SRC) {\n      if (newValue == null) {\n        unsetBackgroundImage(this.image);\n      } else {\n        setBackgroundImage(this.image, newValue);\n      }\n    }\n  }\n  /**\n   * @type {string | undefined}\n   */\n  get placeholderSrc() {\n    return getStringAttr(this, Attributes10.PLACEHOLDER_SRC);\n  }\n  set placeholderSrc(value) {\n    setStringAttr(this, Attributes10.SRC, value);\n  }\n  /**\n   * @type {string | undefined}\n   */\n  get src() {\n    return getStringAttr(this, Attributes10.SRC);\n  }\n  set src(value) {\n    setStringAttr(this, Attributes10.SRC, value);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-poster-image\")) {\n  GlobalThis.customElements.define(\"media-poster-image\", MediaPosterImage);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-preview-chapter-display.js\nvar __accessCheck19 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet19 = (obj, member, getter) => {\n  __accessCheck19(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd19 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet16 = (obj, member, value, setter) => {\n  __accessCheck19(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _slot2;\nvar MediaPreviewChapterDisplay = class extends media_text_display_default {\n  constructor() {\n    super();\n    __privateAdd19(this, _slot2, void 0);\n    __privateSet16(this, _slot2, this.shadowRoot.querySelector(\"slot\"));\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PREVIEW_CHAPTER\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_PREVIEW_CHAPTER) {\n      if (newValue !== oldValue && newValue != null) {\n        __privateGet19(this, _slot2).textContent = newValue;\n        if (newValue !== \"\") {\n          this.setAttribute(\"aria-valuetext\", `chapter: ${newValue}`);\n        } else {\n          this.removeAttribute(\"aria-valuetext\");\n        }\n      }\n    }\n  }\n  /**\n   * @type {string | undefined} Timeline preview chapter\n   */\n  get mediaPreviewChapter() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_PREVIEW_CHAPTER);\n  }\n  set mediaPreviewChapter(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_PREVIEW_CHAPTER, value);\n  }\n};\n_slot2 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-preview-chapter-display\")) {\n  GlobalThis.customElements.define(\n    \"media-preview-chapter-display\",\n    MediaPreviewChapterDisplay\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-preview-thumbnail.js\nvar __accessCheck20 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet20 = (obj, member, getter) => {\n  __accessCheck20(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd20 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet17 = (obj, member, value, setter) => {\n  __accessCheck20(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _mediaController8;\nvar template13 = Document2.createElement(\"template\");\ntemplate13.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      box-sizing: border-box;\n      display: var(--media-control-display, var(--media-preview-thumbnail-display, inline-block));\n      overflow: hidden;\n    }\n\n    img {\n      display: none;\n      position: relative;\n    }\n  </style>\n  <img crossorigin loading=\"eager\" decoding=\"async\">\n`;\nvar MediaPreviewThumbnail = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd20(this, _mediaController8, void 0);\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template13.content.cloneNode(true));\n    }\n  }\n  static get observedAttributes() {\n    return [\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER,\n      MediaUIAttributes.MEDIA_PREVIEW_IMAGE,\n      MediaUIAttributes.MEDIA_PREVIEW_COORDS\n    ];\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet17(\n        this,\n        _mediaController8,\n        // @ts-ignore\n        (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId)\n      );\n      (_c = (_b = __privateGet20(this, _mediaController8)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    (_b = (_a3 = __privateGet20(this, _mediaController8)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet17(this, _mediaController8, null);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if ([\n      MediaUIAttributes.MEDIA_PREVIEW_IMAGE,\n      MediaUIAttributes.MEDIA_PREVIEW_COORDS\n    ].includes(attrName)) {\n      this.update();\n    }\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet20(this, _mediaController8)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet17(this, _mediaController8, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet17(this, _mediaController8, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet20(this, _mediaController8)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    }\n  }\n  /**\n   * @type {string | undefined} The url of the preview image\n   */\n  get mediaPreviewImage() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_PREVIEW_IMAGE);\n  }\n  set mediaPreviewImage(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_PREVIEW_IMAGE, value);\n  }\n  /**\n   * @type {Array<number> | undefined} Fixed length array [x, y, width, height] or undefined\n   */\n  get mediaPreviewCoords() {\n    const attrVal = this.getAttribute(MediaUIAttributes.MEDIA_PREVIEW_COORDS);\n    if (!attrVal)\n      return void 0;\n    return attrVal.split(/\\s+/).map((coord) => +coord);\n  }\n  set mediaPreviewCoords(value) {\n    if (!value) {\n      this.removeAttribute(MediaUIAttributes.MEDIA_PREVIEW_COORDS);\n      return;\n    }\n    this.setAttribute(MediaUIAttributes.MEDIA_PREVIEW_COORDS, value.join(\" \"));\n  }\n  update() {\n    const coords = this.mediaPreviewCoords;\n    const previewImage = this.mediaPreviewImage;\n    if (!(coords && previewImage))\n      return;\n    const [x4, y5, w2, h3] = coords;\n    const src = previewImage.split(\"#\")[0];\n    const computedStyle = getComputedStyle(this);\n    const { maxWidth, maxHeight, minWidth, minHeight } = computedStyle;\n    const maxRatio = Math.min(parseInt(maxWidth) / w2, parseInt(maxHeight) / h3);\n    const minRatio = Math.max(parseInt(minWidth) / w2, parseInt(minHeight) / h3);\n    const isScalingDown = maxRatio < 1;\n    const scale = isScalingDown ? maxRatio : minRatio > 1 ? minRatio : 1;\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n    const imgStyle = getOrInsertCSSRule(this.shadowRoot, \"img\").style;\n    const img = this.shadowRoot.querySelector(\"img\");\n    const extremum = isScalingDown ? \"min\" : \"max\";\n    style.setProperty(`${extremum}-width`, \"initial\", \"important\");\n    style.setProperty(`${extremum}-height`, \"initial\", \"important\");\n    style.width = `${w2 * scale}px`;\n    style.height = `${h3 * scale}px`;\n    const resize = () => {\n      imgStyle.width = `${this.imgWidth * scale}px`;\n      imgStyle.height = `${this.imgHeight * scale}px`;\n      imgStyle.display = \"block\";\n    };\n    if (img.src !== src) {\n      img.onload = () => {\n        this.imgWidth = img.naturalWidth;\n        this.imgHeight = img.naturalHeight;\n        resize();\n      };\n      img.src = src;\n      resize();\n    }\n    resize();\n    imgStyle.transform = `translate(-${x4 * scale}px, -${y5 * scale}px)`;\n  }\n};\n_mediaController8 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-preview-thumbnail\")) {\n  GlobalThis.customElements.define(\n    \"media-preview-thumbnail\",\n    MediaPreviewThumbnail\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-preview-time-display.js\nvar __accessCheck21 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet21 = (obj, member, getter) => {\n  __accessCheck21(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd21 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet18 = (obj, member, value, setter) => {\n  __accessCheck21(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _slot3;\nvar MediaPreviewTimeDisplay = class extends MediaTextDisplay {\n  constructor() {\n    super();\n    __privateAdd21(this, _slot3, void 0);\n    __privateSet18(this, _slot3, this.shadowRoot.querySelector(\"slot\"));\n    __privateGet21(this, _slot3).textContent = formatTime(0);\n  }\n  static get observedAttributes() {\n    return [...super.observedAttributes, MediaUIAttributes.MEDIA_PREVIEW_TIME];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_PREVIEW_TIME && newValue != null) {\n      __privateGet21(this, _slot3).textContent = formatTime(newValue);\n    }\n  }\n  /**\n   * @type {number | undefined} Timeline preview time\n   */\n  get mediaPreviewTime() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_PREVIEW_TIME);\n  }\n  set mediaPreviewTime(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PREVIEW_TIME, value);\n  }\n};\n_slot3 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-preview-time-display\")) {\n  GlobalThis.customElements.define(\n    \"media-preview-time-display\",\n    MediaPreviewTimeDisplay\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-rendition-menu.js\nvar __accessCheck22 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet22 = (obj, member, getter) => {\n  __accessCheck22(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd22 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet19 = (obj, member, value, setter) => {\n  __accessCheck22(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod10 = (obj, member, method) => {\n  __accessCheck22(obj, member, \"access private method\");\n  return method;\n};\nvar _renditionList;\nvar _prevState3;\nvar _render4;\nvar render_fn4;\nvar _onChange4;\nvar onChange_fn4;\nvar MediaRenditionMenu = class extends MediaChromeMenu {\n  constructor() {\n    super(...arguments);\n    __privateAdd22(this, _render4);\n    __privateAdd22(this, _onChange4);\n    __privateAdd22(this, _renditionList, []);\n    __privateAdd22(this, _prevState3, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_RENDITION_LIST,\n      MediaUIAttributes.MEDIA_RENDITION_SELECTED,\n      MediaUIAttributes.MEDIA_RENDITION_UNAVAILABLE\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_RENDITION_SELECTED && oldValue !== newValue) {\n      this.value = newValue != null ? newValue : \"auto\";\n    } else if (attrName === MediaUIAttributes.MEDIA_RENDITION_LIST && oldValue !== newValue) {\n      __privateSet19(this, _renditionList, parseRenditionList(newValue));\n      __privateMethod10(this, _render4, render_fn4).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod10(this, _onChange4, onChange_fn4));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod10(this, _onChange4, onChange_fn4));\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   * @return {HTMLElement}\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\n      \"media-rendition-menu-button\"\n    );\n  }\n  get mediaRenditionList() {\n    return __privateGet22(this, _renditionList);\n  }\n  set mediaRenditionList(list) {\n    __privateSet19(this, _renditionList, list);\n    __privateMethod10(this, _render4, render_fn4).call(this);\n  }\n  /**\n   * Get selected rendition id.\n   * @return {string}\n   */\n  get mediaRenditionSelected() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED);\n  }\n  set mediaRenditionSelected(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED, id);\n  }\n};\n_renditionList = /* @__PURE__ */ new WeakMap();\n_prevState3 = /* @__PURE__ */ new WeakMap();\n_render4 = /* @__PURE__ */ new WeakSet();\nrender_fn4 = function() {\n  if (__privateGet22(this, _prevState3) === JSON.stringify(this.mediaRenditionList))\n    return;\n  __privateSet19(this, _prevState3, JSON.stringify(this.mediaRenditionList));\n  const renditionList = this.mediaRenditionList.sort(\n    (a2, b4) => b4.height - a2.height\n  );\n  this.defaultSlot.textContent = \"\";\n  let isAuto = !this.mediaRenditionSelected;\n  for (const rendition of renditionList) {\n    const text = this.formatMenuItemText(\n      `${Math.min(rendition.width, rendition.height)}p`,\n      rendition\n    );\n    const item2 = createMenuItem({\n      type: \"radio\",\n      text,\n      value: `${rendition.id}`,\n      checked: rendition.selected && !isAuto\n    });\n    item2.prepend(createIndicator(this, \"checked-indicator\"));\n    this.defaultSlot.append(item2);\n  }\n  const item = createMenuItem({\n    type: \"radio\",\n    text: this.formatMenuItemText(\"Auto\"),\n    value: \"auto\",\n    checked: isAuto\n  });\n  item.prepend(createIndicator(this, \"checked-indicator\"));\n  this.defaultSlot.append(item);\n};\n_onChange4 = /* @__PURE__ */ new WeakSet();\nonChange_fn4 = function() {\n  if (this.value == null)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_RENDITION_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!GlobalThis.customElements.get(\"media-rendition-menu\")) {\n  GlobalThis.customElements.define(\"media-rendition-menu\", MediaRenditionMenu);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-rendition-menu-button.js\nvar renditionIcon = (\n  /*html*/\n  `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M13.5 2.5h2v6h-2v-2h-11v-2h11v-2Zm4 2h4v2h-4v-2Zm-12 4h2v6h-2v-2h-3v-2h3v-2Zm4 2h12v2h-12v-2Zm1 4h2v6h-2v-2h-8v-2h8v-2Zm4 2h7v2h-7v-2Z\" />\n</svg>`\n);\nvar slotTemplate13 = Document2.createElement(\"template\");\nslotTemplate13.innerHTML = /*html*/\n`\n  <slot name=\"icon\">${renditionIcon}</slot>\n`;\nvar MediaRenditionMenuButton = class extends MediaChromeMenuButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_RENDITION_SELECTED,\n      MediaUIAttributes.MEDIA_RENDITION_UNAVAILABLE\n    ];\n  }\n  constructor() {\n    super({ slotTemplate: slotTemplate13 });\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.setAttribute(\"aria-label\", nouns.QUALITY());\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return getMediaController(this).querySelector(\"media-rendition-menu\");\n  }\n  /**\n   * Get selected rendition id.\n   * @return {string}\n   */\n  get mediaRenditionSelected() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED);\n  }\n  set mediaRenditionSelected(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED, id);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-rendition-menu-button\")) {\n  GlobalThis.customElements.define(\n    \"media-rendition-menu-button\",\n    MediaRenditionMenuButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-seek-backward-button.js\nvar Attributes11 = {\n  SEEK_OFFSET: \"seekoffset\"\n};\nvar DEFAULT_SEEK_OFFSET2 = 30;\nvar backwardIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 20 24\"><defs><style>.text{font-size:8px;font-family:Arial-BoldMT, Arial;font-weight:700;}</style></defs><text class=\"text value\" transform=\"translate(2.18 19.87)\">${DEFAULT_SEEK_OFFSET2}</text><path d=\"M10 6V3L4.37 7 10 10.94V8a5.54 5.54 0 0 1 1.9 10.48v2.12A7.5 7.5 0 0 0 10 6Z\"/></svg>`;\nvar slotTemplate14 = Document2.createElement(\"template\");\nslotTemplate14.innerHTML = `\n  <slot name=\"icon\">${backwardIcon}</slot>\n`;\nvar DEFAULT_TIME = 0;\nvar MediaSeekBackwardButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_CURRENT_TIME,\n      Attributes11.SEEK_OFFSET\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate14 }, options));\n  }\n  connectedCallback() {\n    this.seekOffset = getNumericAttr(\n      this,\n      Attributes11.SEEK_OFFSET,\n      DEFAULT_SEEK_OFFSET2\n    );\n    super.connectedCallback();\n  }\n  attributeChangedCallback(attrName, _oldValue, newValue) {\n    if (attrName === Attributes11.SEEK_OFFSET) {\n      this.seekOffset = getNumericAttr(\n        this,\n        Attributes11.SEEK_OFFSET,\n        DEFAULT_SEEK_OFFSET2\n      );\n    }\n    super.attributeChangedCallback(attrName, _oldValue, newValue);\n  }\n  // Own props\n  /**\n   * @type {number | undefined} Seek amount in seconds\n   */\n  get seekOffset() {\n    return getNumericAttr(this, Attributes11.SEEK_OFFSET, DEFAULT_SEEK_OFFSET2);\n  }\n  set seekOffset(value) {\n    setNumericAttr(this, Attributes11.SEEK_OFFSET, value);\n    this.setAttribute(\n      \"aria-label\",\n      verbs.SEEK_BACK_N_SECS({ seekOffset: this.seekOffset })\n    );\n    updateIconText(getSlotted(this, \"icon\"), this.seekOffset);\n  }\n  // Props derived from Media UI Attributes\n  /**\n   * The current time\n   * @type {number | undefined} In seconds\n   */\n  get mediaCurrentTime() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_CURRENT_TIME,\n      DEFAULT_TIME\n    );\n  }\n  set mediaCurrentTime(time) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_CURRENT_TIME, time);\n  }\n  handleClick() {\n    const detail = Math.max(this.mediaCurrentTime - this.seekOffset, 0);\n    const evt = new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_SEEK_REQUEST, {\n      composed: true,\n      bubbles: true,\n      detail\n    });\n    this.dispatchEvent(evt);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-seek-backward-button\")) {\n  GlobalThis.customElements.define(\n    \"media-seek-backward-button\",\n    MediaSeekBackwardButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-seek-forward-button.js\nvar Attributes12 = {\n  SEEK_OFFSET: \"seekoffset\"\n};\nvar DEFAULT_SEEK_OFFSET3 = 30;\nvar forwardIcon = `<svg aria-hidden=\"true\" viewBox=\"0 0 20 24\"><defs><style>.text{font-size:8px;font-family:Arial-BoldMT, Arial;font-weight:700;}</style></defs><text class=\"text value\" transform=\"translate(8.9 19.87)\">${DEFAULT_SEEK_OFFSET3}</text><path d=\"M10 6V3l5.61 4L10 10.94V8a5.54 5.54 0 0 0-1.9 10.48v2.12A7.5 7.5 0 0 1 10 6Z\"/></svg>`;\nvar slotTemplate15 = Document2.createElement(\"template\");\nslotTemplate15.innerHTML = `\n  <slot name=\"icon\">${forwardIcon}</slot>\n`;\nvar DEFAULT_TIME2 = 0;\nvar MediaSeekForwardButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_CURRENT_TIME,\n      Attributes12.SEEK_OFFSET\n    ];\n  }\n  constructor(options = {}) {\n    super(__spreadValues({ slotTemplate: slotTemplate15 }, options));\n  }\n  connectedCallback() {\n    this.seekOffset = getNumericAttr(\n      this,\n      Attributes12.SEEK_OFFSET,\n      DEFAULT_SEEK_OFFSET3\n    );\n    super.connectedCallback();\n  }\n  attributeChangedCallback(attrName, _oldValue, newValue) {\n    if (attrName === Attributes12.SEEK_OFFSET) {\n      this.seekOffset = getNumericAttr(\n        this,\n        Attributes12.SEEK_OFFSET,\n        DEFAULT_SEEK_OFFSET3\n      );\n    }\n    super.attributeChangedCallback(attrName, _oldValue, newValue);\n  }\n  // Own props\n  /**\n   * @type {number | undefined} Seek amount in seconds\n   */\n  get seekOffset() {\n    return getNumericAttr(this, Attributes12.SEEK_OFFSET, DEFAULT_SEEK_OFFSET3);\n  }\n  set seekOffset(value) {\n    setNumericAttr(this, Attributes12.SEEK_OFFSET, value);\n    this.setAttribute(\n      \"aria-label\",\n      verbs.SEEK_FORWARD_N_SECS({ seekOffset: this.seekOffset })\n    );\n    updateIconText(getSlotted(this, \"icon\"), this.seekOffset);\n  }\n  // Props derived from Media UI Attributes\n  /**\n   * The current time\n   * @type {number | undefined} In seconds\n   */\n  get mediaCurrentTime() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_CURRENT_TIME,\n      DEFAULT_TIME2\n    );\n  }\n  set mediaCurrentTime(time) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_CURRENT_TIME, time);\n  }\n  handleClick() {\n    const detail = this.mediaCurrentTime + this.seekOffset;\n    const evt = new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_SEEK_REQUEST, {\n      composed: true,\n      bubbles: true,\n      detail\n    });\n    this.dispatchEvent(evt);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-seek-forward-button\")) {\n  GlobalThis.customElements.define(\n    \"media-seek-forward-button\",\n    MediaSeekForwardButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-settings-menu.js\nvar __defProp8 = Object.defineProperty;\nvar __defNormalProp8 = (obj, key, value) => key in obj ? __defProp8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField8 = (obj, key, value) => {\n  __defNormalProp8(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar template14 = Document2.createElement(\"template\");\ntemplate14.innerHTML = MediaChromeMenu.template.innerHTML + /*html*/\n`\n  <style>\n    :host {\n      background: var(--media-settings-menu-background,\n        var(--media-menu-background,\n        var(--media-control-background,\n        var(--media-secondary-color, rgb(20 20 30 / .8)))));\n      min-width: var(--media-settings-menu-min-width, 160px);\n      border-radius: 2px 2px 0 0;\n      overflow: hidden;\n    }\n\n    :host([role=\"menu\"]) {\n      ${/* Bottom fix setting menu items for animation when the height expands. */\n\"\"}\n      justify-content: end;\n    }\n\n    slot:not([name]) {\n      justify-content: var(--media-settings-menu-justify-content);\n      flex-direction: var(--media-settings-menu-flex-direction, column);\n      overflow: visible;\n    }\n\n    #container.has-expanded {\n      --media-settings-menu-item-opacity: 0;\n    }\n  </style>\n`;\nvar MediaSettingsMenu = class extends MediaChromeMenu {\n  /**\n   * Returns the anchor element when it is a floating menu.\n   * @return {HTMLElement}\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\"media-settings-menu-button\");\n  }\n};\n__publicField8(MediaSettingsMenu, \"template\", template14);\nif (!GlobalThis.customElements.get(\"media-settings-menu\")) {\n  GlobalThis.customElements.define(\"media-settings-menu\", MediaSettingsMenu);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-settings-menu-button.js\nvar slotTemplate16 = Document2.createElement(\"template\");\nslotTemplate16.innerHTML = /*html*/\n`\n  <slot name=\"icon\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n      <path d=\"M4.5 14.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Zm7.5 0a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Zm7.5 0a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z\"/>\n    </svg>\n  </slot>\n`;\nvar MediaSettingsMenuButton = class extends MediaChromeMenuButton {\n  static get observedAttributes() {\n    return [...super.observedAttributes, \"target\"];\n  }\n  constructor() {\n    super({ slotTemplate: slotTemplate16 });\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.setAttribute(\"aria-label\", nouns.SETTINGS());\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return getMediaController(this).querySelector(\"media-settings-menu\");\n  }\n};\nif (!GlobalThis.customElements.get(\"media-settings-menu-button\")) {\n  GlobalThis.customElements.define(\n    \"media-settings-menu-button\",\n    MediaSettingsMenuButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-settings-menu-item.js\nvar __defProp9 = Object.defineProperty;\nvar __defNormalProp9 = (obj, key, value) => key in obj ? __defProp9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField9 = (obj, key, value) => {\n  __defNormalProp9(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar _a;\nvar template15 = Document2.createElement(\"template\");\ntemplate15.innerHTML = MediaChromeMenuItem.template.innerHTML + /*html*/\n`\n  <style>\n    slot:not([name=\"submenu\"]) {\n      opacity: var(--media-settings-menu-item-opacity, var(--media-menu-item-opacity));\n    }\n\n    :host([aria-expanded=\"true\"]:hover) {\n      background: transparent;\n    }\n  </style>\n`;\nif ((_a = template15.content) == null ? void 0 : _a.querySelector) {\n  template15.content.querySelector('slot[name=\"suffix\"]').innerHTML = /*html*/\n  `\n    <svg aria-hidden=\"true\" viewBox=\"0 0 20 24\">\n      <path d=\"m8.12 17.585-.742-.669 4.2-4.665-4.2-4.666.743-.669 4.803 5.335-4.803 5.334Z\"/>\n    </svg>\n  `;\n}\nvar MediaSettingsMenuItem = class extends MediaChromeMenuItem {\n};\n__publicField9(MediaSettingsMenuItem, \"template\", template15);\nif (!GlobalThis.customElements.get(\"media-settings-menu-item\")) {\n  GlobalThis.customElements.define(\n    \"media-settings-menu-item\",\n    MediaSettingsMenuItem\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-time-display.js\nvar __accessCheck23 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet23 = (obj, member, getter) => {\n  __accessCheck23(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd23 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet20 = (obj, member, value, setter) => {\n  __accessCheck23(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _slot4;\nvar Attributes13 = {\n  REMAINING: \"remaining\",\n  SHOW_DURATION: \"showduration\",\n  NO_TOGGLE: \"notoggle\"\n};\nvar CombinedAttributes = [\n  ...Object.values(Attributes13),\n  MediaUIAttributes.MEDIA_CURRENT_TIME,\n  MediaUIAttributes.MEDIA_DURATION,\n  MediaUIAttributes.MEDIA_SEEKABLE\n];\nvar ButtonPressedKeys2 = [\"Enter\", \" \"];\nvar DEFAULT_TIMES_SEP = \"&nbsp;/&nbsp;\";\nvar formatTimesLabel = (el, { timesSep = DEFAULT_TIMES_SEP } = {}) => {\n  var _a3, _b;\n  const showRemaining = el.hasAttribute(Attributes13.REMAINING);\n  const showDuration = el.hasAttribute(Attributes13.SHOW_DURATION);\n  const currentTime = (_a3 = el.mediaCurrentTime) != null ? _a3 : 0;\n  const [, seekableEnd] = (_b = el.mediaSeekable) != null ? _b : [];\n  let endTime = 0;\n  if (Number.isFinite(el.mediaDuration)) {\n    endTime = el.mediaDuration;\n  } else if (Number.isFinite(seekableEnd)) {\n    endTime = seekableEnd;\n  }\n  const timeLabel = showRemaining ? formatTime(0 - (endTime - currentTime)) : formatTime(currentTime);\n  if (!showDuration)\n    return timeLabel;\n  return `${timeLabel}${timesSep}${formatTime(endTime)}`;\n};\nvar DEFAULT_MISSING_TIME_PHRASE = \"video not loaded, unknown time.\";\nvar updateAriaValueText = (el) => {\n  var _a3;\n  const currentTime = el.mediaCurrentTime;\n  const [, seekableEnd] = (_a3 = el.mediaSeekable) != null ? _a3 : [];\n  let endTime = null;\n  if (Number.isFinite(el.mediaDuration)) {\n    endTime = el.mediaDuration;\n  } else if (Number.isFinite(seekableEnd)) {\n    endTime = seekableEnd;\n  }\n  if (currentTime == null || endTime === null) {\n    el.setAttribute(\"aria-valuetext\", DEFAULT_MISSING_TIME_PHRASE);\n    return;\n  }\n  const showRemaining = el.hasAttribute(Attributes13.REMAINING);\n  const showDuration = el.hasAttribute(Attributes13.SHOW_DURATION);\n  const currentTimePhrase = showRemaining ? formatAsTimePhrase(0 - (endTime - currentTime)) : formatAsTimePhrase(currentTime);\n  if (!showDuration) {\n    el.setAttribute(\"aria-valuetext\", currentTimePhrase);\n    return;\n  }\n  const totalTimePhrase = formatAsTimePhrase(endTime);\n  const fullPhrase = `${currentTimePhrase} of ${totalTimePhrase}`;\n  el.setAttribute(\"aria-valuetext\", fullPhrase);\n};\nvar MediaTimeDisplay = class extends MediaTextDisplay {\n  constructor() {\n    super();\n    __privateAdd23(this, _slot4, void 0);\n    __privateSet20(this, _slot4, this.shadowRoot.querySelector(\"slot\"));\n    __privateGet23(this, _slot4).innerHTML = `${formatTimesLabel(this)}`;\n  }\n  static get observedAttributes() {\n    return [...super.observedAttributes, ...CombinedAttributes, \"disabled\"];\n  }\n  connectedCallback() {\n    const { style } = getOrInsertCSSRule(\n      this.shadowRoot,\n      \":host(:hover:not([notoggle]))\"\n    );\n    style.setProperty(\"cursor\", \"pointer\");\n    style.setProperty(\n      \"background\",\n      \"var(--media-control-hover-background, rgba(50 50 70 / .7))\"\n    );\n    if (!this.hasAttribute(\"disabled\")) {\n      this.enable();\n    }\n    this.setAttribute(\"role\", \"progressbar\");\n    this.setAttribute(\"aria-label\", nouns.PLAYBACK_TIME());\n    const keyUpHandler = (evt) => {\n      const { key } = evt;\n      if (!ButtonPressedKeys2.includes(key)) {\n        this.removeEventListener(\"keyup\", keyUpHandler);\n        return;\n      }\n      this.toggleTimeDisplay();\n    };\n    this.addEventListener(\"keydown\", (evt) => {\n      const { metaKey, altKey, key } = evt;\n      if (metaKey || altKey || !ButtonPressedKeys2.includes(key)) {\n        this.removeEventListener(\"keyup\", keyUpHandler);\n        return;\n      }\n      this.addEventListener(\"keyup\", keyUpHandler);\n    });\n    this.addEventListener(\"click\", this.toggleTimeDisplay);\n    super.connectedCallback();\n  }\n  toggleTimeDisplay() {\n    if (this.noToggle) {\n      return;\n    }\n    if (this.hasAttribute(\"remaining\")) {\n      this.removeAttribute(\"remaining\");\n    } else {\n      this.setAttribute(\"remaining\", \"\");\n    }\n  }\n  disconnectedCallback() {\n    this.disable();\n    super.disconnectedCallback();\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (CombinedAttributes.includes(attrName)) {\n      this.update();\n    } else if (attrName === \"disabled\" && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n  }\n  enable() {\n    this.tabIndex = 0;\n  }\n  disable() {\n    this.tabIndex = -1;\n  }\n  // Own props\n  /**\n   * Whether to show the remaining time\n   * @type {boolean}\n   */\n  get remaining() {\n    return getBooleanAttr(this, Attributes13.REMAINING);\n  }\n  set remaining(show) {\n    setBooleanAttr(this, Attributes13.REMAINING, show);\n  }\n  /**\n   * Whether to show the duration\n   * @type {boolean}\n   */\n  get showDuration() {\n    return getBooleanAttr(this, Attributes13.SHOW_DURATION);\n  }\n  set showDuration(show) {\n    setBooleanAttr(this, Attributes13.SHOW_DURATION, show);\n  }\n  /**\n   * Disable the default behavior that toggles between current and remaining time\n   * @type {boolean}\n   */\n  get noToggle() {\n    return getBooleanAttr(this, Attributes13.NO_TOGGLE);\n  }\n  set noToggle(notoggle) {\n    setBooleanAttr(this, Attributes13.NO_TOGGLE, notoggle);\n  }\n  // Props derived from media UI attributes\n  /**\n   * Get the duration\n   * @type {number | undefined} In seconds\n   */\n  get mediaDuration() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_DURATION);\n  }\n  set mediaDuration(time) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_DURATION, time);\n  }\n  /**\n   * The current time\n   * @type {number | undefined} In seconds\n   */\n  get mediaCurrentTime() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_CURRENT_TIME);\n  }\n  set mediaCurrentTime(time) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_CURRENT_TIME, time);\n  }\n  /**\n   * Range of values that can be seeked to\n   * @type {[number, number] | undefined} An array of two numbers [start, end]\n   */\n  get mediaSeekable() {\n    const seekable = this.getAttribute(MediaUIAttributes.MEDIA_SEEKABLE);\n    if (!seekable)\n      return void 0;\n    return seekable.split(\":\").map((time) => +time);\n  }\n  set mediaSeekable(range) {\n    if (range == null) {\n      this.removeAttribute(MediaUIAttributes.MEDIA_SEEKABLE);\n      return;\n    }\n    this.setAttribute(MediaUIAttributes.MEDIA_SEEKABLE, range.join(\":\"));\n  }\n  update() {\n    const timesLabel = formatTimesLabel(this);\n    updateAriaValueText(this);\n    if (timesLabel !== __privateGet23(this, _slot4).innerHTML) {\n      __privateGet23(this, _slot4).innerHTML = timesLabel;\n    }\n  }\n};\n_slot4 = /* @__PURE__ */ new WeakMap();\nif (!GlobalThis.customElements.get(\"media-time-display\")) {\n  GlobalThis.customElements.define(\"media-time-display\", MediaTimeDisplay);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/range-animation.js\nvar __accessCheck24 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet24 = (obj, member, getter) => {\n  __accessCheck24(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd24 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet21 = (obj, member, value, setter) => {\n  __accessCheck24(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateWrapper = (obj, member, setter, getter) => ({\n  set _(value) {\n    __privateSet21(obj, member, value, setter);\n  },\n  get _() {\n    return __privateGet24(obj, member, getter);\n  }\n});\nvar _range;\nvar _startTime;\nvar _previousTime;\nvar _deltaTime;\nvar _frameCount;\nvar _updateTimestamp;\nvar _updateStartValue;\nvar _lastRangeIncrease;\nvar _id;\nvar _animate;\nvar RangeAnimation = class {\n  constructor(range, callback, fps) {\n    __privateAdd24(this, _range, void 0);\n    __privateAdd24(this, _startTime, void 0);\n    __privateAdd24(this, _previousTime, void 0);\n    __privateAdd24(this, _deltaTime, void 0);\n    __privateAdd24(this, _frameCount, void 0);\n    __privateAdd24(this, _updateTimestamp, void 0);\n    __privateAdd24(this, _updateStartValue, void 0);\n    __privateAdd24(this, _lastRangeIncrease, void 0);\n    __privateAdd24(this, _id, 0);\n    __privateAdd24(this, _animate, (now2 = performance.now()) => {\n      __privateSet21(this, _id, requestAnimationFrame(__privateGet24(this, _animate)));\n      __privateSet21(this, _deltaTime, performance.now() - __privateGet24(this, _previousTime));\n      const fpsInterval = 1e3 / this.fps;\n      if (__privateGet24(this, _deltaTime) > fpsInterval) {\n        __privateSet21(this, _previousTime, now2 - __privateGet24(this, _deltaTime) % fpsInterval);\n        const fps2 = 1e3 / ((now2 - __privateGet24(this, _startTime)) / ++__privateWrapper(this, _frameCount)._);\n        const delta = (now2 - __privateGet24(this, _updateTimestamp)) / 1e3 / this.duration;\n        let value = __privateGet24(this, _updateStartValue) + delta * this.playbackRate;\n        const increase = value - __privateGet24(this, _range).valueAsNumber;\n        if (increase > 0) {\n          __privateSet21(this, _lastRangeIncrease, this.playbackRate / this.duration / fps2);\n        } else {\n          __privateSet21(this, _lastRangeIncrease, 0.995 * __privateGet24(this, _lastRangeIncrease));\n          value = __privateGet24(this, _range).valueAsNumber + __privateGet24(this, _lastRangeIncrease);\n        }\n        this.callback(value);\n      }\n    });\n    __privateSet21(this, _range, range);\n    this.callback = callback;\n    this.fps = fps;\n  }\n  start() {\n    if (__privateGet24(this, _id) !== 0)\n      return;\n    __privateSet21(this, _previousTime, performance.now());\n    __privateSet21(this, _startTime, __privateGet24(this, _previousTime));\n    __privateSet21(this, _frameCount, 0);\n    __privateGet24(this, _animate).call(this);\n  }\n  stop() {\n    if (__privateGet24(this, _id) === 0)\n      return;\n    cancelAnimationFrame(__privateGet24(this, _id));\n    __privateSet21(this, _id, 0);\n  }\n  update({ start, duration, playbackRate }) {\n    const increase = start - __privateGet24(this, _range).valueAsNumber;\n    const durationDelta = Math.abs(duration - this.duration);\n    if (increase > 0 || increase < -0.03 || durationDelta >= 0.5) {\n      this.callback(start);\n    }\n    __privateSet21(this, _updateStartValue, start);\n    __privateSet21(this, _updateTimestamp, performance.now());\n    this.duration = duration;\n    this.playbackRate = playbackRate;\n  }\n};\n_range = /* @__PURE__ */ new WeakMap();\n_startTime = /* @__PURE__ */ new WeakMap();\n_previousTime = /* @__PURE__ */ new WeakMap();\n_deltaTime = /* @__PURE__ */ new WeakMap();\n_frameCount = /* @__PURE__ */ new WeakMap();\n_updateTimestamp = /* @__PURE__ */ new WeakMap();\n_updateStartValue = /* @__PURE__ */ new WeakMap();\n_lastRangeIncrease = /* @__PURE__ */ new WeakMap();\n_id = /* @__PURE__ */ new WeakMap();\n_animate = /* @__PURE__ */ new WeakMap();\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-time-range.js\nvar __accessCheck25 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet25 = (obj, member, getter) => {\n  __accessCheck25(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd25 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet22 = (obj, member, value, setter) => {\n  __accessCheck25(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod11 = (obj, member, method) => {\n  __accessCheck25(obj, member, \"access private method\");\n  return method;\n};\nvar _rootNode;\nvar _animation;\nvar _boxes;\nvar _previewTime;\nvar _previewBox;\nvar _currentBox;\nvar _boxPaddingLeft;\nvar _boxPaddingRight;\nvar _mediaChaptersCues;\nvar _toggleRangeAnimation;\nvar toggleRangeAnimation_fn;\nvar _shouldRangeAnimate;\nvar shouldRangeAnimate_fn;\nvar _updateRange;\nvar _getElementRects;\nvar getElementRects_fn;\nvar _getBoxPosition;\nvar getBoxPosition_fn;\nvar _getBoxShiftPosition;\nvar getBoxShiftPosition_fn;\nvar _handlePointerMove3;\nvar handlePointerMove_fn3;\nvar _previewRequest;\nvar previewRequest_fn;\nvar _seekRequest;\nvar seekRequest_fn;\nvar DEFAULT_MISSING_TIME_PHRASE2 = \"video not loaded, unknown time.\";\nvar updateAriaValueText2 = (el) => {\n  const range = el.range;\n  const currentTimePhrase = formatAsTimePhrase(+calcTimeFromRangeValue(el));\n  const totalTimePhrase = formatAsTimePhrase(+el.mediaSeekableEnd);\n  const fullPhrase = !(currentTimePhrase && totalTimePhrase) ? DEFAULT_MISSING_TIME_PHRASE2 : `${currentTimePhrase} of ${totalTimePhrase}`;\n  range.setAttribute(\"aria-valuetext\", fullPhrase);\n};\nvar template16 = Document2.createElement(\"template\");\ntemplate16.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      --media-box-border-radius: 4px;\n      --media-box-padding-left: 10px;\n      --media-box-padding-right: 10px;\n      --media-preview-border-radius: var(--media-box-border-radius);\n      --media-box-arrow-offset: var(--media-box-border-radius);\n      --_control-background: var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .7)));\n      --_preview-background: var(--media-preview-background, var(--_control-background));\n\n      ${/* 1% rail width trick was off in Safari, contain: layout seems to\nprevent the horizontal overflow as well. */\n\"\"}\n      contain: layout;\n    }\n\n    #highlight {\n      background: var(--media-time-range-buffered-color, rgb(255 255 255 / .4));\n    }\n\n    #preview-rail,\n    #current-rail {\n      width: 100%;\n      position: absolute;\n      left: 0;\n      bottom: 100%;\n      pointer-events: none;\n      will-change: transform;\n    }\n\n    [part~=\"box\"] {\n      width: min-content;\n      ${/* absolute position is needed here so the box doesn't overflow the bounds */\n\"\"}\n      position: absolute;\n      bottom: 100%;\n      flex-direction: column;\n      align-items: center;\n      transform: translateX(-50%);\n    }\n\n    [part~=\"current-box\"] {\n      display: var(--media-current-box-display, var(--media-box-display, flex));\n      margin: var(--media-current-box-margin, var(--media-box-margin, 0 0 5px));\n      visibility: hidden;\n    }\n\n    [part~=\"preview-box\"] {\n      display: var(--media-preview-box-display, var(--media-box-display, flex));\n      margin: var(--media-preview-box-margin, var(--media-box-margin, 0 0 5px));\n      transition-property: var(--media-preview-transition-property, visibility, opacity);\n      transition-duration: var(--media-preview-transition-duration-out, .25s);\n      transition-delay: var(--media-preview-transition-delay-out, 0s);\n      visibility: hidden;\n      opacity: 0;\n    }\n\n    :host(:is([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}], [${MediaUIAttributes.MEDIA_PREVIEW_TIME}])[dragging]) [part~=\"preview-box\"] {\n      transition-duration: var(--media-preview-transition-duration-in, .5s);\n      transition-delay: var(--media-preview-transition-delay-in, .25s);\n      visibility: visible;\n      opacity: 1;\n    }\n\n    @media (hover: hover) {\n      :host(:is([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}], [${MediaUIAttributes.MEDIA_PREVIEW_TIME}]):hover) [part~=\"preview-box\"] {\n        transition-duration: var(--media-preview-transition-duration-in, .5s);\n        transition-delay: var(--media-preview-transition-delay-in, .25s);\n        visibility: visible;\n        opacity: 1;\n      }\n    }\n\n    media-preview-thumbnail,\n    ::slotted(media-preview-thumbnail) {\n      visibility: hidden;\n      ${/* delay changing these CSS props until the preview box transition is ended */\n\"\"}\n      transition: visibility 0s .25s;\n      transition-delay: calc(var(--media-preview-transition-delay-out, 0s) + var(--media-preview-transition-duration-out, .25s));\n      background: var(--media-preview-thumbnail-background, var(--_preview-background));\n      box-shadow: var(--media-preview-thumbnail-box-shadow, 0 0 4px rgb(0 0 0 / .2));\n      max-width: var(--media-preview-thumbnail-max-width, 180px);\n      max-height: var(--media-preview-thumbnail-max-height, 160px);\n      min-width: var(--media-preview-thumbnail-min-width, 120px);\n      min-height: var(--media-preview-thumbnail-min-height, 80px);\n      border: var(--media-preview-thumbnail-border);\n      border-radius: var(--media-preview-thumbnail-border-radius,\n        var(--media-preview-border-radius) var(--media-preview-border-radius) 0 0);\n    }\n\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}][dragging]) media-preview-thumbnail,\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}][dragging]) ::slotted(media-preview-thumbnail) {\n      transition-delay: var(--media-preview-transition-delay-in, .25s);\n      visibility: visible;\n    }\n\n    @media (hover: hover) {\n      :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}]:hover) media-preview-thumbnail,\n      :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}]:hover) ::slotted(media-preview-thumbnail) {\n        transition-delay: var(--media-preview-transition-delay-in, .25s);\n        visibility: visible;\n      }\n\n      :host([${MediaUIAttributes.MEDIA_PREVIEW_TIME}]:hover) {\n        --media-time-range-hover-display: block;\n      }\n    }\n\n    media-preview-chapter-display,\n    ::slotted(media-preview-chapter-display) {\n      font-size: var(--media-font-size, 13px);\n      line-height: 17px;\n      min-width: 0;\n      visibility: hidden;\n      ${/* delay changing these CSS props until the preview box transition is ended */\n\"\"}\n      transition: min-width 0s, border-radius 0s, margin 0s, padding 0s, visibility 0s;\n      transition-delay: calc(var(--media-preview-transition-delay-out, 0s) + var(--media-preview-transition-duration-out, .25s));\n      background: var(--media-preview-chapter-background, var(--_preview-background));\n      border-radius: var(--media-preview-chapter-border-radius,\n        var(--media-preview-border-radius) var(--media-preview-border-radius)\n        var(--media-preview-border-radius) var(--media-preview-border-radius));\n      padding: var(--media-preview-chapter-padding, 3.5px 9px);\n      margin: var(--media-preview-chapter-margin, 0 0 5px);\n      text-shadow: var(--media-preview-chapter-text-shadow, 0 0 4px rgb(0 0 0 / .75));\n    }\n\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}]) media-preview-chapter-display,\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}]) ::slotted(media-preview-chapter-display) {\n      transition-delay: var(--media-preview-transition-delay-in, .25s);\n      border-radius: var(--media-preview-chapter-border-radius, 0);\n      padding: var(--media-preview-chapter-padding, 3.5px 9px 0);\n      margin: var(--media-preview-chapter-margin, 0);\n      min-width: 100%;\n    }\n\n    media-preview-chapter-display[${MediaUIAttributes.MEDIA_PREVIEW_CHAPTER}],\n    ::slotted(media-preview-chapter-display[${MediaUIAttributes.MEDIA_PREVIEW_CHAPTER}]) {\n      visibility: visible;\n    }\n\n    media-preview-chapter-display:not([aria-valuetext]),\n    ::slotted(media-preview-chapter-display:not([aria-valuetext])) {\n      display: none;\n    }\n\n    media-preview-time-display,\n    ::slotted(media-preview-time-display),\n    media-time-display,\n    ::slotted(media-time-display) {\n      font-size: var(--media-font-size, 13px);\n      line-height: 17px;\n      min-width: 0;\n      ${/* delay changing these CSS props until the preview box transition is ended */\n\"\"}\n      transition: min-width 0s, border-radius 0s;\n      transition-delay: calc(var(--media-preview-transition-delay-out, 0s) + var(--media-preview-transition-duration-out, .25s));\n      background: var(--media-preview-time-background, var(--_preview-background));\n      border-radius: var(--media-preview-time-border-radius,\n        var(--media-preview-border-radius) var(--media-preview-border-radius)\n        var(--media-preview-border-radius) var(--media-preview-border-radius));\n      padding: var(--media-preview-time-padding, 3.5px 9px);\n      margin: var(--media-preview-time-margin, 0);\n      text-shadow: var(--media-preview-time-text-shadow, 0 0 4px rgb(0 0 0 / .75));\n      transform: translateX(min(\n        max(calc(50% - var(--_box-width) / 2),\n        calc(var(--_box-shift, 0))),\n        calc(var(--_box-width) / 2 - 50%)\n      ));\n    }\n\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}]) media-preview-time-display,\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_IMAGE}]) ::slotted(media-preview-time-display) {\n      transition-delay: var(--media-preview-transition-delay-in, .25s);\n      border-radius: var(--media-preview-time-border-radius,\n        0 0 var(--media-preview-border-radius) var(--media-preview-border-radius));\n      min-width: 100%;\n    }\n\n    :host([${MediaUIAttributes.MEDIA_PREVIEW_TIME}]:hover) {\n      --media-time-range-hover-display: block;\n    }\n\n    [part~=\"arrow\"],\n    ::slotted([part~=\"arrow\"]) {\n      display: var(--media-box-arrow-display, inline-block);\n      transform: translateX(min(\n        max(calc(50% - var(--_box-width) / 2 + var(--media-box-arrow-offset)),\n        calc(var(--_box-shift, 0))),\n        calc(var(--_box-width) / 2 - 50% - var(--media-box-arrow-offset))\n      ));\n      ${/* border-color has to come before border-top-color! */\n\"\"}\n      border-color: transparent;\n      border-top-color: var(--media-box-arrow-background, var(--_control-background));\n      border-width: var(--media-box-arrow-border-width,\n        var(--media-box-arrow-height, 5px) var(--media-box-arrow-width, 6px) 0);\n      border-style: solid;\n      justify-content: center;\n      height: 0;\n    }\n  </style>\n  <div id=\"preview-rail\">\n    <slot name=\"preview\" part=\"box preview-box\">\n      <media-preview-thumbnail></media-preview-thumbnail>\n      <media-preview-chapter-display></media-preview-chapter-display>\n      <media-preview-time-display></media-preview-time-display>\n      <slot name=\"preview-arrow\"><div part=\"arrow\"></div></slot>\n    </slot>\n  </div>\n  <div id=\"current-rail\">\n    <slot name=\"current\" part=\"box current-box\">\n      ${/* Example: add the current time w/ arrow to the playhead\n<media-time-display slot=\"current\"></media-time-display>\n<div part=\"arrow\" slot=\"current\"></div> */\n\"\"}\n    </slot>\n  </div>\n`;\nvar calcRangeValueFromTime = (el, time = el.mediaCurrentTime) => {\n  const startTime = Number.isFinite(el.mediaSeekableStart) ? el.mediaSeekableStart : 0;\n  const endTime = Number.isFinite(el.mediaDuration) ? el.mediaDuration : el.mediaSeekableEnd;\n  if (Number.isNaN(endTime))\n    return 0;\n  const value = (time - startTime) / (endTime - startTime);\n  return Math.max(0, Math.min(value, 1));\n};\nvar calcTimeFromRangeValue = (el, value = el.range.valueAsNumber) => {\n  const startTime = Number.isFinite(el.mediaSeekableStart) ? el.mediaSeekableStart : 0;\n  const endTime = Number.isFinite(el.mediaDuration) ? el.mediaDuration : el.mediaSeekableEnd;\n  if (Number.isNaN(endTime))\n    return 0;\n  return value * (endTime - startTime) + startTime;\n};\nvar MediaTimeRange = class extends MediaChromeRange {\n  constructor() {\n    super();\n    __privateAdd25(this, _toggleRangeAnimation);\n    __privateAdd25(this, _shouldRangeAnimate);\n    __privateAdd25(this, _getElementRects);\n    __privateAdd25(this, _getBoxPosition);\n    __privateAdd25(this, _getBoxShiftPosition);\n    __privateAdd25(this, _handlePointerMove3);\n    __privateAdd25(this, _previewRequest);\n    __privateAdd25(this, _seekRequest);\n    __privateAdd25(this, _rootNode, void 0);\n    __privateAdd25(this, _animation, void 0);\n    __privateAdd25(this, _boxes, void 0);\n    __privateAdd25(this, _previewTime, void 0);\n    __privateAdd25(this, _previewBox, void 0);\n    __privateAdd25(this, _currentBox, void 0);\n    __privateAdd25(this, _boxPaddingLeft, void 0);\n    __privateAdd25(this, _boxPaddingRight, void 0);\n    __privateAdd25(this, _mediaChaptersCues, void 0);\n    __privateAdd25(this, _updateRange, (value) => {\n      if (this.dragging)\n        return;\n      this.range.valueAsNumber = value;\n      this.updateBar();\n    });\n    this.container.appendChild(template16.content.cloneNode(true));\n    __privateSet22(this, _boxes, this.shadowRoot.querySelectorAll('[part~=\"box\"]'));\n    __privateSet22(this, _previewBox, this.shadowRoot.querySelector('[part~=\"preview-box\"]'));\n    __privateSet22(this, _currentBox, this.shadowRoot.querySelector('[part~=\"current-box\"]'));\n    const computedStyle = getComputedStyle(this);\n    __privateSet22(this, _boxPaddingLeft, parseInt(\n      computedStyle.getPropertyValue(\"--media-box-padding-left\")\n    ));\n    __privateSet22(this, _boxPaddingRight, parseInt(\n      computedStyle.getPropertyValue(\"--media-box-padding-right\")\n    ));\n    __privateSet22(this, _animation, new RangeAnimation(this.range, __privateGet25(this, _updateRange), 60));\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PAUSED,\n      MediaUIAttributes.MEDIA_DURATION,\n      MediaUIAttributes.MEDIA_SEEKABLE,\n      MediaUIAttributes.MEDIA_CURRENT_TIME,\n      MediaUIAttributes.MEDIA_PREVIEW_IMAGE,\n      MediaUIAttributes.MEDIA_PREVIEW_TIME,\n      MediaUIAttributes.MEDIA_PREVIEW_CHAPTER,\n      MediaUIAttributes.MEDIA_BUFFERED,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      MediaUIAttributes.MEDIA_LOADING,\n      MediaUIAttributes.MEDIA_ENDED\n    ];\n  }\n  connectedCallback() {\n    var _a3;\n    super.connectedCallback();\n    this.range.setAttribute(\"aria-label\", nouns.SEEK());\n    __privateMethod11(this, _toggleRangeAnimation, toggleRangeAnimation_fn).call(this);\n    __privateSet22(this, _rootNode, this.getRootNode());\n    (_a3 = __privateGet25(this, _rootNode)) == null ? void 0 : _a3.addEventListener(\"transitionstart\", this);\n  }\n  disconnectedCallback() {\n    var _a3;\n    super.disconnectedCallback();\n    __privateMethod11(this, _toggleRangeAnimation, toggleRangeAnimation_fn).call(this);\n    (_a3 = __privateGet25(this, _rootNode)) == null ? void 0 : _a3.removeEventListener(\"transitionstart\", this);\n    __privateSet22(this, _rootNode, null);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (oldValue == newValue)\n      return;\n    if (attrName === MediaUIAttributes.MEDIA_CURRENT_TIME || attrName === MediaUIAttributes.MEDIA_PAUSED || attrName === MediaUIAttributes.MEDIA_ENDED || attrName === MediaUIAttributes.MEDIA_LOADING || attrName === MediaUIAttributes.MEDIA_DURATION || attrName === MediaUIAttributes.MEDIA_SEEKABLE) {\n      __privateGet25(this, _animation).update({\n        start: calcRangeValueFromTime(this),\n        duration: this.mediaSeekableEnd - this.mediaSeekableStart,\n        playbackRate: this.mediaPlaybackRate\n      });\n      __privateMethod11(this, _toggleRangeAnimation, toggleRangeAnimation_fn).call(this);\n      updateAriaValueText2(this);\n    } else if (attrName === MediaUIAttributes.MEDIA_BUFFERED) {\n      this.updateBufferedBar();\n    }\n    if (attrName === MediaUIAttributes.MEDIA_DURATION || attrName === MediaUIAttributes.MEDIA_SEEKABLE) {\n      this.mediaChaptersCues = __privateGet25(this, _mediaChaptersCues);\n      this.updateBar();\n    }\n  }\n  get mediaChaptersCues() {\n    return __privateGet25(this, _mediaChaptersCues);\n  }\n  set mediaChaptersCues(value) {\n    var _a3;\n    __privateSet22(this, _mediaChaptersCues, value);\n    this.updateSegments(\n      (_a3 = __privateGet25(this, _mediaChaptersCues)) == null ? void 0 : _a3.map((c4) => ({\n        start: calcRangeValueFromTime(this, c4.startTime),\n        end: calcRangeValueFromTime(this, c4.endTime)\n      }))\n    );\n  }\n  /**\n   * @type {boolean} Is the media paused\n   */\n  get mediaPaused() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED);\n  }\n  set mediaPaused(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_PAUSED, value);\n  }\n  /**\n   * @type {boolean} Is the media loading\n   */\n  get mediaLoading() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_LOADING);\n  }\n  set mediaLoading(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_LOADING, value);\n  }\n  /**\n   * @type {number | undefined}\n   */\n  get mediaDuration() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_DURATION);\n  }\n  set mediaDuration(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_DURATION, value);\n  }\n  /**\n   * @type {number | undefined}\n   */\n  get mediaCurrentTime() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_CURRENT_TIME);\n  }\n  set mediaCurrentTime(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_CURRENT_TIME, value);\n  }\n  /**\n   * @type {number}\n   */\n  get mediaPlaybackRate() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, 1);\n  }\n  set mediaPlaybackRate(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, value);\n  }\n  /**\n   * @type {Array<Array<number>>} An array of ranges, each range being an array of two numbers.\n   * e.g. [[1, 2], [3, 4]]\n   */\n  get mediaBuffered() {\n    const buffered = this.getAttribute(MediaUIAttributes.MEDIA_BUFFERED);\n    if (!buffered)\n      return [];\n    return buffered.split(\" \").map((timePair) => timePair.split(\":\").map((timeStr) => +timeStr));\n  }\n  set mediaBuffered(list) {\n    if (!list) {\n      this.removeAttribute(MediaUIAttributes.MEDIA_BUFFERED);\n      return;\n    }\n    const strVal = list.map((tuple) => tuple.join(\":\")).join(\" \");\n    this.setAttribute(MediaUIAttributes.MEDIA_BUFFERED, strVal);\n  }\n  /**\n   * Range of values that can be seeked to\n   * @type {Array<number> | undefined} An array of two numbers [start, end]\n   */\n  get mediaSeekable() {\n    const seekable = this.getAttribute(MediaUIAttributes.MEDIA_SEEKABLE);\n    if (!seekable)\n      return void 0;\n    return seekable.split(\":\").map((time) => +time);\n  }\n  set mediaSeekable(range) {\n    if (range == null) {\n      this.removeAttribute(MediaUIAttributes.MEDIA_SEEKABLE);\n      return;\n    }\n    this.setAttribute(MediaUIAttributes.MEDIA_SEEKABLE, range.join(\":\"));\n  }\n  /**\n   * @type {number | undefined}\n   */\n  get mediaSeekableEnd() {\n    var _a3;\n    const [, end = this.mediaDuration] = (_a3 = this.mediaSeekable) != null ? _a3 : [];\n    return end;\n  }\n  get mediaSeekableStart() {\n    var _a3;\n    const [start = 0] = (_a3 = this.mediaSeekable) != null ? _a3 : [];\n    return start;\n  }\n  /**\n   * @type {string | undefined} The url of the preview image\n   */\n  get mediaPreviewImage() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_PREVIEW_IMAGE);\n  }\n  set mediaPreviewImage(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_PREVIEW_IMAGE, value);\n  }\n  /**\n   * @type {number | undefined}\n   */\n  get mediaPreviewTime() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_PREVIEW_TIME);\n  }\n  set mediaPreviewTime(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PREVIEW_TIME, value);\n  }\n  /**\n   * @type {boolean | undefined}\n   */\n  get mediaEnded() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_ENDED);\n  }\n  set mediaEnded(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_ENDED, value);\n  }\n  /* Add a buffered progress bar */\n  updateBar() {\n    super.updateBar();\n    this.updateBufferedBar();\n    this.updateCurrentBox();\n  }\n  updateBufferedBar() {\n    var _a3;\n    const buffered = this.mediaBuffered;\n    if (!buffered.length) {\n      return;\n    }\n    let relativeBufferedEnd;\n    if (!this.mediaEnded) {\n      const currentTime = this.mediaCurrentTime;\n      const [, bufferedEnd = this.mediaSeekableStart] = (_a3 = buffered.find(\n        ([start, end]) => start <= currentTime && currentTime <= end\n      )) != null ? _a3 : [];\n      relativeBufferedEnd = calcRangeValueFromTime(this, bufferedEnd);\n    } else {\n      relativeBufferedEnd = 1;\n    }\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \"#highlight\");\n    style.setProperty(\"width\", `${relativeBufferedEnd * 100}%`);\n  }\n  updateCurrentBox() {\n    const currentSlot = this.shadowRoot.querySelector('slot[name=\"current\"]');\n    if (!currentSlot.assignedElements().length)\n      return;\n    const currentRailRule = getOrInsertCSSRule(\n      this.shadowRoot,\n      \"#current-rail\"\n    );\n    const currentBoxRule = getOrInsertCSSRule(\n      this.shadowRoot,\n      '[part~=\"current-box\"]'\n    );\n    const rects = __privateMethod11(this, _getElementRects, getElementRects_fn).call(this, __privateGet25(this, _currentBox));\n    const boxPos = __privateMethod11(this, _getBoxPosition, getBoxPosition_fn).call(this, rects, this.range.valueAsNumber);\n    const boxShift = __privateMethod11(this, _getBoxShiftPosition, getBoxShiftPosition_fn).call(this, rects, this.range.valueAsNumber);\n    currentRailRule.style.transform = `translateX(${boxPos})`;\n    currentRailRule.style.setProperty(\"--_range-width\", `${rects.range.width}`);\n    currentBoxRule.style.setProperty(\"--_box-shift\", `${boxShift}`);\n    currentBoxRule.style.setProperty(\"--_box-width\", `${rects.box.width}px`);\n    currentBoxRule.style.setProperty(\"visibility\", \"initial\");\n  }\n  handleEvent(evt) {\n    super.handleEvent(evt);\n    switch (evt.type) {\n      case \"input\":\n        __privateMethod11(this, _seekRequest, seekRequest_fn).call(this);\n        break;\n      case \"pointermove\":\n        __privateMethod11(this, _handlePointerMove3, handlePointerMove_fn3).call(this, evt);\n        break;\n      case \"pointerup\":\n      case \"pointerleave\":\n        __privateMethod11(this, _previewRequest, previewRequest_fn).call(this, null);\n        break;\n      case \"transitionstart\":\n        if (containsComposedNode(evt.target, this)) {\n          setTimeout(() => __privateMethod11(this, _toggleRangeAnimation, toggleRangeAnimation_fn).call(this), 0);\n        }\n        break;\n    }\n  }\n};\n_rootNode = /* @__PURE__ */ new WeakMap();\n_animation = /* @__PURE__ */ new WeakMap();\n_boxes = /* @__PURE__ */ new WeakMap();\n_previewTime = /* @__PURE__ */ new WeakMap();\n_previewBox = /* @__PURE__ */ new WeakMap();\n_currentBox = /* @__PURE__ */ new WeakMap();\n_boxPaddingLeft = /* @__PURE__ */ new WeakMap();\n_boxPaddingRight = /* @__PURE__ */ new WeakMap();\n_mediaChaptersCues = /* @__PURE__ */ new WeakMap();\n_toggleRangeAnimation = /* @__PURE__ */ new WeakSet();\ntoggleRangeAnimation_fn = function() {\n  if (__privateMethod11(this, _shouldRangeAnimate, shouldRangeAnimate_fn).call(this)) {\n    __privateGet25(this, _animation).start();\n  } else {\n    __privateGet25(this, _animation).stop();\n  }\n};\n_shouldRangeAnimate = /* @__PURE__ */ new WeakSet();\nshouldRangeAnimate_fn = function() {\n  return this.isConnected && !this.mediaPaused && !this.mediaLoading && !this.mediaEnded && this.mediaSeekableEnd > 0 && isElementVisible(this);\n};\n_updateRange = /* @__PURE__ */ new WeakMap();\n_getElementRects = /* @__PURE__ */ new WeakSet();\ngetElementRects_fn = function(box) {\n  var _a3;\n  const bounds = (_a3 = this.getAttribute(\"bounds\") ? closestComposedNode(this, `#${this.getAttribute(\"bounds\")}`) : this.parentElement) != null ? _a3 : this;\n  const boundsRect = bounds.getBoundingClientRect();\n  const rangeRect = this.range.getBoundingClientRect();\n  const width = box.offsetWidth;\n  const min = -(rangeRect.left - boundsRect.left - width / 2);\n  const max = boundsRect.right - rangeRect.left - width / 2;\n  return {\n    box: { width, min, max },\n    bounds: boundsRect,\n    range: rangeRect\n  };\n};\n_getBoxPosition = /* @__PURE__ */ new WeakSet();\ngetBoxPosition_fn = function(rects, ratio) {\n  let position = `${ratio * 100}%`;\n  const { width, min, max } = rects.box;\n  if (!width)\n    return position;\n  if (!Number.isNaN(min)) {\n    const pad = `var(--media-box-padding-left)`;\n    const minPos = `calc(1 / var(--_range-width) * 100 * ${min}% + ${pad})`;\n    position = `max(${minPos}, ${position})`;\n  }\n  if (!Number.isNaN(max)) {\n    const pad = `var(--media-box-padding-right)`;\n    const maxPos = `calc(1 / var(--_range-width) * 100 * ${max}% - ${pad})`;\n    position = `min(${position}, ${maxPos})`;\n  }\n  return position;\n};\n_getBoxShiftPosition = /* @__PURE__ */ new WeakSet();\ngetBoxShiftPosition_fn = function(rects, ratio) {\n  const { width, min, max } = rects.box;\n  const pointerX = ratio * rects.range.width;\n  if (pointerX < min + __privateGet25(this, _boxPaddingLeft)) {\n    const offset = rects.range.left - rects.bounds.left - __privateGet25(this, _boxPaddingLeft);\n    return `${pointerX - width / 2 + offset}px`;\n  }\n  if (pointerX > max - __privateGet25(this, _boxPaddingRight)) {\n    const offset = rects.bounds.right - rects.range.right - __privateGet25(this, _boxPaddingRight);\n    return `${pointerX + width / 2 - offset - rects.range.width}px`;\n  }\n  return 0;\n};\n_handlePointerMove3 = /* @__PURE__ */ new WeakSet();\nhandlePointerMove_fn3 = function(evt) {\n  const isOverBoxes = [...__privateGet25(this, _boxes)].some(\n    (b4) => evt.composedPath().includes(b4)\n  );\n  if (!this.dragging && (isOverBoxes || !evt.composedPath().includes(this))) {\n    __privateMethod11(this, _previewRequest, previewRequest_fn).call(this, null);\n    return;\n  }\n  const duration = this.mediaSeekableEnd;\n  if (!duration)\n    return;\n  const previewRailRule = getOrInsertCSSRule(\n    this.shadowRoot,\n    \"#preview-rail\"\n  );\n  const previewBoxRule = getOrInsertCSSRule(\n    this.shadowRoot,\n    '[part~=\"preview-box\"]'\n  );\n  const rects = __privateMethod11(this, _getElementRects, getElementRects_fn).call(this, __privateGet25(this, _previewBox));\n  let pointerRatio = (evt.clientX - rects.range.left) / rects.range.width;\n  pointerRatio = Math.max(0, Math.min(1, pointerRatio));\n  const boxPos = __privateMethod11(this, _getBoxPosition, getBoxPosition_fn).call(this, rects, pointerRatio);\n  const boxShift = __privateMethod11(this, _getBoxShiftPosition, getBoxShiftPosition_fn).call(this, rects, pointerRatio);\n  previewRailRule.style.transform = `translateX(${boxPos})`;\n  previewRailRule.style.setProperty(\"--_range-width\", `${rects.range.width}`);\n  previewBoxRule.style.setProperty(\"--_box-shift\", `${boxShift}`);\n  previewBoxRule.style.setProperty(\"--_box-width\", `${rects.box.width}px`);\n  const diff = Math.round(__privateGet25(this, _previewTime)) - Math.round(pointerRatio * duration);\n  if (Math.abs(diff) < 1 && pointerRatio > 0.01 && pointerRatio < 0.99)\n    return;\n  __privateSet22(this, _previewTime, pointerRatio * duration);\n  __privateMethod11(this, _previewRequest, previewRequest_fn).call(this, __privateGet25(this, _previewTime));\n};\n_previewRequest = /* @__PURE__ */ new WeakSet();\npreviewRequest_fn = function(detail) {\n  this.dispatchEvent(\n    new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_PREVIEW_REQUEST, {\n      composed: true,\n      bubbles: true,\n      detail\n    })\n  );\n};\n_seekRequest = /* @__PURE__ */ new WeakSet();\nseekRequest_fn = function() {\n  __privateGet25(this, _animation).stop();\n  const detail = calcTimeFromRangeValue(this);\n  this.dispatchEvent(\n    new GlobalThis.CustomEvent(MediaUIEvents.MEDIA_SEEK_REQUEST, {\n      composed: true,\n      bubbles: true,\n      detail\n    })\n  );\n};\nif (!GlobalThis.customElements.get(\"media-time-range\")) {\n  GlobalThis.customElements.define(\"media-time-range\", MediaTimeRange);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-volume-range.js\nvar DEFAULT_VOLUME = 1;\nvar toVolume = (el) => {\n  if (el.mediaMuted)\n    return 0;\n  return el.mediaVolume;\n};\nvar formatAsPercentString = ({ value }) => `${Math.round(value * 100)}%`;\nvar MediaVolumeRange = class extends MediaChromeRange {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_VOLUME,\n      MediaUIAttributes.MEDIA_MUTED,\n      MediaUIAttributes.MEDIA_VOLUME_UNAVAILABLE\n    ];\n  }\n  constructor() {\n    super();\n    this.range.addEventListener(\"input\", () => {\n      const detail = this.range.value;\n      const evt = new GlobalThis.CustomEvent(\n        MediaUIEvents.MEDIA_VOLUME_REQUEST,\n        {\n          composed: true,\n          bubbles: true,\n          detail\n        }\n      );\n      this.dispatchEvent(evt);\n    });\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.range.setAttribute(\"aria-label\", nouns.VOLUME());\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_VOLUME || attrName === MediaUIAttributes.MEDIA_MUTED) {\n      this.range.valueAsNumber = toVolume(this);\n      this.range.setAttribute(\n        \"aria-valuetext\",\n        formatAsPercentString(this.range)\n      );\n      this.updateBar();\n    }\n  }\n  /**\n   * @type {number}\n   */\n  get mediaVolume() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_VOLUME, DEFAULT_VOLUME);\n  }\n  set mediaVolume(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_VOLUME, value);\n  }\n  /**\n   * @type {boolean} Is the media currently muted\n   */\n  get mediaMuted() {\n    return getBooleanAttr(this, MediaUIAttributes.MEDIA_MUTED);\n  }\n  set mediaMuted(value) {\n    setBooleanAttr(this, MediaUIAttributes.MEDIA_MUTED, value);\n  }\n  /**\n   * @type {string | undefined} The volume unavailability state\n   */\n  get mediaVolumeUnavailable() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_VOLUME_UNAVAILABLE);\n  }\n  set mediaVolumeUnavailable(value) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_VOLUME_UNAVAILABLE, value);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-volume-range\")) {\n  GlobalThis.customElements.define(\"media-volume-range\", MediaVolumeRange);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-chrome-listbox.js\nvar __accessCheck26 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet26 = (obj, member, getter) => {\n  __accessCheck26(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd26 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet23 = (obj, member, value, setter) => {\n  __accessCheck26(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod12 = (obj, member, method) => {\n  __accessCheck26(obj, member, \"access private method\");\n  return method;\n};\nvar _mediaController9;\nvar _keysSoFar2;\nvar _clearKeysTimeout2;\nvar _metaPressed;\nvar _clickListener2;\nvar _handleKeyListener;\nvar handleKeyListener_fn;\nvar _keyupListener2;\nvar _keydownListener2;\nvar _updateLayoutStyle2;\nvar updateLayoutStyle_fn2;\nvar _getOption;\nvar getOption_fn;\nvar _selectOption;\nvar selectOption_fn;\nvar _searchOption;\nvar searchOption_fn;\nvar _clearKeysOnDelay;\nvar clearKeysOnDelay_fn;\nvar checkIcon = (\n  /*html*/\n  `\n<svg aria-hidden=\"true\" viewBox=\"0 1 24 24\" part=\"select-indicator indicator\">\n  <path d=\"m10 15.17 9.193-9.191 1.414 1.414-10.606 10.606-6.364-6.364 1.414-1.414 4.95 4.95Z\"/>\n</svg>`\n);\nfunction createOption(text, value, selected) {\n  const option = Document2.createElement(\"media-chrome-option\");\n  option.part.add(\"option\");\n  option.value = value;\n  option.selected = selected;\n  const label = Document2.createElement(\"span\");\n  label.textContent = text;\n  option.append(label);\n  return option;\n}\nfunction createIndicator2(el, name) {\n  let customIndicator = el.querySelector(`:scope > [slot=\"${name}\"]`);\n  if ((customIndicator == null ? void 0 : customIndicator.nodeName) == \"SLOT\")\n    customIndicator = customIndicator.assignedElements({ flatten: true })[0];\n  if (customIndicator) {\n    customIndicator = customIndicator.cloneNode(true);\n    customIndicator.removeAttribute(\"slot\");\n    return customIndicator;\n  }\n  let fallbackIndicator = el.shadowRoot.querySelector(`[name=\"${name}\"] > svg`);\n  return fallbackIndicator.cloneNode(true);\n}\nvar template17 = Document2.createElement(\"template\");\ntemplate17.innerHTML = /*html*/\n`\n<style>\n  :host {\n    font: var(--media-font,\n      var(--media-font-weight, normal)\n      var(--media-font-size, 15px) /\n      var(--media-text-content-height, var(--media-control-height, 24px))\n      var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n    color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n    background: var(--media-listbox-background, var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .8))));\n    border-radius: var(--media-listbox-border-radius);\n    display: inline-flex;\n    flex-direction: column;\n    position: relative;\n    box-sizing: border-box;\n  }\n\n  ::slotted([slot=\"header\"]) {\n    padding: .4em 1.4em;\n    border-bottom: 1px solid rgb(255 255 255 / .25);\n  }\n\n  #container {\n    gap: var(--media-listbox-gap);\n    display: flex;\n    flex-direction: var(--media-listbox-flex-direction, column);\n    overflow: hidden auto;\n    padding-block: .5em;\n  }\n\n  media-chrome-option {\n    padding-inline: .7em 1.4em;\n  }\n\n  media-chrome-option > span {\n    margin-inline: .5ch;\n  }\n\n  [part~=\"indicator\"] {\n    fill: var(--media-option-indicator-fill, var(--media-icon-color, var(--media-primary-color, rgb(238 238 238))));\n    height: var(--media-option-indicator-height, 1.25em);\n    vertical-align: var(--media-option-indicator-vertical-align, text-top);\n  }\n\n  [part~=\"select-indicator\"] {\n    display: var(--media-option-select-indicator-display);\n    visibility: hidden;\n  }\n\n  [aria-selected=\"true\"] > [part~=\"select-indicator\"] {\n    visibility: visible;\n  }\n</style>\n<style id=\"layout-row\" media=\"width:0\">\n\n  ::slotted([slot=\"header\"]) {\n    padding: .4em .5em;\n  }\n\n  #container {\n    gap: var(--media-listbox-gap, .25em);\n    flex-direction: var(--media-listbox-flex-direction, row);\n    padding-inline: .5em;\n  }\n\n  media-chrome-option {\n    padding: .3em .24em;\n  }\n\n  media-chrome-option[aria-selected=\"true\"] {\n    background: var(--media-option-selected-background, rgb(255 255 255 / .2));\n  }\n\n  [part~=\"select-indicator\"] {\n    display: var(--media-option-select-indicator-display, none);\n  }\n</style>\n<slot name=\"header\"></slot>\n<slot id=\"container\"></slot>\n<slot name=\"select-indicator\" hidden>${checkIcon}</slot>\n`;\nvar MediaChromeListbox = class extends GlobalThis.HTMLElement {\n  constructor(options = {}) {\n    super();\n    __privateAdd26(this, _handleKeyListener);\n    __privateAdd26(this, _updateLayoutStyle2);\n    __privateAdd26(this, _getOption);\n    __privateAdd26(this, _selectOption);\n    __privateAdd26(this, _searchOption);\n    __privateAdd26(this, _clearKeysOnDelay);\n    __privateAdd26(this, _mediaController9, void 0);\n    __privateAdd26(this, _keysSoFar2, \"\");\n    __privateAdd26(this, _clearKeysTimeout2, null);\n    __privateAdd26(this, _metaPressed, false);\n    __privateAdd26(this, _clickListener2, (e) => {\n      this.handleClick(e);\n    });\n    __privateAdd26(this, _keyupListener2, (e) => {\n      const { key } = e;\n      if (key === \"Escape\") {\n        this.removeEventListener(\"keyup\", __privateGet26(this, _keyupListener2));\n        return;\n      }\n      if (key === \"Meta\") {\n        __privateSet23(this, _metaPressed, false);\n        return;\n      }\n      __privateMethod12(this, _handleKeyListener, handleKeyListener_fn).call(this, e);\n    });\n    __privateAdd26(this, _keydownListener2, (e) => {\n      const { key, altKey } = e;\n      if (altKey) {\n        this.removeEventListener(\"keyup\", __privateGet26(this, _keyupListener2));\n        return;\n      }\n      if (key === \"Meta\") {\n        __privateSet23(this, _metaPressed, true);\n        return;\n      }\n      if (this.keysUsed.includes(key)) {\n        e.preventDefault();\n      }\n      if (__privateGet26(this, _metaPressed) && this.keysUsed.includes(key)) {\n        __privateMethod12(this, _handleKeyListener, handleKeyListener_fn).call(this, e);\n        return;\n      }\n      this.addEventListener(\"keyup\", __privateGet26(this, _keyupListener2), { once: true });\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.nativeEl = template17.content.cloneNode(true);\n      if (options.slotTemplate) {\n        this.nativeEl.append(options.slotTemplate.content.cloneNode(true));\n      }\n      this.shadowRoot.append(this.nativeEl);\n    }\n    this.container = this.shadowRoot.querySelector(\"#container\");\n    this.container.addEventListener(\"slotchange\", (event) => {\n      for (let node of event.target.assignedNodes({ flatten: true })) {\n        if (node.nodeType === 3 && node.textContent.trim() === \"\") {\n          node.remove();\n        }\n      }\n    });\n  }\n  static get observedAttributes() {\n    return [\"disabled\", \"style\", MediaStateReceiverAttributes.MEDIA_CONTROLLER];\n  }\n  static formatOptionText(text) {\n    return text;\n  }\n  formatOptionText(text, data) {\n    return this.constructor.formatOptionText(text, data);\n  }\n  get options() {\n    var _a3;\n    let options = this.querySelectorAll(\"media-chrome-option\");\n    if (!options.length) {\n      options = (_a3 = this.container) == null ? void 0 : _a3.querySelectorAll(\"media-chrome-option\");\n    }\n    return Array.from(options);\n  }\n  get selectedOptions() {\n    return this.options.filter((option) => option.selected);\n  }\n  get value() {\n    var _a3, _b;\n    return (_b = (_a3 = this.selectedOptions[0]) == null ? void 0 : _a3.value) != null ? _b : \"\";\n  }\n  set value(newValue) {\n    const option = this.options.find((option2) => option2.value === newValue);\n    if (!option)\n      return;\n    __privateMethod12(this, _selectOption, selectOption_fn).call(this, option);\n  }\n  focus() {\n    var _a3;\n    (_a3 = this.selectedOptions[0]) == null ? void 0 : _a3.focus();\n  }\n  enable() {\n    this.addEventListener(\"click\", __privateGet26(this, _clickListener2));\n    this.addEventListener(\"keydown\", __privateGet26(this, _keydownListener2));\n  }\n  disable() {\n    this.removeEventListener(\"click\", __privateGet26(this, _clickListener2));\n    this.removeEventListener(\"keyup\", __privateGet26(this, _keyupListener2));\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === \"style\" && newValue !== oldValue) {\n      __privateMethod12(this, _updateLayoutStyle2, updateLayoutStyle_fn2).call(this);\n    } else if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet26(this, _mediaController9)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet23(this, _mediaController9, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet23(this, _mediaController9, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet26(this, _mediaController9)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n      }\n    } else if (attrName === \"disabled\" && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    __privateMethod12(this, _updateLayoutStyle2, updateLayoutStyle_fn2).call(this);\n    if (!this.hasAttribute(\"disabled\")) {\n      this.enable();\n    }\n    if (!this.hasAttribute(\"role\")) {\n      this.setAttribute(\"role\", \"listbox\");\n    }\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet23(\n        this,\n        _mediaController9,\n        // @ts-ignore\n        (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId)\n      );\n      (_c = (_b = __privateGet26(this, _mediaController9)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    this.disable();\n    (_b = (_a3 = __privateGet26(this, _mediaController9)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet23(this, _mediaController9, null);\n  }\n  get keysUsed() {\n    return [\"Enter\", \" \", \"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"];\n  }\n  handleSelection(e, toggle) {\n    const option = __privateMethod12(this, _getOption, getOption_fn).call(this, e);\n    if (!option)\n      return;\n    __privateMethod12(this, _selectOption, selectOption_fn).call(this, option, toggle);\n  }\n  handleMovement(e) {\n    const { key } = e;\n    const els = this.options;\n    let currentOption = __privateMethod12(this, _getOption, getOption_fn).call(this, e);\n    if (!currentOption) {\n      currentOption = els.filter(\n        (el) => el.getAttribute(\"tabindex\") === \"0\"\n      )[0];\n    }\n    let nextOption;\n    switch (key) {\n      case \"ArrowDown\":\n        nextOption = currentOption.nextElementSibling;\n        if (nextOption == null ? void 0 : nextOption.hasAttribute(\"disabled\")) {\n          nextOption = nextOption.nextElementSibling;\n        }\n        break;\n      case \"ArrowUp\":\n        nextOption = currentOption.previousElementSibling;\n        if (nextOption == null ? void 0 : nextOption.hasAttribute(\"disabled\")) {\n          nextOption = nextOption.previousElementSibling;\n        }\n        break;\n      case \"Home\":\n        nextOption = els[0];\n        break;\n      case \"End\":\n        nextOption = els[els.length - 1];\n        break;\n      default:\n        nextOption = __privateMethod12(this, _searchOption, searchOption_fn).call(this, key);\n        break;\n    }\n    if (nextOption) {\n      els.forEach((el) => el.setAttribute(\"tabindex\", \"-1\"));\n      nextOption.setAttribute(\"tabindex\", \"0\");\n      nextOption.focus();\n    }\n  }\n  handleClick(e) {\n    const option = __privateMethod12(this, _getOption, getOption_fn).call(this, e);\n    if (!option || option.hasAttribute(\"disabled\"))\n      return;\n    this.options.forEach((el) => el.setAttribute(\"tabindex\", \"-1\"));\n    option.setAttribute(\"tabindex\", \"0\");\n    this.handleSelection(\n      e,\n      this.hasAttribute(\"aria-multiselectable\") && this.getAttribute(\"aria-multiselectable\") === \"true\"\n    );\n  }\n};\n_mediaController9 = /* @__PURE__ */ new WeakMap();\n_keysSoFar2 = /* @__PURE__ */ new WeakMap();\n_clearKeysTimeout2 = /* @__PURE__ */ new WeakMap();\n_metaPressed = /* @__PURE__ */ new WeakMap();\n_clickListener2 = /* @__PURE__ */ new WeakMap();\n_handleKeyListener = /* @__PURE__ */ new WeakSet();\nhandleKeyListener_fn = function(e) {\n  const { key } = e;\n  if (key === \"Enter\" || key === \" \") {\n    this.handleSelection(\n      e,\n      this.hasAttribute(\"aria-multiselectable\") && this.getAttribute(\"aria-multiselectable\") === \"true\"\n    );\n  } else {\n    this.handleMovement(e);\n  }\n};\n_keyupListener2 = /* @__PURE__ */ new WeakMap();\n_keydownListener2 = /* @__PURE__ */ new WeakMap();\n_updateLayoutStyle2 = /* @__PURE__ */ new WeakSet();\nupdateLayoutStyle_fn2 = function() {\n  var _a3;\n  const layoutRowStyle = this.shadowRoot.querySelector(\"#layout-row\");\n  const isLayoutRow = ((_a3 = getComputedStyle(this).getPropertyValue(\"--media-listbox-layout\")) == null ? void 0 : _a3.trim()) === \"row\";\n  layoutRowStyle.setAttribute(\"media\", isLayoutRow ? \"\" : \"width:0\");\n};\n_getOption = /* @__PURE__ */ new WeakSet();\ngetOption_fn = function(e) {\n  const composedPath = e.composedPath();\n  const index = composedPath.findIndex(\n    (el) => el.nodeName === \"MEDIA-CHROME-OPTION\"\n  );\n  return composedPath[index];\n};\n_selectOption = /* @__PURE__ */ new WeakSet();\nselectOption_fn = function(option, toggle) {\n  const oldSelectedOptions = [...this.selectedOptions];\n  if (!this.hasAttribute(\"aria-multiselectable\") || this.getAttribute(\"aria-multiselectable\") !== \"true\") {\n    this.options.forEach((el) => el.selected = false);\n  }\n  if (toggle) {\n    option.selected = !option.selected;\n  } else {\n    option.selected = true;\n  }\n  if (this.selectedOptions.some((opt, i2) => opt != oldSelectedOptions[i2])) {\n    this.dispatchEvent(\n      new Event(\"change\", { bubbles: true, composed: true })\n    );\n  }\n};\n_searchOption = /* @__PURE__ */ new WeakSet();\nsearchOption_fn = function(key) {\n  __privateMethod12(this, _clearKeysOnDelay, clearKeysOnDelay_fn).call(this);\n  const els = this.options;\n  const activeIndex = els.findIndex(\n    (el) => el.getAttribute(\"tabindex\") === \"0\"\n  );\n  __privateSet23(this, _keysSoFar2, __privateGet26(this, _keysSoFar2) + key);\n  const repeatedKey = __privateGet26(this, _keysSoFar2).split(\"\").every((k3) => k3 === key);\n  const after = els.slice(activeIndex + (repeatedKey ? 1 : 0)).filter((el) => el.textContent.toLowerCase().startsWith(__privateGet26(this, _keysSoFar2)));\n  const before = els.slice(0, activeIndex - (repeatedKey ? 1 : 0)).filter((el) => el.textContent.toLowerCase().startsWith(__privateGet26(this, _keysSoFar2)));\n  let afterRepeated = [];\n  let beforeRepeated = [];\n  if (repeatedKey) {\n    afterRepeated = els.slice(activeIndex + (repeatedKey ? 1 : 0)).filter((el) => el.textContent.startsWith(key));\n    beforeRepeated = els.slice(0, activeIndex - (repeatedKey ? 1 : 0)).filter((el) => el.textContent.startsWith(key));\n  }\n  const returns = [...after, ...before, ...afterRepeated, ...beforeRepeated];\n  return returns[0];\n};\n_clearKeysOnDelay = /* @__PURE__ */ new WeakSet();\nclearKeysOnDelay_fn = function() {\n  clearTimeout(__privateGet26(this, _clearKeysTimeout2));\n  __privateSet23(this, _clearKeysTimeout2, null);\n  __privateSet23(this, _clearKeysTimeout2, setTimeout(() => {\n    __privateSet23(this, _keysSoFar2, \"\");\n    __privateSet23(this, _clearKeysTimeout2, null);\n  }, 500));\n};\nif (!GlobalThis.customElements.get(\"media-chrome-listbox\")) {\n  GlobalThis.customElements.define(\"media-chrome-listbox\", MediaChromeListbox);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-chrome-option.js\nvar __accessCheck27 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet27 = (obj, member, getter) => {\n  __accessCheck27(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd27 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet24 = (obj, member, value, setter) => {\n  __accessCheck27(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod13 = (obj, member, method) => {\n  __accessCheck27(obj, member, \"access private method\");\n  return method;\n};\nvar _dirty2;\nvar _ownerElement2;\nvar _reset2;\nvar reset_fn2;\nvar template18 = Document2.createElement(\"template\");\ntemplate18.innerHTML = /*html*/\n`\n<style>\n  :host {\n    cursor: pointer;\n    display: block;\n    line-height: revert;\n    white-space: nowrap;\n    white-space-collapse: collapse;\n    text-wrap: nowrap;\n    padding: .4em .5em;\n    transition: var(--media-option-transition);\n    outline: var(--media-option-outline, 0);\n    outline-offset: var(--media-option-outline-offset, -1px);\n  }\n\n  :host(:focus-visible) {\n    box-shadow: var(--media-option-focus-shadow, inset 0 0 0 2px rgb(27 127 204 / .9));\n    outline: var(--media-option-hover-outline, 0);\n    outline-offset: var(--media-option-hover-outline-offset,  var(--media-option-outline-offset, -1px));\n  }\n\n  :host(:hover) {\n    cursor: pointer;\n    background: var(--media-option-hover-background, rgb(82 82 122 / .8));\n    outline: var(--media-option-hover-outline);\n    outline-offset: var(--media-option-hover-outline-offset,  var(--media-option-outline-offset, -1px));\n  }\n\n  :host([aria-selected=\"true\"]) {\n    background: var(--media-option-selected-background);\n  }\n\n  :host([disabled]) {\n    pointer-events: none;\n    color: rgba(255, 255, 255, .3);\n  }\n</style>\n<slot></slot>\n`;\nvar Attributes14 = {\n  VALUE: \"value\",\n  SELECTED: \"selected\",\n  DISABLED: \"disabled\"\n};\nvar MediaChromeOption = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd27(this, _reset2);\n    __privateAdd27(this, _dirty2, false);\n    __privateAdd27(this, _ownerElement2, void 0);\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template18.content.cloneNode(true));\n    }\n  }\n  static get observedAttributes() {\n    return [Attributes14.DISABLED, Attributes14.SELECTED, Attributes14.VALUE];\n  }\n  get value() {\n    var _a3;\n    return (_a3 = this.getAttribute(Attributes14.VALUE)) != null ? _a3 : this.text;\n  }\n  set value(val) {\n    this.setAttribute(Attributes14.VALUE, val);\n  }\n  get text() {\n    var _a3;\n    return ((_a3 = this.textContent) != null ? _a3 : \"\").trim();\n  }\n  get selected() {\n    return this.getAttribute(\"aria-selected\") === \"true\";\n  }\n  set selected(value) {\n    __privateSet24(this, _dirty2, true);\n    this.setAttribute(\"aria-selected\", value ? \"true\" : \"false\");\n    if (value) {\n      this.part.add(\"option-selected\");\n    } else {\n      this.part.remove(\"option-selected\");\n    }\n  }\n  enable() {\n    if (!this.hasAttribute(\"tabindex\")) {\n      this.setAttribute(\"tabindex\", -1);\n    }\n    if (!this.hasAttribute(\"aria-selected\")) {\n      this.setAttribute(\"aria-selected\", \"false\");\n    }\n  }\n  disable() {\n    this.removeAttribute(\"tabindex\");\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === Attributes14.SELECTED && !__privateGet27(this, _dirty2)) {\n      this.setAttribute(\"aria-selected\", newValue != null ? \"true\" : \"false\");\n    } else if (attrName === Attributes14.DISABLED && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n  }\n  connectedCallback() {\n    if (!this.hasAttribute(Attributes14.DISABLED)) {\n      this.enable();\n    }\n    this.setAttribute(\"role\", \"option\");\n    __privateSet24(this, _ownerElement2, closestOptionsContainer(this, this.parentNode));\n    __privateMethod13(this, _reset2, reset_fn2).call(this);\n  }\n  disconnectedCallback() {\n    this.disable();\n    __privateMethod13(this, _reset2, reset_fn2).call(this);\n    __privateSet24(this, _ownerElement2, null);\n  }\n  handleClick() {\n  }\n};\n_dirty2 = /* @__PURE__ */ new WeakMap();\n_ownerElement2 = /* @__PURE__ */ new WeakMap();\n_reset2 = /* @__PURE__ */ new WeakSet();\nreset_fn2 = function() {\n  var _a3;\n  const options = (_a3 = __privateGet27(this, _ownerElement2)) == null ? void 0 : _a3.options;\n  if (!options)\n    return;\n  let selectedOption = options.filter((option) => option.getAttribute(\"aria-selected\") === \"true\").pop();\n  if (!selectedOption)\n    selectedOption = options[0];\n  if (__privateGet27(this, _ownerElement2).getAttribute(\"aria-multiselectable\") !== \"true\") {\n    options.forEach((option) => {\n      option.setAttribute(\"tabindex\", \"-1\");\n      option.setAttribute(\"aria-selected\", \"false\");\n    });\n  }\n  selectedOption == null ? void 0 : selectedOption.setAttribute(\"tabindex\", \"0\");\n  selectedOption == null ? void 0 : selectedOption.setAttribute(\"aria-selected\", \"true\");\n};\nfunction closestOptionsContainer(childNode, parentNode) {\n  if (!childNode)\n    return null;\n  const { host } = childNode.getRootNode();\n  if (!parentNode && host)\n    return closestOptionsContainer(childNode, host);\n  if (parentNode == null ? void 0 : parentNode.options)\n    return parentNode;\n  return closestOptionsContainer(parentNode, parentNode == null ? void 0 : parentNode.parentNode);\n}\nif (!GlobalThis.customElements.get(\"media-chrome-option\")) {\n  GlobalThis.customElements.define(\"media-chrome-option\", MediaChromeOption);\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-chrome-selectmenu.js\nvar __accessCheck28 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet28 = (obj, member, getter) => {\n  __accessCheck28(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd28 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet25 = (obj, member, value, setter) => {\n  __accessCheck28(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod14 = (obj, member, method) => {\n  __accessCheck28(obj, member, \"access private method\");\n  return method;\n};\nvar _mediaController10;\nvar _button;\nvar _buttonSlot;\nvar _listbox;\nvar _listboxSlot;\nvar _keyupListener3;\nvar _keydownListener3;\nvar _documentClickHandler;\nvar _clickHandler;\nvar _handleOptionChange;\nvar _toggle;\nvar toggle_fn;\nvar _show;\nvar show_fn;\nvar _hide;\nvar hide_fn;\nvar _updateMenuPosition;\nvar template19 = Document2.createElement(\"template\");\ntemplate19.innerHTML = /*html*/\n`\n  <style>\n  :host {\n    font: var(--media-font,\n      var(--media-font-weight, normal)\n      var(--media-font-size, 15px) /\n      var(--media-text-content-height, var(--media-control-height, 24px))\n      var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n    color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n    display: inline-flex;\n    position: relative;\n    flex-shrink: .5;\n  }\n\n  [name=listbox]::slotted(*),\n  [part=listbox] {\n    position: absolute;\n    bottom: 100%;\n    max-height: 300px;\n    transition: var(--media-selectmenu-transition-in,\n      visibility 0s, transform .15s ease-out, opacity .15s ease-out);\n    transform: var(--media-listbox-transform-in, translateY(0) scale(1));\n    visibility: visible;\n    opacity: 1;\n  }\n\n  [name=listbox][hidden]::slotted(*),\n  [hidden] [part=listbox] {\n    transition: var(--media-selectmenu-transition-out,\n      visibility .15s ease-out, transform .15s ease-out, opacity .15s ease-out);\n    transform: var(--media-listbox-transform-out, translateY(2px) scale(.99));\n    visibility: hidden;\n    opacity: 0;\n    pointer-events: none;\n  }\n\n  slot[name=listbox][hidden] {\n    display: block;\n  }\n  </style>\n\n  <slot name=\"button\">\n    <media-chrome-button aria-haspopup=\"listbox\" part=\"button\">\n      <slot name=\"button-content\"></slot>\n    </media-chrome-button>\n  </slot>\n  <slot name=\"listbox\" hidden>\n    <media-chrome-listbox id=\"listbox\" part=\"listbox\">\n      <slot></slot>\n    </media-chrome-listbox>\n  </slot>\n`;\nvar MediaChromeSelectMenu = class extends GlobalThis.HTMLElement {\n  constructor() {\n    var _a3;\n    super();\n    __privateAdd28(this, _toggle);\n    __privateAdd28(this, _show);\n    __privateAdd28(this, _hide);\n    __privateAdd28(this, _mediaController10, void 0);\n    __privateAdd28(this, _button, void 0);\n    __privateAdd28(this, _buttonSlot, void 0);\n    __privateAdd28(this, _listbox, void 0);\n    __privateAdd28(this, _listboxSlot, void 0);\n    __privateAdd28(this, _keyupListener3, (e) => {\n      const { key } = e;\n      if (!this.keysUsed.includes(key)) {\n        this.removeEventListener(\"keyup\", __privateGet28(this, _keyupListener3));\n        return;\n      }\n      const isButton = e.composedPath().includes(__privateGet28(this, _button));\n      if (isButton && (key === \"Enter\" || key === \" \")) {\n        __privateMethod14(this, _toggle, toggle_fn).call(this);\n      } else if (key === \"Escape\") {\n        __privateMethod14(this, _hide, hide_fn).call(this);\n      }\n    });\n    __privateAdd28(this, _keydownListener3, (e) => {\n      const { metaKey, altKey, key } = e;\n      if (metaKey || altKey || !this.keysUsed.includes(key)) {\n        this.removeEventListener(\"keyup\", __privateGet28(this, _keyupListener3));\n        return;\n      }\n      e.preventDefault();\n      this.addEventListener(\"keyup\", __privateGet28(this, _keyupListener3), { once: true });\n    });\n    __privateAdd28(this, _documentClickHandler, (e) => {\n      if (e.composedPath().includes(this))\n        return;\n      __privateMethod14(this, _hide, hide_fn).call(this);\n    });\n    __privateAdd28(this, _clickHandler, (e) => {\n      if (e.composedPath().includes(__privateGet28(this, _button))) {\n        __privateMethod14(this, _toggle, toggle_fn).call(this);\n      }\n    });\n    __privateAdd28(this, _handleOptionChange, () => {\n      __privateMethod14(this, _hide, hide_fn).call(this);\n    });\n    __privateAdd28(this, _updateMenuPosition, () => {\n      if (__privateGet28(this, _listbox).offsetWidth === 0)\n        return;\n      const listboxWidth = __privateGet28(this, _listbox).offsetWidth;\n      const buttonRect = __privateGet28(this, _button).getBoundingClientRect();\n      if (this.hasAttribute(\"mediacontroller\") || __privateGet28(this, _button).hasAttribute(\"mediacontroller\") || __privateGet28(this, _listbox).hasAttribute(\"mediacontroller\")) {\n        __privateGet28(this, _listbox).style.zIndex = \"1\";\n        __privateGet28(this, _listbox).style.bottom = \"unset\";\n        __privateGet28(this, _listbox).style.right = null;\n        __privateGet28(this, _listbox).style.left = \"0\";\n        __privateGet28(this, _listbox).style.top = `${buttonRect.height}px`;\n        return;\n      }\n      const bounds = getBoundsElement2(this);\n      const boundsRect = bounds.getBoundingClientRect();\n      const listboxRight = buttonRect.x + listboxWidth;\n      const position = Math.max(\n        buttonRect.right - listboxRight,\n        buttonRect.right - boundsRect.right\n      );\n      __privateGet28(this, _listbox).style.left = null;\n      __privateGet28(this, _listbox).style.right = `${position}px`;\n      __privateGet28(this, _listbox).style.maxHeight = `${boundsRect.height - buttonRect.height}px`;\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n      this.shadowRoot.appendChild(template19.content.cloneNode(true));\n    }\n    (_a3 = this.init) == null ? void 0 : _a3.call(this);\n    __privateSet25(this, _button, this.shadowRoot.querySelector(\"[part=button]\"));\n    __privateSet25(this, _listbox, this.shadowRoot.querySelector(\"[part=listbox]\"));\n    __privateSet25(this, _buttonSlot, this.shadowRoot.querySelector(\"slot[name=button]\"));\n    __privateGet28(this, _buttonSlot).addEventListener(\"slotchange\", () => {\n      const newButton = __privateGet28(this, _buttonSlot).assignedElements()[0];\n      if (!newButton)\n        return;\n      __privateSet25(this, _button, newButton);\n      __privateGet28(this, _button).preventClick = true;\n      const disabled = this.hasAttribute(\"disabled\") || __privateGet28(this, _button).hasAttribute(\"disabled\");\n      if (disabled) {\n        this.disable();\n      } else {\n        this.enable();\n        __privateGet28(this, _button).setAttribute(\"aria-haspopup\", \"listbox\");\n      }\n    });\n    __privateSet25(this, _listboxSlot, this.shadowRoot.querySelector(\"slot[name=listbox]\"));\n    __privateGet28(this, _listboxSlot).addEventListener(\"slotchange\", () => {\n      __privateSet25(this, _listbox, __privateGet28(this, _listboxSlot).assignedElements()[0] || __privateGet28(this, _listbox));\n    });\n  }\n  static get observedAttributes() {\n    return [\"disabled\", MediaStateReceiverAttributes.MEDIA_CONTROLLER];\n  }\n  enable() {\n    __privateGet28(this, _button).toggleAttribute(\"disabled\", false);\n    this.addEventListener(\"change\", __privateGet28(this, _handleOptionChange));\n    this.addEventListener(\"keydown\", __privateGet28(this, _keydownListener3));\n    this.addEventListener(\"click\", __privateGet28(this, _clickHandler));\n    Document2.addEventListener(\"click\", __privateGet28(this, _documentClickHandler));\n  }\n  disable() {\n    __privateGet28(this, _button).toggleAttribute(\"disabled\", true);\n    this.removeEventListener(\"change\", __privateGet28(this, _handleOptionChange));\n    this.removeEventListener(\"keydown\", __privateGet28(this, _keydownListener3));\n    this.removeEventListener(\"keyup\", __privateGet28(this, _keyupListener3));\n    this.removeEventListener(\"click\", __privateGet28(this, _clickHandler));\n    Document2.removeEventListener(\"click\", __privateGet28(this, _documentClickHandler));\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a3, _b, _c, _d, _e5;\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a3 = __privateGet28(this, _mediaController10)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n        __privateSet25(this, _mediaController10, null);\n        __privateGet28(this, _listbox).removeAttribute(\n          MediaStateReceiverAttributes.MEDIA_CONTROLLER\n        );\n      }\n      if (newValue && this.isConnected) {\n        __privateSet25(this, _mediaController10, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e5 = (_d = __privateGet28(this, _mediaController10)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e5.call(_d, this);\n        __privateGet28(this, _listbox).setAttribute(\n          MediaStateReceiverAttributes.MEDIA_CONTROLLER,\n          newValue\n        );\n      }\n    } else if (attrName === \"disabled\" && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n  }\n  connectedCallback() {\n    var _a3, _b, _c;\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n    style.setProperty(\n      \"display\",\n      `var(--media-control-display, var(--${this.localName}-display, inline-flex))`\n    );\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet25(this, _mediaController10, (_a3 = this.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId));\n      (_c = (_b = __privateGet28(this, _mediaController10)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n      __privateGet28(this, _listbox).setAttribute(\n        MediaStateReceiverAttributes.MEDIA_CONTROLLER,\n        mediaControllerId\n      );\n    }\n    if (!this.hasAttribute(\"disabled\")) {\n      this.enable();\n    }\n    if (!__privateGet28(this, _listboxSlot).hidden) {\n      observeResize(getBoundsElement2(this), __privateGet28(this, _updateMenuPosition));\n    }\n  }\n  disconnectedCallback() {\n    var _a3, _b;\n    unobserveResize(getBoundsElement2(this), __privateGet28(this, _updateMenuPosition));\n    this.disable();\n    (_b = (_a3 = __privateGet28(this, _mediaController10)) == null ? void 0 : _a3.unassociateElement) == null ? void 0 : _b.call(_a3, this);\n    __privateSet25(this, _mediaController10, null);\n    __privateGet28(this, _listbox).removeAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n  }\n  get keysUsed() {\n    return [\"Enter\", \"Escape\", \" \", \"ArrowUp\", \"ArrowDown\", \"f\", \"c\", \"k\", \"m\"];\n  }\n};\n_mediaController10 = /* @__PURE__ */ new WeakMap();\n_button = /* @__PURE__ */ new WeakMap();\n_buttonSlot = /* @__PURE__ */ new WeakMap();\n_listbox = /* @__PURE__ */ new WeakMap();\n_listboxSlot = /* @__PURE__ */ new WeakMap();\n_keyupListener3 = /* @__PURE__ */ new WeakMap();\n_keydownListener3 = /* @__PURE__ */ new WeakMap();\n_documentClickHandler = /* @__PURE__ */ new WeakMap();\n_clickHandler = /* @__PURE__ */ new WeakMap();\n_handleOptionChange = /* @__PURE__ */ new WeakMap();\n_toggle = /* @__PURE__ */ new WeakSet();\ntoggle_fn = function() {\n  if (__privateGet28(this, _listboxSlot).hidden) {\n    __privateMethod14(this, _show, show_fn).call(this);\n  } else {\n    __privateMethod14(this, _hide, hide_fn).call(this);\n  }\n};\n_show = /* @__PURE__ */ new WeakSet();\nshow_fn = function() {\n  if (!__privateGet28(this, _listboxSlot).hidden)\n    return;\n  __privateGet28(this, _listboxSlot).hidden = false;\n  __privateGet28(this, _button).setAttribute(\"aria-expanded\", \"true\");\n  __privateGet28(this, _updateMenuPosition).call(this);\n  __privateGet28(this, _listbox).focus();\n  observeResize(getBoundsElement2(this), __privateGet28(this, _updateMenuPosition));\n};\n_hide = /* @__PURE__ */ new WeakSet();\nhide_fn = function() {\n  if (__privateGet28(this, _listboxSlot).hidden)\n    return;\n  unobserveResize(getBoundsElement2(this), __privateGet28(this, _updateMenuPosition));\n  const activeElement = getActiveElement();\n  __privateGet28(this, _listboxSlot).hidden = true;\n  __privateGet28(this, _button).setAttribute(\"aria-expanded\", \"false\");\n  if (containsComposedNode(__privateGet28(this, _listbox), activeElement)) {\n    __privateGet28(this, _button).focus();\n  }\n};\n_updateMenuPosition = /* @__PURE__ */ new WeakMap();\nfunction getBoundsElement2(host) {\n  var _a3;\n  return (_a3 = host.getAttribute(\"bounds\") ? closestComposedNode(host, `#${host.getAttribute(\"bounds\")}`) : getMediaControllerElement(host) || host.parentElement) != null ? _a3 : host;\n}\nfunction getMediaControllerElement(host) {\n  var _a3;\n  const mediaControllerId = host.getAttribute(\n    MediaStateReceiverAttributes.MEDIA_CONTROLLER\n  );\n  if (mediaControllerId) {\n    return (_a3 = host.getRootNode()) == null ? void 0 : _a3.getElementById(mediaControllerId);\n  }\n  return closestComposedNode(host, \"media-controller\");\n}\nif (!GlobalThis.customElements.get(\"media-chrome-selectmenu\")) {\n  GlobalThis.customElements.define(\n    \"media-chrome-selectmenu\",\n    MediaChromeSelectMenu\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-captions-listbox.js\nvar __accessCheck29 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet29 = (obj, member, getter) => {\n  __accessCheck29(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd29 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet26 = (obj, member, value, setter) => {\n  __accessCheck29(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod15 = (obj, member, method) => {\n  __accessCheck29(obj, member, \"access private method\");\n  return method;\n};\nvar _prevState4;\nvar _render5;\nvar render_fn5;\nvar _onChange5;\nvar onChange_fn5;\nvar ccIcon2 = (\n  /*html*/\n  `\n<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\" part=\"captions-indicator indicator\">\n  <path d=\"M22.83 5.68a2.58 2.58 0 0 0-2.3-2.5c-3.62-.24-11.44-.24-15.06 0a2.58 2.58 0 0 0-2.3 2.5c-.23 4.21-.23 8.43 0 12.64a2.58 2.58 0 0 0 2.3 2.5c3.62.24 11.44.24 15.06 0a2.58 2.58 0 0 0 2.3-2.5c.23-4.21.23-8.43 0-12.64Zm-11.39 9.45a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.92 3.92 0 0 1 .92-2.77 3.18 3.18 0 0 1 2.43-1 2.94 2.94 0 0 1 2.13.78c.364.359.62.813.74 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.17 1.61 1.61 0 0 0-1.29.58 2.79 2.79 0 0 0-.5 1.89 3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.48 1.48 0 0 0 1-.37 2.1 2.1 0 0 0 .59-1.14l1.4.44a3.23 3.23 0 0 1-1.07 1.69Zm7.22 0a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.88 3.88 0 0 1 .93-2.77 3.14 3.14 0 0 1 2.42-1 3 3 0 0 1 2.16.82 2.8 2.8 0 0 1 .73 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.21 1.61 1.61 0 0 0-1.29.58A2.79 2.79 0 0 0 15 12a3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.44 1.44 0 0 0 1-.37 2.1 2.1 0 0 0 .6-1.15l1.4.44a3.17 3.17 0 0 1-1.1 1.7Z\"/>\n</svg>`\n);\nvar slotTemplate17 = Document2.createElement(\"template\");\nslotTemplate17.innerHTML = /*html*/\n`\n  <slot name=\"captions-indicator\" hidden>${ccIcon2}</slot>\n`;\nvar MediaCaptionsListbox = class extends MediaChromeListbox {\n  constructor() {\n    super({ slotTemplate: slotTemplate17 });\n    __privateAdd29(this, _render5);\n    __privateAdd29(this, _onChange5);\n    __privateAdd29(this, _prevState4, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      \"aria-multiselectable\",\n      MediaUIAttributes.MEDIA_SUBTITLES_LIST,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_LIST && oldValue !== newValue) {\n      __privateMethod15(this, _render5, render_fn5).call(this);\n    } else if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_SHOWING && oldValue !== newValue) {\n      this.value = newValue;\n    } else if (attrName === \"aria-multiselectable\") {\n      this.removeAttribute(\"aria-multiselectable\");\n      console.warn(\n        \"Captions List doesn't currently support multiple selections. You can enable multiple items via the media.textTracks API.\"\n      );\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod15(this, _onChange5, onChange_fn5));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod15(this, _onChange5, onChange_fn5));\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesList() {\n    return getSubtitlesListAttr4(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST);\n  }\n  set mediaSubtitlesList(list) {\n    setSubtitlesListAttr4(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST, list);\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesShowing() {\n    return getSubtitlesListAttr4(\n      this,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    );\n  }\n  set mediaSubtitlesShowing(list) {\n    setSubtitlesListAttr4(this, MediaUIAttributes.MEDIA_SUBTITLES_SHOWING, list);\n  }\n};\n_prevState4 = /* @__PURE__ */ new WeakMap();\n_render5 = /* @__PURE__ */ new WeakSet();\nrender_fn5 = function() {\n  var _a3;\n  if (__privateGet29(this, _prevState4) === JSON.stringify(this.mediaSubtitlesList))\n    return;\n  __privateSet26(this, _prevState4, JSON.stringify(this.mediaSubtitlesList));\n  const container = this.shadowRoot.querySelector(\"#container\");\n  container.textContent = \"\";\n  const isOff = !this.value;\n  const option = createOption(this.formatOptionText(\"Off\"), \"off\", isOff);\n  option.prepend(createIndicator2(this, \"select-indicator\"));\n  container.append(option);\n  const subtitlesList = this.mediaSubtitlesList;\n  for (const subs of subtitlesList) {\n    const option2 = createOption(\n      this.formatOptionText(subs.label, subs),\n      formatTextTrackObj(subs),\n      this.value == formatTextTrackObj(subs)\n    );\n    option2.prepend(createIndicator2(this, \"select-indicator\"));\n    const type = (_a3 = subs.kind) != null ? _a3 : \"subs\";\n    if (type === \"captions\") {\n      option2.append(createIndicator2(this, \"captions-indicator\"));\n    }\n    container.append(option2);\n  }\n};\n_onChange5 = /* @__PURE__ */ new WeakSet();\nonChange_fn5 = function() {\n  const showingSubs = this.mediaSubtitlesShowing;\n  const showingSubsStr = this.getAttribute(\n    MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n  );\n  const localStateChange = this.value !== showingSubsStr;\n  if ((showingSubs == null ? void 0 : showingSubs.length) && localStateChange) {\n    this.dispatchEvent(\n      new GlobalThis.CustomEvent(\n        MediaUIEvents.MEDIA_DISABLE_SUBTITLES_REQUEST,\n        {\n          composed: true,\n          bubbles: true,\n          detail: showingSubs\n        }\n      )\n    );\n  }\n  if (!this.value || !localStateChange)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_SHOW_SUBTITLES_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nvar getSubtitlesListAttr4 = (el, attrName) => {\n  const attrVal = el.getAttribute(attrName);\n  return attrVal ? parseTextTracksStr(attrVal) : [];\n};\nvar setSubtitlesListAttr4 = (el, attrName, list) => {\n  if (!(list == null ? void 0 : list.length)) {\n    el.removeAttribute(attrName);\n    return;\n  }\n  const newValStr = stringifyTextTrackList(list);\n  const oldVal = el.getAttribute(attrName);\n  if (oldVal === newValStr)\n    return;\n  el.setAttribute(attrName, newValStr);\n};\nif (!GlobalThis.customElements.get(\"media-captions-listbox\")) {\n  GlobalThis.customElements.define(\n    \"media-captions-listbox\",\n    MediaCaptionsListbox\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-captions-selectmenu.js\nvar MediaCaptionsSelectMenu = class extends MediaChromeSelectMenu {\n  init() {\n    const captionsButton = Document2.createElement(\"media-captions-button\");\n    captionsButton.part.add(\"button\");\n    captionsButton.preventClick = true;\n    const captionsListbox = Document2.createElement(\"media-captions-listbox\");\n    captionsListbox.part.add(\"listbox\");\n    captionsListbox.setAttribute(\n      \"exportparts\",\n      \"option, option-selected, indicator\"\n    );\n    const buttonSlot = this.shadowRoot.querySelector(\"slot[name=button]\");\n    const listboxSlot = this.shadowRoot.querySelector(\"slot[name=listbox]\");\n    buttonSlot.textContent = \"\";\n    listboxSlot.textContent = \"\";\n    buttonSlot.append(captionsButton);\n    listboxSlot.append(captionsListbox);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-captions-selectmenu\")) {\n  GlobalThis.customElements.define(\n    \"media-captions-selectmenu\",\n    MediaCaptionsSelectMenu\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-playback-rate-listbox.js\nvar __accessCheck30 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet30 = (obj, member, getter) => {\n  __accessCheck30(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd30 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateMethod16 = (obj, member, method) => {\n  __accessCheck30(obj, member, \"access private method\");\n  return method;\n};\nvar _rates4;\nvar _render6;\nvar render_fn6;\nvar _onChange6;\nvar onChange_fn6;\nvar Attributes15 = {\n  RATES: \"rates\"\n};\nvar MediaPlaybackRateListbox = class extends MediaChromeListbox {\n  constructor() {\n    super();\n    __privateAdd30(this, _render6);\n    __privateAdd30(this, _onChange6);\n    __privateAdd30(this, _rates4, new AttributeTokenList(this, Attributes15.RATES, {\n      defaultValue: DEFAULT_RATES\n    }));\n    __privateMethod16(this, _render6, render_fn6).call(this);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      \"aria-multiselectable\",\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      Attributes15.RATES\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_PLAYBACK_RATE && oldValue != newValue) {\n      this.value = newValue;\n    } else if (attrName === Attributes15.RATES && oldValue != newValue) {\n      __privateGet30(this, _rates4).value = newValue;\n      __privateMethod16(this, _render6, render_fn6).call(this);\n    }\n  }\n  /**\n   * @type { AttributeTokenList | Array<number> | undefined} Will return a DOMTokenList.\n   * Setting a value will accept an array of numbers.\n   */\n  get rates() {\n    return __privateGet30(this, _rates4);\n  }\n  set rates(value) {\n    if (!value) {\n      __privateGet30(this, _rates4).value = \"\";\n    } else if (Array.isArray(value)) {\n      __privateGet30(this, _rates4).value = value.join(\" \");\n    }\n    __privateMethod16(this, _render6, render_fn6).call(this);\n  }\n  /**\n   * @type {number} The current playback rate\n   */\n  get mediaPlaybackRate() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      DEFAULT_RATE\n    );\n  }\n  set mediaPlaybackRate(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, value);\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod16(this, _onChange6, onChange_fn6));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod16(this, _onChange6, onChange_fn6));\n  }\n};\n_rates4 = /* @__PURE__ */ new WeakMap();\n_render6 = /* @__PURE__ */ new WeakSet();\nrender_fn6 = function() {\n  const container = this.shadowRoot.querySelector(\"#container\");\n  container.textContent = \"\";\n  for (const rate of this.rates) {\n    const option = createOption(\n      this.formatOptionText(`${rate}x`, rate),\n      rate,\n      this.mediaPlaybackRate == rate\n    );\n    option.prepend(createIndicator2(this, \"select-indicator\"));\n    container.append(option);\n  }\n};\n_onChange6 = /* @__PURE__ */ new WeakSet();\nonChange_fn6 = function() {\n  if (!this.value)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_PLAYBACK_RATE_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!GlobalThis.customElements.get(\"media-playback-rate-listbox\")) {\n  GlobalThis.customElements.define(\n    \"media-playback-rate-listbox\",\n    MediaPlaybackRateListbox\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-playback-rate-selectmenu.js\nvar MediaPlaybackRateSelectMenu = class extends MediaChromeSelectMenu {\n  init() {\n    const playbackRateButton = Document2.createElement(\n      \"media-playback-rate-button\"\n    );\n    playbackRateButton.part.add(\"button\");\n    playbackRateButton.preventClick = true;\n    const playbackRateListbox = Document2.createElement(\n      \"media-playback-rate-listbox\"\n    );\n    playbackRateListbox.part.add(\"listbox\");\n    playbackRateListbox.setAttribute(\n      \"exportparts\",\n      \"option, option-selected, indicator\"\n    );\n    const buttonSlot = this.shadowRoot.querySelector(\"slot[name=button]\");\n    const listboxSlot = this.shadowRoot.querySelector(\"slot[name=listbox]\");\n    buttonSlot.textContent = \"\";\n    listboxSlot.textContent = \"\";\n    buttonSlot.append(playbackRateButton);\n    listboxSlot.append(playbackRateListbox);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-playback-rate-selectmenu\")) {\n  GlobalThis.customElements.define(\n    \"media-playback-rate-selectmenu\",\n    MediaPlaybackRateSelectMenu\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-rendition-listbox.js\nvar __accessCheck31 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet31 = (obj, member, getter) => {\n  __accessCheck31(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd31 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet27 = (obj, member, value, setter) => {\n  __accessCheck31(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod17 = (obj, member, method) => {\n  __accessCheck31(obj, member, \"access private method\");\n  return method;\n};\nvar _renditionList2;\nvar _prevState5;\nvar _render7;\nvar render_fn7;\nvar _onChange7;\nvar onChange_fn7;\nvar MediaRenditionListbox = class extends MediaChromeListbox {\n  constructor() {\n    super(...arguments);\n    __privateAdd31(this, _render7);\n    __privateAdd31(this, _onChange7);\n    __privateAdd31(this, _renditionList2, []);\n    __privateAdd31(this, _prevState5, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_RENDITION_LIST,\n      MediaUIAttributes.MEDIA_RENDITION_SELECTED\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_RENDITION_SELECTED && oldValue !== newValue) {\n      this.value = newValue != null ? newValue : \"auto\";\n    } else if (attrName === MediaUIAttributes.MEDIA_RENDITION_LIST && oldValue !== newValue) {\n      __privateSet27(this, _renditionList2, parseRenditionList(newValue));\n      __privateMethod17(this, _render7, render_fn7).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod17(this, _onChange7, onChange_fn7));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod17(this, _onChange7, onChange_fn7));\n  }\n  get mediaRenditionList() {\n    return __privateGet31(this, _renditionList2);\n  }\n  set mediaRenditionList(list) {\n    __privateSet27(this, _renditionList2, list);\n    __privateMethod17(this, _render7, render_fn7).call(this);\n  }\n  /**\n   * Get selected rendition id.\n   * @return {string}\n   */\n  get mediaRenditionSelected() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED);\n  }\n  set mediaRenditionSelected(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED, id);\n  }\n};\n_renditionList2 = /* @__PURE__ */ new WeakMap();\n_prevState5 = /* @__PURE__ */ new WeakMap();\n_render7 = /* @__PURE__ */ new WeakSet();\nrender_fn7 = function() {\n  if (__privateGet31(this, _prevState5) === JSON.stringify(this.mediaRenditionList))\n    return;\n  __privateSet27(this, _prevState5, JSON.stringify(this.mediaRenditionList));\n  const renditionList = this.mediaRenditionList.sort(\n    (a2, b4) => b4.height - a2.height\n  );\n  const container = this.shadowRoot.querySelector(\"#container\");\n  container.textContent = \"\";\n  let isAuto = !this.mediaRenditionSelected;\n  for (const rendition of renditionList) {\n    const text = this.formatOptionText(\n      `${Math.min(rendition.width, rendition.height)}p`,\n      rendition\n    );\n    const option2 = createOption(\n      text,\n      `${rendition.id}`,\n      rendition.selected && !isAuto\n    );\n    option2.prepend(createIndicator2(this, \"select-indicator\"));\n    container.append(option2);\n  }\n  const option = createOption(this.formatOptionText(\"Auto\"), \"auto\", isAuto);\n  option.prepend(createIndicator2(this, \"select-indicator\"));\n  container.append(option);\n};\n_onChange7 = /* @__PURE__ */ new WeakSet();\nonChange_fn7 = function() {\n  if (this.value == null)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_RENDITION_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!GlobalThis.customElements.get(\"media-rendition-listbox\")) {\n  GlobalThis.customElements.define(\n    \"media-rendition-listbox\",\n    MediaRenditionListbox\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-rendition-button.js\nvar renditionIcon2 = (\n  /*html*/\n  `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M13.5 2.5h2v6h-2v-2h-11v-2h11v-2Zm4 2h4v2h-4v-2Zm-12 4h2v6h-2v-2h-3v-2h3v-2Zm4 2h12v2h-12v-2Zm1 4h2v6h-2v-2h-8v-2h8v-2Zm4 2h7v2h-7v-2Z\" />\n</svg>`\n);\nvar slotTemplate18 = Document2.createElement(\"template\");\nslotTemplate18.innerHTML = /*html*/\n`\n  <slot name=\"icon\">${renditionIcon2}</slot>\n`;\nvar MediaRenditionButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_RENDITION_SELECTED,\n      MediaUIAttributes.MEDIA_RENDITION_UNAVAILABLE\n    ];\n  }\n  constructor() {\n    super({ slotTemplate: slotTemplate18 });\n  }\n  /**\n   * Get selected rendition id.\n   * @return {string}\n   */\n  get mediaRenditionSelected() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED);\n  }\n  set mediaRenditionSelected(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED, id);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-rendition-button\")) {\n  GlobalThis.customElements.define(\n    \"media-rendition-button\",\n    MediaRenditionButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-rendition-selectmenu.js\nvar MediaRenditionSelectMenu = class extends MediaChromeSelectMenu {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_RENDITION_SELECTED,\n      MediaUIAttributes.MEDIA_RENDITION_UNAVAILABLE\n    ];\n  }\n  init() {\n    const renditionButton = Document2.createElement(\"media-rendition-button\");\n    renditionButton.part.add(\"button\");\n    renditionButton.preventClick = true;\n    const renditionListbox = Document2.createElement(\"media-rendition-listbox\");\n    renditionListbox.part.add(\"listbox\");\n    renditionListbox.setAttribute(\n      \"exportparts\",\n      \"option, option-selected, indicator\"\n    );\n    const buttonSlot = this.shadowRoot.querySelector(\"slot[name=button]\");\n    const listboxSlot = this.shadowRoot.querySelector(\"slot[name=listbox]\");\n    buttonSlot.textContent = \"\";\n    listboxSlot.textContent = \"\";\n    buttonSlot.append(renditionButton);\n    listboxSlot.append(renditionListbox);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-rendition-selectmenu\")) {\n  GlobalThis.customElements.define(\n    \"media-rendition-selectmenu\",\n    MediaRenditionSelectMenu\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-audio-track-listbox.js\nvar __accessCheck32 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet32 = (obj, member, getter) => {\n  __accessCheck32(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd32 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet28 = (obj, member, value, setter) => {\n  __accessCheck32(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod18 = (obj, member, method) => {\n  __accessCheck32(obj, member, \"access private method\");\n  return method;\n};\nvar _audioTrackList2;\nvar _prevState6;\nvar _render8;\nvar render_fn8;\nvar _onChange8;\nvar onChange_fn8;\nvar MediaAudioTrackListbox = class extends MediaChromeListbox {\n  constructor() {\n    super(...arguments);\n    __privateAdd32(this, _render8);\n    __privateAdd32(this, _onChange8);\n    __privateAdd32(this, _audioTrackList2, []);\n    __privateAdd32(this, _prevState6, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED && oldValue !== newValue) {\n      this.value = newValue;\n    } else if (attrName === MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST && oldValue !== newValue) {\n      __privateSet28(this, _audioTrackList2, parseAudioTrackList(newValue));\n      __privateMethod18(this, _render8, render_fn8).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod18(this, _onChange8, onChange_fn8));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod18(this, _onChange8, onChange_fn8));\n  }\n  get mediaAudioTrackList() {\n    return __privateGet32(this, _audioTrackList2);\n  }\n  set mediaAudioTrackList(list) {\n    __privateSet28(this, _audioTrackList2, list);\n    __privateMethod18(this, _render8, render_fn8).call(this);\n  }\n  /**\n   * Get enabled audio track id.\n   * @return {string}\n   */\n  get mediaAudioTrackEnabled() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED);\n  }\n  set mediaAudioTrackEnabled(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED, id);\n  }\n};\n_audioTrackList2 = /* @__PURE__ */ new WeakMap();\n_prevState6 = /* @__PURE__ */ new WeakMap();\n_render8 = /* @__PURE__ */ new WeakSet();\nrender_fn8 = function() {\n  if (__privateGet32(this, _prevState6) === JSON.stringify(this.mediaAudioTrackList))\n    return;\n  __privateSet28(this, _prevState6, JSON.stringify(this.mediaAudioTrackList));\n  const audioTrackList = this.mediaAudioTrackList;\n  const container = this.shadowRoot.querySelector(\"#container\");\n  container.textContent = \"\";\n  for (const audioTrack of audioTrackList) {\n    const text = this.formatOptionText(audioTrack.label, audioTrack);\n    const option = createOption(text, `${audioTrack.id}`, audioTrack.enabled);\n    option.prepend(createIndicator2(this, \"select-indicator\"));\n    container.append(option);\n  }\n};\n_onChange8 = /* @__PURE__ */ new WeakSet();\nonChange_fn8 = function() {\n  if (this.value == null)\n    return;\n  const event = new GlobalThis.CustomEvent(\n    MediaUIEvents.MEDIA_AUDIO_TRACK_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!GlobalThis.customElements.get(\"media-audio-track-listbox\")) {\n  GlobalThis.customElements.define(\n    \"media-audio-track-listbox\",\n    MediaAudioTrackListbox\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-audio-track-button.js\nvar audioTrackIcon2 = (\n  /*html*/\n  `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M11 17H9.5V7H11v10Zm-3-3H6.5v-4H8v4Zm6-5h-1.5v6H14V9Zm3 7h-1.5V8H17v8Z\"/>\n  <path d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-2 0a8 8 0 1 0-16 0 8 8 0 0 0 16 0Z\"/>\n</svg>`\n);\nvar slotTemplate19 = Document2.createElement(\"template\");\nslotTemplate19.innerHTML = /*html*/\n`\n  <slot name=\"icon\">${audioTrackIcon2}</slot>\n`;\nvar MediaAudioTrackButton = class extends MediaChromeButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_UNAVAILABLE\n    ];\n  }\n  constructor() {\n    super({ slotTemplate: slotTemplate19 });\n  }\n  /**\n   * Get enabled audio track id.\n   * @return {string}\n   */\n  get mediaAudioTrackEnabled() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED);\n  }\n  set mediaAudioTrackEnabled(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED, id);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-audio-track-button\")) {\n  GlobalThis.customElements.define(\n    \"media-audio-track-button\",\n    MediaAudioTrackButton\n  );\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/experimental/media-audio-track-selectmenu.js\nvar MediaAudioTrackSelectMenu = class extends MediaChromeSelectMenu {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_UNAVAILABLE\n    ];\n  }\n  init() {\n    const audioTrackButton = Document2.createElement(\"media-audio-track-button\");\n    audioTrackButton.part.add(\"button\");\n    audioTrackButton.preventClick = true;\n    const audioTrackListbox = Document2.createElement(\n      \"media-audio-track-listbox\"\n    );\n    audioTrackListbox.part.add(\"listbox\");\n    audioTrackListbox.setAttribute(\n      \"exportparts\",\n      \"option, option-selected, indicator\"\n    );\n    const buttonSlot = this.shadowRoot.querySelector(\"slot[name=button]\");\n    const listboxSlot = this.shadowRoot.querySelector(\"slot[name=listbox]\");\n    buttonSlot.textContent = \"\";\n    listboxSlot.textContent = \"\";\n    buttonSlot.append(audioTrackButton);\n    listboxSlot.append(audioTrackListbox);\n  }\n};\nif (!GlobalThis.customElements.get(\"media-audio-track-selectmenu\")) {\n  GlobalThis.customElements.define(\n    \"media-audio-track-selectmenu\",\n    MediaAudioTrackSelectMenu\n  );\n}\n\n// node_modules/.pnpm/@mux+mux-video@0.20.2/node_modules/@mux/mux-video/dist/index.mjs\nvar oi2 = Object.defineProperty;\nvar ai2 = Object.getPrototypeOf;\nvar di2 = Reflect.get;\nvar ci2 = (t2, i2, e) => i2 in t2 ? oi2(t2, i2, { enumerable: true, configurable: true, writable: true, value: e }) : t2[i2] = e;\nvar v3 = (t2, i2, e) => (ci2(t2, typeof i2 != \"symbol\" ? i2 + \"\" : i2, e), e);\nvar ft2 = (t2, i2, e) => {\n  if (!i2.has(t2)) throw TypeError(\"Cannot \" + e);\n};\nvar r9 = (t2, i2, e) => (ft2(t2, i2, \"read from private field\"), e ? e.call(t2) : i2.get(t2));\nvar u = (t2, i2, e) => {\n  if (i2.has(t2)) throw TypeError(\"Cannot add the same private member more than once\");\n  i2 instanceof WeakSet ? i2.add(t2) : i2.set(t2, e);\n};\nvar h2 = (t2, i2, e, s) => (ft2(t2, i2, \"write to private field\"), s ? s.call(t2, e) : i2.set(t2, e), e);\nvar k2 = (t2, i2, e) => (ft2(t2, i2, \"access private method\"), e);\nvar $e3 = (t2, i2, e) => di2(ai2(t2), e, i2);\nvar pe2 = class {\n  addEventListener() {\n  }\n  removeEventListener() {\n  }\n  dispatchEvent(i2) {\n    return true;\n  }\n};\nif (typeof DocumentFragment == \"undefined\") {\n  class t2 extends pe2 {\n  }\n  globalThis.DocumentFragment = t2;\n}\nvar Le3 = class extends pe2 {\n};\nvar mt2 = class extends pe2 {\n};\nvar ui2 = { get(t2) {\n}, define(t2, i2, e) {\n}, upgrade(t2) {\n}, whenDefined(t2) {\n  return Promise.resolve(Le3);\n} };\nvar Me3;\nvar pt3 = class {\n  constructor(i2, e = {}) {\n    u(this, Me3, void 0);\n    h2(this, Me3, e == null ? void 0 : e.detail);\n  }\n  get detail() {\n    return r9(this, Me3);\n  }\n  initCustomEvent() {\n  }\n};\nMe3 = /* @__PURE__ */ new WeakMap();\nfunction hi2(t2, i2) {\n  return new Le3();\n}\nvar Ct2 = { document: { createElement: hi2 }, DocumentFragment, customElements: ui2, CustomEvent: pt3, EventTarget: pe2, HTMLElement: Le3, HTMLVideoElement: mt2 };\nvar Ot2 = typeof window == \"undefined\" || typeof globalThis.customElements == \"undefined\";\nvar ze3 = Ot2 ? Ct2 : globalThis;\nvar Ki2 = Ot2 ? Ct2.document : globalThis.document;\nvar li2 = () => {\n  try {\n    return \"0.20.2\";\n  } catch (e) {\n  }\n  return \"UNKNOWN\";\n};\nvar fi2 = li2();\nvar _t2 = () => fi2;\nvar Et2 = [\"abort\", \"canplay\", \"canplaythrough\", \"durationchange\", \"emptied\", \"encrypted\", \"ended\", \"error\", \"loadeddata\", \"loadedmetadata\", \"loadstart\", \"pause\", \"play\", \"playing\", \"progress\", \"ratechange\", \"seeked\", \"seeking\", \"stalled\", \"suspend\", \"timeupdate\", \"volumechange\", \"waiting\", \"waitingforkey\", \"resize\", \"enterpictureinpicture\", \"leavepictureinpicture\", \"webkitbeginfullscreen\", \"webkitendfullscreen\", \"webkitpresentationmodechanged\"];\nfunction mi2(t2) {\n  return `\n    <style>\n      :host {\n        display: inline-flex;\n        line-height: 0;\n        flex-direction: column;\n        justify-content: end;\n      }\n\n      audio {\n        width: 100%;\n      }\n    </style>\n    <slot name=\"media\">\n      <audio${Nt2(t2)}></audio>\n    </slot>\n    <slot></slot>\n  `;\n}\nfunction pi2(t2) {\n  return `\n    <style>\n      :host {\n        display: inline-block;\n        line-height: 0;\n      }\n\n      video {\n        max-width: 100%;\n        max-height: 100%;\n        min-width: 100%;\n        min-height: 100%;\n        object-fit: var(--media-object-fit, contain);\n        object-position: var(--media-object-position, 50% 50%);\n      }\n\n      video::-webkit-media-text-track-container {\n        transform: var(--media-webkit-text-track-transform);\n        transition: var(--media-webkit-text-track-transition);\n      }\n    </style>\n    <slot name=\"media\">\n      <video${Nt2(t2)}></video>\n    </slot>\n    <slot></slot>\n  `;\n}\nvar Lt2 = (t2, { tag: i2, is: e }) => {\n  var l, a2, p3, E4, I4, Mt3, se5, o, m3, A3, ne5, _3, gt3, L2, wt3, w2, xt3;\n  let s = (a2 = (l = globalThis.document) == null ? void 0 : l.createElement) == null ? void 0 : a2.call(l, i2, { is: e }), n2 = s ? gi2(s) : [];\n  return p3 = class extends t2 {\n    constructor() {\n      super();\n      u(this, A3);\n      u(this, _3);\n      u(this, L2);\n      u(this, w2);\n      u(this, se5, void 0);\n      u(this, o, void 0);\n      u(this, m3, /* @__PURE__ */ new Map());\n    }\n    static get observedAttributes() {\n      var g2, T3, O4;\n      return k2(g2 = p3, I4, Mt3).call(g2), [...(O4 = (T3 = s == null ? void 0 : s.constructor) == null ? void 0 : T3.observedAttributes) != null ? O4 : [], \"autopictureinpicture\", \"disablepictureinpicture\", \"disableremoteplayback\", \"autoplay\", \"controls\", \"controlslist\", \"crossorigin\", \"loop\", \"muted\", \"playsinline\", \"poster\", \"preload\", \"src\"];\n    }\n    get nativeEl() {\n      var f, g2, T3;\n      return k2(this, A3, ne5).call(this), (T3 = (g2 = (f = r9(this, o)) != null ? f : this.shadowRoot.querySelector(i2)) != null ? g2 : this.querySelector(\":scope > [slot=media]\")) != null ? T3 : this.querySelector(i2);\n    }\n    set nativeEl(f) {\n      h2(this, o, f);\n    }\n    get defaultMuted() {\n      return this.hasAttribute(\"muted\");\n    }\n    set defaultMuted(f) {\n      this.toggleAttribute(\"muted\", !!f);\n    }\n    get src() {\n      return this.getAttribute(\"src\");\n    }\n    set src(f) {\n      this.setAttribute(\"src\", `${f}`);\n    }\n    get preload() {\n      var f, g2;\n      return (g2 = this.getAttribute(\"preload\")) != null ? g2 : (f = this.nativeEl) == null ? void 0 : f.preload;\n    }\n    set preload(f) {\n      this.setAttribute(\"preload\", `${f}`);\n    }\n    init() {\n      var f, g2;\n      if (!this.shadowRoot) {\n        this.attachShadow({ mode: \"open\" });\n        let T3 = Ei2(this.attributes);\n        e && (T3.is = e), i2 && (T3.part = i2), this.shadowRoot.innerHTML = this.constructor.getTemplateHTML(T3);\n      }\n      this.nativeEl.muted = this.hasAttribute(\"muted\");\n      for (let T3 of n2) k2(this, L2, wt3).call(this, T3);\n      this.shadowRoot.addEventListener(\"slotchange\", this), k2(this, _3, gt3).call(this);\n      for (let T3 of this.constructor.Events) (g2 = (f = this.shadowRoot).addEventListener) == null || g2.call(f, T3, this, true);\n    }\n    handleEvent(f) {\n      if (f.type === \"slotchange\") {\n        k2(this, _3, gt3).call(this);\n        return;\n      }\n      f.target === this.nativeEl && this.dispatchEvent(new CustomEvent(f.type, { detail: f.detail }));\n    }\n    attributeChangedCallback(f, g2, T3) {\n      k2(this, A3, ne5).call(this), k2(this, w2, xt3).call(this, f, g2, T3);\n    }\n    connectedCallback() {\n      k2(this, A3, ne5).call(this);\n    }\n  }, E4 = /* @__PURE__ */ new WeakMap(), I4 = /* @__PURE__ */ new WeakSet(), Mt3 = function() {\n    if (r9(this, E4)) return;\n    h2(this, E4, true);\n    let f = new Set(this.observedAttributes);\n    f.delete(\"muted\");\n    for (let g2 of n2) {\n      if (g2 in this.prototype) continue;\n      if (typeof s[g2] == \"function\") this.prototype[g2] = function(...O4) {\n        return k2(this, A3, ne5).call(this), this.call ? this.call(g2, ...O4) : this.nativeEl[g2].apply(this.nativeEl, O4);\n      };\n      else {\n        let O4 = { get() {\n          var D3, Pe4, Ie4;\n          k2(this, A3, ne5).call(this);\n          let C3 = g2.toLowerCase();\n          if (f.has(C3)) {\n            let me5 = this.getAttribute(C3);\n            return me5 === null ? false : me5 === \"\" ? true : me5;\n          }\n          return (Ie4 = (D3 = this.get) == null ? void 0 : D3.call(this, g2)) != null ? Ie4 : (Pe4 = this.nativeEl) == null ? void 0 : Pe4[g2];\n        } };\n        g2 !== g2.toUpperCase() && (O4.set = function(C3) {\n          k2(this, A3, ne5).call(this);\n          let D3 = g2.toLowerCase();\n          if (f.has(D3)) {\n            C3 === true || C3 === false || C3 == null ? this.toggleAttribute(D3, !!C3) : this.setAttribute(D3, C3);\n            return;\n          }\n          if (this.set) {\n            this.set(g2, C3);\n            return;\n          }\n          this.nativeEl[g2] = C3;\n        }), Object.defineProperty(this.prototype, g2, O4);\n      }\n    }\n  }, se5 = /* @__PURE__ */ new WeakMap(), o = /* @__PURE__ */ new WeakMap(), m3 = /* @__PURE__ */ new WeakMap(), A3 = /* @__PURE__ */ new WeakSet(), ne5 = function() {\n    r9(this, se5) || (h2(this, se5, true), this.init());\n  }, _3 = /* @__PURE__ */ new WeakSet(), gt3 = function() {\n    let f = new Map(r9(this, m3));\n    this.shadowRoot.querySelector(\"slot:not([name])\").assignedElements({ flatten: true }).filter((g2) => [\"track\", \"source\"].includes(g2.localName)).forEach((g2) => {\n      var O4, C3;\n      f.delete(g2);\n      let T3 = r9(this, m3).get(g2);\n      T3 || (T3 = g2.cloneNode(), r9(this, m3).set(g2, T3)), (C3 = (O4 = this.nativeEl).append) == null || C3.call(O4, T3), T3.localName === \"track\" && T3.default && (T3.kind === \"chapters\" || T3.kind === \"metadata\") && T3.track.mode === \"disabled\" && (T3.track.mode = \"hidden\");\n    }), f.forEach((g2) => g2.remove());\n  }, L2 = /* @__PURE__ */ new WeakSet(), wt3 = function(f) {\n    if (Object.prototype.hasOwnProperty.call(this, f)) {\n      let g2 = this[f];\n      delete this[f], this[f] = g2;\n    }\n  }, w2 = /* @__PURE__ */ new WeakSet(), xt3 = function(f, g2, T3) {\n    var O4, C3, D3, Pe4, Ie4, me5;\n    [\"id\", \"class\"].includes(f) || !p3.observedAttributes.includes(f) && this.constructor.observedAttributes.includes(f) || (T3 === null ? (C3 = (O4 = this.nativeEl).removeAttribute) == null || C3.call(O4, f) : ((Pe4 = (D3 = this.nativeEl).getAttribute) == null ? void 0 : Pe4.call(D3, f)) != T3 && ((me5 = (Ie4 = this.nativeEl).setAttribute) == null || me5.call(Ie4, f, T3)));\n  }, u(p3, I4), v3(p3, \"getTemplateHTML\", i2.endsWith(\"audio\") ? mi2 : pi2), v3(p3, \"shadowRootOptions\", { mode: \"open\" }), v3(p3, \"Events\", Et2), u(p3, E4, void 0), p3;\n};\nfunction gi2(t2) {\n  let i2 = [];\n  for (let e = Object.getPrototypeOf(t2); e && e !== HTMLElement.prototype; e = Object.getPrototypeOf(e)) i2.push(...Object.getOwnPropertyNames(e));\n  return i2;\n}\nfunction Nt2(t2) {\n  let i2 = \"\";\n  for (let e in t2) {\n    let s = t2[e];\n    s === \"\" ? i2 += ` ${e}` : i2 += ` ${e}=\"${s}\"`;\n  }\n  return i2;\n}\nfunction Ei2(t2) {\n  let i2 = {};\n  for (let e of t2) i2[e.name] = e.value;\n  return i2;\n}\nvar Pt2;\nvar Xe3 = Lt2((Pt2 = globalThis.HTMLElement) != null ? Pt2 : class {\n}, { tag: \"video\" });\nvar It2;\nvar zi2 = Lt2((It2 = globalThis.HTMLElement) != null ? It2 : class {\n}, { tag: \"audio\" });\nvar V2 = /* @__PURE__ */ new WeakMap();\nvar ge2 = class extends Error {\n};\nvar Je3 = class extends Error {\n};\nvar Dt2 = globalThis.WeakRef ? class extends Set {\n  add(t2) {\n    super.add(new WeakRef(t2));\n  }\n  forEach(t2) {\n    super.forEach((i2) => {\n      let e = i2.deref();\n      e && t2(e);\n    });\n  }\n} : Set;\nfunction Vt2(t2) {\n  var i2, e, s;\n  (e = (i2 = globalThis.chrome) == null ? void 0 : i2.cast) != null && e.isAvailable ? (s = globalThis.cast) != null && s.framework ? t2() : customElements.whenDefined(\"google-cast-button\").then(t2) : globalThis.__onGCastApiAvailable = () => {\n    customElements.whenDefined(\"google-cast-button\").then(t2);\n  };\n}\nfunction Gt3() {\n  return globalThis.chrome;\n}\nfunction Ft2() {\n  var e;\n  let t2 = \"https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1\";\n  if ((e = globalThis.chrome) != null && e.cast || document.querySelector(`script[src=\"${t2}\"]`)) return;\n  let i2 = document.createElement(\"script\");\n  i2.src = t2, document.head.append(i2);\n}\nfunction W2() {\n  var t2, i2;\n  return (i2 = (t2 = globalThis.cast) == null ? void 0 : t2.framework) == null ? void 0 : i2.CastContext.getInstance();\n}\nfunction we2() {\n  var t2;\n  return (t2 = W2()) == null ? void 0 : t2.getCurrentSession();\n}\nfunction Qe3() {\n  var t2;\n  return (t2 = we2()) == null ? void 0 : t2.getSessionObj().media[0];\n}\nfunction qt2(t2) {\n  return new Promise((i2, e) => {\n    Qe3().editTracksInfo(t2, i2, e);\n  });\n}\nfunction Bt2(t2) {\n  return new Promise((i2, e) => {\n    Qe3().getStatus(t2, i2, e);\n  });\n}\nfunction vt2(t2) {\n  return W2().setOptions(__spreadValues(__spreadValues({}, bt2()), t2));\n}\nfunction bt2() {\n  return { receiverApplicationId: \"CC1AD845\", autoJoinPolicy: \"origin_scoped\", androidReceiverCompatible: false, language: \"en-US\", resumeSavedSession: true };\n}\nvar Ze2 = new Dt2();\nvar j2 = /* @__PURE__ */ new WeakSet();\nvar S2;\nVt2(() => {\n  var t2, i2, e, s;\n  if (!((i2 = (t2 = globalThis.chrome) == null ? void 0 : t2.cast) != null && i2.isAvailable)) {\n    console.debug(\"chrome.cast.isAvailable\", (s = (e = globalThis.chrome) == null ? void 0 : e.cast) == null ? void 0 : s.isAvailable);\n    return;\n  }\n  S2 || (S2 = cast.framework, W2().addEventListener(S2.CastContextEventType.CAST_STATE_CHANGED, (n2) => {\n    Ze2.forEach((l) => {\n      var a2, p3;\n      return (p3 = (a2 = V2.get(l)).onCastStateChanged) == null ? void 0 : p3.call(a2, n2);\n    });\n  }), W2().addEventListener(S2.CastContextEventType.SESSION_STATE_CHANGED, (n2) => {\n    Ze2.forEach((l) => {\n      var a2, p3;\n      return (p3 = (a2 = V2.get(l)).onSessionStateChanged) == null ? void 0 : p3.call(a2, n2);\n    });\n  }), Ze2.forEach((n2) => {\n    var l, a2;\n    return (a2 = (l = V2.get(n2)).init) == null ? void 0 : a2.call(l);\n  }));\n});\nvar Ut2 = 0;\nvar y2;\nvar xe3;\nvar P;\nvar G2;\nvar ae2;\nvar de3;\nvar K3;\nvar tt3;\nvar F3;\nvar oe3;\nvar it;\nvar Wt2;\nvar Ne3;\nvar Tt2;\nvar rt2;\nvar jt3;\nvar De3;\nvar yt;\nvar st3;\nvar Kt;\nvar Ve2;\nvar At2;\nvar et2 = class extends EventTarget {\n  constructor(e) {\n    super();\n    u(this, F3);\n    u(this, it);\n    u(this, Ne3);\n    u(this, rt2);\n    u(this, De3);\n    u(this, st3);\n    u(this, Ve2);\n    u(this, y2, void 0);\n    u(this, xe3, void 0);\n    u(this, P, void 0);\n    u(this, G2, void 0);\n    u(this, ae2, \"disconnected\");\n    u(this, de3, false);\n    u(this, K3, /* @__PURE__ */ new Set());\n    u(this, tt3, /* @__PURE__ */ new WeakMap());\n    h2(this, y2, e), Ze2.add(this), V2.set(this, { init: () => k2(this, De3, yt).call(this), onCastStateChanged: () => k2(this, Ne3, Tt2).call(this), onSessionStateChanged: () => k2(this, rt2, jt3).call(this), getCastPlayer: () => r9(this, F3, oe3) }), k2(this, De3, yt).call(this);\n  }\n  get state() {\n    return r9(this, ae2);\n  }\n  watchAvailability(e) {\n    return __async(this, null, function* () {\n      if (r9(this, y2).disableRemotePlayback) throw new ge2(\"disableRemotePlayback attribute is present.\");\n      return r9(this, tt3).set(e, ++Ut2), r9(this, K3).add(e), Ut2;\n    });\n  }\n  cancelWatchAvailability(e) {\n    return __async(this, null, function* () {\n      if (r9(this, y2).disableRemotePlayback) throw new ge2(\"disableRemotePlayback attribute is present.\");\n      e ? r9(this, K3).delete(e) : r9(this, K3).clear();\n    });\n  }\n  prompt() {\n    return __async(this, null, function* () {\n      var s, n2, l, a2;\n      if (r9(this, y2).disableRemotePlayback) throw new ge2(\"disableRemotePlayback attribute is present.\");\n      if (!((n2 = (s = globalThis.chrome) == null ? void 0 : s.cast) != null && n2.isAvailable)) throw new Je3(\"The RemotePlayback API is disabled on this platform.\");\n      let e = j2.has(r9(this, y2));\n      j2.add(r9(this, y2)), vt2(r9(this, y2).castOptions), Object.entries(r9(this, G2)).forEach(([p3, E4]) => {\n        r9(this, P).controller.addEventListener(p3, E4);\n      });\n      try {\n        yield W2().requestSession();\n      } catch (p3) {\n        if (p3 === \"cancel\") {\n          e || j2.delete(r9(this, y2));\n          return;\n        }\n        throw new Error(p3);\n      }\n      (a2 = (l = V2.get(r9(this, y2))) == null ? void 0 : l.loadOnPrompt) == null || a2.call(l);\n    });\n  }\n};\ny2 = /* @__PURE__ */ new WeakMap(), xe3 = /* @__PURE__ */ new WeakMap(), P = /* @__PURE__ */ new WeakMap(), G2 = /* @__PURE__ */ new WeakMap(), ae2 = /* @__PURE__ */ new WeakMap(), de3 = /* @__PURE__ */ new WeakMap(), K3 = /* @__PURE__ */ new WeakMap(), tt3 = /* @__PURE__ */ new WeakMap(), F3 = /* @__PURE__ */ new WeakSet(), oe3 = function() {\n  if (j2.has(r9(this, y2))) return r9(this, P);\n}, it = /* @__PURE__ */ new WeakSet(), Wt2 = function() {\n  j2.has(r9(this, y2)) && (Object.entries(r9(this, G2)).forEach(([e, s]) => {\n    r9(this, P).controller.removeEventListener(e, s);\n  }), j2.delete(r9(this, y2)), r9(this, y2).muted = r9(this, P).isMuted, r9(this, y2).currentTime = r9(this, P).savedPlayerState.currentTime, r9(this, P).savedPlayerState.isPaused === false && r9(this, y2).play());\n}, Ne3 = /* @__PURE__ */ new WeakSet(), Tt2 = function() {\n  let e = W2().getCastState();\n  if (j2.has(r9(this, y2)) && e === \"CONNECTING\" && (h2(this, ae2, \"connecting\"), this.dispatchEvent(new Event(\"connecting\"))), !r9(this, de3) && (e != null && e.includes(\"CONNECT\"))) {\n    h2(this, de3, true);\n    for (let s of r9(this, K3)) s(true);\n  } else if (r9(this, de3) && (!e || e === \"NO_DEVICES_AVAILABLE\")) {\n    h2(this, de3, false);\n    for (let s of r9(this, K3)) s(false);\n  }\n}, rt2 = /* @__PURE__ */ new WeakSet(), jt3 = function() {\n  return __async(this, null, function* () {\n    var s;\n    let { SESSION_RESUMED: e } = S2.SessionState;\n    if (W2().getSessionState() === e && r9(this, y2).castSrc === ((s = Qe3()) == null ? void 0 : s.media.contentId)) {\n      j2.add(r9(this, y2)), Object.entries(r9(this, G2)).forEach(([n2, l]) => {\n        r9(this, P).controller.addEventListener(n2, l);\n      });\n      try {\n        yield Bt2(new chrome.cast.media.GetStatusRequest());\n      } catch (n2) {\n        console.error(n2);\n      }\n      r9(this, G2)[S2.RemotePlayerEventType.IS_PAUSED_CHANGED](), r9(this, G2)[S2.RemotePlayerEventType.PLAYER_STATE_CHANGED]();\n    }\n  });\n}, De3 = /* @__PURE__ */ new WeakSet(), yt = function() {\n  !S2 || r9(this, xe3) || (h2(this, xe3, true), vt2(r9(this, y2).castOptions), r9(this, y2).textTracks.addEventListener(\"change\", () => k2(this, Ve2, At2).call(this)), k2(this, Ne3, Tt2).call(this), h2(this, P, new S2.RemotePlayer()), new S2.RemotePlayerController(r9(this, P)), h2(this, G2, { [S2.RemotePlayerEventType.IS_CONNECTED_CHANGED]: ({ value: e }) => {\n    e === true ? (h2(this, ae2, \"connected\"), this.dispatchEvent(new Event(\"connect\"))) : (k2(this, it, Wt2).call(this), h2(this, ae2, \"disconnected\"), this.dispatchEvent(new Event(\"disconnect\")));\n  }, [S2.RemotePlayerEventType.DURATION_CHANGED]: () => {\n    r9(this, y2).dispatchEvent(new Event(\"durationchange\"));\n  }, [S2.RemotePlayerEventType.VOLUME_LEVEL_CHANGED]: () => {\n    r9(this, y2).dispatchEvent(new Event(\"volumechange\"));\n  }, [S2.RemotePlayerEventType.IS_MUTED_CHANGED]: () => {\n    r9(this, y2).dispatchEvent(new Event(\"volumechange\"));\n  }, [S2.RemotePlayerEventType.CURRENT_TIME_CHANGED]: () => {\n    var e;\n    (e = r9(this, F3, oe3)) != null && e.isMediaLoaded && r9(this, y2).dispatchEvent(new Event(\"timeupdate\"));\n  }, [S2.RemotePlayerEventType.VIDEO_INFO_CHANGED]: () => {\n    r9(this, y2).dispatchEvent(new Event(\"resize\"));\n  }, [S2.RemotePlayerEventType.IS_PAUSED_CHANGED]: () => {\n    r9(this, y2).dispatchEvent(new Event(this.paused ? \"pause\" : \"play\"));\n  }, [S2.RemotePlayerEventType.PLAYER_STATE_CHANGED]: () => {\n    var e, s;\n    ((e = r9(this, F3, oe3)) == null ? void 0 : e.playerState) !== chrome.cast.media.PlayerState.PAUSED && r9(this, y2).dispatchEvent(new Event({ [chrome.cast.media.PlayerState.PLAYING]: \"playing\", [chrome.cast.media.PlayerState.BUFFERING]: \"waiting\", [chrome.cast.media.PlayerState.IDLE]: \"emptied\" }[(s = r9(this, F3, oe3)) == null ? void 0 : s.playerState]));\n  }, [S2.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED]: () => __async(this, null, function* () {\n    var e;\n    (e = r9(this, F3, oe3)) != null && e.isMediaLoaded && (yield Promise.resolve(), k2(this, st3, Kt).call(this));\n  }) }));\n}, st3 = /* @__PURE__ */ new WeakSet(), Kt = function() {\n  k2(this, Ve2, At2).call(this);\n}, Ve2 = /* @__PURE__ */ new WeakSet(), At2 = function() {\n  return __async(this, null, function* () {\n    var o, m3, A3, He3, _3;\n    if (!r9(this, F3, oe3)) return;\n    let s = ((m3 = (o = r9(this, P).mediaInfo) == null ? void 0 : o.tracks) != null ? m3 : []).filter(({ type: R2 }) => R2 === chrome.cast.media.TrackType.TEXT), n2 = [...r9(this, y2).textTracks].filter(({ kind: R2 }) => R2 === \"subtitles\" || R2 === \"captions\"), l = s.map(({ language: R2, name: L2, trackId: M4 }) => {\n      var N3;\n      let { mode: w2 } = (N3 = n2.find((St3) => St3.language === R2 && St3.label === L2)) != null ? N3 : {};\n      return w2 ? { mode: w2, trackId: M4 } : false;\n    }).filter(Boolean), p3 = l.filter(({ mode: R2 }) => R2 !== \"showing\").map(({ trackId: R2 }) => R2), E4 = l.find(({ mode: R2 }) => R2 === \"showing\"), I4 = (_3 = (He3 = (A3 = we2()) == null ? void 0 : A3.getSessionObj().media[0]) == null ? void 0 : He3.activeTrackIds) != null ? _3 : [], U4 = I4;\n    if (I4.length && (U4 = U4.filter((R2) => !p3.includes(R2))), E4 != null && E4.trackId && (U4 = [...U4, E4.trackId]), U4 = [...new Set(U4)], !((R2, L2) => R2.length === L2.length && R2.every((M4) => L2.includes(M4)))(I4, U4)) try {\n      let R2 = new chrome.cast.media.EditTracksInfoRequest(U4);\n      yield qt2(R2);\n    } catch (R2) {\n      console.error(R2);\n    }\n  });\n};\nvar Yt = (t2) => {\n  var i2, e, s, n2, l, a2, b4, E4, Ht3;\n  return e = class _this extends t2 {\n    constructor() {\n      super(...arguments);\n      u(this, a2);\n      u(this, E4);\n      u(this, s, { paused: false });\n      u(this, n2, bt2());\n      u(this, l, void 0);\n    }\n    get remote() {\n      return r9(this, l) ? r9(this, l) : Gt3() ? (Ft2(), V2.set(this, { loadOnPrompt: () => k2(this, E4, Ht3).call(this) }), h2(this, l, new et2(this))) : super.remote;\n    }\n    attributeChangedCallback(o, m3, A3) {\n      if (super.attributeChangedCallback(o, m3, A3), o === \"cast-receiver\" && A3) {\n        r9(this, n2).receiverApplicationId = A3;\n        return;\n      }\n      if (r9(this, a2, b4)) switch (o) {\n        case \"cast-stream-type\":\n        case \"cast-src\":\n          this.load();\n          break;\n      }\n    }\n    load() {\n      return __async(this, null, function* () {\n        var R2, L2;\n        if (!r9(this, a2, b4)) return __superGet(_this.prototype, this, \"load\").call(this);\n        let o = new chrome.cast.media.MediaInfo(this.castSrc, this.castContentType), m3 = [...this.querySelectorAll(\"track\")].filter(({ kind: M4, src: w2 }) => w2 && (M4 === \"subtitles\" || M4 === \"captions\")), A3 = [], He3 = 0;\n        m3.length && (o.tracks = m3.map((M4) => {\n          let w2 = ++He3;\n          A3.length === 0 && M4.track.mode === \"showing\" && A3.push(w2);\n          let N3 = new chrome.cast.media.Track(w2, chrome.cast.media.TrackType.TEXT);\n          return N3.trackContentId = M4.src, N3.trackContentType = \"text/vtt\", N3.subtype = M4.kind === \"captions\" ? chrome.cast.media.TextTrackType.CAPTIONS : chrome.cast.media.TextTrackType.SUBTITLES, N3.name = M4.label, N3.language = M4.srclang, N3;\n        })), this.castStreamType === \"live\" ? o.streamType = chrome.cast.media.StreamType.LIVE : o.streamType = chrome.cast.media.StreamType.BUFFERED, o.metadata = new chrome.cast.media.GenericMediaMetadata(), o.metadata.title = this.title, o.metadata.images = [{ url: this.poster }];\n        let _3 = new chrome.cast.media.LoadRequest(o);\n        _3.currentTime = (R2 = __superGet(_this.prototype, this, \"currentTime\")) != null ? R2 : 0, _3.autoplay = !r9(this, s).paused, _3.activeTrackIds = A3, yield (L2 = we2()) == null ? void 0 : L2.loadMedia(_3), this.dispatchEvent(new Event(\"volumechange\"));\n      });\n    }\n    play() {\n      var o;\n      if (r9(this, a2, b4)) {\n        r9(this, a2, b4).isPaused && ((o = r9(this, a2, b4).controller) == null || o.playOrPause());\n        return;\n      }\n      return super.play();\n    }\n    pause() {\n      var o;\n      if (r9(this, a2, b4)) {\n        r9(this, a2, b4).isPaused || (o = r9(this, a2, b4).controller) == null || o.playOrPause();\n        return;\n      }\n      super.pause();\n    }\n    get castOptions() {\n      return r9(this, n2);\n    }\n    get castReceiver() {\n      var o;\n      return (o = this.getAttribute(\"cast-receiver\")) != null ? o : void 0;\n    }\n    set castReceiver(o) {\n      this.castReceiver != o && this.setAttribute(\"cast-receiver\", `${o}`);\n    }\n    get castSrc() {\n      var o, m3, A3;\n      return (A3 = (m3 = this.getAttribute(\"cast-src\")) != null ? m3 : (o = this.querySelector(\"source\")) == null ? void 0 : o.src) != null ? A3 : this.currentSrc;\n    }\n    set castSrc(o) {\n      this.castSrc != o && this.setAttribute(\"cast-src\", `${o}`);\n    }\n    get castContentType() {\n      var o;\n      return (o = this.getAttribute(\"cast-content-type\")) != null ? o : void 0;\n    }\n    set castContentType(o) {\n      this.setAttribute(\"cast-content-type\", `${o}`);\n    }\n    get castStreamType() {\n      var o, m3;\n      return (m3 = (o = this.getAttribute(\"cast-stream-type\")) != null ? o : this.streamType) != null ? m3 : void 0;\n    }\n    set castStreamType(o) {\n      this.setAttribute(\"cast-stream-type\", `${o}`);\n    }\n    get readyState() {\n      if (r9(this, a2, b4)) switch (r9(this, a2, b4).playerState) {\n        case chrome.cast.media.PlayerState.IDLE:\n          return 0;\n        case chrome.cast.media.PlayerState.BUFFERING:\n          return 2;\n        default:\n          return 3;\n      }\n      return super.readyState;\n    }\n    get paused() {\n      return r9(this, a2, b4) ? r9(this, a2, b4).isPaused : super.paused;\n    }\n    get muted() {\n      var o;\n      return r9(this, a2, b4) ? (o = r9(this, a2, b4)) == null ? void 0 : o.isMuted : super.muted;\n    }\n    set muted(o) {\n      var m3;\n      if (r9(this, a2, b4)) {\n        (o && !r9(this, a2, b4).isMuted || !o && r9(this, a2, b4).isMuted) && ((m3 = r9(this, a2, b4).controller) == null || m3.muteOrUnmute());\n        return;\n      }\n      super.muted = o;\n    }\n    get volume() {\n      var o, m3;\n      return r9(this, a2, b4) ? (m3 = (o = r9(this, a2, b4)) == null ? void 0 : o.volumeLevel) != null ? m3 : 1 : super.volume;\n    }\n    set volume(o) {\n      var m3;\n      if (r9(this, a2, b4)) {\n        r9(this, a2, b4).volumeLevel = +o, (m3 = r9(this, a2, b4).controller) == null || m3.setVolumeLevel();\n        return;\n      }\n      super.volume = o;\n    }\n    get duration() {\n      var o, m3, A3;\n      return r9(this, a2, b4) && ((o = r9(this, a2, b4)) != null && o.isMediaLoaded) ? (A3 = (m3 = r9(this, a2, b4)) == null ? void 0 : m3.duration) != null ? A3 : NaN : super.duration;\n    }\n    get currentTime() {\n      var o, m3, A3;\n      return r9(this, a2, b4) && ((o = r9(this, a2, b4)) != null && o.isMediaLoaded) ? (A3 = (m3 = r9(this, a2, b4)) == null ? void 0 : m3.currentTime) != null ? A3 : 0 : super.currentTime;\n    }\n    set currentTime(o) {\n      var m3;\n      if (r9(this, a2, b4)) {\n        r9(this, a2, b4).currentTime = o, (m3 = r9(this, a2, b4).controller) == null || m3.seek();\n        return;\n      }\n      super.currentTime = o;\n    }\n  }, s = /* @__PURE__ */ new WeakMap(), n2 = /* @__PURE__ */ new WeakMap(), l = /* @__PURE__ */ new WeakMap(), a2 = /* @__PURE__ */ new WeakSet(), b4 = function() {\n    var o, m3;\n    return (m3 = (o = V2.get(this.remote)) == null ? void 0 : o.getCastPlayer) == null ? void 0 : m3.call(o);\n  }, E4 = /* @__PURE__ */ new WeakSet(), Ht3 = function() {\n    return __async(this, null, function* () {\n      r9(this, s).paused = $e3(e.prototype, this, \"paused\"), $e3(e.prototype, this, \"pause\").call(this), this.muted = $e3(e.prototype, this, \"muted\");\n      try {\n        yield this.load();\n      } catch (o) {\n        console.error(o);\n      }\n    });\n  }, v3(e, \"observedAttributes\", [...(i2 = t2.observedAttributes) != null ? i2 : [], \"cast-src\", \"cast-content-type\", \"cast-stream-type\", \"cast-receiver\"]), e;\n};\nvar q2 = class extends Event {\n  constructor(e, s) {\n    super(e);\n    v3(this, \"track\");\n    this.track = s.track;\n  }\n};\nvar kt2 = /* @__PURE__ */ new WeakMap();\nfunction d2(t2) {\n  var i2;\n  return (i2 = kt2.get(t2)) != null ? i2 : vi2(t2, {});\n}\nfunction vi2(t2, i2) {\n  let e = kt2.get(t2);\n  return e || kt2.set(t2, e = {}), Object.assign(e, i2);\n}\nfunction nt3(t2, i2) {\n  let e = t2.videoTracks;\n  d2(i2).media = t2, d2(i2).renditionSet || (d2(i2).renditionSet = /* @__PURE__ */ new Set());\n  let s = d2(e).trackSet;\n  s.add(i2);\n  let n2 = s.size - 1;\n  n2 in ue3.prototype || Object.defineProperty(ue3.prototype, n2, { get() {\n    return [...d2(this).trackSet][n2];\n  } }), queueMicrotask(() => {\n    e.dispatchEvent(new q2(\"addtrack\", { track: i2 }));\n  });\n}\nfunction ot3(t2) {\n  var s;\n  let i2 = (s = d2(t2).media) == null ? void 0 : s.videoTracks;\n  if (!i2) return;\n  d2(i2).trackSet.delete(t2), queueMicrotask(() => {\n    i2.dispatchEvent(new q2(\"removetrack\", { track: t2 }));\n  });\n}\nfunction $t(t2) {\n  var s;\n  let i2 = (s = d2(t2).media.videoTracks) != null ? s : [], e = false;\n  for (let n2 of i2) n2 !== t2 && (n2.selected = false, e = true);\n  if (e) {\n    if (d2(i2).changeRequested) return;\n    d2(i2).changeRequested = true, queueMicrotask(() => {\n      delete d2(i2).changeRequested, i2.dispatchEvent(new Event(\"change\"));\n    });\n  }\n}\nvar Y2;\nvar H3;\nvar $3;\nvar ce3;\nvar Ge2;\nvar ue3 = class extends EventTarget {\n  constructor() {\n    super();\n    u(this, ce3);\n    u(this, Y2, void 0);\n    u(this, H3, void 0);\n    u(this, $3, void 0);\n    d2(this).trackSet = /* @__PURE__ */ new Set();\n  }\n  [Symbol.iterator]() {\n    return r9(this, ce3, Ge2).values();\n  }\n  get length() {\n    return r9(this, ce3, Ge2).size;\n  }\n  getTrackById(e) {\n    var s;\n    return (s = [...r9(this, ce3, Ge2)].find((n2) => n2.id === e)) != null ? s : null;\n  }\n  get selectedIndex() {\n    return [...r9(this, ce3, Ge2)].findIndex((e) => e.selected);\n  }\n  get onaddtrack() {\n    return r9(this, Y2);\n  }\n  set onaddtrack(e) {\n    r9(this, Y2) && (this.removeEventListener(\"addtrack\", r9(this, Y2)), h2(this, Y2, void 0)), typeof e == \"function\" && (h2(this, Y2, e), this.addEventListener(\"addtrack\", e));\n  }\n  get onremovetrack() {\n    return r9(this, H3);\n  }\n  set onremovetrack(e) {\n    r9(this, H3) && (this.removeEventListener(\"removetrack\", r9(this, H3)), h2(this, H3, void 0)), typeof e == \"function\" && (h2(this, H3, e), this.addEventListener(\"removetrack\", e));\n  }\n  get onchange() {\n    return r9(this, $3);\n  }\n  set onchange(e) {\n    r9(this, $3) && (this.removeEventListener(\"change\", r9(this, $3)), h2(this, $3, void 0)), typeof e == \"function\" && (h2(this, $3, e), this.addEventListener(\"change\", e));\n  }\n};\nY2 = /* @__PURE__ */ new WeakMap(), H3 = /* @__PURE__ */ new WeakMap(), $3 = /* @__PURE__ */ new WeakMap(), ce3 = /* @__PURE__ */ new WeakSet(), Ge2 = function() {\n  return d2(this).trackSet;\n};\nvar B3 = class extends Event {\n  constructor(e, s) {\n    super(e);\n    v3(this, \"rendition\");\n    this.rendition = s.rendition;\n  }\n};\nfunction zt2(t2, i2) {\n  let e = d2(t2).media.videoRenditions;\n  d2(i2).media = d2(t2).media, d2(i2).track = t2;\n  let s = d2(t2).renditionSet;\n  s.add(i2);\n  let n2 = s.size - 1;\n  n2 in he3.prototype || Object.defineProperty(he3.prototype, n2, { get() {\n    return Ee3(this)[n2];\n  } }), queueMicrotask(() => {\n    t2.selected && e.dispatchEvent(new B3(\"addrendition\", { rendition: i2 }));\n  });\n}\nfunction Xt3(t2) {\n  let i2 = d2(t2).media.videoRenditions, e = d2(t2).track;\n  d2(e).renditionSet.delete(t2), queueMicrotask(() => {\n    d2(t2).track.selected && i2.dispatchEvent(new B3(\"removerendition\", { rendition: t2 }));\n  });\n}\nfunction Jt3(t2) {\n  let i2 = d2(t2).media.videoRenditions;\n  !i2 || d2(i2).changeRequested || (d2(i2).changeRequested = true, queueMicrotask(() => {\n    delete d2(i2).changeRequested, d2(t2).track.selected && i2.dispatchEvent(new Event(\"change\"));\n  }));\n}\nfunction Ee3(t2) {\n  return [...d2(t2).media.videoTracks].filter((e) => e.selected).flatMap((e) => [...d2(e).renditionSet]);\n}\nvar z;\nvar X3;\nvar J2;\nvar he3 = class extends EventTarget {\n  constructor() {\n    super(...arguments);\n    u(this, z, void 0);\n    u(this, X3, void 0);\n    u(this, J2, void 0);\n  }\n  [Symbol.iterator]() {\n    return Ee3(this).values();\n  }\n  get length() {\n    return Ee3(this).length;\n  }\n  getRenditionById(e) {\n    var s;\n    return (s = Ee3(this).find((n2) => `${n2.id}` == `${e}`)) != null ? s : null;\n  }\n  get selectedIndex() {\n    return Ee3(this).findIndex((e) => e.selected);\n  }\n  set selectedIndex(e) {\n    for (let [s, n2] of Ee3(this).entries()) n2.selected = s === e;\n  }\n  get onaddrendition() {\n    return r9(this, z);\n  }\n  set onaddrendition(e) {\n    r9(this, z) && (this.removeEventListener(\"addrendition\", r9(this, z)), h2(this, z, void 0)), typeof e == \"function\" && (h2(this, z, e), this.addEventListener(\"addrendition\", e));\n  }\n  get onremoverendition() {\n    return r9(this, X3);\n  }\n  set onremoverendition(e) {\n    r9(this, X3) && (this.removeEventListener(\"removerendition\", r9(this, X3)), h2(this, X3, void 0)), typeof e == \"function\" && (h2(this, X3, e), this.addEventListener(\"removerendition\", e));\n  }\n  get onchange() {\n    return r9(this, J2);\n  }\n  set onchange(e) {\n    r9(this, J2) && (this.removeEventListener(\"change\", r9(this, J2)), h2(this, J2, void 0)), typeof e == \"function\" && (h2(this, J2, e), this.addEventListener(\"change\", e));\n  }\n};\nz = /* @__PURE__ */ new WeakMap(), X3 = /* @__PURE__ */ new WeakMap(), J2 = /* @__PURE__ */ new WeakMap();\nvar ve3;\nvar Fe2 = class {\n  constructor() {\n    v3(this, \"src\");\n    v3(this, \"id\");\n    v3(this, \"width\");\n    v3(this, \"height\");\n    v3(this, \"bitrate\");\n    v3(this, \"frameRate\");\n    v3(this, \"codec\");\n    u(this, ve3, false);\n  }\n  get selected() {\n    return r9(this, ve3);\n  }\n  set selected(i2) {\n    r9(this, ve3) !== i2 && (h2(this, ve3, i2), Jt3(this));\n  }\n};\nve3 = /* @__PURE__ */ new WeakMap();\nvar be2;\nvar Te2 = class {\n  constructor() {\n    v3(this, \"id\");\n    v3(this, \"kind\");\n    v3(this, \"label\", \"\");\n    v3(this, \"language\", \"\");\n    v3(this, \"sourceBuffer\");\n    u(this, be2, false);\n  }\n  addRendition(i2, e, s, n2, l, a2) {\n    let p3 = new Fe2();\n    return p3.src = i2, p3.width = e, p3.height = s, p3.frameRate = a2, p3.bitrate = l, p3.codec = n2, zt2(this, p3), p3;\n  }\n  removeRendition(i2) {\n    Xt3(i2);\n  }\n  get selected() {\n    return r9(this, be2);\n  }\n  set selected(i2) {\n    r9(this, be2) !== i2 && (h2(this, be2, i2), i2 === true && $t(this));\n  }\n};\nbe2 = /* @__PURE__ */ new WeakMap();\nfunction Qt3(t2, i2) {\n  let e = d2(t2).media.audioRenditions;\n  d2(i2).media = d2(t2).media, d2(i2).track = t2;\n  let s = d2(t2).renditionSet;\n  s.add(i2);\n  let n2 = s.size - 1;\n  n2 in le3.prototype || Object.defineProperty(le3.prototype, n2, { get() {\n    return ye3(this)[n2];\n  } }), queueMicrotask(() => {\n    t2.enabled && e.dispatchEvent(new B3(\"addrendition\", { rendition: i2 }));\n  });\n}\nfunction Zt2(t2) {\n  let i2 = d2(t2).media.audioRenditions, e = d2(t2).track;\n  d2(e).renditionSet.delete(t2), queueMicrotask(() => {\n    d2(t2).track.enabled && i2.dispatchEvent(new B3(\"removerendition\", { rendition: t2 }));\n  });\n}\nfunction ei2(t2) {\n  let i2 = d2(t2).media.audioRenditions;\n  !i2 || d2(i2).changeRequested || (d2(i2).changeRequested = true, queueMicrotask(() => {\n    delete d2(i2).changeRequested, d2(t2).track.enabled && i2.dispatchEvent(new Event(\"change\"));\n  }));\n}\nfunction ye3(t2) {\n  return [...d2(t2).media.audioTracks].filter((e) => e.enabled).flatMap((e) => [...d2(e).renditionSet]);\n}\nvar Q2;\nvar Z3;\nvar ee3;\nvar le3 = class extends EventTarget {\n  constructor() {\n    super(...arguments);\n    u(this, Q2, void 0);\n    u(this, Z3, void 0);\n    u(this, ee3, void 0);\n  }\n  [Symbol.iterator]() {\n    return ye3(this).values();\n  }\n  get length() {\n    return ye3(this).length;\n  }\n  getRenditionById(e) {\n    var s;\n    return (s = ye3(this).find((n2) => `${n2.id}` == `${e}`)) != null ? s : null;\n  }\n  get selectedIndex() {\n    return ye3(this).findIndex((e) => e.selected);\n  }\n  set selectedIndex(e) {\n    for (let [s, n2] of ye3(this).entries()) n2.selected = s === e;\n  }\n  get onaddrendition() {\n    return r9(this, Q2);\n  }\n  set onaddrendition(e) {\n    r9(this, Q2) && (this.removeEventListener(\"addrendition\", r9(this, Q2)), h2(this, Q2, void 0)), typeof e == \"function\" && (h2(this, Q2, e), this.addEventListener(\"addrendition\", e));\n  }\n  get onremoverendition() {\n    return r9(this, Z3);\n  }\n  set onremoverendition(e) {\n    r9(this, Z3) && (this.removeEventListener(\"removerendition\", r9(this, Z3)), h2(this, Z3, void 0)), typeof e == \"function\" && (h2(this, Z3, e), this.addEventListener(\"removerendition\", e));\n  }\n  get onchange() {\n    return r9(this, ee3);\n  }\n  set onchange(e) {\n    r9(this, ee3) && (this.removeEventListener(\"change\", r9(this, ee3)), h2(this, ee3, void 0)), typeof e == \"function\" && (h2(this, ee3, e), this.addEventListener(\"change\", e));\n  }\n};\nQ2 = /* @__PURE__ */ new WeakMap(), Z3 = /* @__PURE__ */ new WeakMap(), ee3 = /* @__PURE__ */ new WeakMap();\nvar Ae;\nvar qe3 = class {\n  constructor() {\n    v3(this, \"src\");\n    v3(this, \"id\");\n    v3(this, \"bitrate\");\n    v3(this, \"codec\");\n    u(this, Ae, false);\n  }\n  get selected() {\n    return r9(this, Ae);\n  }\n  set selected(i2) {\n    r9(this, Ae) !== i2 && (h2(this, Ae, i2), ei2(this));\n  }\n};\nAe = /* @__PURE__ */ new WeakMap();\nfunction dt3(t2, i2) {\n  let e = t2.audioTracks;\n  d2(i2).media = t2, d2(i2).renditionSet || (d2(i2).renditionSet = /* @__PURE__ */ new Set());\n  let s = d2(e).trackSet;\n  s.add(i2);\n  let n2 = s.size - 1;\n  n2 in fe3.prototype || Object.defineProperty(fe3.prototype, n2, { get() {\n    return [...d2(this).trackSet][n2];\n  } }), queueMicrotask(() => {\n    e.dispatchEvent(new q2(\"addtrack\", { track: i2 }));\n  });\n}\nfunction ct2(t2) {\n  var s;\n  let i2 = (s = d2(t2).media) == null ? void 0 : s.audioTracks;\n  if (!i2) return;\n  d2(i2).trackSet.delete(t2), queueMicrotask(() => {\n    i2.dispatchEvent(new q2(\"removetrack\", { track: t2 }));\n  });\n}\nfunction ti2(t2) {\n  let i2 = d2(t2).media.audioTracks;\n  !i2 || d2(i2).changeRequested || (d2(i2).changeRequested = true, queueMicrotask(() => {\n    delete d2(i2).changeRequested, i2.dispatchEvent(new Event(\"change\"));\n  }));\n}\nvar te3;\nvar ie3;\nvar re2;\nvar ke3;\nvar at3;\nvar fe3 = class extends EventTarget {\n  constructor() {\n    super();\n    u(this, ke3);\n    u(this, te3, void 0);\n    u(this, ie3, void 0);\n    u(this, re2, void 0);\n    d2(this).trackSet = /* @__PURE__ */ new Set();\n  }\n  [Symbol.iterator]() {\n    return r9(this, ke3, at3).values();\n  }\n  get length() {\n    return r9(this, ke3, at3).size;\n  }\n  getTrackById(e) {\n    var s;\n    return (s = [...r9(this, ke3, at3)].find((n2) => n2.id === e)) != null ? s : null;\n  }\n  get onaddtrack() {\n    return r9(this, te3);\n  }\n  set onaddtrack(e) {\n    r9(this, te3) && (this.removeEventListener(\"addtrack\", r9(this, te3)), h2(this, te3, void 0)), typeof e == \"function\" && (h2(this, te3, e), this.addEventListener(\"addtrack\", e));\n  }\n  get onremovetrack() {\n    return r9(this, ie3);\n  }\n  set onremovetrack(e) {\n    r9(this, ie3) && (this.removeEventListener(\"removetrack\", r9(this, ie3)), h2(this, ie3, void 0)), typeof e == \"function\" && (h2(this, ie3, e), this.addEventListener(\"removetrack\", e));\n  }\n  get onchange() {\n    return r9(this, re2);\n  }\n  set onchange(e) {\n    r9(this, re2) && (this.removeEventListener(\"change\", r9(this, re2)), h2(this, re2, void 0)), typeof e == \"function\" && (h2(this, re2, e), this.addEventListener(\"change\", e));\n  }\n};\nte3 = /* @__PURE__ */ new WeakMap(), ie3 = /* @__PURE__ */ new WeakMap(), re2 = /* @__PURE__ */ new WeakMap(), ke3 = /* @__PURE__ */ new WeakSet(), at3 = function() {\n  return d2(this).trackSet;\n};\nvar Re2;\nvar Se = class {\n  constructor() {\n    v3(this, \"id\");\n    v3(this, \"kind\");\n    v3(this, \"label\", \"\");\n    v3(this, \"language\", \"\");\n    v3(this, \"sourceBuffer\");\n    u(this, Re2, false);\n  }\n  addRendition(i2, e, s) {\n    let n2 = new qe3();\n    return n2.src = i2, n2.codec = e, n2.bitrate = s, Qt3(this, n2), n2;\n  }\n  removeRendition(i2) {\n    Zt2(i2);\n  }\n  get enabled() {\n    return r9(this, Re2);\n  }\n  set enabled(i2) {\n    r9(this, Re2) !== i2 && (h2(this, Re2, i2), ti2(this));\n  }\n};\nRe2 = /* @__PURE__ */ new WeakMap();\nvar ii2 = ut2(globalThis.HTMLMediaElement, \"video\");\nvar ri2 = ut2(globalThis.HTMLMediaElement, \"audio\");\nfunction si2(t2) {\n  if (!(t2 != null && t2.prototype)) return t2;\n  let i2 = ut2(t2, \"video\");\n  (!i2 || `${i2}`.includes(\"[native code]\")) && Object.defineProperty(t2.prototype, \"videoTracks\", { get() {\n    return bi2(this);\n  } });\n  let e = ut2(t2, \"audio\");\n  (!e || `${e}`.includes(\"[native code]\")) && Object.defineProperty(t2.prototype, \"audioTracks\", { get() {\n    return Ti2(this);\n  } }), \"addVideoTrack\" in t2.prototype || (t2.prototype.addVideoTrack = function(l, a2 = \"\", p3 = \"\") {\n    let E4 = new Te2();\n    return E4.kind = l, E4.label = a2, E4.language = p3, nt3(this, E4), E4;\n  }), \"removeVideoTrack\" in t2.prototype || (t2.prototype.removeVideoTrack = ot3), \"addAudioTrack\" in t2.prototype || (t2.prototype.addAudioTrack = function(l, a2 = \"\", p3 = \"\") {\n    let E4 = new Se();\n    return E4.kind = l, E4.label = a2, E4.language = p3, dt3(this, E4), E4;\n  }), \"removeAudioTrack\" in t2.prototype || (t2.prototype.removeAudioTrack = ct2), \"videoRenditions\" in t2.prototype || Object.defineProperty(t2.prototype, \"videoRenditions\", { get() {\n    return s(this);\n  } });\n  let s = (l) => {\n    let a2 = d2(l).videoRenditions;\n    return a2 || (a2 = new he3(), d2(a2).media = l, d2(l).videoRenditions = a2), a2;\n  };\n  \"audioRenditions\" in t2.prototype || Object.defineProperty(t2.prototype, \"audioRenditions\", { get() {\n    return n2(this);\n  } });\n  let n2 = (l) => {\n    let a2 = d2(l).audioRenditions;\n    return a2 || (a2 = new le3(), d2(a2).media = l, d2(l).audioRenditions = a2), a2;\n  };\n  return t2;\n}\nfunction ut2(t2, i2) {\n  var e;\n  if (t2 != null && t2.prototype) return (e = Object.getOwnPropertyDescriptor(t2.prototype, `${i2}Tracks`)) == null ? void 0 : e.get;\n}\nfunction bi2(t2) {\n  var e;\n  let i2 = d2(t2).videoTracks;\n  if (!i2 && (i2 = new ue3(), d2(t2).videoTracks = i2, ii2)) {\n    let s = ii2.call((e = t2.nativeEl) != null ? e : t2);\n    for (let n2 of s) nt3(t2, n2);\n    s.addEventListener(\"change\", () => {\n      i2.dispatchEvent(new Event(\"change\"));\n    }), s.addEventListener(\"addtrack\", (n2) => {\n      if ([...i2].some((l) => l instanceof Te2)) {\n        for (let l of s) ot3(l);\n        return;\n      }\n      nt3(t2, n2.track);\n    }), s.addEventListener(\"removetrack\", (n2) => {\n      ot3(n2.track);\n    });\n  }\n  return i2;\n}\nfunction Ti2(t2) {\n  var e;\n  let i2 = d2(t2).audioTracks;\n  if (!i2 && (i2 = new fe3(), d2(t2).audioTracks = i2, ri2)) {\n    let s = ri2.call((e = t2.nativeEl) != null ? e : t2);\n    for (let n2 of s) dt3(t2, n2);\n    s.addEventListener(\"change\", () => {\n      i2.dispatchEvent(new Event(\"change\"));\n    }), s.addEventListener(\"addtrack\", (n2) => {\n      if ([...i2].some((l) => l instanceof Se)) {\n        for (let l of s) ct2(l);\n        return;\n      }\n      dt3(t2, n2.track);\n    }), s.addEventListener(\"removetrack\", (n2) => {\n      ct2(n2.track);\n    });\n  }\n  return i2;\n}\nEt2.push(\"castchange\", \"entercast\", \"leavecast\");\nvar c = { BEACON_COLLECTION_DOMAIN: \"beacon-collection-domain\", CUSTOM_DOMAIN: \"custom-domain\", DEBUG: \"debug\", DISABLE_TRACKING: \"disable-tracking\", DISABLE_COOKIES: \"disable-cookies\", DRM_TOKEN: \"drm-token\", ENV_KEY: \"env-key\", MAX_RESOLUTION: \"max-resolution\", MIN_RESOLUTION: \"min-resolution\", RENDITION_ORDER: \"rendition-order\", PROGRAM_START_TIME: \"program-start-time\", PROGRAM_END_TIME: \"program-end-time\", METADATA_URL: \"metadata-url\", PLAYBACK_ID: \"playback-id\", PLAYER_SOFTWARE_NAME: \"player-software-name\", PLAYER_SOFTWARE_VERSION: \"player-software-version\", PREFER_CMCD: \"prefer-cmcd\", PREFER_PLAYBACK: \"prefer-playback\", START_TIME: \"start-time\", STREAM_TYPE: \"stream-type\", TARGET_LIVE_WINDOW: \"target-live-window\", LIVE_EDGE_OFFSET: \"live-edge-offset\", TYPE: \"type\" };\nvar qi2 = Object.values(c);\nvar Bi2 = _t2();\nvar Ui2 = \"mux-video\";\nvar x2;\nvar Ce3;\nvar Ue2;\nvar Oe3;\nvar We3;\nvar je3;\nvar Ke3;\nvar Ye3;\nvar _e3;\nvar lt3;\nvar Rt2 = class extends Xe3 {\n  constructor() {\n    super();\n    u(this, _e3);\n    u(this, x2, void 0);\n    u(this, Ce3, void 0);\n    u(this, Ue2, void 0);\n    u(this, Oe3, {});\n    u(this, We3, void 0);\n    u(this, je3, void 0);\n    u(this, Ke3, void 0);\n    u(this, Ye3, void 0);\n    h2(this, Ue2, Xt2());\n  }\n  static get observedAttributes() {\n    var e;\n    return [...qi2, ...(e = Xe3.observedAttributes) != null ? e : []];\n  }\n  get preferCmcd() {\n    var e;\n    return (e = this.getAttribute(c.PREFER_CMCD)) != null ? e : void 0;\n  }\n  set preferCmcd(e) {\n    e !== this.preferCmcd && (e ? dt2.includes(e) ? this.setAttribute(c.PREFER_CMCD, e) : console.warn(`Invalid value for preferCmcd. Must be one of ${dt2.join()}`) : this.removeAttribute(c.PREFER_CMCD));\n  }\n  get playerInitTime() {\n    return r9(this, Ue2);\n  }\n  get playerSoftwareName() {\n    var e;\n    return (e = r9(this, Ke3)) != null ? e : Ui2;\n  }\n  set playerSoftwareName(e) {\n    h2(this, Ke3, e);\n  }\n  get playerSoftwareVersion() {\n    var e;\n    return (e = r9(this, je3)) != null ? e : Bi2;\n  }\n  set playerSoftwareVersion(e) {\n    h2(this, je3, e);\n  }\n  get _hls() {\n    var e;\n    return (e = r9(this, x2)) == null ? void 0 : e.engine;\n  }\n  get mux() {\n    var e;\n    return (e = this.nativeEl) == null ? void 0 : e.mux;\n  }\n  get error() {\n    var e;\n    return (e = jt2(this.nativeEl)) != null ? e : null;\n  }\n  get errorTranslator() {\n    return r9(this, Ye3);\n  }\n  set errorTranslator(e) {\n    h2(this, Ye3, e);\n  }\n  get src() {\n    return this.getAttribute(\"src\");\n  }\n  set src(e) {\n    e !== this.src && (e == null ? this.removeAttribute(\"src\") : this.setAttribute(\"src\", e));\n  }\n  get type() {\n    var e;\n    return (e = this.getAttribute(c.TYPE)) != null ? e : void 0;\n  }\n  set type(e) {\n    e !== this.type && (e ? this.setAttribute(c.TYPE, e) : this.removeAttribute(c.TYPE));\n  }\n  get autoplay() {\n    let e = this.getAttribute(\"autoplay\");\n    return e === null ? false : e === \"\" ? true : e;\n  }\n  set autoplay(e) {\n    let s = this.autoplay;\n    e !== s && (e ? this.setAttribute(\"autoplay\", typeof e == \"string\" ? e : \"\") : this.removeAttribute(\"autoplay\"));\n  }\n  get preload() {\n    let e = this.getAttribute(\"preload\");\n    return e === \"\" ? \"auto\" : [\"none\", \"metadata\", \"auto\"].includes(e) ? e : super.preload;\n  }\n  set preload(e) {\n    e != this.getAttribute(\"preload\") && ([\"\", \"none\", \"metadata\", \"auto\"].includes(e) ? this.setAttribute(\"preload\", e) : this.removeAttribute(\"preload\"));\n  }\n  get debug() {\n    return this.getAttribute(c.DEBUG) != null;\n  }\n  set debug(e) {\n    e !== this.debug && (e ? this.setAttribute(c.DEBUG, \"\") : this.removeAttribute(c.DEBUG));\n  }\n  get disableTracking() {\n    return this.hasAttribute(c.DISABLE_TRACKING);\n  }\n  set disableTracking(e) {\n    e !== this.disableTracking && this.toggleAttribute(c.DISABLE_TRACKING, !!e);\n  }\n  get disableCookies() {\n    return this.hasAttribute(c.DISABLE_COOKIES);\n  }\n  set disableCookies(e) {\n    e !== this.disableCookies && (e ? this.setAttribute(c.DISABLE_COOKIES, \"\") : this.removeAttribute(c.DISABLE_COOKIES));\n  }\n  get startTime() {\n    let e = this.getAttribute(c.START_TIME);\n    if (e == null) return;\n    let s = +e;\n    return Number.isNaN(s) ? void 0 : s;\n  }\n  set startTime(e) {\n    e !== this.startTime && (e == null ? this.removeAttribute(c.START_TIME) : this.setAttribute(c.START_TIME, `${e}`));\n  }\n  get playbackId() {\n    var e;\n    return this.hasAttribute(c.PLAYBACK_ID) ? this.getAttribute(c.PLAYBACK_ID) : (e = be(this.src)) != null ? e : void 0;\n  }\n  set playbackId(e) {\n    e !== this.playbackId && (e ? this.setAttribute(c.PLAYBACK_ID, e) : this.removeAttribute(c.PLAYBACK_ID));\n  }\n  get maxResolution() {\n    var e;\n    return (e = this.getAttribute(c.MAX_RESOLUTION)) != null ? e : void 0;\n  }\n  set maxResolution(e) {\n    e !== this.maxResolution && (e ? this.setAttribute(c.MAX_RESOLUTION, e) : this.removeAttribute(c.MAX_RESOLUTION));\n  }\n  get minResolution() {\n    var e;\n    return (e = this.getAttribute(c.MIN_RESOLUTION)) != null ? e : void 0;\n  }\n  set minResolution(e) {\n    e !== this.minResolution && (e ? this.setAttribute(c.MIN_RESOLUTION, e) : this.removeAttribute(c.MIN_RESOLUTION));\n  }\n  get renditionOrder() {\n    var e;\n    return (e = this.getAttribute(c.RENDITION_ORDER)) != null ? e : void 0;\n  }\n  set renditionOrder(e) {\n    e !== this.renditionOrder && (e ? this.setAttribute(c.RENDITION_ORDER, e) : this.removeAttribute(c.RENDITION_ORDER));\n  }\n  get programStartTime() {\n    let e = this.getAttribute(c.PROGRAM_START_TIME);\n    if (e == null) return;\n    let s = +e;\n    return Number.isNaN(s) ? void 0 : s;\n  }\n  set programStartTime(e) {\n    e == null ? this.removeAttribute(c.PROGRAM_START_TIME) : this.setAttribute(c.PROGRAM_START_TIME, `${e}`);\n  }\n  get programEndTime() {\n    let e = this.getAttribute(c.PROGRAM_END_TIME);\n    if (e == null) return;\n    let s = +e;\n    return Number.isNaN(s) ? void 0 : s;\n  }\n  set programEndTime(e) {\n    e == null ? this.removeAttribute(c.PROGRAM_END_TIME) : this.setAttribute(c.PROGRAM_END_TIME, `${e}`);\n  }\n  get customDomain() {\n    var e;\n    return (e = this.getAttribute(c.CUSTOM_DOMAIN)) != null ? e : void 0;\n  }\n  set customDomain(e) {\n    e !== this.customDomain && (e ? this.setAttribute(c.CUSTOM_DOMAIN, e) : this.removeAttribute(c.CUSTOM_DOMAIN));\n  }\n  get drmToken() {\n    var e;\n    return (e = this.getAttribute(c.DRM_TOKEN)) != null ? e : void 0;\n  }\n  set drmToken(e) {\n    e !== this.drmToken && (e ? this.setAttribute(c.DRM_TOKEN, e) : this.removeAttribute(c.DRM_TOKEN));\n  }\n  get ended() {\n    return Je2(this.nativeEl, this._hls);\n  }\n  get envKey() {\n    var e;\n    return (e = this.getAttribute(c.ENV_KEY)) != null ? e : void 0;\n  }\n  set envKey(e) {\n    e !== this.envKey && (e ? this.setAttribute(c.ENV_KEY, e) : this.removeAttribute(c.ENV_KEY));\n  }\n  get beaconCollectionDomain() {\n    var e;\n    return (e = this.getAttribute(c.BEACON_COLLECTION_DOMAIN)) != null ? e : void 0;\n  }\n  set beaconCollectionDomain(e) {\n    e !== this.beaconCollectionDomain && (e ? this.setAttribute(c.BEACON_COLLECTION_DOMAIN, e) : this.removeAttribute(c.BEACON_COLLECTION_DOMAIN));\n  }\n  get streamType() {\n    var e;\n    return (e = this.getAttribute(c.STREAM_TYPE)) != null ? e : Te(this.nativeEl);\n  }\n  set streamType(e) {\n    e !== this.streamType && (e ? this.setAttribute(c.STREAM_TYPE, e) : this.removeAttribute(c.STREAM_TYPE));\n  }\n  get targetLiveWindow() {\n    return this.hasAttribute(c.TARGET_LIVE_WINDOW) ? +this.getAttribute(c.TARGET_LIVE_WINDOW) : Jt2(this.nativeEl);\n  }\n  set targetLiveWindow(e) {\n    e != this.targetLiveWindow && (e == null ? this.removeAttribute(c.TARGET_LIVE_WINDOW) : this.setAttribute(c.TARGET_LIVE_WINDOW, `${+e}`));\n  }\n  get liveEdgeStart() {\n    var e, s;\n    if (this.hasAttribute(c.LIVE_EDGE_OFFSET)) {\n      let { liveEdgeOffset: n2 } = this, l = (e = this.nativeEl.seekable.end(0)) != null ? e : 0, a2 = (s = this.nativeEl.seekable.start(0)) != null ? s : 0;\n      return Math.max(a2, l - n2);\n    }\n    return Qt2(this.nativeEl);\n  }\n  get liveEdgeOffset() {\n    if (this.hasAttribute(c.LIVE_EDGE_OFFSET)) return +this.getAttribute(c.LIVE_EDGE_OFFSET);\n  }\n  set liveEdgeOffset(e) {\n    e != this.targetLiveWindow && (e == null ? this.removeAttribute(c.LIVE_EDGE_OFFSET) : this.setAttribute(c.LIVE_EDGE_OFFSET, `${+e}`));\n  }\n  get seekable() {\n    return q(this.nativeEl);\n  }\n  addCuePoints(e) {\n    return __async(this, null, function* () {\n      return ie2(this.nativeEl, e);\n    });\n  }\n  get activeCuePoint() {\n    return ce2(this.nativeEl);\n  }\n  get cuePoints() {\n    return He(this.nativeEl);\n  }\n  addChapters(e) {\n    return __async(this, null, function* () {\n      return le2(this.nativeEl, e);\n    });\n  }\n  get activeChapter() {\n    return pe(this.nativeEl);\n  }\n  get chapters() {\n    return Ne2(this.nativeEl);\n  }\n  getStartDate() {\n    return _e2(this.nativeEl, this._hls);\n  }\n  get currentPdt() {\n    return Oe2(this.nativeEl, this._hls);\n  }\n  get preferPlayback() {\n    let e = this.getAttribute(c.PREFER_PLAYBACK);\n    if (e === _.MSE || e === _.NATIVE) return e;\n  }\n  set preferPlayback(e) {\n    e !== this.preferPlayback && (e === _.MSE || e === _.NATIVE ? this.setAttribute(c.PREFER_PLAYBACK, e) : this.removeAttribute(c.PREFER_PLAYBACK));\n  }\n  get metadata() {\n    return __spreadValues(__spreadValues({}, this.getAttributeNames().filter((s) => s.startsWith(\"metadata-\") && ![c.METADATA_URL].includes(s)).reduce((s, n2) => {\n      let l = this.getAttribute(n2);\n      return l != null && (s[n2.replace(/^metadata-/, \"\").replace(/-/g, \"_\")] = l), s;\n    }, {})), r9(this, Oe3));\n  }\n  set metadata(e) {\n    h2(this, Oe3, e != null ? e : {}), this.mux && this.mux.emit(\"hb\", r9(this, Oe3));\n  }\n  get _hlsConfig() {\n    return r9(this, We3);\n  }\n  set _hlsConfig(e) {\n    h2(this, We3, e);\n  }\n  load() {\n    h2(this, x2, Zt(this, this.nativeEl, r9(this, x2)));\n  }\n  unload() {\n    Qe2(this.nativeEl, r9(this, x2)), h2(this, x2, void 0);\n  }\n  attributeChangedCallback(e, s, n2) {\n    var a2, p3;\n    switch (Xe3.observedAttributes.includes(e) && ![\"src\", \"autoplay\", \"preload\"].includes(e) && super.attributeChangedCallback(e, s, n2), e) {\n      case c.PLAYER_SOFTWARE_NAME:\n        this.playerSoftwareName = n2 != null ? n2 : void 0;\n        break;\n      case c.PLAYER_SOFTWARE_VERSION:\n        this.playerSoftwareVersion = n2 != null ? n2 : void 0;\n        break;\n      case \"src\": {\n        let E4 = !!s, I4 = !!n2;\n        !E4 && I4 ? k2(this, _e3, lt3).call(this) : E4 && !I4 ? this.unload() : E4 && I4 && (this.unload(), k2(this, _e3, lt3).call(this));\n        break;\n      }\n      case \"autoplay\":\n        if (n2 === s) break;\n        (a2 = r9(this, x2)) == null || a2.setAutoplay(this.autoplay);\n        break;\n      case \"preload\":\n        if (n2 === s) break;\n        (p3 = r9(this, x2)) == null || p3.setPreload(n2);\n        break;\n      case c.PLAYBACK_ID:\n        this.src = Gt2(this);\n        break;\n      case c.DEBUG: {\n        let E4 = this.debug;\n        this.mux && console.info(\"Cannot toggle debug mode of mux data after initialization. Make sure you set all metadata to override before setting the src.\"), this._hls && (this._hls.config.debug = E4);\n        break;\n      }\n      case c.METADATA_URL:\n        n2 && fetch(n2).then((E4) => E4.json()).then((E4) => this.metadata = E4).catch(() => console.error(`Unable to load or parse metadata JSON from metadata-url ${n2}!`));\n        break;\n      case c.STREAM_TYPE:\n        (n2 == null || n2 !== s) && this.dispatchEvent(new CustomEvent(\"streamtypechange\", { composed: true, bubbles: true }));\n        break;\n      case c.TARGET_LIVE_WINDOW:\n        (n2 == null || n2 !== s) && this.dispatchEvent(new CustomEvent(\"targetlivewindowchange\", { composed: true, bubbles: true, detail: this.targetLiveWindow }));\n        break;\n      default:\n        break;\n    }\n  }\n  connectedCallback() {\n    var e;\n    (e = super.connectedCallback) == null || e.call(this), this.nativeEl && this.src && !r9(this, x2) && k2(this, _e3, lt3).call(this);\n  }\n  disconnectedCallback() {\n    this.unload();\n  }\n};\nx2 = /* @__PURE__ */ new WeakMap(), Ce3 = /* @__PURE__ */ new WeakMap(), Ue2 = /* @__PURE__ */ new WeakMap(), Oe3 = /* @__PURE__ */ new WeakMap(), We3 = /* @__PURE__ */ new WeakMap(), je3 = /* @__PURE__ */ new WeakMap(), Ke3 = /* @__PURE__ */ new WeakMap(), Ye3 = /* @__PURE__ */ new WeakMap(), _e3 = /* @__PURE__ */ new WeakSet(), lt3 = function() {\n  return __async(this, null, function* () {\n    r9(this, Ce3) || (yield h2(this, Ce3, Promise.resolve()), h2(this, Ce3, null), this.load());\n  });\n};\nvar Be3 = class extends Yt(si2(Rt2)) {\n};\nze3.customElements.get(\"mux-video\") || (ze3.customElements.define(\"mux-video\", Be3), ze3.MuxVideoElement = Be3);\nvar ks = Be3;\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/template-parts.js\nvar __defProp10 = Object.defineProperty;\nvar __defNormalProp10 = (obj, key, value) => key in obj ? __defProp10(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField10 = (obj, key, value) => {\n  __defNormalProp10(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck33 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet33 = (obj, member, getter) => {\n  __accessCheck33(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd33 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet29 = (obj, member, value, setter) => {\n  __accessCheck33(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _parts;\nvar _processor;\nvar _items;\nvar _value;\nvar _element;\nvar _attributeName;\nvar _namespaceURI;\nvar _list;\nvar list_get;\nvar _parentNode;\nvar _nodes;\nvar ELEMENT = 1;\nvar STRING2 = 0;\nvar PART = 1;\nvar defaultProcessor = {\n  processCallback(instance, parts, state) {\n    if (!state)\n      return;\n    for (const [expression, part] of parts) {\n      if (expression in state) {\n        const value = state[expression];\n        if (typeof value === \"boolean\" && part instanceof AttrPart && typeof part.element[part.attributeName] === \"boolean\") {\n          part.booleanValue = value;\n        } else if (typeof value === \"function\" && part instanceof AttrPart) {\n          part.element[part.attributeName] = value;\n        } else {\n          part.value = value;\n        }\n      }\n    }\n  }\n};\nvar TemplateInstance = class extends GlobalThis.DocumentFragment {\n  constructor(template20, state, processor2 = defaultProcessor) {\n    var _a3;\n    super();\n    __privateAdd33(this, _parts, void 0);\n    __privateAdd33(this, _processor, void 0);\n    this.append(template20.content.cloneNode(true));\n    __privateSet29(this, _parts, parse(this));\n    __privateSet29(this, _processor, processor2);\n    (_a3 = processor2.createCallback) == null ? void 0 : _a3.call(processor2, this, __privateGet33(this, _parts), state);\n    processor2.processCallback(this, __privateGet33(this, _parts), state);\n  }\n  update(state) {\n    __privateGet33(this, _processor).processCallback(this, __privateGet33(this, _parts), state);\n  }\n};\n_parts = /* @__PURE__ */ new WeakMap();\n_processor = /* @__PURE__ */ new WeakMap();\nvar parse = (element, parts = []) => {\n  let type, value;\n  for (let attr of element.attributes || []) {\n    if (attr.value.includes(\"{{\")) {\n      const list = new AttrPartList();\n      for ([type, value] of tokenize(attr.value)) {\n        if (!type)\n          list.append(value);\n        else {\n          const part = new AttrPart(element, attr.name, attr.namespaceURI);\n          list.append(part);\n          parts.push([value, part]);\n        }\n      }\n      attr.value = list.toString();\n    }\n  }\n  for (let node of element.childNodes) {\n    if (node.nodeType === ELEMENT && !(node instanceof HTMLTemplateElement)) {\n      parse(node, parts);\n    } else {\n      if (node.nodeType === ELEMENT || node.data.includes(\"{{\")) {\n        const items = [];\n        if (node.data) {\n          for ([type, value] of tokenize(node.data))\n            if (!type)\n              items.push(new Text(value));\n            else {\n              const part = new ChildNodePart(element);\n              items.push(part);\n              parts.push([value, part]);\n            }\n        } else if (node instanceof HTMLTemplateElement) {\n          const part = new InnerTemplatePart(element, node);\n          items.push(part);\n          parts.push([part.expression, part]);\n        }\n        node.replaceWith(\n          ...items.flatMap((part) => part.replacementNodes || [part])\n        );\n      }\n    }\n  }\n  return parts;\n};\nvar mem = {};\nvar tokenize = (text) => {\n  let value = \"\", open = 0, tokens = mem[text], i2 = 0, c4;\n  if (tokens)\n    return tokens;\n  else\n    tokens = [];\n  for (; c4 = text[i2]; i2++) {\n    if (c4 === \"{\" && text[i2 + 1] === \"{\" && text[i2 - 1] !== \"\\\\\" && text[i2 + 2] && ++open == 1) {\n      if (value)\n        tokens.push([STRING2, value]);\n      value = \"\";\n      i2++;\n    } else if (c4 === \"}\" && text[i2 + 1] === \"}\" && text[i2 - 1] !== \"\\\\\" && !--open) {\n      tokens.push([PART, value.trim()]);\n      value = \"\";\n      i2++;\n    } else\n      value += c4 || \"\";\n  }\n  if (value)\n    tokens.push([STRING2, (open > 0 ? \"{{\" : \"\") + value]);\n  return mem[text] = tokens;\n};\nvar FRAGMENT = 11;\nvar Part2 = class {\n  get value() {\n    return \"\";\n  }\n  set value(val) {\n  }\n  toString() {\n    return this.value;\n  }\n};\nvar attrPartToList = /* @__PURE__ */ new WeakMap();\nvar AttrPartList = class {\n  constructor() {\n    __privateAdd33(this, _items, []);\n  }\n  [Symbol.iterator]() {\n    return __privateGet33(this, _items).values();\n  }\n  get length() {\n    return __privateGet33(this, _items).length;\n  }\n  item(index) {\n    return __privateGet33(this, _items)[index];\n  }\n  append(...items) {\n    for (const item of items) {\n      if (item instanceof AttrPart) {\n        attrPartToList.set(item, this);\n      }\n      __privateGet33(this, _items).push(item);\n    }\n  }\n  toString() {\n    return __privateGet33(this, _items).join(\"\");\n  }\n};\n_items = /* @__PURE__ */ new WeakMap();\nvar AttrPart = class extends Part2 {\n  constructor(element, attributeName, namespaceURI) {\n    super();\n    __privateAdd33(this, _list);\n    __privateAdd33(this, _value, \"\");\n    __privateAdd33(this, _element, void 0);\n    __privateAdd33(this, _attributeName, void 0);\n    __privateAdd33(this, _namespaceURI, void 0);\n    __privateSet29(this, _element, element);\n    __privateSet29(this, _attributeName, attributeName);\n    __privateSet29(this, _namespaceURI, namespaceURI);\n  }\n  get attributeName() {\n    return __privateGet33(this, _attributeName);\n  }\n  get attributeNamespace() {\n    return __privateGet33(this, _namespaceURI);\n  }\n  get element() {\n    return __privateGet33(this, _element);\n  }\n  get value() {\n    return __privateGet33(this, _value);\n  }\n  set value(newValue) {\n    if (__privateGet33(this, _value) === newValue)\n      return;\n    __privateSet29(this, _value, newValue);\n    if (!__privateGet33(this, _list, list_get) || __privateGet33(this, _list, list_get).length === 1) {\n      if (newValue == null) {\n        __privateGet33(this, _element).removeAttributeNS(\n          __privateGet33(this, _namespaceURI),\n          __privateGet33(this, _attributeName)\n        );\n      } else {\n        __privateGet33(this, _element).setAttributeNS(\n          __privateGet33(this, _namespaceURI),\n          __privateGet33(this, _attributeName),\n          newValue\n        );\n      }\n    } else {\n      __privateGet33(this, _element).setAttributeNS(\n        __privateGet33(this, _namespaceURI),\n        __privateGet33(this, _attributeName),\n        __privateGet33(this, _list, list_get)\n      );\n    }\n  }\n  /** @type boolean */\n  get booleanValue() {\n    return __privateGet33(this, _element).hasAttributeNS(\n      __privateGet33(this, _namespaceURI),\n      __privateGet33(this, _attributeName)\n    );\n  }\n  set booleanValue(value) {\n    if (!__privateGet33(this, _list, list_get) || __privateGet33(this, _list, list_get).length === 1)\n      this.value = value ? \"\" : null;\n    else\n      throw new DOMException(\"Value is not fully templatized\");\n  }\n};\n_value = /* @__PURE__ */ new WeakMap();\n_element = /* @__PURE__ */ new WeakMap();\n_attributeName = /* @__PURE__ */ new WeakMap();\n_namespaceURI = /* @__PURE__ */ new WeakMap();\n_list = /* @__PURE__ */ new WeakSet();\nlist_get = function() {\n  return attrPartToList.get(this);\n};\nvar ChildNodePart = class extends Part2 {\n  constructor(parentNode, nodes) {\n    super();\n    __privateAdd33(this, _parentNode, void 0);\n    __privateAdd33(this, _nodes, void 0);\n    __privateSet29(this, _parentNode, parentNode);\n    __privateSet29(this, _nodes, nodes ? [...nodes] : [new Text()]);\n  }\n  get replacementNodes() {\n    return __privateGet33(this, _nodes);\n  }\n  get parentNode() {\n    return __privateGet33(this, _parentNode);\n  }\n  get nextSibling() {\n    return __privateGet33(this, _nodes)[__privateGet33(this, _nodes).length - 1].nextSibling;\n  }\n  get previousSibling() {\n    return __privateGet33(this, _nodes)[0].previousSibling;\n  }\n  // FIXME: not sure why do we need string serialization here? Just because parent class has type DOMString?\n  get value() {\n    return __privateGet33(this, _nodes).map((node) => node.textContent).join(\"\");\n  }\n  set value(newValue) {\n    this.replace(newValue);\n  }\n  replace(...nodes) {\n    const normalisedNodes = nodes.flat().flatMap(\n      (node) => node == null ? [new Text()] : node.forEach ? [...node] : node.nodeType === FRAGMENT ? [...node.childNodes] : node.nodeType ? [node] : [new Text(node)]\n    );\n    if (!normalisedNodes.length)\n      normalisedNodes.push(new Text());\n    __privateSet29(this, _nodes, swapdom(\n      __privateGet33(this, _nodes)[0].parentNode,\n      __privateGet33(this, _nodes),\n      normalisedNodes,\n      this.nextSibling\n    ));\n  }\n};\n_parentNode = /* @__PURE__ */ new WeakMap();\n_nodes = /* @__PURE__ */ new WeakMap();\nvar InnerTemplatePart = class extends ChildNodePart {\n  constructor(parentNode, template20) {\n    let directive = template20.getAttribute(\"directive\") || template20.getAttribute(\"type\");\n    let expression = template20.getAttribute(\"expression\") || template20.getAttribute(directive) || \"\";\n    if (expression.startsWith(\"{{\"))\n      expression = expression.trim().slice(2, -2).trim();\n    super(parentNode);\n    __publicField10(this, \"directive\");\n    this.expression = expression;\n    this.template = template20;\n    this.directive = directive;\n  }\n};\nfunction swapdom(parent, a2, b4, end = null) {\n  let i2 = 0, cur, next, bi3, n2 = b4.length, m3 = a2.length;\n  while (i2 < n2 && i2 < m3 && a2[i2] == b4[i2])\n    i2++;\n  while (i2 < n2 && i2 < m3 && b4[n2 - 1] == a2[m3 - 1])\n    end = b4[--m3, --n2];\n  if (i2 == m3)\n    while (i2 < n2)\n      parent.insertBefore(b4[i2++], end);\n  if (i2 == n2)\n    while (i2 < m3)\n      parent.removeChild(a2[i2++]);\n  else {\n    cur = a2[i2];\n    while (i2 < n2) {\n      bi3 = b4[i2++], next = cur ? cur.nextSibling : end;\n      if (cur == bi3)\n        cur = next;\n      else if (i2 < n2 && b4[i2] == next)\n        parent.replaceChild(bi3, cur), cur = next;\n      else\n        parent.insertBefore(bi3, cur);\n    }\n    while (cur != end)\n      next = cur.nextSibling, parent.removeChild(cur), cur = next;\n  }\n  return b4;\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/utils/template-processor.js\nvar pipeModifiers = {\n  string: (value) => String(value)\n};\nvar PartialTemplate = class {\n  constructor(template20) {\n    this.template = template20;\n    this.state = void 0;\n  }\n};\nvar templates = /* @__PURE__ */ new WeakMap();\nvar templateInstances = /* @__PURE__ */ new WeakMap();\nvar Directives = {\n  partial: (part, state) => {\n    state[part.expression] = new PartialTemplate(part.template);\n  },\n  if: (part, state) => {\n    var _a3;\n    if (evaluateExpression(part.expression, state)) {\n      if (templates.get(part) !== part.template) {\n        templates.set(part, part.template);\n        const tpl = new TemplateInstance(part.template, state, processor);\n        part.replace(tpl);\n        templateInstances.set(part, tpl);\n      } else {\n        (_a3 = templateInstances.get(part)) == null ? void 0 : _a3.update(state);\n      }\n    } else {\n      part.replace(\"\");\n      templates.delete(part);\n      templateInstances.delete(part);\n    }\n  }\n};\nvar DirectiveNames = Object.keys(Directives);\nvar processor = {\n  processCallback(instance, parts, state) {\n    var _a3, _b;\n    if (!state)\n      return;\n    for (const [expression, part] of parts) {\n      if (part instanceof InnerTemplatePart) {\n        if (!part.directive) {\n          const directive = DirectiveNames.find(\n            (n2) => part.template.hasAttribute(n2)\n          );\n          if (directive) {\n            part.directive = directive;\n            part.expression = part.template.getAttribute(directive);\n          }\n        }\n        (_a3 = Directives[part.directive]) == null ? void 0 : _a3.call(Directives, part, state);\n        continue;\n      }\n      let value = evaluateExpression(expression, state);\n      if (value instanceof PartialTemplate) {\n        if (templates.get(part) !== value.template) {\n          templates.set(part, value.template);\n          value = new TemplateInstance(value.template, value.state, processor);\n          part.value = value;\n          templateInstances.set(part, value);\n        } else {\n          (_b = templateInstances.get(part)) == null ? void 0 : _b.update(value.state);\n        }\n        continue;\n      }\n      if (value) {\n        if (part instanceof AttrPart) {\n          if (part.attributeName.startsWith(\"aria-\")) {\n            value = String(value);\n          }\n        }\n        if (part instanceof AttrPart) {\n          if (typeof value === \"boolean\") {\n            part.booleanValue = value;\n          } else if (typeof value === \"function\") {\n            part.element[part.attributeName] = value;\n          } else {\n            part.value = value;\n          }\n        } else {\n          part.value = value;\n          templates.delete(part);\n          templateInstances.delete(part);\n        }\n      } else {\n        if (part instanceof AttrPart) {\n          part.value = void 0;\n        } else {\n          part.value = void 0;\n          templates.delete(part);\n          templateInstances.delete(part);\n        }\n      }\n    }\n  }\n};\nvar operators = {\n  \"!\": (a2) => !a2,\n  \"!!\": (a2) => !!a2,\n  \"==\": (a2, b4) => a2 == b4,\n  \"!=\": (a2, b4) => a2 != b4,\n  \">\": (a2, b4) => a2 > b4,\n  \">=\": (a2, b4) => a2 >= b4,\n  \"<\": (a2, b4) => a2 < b4,\n  \"<=\": (a2, b4) => a2 <= b4,\n  \"??\": (a2, b4) => a2 != null ? a2 : b4,\n  \"|\": (a2, b4) => {\n    var _a3;\n    return (_a3 = pipeModifiers[b4]) == null ? void 0 : _a3.call(pipeModifiers, a2);\n  }\n};\nfunction tokenizeExpression(expr) {\n  return tokenize2(expr, {\n    boolean: /true|false/,\n    number: /-?\\d+\\.?\\d*/,\n    string: /([\"'])((?:\\\\.|[^\\\\])*?)\\1/,\n    operator: /[!=><][=!]?|\\?\\?|\\|/,\n    ws: /\\s+/,\n    param: /[$a-z_][$\\w]*/i\n  }).filter(({ type }) => type !== \"ws\");\n}\nfunction evaluateExpression(expr, state = {}) {\n  var _a3, _b, _c, _d, _e5, _f, _g;\n  const tokens = tokenizeExpression(expr);\n  if (tokens.length === 0 || tokens.some(({ type }) => !type)) {\n    return invalidExpression(expr);\n  }\n  if (((_a3 = tokens[0]) == null ? void 0 : _a3.token) === \">\") {\n    const partial = state[(_b = tokens[1]) == null ? void 0 : _b.token];\n    if (!partial) {\n      return invalidExpression(expr);\n    }\n    const partialState = __spreadValues({}, state);\n    partial.state = partialState;\n    const args = tokens.slice(2);\n    for (let i2 = 0; i2 < args.length; i2 += 3) {\n      const name = (_c = args[i2]) == null ? void 0 : _c.token;\n      const operator = (_d = args[i2 + 1]) == null ? void 0 : _d.token;\n      const value = (_e5 = args[i2 + 2]) == null ? void 0 : _e5.token;\n      if (name && operator === \"=\") {\n        partialState[name] = getParamValue(value, state);\n      }\n    }\n    return partial;\n  }\n  if (tokens.length === 1) {\n    if (!isValidParam(tokens[0])) {\n      return invalidExpression(expr);\n    }\n    return getParamValue(tokens[0].token, state);\n  }\n  if (tokens.length === 2) {\n    const operator = (_f = tokens[0]) == null ? void 0 : _f.token;\n    const run = operators[operator];\n    if (!run || !isValidParam(tokens[1])) {\n      return invalidExpression(expr);\n    }\n    const a2 = getParamValue(tokens[1].token, state);\n    return run(a2);\n  }\n  if (tokens.length === 3) {\n    const operator = (_g = tokens[1]) == null ? void 0 : _g.token;\n    const run = operators[operator];\n    if (!run || !isValidParam(tokens[0]) || !isValidParam(tokens[2])) {\n      return invalidExpression(expr);\n    }\n    const a2 = getParamValue(tokens[0].token, state);\n    if (operator === \"|\") {\n      return run(a2, tokens[2].token);\n    }\n    const b4 = getParamValue(tokens[2].token, state);\n    return run(a2, b4);\n  }\n}\nfunction invalidExpression(expr) {\n  console.warn(`Warning: invalid expression \\`${expr}\\``);\n  return false;\n}\nfunction isValidParam({ type }) {\n  return [\"number\", \"boolean\", \"string\", \"param\"].includes(type);\n}\nfunction getParamValue(raw, state) {\n  const firstChar = raw[0];\n  const lastChar = raw.slice(-1);\n  if (raw === \"true\" || raw === \"false\") {\n    return raw === \"true\";\n  }\n  if (firstChar === lastChar && [`'`, `\"`].includes(firstChar)) {\n    return raw.slice(1, -1);\n  }\n  if (isNumericString(raw)) {\n    return parseFloat(raw);\n  }\n  return state[raw];\n}\nfunction tokenize2(str, parsers) {\n  let len, match, token, tokens = [];\n  while (str) {\n    token = null;\n    len = str.length;\n    for (let key in parsers) {\n      match = parsers[key].exec(str);\n      if (match && match.index < len) {\n        token = {\n          token: match[0],\n          type: key,\n          matches: match.slice(1)\n        };\n        len = match.index;\n      }\n    }\n    if (len) {\n      tokens.push({\n        token: str.substr(0, len),\n        type: void 0\n      });\n    }\n    if (token) {\n      tokens.push(token);\n    }\n    str = str.substr(len + (token ? token.token.length : 0));\n  }\n  return tokens;\n}\n\n// node_modules/.pnpm/media-chrome@3.2.5/node_modules/media-chrome/dist/media-theme-element.js\nvar __defProp11 = Object.defineProperty;\nvar __defNormalProp11 = (obj, key, value) => key in obj ? __defProp11(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField11 = (obj, key, value) => {\n  __defNormalProp11(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar __accessCheck34 = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet34 = (obj, member, getter) => {\n  __accessCheck34(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd34 = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet30 = (obj, member, value, setter) => {\n  __accessCheck34(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod19 = (obj, member, method) => {\n  __accessCheck34(obj, member, \"access private method\");\n  return method;\n};\nvar _template;\nvar _prevTemplate;\nvar _prevTemplateId;\nvar _upgradeProperty;\nvar upgradeProperty_fn;\nvar _updateTemplate;\nvar updateTemplate_fn;\nvar observedMediaAttributes = {\n  mediatargetlivewindow: \"targetlivewindow\",\n  mediastreamtype: \"streamtype\"\n};\nvar prependTemplate = Document2.createElement(\"template\");\nprependTemplate.innerHTML = /*html*/\n`\n  <style>\n    :host {\n      display: inline-block;\n      line-height: 0;\n    }\n\n    media-controller {\n      width: 100%;\n      height: 100%;\n    }\n\n    media-controller:not([mediasubtitleslist]) media-captions-selectmenu,\n    media-captions-button:not([mediasubtitleslist]),\n    media-rendition-selectmenu[mediarenditionunavailable],\n    media-audio-track-selectmenu[mediaaudiotrackunavailable],\n    media-volume-range[mediavolumeunavailable],\n    media-airplay-button[mediaairplayunavailable],\n    media-fullscreen-button[mediafullscreenunavailable],\n    media-cast-button[mediacastunavailable],\n    media-pip-button[mediapipunavailable] {\n      display: none;\n    }\n  </style>\n`;\nvar MediaThemeElement = class extends GlobalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd34(this, _upgradeProperty);\n    __privateAdd34(this, _updateTemplate);\n    __publicField11(this, \"renderRoot\");\n    __publicField11(this, \"renderer\");\n    __privateAdd34(this, _template, void 0);\n    __privateAdd34(this, _prevTemplate, void 0);\n    __privateAdd34(this, _prevTemplateId, void 0);\n    if (this.shadowRoot) {\n      this.renderRoot = this.shadowRoot;\n    } else {\n      this.renderRoot = this.attachShadow({ mode: \"open\" });\n      this.createRenderer();\n    }\n    const observer2 = new MutationObserver((mutationList) => {\n      var _a3;\n      if (this.mediaController && !((_a3 = this.mediaController) == null ? void 0 : _a3.breakpointsComputed))\n        return;\n      if (mutationList.some((mutation) => {\n        const target = (\n          /** @type {HTMLElement} */\n          mutation.target\n        );\n        if (target === this)\n          return true;\n        if (target.localName !== \"media-controller\")\n          return false;\n        if (observedMediaAttributes[mutation.attributeName])\n          return true;\n        if (mutation.attributeName.startsWith(\"breakpoint\"))\n          return true;\n        return false;\n      })) {\n        this.render();\n      }\n    });\n    observer2.observe(this, { attributes: true });\n    observer2.observe(this.renderRoot, {\n      attributes: true,\n      subtree: true\n    });\n    this.addEventListener(\n      MediaStateChangeEvents.BREAKPOINTS_COMPUTED,\n      this.render\n    );\n    __privateMethod19(this, _upgradeProperty, upgradeProperty_fn).call(this, \"template\");\n  }\n  /** @type {HTMLElement & { breakpointsComputed?: boolean }} */\n  get mediaController() {\n    return this.renderRoot.querySelector(\"media-controller\");\n  }\n  get template() {\n    var _a3;\n    return (_a3 = __privateGet34(this, _template)) != null ? _a3 : this.constructor.template;\n  }\n  set template(element) {\n    __privateSet30(this, _prevTemplateId, null);\n    __privateSet30(this, _template, element);\n    this.createRenderer();\n  }\n  get props() {\n    var _a3, _b, _c;\n    const observedAttributes = [\n      ...Array.from((_b = (_a3 = this.mediaController) == null ? void 0 : _a3.attributes) != null ? _b : []).filter(\n        ({ name }) => {\n          return observedMediaAttributes[name] || name.startsWith(\"breakpoint\");\n        }\n      ),\n      ...Array.from(this.attributes)\n    ];\n    const props = {};\n    for (let attr of observedAttributes) {\n      const name = (_c = observedMediaAttributes[attr.name]) != null ? _c : camelCase(attr.name);\n      let { value } = attr;\n      if (value != null) {\n        if (isNumericString(value)) {\n          value = parseFloat(value);\n        }\n        props[name] = value === \"\" ? true : value;\n      } else {\n        props[name] = false;\n      }\n    }\n    return props;\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === \"template\" && oldValue != newValue) {\n      __privateMethod19(this, _updateTemplate, updateTemplate_fn).call(this);\n    }\n  }\n  connectedCallback() {\n    __privateMethod19(this, _updateTemplate, updateTemplate_fn).call(this);\n  }\n  createRenderer() {\n    if (this.template && this.template !== __privateGet34(this, _prevTemplate)) {\n      __privateSet30(this, _prevTemplate, this.template);\n      this.renderer = new TemplateInstance(\n        this.template,\n        this.props,\n        // @ts-ignore\n        this.constructor.processor\n      );\n      this.renderRoot.textContent = \"\";\n      this.renderRoot.append(\n        prependTemplate.content.cloneNode(true),\n        this.renderer\n      );\n    }\n  }\n  render() {\n    var _a3;\n    (_a3 = this.renderer) == null ? void 0 : _a3.update(this.props);\n  }\n};\n_template = /* @__PURE__ */ new WeakMap();\n_prevTemplate = /* @__PURE__ */ new WeakMap();\n_prevTemplateId = /* @__PURE__ */ new WeakMap();\n_upgradeProperty = /* @__PURE__ */ new WeakSet();\nupgradeProperty_fn = function(prop) {\n  if (Object.prototype.hasOwnProperty.call(this, prop)) {\n    const value = this[prop];\n    delete this[prop];\n    this[prop] = value;\n  }\n};\n_updateTemplate = /* @__PURE__ */ new WeakSet();\nupdateTemplate_fn = function() {\n  var _a3;\n  const templateId = this.getAttribute(\"template\");\n  if (!templateId || templateId === __privateGet34(this, _prevTemplateId))\n    return;\n  const rootNode = (\n    /** @type HTMLDocument | ShadowRoot */\n    this.getRootNode()\n  );\n  const template20 = (_a3 = rootNode == null ? void 0 : rootNode.getElementById) == null ? void 0 : _a3.call(rootNode, templateId);\n  if (template20) {\n    __privateSet30(this, _prevTemplateId, templateId);\n    __privateSet30(this, _template, template20);\n    this.createRenderer();\n    return;\n  }\n  if (isValidUrl(templateId)) {\n    __privateSet30(this, _prevTemplateId, templateId);\n    request(templateId).then((data) => {\n      const template22 = Document2.createElement(\"template\");\n      template22.innerHTML = data;\n      __privateSet30(this, _template, template22);\n      this.createRenderer();\n    }).catch(console.error);\n  }\n};\n__publicField11(MediaThemeElement, \"template\");\n__publicField11(MediaThemeElement, \"observedAttributes\", [\"template\"]);\n__publicField11(MediaThemeElement, \"processor\", processor);\nfunction isValidUrl(url) {\n  if (!/^(\\/|\\.\\/|https?:\\/\\/)/.test(url))\n    return false;\n  const base = /^https?:\\/\\//.test(url) ? void 0 : location.origin;\n  try {\n    new URL(url, base);\n  } catch (e) {\n    return false;\n  }\n  return true;\n}\nfunction request(resource) {\n  return __async(this, null, function* () {\n    const response = yield fetch(resource);\n    if (response.status !== 200) {\n      throw new Error(\n        `Failed to load resource: the server responded with a status of ${response.status}`\n      );\n    }\n    return response.text();\n  });\n}\nif (!GlobalThis.customElements.get(\"media-theme\")) {\n  GlobalThis.customElements.define(\"media-theme\", MediaThemeElement);\n}\n\n// node_modules/.pnpm/@mux+mux-player@2.9.1/node_modules/@mux/mux-player/dist/index.mjs\nvar xe4 = (t2, i2, e) => {\n  if (!i2.has(t2)) throw TypeError(\"Cannot \" + e);\n};\nvar u2 = (t2, i2, e) => (xe4(t2, i2, \"read from private field\"), e ? e.call(t2) : i2.get(t2));\nvar p = (t2, i2, e) => {\n  if (i2.has(t2)) throw TypeError(\"Cannot add the same private member more than once\");\n  i2 instanceof WeakSet ? i2.add(t2) : i2.set(t2, e);\n};\nvar x3 = (t2, i2, e, a2) => (xe4(t2, i2, \"write to private field\"), a2 ? a2.call(t2, e) : i2.set(t2, e), e);\nvar b3 = (t2, i2, e) => (xe4(t2, i2, \"access private method\"), e);\nvar G3 = class {\n  addEventListener() {\n  }\n  removeEventListener() {\n  }\n  dispatchEvent(i2) {\n    return true;\n  }\n};\nif (typeof DocumentFragment == \"undefined\") {\n  class t2 extends G3 {\n  }\n  globalThis.DocumentFragment = t2;\n}\nvar X4 = class extends G3 {\n};\nvar Le4 = class extends G3 {\n};\nvar Ft3 = { get(t2) {\n}, define(t2, i2, e) {\n}, upgrade(t2) {\n}, whenDefined(t2) {\n  return Promise.resolve(X4);\n} };\nvar J3;\nvar Re3 = class {\n  constructor(i2, e = {}) {\n    p(this, J3, void 0);\n    x3(this, J3, e == null ? void 0 : e.detail);\n  }\n  get detail() {\n    return u2(this, J3);\n  }\n  initCustomEvent() {\n  }\n};\nJ3 = /* @__PURE__ */ new WeakMap();\nfunction Yt2(t2, i2) {\n  return new X4();\n}\nvar dt4 = { document: { createElement: Yt2 }, DocumentFragment, customElements: Ft3, CustomEvent: Re3, EventTarget: G3, HTMLElement: X4, HTMLVideoElement: Le4 };\nvar lt4 = typeof window == \"undefined\" || typeof globalThis.customElements == \"undefined\";\nvar c2 = lt4 ? dt4 : globalThis;\nvar T2 = lt4 ? dt4.document : globalThis.document;\nvar Wt3 = \"en\";\nvar U3 = { code: Wt3 };\nvar mt3 = \"en\";\nfunction m(t2, i2 = true) {\n  var r10, o;\n  let e = i2 && (o = (r10 = U3) == null ? void 0 : r10[t2]) != null ? o : t2, a2 = i2 ? U3.code : mt3;\n  return new we3(e, a2);\n}\nvar we3 = class {\n  constructor(i2, e = ((a2) => (a2 = U3.code) != null ? a2 : mt3)()) {\n    this.message = i2, this.locale = e;\n  }\n  format(i2) {\n    return this.message.replace(/\\{(\\w+)\\}/g, (e, a2) => {\n      var r10;\n      return (r10 = i2[a2]) != null ? r10 : \"\";\n    });\n  }\n  toString() {\n    return this.message;\n  }\n};\nfunction ut3(t2) {\n  let i2 = \"\";\n  return Object.entries(t2).forEach(([e, a2]) => {\n    a2 != null && (i2 += `${de4(e)}: ${a2}; `);\n  }), i2 ? i2.trim() : void 0;\n}\nfunction de4(t2) {\n  return t2.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\nfunction le4(t2) {\n  return t2.replace(/[-_]([a-z])/g, (i2, e) => e.toUpperCase());\n}\nfunction L(t2) {\n  if (t2 == null) return;\n  let i2 = +t2;\n  return Number.isNaN(i2) ? void 0 : i2;\n}\nfunction Oe4(t2) {\n  let i2 = Zt3(t2).toString();\n  return i2 ? \"?\" + i2 : \"\";\n}\nfunction Zt3(t2) {\n  let i2 = {};\n  for (let e in t2) t2[e] != null && (i2[e] = t2[e]);\n  return new URLSearchParams(i2);\n}\nfunction N2(t2) {\n  let i2 = (t2 != null ? t2 : \"\").split(\".\")[1];\n  if (!i2) return {};\n  let e = i2.replace(/-/g, \"+\").replace(/_/g, \"/\"), a2 = decodeURIComponent(atob(e).split(\"\").map(function(r10) {\n    return \"%\" + (\"00\" + r10.charCodeAt(0).toString(16)).slice(-2);\n  }).join(\"\"));\n  return JSON.parse(a2);\n}\nvar Se2 = (t2, i2) => !t2 || !i2 ? false : t2.contains(i2) ? true : Se2(t2, i2.getRootNode().host);\nvar ct3 = \"mux.com\";\nvar Gt4 = () => {\n  try {\n    return \"2.9.1\";\n  } catch (e) {\n  }\n  return \"UNKNOWN\";\n};\nvar jt4 = Gt4();\nvar ue4 = () => jt4;\nvar pt4 = (t2, { token: i2, customDomain: e = ct3, thumbnailTime: a2, programTime: r10 } = {}) => {\n  let o = i2 == null ? a2 : void 0, { aud: s } = N2(i2);\n  if (!(i2 && s !== \"t\")) return `https://image.${e}/${t2}/thumbnail.webp${Oe4({ token: i2, time: o, program_time: r10 })}`;\n};\nvar bt3 = (t2, { token: i2, customDomain: e = ct3, programStartTime: a2, programEndTime: r10 } = {}) => {\n  let { aud: o } = N2(i2);\n  if (!(i2 && o !== \"s\")) return `https://image.${e}/${t2}/storyboard.vtt${Oe4({ token: i2, format: \"webp\", program_start_time: a2, program_end_time: r10 })}`;\n};\nvar Q3 = (t2) => {\n  if (t2) {\n    if ([g.LIVE, g.ON_DEMAND].includes(t2)) return t2;\n    if (t2 != null && t2.includes(\"live\")) return g.LIVE;\n  }\n};\nvar qt3 = { crossorigin: \"crossOrigin\", playsinline: \"playsInline\" };\nfunction ht(t2) {\n  var i2;\n  return (i2 = qt3[t2]) != null ? i2 : le4(t2);\n}\nvar K4;\nvar $4;\nvar E2;\nvar me3 = class {\n  constructor(i2, e) {\n    p(this, K4, void 0);\n    p(this, $4, void 0);\n    p(this, E2, []);\n    x3(this, K4, i2), x3(this, $4, e);\n  }\n  [Symbol.iterator]() {\n    return u2(this, E2).values();\n  }\n  get length() {\n    return u2(this, E2).length;\n  }\n  get value() {\n    var i2;\n    return (i2 = u2(this, E2).join(\" \")) != null ? i2 : \"\";\n  }\n  set value(i2) {\n    var e;\n    i2 !== this.value && (x3(this, E2, []), this.add(...(e = i2 == null ? void 0 : i2.split(\" \")) != null ? e : []));\n  }\n  toString() {\n    return this.value;\n  }\n  item(i2) {\n    return u2(this, E2)[i2];\n  }\n  values() {\n    return u2(this, E2).values();\n  }\n  keys() {\n    return u2(this, E2).keys();\n  }\n  forEach(i2) {\n    u2(this, E2).forEach(i2);\n  }\n  add(...i2) {\n    var e, a2;\n    i2.forEach((r10) => {\n      this.contains(r10) || u2(this, E2).push(r10);\n    }), !(this.value === \"\" && !((e = u2(this, K4)) != null && e.hasAttribute(`${u2(this, $4)}`))) && ((a2 = u2(this, K4)) == null || a2.setAttribute(`${u2(this, $4)}`, `${this.value}`));\n  }\n  remove(...i2) {\n    var e;\n    i2.forEach((a2) => {\n      u2(this, E2).splice(u2(this, E2).indexOf(a2), 1);\n    }), (e = u2(this, K4)) == null || e.setAttribute(`${u2(this, $4)}`, `${this.value}`);\n  }\n  contains(i2) {\n    return u2(this, E2).includes(i2);\n  }\n  toggle(i2, e) {\n    return typeof e != \"undefined\" ? e ? (this.add(i2), true) : (this.remove(i2), false) : this.contains(i2) ? (this.remove(i2), false) : (this.add(i2), true);\n  }\n  replace(i2, e) {\n    this.remove(i2), this.add(e);\n  }\n};\nK4 = /* @__PURE__ */ new WeakMap(), $4 = /* @__PURE__ */ new WeakMap(), E2 = /* @__PURE__ */ new WeakMap();\nvar gt2 = `[mux-player ${ue4()}]`;\nfunction I3(...t2) {\n  console.warn(gt2, ...t2);\n}\nfunction A2(...t2) {\n  console.error(gt2, ...t2);\n}\nfunction _e4(t2) {\n  var e;\n  let i2 = (e = t2.message) != null ? e : \"\";\n  if (t2.context && (i2 += ` ${t2.context}`), t2.file) {\n    let a2 = \"https://github.com/muxinc/elements/blob/main/errors/\";\n    i2 += ` ${m(\"Read more: \")}\n${a2}${t2.file}`;\n  }\n  I3(i2);\n}\nvar y3 = { AUTOPLAY: \"autoplay\", CROSSORIGIN: \"crossorigin\", LOOP: \"loop\", MUTED: \"muted\", PLAYSINLINE: \"playsinline\", PRELOAD: \"preload\" };\nvar F4 = { VOLUME: \"volume\", PLAYBACKRATE: \"playbackrate\", MUTED: \"muted\" };\nvar yt2 = Object.freeze({ length: 0, start(t2) {\n  let i2 = t2 >>> 0;\n  if (i2 >= this.length) throw new DOMException(`Failed to execute 'start' on 'TimeRanges': The index provided (${i2}) is greater than or equal to the maximum bound (${this.length}).`);\n  return 0;\n}, end(t2) {\n  let i2 = t2 >>> 0;\n  if (i2 >= this.length) throw new DOMException(`Failed to execute 'end' on 'TimeRanges': The index provided (${i2}) is greater than or equal to the maximum bound (${this.length}).`);\n  return 0;\n} });\nvar Xt4 = Et2.filter((t2) => t2 !== \"error\");\nvar Jt4 = Object.values(y3).filter((t2) => ![y3.PLAYSINLINE].includes(t2));\nvar Qt4 = Object.values(F4);\nvar j3;\nvar Pe3 = class extends c2.HTMLElement {\n  constructor() {\n    super();\n    p(this, j3, /* @__PURE__ */ new WeakMap());\n    let e = (r10) => {\n      for (let o of r10) o.type === \"childList\" && (o.removedNodes.forEach((s) => {\n        var l;\n        (l = u2(this, j3).get(s)) == null || l.remove();\n      }), o.addedNodes.forEach((s) => {\n        var h3;\n        let l = s;\n        l != null && l.slot || (h3 = this.media) == null || h3.append(vt3(u2(this, j3), s));\n      }));\n    };\n    new MutationObserver(e).observe(this, { childList: true, subtree: true });\n  }\n  static get observedAttributes() {\n    return [...Jt4, ...Qt4];\n  }\n  init() {\n    this.querySelectorAll(\":scope > :not([slot])\").forEach((e) => {\n      var a2;\n      (a2 = this.media) == null || a2.append(vt3(u2(this, j3), e));\n    }), Xt4.forEach((e) => {\n      var a2;\n      (a2 = this.media) == null || a2.addEventListener(e, (r10) => {\n        this.dispatchEvent(new Event(r10.type));\n      });\n    });\n  }\n  attributeChangedCallback(e, a2, r10) {\n    var o, s;\n    switch (e) {\n      case F4.MUTED: {\n        this.media && (this.media.muted = r10 != null, this.media.defaultMuted = r10 != null);\n        return;\n      }\n      case F4.VOLUME: {\n        let l = (o = L(r10)) != null ? o : 1;\n        this.media && (this.media.volume = l);\n        return;\n      }\n      case F4.PLAYBACKRATE: {\n        let l = (s = L(r10)) != null ? s : 1;\n        this.media && (this.media.playbackRate = l, this.media.defaultPlaybackRate = l);\n        return;\n      }\n    }\n  }\n  play() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.play()) != null ? a2 : Promise.reject();\n  }\n  pause() {\n    var e;\n    (e = this.media) == null || e.pause();\n  }\n  load() {\n    var e;\n    (e = this.media) == null || e.load();\n  }\n  requestCast(e) {\n    var a2;\n    return (a2 = this.media) == null ? void 0 : a2.requestCast(e);\n  }\n  get media() {\n    var e;\n    return (e = this.shadowRoot) == null ? void 0 : e.querySelector(\"mux-video\");\n  }\n  get audioTracks() {\n    return this.media.audioTracks;\n  }\n  get videoTracks() {\n    return this.media.videoTracks;\n  }\n  get audioRenditions() {\n    return this.media.audioRenditions;\n  }\n  get videoRenditions() {\n    return this.media.videoRenditions;\n  }\n  get paused() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.paused) != null ? a2 : true;\n  }\n  get duration() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.duration) != null ? a2 : NaN;\n  }\n  get ended() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.ended) != null ? a2 : false;\n  }\n  get buffered() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.buffered) != null ? a2 : yt2;\n  }\n  get seekable() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.seekable) != null ? a2 : yt2;\n  }\n  get readyState() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.readyState) != null ? a2 : 0;\n  }\n  get videoWidth() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.videoWidth) != null ? a2 : 0;\n  }\n  get videoHeight() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.videoHeight) != null ? a2 : 0;\n  }\n  get currentSrc() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.currentSrc) != null ? a2 : \"\";\n  }\n  get currentTime() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.currentTime) != null ? a2 : 0;\n  }\n  set currentTime(e) {\n    this.media && (this.media.currentTime = Number(e));\n  }\n  get volume() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.volume) != null ? a2 : 1;\n  }\n  set volume(e) {\n    this.media && (this.media.volume = Number(e));\n  }\n  get playbackRate() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.playbackRate) != null ? a2 : 1;\n  }\n  set playbackRate(e) {\n    this.media && (this.media.playbackRate = Number(e));\n  }\n  get defaultPlaybackRate() {\n    var e;\n    return (e = L(this.getAttribute(F4.PLAYBACKRATE))) != null ? e : 1;\n  }\n  set defaultPlaybackRate(e) {\n    e != null ? this.setAttribute(F4.PLAYBACKRATE, `${e}`) : this.removeAttribute(F4.PLAYBACKRATE);\n  }\n  get crossOrigin() {\n    return ee4(this, y3.CROSSORIGIN);\n  }\n  set crossOrigin(e) {\n    this.setAttribute(y3.CROSSORIGIN, `${e}`);\n  }\n  get autoplay() {\n    return ee4(this, y3.AUTOPLAY) != null;\n  }\n  set autoplay(e) {\n    e ? this.setAttribute(y3.AUTOPLAY, typeof e == \"string\" ? e : \"\") : this.removeAttribute(y3.AUTOPLAY);\n  }\n  get loop() {\n    return ee4(this, y3.LOOP) != null;\n  }\n  set loop(e) {\n    e ? this.setAttribute(y3.LOOP, \"\") : this.removeAttribute(y3.LOOP);\n  }\n  get muted() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.muted) != null ? a2 : false;\n  }\n  set muted(e) {\n    this.media && (this.media.muted = !!e);\n  }\n  get defaultMuted() {\n    return ee4(this, y3.MUTED) != null;\n  }\n  set defaultMuted(e) {\n    e ? this.setAttribute(y3.MUTED, \"\") : this.removeAttribute(y3.MUTED);\n  }\n  get playsInline() {\n    return ee4(this, y3.PLAYSINLINE) != null;\n  }\n  set playsInline(e) {\n    A2(\"playsInline is set to true by default and is not currently supported as a setter.\");\n  }\n  get preload() {\n    return this.media ? this.media.preload : this.getAttribute(\"preload\");\n  }\n  set preload(e) {\n    [\"\", \"none\", \"metadata\", \"auto\"].includes(e) ? this.setAttribute(y3.PRELOAD, e) : this.removeAttribute(y3.PRELOAD);\n  }\n};\nj3 = /* @__PURE__ */ new WeakMap();\nfunction ee4(t2, i2) {\n  return t2.media ? t2.media.getAttribute(i2) : t2.getAttribute(i2);\n}\nfunction vt3(t2, i2) {\n  let e = t2.get(i2);\n  return e || (e = i2.cloneNode(), t2.set(i2, e)), e;\n}\nvar Ne4 = Pe3;\nvar Et3 = `:host {\n  --media-control-display: var(--controls);\n  --media-loading-indicator-display: var(--loading-indicator);\n  --media-dialog-display: var(--dialog);\n  --media-play-button-display: var(--play-button);\n  --media-live-button-display: var(--live-button);\n  --media-seek-backward-button-display: var(--seek-backward-button);\n  --media-seek-forward-button-display: var(--seek-forward-button);\n  --media-mute-button-display: var(--mute-button);\n  --media-captions-button-display: var(--captions-button);\n  --media-captions-selectmenu-display: var(--captions-selectmenu, var(--media-captions-button-display));\n  --media-rendition-selectmenu-display: var(--rendition-selectmenu);\n  --media-audio-track-selectmenu-display: var(--audio-track-selectmenu);\n  --media-airplay-button-display: var(--airplay-button);\n  --media-pip-button-display: var(--pip-button);\n  --media-fullscreen-button-display: var(--fullscreen-button);\n  --media-cast-button-display: var(--cast-button, var(--_cast-button-drm-display));\n  --media-playback-rate-button-display: var(--playback-rate-button);\n  --media-playback-rate-selectmenu-display: var(--playback-rate-selectmenu);\n  --media-volume-range-display: var(--volume-range);\n  --media-time-range-display: var(--time-range);\n  --media-time-display-display: var(--time-display);\n  --media-duration-display-display: var(--duration-display);\n  --media-title-display-display: var(--title-display);\n\n  display: inline-block;\n  width: 100%;\n  line-height: 0;\n}\n\n/* Hide custom elements that are not defined yet */\n:not(:defined) {\n  display: none;\n}\n\na {\n  color: #fff;\n  font-size: 0.9em;\n  text-decoration: underline;\n}\n\nmedia-theme {\n  width: 100%;\n  height: 100%;\n  direction: ltr;\n}\n\nmedia-poster-image {\n  width: 100%;\n  height: 100%;\n}\n\nmedia-poster-image:not([src]):not([placeholdersrc]) {\n  display: none;\n}\n\n::part(top),\n[part~='top'] {\n  --media-control-display: var(--controls, var(--top-controls));\n  --media-play-button-display: var(--play-button, var(--top-play-button));\n  --media-live-button-display: var(--live-button, var(--top-live-button));\n  --media-seek-backward-button-display: var(--seek-backward-button, var(--top-seek-backward-button));\n  --media-seek-forward-button-display: var(--seek-forward-button, var(--top-seek-forward-button));\n  --media-mute-button-display: var(--mute-button, var(--top-mute-button));\n  --media-captions-button-display: var(--captions-button, var(--top-captions-button));\n  --media-captions-selectmenu-display: var(\n    --captions-selectmenu,\n    var(--media-captions-button-display, var(--top-captions-selectmenu))\n  );\n  --media-rendition-selectmenu-display: var(--rendition-selectmenu, var(--top-rendition-selectmenu));\n  --media-audio-track-selectmenu-display: var(--audio-track-selectmenu, var(--top-audio-track-selectmenu));\n  --media-airplay-button-display: var(--airplay-button, var(--top-airplay-button));\n  --media-pip-button-display: var(--pip-button, var(--top-pip-button));\n  --media-fullscreen-button-display: var(--fullscreen-button, var(--top-fullscreen-button));\n  --media-cast-button-display: var(--cast-button, var(--top-cast-button, var(--_cast-button-drm-display)));\n  --media-playback-rate-button-display: var(--playback-rate-button, var(--top-playback-rate-button));\n  --media-playback-rate-selectmenu-display: var(\n    --captions-selectmenu,\n    var(--media-playback-rate-button-display, var(--top-playback-rate-selectmenu))\n  );\n  --media-volume-range-display: var(--volume-range, var(--top-volume-range));\n  --media-time-range-display: var(--time-range, var(--top-time-range));\n  --media-time-display-display: var(--time-display, var(--top-time-display));\n  --media-duration-display-display: var(--duration-display, var(--top-duration-display));\n  --media-title-display-display: var(--title-display, var(--top-title-display));\n}\n\n::part(center),\n[part~='center'] {\n  --media-control-display: var(--controls, var(--center-controls));\n  --media-play-button-display: var(--play-button, var(--center-play-button));\n  --media-live-button-display: var(--live-button, var(--center-live-button));\n  --media-seek-backward-button-display: var(--seek-backward-button, var(--center-seek-backward-button));\n  --media-seek-forward-button-display: var(--seek-forward-button, var(--center-seek-forward-button));\n  --media-mute-button-display: var(--mute-button, var(--center-mute-button));\n  --media-captions-button-display: var(--captions-button, var(--center-captions-button));\n  --media-captions-selectmenu-display: var(\n    --captions-selectmenu,\n    var(--media-captions-button-display, var(--center-captions-selectmenu))\n  );\n  --media-rendition-selectmenu-display: var(--rendition-selectmenu, var(--center-rendition-selectmenu));\n  --media-audio-track-selectmenu-display: var(--audio-track-selectmenu, var(--center-audio-track-selectmenu));\n  --media-airplay-button-display: var(--airplay-button, var(--center-airplay-button));\n  --media-pip-button-display: var(--pip-button, var(--center-pip-button));\n  --media-fullscreen-button-display: var(--fullscreen-button, var(--center-fullscreen-button));\n  --media-cast-button-display: var(--cast-button, var(--center-cast-button, var(--_cast-button-drm-display)));\n  --media-playback-rate-button-display: var(--playback-rate-button, var(--center-playback-rate-button));\n  --media-playback-rate-selectmenu-display: var(\n    --playback-rate-selectmenu,\n    var(--media-playback-rate-button-display, var(--center-playback-rate-selectmenu))\n  );\n  --media-volume-range-display: var(--volume-range, var(--center-volume-range));\n  --media-time-range-display: var(--time-range, var(--center-time-range));\n  --media-time-display-display: var(--time-display, var(--center-time-display));\n  --media-duration-display-display: var(--duration-display, var(--center-duration-display));\n}\n\n::part(bottom),\n[part~='bottom'] {\n  --media-control-display: var(--controls, var(--bottom-controls));\n  --media-play-button-display: var(--play-button, var(--bottom-play-button));\n  --media-live-button-display: var(--live-button, var(--bottom-live-button));\n  --media-seek-backward-button-display: var(--seek-backward-button, var(--bottom-seek-backward-button));\n  --media-seek-forward-button-display: var(--seek-forward-button, var(--bottom-seek-forward-button));\n  --media-mute-button-display: var(--mute-button, var(--bottom-mute-button));\n  --media-captions-button-display: var(--captions-button, var(--bottom-captions-button));\n  --media-captions-selectmenu-display: var(\n    --captions-selectmenu,\n    var(--media-captions-button-display, var(--bottom-captions-selectmenu))\n  );\n  --media-rendition-selectmenu-display: var(--rendition-selectmenu, var(--bottom-rendition-selectmenu));\n  --media-audio-track-selectmenu-display: var(--audio-track-selectmenu, var(--bottom-audio-track-selectmenu));\n  --media-airplay-button-display: var(--airplay-button, var(--bottom-airplay-button));\n  --media-pip-button-display: var(--pip-button, var(--bottom-pip-button));\n  --media-fullscreen-button-display: var(--fullscreen-button, var(--bottom-fullscreen-button));\n  --media-cast-button-display: var(--cast-button, var(--bottom-cast-button, var(--_cast-button-drm-display)));\n  --media-playback-rate-button-display: var(--playback-rate-button, var(--bottom-playback-rate-button));\n  --media-playback-rate-selectmenu-display: var(\n    --playback-rate-selectmenu,\n    var(--media-playback-rate-button-display, var(--bottom-playback-rate-selectmenu))\n  );\n  --media-volume-range-display: var(--volume-range, var(--bottom-volume-range));\n  --media-time-range-display: var(--time-range, var(--bottom-time-range));\n  --media-time-display-display: var(--time-display, var(--bottom-time-display));\n  --media-duration-display-display: var(--duration-display, var(--bottom-duration-display));\n  --media-title-display-display: var(--title-display, var(--bottom-title-display));\n}\n`;\nvar Tt3 = `\n  :host {\n    z-index: 100;\n    display: var(--media-dialog-display, flex);\n    justify-content: center;\n    align-items: center;\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    top: 0;\n    left: 0;\n    box-sizing: border-box;\n    color: #fff;\n    line-height: 18px;\n    font-family: Arial, sans-serif;\n    padding: var(--media-dialog-backdrop-padding, 0);\n    background: var(--media-dialog-backdrop-background,\n      linear-gradient(to bottom, rgba(20, 20, 30, 0.7) 50%, rgba(20, 20, 30, 0.9))\n    );\n    /* Needs to use !important to prevent overwrite of media-chrome */\n    transition: var(--media-dialog-transition-open, visibility .2s, opacity .2s) !important;\n    transform: var(--media-dialog-transform-open, none) !important;\n    visibility: visible !important;\n    opacity: 1 !important;\n    pointer-events: auto !important;\n  }\n\n  :host(:not([open])) {\n    /* Needs to use !important to prevent overwrite of media-chrome */\n    transition: var(--media-dialog-transition-close, visibility .1s, opacity .1s) !important;\n    transform: var(--media-dialog-transform-close, none) !important;\n    visibility: hidden !important;\n    opacity: 0 !important;\n    pointer-events: none !important;\n  }\n\n  :focus-visible {\n    box-shadow: 0 0 0 2px rgba(27, 127, 204, 0.9);\n  }\n\n  .dialog {\n    position: relative;\n    box-sizing: border-box;\n    background: var(--media-dialog-background, none);\n    padding: var(--media-dialog-padding, 10px);\n    width: min(320px, 100%);\n    word-wrap: break-word;\n    max-height: 100%;\n    overflow: auto;\n    text-align: center;\n    line-height: 1.4;\n  }\n`;\nvar At3 = T2.createElement(\"template\");\nAt3.innerHTML = `\n  <style>\n    ${Tt3}\n  </style>\n\n  <div class=\"dialog\">\n    <slot></slot>\n  </div>\n`;\nvar D2 = class extends c2.HTMLElement {\n  constructor() {\n    var e;\n    super();\n    this.attachShadow({ mode: \"open\" }), (e = this.shadowRoot) == null || e.appendChild(this.constructor.template.content.cloneNode(true));\n  }\n  show() {\n    this.setAttribute(\"open\", \"\"), this.dispatchEvent(new CustomEvent(\"open\", { composed: true, bubbles: true })), kt3(this);\n  }\n  close() {\n    this.hasAttribute(\"open\") && (this.removeAttribute(\"open\"), this.dispatchEvent(new CustomEvent(\"close\", { composed: true, bubbles: true })), ta(this));\n  }\n  attributeChangedCallback(e, a2, r10) {\n    e === \"open\" && a2 !== r10 && (r10 != null ? this.show() : this.close());\n  }\n  connectedCallback() {\n    this.hasAttribute(\"role\") || this.setAttribute(\"role\", \"dialog\"), this.hasAttribute(\"open\") && kt3(this);\n  }\n};\nD2.styles = Tt3, D2.template = At3, D2.observedAttributes = [\"open\"];\nfunction kt3(t2) {\n  let i2 = new CustomEvent(\"initfocus\", { composed: true, bubbles: true, cancelable: true });\n  if (t2.dispatchEvent(i2), i2.defaultPrevented) return;\n  let e = t2.querySelector(\"[autofocus]:not([disabled])\");\n  !e && t2.tabIndex >= 0 && (e = t2), e || (e = Ct3(t2.shadowRoot)), t2._previouslyFocusedElement = T2.activeElement, T2.activeElement instanceof HTMLElement && T2.activeElement.blur(), t2.addEventListener(\"transitionend\", () => {\n    e instanceof HTMLElement && e.focus({ preventScroll: true });\n  }, { once: true });\n}\nfunction Ct3(t2) {\n  let e = [\"button\", \"input\", \"keygen\", \"select\", \"textarea\"].map(function(r10) {\n    return r10 + \":not([disabled])\";\n  });\n  e.push('[tabindex]:not([disabled]):not([tabindex=\"\"])');\n  let a2 = t2 == null ? void 0 : t2.querySelector(e.join(\", \"));\n  if (!a2 && \"attachShadow\" in Element.prototype) {\n    let r10 = (t2 == null ? void 0 : t2.querySelectorAll(\"*\")) || [];\n    for (let o = 0; o < r10.length && !(r10[o].tagName && r10[o].shadowRoot && (a2 = Ct3(r10[o].shadowRoot), a2)); o++) ;\n  }\n  return a2;\n}\nfunction ta(t2) {\n  t2._previouslyFocusedElement instanceof HTMLElement && t2._previouslyFocusedElement.focus();\n}\nc2.customElements.get(\"media-dialog\") || (c2.customElements.define(\"media-dialog\", D2), c2.MediaDialog = D2);\nvar Ie3 = D2;\nvar xt2 = T2.createElement(\"template\");\nxt2.innerHTML = `\n  <style>\n    ${Ie3.styles}\n\n    .close {\n      background: none;\n      color: inherit;\n      border: none;\n      padding: 0;\n      font: inherit;\n      cursor: pointer;\n      outline: inherit;\n      width: 28px;\n      height: 28px;\n      position: absolute;\n      top: 1rem;\n      right: 1rem;\n    }\n  </style>\n\n  <div class=\"dialog\">\n    <slot></slot>\n  </div>\n\n  <slot name=\"close\">\n    <button class=\"close\" tabindex=\"0\">\n      <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n      </svg>\n    </button>\n  </slot>\n`;\nvar te4 = class extends Ie3 {\n  constructor() {\n    var i2, e;\n    super(), (e = (i2 = this.shadowRoot) == null ? void 0 : i2.querySelector(\".close\")) == null || e.addEventListener(\"click\", () => {\n      this.close();\n    });\n  }\n};\nte4.template = xt2;\nc2.customElements.get(\"mxp-dialog\") || (c2.customElements.define(\"mxp-dialog\", te4), c2.MxpDialog = te4);\nvar ae3 = /* @__PURE__ */ new WeakMap();\nvar Ve3 = class t {\n  constructor(i2, e) {\n    this.element = i2;\n    this.type = e;\n    this.element.addEventListener(this.type, this);\n    let a2 = ae3.get(this.element);\n    a2 && a2.set(this.type, this);\n  }\n  set(i2) {\n    if (typeof i2 == \"function\") this.handleEvent = i2.bind(this.element);\n    else if (typeof i2 == \"object\" && typeof i2.handleEvent == \"function\") this.handleEvent = i2.handleEvent.bind(i2);\n    else {\n      this.element.removeEventListener(this.type, this);\n      let e = ae3.get(this.element);\n      e && e.delete(this.type);\n    }\n  }\n  static for(i2) {\n    ae3.has(i2.element) || ae3.set(i2.element, /* @__PURE__ */ new Map());\n    let e = i2.attributeName.slice(2), a2 = ae3.get(i2.element);\n    return a2 && a2.has(e) ? a2.get(e) : new t(i2.element, e);\n  }\n};\nfunction ia(t2, i2) {\n  return t2 instanceof AttrPart && t2.attributeName.startsWith(\"on\") ? (Ve3.for(t2).set(i2), t2.element.removeAttributeNS(t2.attributeNamespace, t2.attributeName), true) : false;\n}\nfunction ra(t2, i2) {\n  return i2 instanceof ce4 && t2 instanceof ChildNodePart ? (i2.renderInto(t2), true) : false;\n}\nfunction oa(t2, i2) {\n  return i2 instanceof DocumentFragment && t2 instanceof ChildNodePart ? (i2.childNodes.length && t2.replace(...i2.childNodes), true) : false;\n}\nfunction na(t2, i2) {\n  if (t2 instanceof AttrPart) {\n    let e = t2.attributeNamespace, a2 = t2.element.getAttributeNS(e, t2.attributeName);\n    return String(i2) !== a2 && (t2.value = String(i2)), true;\n  }\n  return t2.value = String(i2), true;\n}\nfunction sa(t2, i2) {\n  if (t2 instanceof AttrPart && i2 instanceof Element) {\n    let e = t2.element;\n    return e[t2.attributeName] !== i2 && (t2.element.removeAttributeNS(t2.attributeNamespace, t2.attributeName), e[t2.attributeName] = i2), true;\n  }\n  return false;\n}\nfunction da(t2, i2) {\n  if (typeof i2 == \"boolean\" && t2 instanceof AttrPart) {\n    let e = t2.attributeNamespace, a2 = t2.element.hasAttributeNS(e, t2.attributeName);\n    return i2 !== a2 && (t2.booleanValue = i2), true;\n  }\n  return false;\n}\nfunction la(t2, i2) {\n  return i2 === false && t2 instanceof ChildNodePart ? (t2.replace(\"\"), true) : false;\n}\nfunction ma(t2, i2) {\n  sa(t2, i2) || da(t2, i2) || ia(t2, i2) || la(t2, i2) || ra(t2, i2) || oa(t2, i2) || na(t2, i2);\n}\nvar De4 = /* @__PURE__ */ new Map();\nvar Lt3 = /* @__PURE__ */ new WeakMap();\nvar Rt3 = /* @__PURE__ */ new WeakMap();\nvar ce4 = class {\n  constructor(i2, e, a2) {\n    this.strings = i2;\n    this.values = e;\n    this.processor = a2;\n    this.stringsKey = this.strings.join(\"\u0001\");\n  }\n  get template() {\n    if (De4.has(this.stringsKey)) return De4.get(this.stringsKey);\n    {\n      let i2 = T2.createElement(\"template\"), e = this.strings.length - 1;\n      return i2.innerHTML = this.strings.reduce((a2, r10, o) => a2 + r10 + (o < e ? `{{ ${o} }}` : \"\"), \"\"), De4.set(this.stringsKey, i2), i2;\n    }\n  }\n  renderInto(i2) {\n    var r10;\n    let e = this.template;\n    if (Lt3.get(i2) !== e) {\n      Lt3.set(i2, e);\n      let o = new TemplateInstance(e, this.values, this.processor);\n      Rt3.set(i2, o), i2 instanceof ChildNodePart ? i2.replace(...o.children) : i2.appendChild(o);\n      return;\n    }\n    let a2 = Rt3.get(i2);\n    (r10 = a2 == null ? void 0 : a2.update) == null || r10.call(a2, this.values);\n  }\n};\nvar ua = { processCallback(t2, i2, e) {\n  var a2;\n  if (e) {\n    for (let [r10, o] of i2) if (r10 in e) {\n      let s = (a2 = e[r10]) != null ? a2 : \"\";\n      ma(o, s);\n    }\n  }\n} };\nfunction S3(t2, ...i2) {\n  return new ce4(t2, i2, ua);\n}\nfunction wt2(t2, i2) {\n  t2.renderInto(i2);\n}\nvar pa = (t2) => {\n  let { tokens: i2 } = t2;\n  return i2.drm ? \":host { --_cast-button-drm-display: none; }\" : \"\";\n};\nvar St2 = (t2) => S3`\n  <style>\n    ${pa(t2)}\n    ${Et3}\n  </style>\n  ${fa(t2)}\n`;\nvar ba = (t2) => {\n  let i2 = t2.hotKeys ? `${t2.hotKeys}` : \"\";\n  return Q3(t2.streamType) === \"live\" && (i2 += \" noarrowleft noarrowright\"), i2;\n};\nvar ha = { TOP: \"top\", CENTER: \"center\", BOTTOM: \"bottom\", LAYER: \"layer\", MEDIA_LAYER: \"media-layer\", POSTER_LAYER: \"poster-layer\", VERTICAL_LAYER: \"vertical-layer\", CENTERED_LAYER: \"centered-layer\", GESTURE_LAYER: \"gesture-layer\", CONTROLLER_LAYER: \"controller\", BUTTON: \"button\", RANGE: \"range\", DISPLAY: \"display\", CONTROL_BAR: \"control-bar\", SELECTMENU: \"selectmenu\", LISTBOX: \"listbox\", OPTION: \"option\", POSTER: \"poster\", LIVE: \"live\", PLAY: \"play\", PRE_PLAY: \"pre-play\", SEEK_BACKWARD: \"seek-backward\", SEEK_FORWARD: \"seek-forward\", MUTE: \"mute\", CAPTIONS: \"captions\", AIRPLAY: \"airplay\", PIP: \"pip\", FULLSCREEN: \"fullscreen\", CAST: \"cast\", PLAYBACK_RATE: \"playback-rate\", VOLUME: \"volume\", TIME: \"time\", TITLE: \"title\", AUDIO_TRACK: \"audio-track\", RENDITION: \"rendition\" };\nvar ga = Object.values(ha).join(\", \");\nvar fa = (t2) => {\n  var i2, e, a2, r10, o, s, l, h3, R2, k3, v4, f, C3, P2, g2, B5, q3, z2, $e4, Fe3, Ye4, We4, Ze3, Ge3, je4, qe4, ze4, Xe4, Je4, Qe4, et3, tt4, at4, it2, rt3, ot4, nt4, st4;\n  return S3`\n  <media-theme\n    template=\"${t2.themeTemplate || false}\"\n    defaultstreamtype=\"${(i2 = t2.defaultStreamType) != null ? i2 : false}\"\n    hotkeys=\"${ba(t2) || false}\"\n    nohotkeys=\"${t2.noHotKeys || !t2.hasSrc || t2.isDialogOpen || false}\"\n    noautoseektolive=\"${!!((e = t2.streamType) != null && e.includes(g.LIVE)) && t2.targetLiveWindow !== 0}\"\n    novolumepref=\"${t2.novolumepref || false}\"\n    disabled=\"${!t2.hasSrc || t2.isDialogOpen}\"\n    audio=\"${(a2 = t2.audio) != null ? a2 : false}\"\n    style=\"${(r10 = ut3({ \"--media-primary-color\": t2.primaryColor, \"--media-secondary-color\": t2.secondaryColor, \"--media-accent-color\": t2.accentColor })) != null ? r10 : false}\"\n    defaultsubtitles=\"${!t2.defaultHiddenCaptions}\"\n    forwardseekoffset=\"${(o = t2.forwardSeekOffset) != null ? o : false}\"\n    backwardseekoffset=\"${(s = t2.backwardSeekOffset) != null ? s : false}\"\n    playbackrates=\"${(l = t2.playbackRates) != null ? l : false}\"\n    defaultshowremainingtime=\"${(h3 = t2.defaultShowRemainingTime) != null ? h3 : false}\"\n    defaultduration=\"${(R2 = t2.defaultDuration) != null ? R2 : false}\"\n    hideduration=\"${(k3 = t2.hideDuration) != null ? k3 : false}\"\n    title=\"${(v4 = t2.title) != null ? v4 : false}\"\n    exportparts=\"${ga}\"\n  >\n    <mux-video\n      slot=\"media\"\n      target-live-window=\"${(f = t2.targetLiveWindow) != null ? f : false}\"\n      stream-type=\"${(C3 = Q3(t2.streamType)) != null ? C3 : false}\"\n      crossorigin=\"${(P2 = t2.crossOrigin) != null ? P2 : \"\"}\"\n      playsinline\n      autoplay=\"${(g2 = t2.autoplay) != null ? g2 : false}\"\n      muted=\"${(B5 = t2.muted) != null ? B5 : false}\"\n      loop=\"${(q3 = t2.loop) != null ? q3 : false}\"\n      preload=\"${(z2 = t2.preload) != null ? z2 : false}\"\n      debug=\"${($e4 = t2.debug) != null ? $e4 : false}\"\n      prefer-cmcd=\"${(Fe3 = t2.preferCmcd) != null ? Fe3 : false}\"\n      disable-tracking=\"${(Ye4 = t2.disableTracking) != null ? Ye4 : false}\"\n      disable-cookies=\"${(We4 = t2.disableCookies) != null ? We4 : false}\"\n      prefer-playback=\"${(Ze3 = t2.preferPlayback) != null ? Ze3 : false}\"\n      start-time=\"${t2.startTime != null ? t2.startTime : false}\"\n      beacon-collection-domain=\"${(Ge3 = t2.beaconCollectionDomain) != null ? Ge3 : false}\"\n      player-software-name=\"${(je4 = t2.playerSoftwareName) != null ? je4 : false}\"\n      player-software-version=\"${(qe4 = t2.playerSoftwareVersion) != null ? qe4 : false}\"\n      env-key=\"${(ze4 = t2.envKey) != null ? ze4 : false}\"\n      custom-domain=\"${(Xe4 = t2.customDomain) != null ? Xe4 : false}\"\n      src=\"${t2.src ? t2.src : t2.playbackId ? Gt2(t2) : false}\"\n      cast-src=\"${t2.src ? t2.src : t2.playbackId ? Gt2(t2) : false}\"\n      drm-token=\"${(Qe4 = (Je4 = t2.tokens) == null ? void 0 : Je4.drm) != null ? Qe4 : false}\"\n      exportparts=\"video\"\n    >\n      ${t2.storyboard ? S3`<track label=\"thumbnails\" default kind=\"metadata\" src=\"${t2.storyboard}\" />` : S3``}\n    </mux-video>\n    <slot name=\"poster\" slot=\"poster\">\n      <media-poster-image\n        part=\"poster\"\n        exportparts=\"poster, img\"\n        src=\"${t2.poster === \"\" ? false : (et3 = t2.poster) != null ? et3 : false}\"\n        placeholdersrc=\"${(tt4 = t2.placeholder) != null ? tt4 : false}\"\n      ></media-poster-image>\n    </slot>\n    <mxp-dialog\n      no-auto-hide\n      open=\"${(at4 = t2.isDialogOpen) != null ? at4 : false}\"\n      onclose=\"${t2.onCloseErrorDialog}\"\n      oninitfocus=\"${t2.onInitFocusDialog}\"\n    >\n      ${(it2 = t2.dialog) != null && it2.title ? S3`<h3>${t2.dialog.title}</h3>` : S3``}\n      <p>\n        ${(rt3 = t2.dialog) == null ? void 0 : rt3.message}\n        ${(ot4 = t2.dialog) != null && ot4.linkUrl ? S3`<a\n              href=\"${t2.dialog.linkUrl}\"\n              target=\"_blank\"\n              rel=\"external noopener\"\n              aria-label=\"${(nt4 = t2.dialog.linkText) != null ? nt4 : \"\"} ${m(\"(opens in a new window)\")}\"\n              >${(st4 = t2.dialog.linkText) != null ? st4 : t2.dialog.linkUrl}</a\n            >` : S3``}\n      </p>\n    </mxp-dialog>\n  </media-theme>\n`;\n};\nfunction ge3(t2, i2, e, a2, r10) {\n  var l, h3, R2;\n  let o = {}, s = {};\n  switch (t2.code) {\n    case x.MEDIA_ERR_NETWORK: {\n      switch (o.title = m(\"Network Error\", r10), o.message = t2.message, (l = t2.data) == null ? void 0 : l.response.code) {\n        case 412: {\n          o.title = m(\"Video is not currently available\", r10), o.message = m(\"The live stream or video file are not yet ready.\", r10), s.message = m(\"This playback-id may belong to a live stream that is not currently active or an asset that is not ready.\", r10), s.file = \"412-not-playable.md\";\n          break;\n        }\n        case 404: {\n          o.title = m(\"Video does not exist\", r10), o.message = \"\", s.message = m(\"This playback-id does not exist. You may have used an Asset ID or an ID from a different resource.\", r10), s.file = \"404-not-found.md\";\n          break;\n        }\n        case 403: {\n          if (o.title = m(\"Invalid playback URL\", r10), o.message = m(\"The video URL or playback-token are formatted with incorrect or incomplete information.\", r10), s.message = m(\"403 error trying to access this playback URL. If this is a signed URL, you might need to provide a playback-token.\", r10), s.file = \"missing-signed-tokens.md\", !a2) break;\n          let { exp: k3, aud: v4, sub: f } = N2(a2), C3 = Date.now() > k3 * 1e3, P2 = f !== e, g2 = v4 !== \"v\", B5 = { timeStyle: \"medium\", dateStyle: \"medium\" };\n          if (C3) {\n            o.title = m(\"Video URL has expired\", r10), o.message = m(\"The video\\u2019s secured playback-token has expired.\", r10), s.message = m(\"The video\\u2019s secured playback-token has expired.\", r10), s.context = m(\"Expired at: {expiredDate}. Current time: {currentDate}.\", r10).format({ expiredDate: new Intl.DateTimeFormat(U3.code, B5).format(k3 * 1e3), currentDate: new Intl.DateTimeFormat(U3.code, B5).format(Date.now()) }), s.file = \"403-expired-token.md\";\n            break;\n          }\n          if (P2) {\n            o.title = m(\"Video URL is formatted incorrectly\", r10), o.message = m(\"The video\\u2019s playback ID does not match the one encoded in the playback-token.\", r10), s.message = m(\"The video\\u2019s playback ID does not match the one encoded in the playback-token.\", r10), s.context = m(\"Specified playback ID: {playbackId} and the playback ID encoded in the playback-token: {tokenPlaybackId}\", r10).format({ playbackId: e, tokenPlaybackId: f }), s.file = \"403-playback-id-mismatch.md\";\n            break;\n          }\n          if (g2) {\n            o.title = m(\"Video URL is formatted incorrectly\", r10), o.message = m(\"The playback-token is formatted with incorrect information.\", r10), s.message = m(\"The playback-token is formatted with incorrect information.\", r10), s.context = m(\"The playback-token has an incorrect aud value: {tokenType}. aud value should be v.\", r10).format({ tokenType: v4 }), s.file = \"403-incorrect-aud-value.md\";\n            break;\n          }\n          s.message = m(\"403 error trying to access this playback URL. If this is a signed playback ID, the token might not have been generated correctly.\", r10), s.file = \"403-malformatted-token.md\";\n          break;\n        }\n      }\n      break;\n    }\n    case x.MEDIA_ERR_DECODE: {\n      let { message: k3 } = t2;\n      o = { title: m(\"Media Error\", r10), message: k3 }, s.file = \"media-decode-error.md\";\n      break;\n    }\n    case x.MEDIA_ERR_SRC_NOT_SUPPORTED: {\n      let k3 = (R2 = (h3 = t2.data) == null ? void 0 : h3.response) == null ? void 0 : R2.code;\n      if (k3 >= 400 && k3 < 500) {\n        t2.code = x.MEDIA_ERR_NETWORK, t2.data = { response: { code: k3 } }, { dialog: o, devlog: s } = ge3(t2, i2, e, a2);\n        break;\n      }\n      o = { title: m(\"Source Not Supported\", r10), message: t2.message }, s.file = \"media-src-not-supported.md\";\n      break;\n    }\n    default:\n      o = { title: m(\"Error\", r10), message: t2.message };\n      break;\n  }\n  return i2 && (o = { title: m(\"Your device appears to be offline\", r10), message: m(\"Check your internet connection and try reloading this video.\", r10) }), { dialog: o, devlog: s };\n}\nvar Mt2 = `<template id=\"media-theme-gerwig\">\n  <style>\n    @keyframes pre-play-hide {\n      0% {\n        transform: scale(1);\n        opacity: 1;\n      }\n\n      30% {\n        transform: scale(0.7);\n      }\n\n      100% {\n        transform: scale(1.5);\n        opacity: 0;\n      }\n    }\n\n    :host {\n      --_primary-color: var(--media-primary-color, #fff);\n      --_secondary-color: var(--media-secondary-color, transparent);\n      --_accent-color: var(--media-accent-color, #fa50b5);\n      --_text-color: var(--media-text-color, #000);\n\n      --media-icon-color: var(--_primary-color);\n      --media-control-background: var(--_secondary-color);\n      --media-control-hover-background: var(--_accent-color);\n      --media-time-buffered-color: rgba(255, 255, 255, 0.4);\n      --media-preview-time-text-shadow: none;\n      --media-control-height: 14px;\n      --media-control-padding: 6px;\n\n      color: var(--_primary-color);\n      display: inline-block;\n      width: 100%;\n      height: 100%;\n    }\n\n    :host([audio]) {\n      --_secondary-color: var(--media-secondary-color, black);\n      --media-preview-time-text-shadow: none;\n    }\n\n    :host([audio]) ::slotted([slot='media']) {\n      height: 0px;\n    }\n\n    :host([audio]) media-loading-indicator {\n      display: none;\n    }\n\n    :host([audio]) media-controller {\n      background: transparent;\n    }\n\n    :host([audio]) media-controller::part(vertical-layer) {\n      background: transparent;\n    }\n\n    :host([audio]) media-control-bar {\n      width: 100%;\n      background-color: var(--media-control-background);\n    }\n\n    /*\n     * 0.433s is the transition duration for VTT Regions.\n     * Borrowed here, so the captions don't move too fast.\n     */\n    media-controller {\n      --media-webkit-text-track-transform: translateY(0) scale(0.98);\n      --media-webkit-text-track-transition: transform 0.433s ease-out 0.3s;\n    }\n    media-controller:is([mediapaused], :not([userinactive])) {\n      --media-webkit-text-track-transform: translateY(-50px) scale(0.98);\n      --media-webkit-text-track-transition: transform 0.15s ease;\n    }\n\n    /*\n     * CSS specific to iOS devices.\n     * See: https://stackoverflow.com/questions/30102792/css-media-query-to-target-only-ios-devices/60220757#60220757\n     */\n    @supports (-webkit-touch-callout: none) {\n      /* Disable subtitle adjusting for iOS Safari */\n      media-controller[mediaisfullscreen] {\n        --media-webkit-text-track-transform: unset;\n        --media-webkit-text-track-transition: unset;\n      }\n    }\n\n    media-time-range {\n      --media-box-padding-left: 6px;\n      --media-box-padding-right: 6px;\n      --media-range-bar-color: var(--_accent-color);\n      --media-time-range-buffered-color: var(--_primary-color);\n      --media-range-track-color: transparent;\n      --media-range-track-background: rgba(255, 255, 255, 0.4);\n      --media-range-thumb-background: radial-gradient(\n        circle,\n        #000 0%,\n        #000 25%,\n        var(--_accent-color) 25%,\n        var(--_accent-color)\n      );\n      --media-range-thumb-width: 12px;\n      --media-range-thumb-height: 12px;\n      --media-range-thumb-transform: scale(0);\n      --media-range-thumb-transition: transform 0.3s;\n      --media-range-thumb-opacity: 1;\n      --media-preview-background: var(--_primary-color);\n      --media-box-arrow-background: var(--_primary-color);\n      --media-preview-thumbnail-border: 5px solid var(--_primary-color);\n      --media-preview-border-radius: 5px;\n      --media-text-color: var(--_text-color);\n      --media-control-hover-background: transparent;\n      --media-preview-chapter-text-shadow: none;\n      color: var(--_accent-color);\n      padding: 0 6px;\n    }\n\n    :host([audio]) media-time-range {\n      --media-preview-time-padding: 1.5px 6px;\n      --media-preview-box-margin: 0 0 -5px;\n    }\n\n    media-time-range:hover {\n      --media-range-thumb-transform: scale(1);\n    }\n\n    media-preview-thumbnail {\n      border-bottom-width: 0;\n    }\n\n    [part~='listbox'] {\n      border-radius: 2px;\n      border: 1px solid rgba(0, 0, 0, 0.1);\n      bottom: calc(100% + 16px);\n      padding: 2.5px 10px;\n    }\n\n    [part~='listbox']::part(indicator) {\n      fill: var(--_accent-color);\n    }\n\n    [part~='listbox']::part(option) {\n      box-sizing: border-box;\n      display: flex;\n      align-items: center;\n      padding: 6px 10px;\n      min-height: 34px;\n    }\n\n    [part~='listbox']::part(option-selected) {\n      font-weight: 700;\n    }\n\n    media-captions-selectmenu,\n    media-rendition-selectmenu,\n    media-audio-track-selectmenu,\n    media-playback-rate-listbox[part~='listbox'] {\n      --media-listbox-background: var(--_primary-color);\n      --media-option-selected-background: transparent;\n      --media-option-hover-background: transparent;\n      --media-option-hover-outline: var(--_accent-color) solid 1px;\n      --media-text-color: var(--_text-color);\n    }\n\n    /* The icon is a circle so make it 16px high instead of 14px for more balance. */\n    media-audio-track-selectmenu {\n      --media-control-padding: 5px;\n      --media-control-height: 16px;\n    }\n\n    media-playback-rate-button {\n      --media-control-padding: 6px 3px;\n      min-width: 4.4ch;\n    }\n\n    media-playback-rate-listbox[part~='listbox'] {\n      --media-listbox-layout: row;\n      --media-option-selected-background: var(--_accent-color);\n      margin-right: 6px;\n      padding: 0;\n    }\n\n    media-playback-rate-listbox[part~='listbox']::part(option) {\n      padding: 6px 4px;\n    }\n\n    media-playback-rate-listbox[part~='listbox']::part(option-selected) {\n      color: #fff;\n    }\n\n    :host(:not([audio])) media-time-range {\n      /* Adding px is required here for calc() */\n      --media-range-padding: 0px;\n      background: transparent;\n      z-index: 10;\n      height: 10px;\n      bottom: -3px;\n      width: 100%;\n    }\n\n    media-control-bar :is([role='button'], [role='switch'], button) {\n      line-height: 0;\n    }\n\n    media-control-bar :is([part*='button'], [part*='range'], [part*='display']) {\n      border-radius: 3px;\n    }\n\n    .spacer {\n      flex-grow: 1;\n      background-color: var(--media-control-background, rgba(20, 20, 30, 0.7));\n    }\n\n    media-control-bar[slot~='top-chrome'] {\n      min-height: 42px;\n      pointer-events: none;\n    }\n\n    media-control-bar {\n      --gradient-steps: hsl(0 0% 0% / 0) 0%, hsl(0 0% 0% / 0.013) 8.1%, hsl(0 0% 0% / 0.049) 15.5%,\n        hsl(0 0% 0% / 0.104) 22.5%, hsl(0 0% 0% / 0.175) 29%, hsl(0 0% 0% / 0.259) 35.3%, hsl(0 0% 0% / 0.352) 41.2%,\n        hsl(0 0% 0% / 0.45) 47.1%, hsl(0 0% 0% / 0.55) 52.9%, hsl(0 0% 0% / 0.648) 58.8%, hsl(0 0% 0% / 0.741) 64.7%,\n        hsl(0 0% 0% / 0.825) 71%, hsl(0 0% 0% / 0.896) 77.5%, hsl(0 0% 0% / 0.951) 84.5%, hsl(0 0% 0% / 0.987) 91.9%,\n        hsl(0 0% 0%) 100%;\n    }\n\n    :host([title]:not([audio])) media-control-bar[slot='top-chrome']::before {\n      content: '';\n      position: absolute;\n      width: 100%;\n      padding-bottom: min(100px, 25%);\n      background: linear-gradient(to top, var(--gradient-steps));\n      opacity: 0.8;\n      pointer-events: none;\n    }\n\n    :host(:not([audio])) media-control-bar[part~='bottom']::before {\n      content: '';\n      position: absolute;\n      width: 100%;\n      bottom: 0;\n      left: 0;\n      padding-bottom: min(100px, 25%);\n      background: linear-gradient(to bottom, var(--gradient-steps));\n      opacity: 0.8;\n      z-index: 1;\n      pointer-events: none;\n    }\n\n    media-control-bar[part~='bottom'] > * {\n      z-index: 2;\n    }\n\n    media-control-bar[part~='bottom'] {\n      padding: 6px 6px;\n    }\n\n    media-control-bar[slot~='top-chrome'] > * {\n      --media-control-background: transparent;\n      --media-control-hover-background: transparent;\n      position: relative;\n    }\n\n    media-controller::part(vertical-layer) {\n      transition: background-color 1s;\n    }\n\n    media-controller:is([mediapaused], :not([userinactive]))::part(vertical-layer) {\n      background-color: var(--controls-backdrop-color, var(--controls, transparent));\n      transition: background-color 0.25s;\n    }\n\n    .center-controls {\n      --media-button-icon-width: 100%;\n      --media-button-icon-height: auto;\n      pointer-events: none;\n      width: 100%;\n      display: flex;\n      flex-flow: row;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 0 2px rgb(0 0 0 / 0.25)) drop-shadow(0 0 6px rgb(0 0 0 / 0.25));\n      paint-order: stroke;\n      stroke: rgba(102, 102, 102, 1);\n      stroke-width: 0.3px;\n      text-shadow:\n        0 0 2px rgb(0 0 0 / 0.25),\n        0 0 6px rgb(0 0 0 / 0.25);\n    }\n\n    .center-controls media-play-button {\n      --media-control-background: transparent;\n      --media-control-hover-background: transparent;\n      --media-control-padding: 0;\n      width: 40px;\n    }\n\n    [breakpointsm] .center-controls media-play-button {\n      width: 90px;\n      height: 90px;\n      border-radius: 50%;\n      transition: background 0.4s;\n      padding: 24px;\n      --media-control-background: #000;\n      --media-control-hover-background: var(--_accent-color);\n    }\n\n    .center-controls media-seek-backward-button,\n    .center-controls media-seek-forward-button {\n      --media-control-background: transparent;\n      --media-control-hover-background: transparent;\n      padding: 0;\n      margin: 0 20px;\n      width: max(33px, min(8%, 40px));\n    }\n\n    [breakpointsm]:not([audio]) .center-controls.pre-playback {\n      display: grid;\n      align-items: initial;\n      justify-content: initial;\n      height: 100%;\n      overflow: hidden;\n    }\n\n    [breakpointsm]:not([audio]) .center-controls.pre-playback media-play-button {\n      place-self: var(--_pre-playback-place, center);\n      grid-area: 1 / 1;\n      margin: 16px;\n    }\n\n    /* Show and hide controls or pre-playback state */\n\n    [breakpointsm]:is([mediahasplayed], :not([mediapaused])):not([audio])\n      .center-controls.pre-playback\n      media-play-button {\n      /* Using \\`forwards\\` would lead to a laggy UI after the animation got in the end state */\n      animation: 0.3s linear pre-play-hide;\n      opacity: 0;\n      pointer-events: none;\n    }\n\n    .autoplay-unmute {\n      --media-control-hover-background: transparent;\n      width: 100%;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 0 2px rgb(0 0 0 / 0.25)) drop-shadow(0 0 6px rgb(0 0 0 / 0.25));\n    }\n\n    .autoplay-unmute-btn {\n      --media-control-height: 16px;\n      border-radius: 8px;\n      background: #000;\n      color: var(--_primary-color);\n      display: flex;\n      align-items: center;\n      padding: 8px 16px;\n      font-size: 18px;\n      font-weight: 500;\n      cursor: pointer;\n    }\n\n    .autoplay-unmute-btn:hover {\n      background: var(--_accent-color);\n    }\n\n    [breakpointsm] .autoplay-unmute-btn {\n      --media-control-height: 30px;\n      padding: 14px 24px;\n      font-size: 26px;\n    }\n\n    .autoplay-unmute-btn svg {\n      margin: 0 6px 0 0;\n    }\n\n    [breakpointsm] .autoplay-unmute-btn svg {\n      margin: 0 10px 0 0;\n    }\n\n    media-controller:not([audio]):not([mediahasplayed]) *:is(media-control-bar, media-time-range) {\n      display: none;\n    }\n\n    media-loading-indicator {\n      --media-loading-icon-width: 100%;\n      --media-button-icon-height: auto;\n      display: var(--media-control-display, var(--media-loading-indicator-display, flex));\n      pointer-events: none;\n      position: absolute;\n      width: min(15%, 150px);\n      flex-flow: row;\n      align-items: center;\n      justify-content: center;\n    }\n\n    /* Intentionally don't target the div for transition but the children\n     of the div. Prevents messing with media-chrome's autohide feature. */\n    media-loading-indicator + div * {\n      transition: opacity 0.15s;\n      opacity: 1;\n    }\n\n    media-loading-indicator[medialoading]:not([mediapaused]) ~ div > * {\n      opacity: 0;\n      transition-delay: 400ms;\n    }\n\n    media-volume-range {\n      width: min(100%, 100px);\n      --media-range-padding-left: 10px;\n      --media-range-padding-right: 10px;\n      --media-range-thumb-width: 12px;\n      --media-range-thumb-height: 12px;\n      --media-range-thumb-background: radial-gradient(\n        circle,\n        #000 0%,\n        #000 25%,\n        var(--_primary-color) 25%,\n        var(--_primary-color)\n      );\n      --media-control-hover-background: none;\n    }\n\n    media-time-display {\n      white-space: nowrap;\n    }\n\n    /* Generic style for explicitly disabled controls */\n    media-control-bar[part~='bottom'] [disabled],\n    media-control-bar[part~='bottom'] [aria-disabled='true'] {\n      opacity: 60%;\n      cursor: not-allowed;\n    }\n\n    media-text-display {\n      --media-font-size: 16px;\n      --media-control-padding: 14px;\n      font-weight: 500;\n    }\n\n    media-play-button.animated *:is(g, path) {\n      transition: all 0.3s;\n    }\n\n    media-play-button.animated[mediapaused] .pause-icon-pt1 {\n      opacity: 0;\n    }\n\n    media-play-button.animated[mediapaused] .pause-icon-pt2 {\n      transform-origin: center center;\n      transform: scaleY(0);\n    }\n\n    media-play-button.animated[mediapaused] .play-icon {\n      clip-path: inset(0 0 0 0);\n    }\n\n    media-play-button.animated:not([mediapaused]) .play-icon {\n      clip-path: inset(0 0 0 100%);\n    }\n\n    media-seek-forward-button,\n    media-seek-backward-button {\n      --media-font-weight: 400;\n    }\n\n    .mute-icon {\n      display: inline-block;\n    }\n\n    .mute-icon :is(path, g) {\n      transition: opacity 0.5s;\n    }\n\n    .muted {\n      opacity: 0;\n    }\n\n    media-mute-button[mediavolumelevel='low'] :is(.volume-medium, .volume-high),\n    media-mute-button[mediavolumelevel='medium'] :is(.volume-high) {\n      opacity: 0;\n    }\n\n    media-mute-button[mediavolumelevel='off'] .unmuted {\n      opacity: 0;\n    }\n\n    media-mute-button[mediavolumelevel='off'] .muted {\n      opacity: 1;\n    }\n\n    /**\n     * Our defaults for these buttons are to hide them at small sizes\n     * users can override this with CSS\n     */\n    media-controller:not([breakpointsm]):not([audio]) {\n      --bottom-play-button: none;\n      --bottom-seek-backward-button: none;\n      --bottom-seek-forward-button: none;\n      --bottom-time-display: none;\n      --bottom-playback-rate-selectmenu: none;\n      --bottom-pip-button: none;\n    }\n  </style>\n\n  <template partial=\"TitleDisplay\">\n    <template if=\"title\">\n      <media-text-display part=\"top title display\" class=\"title-display\">{{title}}</media-text-display>\n    </template>\n  </template>\n\n  <template partial=\"PlayButton\">\n    <media-play-button\n      part=\"{{section ?? 'bottom'}} play button\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n      class=\"animated\"\n    >\n      <svg aria-hidden=\"true\" viewBox=\"0 0 18 14\" slot=\"icon\">\n        <g class=\"play-icon\">\n          <path\n            d=\"M15.5987 6.2911L3.45577 0.110898C2.83667 -0.204202 2.06287 0.189698 2.06287 0.819798V13.1802C2.06287 13.8103 2.83667 14.2042 3.45577 13.8891L15.5987 7.7089C16.2178 7.3938 16.2178 6.6061 15.5987 6.2911Z\"\n          />\n        </g>\n        <g class=\"pause-icon\">\n          <path\n            class=\"pause-icon-pt1\"\n            d=\"M5.90709 0H2.96889C2.46857 0 2.06299 0.405585 2.06299 0.9059V13.0941C2.06299 13.5944 2.46857 14 2.96889 14H5.90709C6.4074 14 6.81299 13.5944 6.81299 13.0941V0.9059C6.81299 0.405585 6.4074 0 5.90709 0Z\"\n          />\n          <path\n            class=\"pause-icon-pt2\"\n            d=\"M15.1571 0H12.2189C11.7186 0 11.313 0.405585 11.313 0.9059V13.0941C11.313 13.5944 11.7186 14 12.2189 14H15.1571C15.6574 14 16.063 13.5944 16.063 13.0941V0.9059C16.063 0.405585 15.6574 0 15.1571 0Z\"\n          />\n        </g>\n      </svg>\n    </media-play-button>\n  </template>\n\n  <template partial=\"PrePlayButton\">\n    <media-play-button\n      part=\"{{section ?? 'center'}} play button pre-play\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    >\n      <svg aria-hidden=\"true\" viewBox=\"0 0 18 14\" slot=\"icon\" style=\"transform: translate(3px, 0)\">\n        <path\n          d=\"M15.5987 6.2911L3.45577 0.110898C2.83667 -0.204202 2.06287 0.189698 2.06287 0.819798V13.1802C2.06287 13.8103 2.83667 14.2042 3.45577 13.8891L15.5987 7.7089C16.2178 7.3938 16.2178 6.6061 15.5987 6.2911Z\"\n        />\n      </svg>\n    </media-play-button>\n  </template>\n\n  <template partial=\"SeekBackwardButton\">\n    <media-seek-backward-button\n      seekoffset=\"{{backwardseekoffset}}\"\n      part=\"{{section ?? 'bottom'}} seek-backward button\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    >\n      <svg viewBox=\"0 0 22 14\" aria-hidden=\"true\" slot=\"icon\">\n        <path\n          d=\"M3.65 2.07888L0.0864 6.7279C-0.0288 6.87812 -0.0288 7.12188 0.0864 7.2721L3.65 11.9211C3.7792 12.0896 4 11.9703 4 11.7321V2.26787C4 2.02968 3.7792 1.9104 3.65 2.07888Z\"\n        />\n        <text transform=\"translate(6 12)\" style=\"font-size: 14px; font-family: 'ArialMT', 'Arial'\">\n          {{backwardseekoffset}}\n        </text>\n      </svg>\n    </media-seek-backward-button>\n  </template>\n\n  <template partial=\"SeekForwardButton\">\n    <media-seek-forward-button\n      seekoffset=\"{{forwardseekoffset}}\"\n      part=\"{{section ?? 'bottom'}} seek-forward button\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    >\n      <svg viewBox=\"0 0 22 14\" aria-hidden=\"true\" slot=\"icon\">\n        <g>\n          <text transform=\"translate(-1 12)\" style=\"font-size: 14px; font-family: 'ArialMT', 'Arial'\">\n            {{forwardseekoffset}}\n          </text>\n          <path\n            d=\"M18.35 11.9211L21.9136 7.2721C22.0288 7.12188 22.0288 6.87812 21.9136 6.7279L18.35 2.07888C18.2208 1.91041 18 2.02968 18 2.26787V11.7321C18 11.9703 18.2208 12.0896 18.35 11.9211Z\"\n          />\n        </g>\n      </svg>\n    </media-seek-forward-button>\n  </template>\n\n  <template partial=\"MuteButton\">\n    <media-mute-button part=\"bottom mute button\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <svg viewBox=\"0 0 18 14\" slot=\"icon\" class=\"mute-icon\" aria-hidden=\"true\">\n        <g class=\"unmuted\">\n          <path\n            d=\"M6.76786 1.21233L3.98606 3.98924H1.19937C0.593146 3.98924 0.101743 4.51375 0.101743 5.1607V6.96412L0 6.99998L0.101743 7.03583V8.83926C0.101743 9.48633 0.593146 10.0108 1.19937 10.0108H3.98606L6.76773 12.7877C7.23561 13.2547 8 12.9007 8 12.2171V1.78301C8 1.09925 7.23574 0.745258 6.76786 1.21233Z\"\n          />\n          <path\n            class=\"volume-low\"\n            d=\"M10 3.54781C10.7452 4.55141 11.1393 5.74511 11.1393 6.99991C11.1393 8.25471 10.7453 9.44791 10 10.4515L10.7988 11.0496C11.6734 9.87201 12.1356 8.47161 12.1356 6.99991C12.1356 5.52821 11.6735 4.12731 10.7988 2.94971L10 3.54781Z\"\n          />\n          <path\n            class=\"volume-medium\"\n            d=\"M12.3778 2.40086C13.2709 3.76756 13.7428 5.35806 13.7428 7.00026C13.7428 8.64246 13.2709 10.233 12.3778 11.5992L13.2106 12.1484C14.2107 10.6185 14.739 8.83796 14.739 7.00016C14.739 5.16236 14.2107 3.38236 13.2106 1.85156L12.3778 2.40086Z\"\n          />\n          <path\n            class=\"volume-high\"\n            d=\"M15.5981 0.75L14.7478 1.2719C15.7937 2.9919 16.3468 4.9723 16.3468 7C16.3468 9.0277 15.7937 11.0082 14.7478 12.7281L15.5981 13.25C16.7398 11.3722 17.343 9.211 17.343 7C17.343 4.789 16.7398 2.6268 15.5981 0.75Z\"\n          />\n        </g>\n        <g class=\"muted\">\n          <path\n            fill-rule=\"evenodd\"\n            clip-rule=\"evenodd\"\n            d=\"M4.39976 4.98924H1.19937C1.19429 4.98924 1.17777 4.98961 1.15296 5.01609C1.1271 5.04369 1.10174 5.09245 1.10174 5.1607V8.83926C1.10174 8.90761 1.12714 8.95641 1.15299 8.984C1.17779 9.01047 1.1943 9.01084 1.19937 9.01084H4.39977L7 11.6066V2.39357L4.39976 4.98924ZM7.47434 1.92006C7.4743 1.9201 7.47439 1.92002 7.47434 1.92006V1.92006ZM6.76773 12.7877L3.98606 10.0108H1.19937C0.593146 10.0108 0.101743 9.48633 0.101743 8.83926V7.03583L0 6.99998L0.101743 6.96412V5.1607C0.101743 4.51375 0.593146 3.98924 1.19937 3.98924H3.98606L6.76786 1.21233C7.23574 0.745258 8 1.09925 8 1.78301V12.2171C8 12.9007 7.23561 13.2547 6.76773 12.7877Z\"\n          />\n          <path\n            fill-rule=\"evenodd\"\n            clip-rule=\"evenodd\"\n            d=\"M15.2677 9.30323C15.463 9.49849 15.7796 9.49849 15.9749 9.30323C16.1701 9.10796 16.1701 8.79138 15.9749 8.59612L14.2071 6.82841L15.9749 5.06066C16.1702 4.8654 16.1702 4.54882 15.9749 4.35355C15.7796 4.15829 15.4631 4.15829 15.2678 4.35355L13.5 6.1213L11.7322 4.35348C11.537 4.15822 11.2204 4.15822 11.0251 4.35348C10.8298 4.54874 10.8298 4.86532 11.0251 5.06058L12.7929 6.82841L11.0251 8.59619C10.8299 8.79146 10.8299 9.10804 11.0251 9.3033C11.2204 9.49856 11.537 9.49856 11.7323 9.3033L13.5 7.53552L15.2677 9.30323Z\"\n          />\n        </g>\n      </svg>\n    </media-mute-button>\n  </template>\n\n  <template partial=\"PipButton\">\n    <media-pip-button part=\"bottom pip button\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <svg viewBox=\"0 0 18 14\" aria-hidden=\"true\" slot=\"icon\">\n        <path\n          d=\"M15.9891 0H2.011C0.9004 0 0 0.9003 0 2.0109V11.989C0 13.0996 0.9004 14 2.011 14H15.9891C17.0997 14 18 13.0997 18 11.9891V2.0109C18 0.9003 17.0997 0 15.9891 0ZM17 11.9891C17 12.5465 16.5465 13 15.9891 13H2.011C1.4536 13 1.0001 12.5465 1.0001 11.9891V2.0109C1.0001 1.4535 1.4536 0.9999 2.011 0.9999H15.9891C16.5465 0.9999 17 1.4535 17 2.0109V11.9891Z\"\n        />\n        <path\n          d=\"M15.356 5.67822H8.19523C8.03253 5.67822 7.90063 5.81012 7.90063 5.97282V11.3836C7.90063 11.5463 8.03253 11.6782 8.19523 11.6782H15.356C15.5187 11.6782 15.6506 11.5463 15.6506 11.3836V5.97282C15.6506 5.81012 15.5187 5.67822 15.356 5.67822Z\"\n        />\n      </svg>\n    </media-pip-button>\n  </template>\n\n  <template partial=\"CaptionsMenuButton\">\n    <media-captions-selectmenu part=\"bottom captions selectmenu\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <media-captions-button\n        slot=\"button\"\n        part=\"bottom captions button\"\n        disabled=\"{{disabled}}\"\n        aria-disabled=\"{{disabled}}\"\n      >\n        <svg aria-hidden=\"true\" viewBox=\"0 0 18 14\" slot=\"on\">\n          <path\n            d=\"M15.989 0H2.011C0.9004 0 0 0.9003 0 2.0109V11.9891C0 13.0997 0.9004 14 2.011 14H15.989C17.0997 14 18 13.0997 18 11.9891V2.0109C18 0.9003 17.0997 0 15.989 0ZM4.2292 8.7639C4.5954 9.1902 5.0935 9.4031 5.7233 9.4031C6.1852 9.4031 6.5544 9.301 6.8302 9.0969C7.1061 8.8933 7.2863 8.614 7.3702 8.26H8.4322C8.3062 8.884 8.0093 9.3733 7.5411 9.7273C7.0733 10.0813 6.4703 10.2581 5.732 10.2581C5.108 10.2581 4.5699 10.1219 4.1168 9.8489C3.6637 9.5759 3.3141 9.1946 3.0685 8.7058C2.8224 8.2165 2.6994 7.6511 2.6994 7.009C2.6994 6.3611 2.8224 5.7927 3.0685 5.3034C3.3141 4.8146 3.6637 4.4323 4.1168 4.1559C4.5699 3.88 5.108 3.7418 5.732 3.7418C6.4703 3.7418 7.0733 3.922 7.5411 4.2818C8.0094 4.6422 8.3062 5.1461 8.4322 5.794H7.3702C7.2862 5.4283 7.106 5.1368 6.8302 4.921C6.5544 4.7052 6.1852 4.5968 5.7233 4.5968C5.0934 4.5968 4.5954 4.8116 4.2292 5.2404C3.8635 5.6696 3.6804 6.259 3.6804 7.009C3.6804 7.7531 3.8635 8.3381 4.2292 8.7639ZM11.0974 8.7639C11.4636 9.1902 11.9617 9.4031 12.5915 9.4031C13.0534 9.4031 13.4226 9.301 13.6984 9.0969C13.9743 8.8933 14.1545 8.614 14.2384 8.26H15.3004C15.1744 8.884 14.8775 9.3733 14.4093 9.7273C13.9415 10.0813 13.3385 10.2581 12.6002 10.2581C11.9762 10.2581 11.4381 10.1219 10.985 9.8489C10.5319 9.5759 10.1823 9.1946 9.9367 8.7058C9.6906 8.2165 9.5676 7.6511 9.5676 7.009C9.5676 6.3611 9.6906 5.7927 9.9367 5.3034C10.1823 4.8146 10.5319 4.4323 10.985 4.1559C11.4381 3.88 11.9762 3.7418 12.6002 3.7418C13.3385 3.7418 13.9415 3.922 14.4093 4.2818C14.8776 4.6422 15.1744 5.1461 15.3004 5.794H14.2384C14.1544 5.4283 13.9742 5.1368 13.6984 4.921C13.4226 4.7052 13.0534 4.5968 12.5915 4.5968C11.9616 4.5968 11.4636 4.8116 11.0974 5.2404C10.7317 5.6696 10.5486 6.259 10.5486 7.009C10.5486 7.7531 10.7317 8.3381 11.0974 8.7639Z\"\n          />\n        </svg>\n        <svg aria-hidden=\"true\" viewBox=\"0 0 18 14\" slot=\"off\">\n          <path\n            d=\"M5.73219 10.258C5.10819 10.258 4.57009 10.1218 4.11699 9.8488C3.66389 9.5758 3.31429 9.1945 3.06869 8.7057C2.82259 8.2164 2.69958 7.651 2.69958 7.0089C2.69958 6.361 2.82259 5.7926 3.06869 5.3033C3.31429 4.8145 3.66389 4.4322 4.11699 4.1558C4.57009 3.8799 5.10819 3.7417 5.73219 3.7417C6.47049 3.7417 7.07348 3.9219 7.54128 4.2817C8.00958 4.6421 8.30638 5.146 8.43238 5.7939H7.37039C7.28639 5.4282 7.10618 5.1367 6.83039 4.9209C6.55459 4.7051 6.18538 4.5967 5.72348 4.5967C5.09358 4.5967 4.59559 4.8115 4.22939 5.2403C3.86369 5.6695 3.68058 6.2589 3.68058 7.0089C3.68058 7.753 3.86369 8.338 4.22939 8.7638C4.59559 9.1901 5.09368 9.403 5.72348 9.403C6.18538 9.403 6.55459 9.3009 6.83039 9.0968C7.10629 8.8932 7.28649 8.6139 7.37039 8.2599H8.43238C8.30638 8.8839 8.00948 9.3732 7.54128 9.7272C7.07348 10.0812 6.47049 10.258 5.73219 10.258Z\"\n          />\n          <path\n            d=\"M12.6003 10.258C11.9763 10.258 11.4382 10.1218 10.9851 9.8488C10.532 9.5758 10.1824 9.1945 9.93685 8.7057C9.69075 8.2164 9.56775 7.651 9.56775 7.0089C9.56775 6.361 9.69075 5.7926 9.93685 5.3033C10.1824 4.8145 10.532 4.4322 10.9851 4.1558C11.4382 3.8799 11.9763 3.7417 12.6003 3.7417C13.3386 3.7417 13.9416 3.9219 14.4094 4.2817C14.8777 4.6421 15.1745 5.146 15.3005 5.7939H14.2385C14.1545 5.4282 13.9743 5.1367 13.6985 4.9209C13.4227 4.7051 13.0535 4.5967 12.5916 4.5967C11.9617 4.5967 11.4637 4.8115 11.0975 5.2403C10.7318 5.6695 10.5487 6.2589 10.5487 7.0089C10.5487 7.753 10.7318 8.338 11.0975 8.7638C11.4637 9.1901 11.9618 9.403 12.5916 9.403C13.0535 9.403 13.4227 9.3009 13.6985 9.0968C13.9744 8.8932 14.1546 8.6139 14.2385 8.2599H15.3005C15.1745 8.8839 14.8776 9.3732 14.4094 9.7272C13.9416 10.0812 13.3386 10.258 12.6003 10.258Z\"\n          />\n          <path\n            d=\"M15.9891 1C16.5465 1 17 1.4535 17 2.011V11.9891C17 12.5465 16.5465 13 15.9891 13H2.0109C1.4535 13 1 12.5465 1 11.9891V2.0109C1 1.4535 1.4535 0.9999 2.0109 0.9999L15.9891 1ZM15.9891 0H2.0109C0.9003 0 0 0.9003 0 2.0109V11.9891C0 13.0997 0.9003 14 2.0109 14H15.9891C17.0997 14 18 13.0997 18 11.9891V2.0109C18 0.9003 17.0997 0 15.9891 0Z\"\n          />\n        </svg>\n      </media-captions-button>\n      <media-captions-listbox slot=\"listbox\" exportparts=\"option\" part=\"bottom captions listbox\">\n        <div slot=\"select-indicator\">\n          <style>\n            .listbox-indicator {\n              position: relative;\n              top: 1px;\n              width: 0.9em;\n              height: auto;\n              fill: var(--_accent-color);\n            }\n\n            [aria-selected='false'] .listbox-indicator {\n              display: none;\n            }\n          </style>\n          <svg viewBox=\"0 0 14 18\" class=\"listbox-indicator\">\n            <path\n              d=\"M12.252 3.48c-.115.033-.301.161-.425.291-.059.063-1.407 1.815-2.995 3.894s-2.897 3.79-2.908 3.802c-.013.014-.661-.616-1.672-1.624-.908-.905-1.702-1.681-1.765-1.723-.401-.27-.783-.211-1.176.183a1.285 1.285 0 0 0-.261.342.582.582 0 0 0-.082.35c0 .165.01.205.08.35.075.153.213.296 2.182 2.271 1.156 1.159 2.17 2.159 2.253 2.222.189.143.338.196.539.194.203-.003.412-.104.618-.299.205-.193 6.7-8.693 6.804-8.903a.716.716 0 0 0 .085-.345c.01-.179.005-.203-.062-.339-.124-.252-.45-.531-.746-.639a.784.784 0 0 0-.469-.027\"\n              fill-rule=\"evenodd\"\n            />\n          </svg>\n        </div>\n      </media-captions-listbox>\n    </media-captions-selectmenu>\n  </template>\n\n  <template partial=\"AirplayButton\">\n    <media-airplay-button part=\"bottom airplay button\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <svg viewBox=\"0 0 18 14\" aria-hidden=\"true\" slot=\"icon\">\n        <path\n          d=\"M16.1383 0H1.8618C0.8335 0 0 0.8335 0 1.8617V10.1382C0 11.1664 0.8335 12 1.8618 12H3.076C3.1204 11.9433 3.1503 11.8785 3.2012 11.826L4.004 11H1.8618C1.3866 11 1 10.6134 1 10.1382V1.8617C1 1.3865 1.3866 0.9999 1.8618 0.9999H16.1383C16.6135 0.9999 17.0001 1.3865 17.0001 1.8617V10.1382C17.0001 10.6134 16.6135 11 16.1383 11H13.9961L14.7989 11.826C14.8499 11.8785 14.8798 11.9432 14.9241 12H16.1383C17.1665 12 18.0001 11.1664 18.0001 10.1382V1.8617C18 0.8335 17.1665 0 16.1383 0Z\"\n        />\n        <path\n          d=\"M9.55061 8.21903C9.39981 8.06383 9.20001 7.98633 9.00011 7.98633C8.80021 7.98633 8.60031 8.06383 8.44951 8.21903L4.09771 12.697C3.62471 13.1838 3.96961 13.9998 4.64831 13.9998H13.3518C14.0304 13.9998 14.3754 13.1838 13.9023 12.697L9.55061 8.21903Z\"\n        />\n      </svg>\n    </media-airplay-button>\n  </template>\n\n  <template partial=\"FullscreenButton\">\n    <media-fullscreen-button part=\"bottom fullscreen button\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <svg viewBox=\"0 0 18 14\" aria-hidden=\"true\" slot=\"enter\">\n        <path\n          d=\"M1.00745 4.39539L1.01445 1.98789C1.01605 1.43049 1.47085 0.978289 2.02835 0.979989L6.39375 0.992589L6.39665 -0.007411L2.03125 -0.020011C0.920646 -0.023211 0.0176463 0.874489 0.0144463 1.98509L0.00744629 4.39539H1.00745Z\"\n        />\n        <path\n          d=\"M17.0144 2.03431L17.0076 4.39541H18.0076L18.0144 2.03721C18.0176 0.926712 17.1199 0.0237125 16.0093 0.0205125L11.6439 0.0078125L11.641 1.00781L16.0064 1.02041C16.5638 1.02201 17.016 1.47681 17.0144 2.03431Z\"\n        />\n        <path\n          d=\"M16.9925 9.60498L16.9855 12.0124C16.9839 12.5698 16.5291 13.022 15.9717 13.0204L11.6063 13.0078L11.6034 14.0078L15.9688 14.0204C17.0794 14.0236 17.9823 13.1259 17.9855 12.0153L17.9925 9.60498H16.9925Z\"\n        />\n        <path\n          d=\"M0.985626 11.9661L0.992426 9.60498H-0.0074737L-0.0142737 11.9632C-0.0174737 13.0738 0.880226 13.9767 1.99083 13.98L6.35623 13.9926L6.35913 12.9926L1.99373 12.98C1.43633 12.9784 0.983926 12.5236 0.985626 11.9661Z\"\n        />\n      </svg>\n      <svg viewBox=\"0 0 18 14\" aria-hidden=\"true\" slot=\"exit\">\n        <path\n          d=\"M5.39655 -0.0200195L5.38955 2.38748C5.38795 2.94488 4.93315 3.39708 4.37565 3.39538L0.0103463 3.38278L0.00744629 4.38278L4.37285 4.39538C5.48345 4.39858 6.38635 3.50088 6.38965 2.39028L6.39665 -0.0200195H5.39655Z\"\n        />\n        <path\n          d=\"M12.6411 2.36891L12.6479 0.0078125H11.6479L11.6411 2.36601C11.6379 3.47651 12.5356 4.37951 13.6462 4.38271L18.0116 4.39531L18.0145 3.39531L13.6491 3.38271C13.0917 3.38111 12.6395 2.92641 12.6411 2.36891Z\"\n        />\n        <path\n          d=\"M12.6034 14.0204L12.6104 11.613C12.612 11.0556 13.0668 10.6034 13.6242 10.605L17.9896 10.6176L17.9925 9.61759L13.6271 9.60499C12.5165 9.60179 11.6136 10.4995 11.6104 11.6101L11.6034 14.0204H12.6034Z\"\n        />\n        <path\n          d=\"M5.359 11.6315L5.3522 13.9926H6.3522L6.359 11.6344C6.3622 10.5238 5.4645 9.62088 4.3539 9.61758L-0.0115043 9.60498L-0.0144043 10.605L4.351 10.6176C4.9084 10.6192 5.3607 11.074 5.359 11.6315Z\"\n        />\n      </svg>\n    </media-fullscreen-button>\n  </template>\n\n  <template partial=\"CastButton\">\n    <media-cast-button part=\"bottom cast button\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <svg viewBox=\"0 0 18 14\" aria-hidden=\"true\" slot=\"enter\">\n        <path\n          d=\"M16.0072 0H2.0291C0.9185 0 0.0181 0.9003 0.0181 2.011V5.5009C0.357 5.5016 0.6895 5.5275 1.0181 5.5669V2.011C1.0181 1.4536 1.4716 1 2.029 1H16.0072C16.5646 1 17.0181 1.4536 17.0181 2.011V11.9891C17.0181 12.5465 16.5646 13 16.0072 13H8.4358C8.4746 13.3286 8.4999 13.6611 8.4999 13.9999H16.0071C17.1177 13.9999 18.018 13.0996 18.018 11.989V2.011C18.0181 0.9003 17.1178 0 16.0072 0ZM0 6.4999V7.4999C3.584 7.4999 6.5 10.4159 6.5 13.9999H7.5C7.5 9.8642 4.1357 6.4999 0 6.4999ZM0 8.7499V9.7499C2.3433 9.7499 4.25 11.6566 4.25 13.9999H5.25C5.25 11.1049 2.895 8.7499 0 8.7499ZM0.0181 11V14H3.0181C3.0181 12.3431 1.675 11 0.0181 11Z\"\n        />\n      </svg>\n      <svg viewBox=\"0 0 18 14\" aria-hidden=\"true\" slot=\"exit\">\n        <path\n          d=\"M15.9891 0H2.01103C0.900434 0 3.35947e-05 0.9003 3.35947e-05 2.011V5.5009C0.338934 5.5016 0.671434 5.5275 1.00003 5.5669V2.011C1.00003 1.4536 1.45353 1 2.01093 1H15.9891C16.5465 1 17 1.4536 17 2.011V11.9891C17 12.5465 16.5465 13 15.9891 13H8.41773C8.45653 13.3286 8.48183 13.6611 8.48183 13.9999H15.989C17.0996 13.9999 17.9999 13.0996 17.9999 11.989V2.011C18 0.9003 17.0997 0 15.9891 0ZM-0.0180664 6.4999V7.4999C3.56593 7.4999 6.48193 10.4159 6.48193 13.9999H7.48193C7.48193 9.8642 4.11763 6.4999 -0.0180664 6.4999ZM-0.0180664 8.7499V9.7499C2.32523 9.7499 4.23193 11.6566 4.23193 13.9999H5.23193C5.23193 11.1049 2.87693 8.7499 -0.0180664 8.7499ZM3.35947e-05 11V14H3.00003C3.00003 12.3431 1.65693 11 3.35947e-05 11Z\"\n        />\n        <path d=\"M2.15002 5.634C5.18352 6.4207 7.57252 8.8151 8.35282 11.8499H15.8501V2.1499H2.15002V5.634Z\" />\n      </svg>\n    </media-cast-button>\n  </template>\n\n  <template partial=\"LiveButton\">\n    <media-live-button part=\"{{section ?? 'top'}} live button\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <span slot=\"text\">Live</span>\n    </media-live-button>\n  </template>\n\n  <template partial=\"PlaybackRateSelect\">\n    <media-playback-rate-selectmenu\n      part=\"bottom playback-rate selectmenu\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    >\n      <media-playback-rate-button slot=\"button\" part=\"bottom playback-rate button\"></media-playback-rate-button>\n      <media-playback-rate-listbox\n        slot=\"listbox\"\n        rates=\"{{playbackrates}}\"\n        exportparts=\"option\"\n        part=\"bottom playback-rate listbox\"\n      ></media-playback-rate-listbox>\n    </media-playback-rate-selectmenu>\n  </template>\n\n  <template partial=\"VolumeRange\">\n    <media-volume-range\n      part=\"bottom volume range\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    ></media-volume-range>\n  </template>\n\n  <template partial=\"TimeDisplay\">\n    <media-time-display\n      remaining=\"{{defaultshowremainingtime}}\"\n      showduration=\"{{!hideduration}}\"\n      part=\"bottom time display\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    ></media-time-display>\n  </template>\n\n  <template partial=\"TimeRange\">\n    <media-time-range part=\"bottom time range\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <media-preview-thumbnail slot=\"preview\"></media-preview-thumbnail>\n      <media-preview-chapter-display slot=\"preview\"></media-preview-chapter-display>\n      <media-preview-time-display slot=\"preview\"></media-preview-time-display>\n      <div slot=\"preview\" part=\"arrow\"></div>\n    </media-time-range>\n  </template>\n\n  <template partial=\"AudioTrackSelect\">\n    <media-audio-track-selectmenu\n      part=\"bottom audio-track selectmenu\"\n      disabled=\"{{disabled}}\"\n      aria-disabled=\"{{disabled}}\"\n    >\n      <media-audio-track-button slot=\"button\" part=\"bottom audio-track button\">\n        <svg aria-hidden=\"true\" slot=\"icon\" viewBox=\"0 0 18 16\">\n          <path d=\"M9 15A7 7 0 1 1 9 1a7 7 0 0 1 0 14Zm0 1A8 8 0 1 0 9 0a8 8 0 0 0 0 16Z\" />\n          <path\n            d=\"M5.2 6.3a.5.5 0 0 1 .5.5v2.4a.5.5 0 1 1-1 0V6.8a.5.5 0 0 1 .5-.5Zm2.4-2.4a.5.5 0 0 1 .5.5v7.2a.5.5 0 0 1-1 0V4.4a.5.5 0 0 1 .5-.5ZM10 5.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.4-.8a.5.5 0 0 1 .5.5v5.6a.5.5 0 0 1-1 0V5.2a.5.5 0 0 1 .5-.5Z\"\n          />\n        </svg>\n      </media-audio-track-button>\n      <media-audio-track-listbox slot=\"listbox\" exportparts=\"option\" part=\"bottom audio-track listbox\">\n        <div slot=\"select-indicator\">\n          <style>\n            .listbox-indicator {\n              position: relative;\n              top: 1px;\n              width: 0.9em;\n              height: auto;\n              fill: var(--_accent-color);\n            }\n\n            [aria-selected='false'] .listbox-indicator {\n              display: none;\n            }\n          </style>\n          <svg viewBox=\"0 0 14 18\" class=\"listbox-indicator\">\n            <path\n              d=\"M12.252 3.48c-.115.033-.301.161-.425.291-.059.063-1.407 1.815-2.995 3.894s-2.897 3.79-2.908 3.802c-.013.014-.661-.616-1.672-1.624-.908-.905-1.702-1.681-1.765-1.723-.401-.27-.783-.211-1.176.183a1.285 1.285 0 0 0-.261.342.582.582 0 0 0-.082.35c0 .165.01.205.08.35.075.153.213.296 2.182 2.271 1.156 1.159 2.17 2.159 2.253 2.222.189.143.338.196.539.194.203-.003.412-.104.618-.299.205-.193 6.7-8.693 6.804-8.903a.716.716 0 0 0 .085-.345c.01-.179.005-.203-.062-.339-.124-.252-.45-.531-.746-.639a.784.784 0 0 0-.469-.027\"\n              fill-rule=\"evenodd\"\n            />\n          </svg>\n        </div>\n      </media-audio-track-listbox>\n    </media-audio-track-selectmenu>\n  </template>\n\n  <template partial=\"RenditionSelect\">\n    <media-rendition-selectmenu part=\"bottom rendition selectmenu\" disabled=\"{{disabled}}\" aria-disabled=\"{{disabled}}\">\n      <media-rendition-button slot=\"button\" part=\"bottom rendition button\">\n        <svg aria-hidden=\"true\" slot=\"icon\" viewBox=\"0 0 18 14\">\n          <path\n            d=\"M2.25 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4ZM9 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm6.75 0a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\"\n          />\n        </svg>\n      </media-rendition-button>\n      <media-rendition-listbox slot=\"listbox\" exportparts=\"option\" part=\"bottom rendition listbox\">\n        <div slot=\"select-indicator\">\n          <style>\n            .listbox-indicator {\n              position: relative;\n              top: 1px;\n              width: 0.9em;\n              height: auto;\n              fill: var(--_accent-color);\n            }\n\n            [aria-selected='false'] .listbox-indicator {\n              display: none;\n            }\n          </style>\n          <svg viewBox=\"0 0 14 18\" class=\"listbox-indicator\">\n            <path\n              d=\"M12.252 3.48c-.115.033-.301.161-.425.291-.059.063-1.407 1.815-2.995 3.894s-2.897 3.79-2.908 3.802c-.013.014-.661-.616-1.672-1.624-.908-.905-1.702-1.681-1.765-1.723-.401-.27-.783-.211-1.176.183a1.285 1.285 0 0 0-.261.342.582.582 0 0 0-.082.35c0 .165.01.205.08.35.075.153.213.296 2.182 2.271 1.156 1.159 2.17 2.159 2.253 2.222.189.143.338.196.539.194.203-.003.412-.104.618-.299.205-.193 6.7-8.693 6.804-8.903a.716.716 0 0 0 .085-.345c.01-.179.005-.203-.062-.339-.124-.252-.45-.531-.746-.639a.784.784 0 0 0-.469-.027\"\n              fill-rule=\"evenodd\"\n            />\n          </svg>\n        </div>\n      </media-rendition-listbox>\n    </media-rendition-selectmenu>\n  </template>\n\n  <media-controller\n    part=\"controller\"\n    defaultstreamtype=\"{{defaultstreamtype ?? 'on-demand'}}\"\n    breakpoints=\"sm:470\"\n    gesturesdisabled=\"{{disabled}}\"\n    hotkeys=\"{{hotkeys}}\"\n    nohotkeys=\"{{nohotkeys}}\"\n    novolumepref=\"{{novolumepref}}\"\n    audio=\"{{audio}}\"\n    noautoseektolive=\"{{noautoseektolive}}\"\n    defaultsubtitles=\"{{defaultsubtitles}}\"\n    defaultduration=\"{{defaultduration ?? false}}\"\n    keyboardforwardseekoffset=\"{{forwardseekoffset}}\"\n    keyboardbackwardseekoffset=\"{{backwardseekoffset}}\"\n    exportparts=\"layer, media-layer, poster-layer, vertical-layer, centered-layer, gesture-layer\"\n    style=\"--_pre-playback-place:{{preplaybackplace ?? 'center'}}\"\n  >\n    <slot name=\"media\" slot=\"media\"></slot>\n    <slot name=\"poster\" slot=\"poster\"></slot>\n\n    <media-loading-indicator slot=\"centered-chrome\" noautohide></media-loading-indicator>\n\n    <template if=\"!audio\">\n      <!-- Pre-playback UI -->\n      <div slot=\"centered-chrome\" class=\"center-controls pre-playback\">\n        <template if=\"streamtype == 'on-demand'\">\n          <template if=\"!breakpointsm\"> {{>SeekBackwardButton section=\"center\"}} </template>\n          <template if=\"!breakpointsm\"> {{>PlayButton section=\"center\"}} </template>\n          <template if=\"breakpointsm\"> {{>PrePlayButton section=\"center\"}} </template>\n          <template if=\"!breakpointsm\"> {{>SeekForwardButton section=\"center\"}} </template>\n        </template>\n\n        <template if=\"streamtype == 'live'\">\n          <template if=\"!breakpointsm\">\n            <template if=\"targetlivewindow > 0\"> {{>SeekBackwardButton section=\"center\"}} </template>\n          </template>\n          <template if=\"!breakpointsm\"> {{>PlayButton section=\"center\"}} </template>\n          <template if=\"breakpointsm\"> {{>PrePlayButton section=\"center\"}} </template>\n          <template if=\"!breakpointsm\">\n            <template if=\"targetlivewindow > 0\"> {{>SeekForwardButton section=\"center\"}} </template>\n          </template>\n        </template>\n      </div>\n\n      <!-- Auotplay centered unmute button -->\n      <!--\n        todo: figure out how show this with available state variables\n        needs to show when:\n        - autoplay is enabled\n        - playback has been successful\n        - audio is muted\n        - in place / instead of the pre-plaback play button\n        - not to show again after user has interacted with this button\n          - OR user has interacted with the mute button in the control bar\n      -->\n      <!--\n        There should be a >MuteButton to the left of the \"Unmute\" text, but a templating bug\n        makes it appear even if commented out in the markup, add it back when code is un-commented\n      -->\n      <!-- <div slot=\"centered-chrome\" class=\"autoplay-unmute\">\n        <div role=\"button\" class=\"autoplay-unmute-btn\">Unmute</div>\n      </div> -->\n\n      <template if=\"streamtype == 'on-demand'\">\n        <template if=\"breakpointsm\">\n          <media-control-bar part=\"control-bar top\" slot=\"top-chrome\">{{>TitleDisplay}} </media-control-bar>\n        </template>\n        {{>TimeRange}}\n        <media-control-bar part=\"control-bar bottom\">\n          {{>PlayButton}} {{>SeekBackwardButton}} {{>SeekForwardButton}} {{>TimeDisplay}} {{>MuteButton}}\n          {{>VolumeRange}}\n          <div class=\"spacer\"></div>\n          {{>RenditionSelect}} {{>PlaybackRateSelect}} {{>AudioTrackSelect}} {{>CaptionsMenuButton}} {{>AirplayButton}}\n          {{>CastButton}} {{>PipButton}} {{>FullscreenButton}}\n        </media-control-bar>\n      </template>\n\n      <template if=\"streamtype == 'live'\">\n        <media-control-bar part=\"control-bar top\" slot=\"top-chrome\">\n          {{>LiveButton}}\n          <template if=\"breakpointsm\"> {{>TitleDisplay}} </template>\n        </media-control-bar>\n        <template if=\"targetlivewindow > 0\">{{>TimeRange}}</template>\n        <media-control-bar part=\"control-bar bottom\">\n          {{>PlayButton}}\n          <template if=\"targetlivewindow > 0\">{{>SeekBackwardButton}} {{>SeekForwardButton}}</template>\n          {{>MuteButton}} {{>VolumeRange}}\n          <div class=\"spacer\"></div>\n          {{>RenditionSelect}} {{>AudioTrackSelect}} {{>CaptionsMenuButton}} {{>AirplayButton}} {{>CastButton}}\n          {{>PipButton}} {{>FullscreenButton}}\n        </media-control-bar>\n      </template>\n    </template>\n\n    <template if=\"audio\">\n      <template if=\"streamtype == 'on-demand'\">\n        <template if=\"title\">\n          <media-control-bar part=\"control-bar top\">{{>TitleDisplay}}</media-control-bar>\n        </template>\n        <media-control-bar part=\"control-bar bottom\">\n          {{>PlayButton}}\n          <template if=\"breakpointsm\"> {{>SeekBackwardButton}} {{>SeekForwardButton}} </template>\n          {{>MuteButton}}\n          <template if=\"breakpointsm\">{{>VolumeRange}}</template>\n          {{>TimeDisplay}} {{>TimeRange}}\n          <template if=\"breakpointsm\">{{>PlaybackRateSelect}}</template>\n          {{>AirplayButton}} {{>CastButton}}\n        </media-control-bar>\n      </template>\n\n      <template if=\"streamtype == 'live'\">\n        <template if=\"title\">\n          <media-control-bar part=\"control-bar top\">{{>TitleDisplay}}</media-control-bar>\n        </template>\n        <media-control-bar part=\"control-bar bottom\">\n          <template if=\"breakpointsm\">\n            {{>PlayButton}} {{>LiveButton section=\"bottom\"}} {{>MuteButton}} {{>VolumeRange}}\n            <template if=\"targetlivewindow > 0\"> {{>SeekBackwardButton}} {{>SeekForwardButton}} </template>\n          </template>\n          <template if=\"targetlivewindow > 0\"> {{>TimeDisplay}} {{>TimeRange}} </template>\n          <template if=\"!targetlivewindow\"><div class=\"spacer\"></div></template>\n          {{>AirplayButton}} {{>CastButton}}\n        </media-control-bar>\n      </template>\n    </template>\n\n    <slot></slot>\n  </media-controller>\n</template>\n`;\nvar He2 = T2.createElement(\"template\");\n\"innerHTML\" in He2 && (He2.innerHTML = Mt2);\nvar _t3;\nvar Pt3;\nvar fe4 = class extends MediaThemeElement {\n};\nfe4.template = (Pt3 = (_t3 = He2.content) == null ? void 0 : _t3.children) == null ? void 0 : Pt3[0];\nc2.customElements.get(\"media-theme-gerwig\") || c2.customElements.define(\"media-theme-gerwig\", fe4);\nvar Ca = \"gerwig\";\nvar M3 = { SRC: \"src\", POSTER: \"poster\" };\nvar n = { STYLE: \"style\", DEFAULT_HIDDEN_CAPTIONS: \"default-hidden-captions\", PRIMARY_COLOR: \"primary-color\", SECONDARY_COLOR: \"secondary-color\", ACCENT_COLOR: \"accent-color\", FORWARD_SEEK_OFFSET: \"forward-seek-offset\", BACKWARD_SEEK_OFFSET: \"backward-seek-offset\", PLAYBACK_TOKEN: \"playback-token\", THUMBNAIL_TOKEN: \"thumbnail-token\", STORYBOARD_TOKEN: \"storyboard-token\", DRM_TOKEN: \"drm-token\", STORYBOARD_SRC: \"storyboard-src\", THUMBNAIL_TIME: \"thumbnail-time\", AUDIO: \"audio\", NOHOTKEYS: \"nohotkeys\", HOTKEYS: \"hotkeys\", PLAYBACK_RATES: \"playbackrates\", DEFAULT_SHOW_REMAINING_TIME: \"default-show-remaining-time\", DEFAULT_DURATION: \"default-duration\", TITLE: \"title\", PLACEHOLDER: \"placeholder\", THEME: \"theme\", DEFAULT_STREAM_TYPE: \"default-stream-type\", TARGET_LIVE_WINDOW: \"target-live-window\", EXTRA_SOURCE_PARAMS: \"extra-source-params\", NO_VOLUME_PREF: \"no-volume-pref\" };\nvar Ue3 = [\"audio\", \"backwardseekoffset\", \"defaultduration\", \"defaultshowremainingtime\", \"defaultsubtitles\", \"noautoseektolive\", \"disabled\", \"exportparts\", \"forwardseekoffset\", \"hideduration\", \"hotkeys\", \"nohotkeys\", \"playbackrates\", \"defaultstreamtype\", \"streamtype\", \"style\", \"targetlivewindow\", \"template\", \"title\", \"novolumepref\"];\nfunction xa2(t2, i2) {\n  var a2;\n  return __spreadProps(__spreadValues({ src: !t2.playbackId && t2.src, playbackId: t2.playbackId, hasSrc: !!t2.playbackId || !!t2.src || !!t2.currentSrc, poster: t2.poster, storyboard: t2.storyboard, storyboardSrc: t2.getAttribute(n.STORYBOARD_SRC), placeholder: t2.getAttribute(\"placeholder\"), themeTemplate: La2(t2), thumbnailTime: !t2.tokens.thumbnail && t2.thumbnailTime, autoplay: t2.autoplay, crossOrigin: t2.crossOrigin, loop: t2.loop, noHotKeys: t2.hasAttribute(n.NOHOTKEYS), hotKeys: t2.getAttribute(n.HOTKEYS), muted: t2.muted, paused: t2.paused, preload: t2.preload, envKey: t2.envKey, preferCmcd: t2.preferCmcd, debug: t2.debug, disableTracking: t2.disableTracking, disableCookies: t2.disableCookies, tokens: t2.tokens, beaconCollectionDomain: t2.beaconCollectionDomain, maxResolution: t2.maxResolution, minResolution: t2.minResolution, programStartTime: t2.programStartTime, programEndTime: t2.programEndTime, renditionOrder: t2.renditionOrder, metadata: t2.metadata, playerSoftwareName: t2.playerSoftwareName, playerSoftwareVersion: t2.playerSoftwareVersion, startTime: t2.startTime, preferPlayback: t2.preferPlayback, audio: t2.audio, defaultStreamType: t2.defaultStreamType, targetLiveWindow: t2.getAttribute(c.TARGET_LIVE_WINDOW), streamType: Q3(t2.getAttribute(c.STREAM_TYPE)), primaryColor: t2.getAttribute(n.PRIMARY_COLOR), secondaryColor: t2.getAttribute(n.SECONDARY_COLOR), accentColor: t2.getAttribute(n.ACCENT_COLOR), forwardSeekOffset: t2.forwardSeekOffset, backwardSeekOffset: t2.backwardSeekOffset, defaultHiddenCaptions: t2.defaultHiddenCaptions, defaultDuration: t2.defaultDuration, defaultShowRemainingTime: t2.defaultShowRemainingTime, hideDuration: Ra2(t2), playbackRates: t2.getAttribute(n.PLAYBACK_RATES), customDomain: (a2 = t2.getAttribute(c.CUSTOM_DOMAIN)) != null ? a2 : void 0, title: t2.getAttribute(n.TITLE), novolumepref: t2.hasAttribute(n.NO_VOLUME_PREF) }, i2), { extraSourceParams: t2.extraSourceParams });\n}\nfunction La2(t2) {\n  var e, a2;\n  let i2 = t2.theme;\n  if (i2) {\n    let r10 = (a2 = (e = t2.getRootNode()) == null ? void 0 : e.getElementById) == null ? void 0 : a2.call(e, i2);\n    if (r10 && r10 instanceof HTMLTemplateElement) return r10;\n    i2.startsWith(\"media-theme-\") || (i2 = `media-theme-${i2}`);\n    let o = c2.customElements.get(i2);\n    if (o != null && o.template) return o.template;\n  }\n}\nfunction Ra2(t2) {\n  var e;\n  let i2 = (e = t2.mediaController) == null ? void 0 : e.querySelector(\"media-time-display\");\n  return i2 && getComputedStyle(i2).getPropertyValue(\"--media-duration-display-display\").trim() === \"none\";\n}\nfunction Dt3(t2) {\n  let i2 = t2.hasAttribute(n.TITLE) ? { video_title: t2.getAttribute(n.TITLE) } : {};\n  return t2.getAttributeNames().filter((e) => e.startsWith(\"metadata-\")).reduce((e, a2) => {\n    let r10 = t2.getAttribute(a2);\n    return r10 !== null && (e[a2.replace(/^metadata-/, \"\").replace(/-/g, \"_\")] = r10), e;\n  }, i2);\n}\nvar wa = Object.values(c);\nvar Oa2 = Object.values(M3);\nvar Sa2 = Object.values(n);\nvar Ma = ue4();\nvar _a2 = \"mux-player\";\nvar Vt3 = { dialog: void 0, isDialogOpen: false };\nvar Pa2 = { redundant_streams: true };\nvar re3;\nvar oe4;\nvar H4;\nvar ne3;\nvar Z4;\nvar O3;\nvar V3;\nvar Ee4;\nvar Ht2;\nvar se3;\nvar Ke4;\nvar _2;\nvar W3;\nvar ke4;\nvar Bt3;\nvar Te3;\nvar Ut3;\nvar Ae2;\nvar Kt2;\nvar Ce4;\nvar $t2;\nvar ie4 = class extends Ne4 {\n  constructor() {\n    super();\n    p(this, O3);\n    p(this, Ee4);\n    p(this, se3);\n    p(this, _2);\n    p(this, ke4);\n    p(this, Te3);\n    p(this, Ae2);\n    p(this, Ce4);\n    p(this, re3, false);\n    p(this, oe4, {});\n    p(this, H4, true);\n    p(this, ne3, new me3(this, \"hotkeys\"));\n    p(this, Z4, __spreadProps(__spreadValues({}, Vt3), { onCloseErrorDialog: () => b3(this, se3, Ke4).call(this, { dialog: void 0, isDialogOpen: false }), onInitFocusDialog: (e) => {\n      Se2(this, T2.activeElement) || e.preventDefault();\n    } }));\n    this.attachShadow({ mode: \"open\" }), b3(this, Ee4, Ht2).call(this), this.isConnected && b3(this, O3, V3).call(this);\n  }\n  static get observedAttributes() {\n    var e;\n    return [...(e = Ne4.observedAttributes) != null ? e : [], ...Oa2, ...wa, ...Sa2];\n  }\n  get mediaTheme() {\n    var e;\n    return (e = this.shadowRoot) == null ? void 0 : e.querySelector(\"media-theme\");\n  }\n  get mediaController() {\n    var e, a2;\n    return (a2 = (e = this.mediaTheme) == null ? void 0 : e.shadowRoot) == null ? void 0 : a2.querySelector(\"media-controller\");\n  }\n  connectedCallback() {\n    var a2;\n    let e = (a2 = this.shadowRoot) == null ? void 0 : a2.querySelector(\"mux-video\");\n    e && (e.metadata = Dt3(this));\n  }\n  attributeChangedCallback(e, a2, r10) {\n    switch (b3(this, O3, V3).call(this), super.attributeChangedCallback(e, a2, r10), e) {\n      case n.HOTKEYS:\n        u2(this, ne3).value = r10;\n        break;\n      case n.THUMBNAIL_TIME: {\n        r10 != null && this.tokens.thumbnail && I3(m(\"Use of thumbnail-time with thumbnail-token is currently unsupported. Ignore thumbnail-time.\").format({}));\n        break;\n      }\n      case n.THUMBNAIL_TOKEN: {\n        let { aud: s } = N2(r10);\n        r10 && s !== \"t\" && I3(m(\"The provided thumbnail-token should have audience value 't' instead of '{aud}'.\").format({ aud: s }));\n        break;\n      }\n      case n.STORYBOARD_TOKEN: {\n        let { aud: s } = N2(r10);\n        r10 && s !== \"s\" && I3(m(\"The provided storyboard-token should have audience value 's' instead of '{aud}'.\").format({ aud: s }));\n        break;\n      }\n      case c.PLAYBACK_ID: {\n        r10 != null && r10.includes(\"?token\") && A2(m(\"The specificed playback ID {playbackId} contains a token which must be provided via the playback-token attribute.\").format({ playbackId: r10 }));\n        break;\n      }\n      case c.STREAM_TYPE:\n        r10 && ![g.LIVE, g.ON_DEMAND, g.UNKNOWN].includes(r10) ? [\"ll-live\", \"live:dvr\", \"ll-live:dvr\"].includes(this.streamType) ? this.targetLiveWindow = r10.includes(\"dvr\") ? Number.POSITIVE_INFINITY : 0 : _e4({ file: \"invalid-stream-type.md\", message: m(\"Invalid stream-type value supplied: `{streamType}`. Please provide stream-type as either: `on-demand` or `live`\").format({ streamType: this.streamType }) }) : r10 === g.LIVE ? this.getAttribute(n.TARGET_LIVE_WINDOW) == null && (this.targetLiveWindow = 0) : this.targetLiveWindow = Number.NaN;\n    }\n    [c.PLAYBACK_ID, M3.SRC, n.PLAYBACK_TOKEN].includes(e) && a2 !== r10 && x3(this, Z4, __spreadValues(__spreadValues({}, u2(this, Z4)), Vt3)), b3(this, _2, W3).call(this, { [ht(e)]: r10 });\n  }\n  get preferCmcd() {\n    var e;\n    return (e = this.getAttribute(c.PREFER_CMCD)) != null ? e : void 0;\n  }\n  set preferCmcd(e) {\n    e !== this.preferCmcd && (e ? dt2.includes(e) ? this.setAttribute(c.PREFER_CMCD, e) : I3(`Invalid value for preferCmcd. Must be one of ${dt2.join()}`) : this.removeAttribute(c.PREFER_CMCD));\n  }\n  get hasPlayed() {\n    var e, a2;\n    return (a2 = (e = this.mediaController) == null ? void 0 : e.hasAttribute(MediaUIAttributes.MEDIA_HAS_PLAYED)) != null ? a2 : false;\n  }\n  get inLiveWindow() {\n    var e;\n    return (e = this.mediaController) == null ? void 0 : e.hasAttribute(MediaUIAttributes.MEDIA_TIME_IS_LIVE);\n  }\n  get _hls() {\n    var e;\n    return (e = this.media) == null ? void 0 : e._hls;\n  }\n  get mux() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.mux;\n  }\n  get theme() {\n    var e;\n    return (e = this.getAttribute(n.THEME)) != null ? e : Ca;\n  }\n  set theme(e) {\n    this.setAttribute(n.THEME, `${e}`);\n  }\n  get themeProps() {\n    let e = this.mediaTheme;\n    if (!e) return;\n    let a2 = {};\n    for (let r10 of e.getAttributeNames()) {\n      if (Ue3.includes(r10)) continue;\n      let o = e.getAttribute(r10);\n      a2[le4(r10)] = o === \"\" ? true : o;\n    }\n    return a2;\n  }\n  set themeProps(e) {\n    var r10, o;\n    b3(this, O3, V3).call(this);\n    let a2 = __spreadValues(__spreadValues({}, this.themeProps), e);\n    for (let s in a2) {\n      if (Ue3.includes(s)) continue;\n      let l = e == null ? void 0 : e[s];\n      typeof l == \"boolean\" || l == null ? (r10 = this.mediaTheme) == null || r10.toggleAttribute(de4(s), !!l) : (o = this.mediaTheme) == null || o.setAttribute(de4(s), l);\n    }\n  }\n  get playbackId() {\n    var e;\n    return (e = this.getAttribute(c.PLAYBACK_ID)) != null ? e : void 0;\n  }\n  set playbackId(e) {\n    e ? this.setAttribute(c.PLAYBACK_ID, e) : this.removeAttribute(c.PLAYBACK_ID);\n  }\n  get src() {\n    var e, a2;\n    return this.playbackId ? (e = Y3(this, M3.SRC)) != null ? e : void 0 : (a2 = this.getAttribute(M3.SRC)) != null ? a2 : void 0;\n  }\n  set src(e) {\n    e ? this.setAttribute(M3.SRC, e) : this.removeAttribute(M3.SRC);\n  }\n  get poster() {\n    var a2;\n    let e = this.getAttribute(M3.POSTER);\n    if (e != null) return e;\n    if (this.playbackId && !this.audio) return pt4(this.playbackId, { customDomain: this.customDomain, thumbnailTime: (a2 = this.thumbnailTime) != null ? a2 : this.startTime, programTime: this.programStartTime, token: this.tokens.thumbnail });\n  }\n  set poster(e) {\n    e || e === \"\" ? this.setAttribute(M3.POSTER, e) : this.removeAttribute(M3.POSTER);\n  }\n  get storyboardSrc() {\n    var e;\n    return (e = this.getAttribute(n.STORYBOARD_SRC)) != null ? e : void 0;\n  }\n  set storyboardSrc(e) {\n    e ? this.setAttribute(n.STORYBOARD_SRC, e) : this.removeAttribute(n.STORYBOARD_SRC);\n  }\n  get storyboard() {\n    if (this.storyboardSrc && !this.tokens.storyboard) return this.storyboardSrc;\n    if (!(this.audio || !this.playbackId || !this.streamType || [g.LIVE, g.UNKNOWN].includes(this.streamType))) return bt3(this.playbackId, { customDomain: this.customDomain, token: this.tokens.storyboard, programStartTime: this.programStartTime, programEndTime: this.programEndTime });\n  }\n  get audio() {\n    return this.hasAttribute(n.AUDIO);\n  }\n  set audio(e) {\n    if (!e) {\n      this.removeAttribute(n.AUDIO);\n      return;\n    }\n    this.setAttribute(n.AUDIO, \"\");\n  }\n  get hotkeys() {\n    return u2(this, ne3);\n  }\n  get nohotkeys() {\n    return this.hasAttribute(n.NOHOTKEYS);\n  }\n  set nohotkeys(e) {\n    if (!e) {\n      this.removeAttribute(n.NOHOTKEYS);\n      return;\n    }\n    this.setAttribute(n.NOHOTKEYS, \"\");\n  }\n  get thumbnailTime() {\n    return L(this.getAttribute(n.THUMBNAIL_TIME));\n  }\n  set thumbnailTime(e) {\n    this.setAttribute(n.THUMBNAIL_TIME, `${e}`);\n  }\n  get title() {\n    var e;\n    return (e = this.getAttribute(n.TITLE)) != null ? e : \"\";\n  }\n  set title(e) {\n    e !== this.title && (e ? this.setAttribute(n.TITLE, e) : this.removeAttribute(\"title\"), super.title = e);\n  }\n  get placeholder() {\n    var e;\n    return (e = Y3(this, n.PLACEHOLDER)) != null ? e : \"\";\n  }\n  set placeholder(e) {\n    this.setAttribute(n.PLACEHOLDER, `${e}`);\n  }\n  get primaryColor() {\n    var a2, r10;\n    let e = this.getAttribute(n.PRIMARY_COLOR);\n    if (e != null || this.mediaTheme && (e = (r10 = (a2 = c2.getComputedStyle(this.mediaTheme)) == null ? void 0 : a2.getPropertyValue(\"--_primary-color\")) == null ? void 0 : r10.trim(), e)) return e;\n  }\n  set primaryColor(e) {\n    this.setAttribute(n.PRIMARY_COLOR, `${e}`);\n  }\n  get secondaryColor() {\n    var a2, r10;\n    let e = this.getAttribute(n.SECONDARY_COLOR);\n    if (e != null || this.mediaTheme && (e = (r10 = (a2 = c2.getComputedStyle(this.mediaTheme)) == null ? void 0 : a2.getPropertyValue(\"--_secondary-color\")) == null ? void 0 : r10.trim(), e)) return e;\n  }\n  set secondaryColor(e) {\n    this.setAttribute(n.SECONDARY_COLOR, `${e}`);\n  }\n  get accentColor() {\n    var a2, r10;\n    let e = this.getAttribute(n.ACCENT_COLOR);\n    if (e != null || this.mediaTheme && (e = (r10 = (a2 = c2.getComputedStyle(this.mediaTheme)) == null ? void 0 : a2.getPropertyValue(\"--_accent-color\")) == null ? void 0 : r10.trim(), e)) return e;\n  }\n  set accentColor(e) {\n    this.setAttribute(n.ACCENT_COLOR, `${e}`);\n  }\n  get defaultShowRemainingTime() {\n    return this.hasAttribute(n.DEFAULT_SHOW_REMAINING_TIME);\n  }\n  set defaultShowRemainingTime(e) {\n    e ? this.setAttribute(n.DEFAULT_SHOW_REMAINING_TIME, \"\") : this.removeAttribute(n.DEFAULT_SHOW_REMAINING_TIME);\n  }\n  get playbackRates() {\n    if (this.hasAttribute(n.PLAYBACK_RATES)) return this.getAttribute(n.PLAYBACK_RATES).trim().split(/\\s*,?\\s+/).map((e) => Number(e)).filter((e) => !Number.isNaN(e)).sort((e, a2) => e - a2);\n  }\n  set playbackRates(e) {\n    if (!e) {\n      this.removeAttribute(n.PLAYBACK_RATES);\n      return;\n    }\n    this.setAttribute(n.PLAYBACK_RATES, e.join(\" \"));\n  }\n  get forwardSeekOffset() {\n    var e;\n    return (e = L(this.getAttribute(n.FORWARD_SEEK_OFFSET))) != null ? e : 10;\n  }\n  set forwardSeekOffset(e) {\n    this.setAttribute(n.FORWARD_SEEK_OFFSET, `${e}`);\n  }\n  get backwardSeekOffset() {\n    var e;\n    return (e = L(this.getAttribute(n.BACKWARD_SEEK_OFFSET))) != null ? e : 10;\n  }\n  set backwardSeekOffset(e) {\n    this.setAttribute(n.BACKWARD_SEEK_OFFSET, `${e}`);\n  }\n  get defaultHiddenCaptions() {\n    return this.hasAttribute(n.DEFAULT_HIDDEN_CAPTIONS);\n  }\n  set defaultHiddenCaptions(e) {\n    e ? this.setAttribute(n.DEFAULT_HIDDEN_CAPTIONS, \"\") : this.removeAttribute(n.DEFAULT_HIDDEN_CAPTIONS);\n  }\n  get defaultDuration() {\n    return L(this.getAttribute(n.DEFAULT_DURATION));\n  }\n  set defaultDuration(e) {\n    e == null ? this.removeAttribute(n.DEFAULT_DURATION) : this.setAttribute(n.DEFAULT_DURATION, `${e}`);\n  }\n  get playerSoftwareName() {\n    var e;\n    return (e = this.getAttribute(c.PLAYER_SOFTWARE_NAME)) != null ? e : _a2;\n  }\n  get playerSoftwareVersion() {\n    var e;\n    return (e = this.getAttribute(c.PLAYER_SOFTWARE_VERSION)) != null ? e : Ma;\n  }\n  get beaconCollectionDomain() {\n    var e;\n    return (e = this.getAttribute(c.BEACON_COLLECTION_DOMAIN)) != null ? e : void 0;\n  }\n  set beaconCollectionDomain(e) {\n    e !== this.beaconCollectionDomain && (e ? this.setAttribute(c.BEACON_COLLECTION_DOMAIN, e) : this.removeAttribute(c.BEACON_COLLECTION_DOMAIN));\n  }\n  get maxResolution() {\n    var e;\n    return (e = this.getAttribute(c.MAX_RESOLUTION)) != null ? e : void 0;\n  }\n  set maxResolution(e) {\n    e !== this.maxResolution && (e ? this.setAttribute(c.MAX_RESOLUTION, e) : this.removeAttribute(c.MAX_RESOLUTION));\n  }\n  get minResolution() {\n    var e;\n    return (e = this.getAttribute(c.MIN_RESOLUTION)) != null ? e : void 0;\n  }\n  set minResolution(e) {\n    e !== this.minResolution && (e ? this.setAttribute(c.MIN_RESOLUTION, e) : this.removeAttribute(c.MIN_RESOLUTION));\n  }\n  get renditionOrder() {\n    var e;\n    return (e = this.getAttribute(c.RENDITION_ORDER)) != null ? e : void 0;\n  }\n  set renditionOrder(e) {\n    e !== this.renditionOrder && (e ? this.setAttribute(c.RENDITION_ORDER, e) : this.removeAttribute(c.RENDITION_ORDER));\n  }\n  get programStartTime() {\n    return L(this.getAttribute(c.PROGRAM_START_TIME));\n  }\n  set programStartTime(e) {\n    e == null ? this.removeAttribute(c.PROGRAM_START_TIME) : this.setAttribute(c.PROGRAM_START_TIME, `${e}`);\n  }\n  get programEndTime() {\n    return L(this.getAttribute(c.PROGRAM_END_TIME));\n  }\n  set programEndTime(e) {\n    e == null ? this.removeAttribute(c.PROGRAM_END_TIME) : this.setAttribute(c.PROGRAM_END_TIME, `${e}`);\n  }\n  get extraSourceParams() {\n    return this.hasAttribute(n.EXTRA_SOURCE_PARAMS) ? [...new URLSearchParams(this.getAttribute(n.EXTRA_SOURCE_PARAMS)).entries()].reduce((e, [a2, r10]) => (e[a2] = r10, e), {}) : Pa2;\n  }\n  set extraSourceParams(e) {\n    e == null ? this.removeAttribute(n.EXTRA_SOURCE_PARAMS) : this.setAttribute(n.EXTRA_SOURCE_PARAMS, new URLSearchParams(e).toString());\n  }\n  get customDomain() {\n    var e;\n    return (e = this.getAttribute(c.CUSTOM_DOMAIN)) != null ? e : void 0;\n  }\n  set customDomain(e) {\n    e !== this.customDomain && (e ? this.setAttribute(c.CUSTOM_DOMAIN, e) : this.removeAttribute(c.CUSTOM_DOMAIN));\n  }\n  get envKey() {\n    var e;\n    return (e = Y3(this, c.ENV_KEY)) != null ? e : void 0;\n  }\n  set envKey(e) {\n    this.setAttribute(c.ENV_KEY, `${e}`);\n  }\n  get noVolumePref() {\n    return this.hasAttribute(n.NO_VOLUME_PREF);\n  }\n  set noVolumePref(e) {\n    e ? this.setAttribute(n.NO_VOLUME_PREF, \"\") : this.removeAttribute(n.NO_VOLUME_PREF);\n  }\n  get debug() {\n    return Y3(this, c.DEBUG) != null;\n  }\n  set debug(e) {\n    e ? this.setAttribute(c.DEBUG, \"\") : this.removeAttribute(c.DEBUG);\n  }\n  get disableTracking() {\n    return Y3(this, c.DISABLE_TRACKING) != null;\n  }\n  set disableTracking(e) {\n    this.toggleAttribute(c.DISABLE_TRACKING, !!e);\n  }\n  get disableCookies() {\n    return Y3(this, c.DISABLE_COOKIES) != null;\n  }\n  set disableCookies(e) {\n    e ? this.setAttribute(c.DISABLE_COOKIES, \"\") : this.removeAttribute(c.DISABLE_COOKIES);\n  }\n  get streamType() {\n    var e, a2, r10;\n    return (r10 = (a2 = this.getAttribute(c.STREAM_TYPE)) != null ? a2 : (e = this.media) == null ? void 0 : e.streamType) != null ? r10 : g.UNKNOWN;\n  }\n  set streamType(e) {\n    this.setAttribute(c.STREAM_TYPE, `${e}`);\n  }\n  get defaultStreamType() {\n    var e, a2, r10;\n    return (r10 = (a2 = this.getAttribute(n.DEFAULT_STREAM_TYPE)) != null ? a2 : (e = this.mediaController) == null ? void 0 : e.getAttribute(n.DEFAULT_STREAM_TYPE)) != null ? r10 : g.ON_DEMAND;\n  }\n  set defaultStreamType(e) {\n    e ? this.setAttribute(n.DEFAULT_STREAM_TYPE, e) : this.removeAttribute(n.DEFAULT_STREAM_TYPE);\n  }\n  get targetLiveWindow() {\n    var e, a2;\n    return this.hasAttribute(n.TARGET_LIVE_WINDOW) ? +this.getAttribute(n.TARGET_LIVE_WINDOW) : (a2 = (e = this.media) == null ? void 0 : e.targetLiveWindow) != null ? a2 : Number.NaN;\n  }\n  set targetLiveWindow(e) {\n    e == this.targetLiveWindow || Number.isNaN(e) && Number.isNaN(this.targetLiveWindow) || (e == null ? this.removeAttribute(n.TARGET_LIVE_WINDOW) : this.setAttribute(n.TARGET_LIVE_WINDOW, `${+e}`));\n  }\n  get liveEdgeStart() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.liveEdgeStart;\n  }\n  get startTime() {\n    return L(Y3(this, c.START_TIME));\n  }\n  set startTime(e) {\n    this.setAttribute(c.START_TIME, `${e}`);\n  }\n  get preferPlayback() {\n    let e = this.getAttribute(c.PREFER_PLAYBACK);\n    if (e === _.MSE || e === _.NATIVE) return e;\n  }\n  set preferPlayback(e) {\n    e !== this.preferPlayback && (e === _.MSE || e === _.NATIVE ? this.setAttribute(c.PREFER_PLAYBACK, e) : this.removeAttribute(c.PREFER_PLAYBACK));\n  }\n  get metadata() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.metadata;\n  }\n  set metadata(e) {\n    if (b3(this, O3, V3).call(this), !this.media) {\n      A2(\"underlying media element missing when trying to set metadata. metadata will not be set.\");\n      return;\n    }\n    this.media.metadata = __spreadValues(__spreadValues({}, Dt3(this)), e);\n  }\n  get _hlsConfig() {\n    var e;\n    return (e = this.media) == null ? void 0 : e._hlsConfig;\n  }\n  set _hlsConfig(e) {\n    if (b3(this, O3, V3).call(this), !this.media) {\n      A2(\"underlying media element missing when trying to set _hlsConfig. _hlsConfig will not be set.\");\n      return;\n    }\n    this.media._hlsConfig = e;\n  }\n  addCuePoints(e) {\n    return __async(this, null, function* () {\n      var a2;\n      if (b3(this, O3, V3).call(this), !this.media) {\n        A2(\"underlying media element missing when trying to addCuePoints. cuePoints will not be added.\");\n        return;\n      }\n      return (a2 = this.media) == null ? void 0 : a2.addCuePoints(e);\n    });\n  }\n  get activeCuePoint() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.activeCuePoint;\n  }\n  get cuePoints() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.cuePoints) != null ? a2 : [];\n  }\n  addChapters(e) {\n    var a2;\n    if (b3(this, O3, V3).call(this), !this.media) {\n      A2(\"underlying media element missing when trying to addChapters. chapters will not be added.\");\n      return;\n    }\n    return (a2 = this.media) == null ? void 0 : a2.addChapters(e);\n  }\n  get activeChapter() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.activeChapter;\n  }\n  get chapters() {\n    var e, a2;\n    return (a2 = (e = this.media) == null ? void 0 : e.chapters) != null ? a2 : [];\n  }\n  getStartDate() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.getStartDate();\n  }\n  get currentPdt() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.currentPdt;\n  }\n  get tokens() {\n    let e = this.getAttribute(n.PLAYBACK_TOKEN), a2 = this.getAttribute(n.DRM_TOKEN), r10 = this.getAttribute(n.THUMBNAIL_TOKEN), o = this.getAttribute(n.STORYBOARD_TOKEN);\n    return __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, u2(this, oe4)), e != null ? { playback: e } : {}), a2 != null ? { drm: a2 } : {}), r10 != null ? { thumbnail: r10 } : {}), o != null ? { storyboard: o } : {});\n  }\n  set tokens(e) {\n    x3(this, oe4, e != null ? e : {});\n  }\n  get playbackToken() {\n    var e;\n    return (e = this.getAttribute(n.PLAYBACK_TOKEN)) != null ? e : void 0;\n  }\n  set playbackToken(e) {\n    this.setAttribute(n.PLAYBACK_TOKEN, `${e}`);\n  }\n  get drmToken() {\n    var e;\n    return (e = this.getAttribute(n.DRM_TOKEN)) != null ? e : void 0;\n  }\n  set drmToken(e) {\n    this.setAttribute(n.DRM_TOKEN, `${e}`);\n  }\n  get thumbnailToken() {\n    var e;\n    return (e = this.getAttribute(n.THUMBNAIL_TOKEN)) != null ? e : void 0;\n  }\n  set thumbnailToken(e) {\n    this.setAttribute(n.THUMBNAIL_TOKEN, `${e}`);\n  }\n  get storyboardToken() {\n    var e;\n    return (e = this.getAttribute(n.STORYBOARD_TOKEN)) != null ? e : void 0;\n  }\n  set storyboardToken(e) {\n    this.setAttribute(n.STORYBOARD_TOKEN, `${e}`);\n  }\n  addTextTrack(e, a2, r10, o) {\n    var l;\n    let s = (l = this.media) == null ? void 0 : l.nativeEl;\n    if (s) return W(s, e, a2, r10, o);\n  }\n  removeTextTrack(e) {\n    var r10;\n    let a2 = (r10 = this.media) == null ? void 0 : r10.nativeEl;\n    if (a2) return Re(a2, e);\n  }\n  get textTracks() {\n    var e;\n    return (e = this.media) == null ? void 0 : e.textTracks;\n  }\n};\nre3 = /* @__PURE__ */ new WeakMap(), oe4 = /* @__PURE__ */ new WeakMap(), H4 = /* @__PURE__ */ new WeakMap(), ne3 = /* @__PURE__ */ new WeakMap(), Z4 = /* @__PURE__ */ new WeakMap(), O3 = /* @__PURE__ */ new WeakSet(), V3 = function() {\n  var e, a2, r10, o;\n  if (!u2(this, re3)) {\n    x3(this, re3, true), b3(this, _2, W3).call(this);\n    try {\n      if (customElements.upgrade(this.mediaTheme), !(this.mediaTheme instanceof c2.HTMLElement)) throw \"\";\n    } catch (e2) {\n      A2(\"<media-theme> failed to upgrade!\");\n    }\n    try {\n      if (customElements.upgrade(this.media), !(this.media instanceof ks)) throw \"\";\n    } catch (e2) {\n      A2(\"<mux-video> failed to upgrade!\");\n    }\n    try {\n      if (customElements.upgrade(this.mediaController), !(this.mediaController instanceof media_controller_default)) throw \"\";\n    } catch (e2) {\n      A2(\"<media-controller> failed to upgrade!\");\n    }\n    this.init(), b3(this, ke4, Bt3).call(this), b3(this, Te3, Ut3).call(this), b3(this, Ae2, Kt2).call(this), x3(this, H4, (a2 = (e = this.mediaController) == null ? void 0 : e.hasAttribute(Attributes.USER_INACTIVE)) != null ? a2 : true), b3(this, Ce4, $t2).call(this), (r10 = this.media) == null || r10.addEventListener(\"streamtypechange\", () => b3(this, _2, W3).call(this)), (o = this.media) == null || o.addEventListener(\"loadstart\", () => b3(this, _2, W3).call(this));\n  }\n}, Ee4 = /* @__PURE__ */ new WeakSet(), Ht2 = function() {\n  var e, a2;\n  try {\n    (e = window == null ? void 0 : window.CSS) == null || e.registerProperty({ name: \"--media-primary-color\", syntax: \"<color>\", inherits: true }), (a2 = window == null ? void 0 : window.CSS) == null || a2.registerProperty({ name: \"--media-secondary-color\", syntax: \"<color>\", inherits: true });\n  } catch (e2) {\n  }\n}, se3 = /* @__PURE__ */ new WeakSet(), Ke4 = function(e) {\n  Object.assign(u2(this, Z4), e), b3(this, _2, W3).call(this);\n}, _2 = /* @__PURE__ */ new WeakSet(), W3 = function(e = {}) {\n  wt2(St2(xa2(this, __spreadValues(__spreadValues({}, u2(this, Z4)), e))), this.shadowRoot);\n}, ke4 = /* @__PURE__ */ new WeakSet(), Bt3 = function() {\n  let e = (r10) => {\n    var l, h3;\n    if (!(r10 != null && r10.startsWith(\"theme-\"))) return;\n    let o = r10.replace(/^theme-/, \"\");\n    if (Ue3.includes(o)) return;\n    let s = this.getAttribute(r10);\n    s != null ? (l = this.mediaTheme) == null || l.setAttribute(o, s) : (h3 = this.mediaTheme) == null || h3.removeAttribute(o);\n  };\n  new MutationObserver((r10) => {\n    for (let { attributeName: o } of r10) e(o);\n  }).observe(this, { attributes: true }), this.getAttributeNames().forEach(e);\n}, Te3 = /* @__PURE__ */ new WeakSet(), Ut3 = function() {\n  var a2;\n  let e = (r10) => {\n    let { detail: o } = r10;\n    if (o instanceof x || (o = new x(o.message, o.code, o.fatal)), !(o != null && o.fatal)) {\n      I3(o), o.data && I3(`${o.name} data:`, o.data);\n      return;\n    }\n    let { dialog: s, devlog: l } = ge3(o, !window.navigator.onLine, this.playbackId, this.playbackToken);\n    l.message && _e4(l), A2(o), o.data && A2(`${o.name} data:`, o.data), b3(this, se3, Ke4).call(this, { isDialogOpen: true, dialog: s });\n  };\n  this.addEventListener(\"error\", e), this.media && (this.media.errorTranslator = (r10 = {}) => {\n    var s, l, h3;\n    if (!(((s = this.media) == null ? void 0 : s.error) instanceof x)) return r10;\n    let { devlog: o } = ge3((l = this.media) == null ? void 0 : l.error, !window.navigator.onLine, this.playbackId, this.playbackToken, false);\n    return { player_error_code: (h3 = this.media) == null ? void 0 : h3.error.code, player_error_message: o.message ? String(o.message) : r10.player_error_message, player_error_context: o.context ? String(o.context) : r10.player_error_context };\n  }), (a2 = this.media) == null || a2.addEventListener(\"error\", (r10) => {\n    var s, l;\n    let { detail: o } = r10;\n    if (!o) {\n      let { message: h3, code: R2 } = (l = (s = this.media) == null ? void 0 : s.error) != null ? l : {};\n      o = new x(h3, R2);\n    }\n    o != null && o.fatal && this.dispatchEvent(new CustomEvent(\"error\", { detail: o }));\n  });\n}, Ae2 = /* @__PURE__ */ new WeakSet(), Kt2 = function() {\n  var a2, r10, o, s;\n  let e = () => b3(this, _2, W3).call(this);\n  (r10 = (a2 = this.media) == null ? void 0 : a2.textTracks) == null || r10.addEventListener(\"addtrack\", e), (s = (o = this.media) == null ? void 0 : o.textTracks) == null || s.addEventListener(\"removetrack\", e);\n}, Ce4 = /* @__PURE__ */ new WeakSet(), $t2 = function() {\n  var R2, k3;\n  if (!/Firefox/i.test(navigator.userAgent)) return;\n  let a2, r10 = /* @__PURE__ */ new WeakMap(), o = () => this.streamType === g.LIVE && !this.secondaryColor && this.offsetWidth >= 800, s = (v4, f, C3 = false) => {\n    if (o()) return;\n    Array.from(v4 && v4.activeCues || []).forEach((g2) => {\n      if (!(!g2.snapToLines || g2.line < -5 || g2.line >= 0 && g2.line < 10)) if (!f || this.paused) {\n        let B5 = g2.text.split(`\n`).length, q3 = -3;\n        this.streamType === g.LIVE && (q3 = -2);\n        let z2 = q3 - B5;\n        if (g2.line === z2 && !C3) return;\n        r10.has(g2) || r10.set(g2, g2.line), g2.line = z2;\n      } else setTimeout(() => {\n        g2.line = r10.get(g2) || \"auto\";\n      }, 500);\n    });\n  }, l = () => {\n    var v4, f;\n    s(a2, (f = (v4 = this.mediaController) == null ? void 0 : v4.hasAttribute(Attributes.USER_INACTIVE)) != null ? f : false);\n  }, h3 = () => {\n    var C3, P2;\n    let f = Array.from(((P2 = (C3 = this.mediaController) == null ? void 0 : C3.media) == null ? void 0 : P2.textTracks) || []).filter((g2) => [\"subtitles\", \"captions\"].includes(g2.kind) && g2.mode === \"showing\")[0];\n    f !== a2 && (a2 == null || a2.removeEventListener(\"cuechange\", l)), a2 = f, a2 == null || a2.addEventListener(\"cuechange\", l), s(a2, u2(this, H4));\n  };\n  h3(), (R2 = this.textTracks) == null || R2.addEventListener(\"change\", h3), (k3 = this.textTracks) == null || k3.addEventListener(\"addtrack\", h3), this.addEventListener(\"userinactivechange\", () => {\n    var f, C3;\n    let v4 = (C3 = (f = this.mediaController) == null ? void 0 : f.hasAttribute(Attributes.USER_INACTIVE)) != null ? C3 : true;\n    u2(this, H4) !== v4 && (x3(this, H4, v4), s(a2, u2(this, H4)));\n  });\n};\nfunction Y3(t2, i2) {\n  return t2.media ? t2.media.getAttribute(i2) : t2.getAttribute(i2);\n}\nc2.customElements.get(\"mux-player\") || (c2.customElements.define(\"mux-player\", ie4), c2.MuxPlayerElement = ie4);\n\n// node_modules/.pnpm/@mux+mux-player-react@2.9.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@mux/mux-player-react/dist/index.mjs\nimport { useRef as ye4 } from \"react\";\nimport { useEffect as ee5, useRef as ne4 } from \"react\";\nimport { useEffect as te5 } from \"react\";\nvar p2 = { className: \"class\", classname: \"class\", htmlFor: \"for\", crossOrigin: \"crossorigin\", viewBox: \"viewBox\", playsInline: \"playsinline\", autoPlay: \"autoplay\", playbackRate: \"playbackrate\" };\nvar Y4 = (e) => e == null;\nvar $5 = (e, n2) => Y4(n2) ? false : e in n2;\nvar Q4 = (e) => e.replace(/[A-Z]/g, (n2) => `-${n2.toLowerCase()}`);\nvar X5 = (e, n2) => {\n  if (!(typeof n2 == \"boolean\" && !n2)) {\n    if ($5(e, p2)) return p2[e];\n    if (typeof n2 != null) return /[A-Z]/.test(e) ? Q4(e) : e;\n  }\n};\nvar B4 = (e, n2) => typeof e == \"boolean\" ? \"\" : e;\nvar d3 = (e = {}) => Object.entries(e).reduce((n2, [t2, o]) => {\n  let r10 = X5(t2, o);\n  if (!r10) return n2;\n  let s = B4(o, t2);\n  return n2[r10] = s, n2;\n}, {});\nvar m2 = (...e) => {\n  let n2 = ne4(null);\n  return ee5(() => {\n    e.forEach((t2) => {\n      t2 && (typeof t2 == \"function\" ? t2(n2.current) : t2.current = n2.current);\n    });\n  }, [e]), n2;\n};\nvar ae4 = Object.prototype.hasOwnProperty;\nvar re4 = (e, n2) => {\n  if (Object.is(e, n2)) return true;\n  if (typeof e != \"object\" || e === null || typeof n2 != \"object\" || n2 === null) return false;\n  if (Array.isArray(e)) return !Array.isArray(n2) || e.length !== n2.length ? false : e.some((r10, s) => n2[s] === r10);\n  let t2 = Object.keys(e), o = Object.keys(n2);\n  if (t2.length !== o.length) return false;\n  for (let r10 = 0; r10 < t2.length; r10++) if (!ae4.call(n2, t2[r10]) || !Object.is(e[t2[r10]], n2[t2[r10]])) return false;\n  return true;\n};\nvar c3 = (e, n2, t2) => !re4(n2, e[t2]);\nvar oe5 = (e, n2, t2) => {\n  e[t2] = n2;\n};\nvar ie5 = (e, n2, t2, o = oe5, r10 = c3) => te5(() => {\n  let s = t2 == null ? void 0 : t2.current;\n  s && r10(s, n2, e) && o(s, n2, e);\n}, [t2 == null ? void 0 : t2.current, n2]);\nvar i = ie5;\nvar se4 = () => {\n  try {\n    return \"2.9.1\";\n  } catch (e) {\n  }\n  return \"UNKNOWN\";\n};\nvar le5 = se4();\nvar E3 = () => le5;\nvar ce5 = y4.forwardRef((_a3, t2) => {\n  var _b = _a3, { children: e } = _b, n2 = __objRest(_b, [\"children\"]);\n  return y4.createElement(\"mux-player\", d3(__spreadProps(__spreadValues({}, n2), { ref: t2 })), e);\n});\nvar a = (e, n2, t2) => ue5(() => {\n  let o = n2 == null ? void 0 : n2.current;\n  if (!(!o || !t2)) return o.addEventListener(e, t2), () => {\n    o.removeEventListener(e, t2);\n  };\n}, [n2 == null ? void 0 : n2.current, t2]);\nvar pe3 = (e, n2) => {\n  let _a3 = n2, { onAbort: t2, onCanPlay: o, onCanPlayThrough: r10, onEmptied: s, onLoadStart: g2, onLoadedData: M4, onLoadedMetadata: P2, onProgress: f, onDurationChange: b4, onVolumeChange: v4, onRateChange: x4, onResize: h3, onWaiting: T3, onPlay: R2, onPlaying: C3, onTimeUpdate: k3, onPause: L2, onSeeking: O4, onSeeked: S4, onStalled: G4, onSuspend: w2, onEnded: V4, onError: A3, onCuePointChange: N3, onCuePointsChange: I4, onChapterChange: K5, metadata: D3, tokens: U4, paused: _3, playbackId: H5, playbackRates: j4, currentTime: z2, themeProps: F5, extraSourceParams: W4, _hlsConfig: Z5 } = _a3, q3 = __objRest(_a3, [\"onAbort\", \"onCanPlay\", \"onCanPlayThrough\", \"onEmptied\", \"onLoadStart\", \"onLoadedData\", \"onLoadedMetadata\", \"onProgress\", \"onDurationChange\", \"onVolumeChange\", \"onRateChange\", \"onResize\", \"onWaiting\", \"onPlay\", \"onPlaying\", \"onTimeUpdate\", \"onPause\", \"onSeeking\", \"onSeeked\", \"onStalled\", \"onSuspend\", \"onEnded\", \"onError\", \"onCuePointChange\", \"onCuePointsChange\", \"onChapterChange\", \"metadata\", \"tokens\", \"paused\", \"playbackId\", \"playbackRates\", \"currentTime\", \"themeProps\", \"extraSourceParams\", \"_hlsConfig\"]);\n  return i(\"playbackRates\", j4, e), i(\"metadata\", D3, e), i(\"extraSourceParams\", W4, e), i(\"_hlsConfig\", Z5, e), i(\"themeProps\", F5, e), i(\"tokens\", U4, e), i(\"playbackId\", H5, e), i(\"paused\", _3, e, (l, u3) => {\n    u3 != null && (u3 ? l.pause() : l.play());\n  }, (l, u3, J4) => l.hasAttribute(\"autoplay\") && !l.hasPlayed ? false : c3(l, u3, J4)), i(\"currentTime\", z2, e, (l, u3) => {\n    u3 != null && (l.currentTime = u3);\n  }), a(\"abort\", e, t2), a(\"canplay\", e, o), a(\"canplaythrough\", e, r10), a(\"emptied\", e, s), a(\"loadstart\", e, g2), a(\"loadeddata\", e, M4), a(\"loadedmetadata\", e, P2), a(\"progress\", e, f), a(\"durationchange\", e, b4), a(\"volumechange\", e, v4), a(\"ratechange\", e, x4), a(\"resize\", e, h3), a(\"waiting\", e, T3), a(\"play\", e, R2), a(\"playing\", e, C3), a(\"timeupdate\", e, k3), a(\"pause\", e, L2), a(\"seeking\", e, O4), a(\"seeked\", e, S4), a(\"stalled\", e, G4), a(\"suspend\", e, w2), a(\"ended\", e, V4), a(\"error\", e, A3), a(\"cuepointchange\", e, N3), a(\"cuepointschange\", e, I4), a(\"chapterchange\", e, K5), [q3];\n};\nvar de5 = E3();\nvar me4 = \"mux-player-react\";\nvar Ee5 = y4.forwardRef((e, n2) => {\n  let t2 = ye4(null), o = m2(t2, n2), [r10] = pe3(t2, e);\n  return y4.createElement(ce5, __spreadValues({ ref: o, playerSoftwareName: me4, playerSoftwareVersion: de5 }, r10));\n});\nvar Ae3 = Ee5;\n\nexport {\n  Ae3 as Ae\n};\n/*! Bundled license information:\n\nmux-embed/dist/mux.mjs:\n  (*!\n  * JavaScript Cookie v2.1.3\n  * https://github.com/js-cookie/js-cookie\n  *\n  * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n  * Released under the MIT license\n  *)\n*/\n", "import {\n  Spinner\n} from \"./chunk-SDKSBXQ2.mjs\";\nimport {\n  Arrow\n} from \"./chunk-EJKG6TUT.mjs\";\nimport {\n  Ae\n} from \"./chunk-PO4BOMMR.mjs\";\nimport {\n  AspectRatio,\n  cx,\n  useMounted\n} from \"./chunk-OBTVI3NH.mjs\";\n\n// src/class/Video.tsx\nimport { useEffect, useRef, useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nfunction Video({\n  video,\n  showNote = false,\n  noteLink = \"https://comfy-for-real-ads.notion.to/\"\n}) {\n  const mounted = useMounted();\n  const { playbackId, title, thumbnailTime, chapters, workflows } = video;\n  const videoRef = useRef(null);\n  const playbackKey = playbackId;\n  const [lastKnownTime, setLastKnownTime] = useState(0);\n  const [isFirstPlay, setIsFirstPlay] = useState(true);\n  const [canPlay, setCanPlay] = useState(false);\n  useEffect(() => {\n    if (!mounted) return;\n    const player = videoRef.current;\n    if (player) {\n      const savedTime = parseFloat(window.localStorage.getItem(playbackId)) || 0;\n      setLastKnownTime(savedTime);\n      const handleTimeUpdate = (e) => {\n        window.localStorage.setItem(playbackKey, e.target.currentTime);\n      };\n      const handleEnded = () => {\n        window.localStorage.removeItem(playbackKey);\n      };\n      const handlePlay = () => {\n        if (isFirstPlay && lastKnownTime > 0) {\n          player.pause();\n          const formattedTime = new Date(lastKnownTime * 1e3).toISOString().substr(11, 8);\n          const resume = window.confirm(\n            `\\uC774\\uC804\\uC5D0 \\uC7AC\\uC0DD\\uD558\\uC2E0 \\uBD80\\uBD84\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uC2DC\\uACA0\\uC5B4\\uC694? (${formattedTime})`\n          );\n          if (resume) {\n            player.currentTime = lastKnownTime;\n          } else {\n            player.currentTime = 0;\n          }\n          player.play();\n          setIsFirstPlay(false);\n        }\n      };\n      player.addEventListener(\"timeupdate\", handleTimeUpdate);\n      player.addEventListener(\"ended\", handleEnded);\n      player.addEventListener(\"play\", handlePlay);\n      return () => {\n        player.removeEventListener(\"timeupdate\", handleTimeUpdate);\n        player.removeEventListener(\"ended\", handleEnded);\n        player.removeEventListener(\"play\", handlePlay);\n      };\n    }\n  }, [isFirstPlay, lastKnownTime, playbackKey, videoRef, mounted]);\n  return /* @__PURE__ */ jsxs(Fragment, { children: [\n    /* @__PURE__ */ jsxs(AspectRatio, { ratio: 3456 / 2234, style: { overflow: \"hidden\" }, children: [\n      !canPlay && /* @__PURE__ */ jsx(\n        Spinner,\n        {\n          style: {\n            width: 24,\n            height: 24,\n            position: \"absolute\",\n            left: \"50%\",\n            top: \"50%\",\n            transform: \"translate(-50%, -50%)\"\n          }\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"div\",\n        {\n          className: cx(\n            \"w-full transition-all ease-in-out delay-650\",\n            \"absolute left-0 top-0\",\n            canPlay ? \"md:opacity-100\" : \"md:opacity-0\",\n            \"opacity-100\"\n          ),\n          children: /* @__PURE__ */ jsx(\n            Ae,\n            {\n              ref: videoRef,\n              streamType: \"on-demand\",\n              metadataVideoTitle: title,\n              primaryColor: \"#FFFFFF\",\n              secondaryColor: \"#000000\",\n              accentColor: \"#005DFA\",\n              playbackId,\n              thumbnailTime,\n              onCanPlay: () => setCanPlay(true)\n            }\n          )\n        }\n      )\n    ] }),\n    /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-row justify-between w-full\", children: [\n      /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col gap-5\", children: [\n        /* @__PURE__ */ jsx(VideoIndex, { playerRef: videoRef, chapters }),\n        (workflows == null ? void 0 : workflows.length) > 0 && /* @__PURE__ */ jsxs(\n          \"div\",\n          {\n            className: \"flex flex-col justify-end gap-2\",\n            style: {\n              border: \"1px solid #005DFA\",\n              borderStyle: \"dashed\",\n              padding: \"12px 24px\",\n              borderRadius: \"4px\"\n            },\n            children: [\n              /* @__PURE__ */ jsx(\"div\", { className: \"font-bold text-base\", style: { color: \"#005DFA\" }, children: \"Workflows\" }),\n              workflows.map((workflow, index) => /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-row gap-2 items-center\", children: [\n                /* @__PURE__ */ jsx(\n                  \"a\",\n                  {\n                    href: workflow.link,\n                    target: \"_blank\",\n                    className: \"text-sm\",\n                    style: { color: \"#005DFA\" },\n                    children: workflow.title\n                  }\n                ),\n                /* @__PURE__ */ jsx(Arrow, { className: \"w-4 h-4\" })\n              ] }, index))\n            ]\n          }\n        )\n      ] }),\n      showNote ? /* @__PURE__ */ jsx(\n        \"a\",\n        {\n          href: noteLink,\n          target: \"_blank\",\n          className: \"font-bold text-base\",\n          style: { color: \"#005DFA\" },\n          children: \"\\uAC15\\uC758 \\uB178\\uD2B8\"\n        }\n      ) : /* @__PURE__ */ jsx(\"div\", {})\n    ] })\n  ] });\n}\nvar VideoIndex = ({ playerRef, chapters }) => {\n  const handleChapterClick = (time) => {\n    const [minutes, seconds] = time.split(\":\").map(Number);\n    const timeInSeconds = minutes * 60 + seconds;\n    if (playerRef.current) {\n      playerRef.current.currentTime = timeInSeconds;\n    }\n  };\n  return /* @__PURE__ */ jsx(\"ul\", { style: { listStyle: \"none\" }, children: chapters.map((chapter, index) => /* @__PURE__ */ jsxs(\"li\", { onClick: () => handleChapterClick(chapter.time), children: [\n    /* @__PURE__ */ jsx(\n      \"span\",\n      {\n        style: {\n          color: \"#005DFA\",\n          cursor: \"pointer\",\n          width: \"30px\",\n          display: \"inline-block\",\n          textAlign: \"right\",\n          marginRight: \"4px\"\n        },\n        children: chapter.time\n      }\n    ),\n    \" \",\n    chapter.title\n  ] }, index)) });\n};\n\nexport {\n  Video\n};\n", "import {\n  NeedPayment\n} from \"./chunk-RZ4MXR2C.mjs\";\nimport {\n  Video\n} from \"./chunk-C2N3SJA3.mjs\";\nimport {\n  Button,\n  CourseTitle,\n  LiveEventInfo,\n  NordyInfo,\n  VideoItem\n} from \"./chunk-SDKSBXQ2.mjs\";\nimport {\n  useGlobalStore\n} from \"./chunk-QHMWAEE2.mjs\";\nimport {\n  isDev\n} from \"./chunk-OBTVI3NH.mjs\";\n\n// src/class/VideoList.tsx\nimport { ControlType } from \"framer\";\nimport { useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nfunction VideoList({\n  passwordProtect,\n  courseId,\n  title,\n  showNote,\n  showNordyInfo,\n  showLiveEventInfo,\n  videos,\n  noteLink\n}) {\n  var _a;\n  const [store, setStore] = useGlobalStore();\n  const [password, setPassword] = useState(\"\");\n  const [canAccess, setCanAccess] = useState(false);\n  const { user } = store;\n  const firstVideo = videos[0];\n  const [current, setCurrent] = useState(firstVideo);\n  if (!isDev && !(courseId === \"my-ai-model\") && !passwordProtect) {\n    if (!user) return;\n    if (!((_a = user.access) == null ? void 0 : _a[courseId])) return /* @__PURE__ */ jsx(NeedPayment, {});\n  }\n  if (passwordProtect && !canAccess) {\n    return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col gap-2\", children: [\n      /* @__PURE__ */ jsx(\"div\", { className: \"text-sm text-gray-500\", children: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC785\\uB825\\uD574\\uC8FC\\uC138\\uC694.\" }),\n      /* @__PURE__ */ jsx(\n        \"input\",\n        {\n          type: \"password\",\n          value: password,\n          onChange: (e) => setPassword(e.target.value),\n          className: \"border border-gray-300 rounded-md p-2\"\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        Button,\n        {\n          text: \"\\uC785\\uC7A5 \\uD558\\uAE30\",\n          variant: \"primary\",\n          onClick: () => {\n            setCanAccess(password === \"4893\");\n          }\n        }\n      )\n    ] }) });\n  }\n  return /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col gap-8 md:flex-row\", children: [\n    /* @__PURE__ */ jsxs(\"div\", { className: \"flex flex-col gap-8 w-80 p-2 sticky top-0 h-fit max-md:relative max-md:w-full max-md:overflow-y-scroll\", children: [\n      /* @__PURE__ */ jsx(CourseTitle, { title, style: { width: \"100%\" } }),\n      /* @__PURE__ */ jsx(\"div\", { children: videos.map((video, id) => /* @__PURE__ */ jsx(\n        VideoItem,\n        {\n          title: `${video.title} ${video.locked ? \"\" : `(${video.duration})`}`,\n          onClick: () => setCurrent(video),\n          variant: (() => {\n            if (video.locked) return \"locked\";\n            return video.playbackId === current.playbackId ? \"active\" : \"default\";\n          })(),\n          category: video.category,\n          showBadges: video.showBadges,\n          showBadge: video.showBadge,\n          style: { width: \"100%\" }\n        },\n        id + current\n      )) })\n    ] }),\n    /* @__PURE__ */ jsxs(\n      \"div\",\n      {\n        style: {\n          flex: 1,\n          display: \"flex\",\n          flexDirection: \"column\",\n          alignItems: \"start\",\n          gap: 32\n        },\n        className: \"sticky top-0 h-fit\",\n        children: [\n          /* @__PURE__ */ jsx(\n            Video,\n            {\n              video: current,\n              showNote,\n              noteLink\n            },\n            current.playbackId\n          ),\n          courseId === \"comfy-and-celeb-models\" && /* @__PURE__ */ jsx(\n            Button,\n            {\n              text: `\\uC704 \\uB0B4\\uC6A9\\uB4E4\\uC744 \\uB354 \\uC790\\uC138\\uD788 \\uBC30\\uC6B0\\uACE0 \\uC2F6\\uB2E4\\uBA74? \\u{1F449}\\u{1F3FB} \\uBCF8\\uAC15\\uC758 \\uB458\\uB7EC\\uBCF4\\uAE30`,\n              variant: \"primary\",\n              onClick: () => window.open(\n                \"https://harbor.school/courses/comfy-for-real-ads/\",\n                \"_blank\"\n              )\n            }\n          ),\n          courseId !== \"comfy-and-celeb-models\" && /* @__PURE__ */ jsx(\n            Button,\n            {\n              text: `\\uC2AC\\uB799\\uC5D0\\uC11C \\uBB3B\\uACE0 \\uB2F5\\uD558\\uAE30 (#${courseId} \\uCC44\\uB110)`,\n              variant: \"primary\",\n              onClick: () => window.open(\n                \"https://join.slack.com/t/harbor-school/shared_invite/zt-2lk1yeevo-BLNt1IGXduBstl10Pk_JxQ\",\n                \"_blank\"\n              )\n            }\n          ),\n          showNordyInfo && /* @__PURE__ */ jsx(NordyInfo, {}),\n          showLiveEventInfo && /* @__PURE__ */ jsx(LiveEventInfo, {})\n        ]\n      }\n    )\n  ] });\n}\nVideoList.propertyControls = {\n  passwordProtect: {\n    type: ControlType.Boolean,\n    defaultValue: false\n  },\n  courseId: {\n    type: ControlType.String\n  },\n  title: {\n    type: ControlType.String,\n    defaultValue: `\\uC9C4\\uC9DC \\uAD11\\uACE0 \\uC774\\uBBF8\\uC9C0\\uB97C \\uB9CC\\uB4E4\\uBA74\\uC11C\n\\uBC30\\uC6B0\\uB294 AI (ComfyUI)`,\n    displayTextArea: true\n  },\n  showNote: {\n    type: ControlType.Boolean,\n    defaultValue: false\n  },\n  noteLink: {\n    type: ControlType.String,\n    defaultValue: \"https://comfy-for-real-ads.notion.to/\"\n  },\n  showNordyInfo: {\n    type: ControlType.Boolean,\n    defaultValue: true\n  },\n  showLiveEventInfo: {\n    type: ControlType.Boolean,\n    defaultValue: false\n  },\n  videos: {\n    type: ControlType.Array,\n    control: {\n      type: ControlType.Object,\n      controls: {\n        title: { type: ControlType.String },\n        duration: { type: ControlType.String },\n        thumbnailTime: {\n          type: ControlType.Number,\n          displayStepper: true\n        },\n        locked: { type: ControlType.Boolean, defaultValue: true },\n        playbackId: { type: ControlType.String },\n        category: { type: ControlType.String, defaultValue: \"\" },\n        showBadges: { type: ControlType.Boolean, defaultValue: false },\n        showBadge: { type: ControlType.Boolean, defaultValue: false },\n        chapters: {\n          type: ControlType.Array,\n          control: {\n            type: ControlType.Object,\n            controls: {\n              time: { type: ControlType.String },\n              title: { type: ControlType.String }\n            }\n          }\n        },\n        workflows: {\n          type: ControlType.Array,\n          control: {\n            type: ControlType.Object,\n            controls: {\n              title: { type: ControlType.String },\n              link: { type: ControlType.String }\n            }\n          }\n        }\n      }\n    },\n    defaultValue: [\n      {\n        playbackId: \"XMPYGKG1MpOGgz9L01IvbkreyK8ZLbCusIE77TlxBirU\",\n        title: \"Video Title\",\n        duration: \"10:23\",\n        thumbnailTime: 10\n      }\n    ]\n  }\n};\n\nexport {\n  VideoList\n};\n", "var __awaiter = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst resolveFetch = (customFetch) => {\n  let _fetch;\n  if (customFetch) {\n    _fetch = customFetch;\n  } else if (typeof fetch === \"undefined\") {\n    _fetch = (...args) => __awaiter(void 0, void 0, void 0, function* () {\n      return yield (yield import(\"/-/cross-fetch@v3.1.5-rZpYflwCvsXnXC1DUbBX/dist=es2019,mode=imports/optimized/cross-fetch.js\")).fetch(...args);\n    });\n  } else {\n    _fetch = fetch;\n  }\n  return (...args) => _fetch(...args);\n};\nclass FunctionsError extends Error {\n  constructor(message, name = \"FunctionsError\", context) {\n    super(message);\n    super.name = name;\n    this.context = context;\n  }\n}\nclass FunctionsFetchError extends FunctionsError {\n  constructor(context) {\n    super(\"Failed to send a request to the Edge Function\", \"FunctionsFetchError\", context);\n  }\n}\nclass FunctionsRelayError extends FunctionsError {\n  constructor(context) {\n    super(\"Relay Error invoking the Edge Function\", \"FunctionsRelayError\", context);\n  }\n}\nclass FunctionsHttpError extends FunctionsError {\n  constructor(context) {\n    super(\"Edge Function returned a non-2xx status code\", \"FunctionsHttpError\", context);\n  }\n}\nvar __awaiter$1 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nclass FunctionsClient {\n  constructor(url, {headers = {}, customFetch} = {}) {\n    this.url = url;\n    this.headers = headers;\n    this.fetch = resolveFetch(customFetch);\n  }\n  setAuth(token) {\n    this.headers.Authorization = `Bearer ${token}`;\n  }\n  invoke(functionName, options = {}) {\n    var _a;\n    return __awaiter$1(this, void 0, void 0, function* () {\n      try {\n        const {headers, method, body: functionArgs} = options;\n        let _headers = {};\n        let body;\n        if (functionArgs && (headers && !Object.prototype.hasOwnProperty.call(headers, \"Content-Type\") || !headers)) {\n          if (typeof Blob !== \"undefined\" && functionArgs instanceof Blob || functionArgs instanceof ArrayBuffer) {\n            _headers[\"Content-Type\"] = \"application/octet-stream\";\n            body = functionArgs;\n          } else if (typeof functionArgs === \"string\") {\n            _headers[\"Content-Type\"] = \"text/plain\";\n            body = functionArgs;\n          } else if (typeof FormData !== \"undefined\" && functionArgs instanceof FormData) {\n            body = functionArgs;\n          } else {\n            _headers[\"Content-Type\"] = \"application/json\";\n            body = JSON.stringify(functionArgs);\n          }\n        }\n        const response = yield this.fetch(`${this.url}/${functionName}`, {\n          method: method || \"POST\",\n          headers: Object.assign(Object.assign(Object.assign({}, _headers), this.headers), headers),\n          body\n        }).catch((fetchError) => {\n          throw new FunctionsFetchError(fetchError);\n        });\n        const isRelayError = response.headers.get(\"x-relay-error\");\n        if (isRelayError && isRelayError === \"true\") {\n          throw new FunctionsRelayError(response);\n        }\n        if (!response.ok) {\n          throw new FunctionsHttpError(response);\n        }\n        let responseType = ((_a = response.headers.get(\"Content-Type\")) !== null && _a !== void 0 ? _a : \"text/plain\").split(\";\")[0].trim();\n        let data;\n        if (responseType === \"application/json\") {\n          data = yield response.json();\n        } else if (responseType === \"application/octet-stream\") {\n          data = yield response.blob();\n        } else if (responseType === \"multipart/form-data\") {\n          data = yield response.formData();\n        } else {\n          data = yield response.text();\n        }\n        return {data, error: null};\n      } catch (error) {\n        return {data: null, error};\n      }\n    });\n  }\n}\nexport {FunctionsClient, FunctionsError, FunctionsFetchError, FunctionsHttpError, FunctionsRelayError};\nexport default null;\n", "import crossFetch from \"/-/cross-fetch@v3.1.5-rZpYflwCvsXnXC1DUbBX/dist=es2019,mode=imports/optimized/cross-fetch.js\";\nclass PostgrestBuilder {\n  constructor(builder) {\n    this.shouldThrowOnError = false;\n    this.method = builder.method;\n    this.url = builder.url;\n    this.headers = builder.headers;\n    this.schema = builder.schema;\n    this.body = builder.body;\n    this.shouldThrowOnError = builder.shouldThrowOnError;\n    this.signal = builder.signal;\n    this.allowEmpty = builder.allowEmpty;\n    if (builder.fetch) {\n      this.fetch = builder.fetch;\n    } else if (typeof fetch === \"undefined\") {\n      this.fetch = crossFetch;\n    } else {\n      this.fetch = fetch;\n    }\n  }\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  then(onfulfilled, onrejected) {\n    if (this.schema === void 0)\n      ;\n    else if ([\"GET\", \"HEAD\"].includes(this.method)) {\n      this.headers[\"Accept-Profile\"] = this.schema;\n    } else {\n      this.headers[\"Content-Profile\"] = this.schema;\n    }\n    if (this.method !== \"GET\" && this.method !== \"HEAD\") {\n      this.headers[\"Content-Type\"] = \"application/json\";\n    }\n    const _fetch = this.fetch;\n    let res = _fetch(this.url.toString(), {\n      method: this.method,\n      headers: this.headers,\n      body: JSON.stringify(this.body),\n      signal: this.signal\n    }).then(async (res2) => {\n      var _a, _b, _c;\n      let error = null;\n      let data = null;\n      let count = null;\n      let status = res2.status;\n      let statusText = res2.statusText;\n      if (res2.ok) {\n        if (this.method !== \"HEAD\") {\n          const body = await res2.text();\n          if (body === \"\")\n            ;\n          else if (this.headers[\"Accept\"] === \"text/csv\") {\n            data = body;\n          } else if (this.headers[\"Accept\"] && this.headers[\"Accept\"].includes(\"application/vnd.pgrst.plan+text\")) {\n            data = body;\n          } else {\n            data = JSON.parse(body);\n          }\n        }\n        const countHeader = (_a = this.headers[\"Prefer\"]) === null || _a === void 0 ? void 0 : _a.match(/count=(exact|planned|estimated)/);\n        const contentRange = (_b = res2.headers.get(\"content-range\")) === null || _b === void 0 ? void 0 : _b.split(\"/\");\n        if (countHeader && contentRange && contentRange.length > 1) {\n          count = parseInt(contentRange[1]);\n        }\n      } else {\n        const body = await res2.text();\n        try {\n          error = JSON.parse(body);\n          if (Array.isArray(error) && res2.status === 404) {\n            data = [];\n            error = null;\n            status = 200;\n            statusText = \"OK\";\n          }\n        } catch (_d) {\n          if (res2.status === 404 && body === \"\") {\n            status = 204;\n            statusText = \"No Content\";\n          } else {\n            error = {\n              message: body\n            };\n          }\n        }\n        if (error && this.allowEmpty && ((_c = error === null || error === void 0 ? void 0 : error.details) === null || _c === void 0 ? void 0 : _c.includes(\"Results contain 0 rows\"))) {\n          error = null;\n          status = 200;\n          statusText = \"OK\";\n        }\n        if (error && this.shouldThrowOnError) {\n          throw error;\n        }\n      }\n      const postgrestResponse = {\n        error,\n        data,\n        count,\n        status,\n        statusText\n      };\n      return postgrestResponse;\n    });\n    if (!this.shouldThrowOnError) {\n      res = res.catch((fetchError) => ({\n        error: {\n          message: `FetchError: ${fetchError.message}`,\n          details: \"\",\n          hint: \"\",\n          code: fetchError.code || \"\"\n        },\n        data: null,\n        count: null,\n        status: 0,\n        statusText: \"\"\n      }));\n    }\n    return res.then(onfulfilled, onrejected);\n  }\n}\nclass PostgrestTransformBuilder extends PostgrestBuilder {\n  select(columns) {\n    let quoted = false;\n    const cleanedColumns = (columns !== null && columns !== void 0 ? columns : \"*\").split(\"\").map((c) => {\n      if (/\\s/.test(c) && !quoted) {\n        return \"\";\n      }\n      if (c === '\"') {\n        quoted = !quoted;\n      }\n      return c;\n    }).join(\"\");\n    this.url.searchParams.set(\"select\", cleanedColumns);\n    if (this.headers[\"Prefer\"]) {\n      this.headers[\"Prefer\"] += \",\";\n    }\n    this.headers[\"Prefer\"] += \"return=representation\";\n    return this;\n  }\n  order(column, {ascending = true, nullsFirst, foreignTable} = {}) {\n    const key = foreignTable ? `${foreignTable}.order` : \"order\";\n    const existingOrder = this.url.searchParams.get(key);\n    this.url.searchParams.set(key, `${existingOrder ? `${existingOrder},` : \"\"}${column}.${ascending ? \"asc\" : \"desc\"}${nullsFirst === void 0 ? \"\" : nullsFirst ? \".nullsfirst\" : \".nullslast\"}`);\n    return this;\n  }\n  limit(count, {foreignTable} = {}) {\n    const key = typeof foreignTable === \"undefined\" ? \"limit\" : `${foreignTable}.limit`;\n    this.url.searchParams.set(key, `${count}`);\n    return this;\n  }\n  range(from, to, {foreignTable} = {}) {\n    const keyOffset = typeof foreignTable === \"undefined\" ? \"offset\" : `${foreignTable}.offset`;\n    const keyLimit = typeof foreignTable === \"undefined\" ? \"limit\" : `${foreignTable}.limit`;\n    this.url.searchParams.set(keyOffset, `${from}`);\n    this.url.searchParams.set(keyLimit, `${to - from + 1}`);\n    return this;\n  }\n  abortSignal(signal) {\n    this.signal = signal;\n    return this;\n  }\n  single() {\n    this.headers[\"Accept\"] = \"application/vnd.pgrst.object+json\";\n    return this;\n  }\n  maybeSingle() {\n    this.headers[\"Accept\"] = \"application/vnd.pgrst.object+json\";\n    this.allowEmpty = true;\n    return this;\n  }\n  csv() {\n    this.headers[\"Accept\"] = \"text/csv\";\n    return this;\n  }\n  geojson() {\n    this.headers[\"Accept\"] = \"application/geo+json\";\n    return this;\n  }\n  explain({analyze = false, verbose = false, settings = false, buffers = false, wal = false, format = \"text\"} = {}) {\n    const options = [\n      analyze ? \"analyze\" : null,\n      verbose ? \"verbose\" : null,\n      settings ? \"settings\" : null,\n      buffers ? \"buffers\" : null,\n      wal ? \"wal\" : null\n    ].filter(Boolean).join(\"|\");\n    const forMediatype = this.headers[\"Accept\"];\n    this.headers[\"Accept\"] = `application/vnd.pgrst.plan+${format}; for=\"${forMediatype}\"; options=${options};`;\n    if (format === \"json\")\n      return this;\n    else\n      return this;\n  }\n  rollback() {\n    var _a;\n    if (((_a = this.headers[\"Prefer\"]) !== null && _a !== void 0 ? _a : \"\").trim().length > 0) {\n      this.headers[\"Prefer\"] += \",tx=rollback\";\n    } else {\n      this.headers[\"Prefer\"] = \"tx=rollback\";\n    }\n    return this;\n  }\n  returns() {\n    return this;\n  }\n}\nclass PostgrestFilterBuilder extends PostgrestTransformBuilder {\n  eq(column, value) {\n    this.url.searchParams.append(column, `eq.${value}`);\n    return this;\n  }\n  neq(column, value) {\n    this.url.searchParams.append(column, `neq.${value}`);\n    return this;\n  }\n  gt(column, value) {\n    this.url.searchParams.append(column, `gt.${value}`);\n    return this;\n  }\n  gte(column, value) {\n    this.url.searchParams.append(column, `gte.${value}`);\n    return this;\n  }\n  lt(column, value) {\n    this.url.searchParams.append(column, `lt.${value}`);\n    return this;\n  }\n  lte(column, value) {\n    this.url.searchParams.append(column, `lte.${value}`);\n    return this;\n  }\n  like(column, pattern) {\n    this.url.searchParams.append(column, `like.${pattern}`);\n    return this;\n  }\n  ilike(column, pattern) {\n    this.url.searchParams.append(column, `ilike.${pattern}`);\n    return this;\n  }\n  is(column, value) {\n    this.url.searchParams.append(column, `is.${value}`);\n    return this;\n  }\n  in(column, values) {\n    const cleanedValues = values.map((s) => {\n      if (typeof s === \"string\" && new RegExp(\"[,()]\").test(s))\n        return `\"${s}\"`;\n      else\n        return `${s}`;\n    }).join(\",\");\n    this.url.searchParams.append(column, `in.(${cleanedValues})`);\n    return this;\n  }\n  contains(column, value) {\n    if (typeof value === \"string\") {\n      this.url.searchParams.append(column, `cs.${value}`);\n    } else if (Array.isArray(value)) {\n      this.url.searchParams.append(column, `cs.{${value.join(\",\")}}`);\n    } else {\n      this.url.searchParams.append(column, `cs.${JSON.stringify(value)}`);\n    }\n    return this;\n  }\n  containedBy(column, value) {\n    if (typeof value === \"string\") {\n      this.url.searchParams.append(column, `cd.${value}`);\n    } else if (Array.isArray(value)) {\n      this.url.searchParams.append(column, `cd.{${value.join(\",\")}}`);\n    } else {\n      this.url.searchParams.append(column, `cd.${JSON.stringify(value)}`);\n    }\n    return this;\n  }\n  rangeGt(column, range) {\n    this.url.searchParams.append(column, `sr.${range}`);\n    return this;\n  }\n  rangeGte(column, range) {\n    this.url.searchParams.append(column, `nxl.${range}`);\n    return this;\n  }\n  rangeLt(column, range) {\n    this.url.searchParams.append(column, `sl.${range}`);\n    return this;\n  }\n  rangeLte(column, range) {\n    this.url.searchParams.append(column, `nxr.${range}`);\n    return this;\n  }\n  rangeAdjacent(column, range) {\n    this.url.searchParams.append(column, `adj.${range}`);\n    return this;\n  }\n  overlaps(column, value) {\n    if (typeof value === \"string\") {\n      this.url.searchParams.append(column, `ov.${value}`);\n    } else {\n      this.url.searchParams.append(column, `ov.{${value.join(\",\")}}`);\n    }\n    return this;\n  }\n  textSearch(column, query, {config, type} = {}) {\n    let typePart = \"\";\n    if (type === \"plain\") {\n      typePart = \"pl\";\n    } else if (type === \"phrase\") {\n      typePart = \"ph\";\n    } else if (type === \"websearch\") {\n      typePart = \"w\";\n    }\n    const configPart = config === void 0 ? \"\" : `(${config})`;\n    this.url.searchParams.append(column, `${typePart}fts${configPart}.${query}`);\n    return this;\n  }\n  match(query) {\n    Object.entries(query).forEach(([column, value]) => {\n      this.url.searchParams.append(column, `eq.${value}`);\n    });\n    return this;\n  }\n  not(column, operator, value) {\n    this.url.searchParams.append(column, `not.${operator}.${value}`);\n    return this;\n  }\n  or(filters, {foreignTable} = {}) {\n    const key = foreignTable ? `${foreignTable}.or` : \"or\";\n    this.url.searchParams.append(key, `(${filters})`);\n    return this;\n  }\n  filter(column, operator, value) {\n    this.url.searchParams.append(column, `${operator}.${value}`);\n    return this;\n  }\n}\nclass PostgrestQueryBuilder {\n  constructor(url, {headers = {}, schema, fetch: fetch2}) {\n    this.url = url;\n    this.headers = headers;\n    this.schema = schema;\n    this.fetch = fetch2;\n  }\n  select(columns, {head = false, count} = {}) {\n    const method = head ? \"HEAD\" : \"GET\";\n    let quoted = false;\n    const cleanedColumns = (columns !== null && columns !== void 0 ? columns : \"*\").split(\"\").map((c) => {\n      if (/\\s/.test(c) && !quoted) {\n        return \"\";\n      }\n      if (c === '\"') {\n        quoted = !quoted;\n      }\n      return c;\n    }).join(\"\");\n    this.url.searchParams.set(\"select\", cleanedColumns);\n    if (count) {\n      this.headers[\"Prefer\"] = `count=${count}`;\n    }\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      fetch: this.fetch,\n      allowEmpty: false\n    });\n  }\n  insert(values, {count} = {}) {\n    const method = \"POST\";\n    const prefersHeaders = [];\n    const body = values;\n    if (count) {\n      prefersHeaders.push(`count=${count}`);\n    }\n    if (this.headers[\"Prefer\"]) {\n      prefersHeaders.unshift(this.headers[\"Prefer\"]);\n    }\n    this.headers[\"Prefer\"] = prefersHeaders.join(\",\");\n    if (Array.isArray(values)) {\n      const columns = values.reduce((acc, x) => acc.concat(Object.keys(x)), []);\n      if (columns.length > 0) {\n        const uniqueColumns = [...new Set(columns)].map((column) => `\"${column}\"`);\n        this.url.searchParams.set(\"columns\", uniqueColumns.join(\",\"));\n      }\n    }\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body,\n      fetch: this.fetch,\n      allowEmpty: false\n    });\n  }\n  upsert(values, {onConflict, ignoreDuplicates = false, count} = {}) {\n    const method = \"POST\";\n    const prefersHeaders = [`resolution=${ignoreDuplicates ? \"ignore\" : \"merge\"}-duplicates`];\n    if (onConflict !== void 0)\n      this.url.searchParams.set(\"on_conflict\", onConflict);\n    const body = values;\n    if (count) {\n      prefersHeaders.push(`count=${count}`);\n    }\n    if (this.headers[\"Prefer\"]) {\n      prefersHeaders.unshift(this.headers[\"Prefer\"]);\n    }\n    this.headers[\"Prefer\"] = prefersHeaders.join(\",\");\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body,\n      fetch: this.fetch,\n      allowEmpty: false\n    });\n  }\n  update(values, {count} = {}) {\n    const method = \"PATCH\";\n    const prefersHeaders = [];\n    const body = values;\n    if (count) {\n      prefersHeaders.push(`count=${count}`);\n    }\n    if (this.headers[\"Prefer\"]) {\n      prefersHeaders.unshift(this.headers[\"Prefer\"]);\n    }\n    this.headers[\"Prefer\"] = prefersHeaders.join(\",\");\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body,\n      fetch: this.fetch,\n      allowEmpty: false\n    });\n  }\n  delete({count} = {}) {\n    const method = \"DELETE\";\n    const prefersHeaders = [];\n    if (count) {\n      prefersHeaders.push(`count=${count}`);\n    }\n    if (this.headers[\"Prefer\"]) {\n      prefersHeaders.unshift(this.headers[\"Prefer\"]);\n    }\n    this.headers[\"Prefer\"] = prefersHeaders.join(\",\");\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      fetch: this.fetch,\n      allowEmpty: false\n    });\n  }\n}\nconst version = \"1.4.1\";\nconst DEFAULT_HEADERS = {\"X-Client-Info\": `postgrest-js/${version}`};\nclass PostgrestClient {\n  constructor(url, {headers = {}, schema, fetch: fetch2} = {}) {\n    this.url = url;\n    this.headers = Object.assign(Object.assign({}, DEFAULT_HEADERS), headers);\n    this.schema = schema;\n    this.fetch = fetch2;\n  }\n  from(relation) {\n    const url = new URL(`${this.url}/${relation}`);\n    return new PostgrestQueryBuilder(url, {\n      headers: Object.assign({}, this.headers),\n      schema: this.schema,\n      fetch: this.fetch\n    });\n  }\n  rpc(fn, args = {}, {head = false, count} = {}) {\n    let method;\n    const url = new URL(`${this.url}/rpc/${fn}`);\n    let body;\n    if (head) {\n      method = \"HEAD\";\n      Object.entries(args).forEach(([name, value]) => {\n        url.searchParams.append(name, `${value}`);\n      });\n    } else {\n      method = \"POST\";\n      body = args;\n    }\n    const headers = Object.assign({}, this.headers);\n    if (count) {\n      headers[\"Prefer\"] = `count=${count}`;\n    }\n    return new PostgrestFilterBuilder({\n      method,\n      url,\n      headers,\n      schema: this.schema,\n      body,\n      fetch: this.fetch,\n      allowEmpty: false\n    });\n  }\n}\nexport {PostgrestBuilder, PostgrestClient, PostgrestFilterBuilder, PostgrestQueryBuilder, PostgrestTransformBuilder};\nexport default null;\n", "var naiveFallback = function() {\n  if (typeof self === \"object\" && self)\n    return self;\n  if (typeof window === \"object\" && window)\n    return window;\n  throw new Error(\"Unable to resolve global `this`\");\n};\nvar __VIRTUAL_FILE = function() {\n  if (this)\n    return this;\n  if (typeof globalThis === \"object\" && globalThis)\n    return globalThis;\n  try {\n    Object.defineProperty(Object.prototype, \"__global__\", {\n      get: function() {\n        return this;\n      },\n      configurable: true\n    });\n  } catch (error) {\n    return naiveFallback();\n  }\n  try {\n    if (!__global__)\n      return naiveFallback();\n    return __global__;\n  } finally {\n    delete Object.prototype.__global__;\n  }\n}();\nexport default __VIRTUAL_FILE;\n", "import require$$0$1 from \"/-/es5-ext@v0.10.53-QgoIgxGeG8vPfAwjei6y/dist=es2019,mode=imports/unoptimized/global.js\";\nconst name = \"websocket\";\nconst description = \"Websocket Client & Server Library implementing the WebSocket protocol as specified in RFC 6455.\";\nconst keywords = [\n  \"websocket\",\n  \"websockets\",\n  \"socket\",\n  \"networking\",\n  \"comet\",\n  \"push\",\n  \"RFC-6455\",\n  \"realtime\",\n  \"server\",\n  \"client\"\n];\nconst author = \"Brian McKelvey <theturtle32@gmail.com> (https://github.com/theturtle32)\";\nconst contributors = [\n  \"I\\xF1aki Baz Castillo <ibc@aliax.net> (http://dev.sipdoc.net)\"\n];\nconst version = \"1.0.34\";\nconst repository = {\n  type: \"git\",\n  url: \"https://github.com/theturtle32/WebSocket-Node.git\"\n};\nconst homepage = \"https://github.com/theturtle32/WebSocket-Node\";\nconst engines = {\n  node: \">=4.0.0\"\n};\nconst dependencies = {\n  bufferutil: \"^4.0.1\",\n  debug: \"^2.2.0\",\n  \"es5-ext\": \"^0.10.50\",\n  \"typedarray-to-buffer\": \"^3.1.5\",\n  \"utf-8-validate\": \"^5.0.2\",\n  yaeti: \"^0.0.6\"\n};\nconst devDependencies = {\n  \"buffer-equal\": \"^1.0.0\",\n  gulp: \"^4.0.2\",\n  \"gulp-jshint\": \"^2.0.4\",\n  \"jshint-stylish\": \"^2.2.1\",\n  jshint: \"^2.0.0\",\n  tape: \"^4.9.1\"\n};\nconst config = {\n  verbose: false\n};\nconst scripts = {\n  test: \"tape test/unit/*.js\",\n  gulp: \"gulp\"\n};\nconst main = \"index\";\nconst directories = {\n  lib: \"./lib\"\n};\nconst browser = \"lib/browser.js\";\nconst license = \"Apache-2.0\";\nvar require$$0 = {\n  name,\n  description,\n  keywords,\n  author,\n  contributors,\n  version,\n  repository,\n  homepage,\n  engines,\n  dependencies,\n  devDependencies,\n  config,\n  scripts,\n  main,\n  directories,\n  browser,\n  license\n};\nvar version$1 = require$$0.version;\nvar _globalThis;\nif (typeof globalThis === \"object\") {\n  _globalThis = globalThis;\n} else {\n  try {\n    _globalThis = require$$0$1;\n  } catch (error) {\n  } finally {\n    if (!_globalThis && typeof window !== \"undefined\") {\n      _globalThis = window;\n    }\n    if (!_globalThis) {\n      throw new Error(\"Could not determine global this\");\n    }\n  }\n}\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nfunction W3CWebSocket(uri, protocols) {\n  var native_instance;\n  if (protocols) {\n    native_instance = new NativeWebSocket(uri, protocols);\n  } else {\n    native_instance = new NativeWebSocket(uri);\n  }\n  return native_instance;\n}\nif (NativeWebSocket) {\n  [\"CONNECTING\", \"OPEN\", \"CLOSING\", \"CLOSED\"].forEach(function(prop) {\n    Object.defineProperty(W3CWebSocket, prop, {\n      get: function() {\n        return NativeWebSocket[prop];\n      }\n    });\n  });\n}\nvar browser$1 = {\n  w3cwebsocket: NativeWebSocket ? W3CWebSocket : null,\n  version: version$1\n};\nexport default browser$1;\nvar w3cwebsocket = browser$1.w3cwebsocket;\nexport {browser$1 as __moduleExports, w3cwebsocket};\n", "import __commonjs_module0 from \"/-/websocket@v1.0.34-bITKCQn27Ks1QQoRgk94/dist=es2019,mode=imports/optimized/websocket.js\";\nconst {w3cwebsocket} = __commonjs_module0;\n;\nconst version = \"2.6.0\";\nconst DEFAULT_HEADERS = {\"X-Client-Info\": `realtime-js/${version}`};\nconst VSN = \"1.0.0\";\nconst DEFAULT_TIMEOUT = 1e4;\nconst WS_CLOSE_NORMAL = 1e3;\nvar SOCKET_STATES;\n(function(SOCKET_STATES2) {\n  SOCKET_STATES2[SOCKET_STATES2[\"connecting\"] = 0] = \"connecting\";\n  SOCKET_STATES2[SOCKET_STATES2[\"open\"] = 1] = \"open\";\n  SOCKET_STATES2[SOCKET_STATES2[\"closing\"] = 2] = \"closing\";\n  SOCKET_STATES2[SOCKET_STATES2[\"closed\"] = 3] = \"closed\";\n})(SOCKET_STATES || (SOCKET_STATES = {}));\nvar CHANNEL_STATES;\n(function(CHANNEL_STATES2) {\n  CHANNEL_STATES2[\"closed\"] = \"closed\";\n  CHANNEL_STATES2[\"errored\"] = \"errored\";\n  CHANNEL_STATES2[\"joined\"] = \"joined\";\n  CHANNEL_STATES2[\"joining\"] = \"joining\";\n  CHANNEL_STATES2[\"leaving\"] = \"leaving\";\n})(CHANNEL_STATES || (CHANNEL_STATES = {}));\nvar CHANNEL_EVENTS;\n(function(CHANNEL_EVENTS2) {\n  CHANNEL_EVENTS2[\"close\"] = \"phx_close\";\n  CHANNEL_EVENTS2[\"error\"] = \"phx_error\";\n  CHANNEL_EVENTS2[\"join\"] = \"phx_join\";\n  CHANNEL_EVENTS2[\"reply\"] = \"phx_reply\";\n  CHANNEL_EVENTS2[\"leave\"] = \"phx_leave\";\n  CHANNEL_EVENTS2[\"access_token\"] = \"access_token\";\n})(CHANNEL_EVENTS || (CHANNEL_EVENTS = {}));\nvar TRANSPORTS;\n(function(TRANSPORTS2) {\n  TRANSPORTS2[\"websocket\"] = \"websocket\";\n})(TRANSPORTS || (TRANSPORTS = {}));\nvar CONNECTION_STATE;\n(function(CONNECTION_STATE2) {\n  CONNECTION_STATE2[\"Connecting\"] = \"connecting\";\n  CONNECTION_STATE2[\"Open\"] = \"open\";\n  CONNECTION_STATE2[\"Closing\"] = \"closing\";\n  CONNECTION_STATE2[\"Closed\"] = \"closed\";\n})(CONNECTION_STATE || (CONNECTION_STATE = {}));\nclass Timer {\n  constructor(callback, timerCalc) {\n    this.callback = callback;\n    this.timerCalc = timerCalc;\n    this.timer = void 0;\n    this.tries = 0;\n    this.callback = callback;\n    this.timerCalc = timerCalc;\n  }\n  reset() {\n    this.tries = 0;\n    clearTimeout(this.timer);\n  }\n  scheduleTimeout() {\n    clearTimeout(this.timer);\n    this.timer = setTimeout(() => {\n      this.tries = this.tries + 1;\n      this.callback();\n    }, this.timerCalc(this.tries + 1));\n  }\n}\nclass Serializer {\n  constructor() {\n    this.HEADER_LENGTH = 1;\n  }\n  decode(rawPayload, callback) {\n    if (rawPayload.constructor === ArrayBuffer) {\n      return callback(this._binaryDecode(rawPayload));\n    }\n    if (typeof rawPayload === \"string\") {\n      return callback(JSON.parse(rawPayload));\n    }\n    return callback({});\n  }\n  _binaryDecode(buffer) {\n    const view = new DataView(buffer);\n    const decoder = new TextDecoder();\n    return this._decodeBroadcast(buffer, view, decoder);\n  }\n  _decodeBroadcast(buffer, view, decoder) {\n    const topicSize = view.getUint8(1);\n    const eventSize = view.getUint8(2);\n    let offset = this.HEADER_LENGTH + 2;\n    const topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n    offset = offset + topicSize;\n    const event = decoder.decode(buffer.slice(offset, offset + eventSize));\n    offset = offset + eventSize;\n    const data = JSON.parse(decoder.decode(buffer.slice(offset, buffer.byteLength)));\n    return {ref: null, topic, event, payload: data};\n  }\n}\nclass Push {\n  constructor(channel, event, payload = {}, timeout = DEFAULT_TIMEOUT) {\n    this.channel = channel;\n    this.event = event;\n    this.payload = payload;\n    this.timeout = timeout;\n    this.sent = false;\n    this.timeoutTimer = void 0;\n    this.ref = \"\";\n    this.receivedResp = null;\n    this.recHooks = [];\n    this.refEvent = null;\n    this.rateLimited = false;\n  }\n  resend(timeout) {\n    this.timeout = timeout;\n    this._cancelRefEvent();\n    this.ref = \"\";\n    this.refEvent = null;\n    this.receivedResp = null;\n    this.sent = false;\n    this.send();\n  }\n  send() {\n    if (this._hasReceived(\"timeout\")) {\n      return;\n    }\n    this.startTimeout();\n    this.sent = true;\n    const status = this.channel.socket.push({\n      topic: this.channel.topic,\n      event: this.event,\n      payload: this.payload,\n      ref: this.ref,\n      join_ref: this.channel._joinRef()\n    });\n    if (status === \"rate limited\") {\n      this.rateLimited = true;\n    }\n  }\n  updatePayload(payload) {\n    this.payload = Object.assign(Object.assign({}, this.payload), payload);\n  }\n  receive(status, callback) {\n    var _a;\n    if (this._hasReceived(status)) {\n      callback((_a = this.receivedResp) === null || _a === void 0 ? void 0 : _a.response);\n    }\n    this.recHooks.push({status, callback});\n    return this;\n  }\n  startTimeout() {\n    if (this.timeoutTimer) {\n      return;\n    }\n    this.ref = this.channel.socket._makeRef();\n    this.refEvent = this.channel._replyEventName(this.ref);\n    const callback = (payload) => {\n      this._cancelRefEvent();\n      this._cancelTimeout();\n      this.receivedResp = payload;\n      this._matchReceive(payload);\n    };\n    this.channel._on(this.refEvent, {}, callback);\n    this.timeoutTimer = setTimeout(() => {\n      this.trigger(\"timeout\", {});\n    }, this.timeout);\n  }\n  trigger(status, response) {\n    if (this.refEvent)\n      this.channel._trigger(this.refEvent, {status, response});\n  }\n  destroy() {\n    this._cancelRefEvent();\n    this._cancelTimeout();\n  }\n  _cancelRefEvent() {\n    if (!this.refEvent) {\n      return;\n    }\n    this.channel._off(this.refEvent, {});\n  }\n  _cancelTimeout() {\n    clearTimeout(this.timeoutTimer);\n    this.timeoutTimer = void 0;\n  }\n  _matchReceive({status, response}) {\n    this.recHooks.filter((h) => h.status === status).forEach((h) => h.callback(response));\n  }\n  _hasReceived(status) {\n    return this.receivedResp && this.receivedResp.status === status;\n  }\n}\nvar REALTIME_PRESENCE_LISTEN_EVENTS;\n(function(REALTIME_PRESENCE_LISTEN_EVENTS2) {\n  REALTIME_PRESENCE_LISTEN_EVENTS2[\"SYNC\"] = \"sync\";\n  REALTIME_PRESENCE_LISTEN_EVENTS2[\"JOIN\"] = \"join\";\n  REALTIME_PRESENCE_LISTEN_EVENTS2[\"LEAVE\"] = \"leave\";\n})(REALTIME_PRESENCE_LISTEN_EVENTS || (REALTIME_PRESENCE_LISTEN_EVENTS = {}));\nclass RealtimePresence {\n  constructor(channel, opts) {\n    this.channel = channel;\n    this.state = {};\n    this.pendingDiffs = [];\n    this.joinRef = null;\n    this.caller = {\n      onJoin: () => {\n      },\n      onLeave: () => {\n      },\n      onSync: () => {\n      }\n    };\n    const events = (opts === null || opts === void 0 ? void 0 : opts.events) || {\n      state: \"presence_state\",\n      diff: \"presence_diff\"\n    };\n    this.channel._on(events.state, {}, (newState) => {\n      const {onJoin, onLeave, onSync} = this.caller;\n      this.joinRef = this.channel._joinRef();\n      this.state = RealtimePresence.syncState(this.state, newState, onJoin, onLeave);\n      this.pendingDiffs.forEach((diff) => {\n        this.state = RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave);\n      });\n      this.pendingDiffs = [];\n      onSync();\n    });\n    this.channel._on(events.diff, {}, (diff) => {\n      const {onJoin, onLeave, onSync} = this.caller;\n      if (this.inPendingSyncState()) {\n        this.pendingDiffs.push(diff);\n      } else {\n        this.state = RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave);\n        onSync();\n      }\n    });\n    this.onJoin((key, currentPresences, newPresences) => {\n      this.channel._trigger(\"presence\", {\n        event: \"join\",\n        key,\n        currentPresences,\n        newPresences\n      });\n    });\n    this.onLeave((key, currentPresences, leftPresences) => {\n      this.channel._trigger(\"presence\", {\n        event: \"leave\",\n        key,\n        currentPresences,\n        leftPresences\n      });\n    });\n    this.onSync(() => {\n      this.channel._trigger(\"presence\", {event: \"sync\"});\n    });\n  }\n  static syncState(currentState, newState, onJoin, onLeave) {\n    const state = this.cloneDeep(currentState);\n    const transformedState = this.transformState(newState);\n    const joins = {};\n    const leaves = {};\n    this.map(state, (key, presences) => {\n      if (!transformedState[key]) {\n        leaves[key] = presences;\n      }\n    });\n    this.map(transformedState, (key, newPresences) => {\n      const currentPresences = state[key];\n      if (currentPresences) {\n        const newPresenceRefs = newPresences.map((m) => m.presence_ref);\n        const curPresenceRefs = currentPresences.map((m) => m.presence_ref);\n        const joinedPresences = newPresences.filter((m) => curPresenceRefs.indexOf(m.presence_ref) < 0);\n        const leftPresences = currentPresences.filter((m) => newPresenceRefs.indexOf(m.presence_ref) < 0);\n        if (joinedPresences.length > 0) {\n          joins[key] = joinedPresences;\n        }\n        if (leftPresences.length > 0) {\n          leaves[key] = leftPresences;\n        }\n      } else {\n        joins[key] = newPresences;\n      }\n    });\n    return this.syncDiff(state, {joins, leaves}, onJoin, onLeave);\n  }\n  static syncDiff(state, diff, onJoin, onLeave) {\n    const {joins, leaves} = {\n      joins: this.transformState(diff.joins),\n      leaves: this.transformState(diff.leaves)\n    };\n    if (!onJoin) {\n      onJoin = () => {\n      };\n    }\n    if (!onLeave) {\n      onLeave = () => {\n      };\n    }\n    this.map(joins, (key, newPresences) => {\n      var _a;\n      const currentPresences = (_a = state[key]) !== null && _a !== void 0 ? _a : [];\n      state[key] = this.cloneDeep(newPresences);\n      if (currentPresences.length > 0) {\n        const joinedPresenceRefs = state[key].map((m) => m.presence_ref);\n        const curPresences = currentPresences.filter((m) => joinedPresenceRefs.indexOf(m.presence_ref) < 0);\n        state[key].unshift(...curPresences);\n      }\n      onJoin(key, currentPresences, newPresences);\n    });\n    this.map(leaves, (key, leftPresences) => {\n      let currentPresences = state[key];\n      if (!currentPresences)\n        return;\n      const presenceRefsToRemove = leftPresences.map((m) => m.presence_ref);\n      currentPresences = currentPresences.filter((m) => presenceRefsToRemove.indexOf(m.presence_ref) < 0);\n      state[key] = currentPresences;\n      onLeave(key, currentPresences, leftPresences);\n      if (currentPresences.length === 0)\n        delete state[key];\n    });\n    return state;\n  }\n  static map(obj, func) {\n    return Object.getOwnPropertyNames(obj).map((key) => func(key, obj[key]));\n  }\n  static transformState(state) {\n    state = this.cloneDeep(state);\n    return Object.getOwnPropertyNames(state).reduce((newState, key) => {\n      const presences = state[key];\n      if (\"metas\" in presences) {\n        newState[key] = presences.metas.map((presence) => {\n          presence[\"presence_ref\"] = presence[\"phx_ref\"];\n          delete presence[\"phx_ref\"];\n          delete presence[\"phx_ref_prev\"];\n          return presence;\n        });\n      } else {\n        newState[key] = presences;\n      }\n      return newState;\n    }, {});\n  }\n  static cloneDeep(obj) {\n    return JSON.parse(JSON.stringify(obj));\n  }\n  onJoin(callback) {\n    this.caller.onJoin = callback;\n  }\n  onLeave(callback) {\n    this.caller.onLeave = callback;\n  }\n  onSync(callback) {\n    this.caller.onSync = callback;\n  }\n  inPendingSyncState() {\n    return !this.joinRef || this.joinRef !== this.channel._joinRef();\n  }\n}\nvar PostgresTypes;\n(function(PostgresTypes2) {\n  PostgresTypes2[\"abstime\"] = \"abstime\";\n  PostgresTypes2[\"bool\"] = \"bool\";\n  PostgresTypes2[\"date\"] = \"date\";\n  PostgresTypes2[\"daterange\"] = \"daterange\";\n  PostgresTypes2[\"float4\"] = \"float4\";\n  PostgresTypes2[\"float8\"] = \"float8\";\n  PostgresTypes2[\"int2\"] = \"int2\";\n  PostgresTypes2[\"int4\"] = \"int4\";\n  PostgresTypes2[\"int4range\"] = \"int4range\";\n  PostgresTypes2[\"int8\"] = \"int8\";\n  PostgresTypes2[\"int8range\"] = \"int8range\";\n  PostgresTypes2[\"json\"] = \"json\";\n  PostgresTypes2[\"jsonb\"] = \"jsonb\";\n  PostgresTypes2[\"money\"] = \"money\";\n  PostgresTypes2[\"numeric\"] = \"numeric\";\n  PostgresTypes2[\"oid\"] = \"oid\";\n  PostgresTypes2[\"reltime\"] = \"reltime\";\n  PostgresTypes2[\"text\"] = \"text\";\n  PostgresTypes2[\"time\"] = \"time\";\n  PostgresTypes2[\"timestamp\"] = \"timestamp\";\n  PostgresTypes2[\"timestamptz\"] = \"timestamptz\";\n  PostgresTypes2[\"timetz\"] = \"timetz\";\n  PostgresTypes2[\"tsrange\"] = \"tsrange\";\n  PostgresTypes2[\"tstzrange\"] = \"tstzrange\";\n})(PostgresTypes || (PostgresTypes = {}));\nconst convertChangeData = (columns, record, options = {}) => {\n  var _a;\n  const skipTypes = (_a = options.skipTypes) !== null && _a !== void 0 ? _a : [];\n  return Object.keys(record).reduce((acc, rec_key) => {\n    acc[rec_key] = convertColumn(rec_key, columns, record, skipTypes);\n    return acc;\n  }, {});\n};\nconst convertColumn = (columnName, columns, record, skipTypes) => {\n  const column = columns.find((x) => x.name === columnName);\n  const colType = column === null || column === void 0 ? void 0 : column.type;\n  const value = record[columnName];\n  if (colType && !skipTypes.includes(colType)) {\n    return convertCell(colType, value);\n  }\n  return noop(value);\n};\nconst convertCell = (type, value) => {\n  if (type.charAt(0) === \"_\") {\n    const dataType = type.slice(1, type.length);\n    return toArray(value, dataType);\n  }\n  switch (type) {\n    case PostgresTypes.bool:\n      return toBoolean(value);\n    case PostgresTypes.float4:\n    case PostgresTypes.float8:\n    case PostgresTypes.int2:\n    case PostgresTypes.int4:\n    case PostgresTypes.int8:\n    case PostgresTypes.numeric:\n    case PostgresTypes.oid:\n      return toNumber(value);\n    case PostgresTypes.json:\n    case PostgresTypes.jsonb:\n      return toJson(value);\n    case PostgresTypes.timestamp:\n      return toTimestampString(value);\n    case PostgresTypes.abstime:\n    case PostgresTypes.date:\n    case PostgresTypes.daterange:\n    case PostgresTypes.int4range:\n    case PostgresTypes.int8range:\n    case PostgresTypes.money:\n    case PostgresTypes.reltime:\n    case PostgresTypes.text:\n    case PostgresTypes.time:\n    case PostgresTypes.timestamptz:\n    case PostgresTypes.timetz:\n    case PostgresTypes.tsrange:\n    case PostgresTypes.tstzrange:\n      return noop(value);\n    default:\n      return noop(value);\n  }\n};\nconst noop = (value) => {\n  return value;\n};\nconst toBoolean = (value) => {\n  switch (value) {\n    case \"t\":\n      return true;\n    case \"f\":\n      return false;\n    default:\n      return value;\n  }\n};\nconst toNumber = (value) => {\n  if (typeof value === \"string\") {\n    const parsedValue = parseFloat(value);\n    if (!Number.isNaN(parsedValue)) {\n      return parsedValue;\n    }\n  }\n  return value;\n};\nconst toJson = (value) => {\n  if (typeof value === \"string\") {\n    try {\n      return JSON.parse(value);\n    } catch (error) {\n      console.log(`JSON parse error: ${error}`);\n      return value;\n    }\n  }\n  return value;\n};\nconst toArray = (value, type) => {\n  if (typeof value !== \"string\") {\n    return value;\n  }\n  const lastIdx = value.length - 1;\n  const closeBrace = value[lastIdx];\n  const openBrace = value[0];\n  if (openBrace === \"{\" && closeBrace === \"}\") {\n    let arr;\n    const valTrim = value.slice(1, lastIdx);\n    try {\n      arr = JSON.parse(\"[\" + valTrim + \"]\");\n    } catch (_) {\n      arr = valTrim ? valTrim.split(\",\") : [];\n    }\n    return arr.map((val) => convertCell(type, val));\n  }\n  return value;\n};\nconst toTimestampString = (value) => {\n  if (typeof value === \"string\") {\n    return value.replace(\" \", \"T\");\n  }\n  return value;\n};\nvar __awaiter = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nvar REALTIME_POSTGRES_CHANGES_LISTEN_EVENT;\n(function(REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2) {\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"ALL\"] = \"*\";\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"INSERT\"] = \"INSERT\";\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"UPDATE\"] = \"UPDATE\";\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"DELETE\"] = \"DELETE\";\n})(REALTIME_POSTGRES_CHANGES_LISTEN_EVENT || (REALTIME_POSTGRES_CHANGES_LISTEN_EVENT = {}));\nvar REALTIME_LISTEN_TYPES;\n(function(REALTIME_LISTEN_TYPES2) {\n  REALTIME_LISTEN_TYPES2[\"BROADCAST\"] = \"broadcast\";\n  REALTIME_LISTEN_TYPES2[\"PRESENCE\"] = \"presence\";\n  REALTIME_LISTEN_TYPES2[\"POSTGRES_CHANGES\"] = \"postgres_changes\";\n})(REALTIME_LISTEN_TYPES || (REALTIME_LISTEN_TYPES = {}));\nvar REALTIME_SUBSCRIBE_STATES;\n(function(REALTIME_SUBSCRIBE_STATES2) {\n  REALTIME_SUBSCRIBE_STATES2[\"SUBSCRIBED\"] = \"SUBSCRIBED\";\n  REALTIME_SUBSCRIBE_STATES2[\"TIMED_OUT\"] = \"TIMED_OUT\";\n  REALTIME_SUBSCRIBE_STATES2[\"CLOSED\"] = \"CLOSED\";\n  REALTIME_SUBSCRIBE_STATES2[\"CHANNEL_ERROR\"] = \"CHANNEL_ERROR\";\n})(REALTIME_SUBSCRIBE_STATES || (REALTIME_SUBSCRIBE_STATES = {}));\nclass RealtimeChannel {\n  constructor(topic, params = {config: {}}, socket) {\n    this.topic = topic;\n    this.params = params;\n    this.socket = socket;\n    this.bindings = {};\n    this.state = CHANNEL_STATES.closed;\n    this.joinedOnce = false;\n    this.pushBuffer = [];\n    this.params.config = Object.assign({\n      broadcast: {ack: false, self: false},\n      presence: {key: \"\"}\n    }, params.config);\n    this.timeout = this.socket.timeout;\n    this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout);\n    this.rejoinTimer = new Timer(() => this._rejoinUntilConnected(), this.socket.reconnectAfterMs);\n    this.joinPush.receive(\"ok\", () => {\n      this.state = CHANNEL_STATES.joined;\n      this.rejoinTimer.reset();\n      this.pushBuffer.forEach((pushEvent) => pushEvent.send());\n      this.pushBuffer = [];\n    });\n    this._onClose(() => {\n      this.rejoinTimer.reset();\n      this.socket.log(\"channel\", `close ${this.topic} ${this._joinRef()}`);\n      this.state = CHANNEL_STATES.closed;\n      this.socket._remove(this);\n    });\n    this._onError((reason) => {\n      if (this._isLeaving() || this._isClosed()) {\n        return;\n      }\n      this.socket.log(\"channel\", `error ${this.topic}`, reason);\n      this.state = CHANNEL_STATES.errored;\n      this.rejoinTimer.scheduleTimeout();\n    });\n    this.joinPush.receive(\"timeout\", () => {\n      if (!this._isJoining()) {\n        return;\n      }\n      this.socket.log(\"channel\", `timeout ${this.topic}`, this.joinPush.timeout);\n      this.state = CHANNEL_STATES.errored;\n      this.rejoinTimer.scheduleTimeout();\n    });\n    this._on(CHANNEL_EVENTS.reply, {}, (payload, ref) => {\n      this._trigger(this._replyEventName(ref), payload);\n    });\n    this.presence = new RealtimePresence(this);\n  }\n  subscribe(callback, timeout = this.timeout) {\n    var _a, _b;\n    if (this.joinedOnce) {\n      throw `tried to subscribe multiple times. 'subscribe' can only be called a single time per channel instance`;\n    } else {\n      const {config: {broadcast, presence}} = this.params;\n      this._onError((e) => callback && callback(\"CHANNEL_ERROR\", e));\n      this._onClose(() => callback && callback(\"CLOSED\"));\n      const accessTokenPayload = {};\n      const config = {\n        broadcast,\n        presence,\n        postgres_changes: (_b = (_a = this.bindings.postgres_changes) === null || _a === void 0 ? void 0 : _a.map((r) => r.filter)) !== null && _b !== void 0 ? _b : []\n      };\n      if (this.socket.accessToken) {\n        accessTokenPayload.access_token = this.socket.accessToken;\n      }\n      this.updateJoinPayload(Object.assign({config}, accessTokenPayload));\n      this.joinedOnce = true;\n      this._rejoin(timeout);\n      this.joinPush.receive(\"ok\", ({postgres_changes: serverPostgresFilters}) => {\n        var _a2;\n        this.socket.accessToken && this.socket.setAuth(this.socket.accessToken);\n        if (serverPostgresFilters === void 0) {\n          callback && callback(\"SUBSCRIBED\");\n          return;\n        } else {\n          const clientPostgresBindings = this.bindings.postgres_changes;\n          const bindingsLen = (_a2 = clientPostgresBindings === null || clientPostgresBindings === void 0 ? void 0 : clientPostgresBindings.length) !== null && _a2 !== void 0 ? _a2 : 0;\n          const newPostgresBindings = [];\n          for (let i = 0; i < bindingsLen; i++) {\n            const clientPostgresBinding = clientPostgresBindings[i];\n            const {filter: {event, schema, table, filter}} = clientPostgresBinding;\n            const serverPostgresFilter = serverPostgresFilters && serverPostgresFilters[i];\n            if (serverPostgresFilter && serverPostgresFilter.event === event && serverPostgresFilter.schema === schema && serverPostgresFilter.table === table && serverPostgresFilter.filter === filter) {\n              newPostgresBindings.push(Object.assign(Object.assign({}, clientPostgresBinding), {id: serverPostgresFilter.id}));\n            } else {\n              this.unsubscribe();\n              callback && callback(\"CHANNEL_ERROR\", new Error(\"mismatch between server and client bindings for postgres changes\"));\n              return;\n            }\n          }\n          this.bindings.postgres_changes = newPostgresBindings;\n          callback && callback(\"SUBSCRIBED\");\n          return;\n        }\n      }).receive(\"error\", (error) => {\n        callback && callback(\"CHANNEL_ERROR\", new Error(JSON.stringify(Object.values(error).join(\", \") || \"error\")));\n        return;\n      }).receive(\"timeout\", () => {\n        callback && callback(\"TIMED_OUT\");\n        return;\n      });\n    }\n    return this;\n  }\n  presenceState() {\n    return this.presence.state;\n  }\n  track(payload, opts = {}) {\n    return __awaiter(this, void 0, void 0, function* () {\n      return yield this.send({\n        type: \"presence\",\n        event: \"track\",\n        payload\n      }, opts.timeout || this.timeout);\n    });\n  }\n  untrack(opts = {}) {\n    return __awaiter(this, void 0, void 0, function* () {\n      return yield this.send({\n        type: \"presence\",\n        event: \"untrack\"\n      }, opts);\n    });\n  }\n  on(type, filter, callback) {\n    return this._on(type, filter, callback);\n  }\n  send(payload, opts = {}) {\n    return new Promise((resolve) => {\n      var _a, _b, _c;\n      const push = this._push(payload.type, payload, opts.timeout || this.timeout);\n      if (push.rateLimited) {\n        resolve(\"rate limited\");\n      }\n      if (payload.type === \"broadcast\" && !((_c = (_b = (_a = this.params) === null || _a === void 0 ? void 0 : _a.config) === null || _b === void 0 ? void 0 : _b.broadcast) === null || _c === void 0 ? void 0 : _c.ack)) {\n        resolve(\"ok\");\n      }\n      push.receive(\"ok\", () => resolve(\"ok\"));\n      push.receive(\"timeout\", () => resolve(\"timed out\"));\n    });\n  }\n  updateJoinPayload(payload) {\n    this.joinPush.updatePayload(payload);\n  }\n  unsubscribe(timeout = this.timeout) {\n    this.state = CHANNEL_STATES.leaving;\n    const onClose = () => {\n      this.socket.log(\"channel\", `leave ${this.topic}`);\n      this._trigger(CHANNEL_EVENTS.close, \"leave\", this._joinRef());\n    };\n    this.rejoinTimer.reset();\n    this.joinPush.destroy();\n    return new Promise((resolve) => {\n      const leavePush = new Push(this, CHANNEL_EVENTS.leave, {}, timeout);\n      leavePush.receive(\"ok\", () => {\n        onClose();\n        resolve(\"ok\");\n      }).receive(\"timeout\", () => {\n        onClose();\n        resolve(\"timed out\");\n      }).receive(\"error\", () => {\n        resolve(\"error\");\n      });\n      leavePush.send();\n      if (!this._canPush()) {\n        leavePush.trigger(\"ok\", {});\n      }\n    });\n  }\n  _push(event, payload, timeout = this.timeout) {\n    if (!this.joinedOnce) {\n      throw `tried to push '${event}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;\n    }\n    let pushEvent = new Push(this, event, payload, timeout);\n    if (this._canPush()) {\n      pushEvent.send();\n    } else {\n      pushEvent.startTimeout();\n      this.pushBuffer.push(pushEvent);\n    }\n    return pushEvent;\n  }\n  _onMessage(_event, payload, _ref) {\n    return payload;\n  }\n  _isMember(topic) {\n    return this.topic === topic;\n  }\n  _joinRef() {\n    return this.joinPush.ref;\n  }\n  _trigger(type, payload, ref) {\n    var _a, _b;\n    const typeLower = type.toLocaleLowerCase();\n    const {close, error, leave, join} = CHANNEL_EVENTS;\n    const events = [close, error, leave, join];\n    if (ref && events.indexOf(typeLower) >= 0 && ref !== this._joinRef()) {\n      return;\n    }\n    let handledPayload = this._onMessage(typeLower, payload, ref);\n    if (payload && !handledPayload) {\n      throw \"channel onMessage callbacks must return the payload, modified or unmodified\";\n    }\n    if ([\"insert\", \"update\", \"delete\"].includes(typeLower)) {\n      (_a = this.bindings.postgres_changes) === null || _a === void 0 ? void 0 : _a.filter((bind) => {\n        var _a2, _b2, _c;\n        return ((_a2 = bind.filter) === null || _a2 === void 0 ? void 0 : _a2.event) === \"*\" || ((_c = (_b2 = bind.filter) === null || _b2 === void 0 ? void 0 : _b2.event) === null || _c === void 0 ? void 0 : _c.toLocaleLowerCase()) === typeLower;\n      }).map((bind) => bind.callback(handledPayload, ref));\n    } else {\n      (_b = this.bindings[typeLower]) === null || _b === void 0 ? void 0 : _b.filter((bind) => {\n        var _a2, _b2, _c, _d, _e, _f;\n        if ([\"broadcast\", \"presence\", \"postgres_changes\"].includes(typeLower)) {\n          if (\"id\" in bind) {\n            const bindId = bind.id;\n            const bindEvent = (_a2 = bind.filter) === null || _a2 === void 0 ? void 0 : _a2.event;\n            return bindId && ((_b2 = payload.ids) === null || _b2 === void 0 ? void 0 : _b2.includes(bindId)) && (bindEvent === \"*\" || (bindEvent === null || bindEvent === void 0 ? void 0 : bindEvent.toLocaleLowerCase()) === ((_c = payload.data) === null || _c === void 0 ? void 0 : _c.type.toLocaleLowerCase()));\n          } else {\n            const bindEvent = (_e = (_d = bind === null || bind === void 0 ? void 0 : bind.filter) === null || _d === void 0 ? void 0 : _d.event) === null || _e === void 0 ? void 0 : _e.toLocaleLowerCase();\n            return bindEvent === \"*\" || bindEvent === ((_f = payload === null || payload === void 0 ? void 0 : payload.event) === null || _f === void 0 ? void 0 : _f.toLocaleLowerCase());\n          }\n        } else {\n          return bind.type.toLocaleLowerCase() === typeLower;\n        }\n      }).map((bind) => {\n        if (typeof handledPayload === \"object\" && \"ids\" in handledPayload) {\n          const postgresChanges = handledPayload.data;\n          const {schema, table, commit_timestamp, type: type2, errors} = postgresChanges;\n          const enrichedPayload = {\n            schema,\n            table,\n            commit_timestamp,\n            eventType: type2,\n            new: {},\n            old: {},\n            errors\n          };\n          handledPayload = Object.assign(Object.assign({}, enrichedPayload), this._getPayloadRecords(postgresChanges));\n        }\n        bind.callback(handledPayload, ref);\n      });\n    }\n  }\n  _isClosed() {\n    return this.state === CHANNEL_STATES.closed;\n  }\n  _isJoined() {\n    return this.state === CHANNEL_STATES.joined;\n  }\n  _isJoining() {\n    return this.state === CHANNEL_STATES.joining;\n  }\n  _isLeaving() {\n    return this.state === CHANNEL_STATES.leaving;\n  }\n  _replyEventName(ref) {\n    return `chan_reply_${ref}`;\n  }\n  _on(type, filter, callback) {\n    const typeLower = type.toLocaleLowerCase();\n    const binding = {\n      type: typeLower,\n      filter,\n      callback\n    };\n    if (this.bindings[typeLower]) {\n      this.bindings[typeLower].push(binding);\n    } else {\n      this.bindings[typeLower] = [binding];\n    }\n    return this;\n  }\n  _off(type, filter) {\n    const typeLower = type.toLocaleLowerCase();\n    this.bindings[typeLower] = this.bindings[typeLower].filter((bind) => {\n      var _a;\n      return !(((_a = bind.type) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase()) === typeLower && RealtimeChannel.isEqual(bind.filter, filter));\n    });\n    return this;\n  }\n  static isEqual(obj1, obj2) {\n    if (Object.keys(obj1).length !== Object.keys(obj2).length) {\n      return false;\n    }\n    for (const k in obj1) {\n      if (obj1[k] !== obj2[k]) {\n        return false;\n      }\n    }\n    return true;\n  }\n  _rejoinUntilConnected() {\n    this.rejoinTimer.scheduleTimeout();\n    if (this.socket.isConnected()) {\n      this._rejoin();\n    }\n  }\n  _onClose(callback) {\n    this._on(CHANNEL_EVENTS.close, {}, callback);\n  }\n  _onError(callback) {\n    this._on(CHANNEL_EVENTS.error, {}, (reason) => callback(reason));\n  }\n  _canPush() {\n    return this.socket.isConnected() && this._isJoined();\n  }\n  _rejoin(timeout = this.timeout) {\n    if (this._isLeaving()) {\n      return;\n    }\n    this.socket._leaveOpenTopic(this.topic);\n    this.state = CHANNEL_STATES.joining;\n    this.joinPush.resend(timeout);\n  }\n  _getPayloadRecords(payload) {\n    const records = {\n      new: {},\n      old: {}\n    };\n    if (payload.type === \"INSERT\" || payload.type === \"UPDATE\") {\n      records.new = convertChangeData(payload.columns, payload.record);\n    }\n    if (payload.type === \"UPDATE\" || payload.type === \"DELETE\") {\n      records.old = convertChangeData(payload.columns, payload.old_record);\n    }\n    return records;\n  }\n}\nvar __awaiter$1 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst noop$1 = () => {\n};\nclass RealtimeClient {\n  constructor(endPoint, options) {\n    var _a;\n    this.accessToken = null;\n    this.channels = [];\n    this.endPoint = \"\";\n    this.headers = DEFAULT_HEADERS;\n    this.params = {};\n    this.timeout = DEFAULT_TIMEOUT;\n    this.transport = w3cwebsocket;\n    this.heartbeatIntervalMs = 3e4;\n    this.heartbeatTimer = void 0;\n    this.pendingHeartbeatRef = null;\n    this.ref = 0;\n    this.logger = noop$1;\n    this.conn = null;\n    this.sendBuffer = [];\n    this.serializer = new Serializer();\n    this.stateChangeCallbacks = {\n      open: [],\n      close: [],\n      error: [],\n      message: []\n    };\n    this.eventsPerSecondLimitMs = 100;\n    this.inThrottle = false;\n    this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`;\n    if (options === null || options === void 0 ? void 0 : options.params)\n      this.params = options.params;\n    if (options === null || options === void 0 ? void 0 : options.headers)\n      this.headers = Object.assign(Object.assign({}, this.headers), options.headers);\n    if (options === null || options === void 0 ? void 0 : options.timeout)\n      this.timeout = options.timeout;\n    if (options === null || options === void 0 ? void 0 : options.logger)\n      this.logger = options.logger;\n    if (options === null || options === void 0 ? void 0 : options.transport)\n      this.transport = options.transport;\n    if (options === null || options === void 0 ? void 0 : options.heartbeatIntervalMs)\n      this.heartbeatIntervalMs = options.heartbeatIntervalMs;\n    const eventsPerSecond = (_a = options === null || options === void 0 ? void 0 : options.params) === null || _a === void 0 ? void 0 : _a.eventsPerSecond;\n    if (eventsPerSecond)\n      this.eventsPerSecondLimitMs = Math.floor(1e3 / eventsPerSecond);\n    this.reconnectAfterMs = (options === null || options === void 0 ? void 0 : options.reconnectAfterMs) ? options.reconnectAfterMs : (tries) => {\n      return [1e3, 2e3, 5e3, 1e4][tries - 1] || 1e4;\n    };\n    this.encode = (options === null || options === void 0 ? void 0 : options.encode) ? options.encode : (payload, callback) => {\n      return callback(JSON.stringify(payload));\n    };\n    this.decode = (options === null || options === void 0 ? void 0 : options.decode) ? options.decode : this.serializer.decode.bind(this.serializer);\n    this.reconnectTimer = new Timer(() => __awaiter$1(this, void 0, void 0, function* () {\n      this.disconnect();\n      this.connect();\n    }), this.reconnectAfterMs);\n  }\n  connect() {\n    if (this.conn) {\n      return;\n    }\n    this.conn = new this.transport(this._endPointURL(), [], null, this.headers);\n    if (this.conn) {\n      this.conn.binaryType = \"arraybuffer\";\n      this.conn.onopen = () => this._onConnOpen();\n      this.conn.onerror = (error) => this._onConnError(error);\n      this.conn.onmessage = (event) => this._onConnMessage(event);\n      this.conn.onclose = (event) => this._onConnClose(event);\n    }\n  }\n  disconnect(code, reason) {\n    if (this.conn) {\n      this.conn.onclose = function() {\n      };\n      if (code) {\n        this.conn.close(code, reason !== null && reason !== void 0 ? reason : \"\");\n      } else {\n        this.conn.close();\n      }\n      this.conn = null;\n      this.heartbeatTimer && clearInterval(this.heartbeatTimer);\n      this.reconnectTimer.reset();\n    }\n  }\n  getChannels() {\n    return this.channels;\n  }\n  removeChannel(channel) {\n    return channel.unsubscribe().then((status) => {\n      if (this.channels.length === 0) {\n        this.disconnect();\n      }\n      return status;\n    });\n  }\n  removeAllChannels() {\n    return Promise.all(this.channels.map((channel) => channel.unsubscribe())).then((values) => {\n      this.disconnect();\n      return values;\n    });\n  }\n  log(kind, msg, data) {\n    this.logger(kind, msg, data);\n  }\n  connectionState() {\n    switch (this.conn && this.conn.readyState) {\n      case SOCKET_STATES.connecting:\n        return CONNECTION_STATE.Connecting;\n      case SOCKET_STATES.open:\n        return CONNECTION_STATE.Open;\n      case SOCKET_STATES.closing:\n        return CONNECTION_STATE.Closing;\n      default:\n        return CONNECTION_STATE.Closed;\n    }\n  }\n  isConnected() {\n    return this.connectionState() === CONNECTION_STATE.Open;\n  }\n  channel(topic, params = {config: {}}) {\n    if (!this.isConnected()) {\n      this.connect();\n    }\n    const chan = new RealtimeChannel(`realtime:${topic}`, params, this);\n    this.channels.push(chan);\n    return chan;\n  }\n  push(data) {\n    const {topic, event, payload, ref} = data;\n    let callback = () => {\n      this.encode(data, (result) => {\n        var _a;\n        (_a = this.conn) === null || _a === void 0 ? void 0 : _a.send(result);\n      });\n    };\n    this.log(\"push\", `${topic} ${event} (${ref})`, payload);\n    if (this.isConnected()) {\n      if ([\"broadcast\", \"presence\", \"postgres_changes\"].includes(event)) {\n        const isThrottled = this._throttle(callback)();\n        if (isThrottled) {\n          return \"rate limited\";\n        }\n      } else {\n        callback();\n      }\n    } else {\n      this.sendBuffer.push(callback);\n    }\n  }\n  setAuth(token) {\n    this.accessToken = token;\n    this.channels.forEach((channel) => {\n      token && channel.updateJoinPayload({access_token: token});\n      if (channel.joinedOnce && channel._isJoined()) {\n        channel._push(CHANNEL_EVENTS.access_token, {access_token: token});\n      }\n    });\n  }\n  _makeRef() {\n    let newRef = this.ref + 1;\n    if (newRef === this.ref) {\n      this.ref = 0;\n    } else {\n      this.ref = newRef;\n    }\n    return this.ref.toString();\n  }\n  _leaveOpenTopic(topic) {\n    let dupChannel = this.channels.find((c) => c.topic === topic && (c._isJoined() || c._isJoining()));\n    if (dupChannel) {\n      this.log(\"transport\", `leaving duplicate topic \"${topic}\"`);\n      dupChannel.unsubscribe();\n    }\n  }\n  _remove(channel) {\n    this.channels = this.channels.filter((c) => c._joinRef() !== channel._joinRef());\n  }\n  _endPointURL() {\n    return this._appendParams(this.endPoint, Object.assign({}, this.params, {vsn: VSN}));\n  }\n  _onConnMessage(rawMessage) {\n    this.decode(rawMessage.data, (msg) => {\n      let {topic, event, payload, ref} = msg;\n      if (ref && ref === this.pendingHeartbeatRef || event === (payload === null || payload === void 0 ? void 0 : payload.type)) {\n        this.pendingHeartbeatRef = null;\n      }\n      this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload);\n      this.channels.filter((channel) => channel._isMember(topic)).forEach((channel) => channel._trigger(event, payload, ref));\n      this.stateChangeCallbacks.message.forEach((callback) => callback(msg));\n    });\n  }\n  _onConnOpen() {\n    this.log(\"transport\", `connected to ${this._endPointURL()}`);\n    this._flushSendBuffer();\n    this.reconnectTimer.reset();\n    this.heartbeatTimer && clearInterval(this.heartbeatTimer);\n    this.heartbeatTimer = setInterval(() => this._sendHeartbeat(), this.heartbeatIntervalMs);\n    this.stateChangeCallbacks.open.forEach((callback) => callback());\n  }\n  _onConnClose(event) {\n    this.log(\"transport\", \"close\", event);\n    this._triggerChanError();\n    this.heartbeatTimer && clearInterval(this.heartbeatTimer);\n    this.reconnectTimer.scheduleTimeout();\n    this.stateChangeCallbacks.close.forEach((callback) => callback(event));\n  }\n  _onConnError(error) {\n    this.log(\"transport\", error.message);\n    this._triggerChanError();\n    this.stateChangeCallbacks.error.forEach((callback) => callback(error));\n  }\n  _triggerChanError() {\n    this.channels.forEach((channel) => channel._trigger(CHANNEL_EVENTS.error));\n  }\n  _appendParams(url, params) {\n    if (Object.keys(params).length === 0) {\n      return url;\n    }\n    const prefix = url.match(/\\?/) ? \"&\" : \"?\";\n    const query = new URLSearchParams(params);\n    return `${url}${prefix}${query}`;\n  }\n  _flushSendBuffer() {\n    if (this.isConnected() && this.sendBuffer.length > 0) {\n      this.sendBuffer.forEach((callback) => callback());\n      this.sendBuffer = [];\n    }\n  }\n  _sendHeartbeat() {\n    var _a;\n    if (!this.isConnected()) {\n      return;\n    }\n    if (this.pendingHeartbeatRef) {\n      this.pendingHeartbeatRef = null;\n      this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\");\n      (_a = this.conn) === null || _a === void 0 ? void 0 : _a.close(WS_CLOSE_NORMAL, \"hearbeat timeout\");\n      return;\n    }\n    this.pendingHeartbeatRef = this._makeRef();\n    this.push({\n      topic: \"phoenix\",\n      event: \"heartbeat\",\n      payload: {},\n      ref: this.pendingHeartbeatRef\n    });\n    this.setAuth(this.accessToken);\n  }\n  _throttle(callback, eventsPerSecondLimitMs = this.eventsPerSecondLimitMs) {\n    return () => {\n      if (this.inThrottle)\n        return true;\n      callback();\n      if (eventsPerSecondLimitMs > 0) {\n        this.inThrottle = true;\n        setTimeout(() => {\n          this.inThrottle = false;\n        }, eventsPerSecondLimitMs);\n      }\n      return false;\n    };\n  }\n}\nexport {REALTIME_LISTEN_TYPES, REALTIME_POSTGRES_CHANGES_LISTEN_EVENT, REALTIME_PRESENCE_LISTEN_EVENTS, REALTIME_SUBSCRIBE_STATES, RealtimeChannel, RealtimeClient, RealtimePresence};\nexport default null;\n", "class StorageError extends Error {\n  constructor(message) {\n    super(message);\n    this.__isStorageError = true;\n    this.name = \"StorageError\";\n  }\n}\nfunction isStorageError(error) {\n  return typeof error === \"object\" && error !== null && \"__isStorageError\" in error;\n}\nclass StorageApiError extends StorageError {\n  constructor(message, status) {\n    super(message);\n    this.name = \"StorageApiError\";\n    this.status = status;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status\n    };\n  }\n}\nclass StorageUnknownError extends StorageError {\n  constructor(message, originalError) {\n    super(message);\n    this.name = \"StorageUnknownError\";\n    this.originalError = originalError;\n  }\n}\nvar __awaiter = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst resolveFetch = (customFetch) => {\n  let _fetch;\n  if (customFetch) {\n    _fetch = customFetch;\n  } else if (typeof fetch === \"undefined\") {\n    _fetch = (...args) => __awaiter(void 0, void 0, void 0, function* () {\n      return yield (yield import(\"/-/cross-fetch@v3.1.5-rZpYflwCvsXnXC1DUbBX/dist=es2019,mode=imports/optimized/cross-fetch.js\")).fetch(...args);\n    });\n  } else {\n    _fetch = fetch;\n  }\n  return (...args) => _fetch(...args);\n};\nconst resolveResponse = () => __awaiter(void 0, void 0, void 0, function* () {\n  if (typeof Response === \"undefined\") {\n    return (yield import(\"/-/cross-fetch@v3.1.5-rZpYflwCvsXnXC1DUbBX/dist=es2019,mode=imports/optimized/cross-fetch.js\")).Response;\n  }\n  return Response;\n});\nvar __awaiter$1 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst _getErrorMessage = (err) => err.msg || err.message || err.error_description || err.error || JSON.stringify(err);\nconst handleError = (error, reject) => __awaiter$1(void 0, void 0, void 0, function* () {\n  const Res = yield resolveResponse();\n  if (error instanceof Res) {\n    error.json().then((err) => {\n      reject(new StorageApiError(_getErrorMessage(err), error.status || 500));\n    }).catch((err) => {\n      reject(new StorageUnknownError(_getErrorMessage(err), err));\n    });\n  } else {\n    reject(new StorageUnknownError(_getErrorMessage(error), error));\n  }\n});\nconst _getRequestParams = (method, options, parameters, body) => {\n  const params = {method, headers: (options === null || options === void 0 ? void 0 : options.headers) || {}};\n  if (method === \"GET\") {\n    return params;\n  }\n  params.headers = Object.assign({\"Content-Type\": \"application/json\"}, options === null || options === void 0 ? void 0 : options.headers);\n  params.body = JSON.stringify(body);\n  return Object.assign(Object.assign({}, params), parameters);\n};\nfunction _handleRequest(fetcher, method, url, options, parameters, body) {\n  return __awaiter$1(this, void 0, void 0, function* () {\n    return new Promise((resolve, reject) => {\n      fetcher(url, _getRequestParams(method, options, parameters, body)).then((result) => {\n        if (!result.ok)\n          throw result;\n        if (options === null || options === void 0 ? void 0 : options.noResolveJson)\n          return result;\n        return result.json();\n      }).then((data) => resolve(data)).catch((error) => handleError(error, reject));\n    });\n  });\n}\nfunction get(fetcher, url, options, parameters) {\n  return __awaiter$1(this, void 0, void 0, function* () {\n    return _handleRequest(fetcher, \"GET\", url, options, parameters);\n  });\n}\nfunction post(fetcher, url, body, options, parameters) {\n  return __awaiter$1(this, void 0, void 0, function* () {\n    return _handleRequest(fetcher, \"POST\", url, options, parameters, body);\n  });\n}\nfunction put(fetcher, url, body, options, parameters) {\n  return __awaiter$1(this, void 0, void 0, function* () {\n    return _handleRequest(fetcher, \"PUT\", url, options, parameters, body);\n  });\n}\nfunction remove(fetcher, url, body, options, parameters) {\n  return __awaiter$1(this, void 0, void 0, function* () {\n    return _handleRequest(fetcher, \"DELETE\", url, options, parameters, body);\n  });\n}\nvar __awaiter$2 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst DEFAULT_SEARCH_OPTIONS = {\n  limit: 100,\n  offset: 0,\n  sortBy: {\n    column: \"name\",\n    order: \"asc\"\n  }\n};\nconst DEFAULT_FILE_OPTIONS = {\n  cacheControl: \"3600\",\n  contentType: \"text/plain;charset=UTF-8\",\n  upsert: false\n};\nclass StorageFileApi {\n  constructor(url, headers = {}, bucketId, fetch2) {\n    this.url = url;\n    this.headers = headers;\n    this.bucketId = bucketId;\n    this.fetch = resolveFetch(fetch2);\n  }\n  uploadOrUpdate(method, path, fileBody, fileOptions) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        let body;\n        const options = Object.assign(Object.assign({}, DEFAULT_FILE_OPTIONS), fileOptions);\n        const headers = Object.assign(Object.assign({}, this.headers), method === \"POST\" && {\"x-upsert\": String(options.upsert)});\n        if (typeof Blob !== \"undefined\" && fileBody instanceof Blob) {\n          body = new FormData();\n          body.append(\"cacheControl\", options.cacheControl);\n          body.append(\"\", fileBody);\n        } else if (typeof FormData !== \"undefined\" && fileBody instanceof FormData) {\n          body = fileBody;\n          body.append(\"cacheControl\", options.cacheControl);\n        } else {\n          body = fileBody;\n          headers[\"cache-control\"] = `max-age=${options.cacheControl}`;\n          headers[\"content-type\"] = options.contentType;\n        }\n        const cleanPath = this._removeEmptyFolders(path);\n        const _path = this._getFinalPath(cleanPath);\n        const res = yield this.fetch(`${this.url}/object/${_path}`, {\n          method,\n          body,\n          headers\n        });\n        if (res.ok) {\n          return {\n            data: {path: cleanPath},\n            error: null\n          };\n        } else {\n          const error = yield res.json();\n          return {data: null, error};\n        }\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  upload(path, fileBody, fileOptions) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      return this.uploadOrUpdate(\"POST\", path, fileBody, fileOptions);\n    });\n  }\n  update(path, fileBody, fileOptions) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      return this.uploadOrUpdate(\"PUT\", path, fileBody, fileOptions);\n    });\n  }\n  move(fromPath, toPath) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/object/move`, {bucketId: this.bucketId, sourceKey: fromPath, destinationKey: toPath}, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  copy(fromPath, toPath) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/object/copy`, {bucketId: this.bucketId, sourceKey: fromPath, destinationKey: toPath}, {headers: this.headers});\n        return {data: {path: data.Key}, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  createSignedUrl(path, expiresIn, options) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        let _path = this._getFinalPath(path);\n        let data = yield post(this.fetch, `${this.url}/object/sign/${_path}`, Object.assign({expiresIn}, (options === null || options === void 0 ? void 0 : options.transform) ? {transform: options.transform} : {}), {headers: this.headers});\n        const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `&download=${options.download === true ? \"\" : options.download}` : \"\";\n        const signedUrl = encodeURI(`${this.url}${data.signedURL}${downloadQueryParam}`);\n        data = {signedUrl};\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  createSignedUrls(paths, expiresIn, options) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/object/sign/${this.bucketId}`, {expiresIn, paths}, {headers: this.headers});\n        const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `&download=${options.download === true ? \"\" : options.download}` : \"\";\n        return {\n          data: data.map((datum) => Object.assign(Object.assign({}, datum), {signedUrl: datum.signedURL ? encodeURI(`${this.url}${datum.signedURL}${downloadQueryParam}`) : null})),\n          error: null\n        };\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  download(path, options) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      const wantsTransformation = typeof (options === null || options === void 0 ? void 0 : options.transform) !== \"undefined\";\n      const renderPath = wantsTransformation ? \"render/image/authenticated\" : \"object\";\n      const transformationQuery = this.transformOptsToQueryString((options === null || options === void 0 ? void 0 : options.transform) || {});\n      const queryString = transformationQuery ? `?${transformationQuery}` : \"\";\n      try {\n        const _path = this._getFinalPath(path);\n        const res = yield get(this.fetch, `${this.url}/${renderPath}/${_path}${queryString}`, {\n          headers: this.headers,\n          noResolveJson: true\n        });\n        const data = yield res.blob();\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  getPublicUrl(path, options) {\n    const _path = this._getFinalPath(path);\n    const _queryString = [];\n    const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `download=${options.download === true ? \"\" : options.download}` : \"\";\n    if (downloadQueryParam !== \"\") {\n      _queryString.push(downloadQueryParam);\n    }\n    const wantsTransformation = typeof (options === null || options === void 0 ? void 0 : options.transform) !== \"undefined\";\n    const renderPath = wantsTransformation ? \"render/image\" : \"object\";\n    const transformationQuery = this.transformOptsToQueryString((options === null || options === void 0 ? void 0 : options.transform) || {});\n    if (transformationQuery !== \"\") {\n      _queryString.push(transformationQuery);\n    }\n    let queryString = _queryString.join(\"&\");\n    if (queryString !== \"\") {\n      queryString = `?${queryString}`;\n    }\n    return {\n      data: {publicUrl: encodeURI(`${this.url}/${renderPath}/public/${_path}${queryString}`)}\n    };\n  }\n  remove(paths) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const data = yield remove(this.fetch, `${this.url}/object/${this.bucketId}`, {prefixes: paths}, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  list(path, options, parameters) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const body = Object.assign(Object.assign(Object.assign({}, DEFAULT_SEARCH_OPTIONS), options), {prefix: path || \"\"});\n        const data = yield post(this.fetch, `${this.url}/object/list/${this.bucketId}`, body, {headers: this.headers}, parameters);\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _getFinalPath(path) {\n    return `${this.bucketId}/${path}`;\n  }\n  _removeEmptyFolders(path) {\n    return path.replace(/^\\/|\\/$/g, \"\").replace(/\\/+/g, \"/\");\n  }\n  transformOptsToQueryString(transform) {\n    const params = [];\n    if (transform.width) {\n      params.push(`width=${transform.width}`);\n    }\n    if (transform.height) {\n      params.push(`height=${transform.height}`);\n    }\n    if (transform.resize) {\n      params.push(`resize=${transform.resize}`);\n    }\n    if (transform.format) {\n      params.push(`format=${transform.format}`);\n    }\n    if (transform.quality) {\n      params.push(`quality=${transform.quality}`);\n    }\n    return params.join(\"&\");\n  }\n}\nconst version = \"2.3.1\";\nconst DEFAULT_HEADERS = {\"X-Client-Info\": `storage-js/${version}`};\nvar __awaiter$3 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nclass StorageBucketApi {\n  constructor(url, headers = {}, fetch2) {\n    this.url = url;\n    this.headers = Object.assign(Object.assign({}, DEFAULT_HEADERS), headers);\n    this.fetch = resolveFetch(fetch2);\n  }\n  listBuckets() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const data = yield get(this.fetch, `${this.url}/bucket`, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  getBucket(id) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const data = yield get(this.fetch, `${this.url}/bucket/${id}`, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  createBucket(id, options = {public: false}) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/bucket`, {id, name: id, public: options.public}, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  updateBucket(id, options) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const data = yield put(this.fetch, `${this.url}/bucket/${id}`, {id, name: id, public: options.public}, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  emptyBucket(id) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/bucket/${id}/empty`, {}, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  deleteBucket(id) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const data = yield remove(this.fetch, `${this.url}/bucket/${id}`, {}, {headers: this.headers});\n        return {data, error: null};\n      } catch (error) {\n        if (isStorageError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n}\nclass StorageClient extends StorageBucketApi {\n  constructor(url, headers = {}, fetch2) {\n    super(url, headers, fetch2);\n  }\n  from(id) {\n    return new StorageFileApi(this.url, this.headers, id, this.fetch);\n  }\n}\nexport {StorageApiError, StorageClient, StorageError, StorageUnknownError, isStorageError};\nexport default null;\n", "var __awaiter = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nfunction expiresAt(expiresIn) {\n  const timeNow = Math.round(Date.now() / 1e3);\n  return timeNow + expiresIn;\n}\nfunction uuid() {\n  return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\n    const r = Math.random() * 16 | 0, v = c == \"x\" ? r : r & 3 | 8;\n    return v.toString(16);\n  });\n}\nconst isBrowser = () => typeof document !== \"undefined\";\nconst localStorageWriteTests = {\n  tested: false,\n  writable: false\n};\nconst supportsLocalStorage = () => {\n  if (!isBrowser()) {\n    return false;\n  }\n  try {\n    if (typeof globalThis.localStorage !== \"object\") {\n      return false;\n    }\n  } catch (e) {\n    return false;\n  }\n  if (localStorageWriteTests.tested) {\n    return localStorageWriteTests.writable;\n  }\n  const randomKey = `lswt-${Math.random()}${Math.random()}`;\n  try {\n    globalThis.localStorage.setItem(randomKey, randomKey);\n    globalThis.localStorage.removeItem(randomKey);\n    localStorageWriteTests.tested = true;\n    localStorageWriteTests.writable = true;\n  } catch (e) {\n    localStorageWriteTests.tested = true;\n    localStorageWriteTests.writable = false;\n  }\n  return localStorageWriteTests.writable;\n};\nfunction getParameterByName(name, url) {\n  var _a;\n  if (!url)\n    url = ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.href) || \"\";\n  name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\n  const regex = new RegExp(\"[?&#]\" + name + \"(=([^&#]*)|&|#|$)\"), results = regex.exec(url);\n  if (!results)\n    return null;\n  if (!results[2])\n    return \"\";\n  return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n}\nconst resolveFetch = (customFetch) => {\n  let _fetch;\n  if (customFetch) {\n    _fetch = customFetch;\n  } else if (typeof fetch === \"undefined\") {\n    _fetch = (...args) => __awaiter(void 0, void 0, void 0, function* () {\n      return yield (yield import(\"/-/cross-fetch@v3.1.5-rZpYflwCvsXnXC1DUbBX/dist=es2019,mode=imports/optimized/cross-fetch.js\")).fetch(...args);\n    });\n  } else {\n    _fetch = fetch;\n  }\n  return (...args) => _fetch(...args);\n};\nconst looksLikeFetchResponse = (maybeResponse) => {\n  return typeof maybeResponse === \"object\" && maybeResponse !== null && \"status\" in maybeResponse && \"ok\" in maybeResponse && \"json\" in maybeResponse && typeof maybeResponse.json === \"function\";\n};\nconst setItemAsync = (storage, key, data) => __awaiter(void 0, void 0, void 0, function* () {\n  yield storage.setItem(key, JSON.stringify(data));\n});\nconst getItemAsync = (storage, key) => __awaiter(void 0, void 0, void 0, function* () {\n  const value = yield storage.getItem(key);\n  if (!value) {\n    return null;\n  }\n  try {\n    return JSON.parse(value);\n  } catch (_a) {\n    return value;\n  }\n});\nconst removeItemAsync = (storage, key) => __awaiter(void 0, void 0, void 0, function* () {\n  yield storage.removeItem(key);\n});\nfunction decodeBase64URL(value) {\n  const key = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n  let base64 = \"\";\n  let chr1, chr2, chr3;\n  let enc1, enc2, enc3, enc4;\n  let i = 0;\n  value = value.replace(\"-\", \"+\").replace(\"_\", \"/\");\n  while (i < value.length) {\n    enc1 = key.indexOf(value.charAt(i++));\n    enc2 = key.indexOf(value.charAt(i++));\n    enc3 = key.indexOf(value.charAt(i++));\n    enc4 = key.indexOf(value.charAt(i++));\n    chr1 = enc1 << 2 | enc2 >> 4;\n    chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n    chr3 = (enc3 & 3) << 6 | enc4;\n    base64 = base64 + String.fromCharCode(chr1);\n    if (enc3 != 64 && chr2 != 0) {\n      base64 = base64 + String.fromCharCode(chr2);\n    }\n    if (enc4 != 64 && chr3 != 0) {\n      base64 = base64 + String.fromCharCode(chr3);\n    }\n  }\n  return base64;\n}\nclass Deferred {\n  constructor() {\n    this.promise = new Deferred.promiseConstructor((res, rej) => {\n      this.resolve = res;\n      this.reject = rej;\n    });\n  }\n}\nDeferred.promiseConstructor = Promise;\nfunction decodeJWTPayload(token) {\n  const base64UrlRegex = /^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}=?$|[a-z0-9_-]{2}(==)?$)$/i;\n  const parts = token.split(\".\");\n  if (parts.length !== 3) {\n    throw new Error(\"JWT is not valid: not a JWT structure\");\n  }\n  if (!base64UrlRegex.test(parts[1])) {\n    throw new Error(\"JWT is not valid: payload is not in base64url format\");\n  }\n  const base64Url = parts[1];\n  return JSON.parse(decodeBase64URL(base64Url));\n}\nfunction sleep(time) {\n  return new Promise((accept) => {\n    setTimeout(() => accept(null), time);\n  });\n}\nfunction retryable(fn, isRetryable) {\n  const promise = new Promise((accept, reject) => {\n    (() => __awaiter(this, void 0, void 0, function* () {\n      for (let attempt = 0; attempt < Infinity; attempt++) {\n        try {\n          const result = yield fn(attempt);\n          if (!isRetryable(attempt, null, result)) {\n            accept(result);\n            return;\n          }\n        } catch (e) {\n          if (!isRetryable(attempt, e)) {\n            reject(e);\n            return;\n          }\n        }\n      }\n    }))();\n  });\n  return promise;\n}\nclass AuthError extends Error {\n  constructor(message, status) {\n    super(message);\n    this.__isAuthError = true;\n    this.name = \"AuthError\";\n    this.status = status;\n  }\n}\nfunction isAuthError(error) {\n  return typeof error === \"object\" && error !== null && \"__isAuthError\" in error;\n}\nclass AuthApiError extends AuthError {\n  constructor(message, status) {\n    super(message, status);\n    this.name = \"AuthApiError\";\n    this.status = status;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status\n    };\n  }\n}\nfunction isAuthApiError(error) {\n  return isAuthError(error) && error.name === \"AuthApiError\";\n}\nclass AuthUnknownError extends AuthError {\n  constructor(message, originalError) {\n    super(message);\n    this.name = \"AuthUnknownError\";\n    this.originalError = originalError;\n  }\n}\nclass CustomAuthError extends AuthError {\n  constructor(message, name, status) {\n    super(message);\n    this.name = name;\n    this.status = status;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status\n    };\n  }\n}\nclass AuthSessionMissingError extends CustomAuthError {\n  constructor() {\n    super(\"Auth session missing!\", \"AuthSessionMissingError\", 400);\n  }\n}\nclass AuthInvalidCredentialsError extends CustomAuthError {\n  constructor(message) {\n    super(message, \"AuthInvalidCredentialsError\", 400);\n  }\n}\nclass AuthImplicitGrantRedirectError extends CustomAuthError {\n  constructor(message, details = null) {\n    super(message, \"AuthImplicitGrantRedirectError\", 500);\n    this.details = null;\n    this.details = details;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status,\n      details: this.details\n    };\n  }\n}\nclass AuthRetryableFetchError extends CustomAuthError {\n  constructor(message, status) {\n    super(message, \"AuthRetryableFetchError\", status);\n  }\n}\nvar __awaiter$1 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nvar __rest = function(s, e) {\n  var t = {};\n  for (var p in s)\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n      if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n        t[p[i]] = s[p[i]];\n    }\n  return t;\n};\nconst _getErrorMessage = (err) => err.msg || err.message || err.error_description || err.error || JSON.stringify(err);\nconst handleError = (error, reject) => __awaiter$1(void 0, void 0, void 0, function* () {\n  const NETWORK_ERROR_CODES = [502, 503, 504];\n  if (!looksLikeFetchResponse(error)) {\n    reject(new AuthRetryableFetchError(_getErrorMessage(error), 0));\n  } else if (NETWORK_ERROR_CODES.includes(error.status)) {\n    reject(new AuthRetryableFetchError(_getErrorMessage(error), error.status));\n  } else {\n    error.json().then((err) => {\n      reject(new AuthApiError(_getErrorMessage(err), error.status || 500));\n    }).catch((e) => {\n      reject(new AuthUnknownError(_getErrorMessage(e), e));\n    });\n  }\n});\nconst _getRequestParams = (method, options, parameters, body) => {\n  const params = {method, headers: (options === null || options === void 0 ? void 0 : options.headers) || {}};\n  if (method === \"GET\") {\n    return params;\n  }\n  params.headers = Object.assign({\"Content-Type\": \"application/json;charset=UTF-8\"}, options === null || options === void 0 ? void 0 : options.headers);\n  params.body = JSON.stringify(body);\n  return Object.assign(Object.assign({}, params), parameters);\n};\nfunction _request(fetcher, method, url, options) {\n  var _a;\n  return __awaiter$1(this, void 0, void 0, function* () {\n    const headers = Object.assign({}, options === null || options === void 0 ? void 0 : options.headers);\n    if (options === null || options === void 0 ? void 0 : options.jwt) {\n      headers[\"Authorization\"] = `Bearer ${options.jwt}`;\n    }\n    const qs = (_a = options === null || options === void 0 ? void 0 : options.query) !== null && _a !== void 0 ? _a : {};\n    if (options === null || options === void 0 ? void 0 : options.redirectTo) {\n      qs[\"redirect_to\"] = options.redirectTo;\n    }\n    const queryString = Object.keys(qs).length ? \"?\" + new URLSearchParams(qs).toString() : \"\";\n    const data = yield _handleRequest(fetcher, method, url + queryString, {headers, noResolveJson: options === null || options === void 0 ? void 0 : options.noResolveJson}, {}, options === null || options === void 0 ? void 0 : options.body);\n    return (options === null || options === void 0 ? void 0 : options.xform) ? options === null || options === void 0 ? void 0 : options.xform(data) : {data: Object.assign({}, data), error: null};\n  });\n}\nfunction _handleRequest(fetcher, method, url, options, parameters, body) {\n  return __awaiter$1(this, void 0, void 0, function* () {\n    return new Promise((resolve, reject) => {\n      fetcher(url, _getRequestParams(method, options, parameters, body)).then((result) => {\n        if (!result.ok)\n          throw result;\n        if (options === null || options === void 0 ? void 0 : options.noResolveJson)\n          return result;\n        return result.json();\n      }).then((data) => resolve(data)).catch((error) => handleError(error, reject));\n    });\n  });\n}\nfunction _sessionResponse(data) {\n  var _a;\n  let session = null;\n  if (hasSession(data)) {\n    session = Object.assign({}, data);\n    session.expires_at = expiresAt(data.expires_in);\n  }\n  const user = (_a = data.user) !== null && _a !== void 0 ? _a : data;\n  return {data: {session, user}, error: null};\n}\nfunction _userResponse(data) {\n  var _a;\n  const user = (_a = data.user) !== null && _a !== void 0 ? _a : data;\n  return {data: {user}, error: null};\n}\nfunction _ssoResponse(data) {\n  return {data, error: null};\n}\nfunction _generateLinkResponse(data) {\n  const {action_link, email_otp, hashed_token, redirect_to, verification_type} = data, rest = __rest(data, [\"action_link\", \"email_otp\", \"hashed_token\", \"redirect_to\", \"verification_type\"]);\n  const properties = {\n    action_link,\n    email_otp,\n    hashed_token,\n    redirect_to,\n    verification_type\n  };\n  const user = Object.assign({}, rest);\n  return {\n    data: {\n      properties,\n      user\n    },\n    error: null\n  };\n}\nfunction _noResolveJsonResponse(data) {\n  return data;\n}\nfunction hasSession(data) {\n  return data.access_token && data.refresh_token && data.expires_in;\n}\nvar __awaiter$2 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nvar __rest$1 = function(s, e) {\n  var t = {};\n  for (var p in s)\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n      if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n        t[p[i]] = s[p[i]];\n    }\n  return t;\n};\nclass GoTrueAdminApi {\n  constructor({url = \"\", headers = {}, fetch: fetch2}) {\n    this.url = url;\n    this.headers = headers;\n    this.fetch = resolveFetch(fetch2);\n    this.mfa = {\n      listFactors: this._listFactors.bind(this),\n      deleteFactor: this._deleteFactor.bind(this)\n    };\n  }\n  signOut(jwt) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        yield _request(this.fetch, \"POST\", `${this.url}/logout`, {\n          headers: this.headers,\n          jwt,\n          noResolveJson: true\n        });\n        return {data: null, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  inviteUserByEmail(email, options = {}) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        return yield _request(this.fetch, \"POST\", `${this.url}/invite`, {\n          body: {email, data: options.data},\n          headers: this.headers,\n          redirectTo: options.redirectTo,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  generateLink(params) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const {options} = params, rest = __rest$1(params, [\"options\"]);\n        const body = Object.assign(Object.assign({}, rest), options);\n        if (\"newEmail\" in rest) {\n          body.new_email = rest === null || rest === void 0 ? void 0 : rest.newEmail;\n          delete body[\"newEmail\"];\n        }\n        return yield _request(this.fetch, \"POST\", `${this.url}/admin/generate_link`, {\n          body,\n          headers: this.headers,\n          xform: _generateLinkResponse,\n          redirectTo: options === null || options === void 0 ? void 0 : options.redirectTo\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {\n            data: {\n              properties: null,\n              user: null\n            },\n            error\n          };\n        }\n        throw error;\n      }\n    });\n  }\n  createUser(attributes) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        return yield _request(this.fetch, \"POST\", `${this.url}/admin/users`, {\n          body: attributes,\n          headers: this.headers,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  listUsers(params) {\n    var _a, _b, _c, _d, _e, _f, _g;\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const pagination = {nextPage: null, lastPage: 0, total: 0};\n        const response = yield _request(this.fetch, \"GET\", `${this.url}/admin/users`, {\n          headers: this.headers,\n          noResolveJson: true,\n          query: {\n            page: (_b = (_a = params === null || params === void 0 ? void 0 : params.page) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : \"\",\n            per_page: (_d = (_c = params === null || params === void 0 ? void 0 : params.perPage) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : \"\"\n          },\n          xform: _noResolveJsonResponse\n        });\n        if (response.error)\n          throw response.error;\n        const users = yield response.json();\n        const total = (_e = response.headers.get(\"x-total-count\")) !== null && _e !== void 0 ? _e : 0;\n        const links = (_g = (_f = response.headers.get(\"link\")) === null || _f === void 0 ? void 0 : _f.split(\",\")) !== null && _g !== void 0 ? _g : [];\n        if (links.length > 0) {\n          links.forEach((link) => {\n            const page = parseInt(link.split(\";\")[0].split(\"=\")[1].substring(0, 1));\n            const rel = JSON.parse(link.split(\";\")[1].split(\"=\")[1]);\n            pagination[`${rel}Page`] = page;\n          });\n          pagination.total = parseInt(total);\n        }\n        return {data: Object.assign(Object.assign({}, users), pagination), error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {users: []}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  getUserById(uid) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        return yield _request(this.fetch, \"GET\", `${this.url}/admin/users/${uid}`, {\n          headers: this.headers,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  updateUserById(uid, attributes) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        return yield _request(this.fetch, \"PUT\", `${this.url}/admin/users/${uid}`, {\n          body: attributes,\n          headers: this.headers,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  deleteUser(id, shouldSoftDelete = false) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        return yield _request(this.fetch, \"DELETE\", `${this.url}/admin/users/${id}`, {\n          headers: this.headers,\n          body: {\n            should_soft_delete: shouldSoftDelete\n          },\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _listFactors(params) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const {data, error} = yield _request(this.fetch, \"GET\", `${this.url}/admin/users/${params.userId}/factors`, {\n          headers: this.headers,\n          xform: (factors) => {\n            return {data: {factors}, error: null};\n          }\n        });\n        return {data, error};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _deleteFactor(params) {\n    return __awaiter$2(this, void 0, void 0, function* () {\n      try {\n        const data = yield _request(this.fetch, \"DELETE\", `${this.url}/admin/users/${params.userId}/factors/${params.id}`, {\n          headers: this.headers\n        });\n        return {data, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n}\nconst version = \"2.12.1\";\nconst GOTRUE_URL = \"http://localhost:9999\";\nconst STORAGE_KEY = \"supabase.auth.token\";\nconst DEFAULT_HEADERS = {\"X-Client-Info\": `gotrue-js/${version}`};\nconst EXPIRY_MARGIN = 10;\nconst localStorageAdapter = {\n  getItem: (key) => {\n    if (!supportsLocalStorage()) {\n      return null;\n    }\n    return globalThis.localStorage.getItem(key);\n  },\n  setItem: (key, value) => {\n    if (!supportsLocalStorage()) {\n      return;\n    }\n    globalThis.localStorage.setItem(key, value);\n  },\n  removeItem: (key) => {\n    if (!supportsLocalStorage()) {\n      return;\n    }\n    globalThis.localStorage.removeItem(key);\n  }\n};\nfunction polyfillGlobalThis() {\n  if (typeof globalThis === \"object\")\n    return;\n  try {\n    Object.defineProperty(Object.prototype, \"__magic__\", {\n      get: function() {\n        return this;\n      },\n      configurable: true\n    });\n    __magic__.globalThis = __magic__;\n    delete Object.prototype.__magic__;\n  } catch (e) {\n    if (typeof self !== \"undefined\") {\n      self.globalThis = self;\n    }\n  }\n}\nvar __awaiter$3 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\npolyfillGlobalThis();\nconst DEFAULT_OPTIONS = {\n  url: GOTRUE_URL,\n  storageKey: STORAGE_KEY,\n  autoRefreshToken: true,\n  persistSession: true,\n  detectSessionInUrl: true,\n  headers: DEFAULT_HEADERS\n};\nconst AUTO_REFRESH_TICK_DURATION = 10 * 1e3;\nconst AUTO_REFRESH_TICK_THRESHOLD = 3;\nclass GoTrueClient {\n  constructor(options) {\n    this.stateChangeEmitters = new Map();\n    this.autoRefreshTicker = null;\n    this.visibilityChangedCallback = null;\n    this.refreshingDeferred = null;\n    this.initializePromise = null;\n    this.detectSessionInUrl = true;\n    this.broadcastChannel = null;\n    const settings = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);\n    this.inMemorySession = null;\n    this.storageKey = settings.storageKey;\n    this.autoRefreshToken = settings.autoRefreshToken;\n    this.persistSession = settings.persistSession;\n    this.storage = settings.storage || localStorageAdapter;\n    this.admin = new GoTrueAdminApi({\n      url: settings.url,\n      headers: settings.headers,\n      fetch: settings.fetch\n    });\n    this.url = settings.url;\n    this.headers = settings.headers;\n    this.fetch = resolveFetch(settings.fetch);\n    this.detectSessionInUrl = settings.detectSessionInUrl;\n    this.mfa = {\n      verify: this._verify.bind(this),\n      enroll: this._enroll.bind(this),\n      unenroll: this._unenroll.bind(this),\n      challenge: this._challenge.bind(this),\n      listFactors: this._listFactors.bind(this),\n      challengeAndVerify: this._challengeAndVerify.bind(this),\n      getAuthenticatorAssuranceLevel: this._getAuthenticatorAssuranceLevel.bind(this)\n    };\n    if (isBrowser() && globalThis.BroadcastChannel && this.persistSession && this.storageKey) {\n      this.broadcastChannel = new globalThis.BroadcastChannel(this.storageKey);\n      this.broadcastChannel.addEventListener(\"message\", (event) => {\n        this._notifyAllSubscribers(event.data.event, event.data.session, false);\n      });\n    }\n    this.initialize();\n  }\n  initialize() {\n    if (!this.initializePromise) {\n      this.initializePromise = this._initialize();\n    }\n    return this.initializePromise;\n  }\n  _initialize() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      if (this.initializePromise) {\n        return this.initializePromise;\n      }\n      try {\n        if (this.detectSessionInUrl && this._isImplicitGrantFlow()) {\n          const {data, error} = yield this._getSessionFromUrl();\n          if (error) {\n            yield this._removeSession();\n            return {error};\n          }\n          const {session, redirectType} = data;\n          yield this._saveSession(session);\n          this._notifyAllSubscribers(\"SIGNED_IN\", session);\n          if (redirectType === \"recovery\") {\n            this._notifyAllSubscribers(\"PASSWORD_RECOVERY\", session);\n          }\n          return {error: null};\n        }\n        yield this._recoverAndRefresh();\n        return {error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {error};\n        }\n        return {\n          error: new AuthUnknownError(\"Unexpected error during initialization\", error)\n        };\n      } finally {\n        yield this._handleVisibilityChange();\n      }\n    });\n  }\n  signUp(credentials) {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        yield this._removeSession();\n        let res;\n        if (\"email\" in credentials) {\n          const {email, password, options} = credentials;\n          res = yield _request(this.fetch, \"POST\", `${this.url}/signup`, {\n            headers: this.headers,\n            redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,\n            body: {\n              email,\n              password,\n              data: (_a = options === null || options === void 0 ? void 0 : options.data) !== null && _a !== void 0 ? _a : {},\n              gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n            },\n            xform: _sessionResponse\n          });\n        } else if (\"phone\" in credentials) {\n          const {phone, password, options} = credentials;\n          res = yield _request(this.fetch, \"POST\", `${this.url}/signup`, {\n            headers: this.headers,\n            body: {\n              phone,\n              password,\n              data: (_b = options === null || options === void 0 ? void 0 : options.data) !== null && _b !== void 0 ? _b : {},\n              gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n            },\n            xform: _sessionResponse\n          });\n        } else {\n          throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number and a password\");\n        }\n        const {data, error} = res;\n        if (error || !data) {\n          return {data: {user: null, session: null}, error};\n        }\n        const session = data.session;\n        const user = data.user;\n        if (data.session) {\n          yield this._saveSession(data.session);\n          this._notifyAllSubscribers(\"SIGNED_IN\", session);\n        }\n        return {data: {user, session}, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null, session: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  signInWithPassword(credentials) {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        yield this._removeSession();\n        let res;\n        if (\"email\" in credentials) {\n          const {email, password, options} = credentials;\n          res = yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=password`, {\n            headers: this.headers,\n            body: {\n              email,\n              password,\n              data: (_a = options === null || options === void 0 ? void 0 : options.data) !== null && _a !== void 0 ? _a : {},\n              gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n            },\n            xform: _sessionResponse\n          });\n        } else if (\"phone\" in credentials) {\n          const {phone, password, options} = credentials;\n          res = yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=password`, {\n            headers: this.headers,\n            body: {\n              phone,\n              password,\n              data: (_b = options === null || options === void 0 ? void 0 : options.data) !== null && _b !== void 0 ? _b : {},\n              gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n            },\n            xform: _sessionResponse\n          });\n        } else {\n          throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number and a password\");\n        }\n        const {data, error} = res;\n        if (error || !data)\n          return {data: {user: null, session: null}, error};\n        if (data.session) {\n          yield this._saveSession(data.session);\n          this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n        }\n        return {data, error};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null, session: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  signInWithOAuth(credentials) {\n    var _a, _b, _c, _d;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      yield this._removeSession();\n      return this._handleProviderSignIn(credentials.provider, {\n        redirectTo: (_a = credentials.options) === null || _a === void 0 ? void 0 : _a.redirectTo,\n        scopes: (_b = credentials.options) === null || _b === void 0 ? void 0 : _b.scopes,\n        queryParams: (_c = credentials.options) === null || _c === void 0 ? void 0 : _c.queryParams,\n        skipBrowserRedirect: (_d = credentials.options) === null || _d === void 0 ? void 0 : _d.skipBrowserRedirect\n      });\n    });\n  }\n  signInWithIdToken(credentials) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      yield this._removeSession();\n      try {\n        const {options, provider, token, nonce} = credentials;\n        const res = yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=id_token`, {\n          headers: this.headers,\n          body: {\n            provider,\n            id_token: token,\n            nonce,\n            gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n          },\n          xform: _sessionResponse\n        });\n        const {data, error} = res;\n        if (error || !data)\n          return {data: {user: null, session: null}, error};\n        if (data.session) {\n          yield this._saveSession(data.session);\n          this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n        }\n        return {data, error};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null, session: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  signInWithOtp(credentials) {\n    var _a, _b, _c, _d;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        yield this._removeSession();\n        if (\"email\" in credentials) {\n          const {email, options} = credentials;\n          const {error} = yield _request(this.fetch, \"POST\", `${this.url}/otp`, {\n            headers: this.headers,\n            body: {\n              email,\n              data: (_a = options === null || options === void 0 ? void 0 : options.data) !== null && _a !== void 0 ? _a : {},\n              create_user: (_b = options === null || options === void 0 ? void 0 : options.shouldCreateUser) !== null && _b !== void 0 ? _b : true,\n              gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n            },\n            redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo\n          });\n          return {data: {user: null, session: null}, error};\n        }\n        if (\"phone\" in credentials) {\n          const {phone, options} = credentials;\n          const {error} = yield _request(this.fetch, \"POST\", `${this.url}/otp`, {\n            headers: this.headers,\n            body: {\n              phone,\n              data: (_c = options === null || options === void 0 ? void 0 : options.data) !== null && _c !== void 0 ? _c : {},\n              create_user: (_d = options === null || options === void 0 ? void 0 : options.shouldCreateUser) !== null && _d !== void 0 ? _d : true,\n              gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n            }\n          });\n          return {data: {user: null, session: null}, error};\n        }\n        throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number.\");\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null, session: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  verifyOtp(params) {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        yield this._removeSession();\n        const {data, error} = yield _request(this.fetch, \"POST\", `${this.url}/verify`, {\n          headers: this.headers,\n          body: Object.assign(Object.assign({}, params), {gotrue_meta_security: {captcha_token: (_a = params.options) === null || _a === void 0 ? void 0 : _a.captchaToken}}),\n          redirectTo: (_b = params.options) === null || _b === void 0 ? void 0 : _b.redirectTo,\n          xform: _sessionResponse\n        });\n        if (error) {\n          throw error;\n        }\n        if (!data) {\n          throw \"An error occurred on token verification.\";\n        }\n        const session = data.session;\n        const user = data.user;\n        if (session === null || session === void 0 ? void 0 : session.access_token) {\n          yield this._saveSession(session);\n          this._notifyAllSubscribers(\"SIGNED_IN\", session);\n        }\n        return {data: {user, session}, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null, session: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  signInWithSSO(params) {\n    var _a, _b, _c;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        yield this._removeSession();\n        return yield _request(this.fetch, \"POST\", `${this.url}/sso`, {\n          body: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, \"providerId\" in params ? {provider_id: params.providerId} : null), \"domain\" in params ? {domain: params.domain} : null), {redirect_to: (_b = (_a = params.options) === null || _a === void 0 ? void 0 : _a.redirectTo) !== null && _b !== void 0 ? _b : void 0}), ((_c = params === null || params === void 0 ? void 0 : params.options) === null || _c === void 0 ? void 0 : _c.captchaToken) ? {gotrue_meta_security: {captcha_token: params.options.captchaToken}} : null), {skip_http_redirect: true}),\n          headers: this.headers,\n          xform: _ssoResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  getSession() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      yield this.initializePromise;\n      let currentSession = null;\n      if (this.persistSession) {\n        const maybeSession = yield getItemAsync(this.storage, this.storageKey);\n        if (maybeSession !== null) {\n          if (this._isValidSession(maybeSession)) {\n            currentSession = maybeSession;\n          } else {\n            yield this._removeSession();\n          }\n        }\n      } else {\n        currentSession = this.inMemorySession;\n      }\n      if (!currentSession) {\n        return {data: {session: null}, error: null};\n      }\n      const hasExpired = currentSession.expires_at ? currentSession.expires_at <= Date.now() / 1e3 : false;\n      if (!hasExpired) {\n        return {data: {session: currentSession}, error: null};\n      }\n      const {session, error} = yield this._callRefreshToken(currentSession.refresh_token);\n      if (error) {\n        return {data: {session: null}, error};\n      }\n      return {data: {session}, error: null};\n    });\n  }\n  getUser(jwt) {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        if (!jwt) {\n          const {data, error} = yield this.getSession();\n          if (error) {\n            throw error;\n          }\n          jwt = (_b = (_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token) !== null && _b !== void 0 ? _b : void 0;\n        }\n        return yield _request(this.fetch, \"GET\", `${this.url}/user`, {\n          headers: this.headers,\n          jwt,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  updateUser(attributes, options = {}) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const {data: sessionData, error: sessionError} = yield this.getSession();\n        if (sessionError) {\n          throw sessionError;\n        }\n        if (!sessionData.session) {\n          throw new AuthSessionMissingError();\n        }\n        const session = sessionData.session;\n        const {data, error: userError} = yield _request(this.fetch, \"PUT\", `${this.url}/user`, {\n          headers: this.headers,\n          redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,\n          body: attributes,\n          jwt: session.access_token,\n          xform: _userResponse\n        });\n        if (userError)\n          throw userError;\n        session.user = data.user;\n        yield this._saveSession(session);\n        this._notifyAllSubscribers(\"USER_UPDATED\", session);\n        return {data: {user: session.user}, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _decodeJWT(jwt) {\n    return decodeJWTPayload(jwt);\n  }\n  setSession(currentSession) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        if (!currentSession.access_token || !currentSession.refresh_token) {\n          throw new AuthSessionMissingError();\n        }\n        const timeNow = Date.now() / 1e3;\n        let expiresAt2 = timeNow;\n        let hasExpired = true;\n        let session = null;\n        const payload = decodeJWTPayload(currentSession.access_token);\n        if (payload.exp) {\n          expiresAt2 = payload.exp;\n          hasExpired = expiresAt2 <= timeNow;\n        }\n        if (hasExpired) {\n          const {session: refreshedSession, error} = yield this._callRefreshToken(currentSession.refresh_token);\n          if (error) {\n            return {data: {user: null, session: null}, error};\n          }\n          if (!refreshedSession) {\n            return {data: {user: null, session: null}, error: null};\n          }\n          session = refreshedSession;\n        } else {\n          const {data, error} = yield this.getUser(currentSession.access_token);\n          if (error) {\n            throw error;\n          }\n          session = {\n            access_token: currentSession.access_token,\n            refresh_token: currentSession.refresh_token,\n            user: data.user,\n            token_type: \"bearer\",\n            expires_in: expiresAt2 - timeNow,\n            expires_at: expiresAt2\n          };\n          yield this._saveSession(session);\n          this._notifyAllSubscribers(\"SIGNED_IN\", session);\n        }\n        return {data: {user: session.user, session}, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {session: null, user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  refreshSession(currentSession) {\n    var _a;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        if (!currentSession) {\n          const {data, error: error2} = yield this.getSession();\n          if (error2) {\n            throw error2;\n          }\n          currentSession = (_a = data.session) !== null && _a !== void 0 ? _a : void 0;\n        }\n        if (!(currentSession === null || currentSession === void 0 ? void 0 : currentSession.refresh_token)) {\n          throw new AuthSessionMissingError();\n        }\n        const {session, error} = yield this._callRefreshToken(currentSession.refresh_token);\n        if (error) {\n          return {data: {user: null, session: null}, error};\n        }\n        if (!session) {\n          return {data: {user: null, session: null}, error: null};\n        }\n        return {data: {user: session.user, session}, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {user: null, session: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _getSessionFromUrl() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        if (!isBrowser())\n          throw new AuthImplicitGrantRedirectError(\"No browser detected.\");\n        if (!this._isImplicitGrantFlow()) {\n          throw new AuthImplicitGrantRedirectError(\"Not a valid implicit grant flow url.\");\n        }\n        const error_description = getParameterByName(\"error_description\");\n        if (error_description) {\n          const error_code = getParameterByName(\"error_code\");\n          if (!error_code)\n            throw new AuthImplicitGrantRedirectError(\"No error_code detected.\");\n          const error2 = getParameterByName(\"error\");\n          if (!error2)\n            throw new AuthImplicitGrantRedirectError(\"No error detected.\");\n          throw new AuthImplicitGrantRedirectError(error_description, {error: error2, code: error_code});\n        }\n        const provider_token = getParameterByName(\"provider_token\");\n        const provider_refresh_token = getParameterByName(\"provider_refresh_token\");\n        const access_token = getParameterByName(\"access_token\");\n        if (!access_token)\n          throw new AuthImplicitGrantRedirectError(\"No access_token detected.\");\n        const expires_in = getParameterByName(\"expires_in\");\n        if (!expires_in)\n          throw new AuthImplicitGrantRedirectError(\"No expires_in detected.\");\n        const refresh_token = getParameterByName(\"refresh_token\");\n        if (!refresh_token)\n          throw new AuthImplicitGrantRedirectError(\"No refresh_token detected.\");\n        const token_type = getParameterByName(\"token_type\");\n        if (!token_type)\n          throw new AuthImplicitGrantRedirectError(\"No token_type detected.\");\n        const timeNow = Math.round(Date.now() / 1e3);\n        const expires_at = timeNow + parseInt(expires_in);\n        const {data, error} = yield this.getUser(access_token);\n        if (error)\n          throw error;\n        const user = data.user;\n        const session = {\n          provider_token,\n          provider_refresh_token,\n          access_token,\n          expires_in: parseInt(expires_in),\n          expires_at,\n          refresh_token,\n          token_type,\n          user\n        };\n        const redirectType = getParameterByName(\"type\");\n        window.location.hash = \"\";\n        return {data: {session, redirectType}, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {session: null, redirectType: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _isImplicitGrantFlow() {\n    return isBrowser() && (Boolean(getParameterByName(\"access_token\")) || Boolean(getParameterByName(\"error_description\")));\n  }\n  signOut() {\n    var _a;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      const {data, error: sessionError} = yield this.getSession();\n      if (sessionError) {\n        return {error: sessionError};\n      }\n      const accessToken = (_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token;\n      if (accessToken) {\n        const {error} = yield this.admin.signOut(accessToken);\n        if (error) {\n          if (!(isAuthApiError(error) && (error.status === 404 || error.status === 401))) {\n            return {error};\n          }\n        }\n      }\n      yield this._removeSession();\n      this._notifyAllSubscribers(\"SIGNED_OUT\", null);\n      return {error: null};\n    });\n  }\n  onAuthStateChange(callback) {\n    const id = uuid();\n    const subscription = {\n      id,\n      callback,\n      unsubscribe: () => {\n        this.stateChangeEmitters.delete(id);\n      }\n    };\n    this.stateChangeEmitters.set(id, subscription);\n    return {data: {subscription}};\n  }\n  resetPasswordForEmail(email, options = {}) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        return yield _request(this.fetch, \"POST\", `${this.url}/recover`, {\n          body: {email, gotrue_meta_security: {captcha_token: options.captchaToken}},\n          headers: this.headers,\n          redirectTo: options.redirectTo\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _refreshAccessToken(refreshToken) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const startedAt = Date.now();\n        return yield retryable((attempt) => __awaiter$3(this, void 0, void 0, function* () {\n          yield sleep(attempt * 200);\n          return yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=refresh_token`, {\n            body: {refresh_token: refreshToken},\n            headers: this.headers,\n            xform: _sessionResponse\n          });\n        }), (attempt, _, result) => result && result.error && result.error instanceof AuthRetryableFetchError && Date.now() + (attempt + 1) * 200 - startedAt < AUTO_REFRESH_TICK_DURATION);\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: {session: null, user: null}, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _isValidSession(maybeSession) {\n    const isValidSession = typeof maybeSession === \"object\" && maybeSession !== null && \"access_token\" in maybeSession && \"refresh_token\" in maybeSession && \"expires_at\" in maybeSession;\n    return isValidSession;\n  }\n  _handleProviderSignIn(provider, options = {}) {\n    const url = this._getUrlForProvider(provider, {\n      redirectTo: options.redirectTo,\n      scopes: options.scopes,\n      queryParams: options.queryParams\n    });\n    if (isBrowser() && !options.skipBrowserRedirect) {\n      window.location.assign(url);\n    }\n    return {data: {provider, url}, error: null};\n  }\n  _recoverAndRefresh() {\n    var _a;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const currentSession = yield getItemAsync(this.storage, this.storageKey);\n        if (!this._isValidSession(currentSession)) {\n          if (currentSession !== null) {\n            yield this._removeSession();\n          }\n          return;\n        }\n        const timeNow = Math.round(Date.now() / 1e3);\n        if (((_a = currentSession.expires_at) !== null && _a !== void 0 ? _a : Infinity) < timeNow + EXPIRY_MARGIN) {\n          if (this.autoRefreshToken && currentSession.refresh_token) {\n            const {error} = yield this._callRefreshToken(currentSession.refresh_token);\n            if (error) {\n              console.log(error.message);\n              yield this._removeSession();\n            }\n          } else {\n            yield this._removeSession();\n          }\n        } else {\n          if (this.persistSession) {\n            yield this._saveSession(currentSession);\n          }\n          this._notifyAllSubscribers(\"SIGNED_IN\", currentSession);\n        }\n      } catch (err) {\n        console.error(err);\n        return;\n      }\n    });\n  }\n  _callRefreshToken(refreshToken) {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      if (this.refreshingDeferred) {\n        return this.refreshingDeferred.promise;\n      }\n      try {\n        this.refreshingDeferred = new Deferred();\n        if (!refreshToken) {\n          throw new AuthSessionMissingError();\n        }\n        const {data, error} = yield this._refreshAccessToken(refreshToken);\n        if (error)\n          throw error;\n        if (!data.session)\n          throw new AuthSessionMissingError();\n        yield this._saveSession(data.session);\n        this._notifyAllSubscribers(\"TOKEN_REFRESHED\", data.session);\n        const result = {session: data.session, error: null};\n        this.refreshingDeferred.resolve(result);\n        return result;\n      } catch (error) {\n        if (isAuthError(error)) {\n          const result = {session: null, error};\n          (_a = this.refreshingDeferred) === null || _a === void 0 ? void 0 : _a.resolve(result);\n          return result;\n        }\n        (_b = this.refreshingDeferred) === null || _b === void 0 ? void 0 : _b.reject(error);\n        throw error;\n      } finally {\n        this.refreshingDeferred = null;\n      }\n    });\n  }\n  _notifyAllSubscribers(event, session, broadcast = true) {\n    if (this.broadcastChannel && broadcast) {\n      this.broadcastChannel.postMessage({event, session});\n    }\n    this.stateChangeEmitters.forEach((x) => x.callback(event, session));\n  }\n  _saveSession(session) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      if (!this.persistSession) {\n        this.inMemorySession = session;\n      }\n      if (this.persistSession && session.expires_at) {\n        yield this._persistSession(session);\n      }\n    });\n  }\n  _persistSession(currentSession) {\n    return setItemAsync(this.storage, this.storageKey, currentSession);\n  }\n  _removeSession() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      if (this.persistSession) {\n        yield removeItemAsync(this.storage, this.storageKey);\n      } else {\n        this.inMemorySession = null;\n      }\n    });\n  }\n  _removeVisibilityChangedCallback() {\n    const callback = this.visibilityChangedCallback;\n    this.visibilityChangedCallback = null;\n    try {\n      if (callback && isBrowser() && (window === null || window === void 0 ? void 0 : window.removeEventListener)) {\n        window.removeEventListener(\"visibilitychange\", callback);\n      }\n    } catch (e) {\n      console.error(\"removing visibilitychange callback failed\", e);\n    }\n  }\n  _startAutoRefresh() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      yield this._stopAutoRefresh();\n      const ticker = setInterval(() => this._autoRefreshTokenTick(), AUTO_REFRESH_TICK_DURATION);\n      this.autoRefreshTicker = ticker;\n      if (ticker && typeof ticker === \"object\" && typeof ticker.unref === \"function\") {\n        ticker.unref();\n      }\n      yield this._autoRefreshTokenTick();\n    });\n  }\n  _stopAutoRefresh() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      const ticker = this.autoRefreshTicker;\n      this.autoRefreshTicker = null;\n      if (ticker) {\n        clearInterval(ticker);\n      }\n    });\n  }\n  startAutoRefresh() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      this._removeVisibilityChangedCallback();\n      yield this._startAutoRefresh();\n    });\n  }\n  stopAutoRefresh() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      this._removeVisibilityChangedCallback();\n      yield this._stopAutoRefresh();\n    });\n  }\n  _autoRefreshTokenTick() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      const now = Date.now();\n      try {\n        const {data: {session}} = yield this.getSession();\n        if (!session || !session.refresh_token || !session.expires_at) {\n          return;\n        }\n        const expiresInTicks = Math.floor((session.expires_at * 1e3 - now) / AUTO_REFRESH_TICK_DURATION);\n        if (expiresInTicks < AUTO_REFRESH_TICK_THRESHOLD) {\n          yield this._callRefreshToken(session.refresh_token);\n        }\n      } catch (e) {\n        console.error(\"Auto refresh tick failed with error. This is likely a transient error.\", e);\n      }\n    });\n  }\n  _handleVisibilityChange() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      if (!isBrowser() || !(window === null || window === void 0 ? void 0 : window.addEventListener)) {\n        if (this.autoRefreshToken) {\n          this.startAutoRefresh();\n        }\n        return false;\n      }\n      try {\n        this.visibilityChangedCallback = () => __awaiter$3(this, void 0, void 0, function* () {\n          return yield this._onVisibilityChanged(false);\n        });\n        window === null || window === void 0 ? void 0 : window.addEventListener(\"visibilitychange\", this.visibilityChangedCallback);\n        yield this._onVisibilityChanged(true);\n      } catch (error) {\n        console.error(\"_handleVisibilityChange\", error);\n      }\n    });\n  }\n  _onVisibilityChanged(isInitial) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      if (document.visibilityState === \"visible\") {\n        if (!isInitial) {\n          yield this.initializePromise;\n          yield this._recoverAndRefresh();\n        }\n        if (this.autoRefreshToken) {\n          this._startAutoRefresh();\n        }\n      } else if (document.visibilityState === \"hidden\") {\n        if (this.autoRefreshToken) {\n          this._stopAutoRefresh();\n        }\n      }\n    });\n  }\n  _getUrlForProvider(provider, options) {\n    const urlParams = [`provider=${encodeURIComponent(provider)}`];\n    if (options === null || options === void 0 ? void 0 : options.redirectTo) {\n      urlParams.push(`redirect_to=${encodeURIComponent(options.redirectTo)}`);\n    }\n    if (options === null || options === void 0 ? void 0 : options.scopes) {\n      urlParams.push(`scopes=${encodeURIComponent(options.scopes)}`);\n    }\n    if (options === null || options === void 0 ? void 0 : options.queryParams) {\n      const query = new URLSearchParams(options.queryParams);\n      urlParams.push(query.toString());\n    }\n    return `${this.url}/authorize?${urlParams.join(\"&\")}`;\n  }\n  _unenroll(params) {\n    var _a;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const {data: sessionData, error: sessionError} = yield this.getSession();\n        if (sessionError) {\n          return {data: null, error: sessionError};\n        }\n        return yield _request(this.fetch, \"DELETE\", `${this.url}/factors/${params.factorId}`, {\n          headers: this.headers,\n          jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _enroll(params) {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const {data: sessionData, error: sessionError} = yield this.getSession();\n        if (sessionError) {\n          return {data: null, error: sessionError};\n        }\n        const {data, error} = yield _request(this.fetch, \"POST\", `${this.url}/factors`, {\n          body: {\n            friendly_name: params.friendlyName,\n            factor_type: params.factorType,\n            issuer: params.issuer\n          },\n          headers: this.headers,\n          jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token\n        });\n        if (error) {\n          return {data: null, error};\n        }\n        if ((_b = data === null || data === void 0 ? void 0 : data.totp) === null || _b === void 0 ? void 0 : _b.qr_code) {\n          data.totp.qr_code = `data:image/svg+xml;utf-8,${data.totp.qr_code}`;\n        }\n        return {data, error: null};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _verify(params) {\n    var _a;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const {data: sessionData, error: sessionError} = yield this.getSession();\n        if (sessionError) {\n          return {data: null, error: sessionError};\n        }\n        const {data, error} = yield _request(this.fetch, \"POST\", `${this.url}/factors/${params.factorId}/verify`, {\n          body: {code: params.code, challenge_id: params.challengeId},\n          headers: this.headers,\n          jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token\n        });\n        if (error) {\n          return {data: null, error};\n        }\n        yield this._saveSession(Object.assign({expires_at: Math.round(Date.now() / 1e3) + data.expires_in}, data));\n        this._notifyAllSubscribers(\"MFA_CHALLENGE_VERIFIED\", data);\n        return {data, error};\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _challenge(params) {\n    var _a;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      try {\n        const {data: sessionData, error: sessionError} = yield this.getSession();\n        if (sessionError) {\n          return {data: null, error: sessionError};\n        }\n        return yield _request(this.fetch, \"POST\", `${this.url}/factors/${params.factorId}/challenge`, {\n          headers: this.headers,\n          jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {data: null, error};\n        }\n        throw error;\n      }\n    });\n  }\n  _challengeAndVerify(params) {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      const {data: challengeData, error: challengeError} = yield this._challenge({\n        factorId: params.factorId\n      });\n      if (challengeError) {\n        return {data: null, error: challengeError};\n      }\n      return yield this._verify({\n        factorId: params.factorId,\n        challengeId: challengeData.id,\n        code: params.code\n      });\n    });\n  }\n  _listFactors() {\n    return __awaiter$3(this, void 0, void 0, function* () {\n      const {data: {user}, error: userError} = yield this.getUser();\n      if (userError) {\n        return {data: null, error: userError};\n      }\n      const factors = (user === null || user === void 0 ? void 0 : user.factors) || [];\n      const totp = factors.filter((factor) => factor.factor_type === \"totp\" && factor.status === \"verified\");\n      return {\n        data: {\n          all: factors,\n          totp\n        },\n        error: null\n      };\n    });\n  }\n  _getAuthenticatorAssuranceLevel() {\n    var _a, _b;\n    return __awaiter$3(this, void 0, void 0, function* () {\n      const {data: {session}, error: sessionError} = yield this.getSession();\n      if (sessionError) {\n        return {data: null, error: sessionError};\n      }\n      if (!session) {\n        return {\n          data: {currentLevel: null, nextLevel: null, currentAuthenticationMethods: []},\n          error: null\n        };\n      }\n      const payload = this._decodeJWT(session.access_token);\n      let currentLevel = null;\n      if (payload.aal) {\n        currentLevel = payload.aal;\n      }\n      let nextLevel = currentLevel;\n      const verifiedFactors = (_b = (_a = session.user.factors) === null || _a === void 0 ? void 0 : _a.filter((factor) => factor.status === \"verified\")) !== null && _b !== void 0 ? _b : [];\n      if (verifiedFactors.length > 0) {\n        nextLevel = \"aal2\";\n      }\n      const currentAuthenticationMethods = payload.amr || [];\n      return {data: {currentLevel, nextLevel, currentAuthenticationMethods}, error: null};\n    });\n  }\n}\nexport {AuthApiError, AuthError, AuthImplicitGrantRedirectError, AuthInvalidCredentialsError, AuthRetryableFetchError, AuthSessionMissingError, AuthUnknownError, CustomAuthError, GoTrueAdminApi, GoTrueClient, isAuthApiError, isAuthError};\nexport default null;\n", "import {FunctionsClient} from \"/-/@supabase/functions-js@v2.1.0-RnZ2mgdVtYJw6BDBGbAJ/dist=es2019,mode=imports/optimized/@supabase/functions-js.js\";\nexport {FunctionsError, FunctionsFetchError, FunctionsHttpError, FunctionsRelayError} from \"/-/@supabase/functions-js@v2.1.0-RnZ2mgdVtYJw6BDBGbAJ/dist=es2019,mode=imports/optimized/@supabase/functions-js.js\";\nimport {PostgrestClient} from \"/-/@supabase/postgrest-js@v1.4.1-M6VL6LW6WNlsBWTBZFbq/dist=es2019,mode=imports/optimized/@supabase/postgrest-js.js\";\nimport {RealtimeClient} from \"/-/@supabase/realtime-js@v2.6.0-KChn2jQyrOOE0GhQ08fE/dist=es2019,mode=imports/optimized/@supabase/realtime-js.js\";\nexport * from \"/-/@supabase/realtime-js@v2.6.0-KChn2jQyrOOE0GhQ08fE/dist=es2019,mode=imports/optimized/@supabase/realtime-js.js\";\nimport {StorageClient} from \"/-/@supabase/storage-js@v2.3.1-BHfs8j7jU6qHoJRSHZPL/dist=es2019,mode=imports/optimized/@supabase/storage-js.js\";\nimport crossFetch from \"/-/cross-fetch@v3.1.5-rZpYflwCvsXnXC1DUbBX/dist=es2019,mode=imports/optimized/cross-fetch.js\";\nconst {Headers: Headers$1} = crossFetch;\n;\nimport {GoTrueClient} from \"/-/@supabase/gotrue-js@v2.12.1-U9V71OI5x9GUonOWwkxZ/dist=es2019,mode=imports/optimized/@supabase/gotrue-js.js\";\nexport * from \"/-/@supabase/gotrue-js@v2.12.1-U9V71OI5x9GUonOWwkxZ/dist=es2019,mode=imports/optimized/@supabase/gotrue-js.js\";\nconst version = \"2.10.0\";\nconst DEFAULT_HEADERS = {\"X-Client-Info\": `supabase-js/${version}`};\nvar __awaiter = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst resolveFetch = (customFetch) => {\n  let _fetch;\n  if (customFetch) {\n    _fetch = customFetch;\n  } else if (typeof fetch === \"undefined\") {\n    _fetch = crossFetch;\n  } else {\n    _fetch = fetch;\n  }\n  return (...args) => _fetch(...args);\n};\nconst resolveHeadersConstructor = () => {\n  if (typeof Headers === \"undefined\") {\n    return Headers$1;\n  }\n  return Headers;\n};\nconst fetchWithAuth = (supabaseKey, getAccessToken, customFetch) => {\n  const fetch2 = resolveFetch(customFetch);\n  const HeadersConstructor = resolveHeadersConstructor();\n  return (input, init) => __awaiter(void 0, void 0, void 0, function* () {\n    var _a;\n    const accessToken = (_a = yield getAccessToken()) !== null && _a !== void 0 ? _a : supabaseKey;\n    let headers = new HeadersConstructor(init === null || init === void 0 ? void 0 : init.headers);\n    if (!headers.has(\"apikey\")) {\n      headers.set(\"apikey\", supabaseKey);\n    }\n    if (!headers.has(\"Authorization\")) {\n      headers.set(\"Authorization\", `Bearer ${accessToken}`);\n    }\n    return fetch2(input, Object.assign(Object.assign({}, init), {headers}));\n  });\n};\nfunction stripTrailingSlash(url) {\n  return url.replace(/\\/$/, \"\");\n}\nfunction applySettingDefaults(options, defaults) {\n  const {db: dbOptions, auth: authOptions, realtime: realtimeOptions, global: globalOptions} = options;\n  const {db: DEFAULT_DB_OPTIONS2, auth: DEFAULT_AUTH_OPTIONS2, realtime: DEFAULT_REALTIME_OPTIONS2, global: DEFAULT_GLOBAL_OPTIONS2} = defaults;\n  return {\n    db: Object.assign(Object.assign({}, DEFAULT_DB_OPTIONS2), dbOptions),\n    auth: Object.assign(Object.assign({}, DEFAULT_AUTH_OPTIONS2), authOptions),\n    realtime: Object.assign(Object.assign({}, DEFAULT_REALTIME_OPTIONS2), realtimeOptions),\n    global: Object.assign(Object.assign({}, DEFAULT_GLOBAL_OPTIONS2), globalOptions)\n  };\n}\nclass SupabaseAuthClient extends GoTrueClient {\n  constructor(options) {\n    super(options);\n  }\n}\nvar __awaiter$1 = function(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nconst DEFAULT_GLOBAL_OPTIONS = {\n  headers: DEFAULT_HEADERS\n};\nconst DEFAULT_DB_OPTIONS = {\n  schema: \"public\"\n};\nconst DEFAULT_AUTH_OPTIONS = {\n  autoRefreshToken: true,\n  persistSession: true,\n  detectSessionInUrl: true\n};\nconst DEFAULT_REALTIME_OPTIONS = {};\nclass SupabaseClient {\n  constructor(supabaseUrl, supabaseKey, options) {\n    var _a, _b, _c, _d, _e, _f, _g, _h;\n    this.supabaseUrl = supabaseUrl;\n    this.supabaseKey = supabaseKey;\n    if (!supabaseUrl)\n      throw new Error(\"supabaseUrl is required.\");\n    if (!supabaseKey)\n      throw new Error(\"supabaseKey is required.\");\n    const _supabaseUrl = stripTrailingSlash(supabaseUrl);\n    this.realtimeUrl = `${_supabaseUrl}/realtime/v1`.replace(/^http/i, \"ws\");\n    this.authUrl = `${_supabaseUrl}/auth/v1`;\n    this.storageUrl = `${_supabaseUrl}/storage/v1`;\n    const isPlatform = _supabaseUrl.match(/(supabase\\.co)|(supabase\\.in)/);\n    if (isPlatform) {\n      const urlParts = _supabaseUrl.split(\".\");\n      this.functionsUrl = `${urlParts[0]}.functions.${urlParts[1]}.${urlParts[2]}`;\n    } else {\n      this.functionsUrl = `${_supabaseUrl}/functions/v1`;\n    }\n    const defaultStorageKey = `sb-${new URL(this.authUrl).hostname.split(\".\")[0]}-auth-token`;\n    const DEFAULTS = {\n      db: DEFAULT_DB_OPTIONS,\n      realtime: DEFAULT_REALTIME_OPTIONS,\n      auth: Object.assign(Object.assign({}, DEFAULT_AUTH_OPTIONS), {storageKey: defaultStorageKey}),\n      global: DEFAULT_GLOBAL_OPTIONS\n    };\n    const settings = applySettingDefaults(options !== null && options !== void 0 ? options : {}, DEFAULTS);\n    this.storageKey = (_b = (_a = settings.auth) === null || _a === void 0 ? void 0 : _a.storageKey) !== null && _b !== void 0 ? _b : \"\";\n    this.headers = (_d = (_c = settings.global) === null || _c === void 0 ? void 0 : _c.headers) !== null && _d !== void 0 ? _d : {};\n    this.auth = this._initSupabaseAuthClient((_e = settings.auth) !== null && _e !== void 0 ? _e : {}, this.headers, (_f = settings.global) === null || _f === void 0 ? void 0 : _f.fetch);\n    this.fetch = fetchWithAuth(supabaseKey, this._getAccessToken.bind(this), (_g = settings.global) === null || _g === void 0 ? void 0 : _g.fetch);\n    this.realtime = this._initRealtimeClient(Object.assign({headers: this.headers}, settings.realtime));\n    this.rest = new PostgrestClient(`${_supabaseUrl}/rest/v1`, {\n      headers: this.headers,\n      schema: (_h = settings.db) === null || _h === void 0 ? void 0 : _h.schema,\n      fetch: this.fetch\n    });\n    this._listenForAuthEvents();\n  }\n  get functions() {\n    return new FunctionsClient(this.functionsUrl, {\n      headers: this.headers,\n      customFetch: this.fetch\n    });\n  }\n  get storage() {\n    return new StorageClient(this.storageUrl, this.headers, this.fetch);\n  }\n  from(relation) {\n    return this.rest.from(relation);\n  }\n  rpc(fn, args = {}, options) {\n    return this.rest.rpc(fn, args, options);\n  }\n  channel(name, opts = {config: {}}) {\n    return this.realtime.channel(name, opts);\n  }\n  getChannels() {\n    return this.realtime.getChannels();\n  }\n  removeChannel(channel) {\n    return this.realtime.removeChannel(channel);\n  }\n  removeAllChannels() {\n    return this.realtime.removeAllChannels();\n  }\n  _getAccessToken() {\n    var _a, _b;\n    return __awaiter$1(this, void 0, void 0, function* () {\n      const {data} = yield this.auth.getSession();\n      return (_b = (_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token) !== null && _b !== void 0 ? _b : null;\n    });\n  }\n  _initSupabaseAuthClient({autoRefreshToken, persistSession, detectSessionInUrl, storage, storageKey}, headers, fetch2) {\n    const authHeaders = {\n      Authorization: `Bearer ${this.supabaseKey}`,\n      apikey: `${this.supabaseKey}`\n    };\n    return new SupabaseAuthClient({\n      url: this.authUrl,\n      headers: Object.assign(Object.assign({}, authHeaders), headers),\n      storageKey,\n      autoRefreshToken,\n      persistSession,\n      detectSessionInUrl,\n      storage,\n      fetch: fetch2\n    });\n  }\n  _initRealtimeClient(options) {\n    return new RealtimeClient(this.realtimeUrl, Object.assign(Object.assign({}, options), {params: Object.assign({apikey: this.supabaseKey}, options === null || options === void 0 ? void 0 : options.params)}));\n  }\n  _listenForAuthEvents() {\n    let data = this.auth.onAuthStateChange((event, session) => {\n      this._handleTokenChanged(event, session === null || session === void 0 ? void 0 : session.access_token, \"CLIENT\");\n    });\n    return data;\n  }\n  _handleTokenChanged(event, token, source) {\n    if ((event === \"TOKEN_REFRESHED\" || event === \"SIGNED_IN\") && this.changedAccessToken !== token) {\n      this.realtime.setAuth(token !== null && token !== void 0 ? token : null);\n      this.changedAccessToken = token;\n    } else if (event === \"SIGNED_OUT\" || event === \"USER_DELETED\") {\n      this.realtime.setAuth(this.supabaseKey);\n      if (source == \"STORAGE\")\n        this.auth.signOut();\n      this.changedAccessToken = void 0;\n    }\n  }\n}\nconst createClient = (supabaseUrl, supabaseKey, options) => {\n  return new SupabaseClient(supabaseUrl, supabaseKey, options);\n};\nexport {SupabaseClient, createClient};\nexport default null;\n", "import {\n  useGlobalStore\n} from \"./chunk-QHMWAEE2.mjs\";\nimport {\n  triggerConversionAPI,\n  useTailwind\n} from \"./chunk-OBTVI3NH.mjs\";\nimport {\n  CLERK_SRC,\n  PUBLISHABLE_KEY,\n  showDebug\n} from \"./chunk-HLCVLHIF.mjs\";\nimport {\n  __async,\n  __spreadValues\n} from \"./chunk-JWK35I2R.mjs\";\n\n// src/auth/Init.tsx\nimport { useEffect, useLayoutEffect, useState } from \"react\";\nimport { ControlType } from \"framer\";\nimport { createClient } from \"https://cdn.skypack.dev/@supabase/supabase-js@2.10.0\";\n\n// node_modules/.pnpm/@clerk+localizations@2.8.1/node_modules/@clerk/localizations/dist/index.mjs\nvar nlNL = {\n  locale: \"nl-NL\",\n  backButton: \"Terug\",\n  badge__default: \"Standaard\",\n  badge__otherImpersonatorDevice: \"Ander immitatie apparaat\",\n  badge__primary: \"Hoofd\",\n  badge__requiresAction: \"Actie nodig\",\n  badge__thisDevice: \"Dit apparaat\",\n  badge__unverified: \"Ongeverifieerd\",\n  badge__userDevice: \"Gebruikersapparaat\",\n  badge__you: \"Jij\",\n  createOrganization: {\n    formButtonSubmit: \"Maak organisatie aan\",\n    invitePage: {\n      formButtonReset: \"Overslaan\"\n    },\n    title: \"Organisatie aanmaken\"\n  },\n  dates: {\n    lastDay: \"Gisteren om {{ date | timeString('nl-NL') }}\",\n    next6Days: \"{{ date | weekday('nl-NL','long') }} om {{ date | timeString('nl-NL') }}\",\n    nextDay: \"Morgen om {{ date | timeString('nl-NL') }}\",\n    numeric: \"{{ date | numeric('nl-NL') }}\",\n    previous6Days: \"Vorige {{ date | weekday('nl-NL','long') }} om {{ date | timeString('nl-NL') }}\",\n    sameDay: \"Vandaag om {{ date | timeString('nl-NL') }}\"\n  },\n  dividerText: \"or\",\n  footerActionLink__useAnotherMethod: \"Een andere methode gebruiken\",\n  footerPageLink__help: \"Help\",\n  footerPageLink__privacy: \"Privacy\",\n  footerPageLink__terms: \"Voorwaarden\",\n  formButtonPrimary: \"Doorgaan\",\n  formButtonPrimary__verify: \"Verify\",\n  formFieldAction__forgotPassword: \"Wachtwoord vergeten?\",\n  formFieldError__matchingPasswords: \"Passwords match.\",\n  formFieldError__notMatchingPasswords: \"Passwords don't match.\",\n  formFieldError__verificationLinkExpired: \"The verification link expired. Please request a new link.\",\n  formFieldHintText__optional: \"Optioneel\",\n  formFieldHintText__slug: \"A slug is a human-readable ID that must be unique. It\\u2019s often used in URLs.\",\n  formFieldInputPlaceholder__backupCode: \"\",\n  formFieldInputPlaceholder__confirmDeletionUserAccount: \"Delete account\",\n  formFieldInputPlaceholder__emailAddress: \"\",\n  formFieldInputPlaceholder__emailAddress_username: \"\",\n  formFieldInputPlaceholder__emailAddresses: \"Typ of plak \\xE9\\xE9n of meerdere emailadressen, gescheiden door spaties of komma's.\",\n  formFieldInputPlaceholder__firstName: \"\",\n  formFieldInputPlaceholder__lastName: \"\",\n  formFieldInputPlaceholder__organizationDomain: \"\",\n  formFieldInputPlaceholder__organizationDomainEmailAddress: \"\",\n  formFieldInputPlaceholder__organizationName: \"\",\n  formFieldInputPlaceholder__organizationSlug: \"\",\n  formFieldInputPlaceholder__password: \"\",\n  formFieldInputPlaceholder__phoneNumber: \"\",\n  formFieldInputPlaceholder__username: \"\",\n  formFieldLabel__automaticInvitations: \"Enable automatic invitations for this domain\",\n  formFieldLabel__backupCode: \"Backupcode\",\n  formFieldLabel__confirmDeletion: \"Confirmation\",\n  formFieldLabel__confirmPassword: \"Wachtwoord bevestigen\",\n  formFieldLabel__currentPassword: \"Current password\",\n  formFieldLabel__emailAddress: \"E-mailadres\",\n  formFieldLabel__emailAddress_username: \"E-mailadres of gebruikersnaam\",\n  formFieldLabel__emailAddresses: \"E-mailadressen\",\n  formFieldLabel__firstName: \"Voornaam\",\n  formFieldLabel__lastName: \"Achternaam\",\n  formFieldLabel__newPassword: \"Nieuw wachtwoord\",\n  formFieldLabel__organizationDomain: \"Domain\",\n  formFieldLabel__organizationDomainDeletePending: \"Delete pending invitations and suggestions\",\n  formFieldLabel__organizationDomainEmailAddress: \"Verification email address\",\n  formFieldLabel__organizationDomainEmailAddressDescription: \"Enter an email address under this domain to receive a code and verify this domain.\",\n  formFieldLabel__organizationName: \"Organisatienaam\",\n  formFieldLabel__organizationSlug: \"Slug\",\n  formFieldLabel__passkeyName: void 0,\n  formFieldLabel__password: \"Wachtwoord\",\n  formFieldLabel__phoneNumber: \"Telefoonnummer\",\n  formFieldLabel__role: \"Rol\",\n  formFieldLabel__signOutOfOtherSessions: \"Sign out of all other devices\",\n  formFieldLabel__username: \"Gebruikersnaam\",\n  impersonationFab: {\n    action__signOut: \"Uitloggen\",\n    title: \"Ingelogd als {{identifier}}\"\n  },\n  maintenanceMode: void 0,\n  membershipRole__admin: \"Admin\",\n  membershipRole__basicMember: \"Lid\",\n  membershipRole__guestMember: \"Gast\",\n  organizationList: {\n    action__createOrganization: \"Create organization\",\n    action__invitationAccept: \"Join\",\n    action__suggestionsAccept: \"Request to join\",\n    createOrganization: \"Create Organization\",\n    invitationAcceptedLabel: \"Joined\",\n    subtitle: \"to continue to {{applicationName}}\",\n    suggestionsAcceptedLabel: \"Pending approval\",\n    title: \"Choose an account\",\n    titleWithoutPersonal: \"Choose an organization\"\n  },\n  organizationProfile: {\n    badge__automaticInvitation: \"Automatic invitations\",\n    badge__automaticSuggestion: \"Automatic suggestions\",\n    badge__manualInvitation: \"No automatic enrollment\",\n    badge__unverified: \"Unverified\",\n    createDomainPage: {\n      subtitle: \"Add the domain to verify. Users with email addresses at this domain can join the organization automatically or request to join.\",\n      title: \"Add domain\"\n    },\n    invitePage: {\n      detailsTitle__inviteFailed: \"De uitnodigingen konden niet verzonden worden. Los het volgende op en probeer het opnieuw:\",\n      formButtonPrimary__continue: \"Uitnodigingen verzenden\",\n      selectDropdown__role: \"Select role\",\n      subtitle: \"Nodig nieuwe leden uit voor deze organisatie\",\n      successMessage: \"Uitnodigingen succesvol verzonden\",\n      title: \"Leden uitnodigen\"\n    },\n    membersPage: {\n      action__invite: \"Uitnodigen\",\n      activeMembersTab: {\n        menuAction__remove: \"Verwijder lid\",\n        tableHeader__actions: \"\",\n        tableHeader__joined: \"Toegetreden\",\n        tableHeader__role: \"Rol\",\n        tableHeader__user: \"Gebruiker\"\n      },\n      detailsTitle__emptyRow: \"Geen leden gevonden\",\n      invitationsTab: {\n        autoInvitations: {\n          headerSubtitle: \"Invite users by connecting an email domain with your organization. Anyone who signs up with a matching email domain will be able to join the organization anytime.\",\n          headerTitle: \"Automatic invitations\",\n          primaryButton: \"Manage verified domains\"\n        },\n        table__emptyRow: \"No invitations to display\"\n      },\n      invitedMembersTab: {\n        menuAction__revoke: \"Uitnodiging intrekken\",\n        tableHeader__invited: \"Uitgenodigd\"\n      },\n      requestsTab: {\n        autoSuggestions: {\n          headerSubtitle: \"Users who sign up with a matching email domain, will be able to see a suggestion to request to join your organization.\",\n          headerTitle: \"Automatic suggestions\",\n          primaryButton: \"Manage verified domains\"\n        },\n        menuAction__approve: \"Approve\",\n        menuAction__reject: \"Reject\",\n        tableHeader__requested: \"Requested access\",\n        table__emptyRow: \"No requests to display\"\n      },\n      start: {\n        headerTitle__invitations: \"Invitations\",\n        headerTitle__members: \"Members\",\n        headerTitle__requests: \"Requests\"\n      }\n    },\n    navbar: {\n      description: \"Manage your organization.\",\n      general: \"General\",\n      members: \"Members\",\n      title: \"Organization\"\n    },\n    profilePage: {\n      dangerSection: {\n        deleteOrganization: {\n          actionDescription: 'Type \"{{organizationName}}\" below to continue.',\n          messageLine1: \"Are you sure you want to delete this organization?\",\n          messageLine2: \"This action is permanent and irreversible.\",\n          successMessage: \"You have deleted the organization.\",\n          title: \"Delete organization\"\n        },\n        leaveOrganization: {\n          actionDescription: 'Type \"{{organizationName}}\" below to continue.',\n          messageLine1: \"Weet je zeker dat je deze organisatie wilt verlaten? Je zult toegang verliezen tot deze organisatie en haar applicaties.\",\n          messageLine2: \"Deze actie is permanent en onomkeerbaar.\",\n          successMessage: \"Je hebt deze organisatie verlaten.\",\n          title: \"Verlaat organisatie\"\n        },\n        title: \"Gevaar\"\n      },\n      domainSection: {\n        menuAction__manage: \"Manage\",\n        menuAction__remove: \"Delete\",\n        menuAction__verify: \"Verify\",\n        primaryButton: \"Add domain\",\n        subtitle: \"Allow users to join the organization automatically or request to join based on a verified email domain.\",\n        title: \"Verified domains\"\n      },\n      successMessage: \"De organisatie is bijgewerkt.\",\n      title: \"Organisatieprofiel\"\n    },\n    removeDomainPage: {\n      messageLine1: \"The email domain {{domain}} will be removed.\",\n      messageLine2: \"Users won\\u2019t be able to join the organization automatically after this.\",\n      successMessage: \"{{domain}} has been removed.\",\n      title: \"Remove domain\"\n    },\n    start: {\n      headerTitle__general: \"General\",\n      headerTitle__members: \"Leden\",\n      profileSection: {\n        primaryButton: \"\",\n        title: \"Organization Profile\",\n        uploadAction__title: \"Logo\"\n      }\n    },\n    verifiedDomainPage: {\n      dangerTab: {\n        calloutInfoLabel: \"Removing this domain will affect invited users.\",\n        removeDomainActionLabel__remove: \"Remove domain\",\n        removeDomainSubtitle: \"Remove this domain from your verified domains\",\n        removeDomainTitle: \"Remove domain\"\n      },\n      enrollmentTab: {\n        automaticInvitationOption__description: \"Users are automatically invited to join the organization when they sign-up and can join anytime.\",\n        automaticInvitationOption__label: \"Automatic invitations\",\n        automaticSuggestionOption__description: \"Users receive a suggestion to request to join, but must be approved by an admin before they are able to join the organization.\",\n        automaticSuggestionOption__label: \"Automatic suggestions\",\n        calloutInfoLabel: \"Changing the enrollment mode will only affect new users.\",\n        calloutInvitationCountLabel: \"Pending invitations sent to users: {{count}}\",\n        calloutSuggestionCountLabel: \"Pending suggestions sent to users: {{count}}\",\n        manualInvitationOption__description: \"Users can only be invited manually to the organization.\",\n        manualInvitationOption__label: \"No automatic enrollment\",\n        subtitle: \"Choose how users from this domain can join the organization.\"\n      },\n      start: {\n        headerTitle__danger: \"Danger\",\n        headerTitle__enrollment: \"Enrollment options\"\n      },\n      subtitle: \"The domain {{domain}} is now verified. Continue by selecting enrollment mode.\",\n      title: \"Update {{domain}}\"\n    },\n    verifyDomainPage: {\n      formSubtitle: \"Enter the verification code sent to your email address\",\n      formTitle: \"Verification code\",\n      resendButton: \"Didn't receive a code? Resend\",\n      subtitle: \"The domain {{domainName}} needs to be verified via email.\",\n      subtitleVerificationCodeScreen: \"A verification code was sent to {{emailAddress}}. Enter the code to continue.\",\n      title: \"Verify domain\"\n    }\n  },\n  organizationSwitcher: {\n    action__createOrganization: \"Maak organisatie aan\",\n    action__invitationAccept: \"Join\",\n    action__manageOrganization: \"Beheer organisatie\",\n    action__suggestionsAccept: \"Request to join\",\n    notSelected: \"Geen organisatie geselecteerd\",\n    personalWorkspace: \"Persoonlijke werkruimte\",\n    suggestionsAcceptedLabel: \"Pending approval\"\n  },\n  paginationButton__next: \"Volgende\",\n  paginationButton__previous: \"Vorige\",\n  paginationRowText__displaying: \"Weergeven\",\n  paginationRowText__of: \"van\",\n  signIn: {\n    accountSwitcher: {\n      action__addAccount: \"Add account\",\n      action__signOutAll: \"Sign out of all accounts\",\n      subtitle: \"Select the account with which you wish to continue.\",\n      title: \"Choose an account\"\n    },\n    alternativeMethods: {\n      actionLink: \"Help\",\n      actionText: \"Don\\u2019t have any of these?\",\n      blockButton__backupCode: \"Gebruik een backupcode\",\n      blockButton__emailCode: \"Verzend code naar {{identifier}}\",\n      blockButton__emailLink: \"Verzend link naar {{identifier}}\",\n      blockButton__passkey: void 0,\n      blockButton__password: \"Inloggen met je wachtwoord\",\n      blockButton__phoneCode: \"Verzend code naar {{identifier}}\",\n      blockButton__totp: \"Gebruik je authenticator app\",\n      getHelp: {\n        blockButton__emailSupport: \"E-mail klantenservice\",\n        content: \"Als je geen toegang hebt neem dan contact op met de klantenservice en we helpen je verder.\",\n        title: \"Help\"\n      },\n      subtitle: \"Facing issues? You can use any of these methods to sign in.\",\n      title: \"Gebruik een andere methode\"\n    },\n    backupCodeMfa: {\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Voer een backupcode in\"\n    },\n    emailCode: {\n      formTitle: \"Verificatiecode\",\n      resendButton: \"Verstuur code opnieuw\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Check je e-mail\"\n    },\n    emailLink: {\n      clientMismatch: {\n        subtitle: void 0,\n        title: void 0\n      },\n      expired: {\n        subtitle: \"Ga naar de oorspronkelijke tab om verder te gaan.\",\n        title: \"Deze verificatielink is verlopen\"\n      },\n      failed: {\n        subtitle: \"Ga naar de oorspronkelijke tab om verder te gaan.\",\n        title: \"Deze verificatielink is niet geldig\"\n      },\n      formSubtitle: \"Gebruik de verificatielink die verzonden is naar je e-mailadres\",\n      formTitle: \"Verificatielink\",\n      loading: {\n        subtitle: \"Je zal weldra doorgestuurd worden\",\n        title: \"Inloggen ...\"\n      },\n      resendButton: \"Verstuur link opnieuw\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Check je e-mail\",\n      unusedTab: {\n        title: \"Je kan deze tab sluiten.\"\n      },\n      verified: {\n        subtitle: \"Je zal weldra doorgestuurd worden\",\n        title: \"Successvol ingelogd\"\n      },\n      verifiedSwitchTab: {\n        subtitle: \"Ga naar de oorspronkelijke tab om verder te gaan\",\n        subtitleNewTab: \"Ga naar de pasgeopende tab om verder te gaan\",\n        titleNewTab: \"Ingelogd in andere tab\"\n      }\n    },\n    forgotPassword: {\n      formTitle: \"Reset password code\",\n      resendButton: \"Didn't receive a code? Resend\",\n      subtitle: \"to reset your password\",\n      subtitle_email: \"First, enter the code sent to your email ID\",\n      subtitle_phone: \"First, enter the code sent to your phone\",\n      title: \"Reset password\"\n    },\n    forgotPasswordAlternativeMethods: {\n      blockButton__resetPassword: \"Reset your password\",\n      label__alternativeMethods: \"Or, sign in with another method\",\n      title: \"Forgot Password?\"\n    },\n    noAvailableMethods: {\n      message: \"Het is niet mogelijk om door te gaan met inloggen. Er is geen beschikbare authenticatiefactor.\",\n      subtitle: \"Er heeft zich een fout voorgedaan\",\n      title: \"Inloggen onmogelijk\"\n    },\n    passkey: {\n      subtitle: void 0,\n      title: void 0\n    },\n    password: {\n      actionLink: \"Gebruik een andere methode\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Vul je wachtwoord in\"\n    },\n    passwordPwned: {\n      title: void 0\n    },\n    phoneCode: {\n      formTitle: \"Verificatie code\",\n      resendButton: \"Verstuur code opnieuw\",\n      subtitle: \"om verder te gaan naar {{applicationName}}\",\n      title: \"Check je telefoon\"\n    },\n    phoneCodeMfa: {\n      formTitle: \"Verificatie code\",\n      resendButton: \"Verstuur code opnieuw\",\n      subtitle: \"\",\n      title: \"Check je telefoon\"\n    },\n    resetPassword: {\n      formButtonPrimary: \"Reset Password\",\n      requiredMessage: \"For security reasons, it is required to reset your password.\",\n      successMessage: \"Your password was successfully changed. Signing you in, please wait a moment.\",\n      title: \"Set new password\"\n    },\n    resetPasswordMfa: {\n      detailsLabel: \"We need to verify your identity before resetting your password.\"\n    },\n    start: {\n      actionLink: \"Registreren\",\n      actionLink__use_email: \"Use email\",\n      actionLink__use_email_username: \"Use email or username\",\n      actionLink__use_passkey: void 0,\n      actionLink__use_phone: \"Use phone\",\n      actionLink__use_username: \"Use username\",\n      actionText: \"Geen account?\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Log in\"\n    },\n    totpMfa: {\n      formTitle: \"Verificatiecode\",\n      subtitle: \"\",\n      title: \"Tweestapsverificatie\"\n    }\n  },\n  signInEnterPasswordTitle: \"Vul je wachtwoord in\",\n  signUp: {\n    continue: {\n      actionLink: \"Inloggen\",\n      actionText: \"Heb je een account?\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Vul de ontbrekende velden in\"\n    },\n    emailCode: {\n      formSubtitle: \"Voer de verificatiecode in die verzonden is naar je e-mailadres\",\n      formTitle: \"Verificatiecode\",\n      resendButton: \"Verstuur code opnieuw\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Bevestig je e-mailadres\"\n    },\n    emailLink: {\n      clientMismatch: {\n        subtitle: void 0,\n        title: void 0\n      },\n      formSubtitle: \"Gebruik de verificatielink die verzonden is naar je e-mailadres\",\n      formTitle: \"Verificatielink\",\n      loading: {\n        title: \"Registreren ...\"\n      },\n      resendButton: \"Verstuur link opnieuw\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Bevestig je e-mailadres\",\n      verified: {\n        title: \"Succesvol geregistreerd\"\n      },\n      verifiedSwitchTab: {\n        subtitle: \"Ga naar de pas geopende tab om verder te gaan\",\n        subtitleNewTab: \"Ga naar de vorige tab om verder te gaan\",\n        title: \"E-mail bevestigd\"\n      }\n    },\n    phoneCode: {\n      formSubtitle: \"Voer de verificatiecode in die verzonden is naar je telefoonnummer\",\n      formTitle: \"Verificatiecode\",\n      resendButton: \"Verstuur code opnieuw\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Bevestig je telefoonnummer\"\n    },\n    start: {\n      actionLink: \"Inloggen\",\n      actionLink__use_email: void 0,\n      actionLink__use_phone: void 0,\n      actionText: \"Heb je al een account?\",\n      subtitle: \"om door te gaan naar {{applicationName}}\",\n      title: \"Maak je account aan\"\n    }\n  },\n  socialButtonsBlockButton: \"Ga verder met {{provider|titleize}}\",\n  socialButtonsBlockButtonManyInView: void 0,\n  unstable__errors: {\n    captcha_invalid: \"Sign up unsuccessful due to failed security validations. Please refresh the page to try again or reach out to support for more assistance.\",\n    captcha_unavailable: \"Sign up unsuccessful due to failed bot validation. Please refresh the page to try again or reach out to support for more assistance.\",\n    form_code_incorrect: \"\",\n    form_identifier_exists: \"\",\n    form_identifier_exists__email_address: void 0,\n    form_identifier_exists__phone_number: void 0,\n    form_identifier_exists__username: void 0,\n    form_identifier_not_found: \"\",\n    form_param_format_invalid: \"\",\n    form_param_format_invalid__email_address: \"Email address must be a valid email address.\",\n    form_param_format_invalid__phone_number: \"Phone number must be in a valid international format\",\n    form_param_max_length_exceeded__first_name: \"First name should not exceed 256 characters.\",\n    form_param_max_length_exceeded__last_name: \"Last name should not exceed 256 characters.\",\n    form_param_max_length_exceeded__name: \"Name should not exceed 256 characters.\",\n    form_param_nil: \"\",\n    form_password_incorrect: \"\",\n    form_password_length_too_short: \"\",\n    form_password_not_strong_enough: \"Your password is not strong enough.\",\n    form_password_pwned: \"\",\n    form_password_pwned__sign_in: void 0,\n    form_password_size_in_bytes_exceeded: \"Your password has exceeded the maximum number of bytes allowed, please shorten it or remove some special characters.\",\n    form_password_validation_failed: \"Incorrect Password\",\n    form_username_invalid_character: \"\",\n    form_username_invalid_length: \"\",\n    identification_deletion_failed: \"You cannot delete your last identification.\",\n    not_allowed_access: \"\",\n    passkey_already_exists: void 0,\n    passkey_not_supported: void 0,\n    passkey_pa_not_supported: void 0,\n    passkey_registration_cancelled: void 0,\n    passkey_retrieval_cancelled: void 0,\n    passwordComplexity: {\n      maximumLength: \"\",\n      minimumLength: \"\",\n      requireLowercase: \"\",\n      requireNumbers: \"\",\n      requireSpecialCharacter: \"\",\n      requireUppercase: \"\",\n      sentencePrefix: \"\"\n    },\n    phone_number_exists: \"This phone number is taken. Please try another.\",\n    zxcvbn: {\n      couldBeStronger: \"Your password works, but could be stronger. Try adding more characters.\",\n      goodPassword: \"Your password meets all the necessary requirements.\",\n      notEnough: \"Je wachtwoord is niet sterk genoeg.\",\n      suggestions: {\n        allUppercase: \"Zet een deel in hoofdletters, maar niet alle letters.\",\n        anotherWord: \"Voeg meer woorden toe die minder vaak voorkomen.\",\n        associatedYears: \"Vermijd jaartallen die met jou geassocieerd zijn.\",\n        capitalization: \"Zet meer dan de eerste letter in hoofdletter.\",\n        dates: \"Vermijd data en jaartallen die met jou geassocieerd zijn.\",\n        l33t: \"Vermijd voorspelbare vervangingen, zoals '@' voor 'a'.\",\n        longerKeyboardPattern: \"Gebruik langere toetsenbord patronen, en wissel meerdere keren van richting.\",\n        noNeed: \"Je kan ook een sterk wachtwoord maken zonder speciale tekens, hoofdletters of nummers.\",\n        pwned: \"Als u dit wachtwoord elders gebruikt, moet u het veranderen.\",\n        recentYears: \"Vermijd recente jaartallen.\",\n        repeated: \"Vermijd herhalende woorden en letters.\",\n        reverseWords: \"Vermijd het omdraaien van veelvoorkomende woorden.\",\n        sequences: \"Vermijd veelvoorkomende tekstreeksen.\",\n        useWords: \"Gebruik meerdere woorden, maar vermijd veelvoorkomende zinnen.\"\n      },\n      warnings: {\n        common: \"Dit wachtwoord wordt veel gebruikt.\",\n        commonNames: \"Veelvoorkomende voor- en achternamen zijn makkelijk te raden.\",\n        dates: \"Datums zijn makkelijk te raden.\",\n        extendedRepeat: 'Herhalende patronen zoals \"abcabcabc\" zijn makkelijk te raden.',\n        keyPattern: \"Korte toetsenbord patronen zijn makkelijk te raden.\",\n        namesByThemselves: \"Voor- en achternamen op zich zijn makkelijk te raden.\",\n        pwned: \"Dit wachtwoord is in een datalek gevonden.\",\n        recentYears: \"Recente jaartallen zijn makkelijk te raden.\",\n        sequences: 'Veelvoorkomende tekstreeksen zoals \"abc\" zijn makkelijk te raden.',\n        similarToCommon: \"Dit lijkt op een veelvoorkomend wachtwoord.\",\n        simpleRepeat: 'Herhalende letters zoals \"aaa\" zijn makkelijk te raden.',\n        straightRow: \"Opeenvolgende toetsen op jouw toetsenbord zijn makkelijk te raden.\",\n        topHundred: \"Dit wachtwoord wordt erg veel gebruikt.\",\n        topTen: \"Dit wachtwoord wordt heel erg veel gebruikt.\",\n        userInputs: \"Vermijd persoonlijke of website gerelateerde woorden.\",\n        wordByItself: \"Woorden op zich zijn makkelijk te raden.\"\n      }\n    }\n  },\n  userButton: {\n    action__addAccount: \"Account toevoegen\",\n    action__manageAccount: \"Account beheren\",\n    action__signOut: \"Uitloggen\",\n    action__signOutAll: \"Uitloggen uit alle accounts\"\n  },\n  userProfile: {\n    backupCodePage: {\n      actionLabel__copied: \"Gekopieerd!\",\n      actionLabel__copy: \"Kopieer\",\n      actionLabel__download: \"Download .txt\",\n      actionLabel__print: \"Print\",\n      infoText1: \"Backupcodes zullen voor dit account ingeschakeld zijn.\",\n      infoText2: \"Houd de backupcodes geheim en bewaar ze veilig. U kunt backupcodes opnieuw genereren als u vermoedt dat ze zijn aangetast.\",\n      subtitle__codelist: \"Sla ze veilig op en hou ze geheim.\",\n      successMessage: \"Backupcodes zijn nu ingeschakeld. U kunt er een van gebruiken om in te loggen op uw account als u geen toegang meer heeft tot uw authenticatieapparaat. Elke code kan maar \\xE9\\xE9n keer gebruikt worden.\",\n      successSubtitle: \"Je kunt \\xE9\\xE9n van deze gebruiken om in te loggen op je account als je geen toegang meer hebt tot je authenticatieapparaat.\",\n      title: \"Voeg backup code verificatie toe\",\n      title__codelist: \"Backup codes\"\n    },\n    connectedAccountPage: {\n      formHint: \"Kies een provider om je account te verbinden.\",\n      formHint__noAccounts: \"Er zijn geen beschikbare externe accountproviders.\",\n      removeResource: {\n        messageLine1: \"{{identifier}} zal verwijderd worden uit dit account.\",\n        messageLine2: \"Je kunt deze verbonden account niet meer gebruiken en afhankelijke functies zullen niet meer werken.\",\n        successMessage: \"{{connectedAccount}} is verwijderd uit je account.\",\n        title: \"Verwijder externe account\"\n      },\n      socialButtonsBlockButton: \"Verbind {{provider|titleize}} account\",\n      successMessage: \"Deze provider is toegevoegd aan je account.\",\n      title: \"Verbind externe account\"\n    },\n    deletePage: {\n      actionDescription: 'Type \"Delete account\" below to continue.',\n      confirm: \"Delete account\",\n      messageLine1: \"Are you sure you want to delete your account?\",\n      messageLine2: \"This action is permanent and irreversible.\",\n      title: \"Delete account\"\n    },\n    emailAddressPage: {\n      emailCode: {\n        formHint: \"Een mail met daarin een verificatiecode is verstuurd naar dit adres.\",\n        formSubtitle: \"Voer de verificatiecode in die verstuurd is naar {{identifier}}\",\n        formTitle: \"Verificatiecode\",\n        resendButton: \"Verstuur code opnieuw\",\n        successMessage: \"Het e-mailadres {{identifier}} is toegevoegd aan je account.\"\n      },\n      emailLink: {\n        formHint: \"Een mail met daarin een verificatielink is verstuurd naar dit adres.\",\n        formSubtitle: \"Klik op de verificatielink die verstuurd is naar {{identifier}}\",\n        formTitle: \"Verificatielink\",\n        resendButton: \"Verstuur link opnieuw\",\n        successMessage: \"Het e-mailadres {{identifier}} is toegevoegd aan je account.\"\n      },\n      removeResource: {\n        messageLine1: \"{{identifier}} zal verwijderd worden uit dit account.\",\n        messageLine2: \"Je zal niet meer kunnen inloggen met dit e-mailadres.\",\n        successMessage: \"{{emailAddress}} is verwijderd uit je account.\",\n        title: \"Verwijder e-mailadres\"\n      },\n      title: \"E-mailadres toevoegen\",\n      verifyTitle: \"Verify email address\"\n    },\n    formButtonPrimary__add: \"Add\",\n    formButtonPrimary__continue: \"Doorgaan\",\n    formButtonPrimary__finish: \"Afronden\",\n    formButtonPrimary__remove: \"Remove\",\n    formButtonPrimary__save: \"Save\",\n    formButtonReset: \"Annuleren\",\n    mfaPage: {\n      formHint: \"Kies een methode om toe te voegen.\",\n      title: \"Tweestapsverificatie toevoegen\"\n    },\n    mfaPhoneCodePage: {\n      backButton: \"Use existing number\",\n      primaryButton__addPhoneNumber: \"Telefoonnummer toevoegen\",\n      removeResource: {\n        messageLine1: \"{{identifier}} zal niet langer verificatiecodes ontvangen bij het inloggen.\",\n        messageLine2: \"Uw account is mogelijk niet zo veilig. Weet je zeker dat je door wilt gaan?\",\n        successMessage: \"SMS-code tweestapsverificatie is verwijderd voor {{mfaPhoneCode}}\",\n        title: \"Verwijder tweestapsverificatie\"\n      },\n      subtitle__availablePhoneNumbers: \"Selecteer een telefoonnummer om je te registreren voor SMS-code twee-stapsverificatie.\",\n      subtitle__unavailablePhoneNumbers: \"Er zijn geen beschikbare telefoonnummers om te registreren voor SMS-code tweestapsverificatie.\",\n      successMessage1: \"When signing in, you will need to enter a verification code sent to this phone number as an additional step.\",\n      successMessage2: \"Save these backup codes and store them somewhere safe. If you lose access to your authentication device, you can use backup codes to sign in.\",\n      successTitle: \"SMS code verification enabled\",\n      title: \"Voeg SMS-code verificatie toe\"\n    },\n    mfaTOTPPage: {\n      authenticatorApp: {\n        buttonAbleToScan__nonPrimary: \"Alternatief, scan een QR code\",\n        buttonUnableToScan__nonPrimary: \"Kan je de code niet scannen?\",\n        infoText__ableToScan: \"Scan de QR code met je authenticator app om de authenticator toe te voegen.\",\n        infoText__unableToScan: \"Stel een nieuwe aanmeldmethode in op je authenticator en voer de onderstaande sleutel in.\",\n        inputLabel__unableToScan1: \"Zorg ervoor dat tijdsgebaseerde of eenmalige wachtwoorden zijn ingeschakeld, en voltooi vervolgens het koppelen van uw account.\",\n        inputLabel__unableToScan2: \"Als je authenticator TOTP-URI's ondersteunt, kun je ook de volledige URI kopi\\xEBren.\"\n      },\n      removeResource: {\n        messageLine1: \"Verificatiecodes van deze authenticator zullen niet langer vereist zijn bij het inloggen.\",\n        messageLine2: \"Uw account is mogelijk niet zo veilig. Weet je zeker dat je door wilt gaan?\",\n        successMessage: \"Tweestapsverificatie via authenticator-applicatie is verwijderd.\",\n        title: \"Verwijder tweestapsverificatie\"\n      },\n      successMessage: \"Tweestapsverificatie is nu ingesteld. Bij het inloggen zal je een verificatiecode van je authenticator app moeten invoeren.\",\n      title: \"Voeg authenticator toe\",\n      verifySubtitle: \"Voer de verificatiecode in die je authenticator app heeft gegenereerd.\",\n      verifyTitle: \"Verificatiecode\"\n    },\n    mobileButton__menu: \"Menu\",\n    navbar: {\n      account: \"Profile\",\n      description: \"Manage your account info.\",\n      security: \"Security\",\n      title: \"Account\"\n    },\n    passkeyScreen: {\n      removeResource: {\n        messageLine1: void 0,\n        title: void 0\n      },\n      subtitle__rename: void 0,\n      title__rename: void 0\n    },\n    passwordPage: {\n      checkboxInfoText__signOutOfOtherSessions: \"It is recommended to sign out of all other devices which may have used your old password.\",\n      readonly: \"Your password can currently not be edited because you can sign in only via the enterprise connection.\",\n      successMessage__set: \"Je wachtwoord is ingesteld.\",\n      successMessage__signOutOfOtherSessions: \"All other devices have been signed out.\",\n      successMessage__update: \"Your password has been updated.\",\n      title__set: \"Stel wachtwoord in\",\n      title__update: \"Change password\"\n    },\n    phoneNumberPage: {\n      infoText: \"Een SMS met daarin een verificatiecode is verstuurd naar dit nummer.\",\n      removeResource: {\n        messageLine1: \"{{identifier}} zal van deze account verwijderd worden.\",\n        messageLine2: \"Je zal niet meer kunnen inloggen met dit telefoonnummer.\",\n        successMessage: \"{{phoneNumber}} is verwijderd uit je account.\",\n        title: \"Verwijder telefoonnummer\"\n      },\n      successMessage: \"{{identifier}} is toegevoegd aan je account.\",\n      title: \"Telefoonnummer toevoegen\",\n      verifySubtitle: \"Enter the verification code sent to {{identifier}}\",\n      verifyTitle: \"Verify phone number\"\n    },\n    profilePage: {\n      fileDropAreaHint: \"Upload een JPG, PNG, GIF, of WEBP afbeelding kleiner dan 10 MB\",\n      imageFormDestructiveActionSubtitle: \"Verwijder afbeelding\",\n      imageFormSubtitle: \"Afbeelding uploaden\",\n      imageFormTitle: \"Profielfoto\",\n      readonly: \"Your profile information has been provided by the enterprise connection and cannot be edited.\",\n      successMessage: \"Je profiel is bijgewerkt.\",\n      title: \"Profiel bijwerken\"\n    },\n    start: {\n      activeDevicesSection: {\n        destructiveAction: \"Log uit op apparaat\",\n        title: \"Actieve apparaten\"\n      },\n      connectedAccountsSection: {\n        actionLabel__connectionFailed: \"Probeer opnieuw\",\n        actionLabel__reauthorize: \"Authoriseer nu\",\n        destructiveActionTitle: \"Verwijderen\",\n        primaryButton: \"Verbind een account\",\n        subtitle__disconnected: void 0,\n        subtitle__reauthorize: \"The required scopes have been updated, and you may be experiencing limited functionality. Please re-authorize this application to avoid any issues\",\n        title: \"Aangesloten accounts\"\n      },\n      dangerSection: {\n        deleteAccountButton: \"Delete Account\",\n        title: \"Account termination\"\n      },\n      emailAddressesSection: {\n        destructiveAction: \"Verwijder e-mailadres\",\n        detailsAction__nonPrimary: \"Stel in als hoofd\",\n        detailsAction__primary: \"Rond verificatie af\",\n        detailsAction__unverified: \"Rond verificatie af\",\n        primaryButton: \"Voeg een e-mailadres toe\",\n        title: \"E-mailadressen\"\n      },\n      enterpriseAccountsSection: {\n        title: \"Enterprise accounts\"\n      },\n      headerTitle__account: \"Account\",\n      headerTitle__security: \"Beveiliging\",\n      mfaSection: {\n        backupCodes: {\n          actionLabel__regenerate: \"Hergenereer codes\",\n          headerTitle: \"Backupcodes\",\n          subtitle__regenerate: \"Genereer een nieuwe set backupcodes. De vorige kunnen niet meer gebruikt worden.\",\n          title__regenerate: \"Hergenereer backupcodes\"\n        },\n        phoneCode: {\n          actionLabel__setDefault: \"Stel in als standaard\",\n          destructiveActionLabel: \"Verwijder telefoonnummer\"\n        },\n        primaryButton: \"Tweestapsverificatie instellen\",\n        title: \"Tweestapsverificatie\",\n        totp: {\n          destructiveActionTitle: \"Verwijderen\",\n          headerTitle: \"Authenticatorapplicatie\"\n        }\n      },\n      passkeysSection: {\n        menuAction__destructive: void 0,\n        menuAction__rename: void 0,\n        title: void 0\n      },\n      passwordSection: {\n        primaryButton__setPassword: \"Wachtwoord instellen\",\n        primaryButton__updatePassword: \"Wachtwoord wijzigen\",\n        title: \"Wachtwoord\"\n      },\n      phoneNumbersSection: {\n        destructiveAction: \"Verwijder telefoonnummer\",\n        detailsAction__nonPrimary: \"Stel in als hoofd\",\n        detailsAction__primary: \"Rond verificatie af\",\n        detailsAction__unverified: \"Rond verificatie af\",\n        primaryButton: \"Voeg een telefoonnummer toe\",\n        title: \"Telefoonnummers\"\n      },\n      profileSection: {\n        primaryButton: \"\",\n        title: \"Profiel\"\n      },\n      usernameSection: {\n        primaryButton__setUsername: \"Stel gebruikersnaam in\",\n        primaryButton__updateUsername: \"Wijzig gebruikersnaam\",\n        title: \"Gebruikersnaam\"\n      },\n      web3WalletsSection: {\n        destructiveAction: \"Verwijder portefeuille\",\n        primaryButton: \"Web3 portefeuilles\",\n        title: \"Web3 portefeuilles\"\n      }\n    },\n    usernamePage: {\n      successMessage: \"Je gebruikersnaam is bijgewerkt.\",\n      title__set: \"Gebruikersnaam bijwerken\",\n      title__update: \"Gebruikersnaam bijwerken\"\n    },\n    web3WalletPage: {\n      removeResource: {\n        messageLine1: \"{{identifier}} zal verwijderd worden uit dit account.\",\n        messageLine2: \"Je zal niet meer kunnen inloggen met deze web3 portefeuille.\",\n        successMessage: \"{{web3Wallet}} is verwijderd uit je account.\",\n        title: \"Verwijder web3 portefeuille\"\n      },\n      subtitle__availableWallets: \"Selecteer een web3 portefeuille om toe te voegen.\",\n      subtitle__unavailableWallets: \"Er zijn geen beschikbare web3 portefeuilles.\",\n      successMessage: \"De portefeuille is toegevoegd aan dit account.\",\n      title: \"Web3 portefeuille toevoegen.\"\n    }\n  }\n};\nvar nlBE = __spreadValues({\n  locale: \"nl-BE\"\n}, nlNL);\nvar koKR = {\n  locale: \"ko-KR\",\n  backButton: \"\\uB3CC\\uC544\\uAC00\\uAE30\",\n  badge__default: \"\\uAE30\\uBCF8\\uAC12\",\n  badge__otherImpersonatorDevice: \"\\uAE30\\uD0C0 \\uC0AC\\uCE6D \\uC7A5\\uCE58\",\n  badge__primary: \"\\uAE30\\uBCF8\",\n  badge__requiresAction: \"\\uC870\\uCE58 \\uD544\\uC694\",\n  badge__thisDevice: \"\\uC774 \\uC7A5\\uCE58\",\n  badge__unverified: \"\\uBBF8\\uD655\\uC778\",\n  badge__userDevice: \"\\uC0AC\\uC6A9\\uC790 \\uC7A5\\uCE58\",\n  badge__you: \"\\uB2F9\\uC2E0\",\n  createOrganization: {\n    formButtonSubmit: \"\\uC870\\uC9C1 \\uB9CC\\uB4E4\\uAE30\",\n    invitePage: {\n      formButtonReset: \"\\uB118\\uAE30\\uAE30\"\n    },\n    title: \"\\uC870\\uC9C1 \\uB9CC\\uB4E4\\uAE30\"\n  },\n  dates: {\n    lastDay: \"\\uC5B4\\uC81C {{ date | timeString('ko-KR') }}\",\n    next6Days: \"\\uB2E4\\uC74C {{ date | weekday('ko-KR','long') }} {{ date | timeString('ko-KR') }}\",\n    nextDay: \"\\uB0B4\\uC77C {{ date | timeString('ko-KR') }}\",\n    numeric: \"{{ date | numeric('ko-KR') }}\",\n    previous6Days: \"\\uC9C0\\uB09C {{ date | weekday('ko-KR','long') }} {{ date | timeString('ko-KR') }}\",\n    sameDay: \"\\uC624\\uB298 {{ date | timeString('ko-KR') }}\"\n  },\n  dividerText: \"\\uB610\\uB294\",\n  footerActionLink__useAnotherMethod: \"\\uB2E4\\uB978 \\uBC29\\uBC95 \\uC0AC\\uC6A9\\uD558\\uAE30\",\n  footerPageLink__help: \"\\uB3C4\\uC6C0\",\n  footerPageLink__privacy: \"\\uAC1C\\uC778\\uC815\\uBCF4\\uCC98\\uB9AC\\uBC29\\uCE68\",\n  footerPageLink__terms: \"\\uC57D\\uAD00\",\n  formButtonPrimary: \"\\uACC4\\uC18D\",\n  formButtonPrimary__verify: \"Verify\",\n  formFieldAction__forgotPassword: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC78A\\uC73C\\uC168\\uB098\\uC694?\",\n  formFieldError__matchingPasswords: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uC77C\\uCE58\\uD569\\uB2C8\\uB2E4.\",\n  formFieldError__notMatchingPasswords: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uC77C\\uCE58\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\n  formFieldError__verificationLinkExpired: \"The verification link expired. Please request a new link.\",\n  formFieldHintText__optional: \"\\uC120\\uD0DD\\uC0AC\\uD56D\",\n  formFieldHintText__slug: \"A slug is a human-readable ID that must be unique. It\\u2019s often used in URLs.\",\n  formFieldInputPlaceholder__backupCode: \"\",\n  formFieldInputPlaceholder__confirmDeletionUserAccount: \"\\uACC4\\uC815 \\uC0AD\\uC81C\",\n  formFieldInputPlaceholder__emailAddress: \"\",\n  formFieldInputPlaceholder__emailAddress_username: \"\",\n  formFieldInputPlaceholder__emailAddresses: \"\\uD558\\uB098 \\uC774\\uC0C1\\uC758 \\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\\uB97C \\uACF5\\uBC31 \\uB610\\uB294 \\uC27C\\uD45C\\uB85C \\uAD6C\\uBD84\\uD558\\uC5EC \\uC785\\uB825\\uD558\\uAC70\\uB098 \\uBD99\\uC5EC\\uB123\\uC2B5\\uB2C8\\uB2E4\",\n  formFieldInputPlaceholder__firstName: \"\",\n  formFieldInputPlaceholder__lastName: \"\",\n  formFieldInputPlaceholder__organizationDomain: \"\",\n  formFieldInputPlaceholder__organizationDomainEmailAddress: \"\",\n  formFieldInputPlaceholder__organizationName: \"\",\n  formFieldInputPlaceholder__organizationSlug: \"\",\n  formFieldInputPlaceholder__password: \"\",\n  formFieldInputPlaceholder__phoneNumber: \"\",\n  formFieldInputPlaceholder__username: \"\",\n  formFieldLabel__automaticInvitations: \"Enable automatic invitations for this domain\",\n  formFieldLabel__backupCode: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC\",\n  formFieldLabel__confirmDeletion: \"\\uD655\\uC778\",\n  formFieldLabel__confirmPassword: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uD655\\uC778\",\n  formFieldLabel__currentPassword: \"\\uD604\\uC7AC \\uBE44\\uBC00\\uBC88\\uD638\",\n  formFieldLabel__emailAddress: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\",\n  formFieldLabel__emailAddress_username: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C \\uD639\\uC740 \\uC0AC\\uC6A9\\uC790 \\uC774\\uB984\",\n  formFieldLabel__emailAddresses: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\",\n  formFieldLabel__firstName: \"\\uC774\\uB984\",\n  formFieldLabel__lastName: \"\\uC131\",\n  formFieldLabel__newPassword: \"\\uC0C8 \\uBE44\\uBC00\\uBC88\\uD638\",\n  formFieldLabel__organizationDomain: \"\\uB3C4\\uBA54\\uC778\",\n  formFieldLabel__organizationDomainDeletePending: \"Delete pending invitations and suggestions\",\n  formFieldLabel__organizationDomainEmailAddress: \"Verification email address\",\n  formFieldLabel__organizationDomainEmailAddressDescription: \"Enter an email address under this domain to receive a code and verify this domain.\",\n  formFieldLabel__organizationName: \"\\uC774\\uB984\",\n  formFieldLabel__organizationSlug: \"\\uC2AC\\uB7EC\\uADF8\",\n  formFieldLabel__passkeyName: void 0,\n  formFieldLabel__password: \"\\uBE44\\uBC00\\uBC88\\uD638\",\n  formFieldLabel__phoneNumber: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638\",\n  formFieldLabel__role: \"\\uC5ED\\uD560\",\n  formFieldLabel__signOutOfOtherSessions: \"\\uB2E4\\uB978 \\uBAA8\\uB4E0 \\uAE30\\uAE30\\uC5D0\\uC11C \\uB85C\\uADF8\\uC544\\uC6C3\",\n  formFieldLabel__username: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984\",\n  impersonationFab: {\n    action__signOut: \"\\uB85C\\uADF8\\uC544\\uC6C3\",\n    title: \"{{identifier}}\\uB85C \\uB85C\\uADF8\\uC778\\uD588\\uC2B5\\uB2C8\\uB2E4\"\n  },\n  maintenanceMode: void 0,\n  membershipRole__admin: \"\\uAD00\\uB9AC\\uC790\",\n  membershipRole__basicMember: \"\\uBA64\\uBC84\",\n  membershipRole__guestMember: \"\\uAC8C\\uC2A4\\uD2B8\",\n  organizationList: {\n    action__createOrganization: \"Create organization\",\n    action__invitationAccept: \"Join\",\n    action__suggestionsAccept: \"Request to join\",\n    createOrganization: \"Create Organization\",\n    invitationAcceptedLabel: \"Joined\",\n    subtitle: \"to continue to {{applicationName}}\",\n    suggestionsAcceptedLabel: \"Pending approval\",\n    title: \"Choose an account\",\n    titleWithoutPersonal: \"Choose an organization\"\n  },\n  organizationProfile: {\n    badge__automaticInvitation: \"Automatic invitations\",\n    badge__automaticSuggestion: \"Automatic suggestions\",\n    badge__manualInvitation: \"No automatic enrollment\",\n    badge__unverified: \"Unverified\",\n    createDomainPage: {\n      subtitle: \"Add the domain to verify. Users with email addresses at this domain can join the organization automatically or request to join.\",\n      title: \"Add domain\"\n    },\n    invitePage: {\n      detailsTitle__inviteFailed: \"\\uCD08\\uB300\\uB97C \\uBCF4\\uB0BC \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uB2E4\\uC74C\\uC744 \\uC218\\uC815\\uD558\\uACE0 \\uB2E4\\uC2DC \\uC2DC\\uB3C4\\uD558\\uC138\\uC694:\",\n      formButtonPrimary__continue: \"\\uCD08\\uB300 \\uBCF4\\uB0B4\\uAE30\",\n      selectDropdown__role: \"Select role\",\n      subtitle: \"\\uC774 \\uC870\\uC9C1\\uC5D0 \\uC0C8 \\uBA64\\uBC84 \\uCD08\\uB300\",\n      successMessage: \"\\uCD08\\uB300\\uAC00 \\uC131\\uACF5\\uC801\\uC73C\\uB85C \\uC804\\uC1A1\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4\",\n      title: \"\\uD68C\\uC6D0 \\uCD08\\uB300\"\n    },\n    membersPage: {\n      action__invite: \"\\uCD08\\uB300\",\n      activeMembersTab: {\n        menuAction__remove: \"\\uD68C\\uC6D0 \\uC81C\\uAC70\",\n        tableHeader__actions: \"\",\n        tableHeader__joined: \"\\uAC00\\uC785\\uB428\",\n        tableHeader__role: \"\\uC5ED\\uD560\",\n        tableHeader__user: \"\\uC0AC\\uC6A9\\uC790\"\n      },\n      detailsTitle__emptyRow: \"\\uD45C\\uC2DC\\uD560 \\uBA64\\uBC84 \\uC5C6\\uC74C\",\n      invitationsTab: {\n        autoInvitations: {\n          headerSubtitle: \"Invite users by connecting an email domain with your organization. Anyone who signs up with a matching email domain will be able to join the organization anytime.\",\n          headerTitle: \"Automatic invitations\",\n          primaryButton: \"Manage verified domains\"\n        },\n        table__emptyRow: \"No invitations to display\"\n      },\n      invitedMembersTab: {\n        menuAction__revoke: \"\\uCD08\\uB300 \\uCDE8\\uC18C\",\n        tableHeader__invited: \"\\uCD08\\uB300\\uB428\"\n      },\n      requestsTab: {\n        autoSuggestions: {\n          headerSubtitle: \"Users who sign up with a matching email domain, will be able to see a suggestion to request to join your organization.\",\n          headerTitle: \"Automatic suggestions\",\n          primaryButton: \"Manage verified domains\"\n        },\n        menuAction__approve: \"Approve\",\n        menuAction__reject: \"Reject\",\n        tableHeader__requested: \"Requested access\",\n        table__emptyRow: \"No requests to display\"\n      },\n      start: {\n        headerTitle__invitations: \"Invitations\",\n        headerTitle__members: \"Members\",\n        headerTitle__requests: \"Requests\"\n      }\n    },\n    navbar: {\n      description: \"Manage your organization.\",\n      general: \"General\",\n      members: \"Members\",\n      title: \"Organization\"\n    },\n    profilePage: {\n      dangerSection: {\n        deleteOrganization: {\n          actionDescription: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC544\\uB798\\uC5D0 {{organizationName}}\\uC744(\\uB97C) \\uC785\\uB825\\uD558\\uC138\\uC694.\",\n          messageLine1: \"\\uC774 \\uC870\\uC9C1\\uC744 \\uC0AD\\uC81C\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C?\",\n          messageLine2: \"\\uC774 \\uC791\\uC5C5\\uC740 \\uC601\\uAD6C\\uC801\\uC774\\uBA70 \\uB418\\uB3CC\\uB9B4 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n          successMessage: \"\\uC870\\uC9C1\\uC744 \\uC0AD\\uC81C\\uD588\\uC2B5\\uB2C8\\uB2E4.\",\n          title: \"\\uC870\\uC9C1 \\uC0AD\\uC81C\"\n        },\n        leaveOrganization: {\n          actionDescription: 'Type \"{{organizationName}}\" below to continue.',\n          messageLine1: \"\\uC774 \\uC870\\uC9C1\\uC744 \\uD0C8\\uD1F4\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C? \\uC774 \\uC870\\uC9C1 \\uBC0F \\uD574\\uB2F9 \\uC560\\uD50C\\uB9AC\\uCF00\\uC774\\uC158\\uC5D0 \\uB300\\uD55C \\uC561\\uC138\\uC2A4 \\uAD8C\\uD55C\\uC744 \\uC783\\uAC8C\\uB429\\uB2C8\\uB2E4.\",\n          messageLine2: \"\\uC774 \\uC791\\uC5C5\\uC740 \\uC601\\uAD6C\\uC801\\uC774\\uBA70 \\uB418\\uB3CC\\uB9B4 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4\",\n          successMessage: \"\\uC870\\uC9C1\\uC744 \\uD0C8\\uD1F4\\uD588\\uC2B5\\uB2C8\\uB2E4.\",\n          title: \"\\uC870\\uC9C1 \\uB5A0\\uB098\\uAE30\"\n        },\n        title: \"\\uC704\\uD5D8\"\n      },\n      domainSection: {\n        menuAction__manage: \"Manage\",\n        menuAction__remove: \"Delete\",\n        menuAction__verify: \"Verify\",\n        primaryButton: \"\\uB3C4\\uBA54\\uC778 \\uCD94\\uAC00\",\n        subtitle: \"\\uC778\\uC99D\\uB41C \\uC774\\uBA54\\uC77C \\uB3C4\\uBA54\\uC778\\uC744 \\uAE30\\uBC18\\uC73C\\uB85C \\uC0AC\\uC6A9\\uC790\\uAC00 \\uC870\\uC9C1\\uC5D0 \\uC790\\uB3D9\\uC73C\\uB85C \\uAC00\\uC785\\uD558\\uAC70\\uB098 \\uAC00\\uC785 \\uC694\\uCCAD\\uC744 \\uD560 \\uC218 \\uC788\\uAC8C \\uD569\\uB2C8\\uB2E4.\",\n        title: \"\\uC778\\uC99D\\uB41C \\uB3C4\\uBA54\\uC778\"\n      },\n      successMessage: \"\\uC870\\uC9C1\\uC774 \\uC5C5\\uB370\\uC774\\uD2B8\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uC870\\uC9C1 \\uD504\\uB85C\\uD544\"\n    },\n    removeDomainPage: {\n      messageLine1: \"The email domain {{domain}} will be removed.\",\n      messageLine2: \"Users won\\u2019t be able to join the organization automatically after this.\",\n      successMessage: \"{{domain}} has been removed.\",\n      title: \"Remove domain\"\n    },\n    start: {\n      headerTitle__general: \"General\",\n      headerTitle__members: \"\\uBA64\\uBC84\",\n      profileSection: {\n        primaryButton: \"\",\n        title: \"Organization Profile\",\n        uploadAction__title: \"Logo\"\n      }\n    },\n    verifiedDomainPage: {\n      dangerTab: {\n        calloutInfoLabel: \"Removing this domain will affect invited users.\",\n        removeDomainActionLabel__remove: \"Remove domain\",\n        removeDomainSubtitle: \"Remove this domain from your verified domains\",\n        removeDomainTitle: \"Remove domain\"\n      },\n      enrollmentTab: {\n        automaticInvitationOption__description: \"Users are automatically invited to join the organization when they sign-up and can join anytime.\",\n        automaticInvitationOption__label: \"Automatic invitations\",\n        automaticSuggestionOption__description: \"Users receive a suggestion to request to join, but must be approved by an admin before they are able to join the organization.\",\n        automaticSuggestionOption__label: \"Automatic suggestions\",\n        calloutInfoLabel: \"Changing the enrollment mode will only affect new users.\",\n        calloutInvitationCountLabel: \"Pending invitations sent to users: {{count}}\",\n        calloutSuggestionCountLabel: \"Pending suggestions sent to users: {{count}}\",\n        manualInvitationOption__description: \"Users can only be invited manually to the organization.\",\n        manualInvitationOption__label: \"No automatic enrollment\",\n        subtitle: \"Choose how users from this domain can join the organization.\"\n      },\n      start: {\n        headerTitle__danger: \"Danger\",\n        headerTitle__enrollment: \"Enrollment options\"\n      },\n      subtitle: \"The domain {{domain}} is now verified. Continue by selecting enrollment mode.\",\n      title: \"Update {{domain}}\"\n    },\n    verifyDomainPage: {\n      formSubtitle: \"Enter the verification code sent to your email address\",\n      formTitle: \"Verification code\",\n      resendButton: \"Didn't receive a code? Resend\",\n      subtitle: \"The domain {{domainName}} needs to be verified via email.\",\n      subtitleVerificationCodeScreen: \"A verification code was sent to {{emailAddress}}. Enter the code to continue.\",\n      title: \"Verify domain\"\n    }\n  },\n  organizationSwitcher: {\n    action__createOrganization: \"\\uC870\\uC9C1 \\uB9CC\\uB4E4\\uAE30\",\n    action__invitationAccept: \"Join\",\n    action__manageOrganization: \"\\uC870\\uC9C1 \\uAD00\\uB9AC\",\n    action__suggestionsAccept: \"Request to join\",\n    notSelected: \"\\uC120\\uD0DD\\uD55C \\uC870\\uC9C1 \\uC5C6\\uC74C\",\n    personalWorkspace: \"\\uAC1C\\uC778 \\uC6CC\\uD06C\\uC2A4\\uD398\\uC774\\uC2A4\",\n    suggestionsAcceptedLabel: \"Pending approval\"\n  },\n  paginationButton__next: \"\\uB2E4\\uC74C\",\n  paginationButton__previous: \"\\uC774\\uC804\",\n  paginationRowText__displaying: \"\\uD45C\\uC2DC\\uC911\",\n  paginationRowText__of: \"\\uC758\",\n  signIn: {\n    accountSwitcher: {\n      action__addAccount: \"Add account\",\n      action__signOutAll: \"Sign out of all accounts\",\n      subtitle: \"Select the account with which you wish to continue.\",\n      title: \"Choose an account\"\n    },\n    alternativeMethods: {\n      actionLink: \"\\uB3C4\\uC6C0 \\uC694\\uCCAD\\uD558\\uAE30\",\n      actionText: \"Don\\u2019t have any of these?\",\n      blockButton__backupCode: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      blockButton__emailCode: \"{{identifier}}\\uB85C \\uC774\\uBA54\\uC77C \\uCF54\\uB4DC \\uBCF4\\uB0B4\\uAE30\",\n      blockButton__emailLink: \"{{identifier}}\\uB85C \\uC774\\uBA54\\uC77C \\uB9C1\\uD06C \\uBCF4\\uB0B4\\uAE30\",\n      blockButton__passkey: void 0,\n      blockButton__password: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB85C \\uB85C\\uADF8\\uC778\",\n      blockButton__phoneCode: \"{{identifier}}\\uB85C SMS \\uCF54\\uB4DC \\uBCF4\\uB0B4\\uAE30\",\n      blockButton__totp: \"\\uC778\\uC99D \\uC571 \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      getHelp: {\n        blockButton__emailSupport: \"\\uC774\\uBA54\\uC77C \\uC9C0\\uC6D0\",\n        content: \"\\uACC4\\uC815\\uC5D0 \\uB85C\\uADF8\\uC778\\uD558\\uB294 \\uB370 \\uBB38\\uC81C\\uAC00 \\uC788\\uB294 \\uACBD\\uC6B0 \\uC774\\uBA54\\uC77C\\uC744 \\uBCF4\\uB0B4\\uC8FC\\uC2DC\\uBA74 \\uCD5C\\uB300\\uD55C \\uBE68\\uB9AC \\uC561\\uC138\\uC2A4\\uB97C \\uBCF5\\uAD6C\\uD574 \\uB4DC\\uB9AC\\uACA0\\uC2B5\\uB2C8\\uB2E4.\",\n        title: \"\\uB3C4\\uC6C0 \\uC694\\uCCAD\\uD558\\uAE30\"\n      },\n      subtitle: \"\\uBB38\\uC81C\\uAC00 \\uC788\\uB098\\uC694? \\uB2E4\\uB978 \\uBC29\\uBC95\\uC73C\\uB85C \\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uB2E4\\uB978 \\uBC29\\uBC95 \\uC0AC\\uC6A9\\uD558\\uAE30\"\n    },\n    backupCodeMfa: {\n      subtitle: \"\\uBC31\\uC5C5\\uCF54\\uB4DC\\uB294 2\\uB2E8\\uACC4 \\uC778\\uC99D\\uC744 \\uC124\\uC815\\uD560 \\uB54C \\uC5BB\\uC740 \\uCF54\\uB4DC\\uC785\\uB2C8\\uB2E4\",\n      title: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC \\uC785\\uB825\"\n    },\n    emailCode: {\n      formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n      resendButton: \"\\uCF54\\uB4DC \\uC7AC\\uC804\\uC1A1\",\n      subtitle: \"{{applicationName}}\\uB85C \\uACC4\\uC18D\\uD558\\uB824\\uBA74\",\n      title: \"\\uC774\\uBA54\\uC77C\\uC744 \\uD655\\uC778\\uD558\\uC138\\uC694\"\n    },\n    emailLink: {\n      clientMismatch: {\n        subtitle: void 0,\n        title: void 0\n      },\n      expired: {\n        subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC6D0\\uB798 \\uD0ED\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uC138\\uC694.\",\n        title: \"\\uC774 \\uC778\\uC99D \\uB9C1\\uD06C\\uB294 \\uB9CC\\uB8CC\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4\"\n      },\n      failed: {\n        subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC6D0\\uB798 \\uD0ED\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uC138\\uC694.\",\n        title: \"\\uC774 \\uC778\\uC99D \\uB9C1\\uD06C\\uB294 \\uC720\\uD6A8\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4\"\n      },\n      formSubtitle: \"\\uC774\\uBA54\\uC77C\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uB9C1\\uD06C\\uB97C \\uC0AC\\uC6A9\\uD558\\uC138\\uC694\",\n      formTitle: \"\\uC778\\uC99D \\uB9C1\\uD06C\",\n      loading: {\n        subtitle: \"\\uACE7 \\uB9AC\\uB2E4\\uC774\\uB809\\uC158 \\uB429\\uB2C8\\uB2E4\",\n        title: \"\\uB85C\\uADF8\\uC778 \\uC911...\"\n      },\n      resendButton: \"\\uB9C1\\uD06C \\uC7AC\\uC804\\uC1A1\",\n      subtitle: \"{{applicationName}}\\uB85C \\uACC4\\uC18D\\uD558\\uB824\\uBA74\",\n      title: \"\\uC774\\uBA54\\uC77C\\uC744 \\uD655\\uC778\\uD558\\uC138\\uC694\",\n      unusedTab: {\n        title: \"\\uC774 \\uD0ED\\uC744 \\uB2EB\\uC73C\\uC154\\uB3C4 \\uB429\\uB2C8\\uB2E4\"\n      },\n      verified: {\n        subtitle: \"\\uACE7 \\uB9AC\\uB2E4\\uC774\\uB809\\uC158 \\uB420 \\uC608\\uC815\\uC785\\uB2C8\\uB2E4\",\n        title: \"\\uB85C\\uADF8\\uC778\\uC5D0 \\uC131\\uACF5\\uD588\\uC2B5\\uB2C8\\uB2E4\"\n      },\n      verifiedSwitchTab: {\n        subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC6D0\\uB798 \\uD0ED\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uC138\\uC694\",\n        subtitleNewTab: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC0C8\\uB85C \\uC5F0 \\uD0ED\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uC138\\uC694\",\n        titleNewTab: \"\\uB2E4\\uB978 \\uD0ED\\uC5D0\\uC11C \\uB85C\\uADF8\\uC778\"\n      }\n    },\n    forgotPassword: {\n      formTitle: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC7AC\\uC124\\uC815 \\uCF54\\uB4DC\",\n      resendButton: \"\\uCF54\\uB4DC \\uC7AC\\uC804\\uC1A1\",\n      subtitle: \"to reset your password\",\n      subtitle_email: \"\\uBA3C\\uC800 \\uC774\\uBA54\\uC77C\\uB85C \\uC804\\uC1A1\\uB41C \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      subtitle_phone: \"\\uBA3C\\uC800 \\uD734\\uB300\\uD3F0\\uC73C\\uB85C \\uC804\\uC1A1\\uB41C \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      title: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC7AC\\uC124\\uC815\"\n    },\n    forgotPasswordAlternativeMethods: {\n      blockButton__resetPassword: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC7AC\\uC124\\uC815\",\n      label__alternativeMethods: \"\\uB610\\uB294 \\uB2E4\\uB978 \\uBC29\\uBC95\\uC73C\\uB85C \\uB85C\\uADF8\\uC778\",\n      title: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC78A\\uC73C\\uC168\\uB098\\uC694?\"\n    },\n    noAvailableMethods: {\n      message: \"\\uB85C\\uADF8\\uC778\\uC744 \\uACC4\\uC18D\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uC778\\uC99D \\uBC29\\uBC95\\uC774 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n      subtitle: \"\\uC624\\uB958\\uAC00 \\uBC1C\\uC0DD\\uD588\\uC2B5\\uB2C8\\uB2E4\",\n      title: \"\\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4\"\n    },\n    passkey: {\n      subtitle: void 0,\n      title: void 0\n    },\n    password: {\n      actionLink: \"\\uB2E4\\uB978 \\uBC29\\uBC95 \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      subtitle: \"\\uACC4\\uC815\\uC5D0 \\uB4F1\\uB85D\\uB41C \\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC785\\uB825\\uD574 \\uC8FC\\uC138\\uC694\",\n      title: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\"\n    },\n    passwordPwned: {\n      title: void 0\n    },\n    phoneCode: {\n      formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n      resendButton: \"\\uCF54\\uB4DC \\uB2E4\\uC2DC \\uBCF4\\uB0B4\\uAE30\",\n      subtitle: \"{{applicationName}}\\uB85C \\uACC4\\uC18D\\uD558\\uB824\\uBA74\",\n      title: \"\\uD734\\uB300\\uD3F0 \\uD655\\uC778\"\n    },\n    phoneCodeMfa: {\n      formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n      resendButton: \"\\uCF54\\uB4DC \\uB2E4\\uC2DC \\uBCF4\\uB0B4\\uAE30\",\n      subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uD734\\uB300\\uD3F0\\uC73C\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      title: \"\\uD734\\uB300\\uD3F0 \\uD655\\uC778\"\n    },\n    resetPassword: {\n      formButtonPrimary: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC7AC\\uC124\\uC815\",\n      requiredMessage: \"For security reasons, it is required to reset your password.\",\n      successMessage: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uC131\\uACF5\\uC801\\uC73C\\uB85C \\uBCC0\\uACBD\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uB85C\\uADF8\\uC778\\uD558\\uB294 \\uC911\\uC785\\uB2C8\\uB2E4. \\uC7A0\\uC2DC\\uB9CC \\uAE30\\uB2E4\\uB824\\uC8FC\\uC138\\uC694.\",\n      title: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC7AC\\uC124\\uC815\"\n    },\n    resetPasswordMfa: {\n      detailsLabel: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC7AC\\uC124\\uC815\\uD558\\uAE30 \\uC804\\uC5D0 \\uC2E0\\uC6D0\\uC744 \\uD655\\uC778\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\"\n    },\n    start: {\n      actionLink: \"\\uD68C\\uC6D0\\uAC00\\uC785\",\n      actionLink__use_email: \"\\uC774\\uBA54\\uC77C \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      actionLink__use_email_username: \"\\uC774\\uBA54\\uC77C \\uB610\\uB294 \\uC0AC\\uC6A9\\uC790 \\uC774\\uB984 \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      actionLink__use_passkey: void 0,\n      actionLink__use_phone: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      actionLink__use_username: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984 \\uC0AC\\uC6A9\\uD558\\uAE30\",\n      actionText: \"\\uACC4\\uC815\\uC774 \\uC5C6\\uC73C\\uC2E0\\uAC00\\uC694?\",\n      subtitle: \"\\uD658\\uC601\\uD569\\uB2C8\\uB2E4! \\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uB85C\\uADF8\\uC778\\uD574 \\uC8FC\\uC138\\uC694\",\n      title: \"{{applicationName}}\\uC5D0 \\uB85C\\uADF8\\uC778\"\n    },\n    totpMfa: {\n      formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n      subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC778\\uC99D \\uC571\\uC5D0\\uC11C \\uC0DD\\uC131\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      title: \"2\\uB2E8\\uACC4 \\uC778\\uC99D\"\n    }\n  },\n  signInEnterPasswordTitle: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n  signUp: {\n    continue: {\n      actionLink: \"\\uB85C\\uADF8\\uC778\",\n      actionText: \"\\uACC4\\uC815\\uC774 \\uC788\\uC73C\\uC2E0\\uAC00\\uC694?\",\n      subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uB204\\uB77D\\uB41C \\uD544\\uB4DC\\uC5D0 \\uAC12\\uC744 \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      title: \"\\uB204\\uB77D\\uB41C \\uD544\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\"\n    },\n    emailCode: {\n      formSubtitle: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n      resendButton: \"\\uCF54\\uB4DC \\uC7AC\\uC804\\uC1A1\",\n      subtitle: \"\\uC774\\uBA54\\uC77C\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      title: \"\\uC774\\uBA54\\uC77C \\uC778\\uC99D\"\n    },\n    emailLink: {\n      clientMismatch: {\n        subtitle: void 0,\n        title: void 0\n      },\n      formSubtitle: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uB9C1\\uD06C\\uB97C \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\n      formTitle: \"\\uC778\\uC99D \\uB9C1\\uD06C\",\n      loading: {\n        title: \"\\uAC00\\uC785 \\uC911...\"\n      },\n      resendButton: \"\\uB9C1\\uD06C \\uC7AC\\uC804\\uC1A1\",\n      subtitle: \"{{applicationName}}\\uB85C \\uACC4\\uC18D\\uD558\\uB824\\uBA74\",\n      title: \"\\uC774\\uBA54\\uC77C \\uC778\\uC99D\\uD558\\uAE30\",\n      verified: {\n        title: \"\\uC131\\uACF5\\uC801\\uC73C\\uB85C \\uAC00\\uC785\\uC5D0 \\uC131\\uACF5\\uD588\\uC2B5\\uB2C8\\uB2E4\"\n      },\n      verifiedSwitchTab: {\n        subtitle: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC0C8\\uB85C \\uC5F0 \\uD0ED\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uAE30\",\n        subtitleNewTab: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC774\\uC804 \\uD0ED\\uC73C\\uB85C \\uB3CC\\uC544\\uAC00\\uAE30\",\n        title: \"\\uC774\\uBA54\\uC77C \\uC778\\uC99D \\uC131\\uACF5\"\n      }\n    },\n    phoneCode: {\n      formSubtitle: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694.\",\n      formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n      resendButton: \"\\uCF54\\uB4DC \\uC7AC\\uC804\\uC1A1\",\n      subtitle: \"\\uD734\\uB300\\uD3F0\\uC73C\\uB85C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\n      title: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uC778\\uC99D\"\n    },\n    start: {\n      actionLink: \"\\uB85C\\uADF8\\uC778\\uD558\\uAE30\",\n      actionLink__use_email: void 0,\n      actionLink__use_phone: void 0,\n      actionText: \"\\uACC4\\uC815\\uC774 \\uC788\\uC73C\\uC2E0\\uAC00\\uC694?\",\n      subtitle: \"\\uD658\\uC601\\uD569\\uB2C8\\uB2E4! \\uC544\\uB798 \\uC815\\uBCF4\\uB97C \\uC785\\uB825\\uD574\\uC8FC\\uC138\\uC694.\",\n      title: \"\\uACC4\\uC815 \\uB9CC\\uB4E4\\uAE30\"\n    }\n  },\n  socialButtonsBlockButton: \"{{provider|titleize}}\\uB85C \\uACC4\\uC18D\\uD558\\uAE30\",\n  socialButtonsBlockButtonManyInView: void 0,\n  unstable__errors: {\n    captcha_invalid: \"Sign up unsuccessful due to failed security validations. Please refresh the page to try again or reach out to support for more assistance.\",\n    captcha_unavailable: \"Sign up unsuccessful due to failed bot validation. Please refresh the page to try again or reach out to support for more assistance.\",\n    form_code_incorrect: \"\",\n    form_identifier_exists: \"\",\n    form_identifier_exists__email_address: void 0,\n    form_identifier_exists__phone_number: void 0,\n    form_identifier_exists__username: void 0,\n    form_identifier_not_found: \"\",\n    form_param_format_invalid: \"\",\n    form_param_format_invalid__email_address: \"Email address must be a valid email address.\",\n    form_param_format_invalid__phone_number: \"Phone number must be in a valid international format\",\n    form_param_max_length_exceeded__first_name: \"First name should not exceed 256 characters.\",\n    form_param_max_length_exceeded__last_name: \"Last name should not exceed 256 characters.\",\n    form_param_max_length_exceeded__name: \"Name should not exceed 256 characters.\",\n    form_param_nil: \"\",\n    form_password_incorrect: \"\",\n    form_password_length_too_short: \"\",\n    form_password_not_strong_enough: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uCDA9\\uBD84\\uD788 \\uC548\\uC804\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\n    form_password_pwned: \"\\uC774 \\uBE44\\uBC00\\uBC88\\uD638\\uB294 \\uC720\\uCD9C\\uC0AC\\uD56D\\uC774 \\uBC1C\\uACAC\\uB418\\uC5B4 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC73C\\uBBC0\\uB85C \\uB300\\uC2E0 \\uB2E4\\uB978 \\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC0AC\\uC6A9\\uD574 \\uBCF4\\uC138\\uC694.\",\n    form_password_pwned__sign_in: void 0,\n    form_password_size_in_bytes_exceeded: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uD5C8\\uC6A9\\uB418\\uB294 \\uCD5C\\uB300 \\uBC14\\uC774\\uD2B8 \\uC218\\uB97C \\uCD08\\uACFC\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uC904\\uC774\\uAC70\\uB098 \\uC77C\\uBD80 \\uD2B9\\uC218 \\uBB38\\uC790\\uB97C \\uC81C\\uAC70\\uD574 \\uC8FC\\uC138\\uC694.\",\n    form_password_validation_failed: \"\\uC798\\uBABB\\uB41C \\uBE44\\uBC00\\uBC88\\uD638\",\n    form_username_invalid_character: \"\",\n    form_username_invalid_length: \"\",\n    identification_deletion_failed: \"You cannot delete your last identification.\",\n    not_allowed_access: \"\",\n    passkey_already_exists: void 0,\n    passkey_not_supported: void 0,\n    passkey_pa_not_supported: void 0,\n    passkey_registration_cancelled: void 0,\n    passkey_retrieval_cancelled: void 0,\n    passwordComplexity: {\n      maximumLength: \"{{length}} \\uBCF4\\uB2E4 \\uC9E7\\uC740 \\uBB38\\uC790\\uC5F4\",\n      minimumLength: \"{{length}} \\uB610\\uB294 \\uADF8 \\uC774\\uC0C1\\uC758 \\uBB38\\uC790\\uC5F4\",\n      requireLowercase: \"\\uC18C\\uBB38\\uC790\",\n      requireNumbers: \"\\uC22B\\uC790\",\n      requireSpecialCharacter: \"\\uD2B9\\uC218\\uBB38\\uC790\",\n      requireUppercase: \"\\uB300\\uBB38\\uC790\",\n      sentencePrefix: \"\\uB2F9\\uC2E0\\uC758 \\uBE44\\uBC00\\uBC88\\uD638\\uB294 \\uBC18\\uB4DC\\uC2DC \\uD3EC\\uD568\\uD574\\uC57C\\uD569\\uB2C8\\uB2E4\"\n    },\n    phone_number_exists: \"This phone number is taken. Please try another.\",\n    zxcvbn: {\n      couldBeStronger: \"\\uBE44\\uBC00\\uBC88\\uD638\\uB294 \\uC791\\uB3D9\\uD558\\uC9C0\\uB9CC \\uB354 \\uAC15\\uB825\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uBB38\\uC790\\uB97C \\uB354 \\uCD94\\uAC00\\uD574 \\uBCF4\\uC138\\uC694.\",\n      goodPassword: \"\\uC218\\uACE0\\uD558\\uC168\\uC2B5\\uB2C8\\uB2E4. \\uD6CC\\uB96D\\uD55C \\uBE44\\uBC00\\uBC88\\uD638\\uC785\\uB2C8\\uB2E4.\",\n      notEnough: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uCDA9\\uBD84\\uD788 \\uC548\\uC804\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\n      suggestions: {\n        allUppercase: \"\\uBAA8\\uB4E0 \\uBB38\\uC790\\uAC00 \\uC544\\uB2CC \\uC77C\\uBD80 \\uBB38\\uC790\\uB97C \\uB300\\uBB38\\uC790\\uB85C \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\n        anotherWord: \"\\uB35C \\uC77C\\uBC18\\uC801\\uC778 \\uB2E8\\uC5B4\\uB97C \\uB354 \\uCD94\\uAC00\\uD569\\uB2C8\\uB2E4.\",\n        associatedYears: \"\\uADC0\\uD558\\uC640 \\uC5F0\\uAD00\\uB41C \\uC5F0\\uB3C4\\uB294 \\uD53C\\uD558\\uC138\\uC694.\",\n        capitalization: \"\\uD55C \\uAE00\\uC790 \\uC774\\uC0C1\\uC744 \\uB300\\uBB38\\uC790\\uB85C \\uD45C\\uAE30\\uD558\\uC138\\uC694.\",\n        dates: \"\\uC790\\uC2E0\\uACFC \\uAD00\\uB828\\uB41C \\uB0A0\\uC9DC\\uC640 \\uC5F0\\uB3C4\\uB294 \\uD53C\\uD558\\uC138\\uC694.\",\n        l33t: \"'a'\\uC5D0\\uC11C '@'\\uC640 \\uAC19\\uC774 \\uC608\\uCE21 \\uAC00\\uB2A5\\uD55C \\uBB38\\uC790 \\uB300\\uCCB4\\uB97C \\uD53C\\uD558\\uC138\\uC694.\",\n        longerKeyboardPattern: \"\\uB354 \\uAE34 \\uD0A4\\uBCF4\\uB4DC \\uD328\\uD134\\uC744 \\uC0AC\\uC6A9\\uD558\\uACE0 \\uD0C0\\uC774\\uD551 \\uBC29\\uD5A5\\uC744 \\uC5EC\\uB7EC \\uBC88 \\uBCC0\\uACBD\\uD569\\uB2C8\\uB2E4.\",\n        noNeed: \"\\uAE30\\uD638, \\uC22B\\uC790 \\uB610\\uB294 \\uB300\\uBB38\\uC790\\uB97C \\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uACE0\\uB3C4 \\uAC15\\uB825\\uD55C \\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n        pwned: \"\\uC774 \\uBE44\\uBC00\\uBC88\\uD638\\uB97C \\uB2E4\\uB978 \\uACF3\\uC5D0\\uC11C \\uC0AC\\uC6A9\\uD558\\uB294 \\uACBD\\uC6B0 \\uBCC0\\uACBD\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\n        recentYears: \"\\uCD5C\\uADFC \\uC5F0\\uB3C4\\uB294 \\uD53C\\uD558\\uC138\\uC694.\",\n        repeated: \"\\uBC18\\uBCF5\\uB418\\uB294 \\uB2E8\\uC5B4\\uC640 \\uBB38\\uC790\\uB97C \\uD53C\\uD558\\uC138\\uC694.\",\n        reverseWords: \"\\uC77C\\uBC18\\uC801\\uC778 \\uB2E8\\uC5B4\\uC758 \\uCCA0\\uC790\\uB97C \\uAC70\\uAFB8\\uB85C \\uC4F0\\uC9C0 \\uB9C8\\uC138\\uC694.\",\n        sequences: \"\\uC77C\\uBC18\\uC801\\uC778 \\uBB38\\uC790 \\uC2DC\\uD000\\uC2A4\\uB97C \\uD53C\\uD558\\uC138\\uC694.\",\n        useWords: \"\\uC5EC\\uB7EC \\uB2E8\\uC5B4\\uB97C \\uC0AC\\uC6A9\\uD558\\uB418 \\uC77C\\uBC18\\uC801\\uC778 \\uBB38\\uAD6C\\uB294 \\uD53C\\uD558\\uC138\\uC694.\"\n      },\n      warnings: {\n        common: \"\\uC77C\\uBC18\\uC801\\uC73C\\uB85C \\uC0AC\\uC6A9\\uB418\\uB294 \\uBE44\\uBC00\\uBC88\\uD638\\uC785\\uB2C8\\uB2E4.\",\n        commonNames: \"\\uC77C\\uBC18\\uC801\\uC778 \\uC774\\uB984\\uACFC \\uC131\\uC740 \\uCD94\\uCE21\\uD558\\uAE30 \\uC27D\\uC2B5\\uB2C8\\uB2E4.\",\n        dates: \"\\uB0A0\\uC9DC\\uB294 \\uC27D\\uAC8C \\uCD94\\uCE21\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n        extendedRepeat: '\"abcabcabc\"\\uC640 \\uAC19\\uC774 \\uBC18\\uBCF5\\uB418\\uB294 \\uBB38\\uC790 \\uD328\\uD134\\uC740 \\uC27D\\uAC8C \\uCD94\\uCE21\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.',\n        keyPattern: \"\\uC9E7\\uC740 \\uD328\\uD134\\uC740 \\uCD94\\uCE21\\uD558\\uAE30 \\uC27D\\uC2B5\\uB2C8\\uB2E4.\",\n        namesByThemselves: \"\\uB2E8\\uC77C \\uC774\\uB984\\uC774\\uB098 \\uC131\\uC740 \\uCD94\\uCE21\\uD558\\uAE30 \\uC27D\\uC2B5\\uB2C8\\uB2E4.\",\n        pwned: \"\\uC778\\uD130\\uB137\\uC5D0\\uC11C \\uB370\\uC774\\uD130 \\uC720\\uCD9C\\uB85C \\uC778\\uD574 \\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uB178\\uCD9C\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n        recentYears: \"\\uCD5C\\uADFC\\uC5F0\\uB3C4\\uB294 \\uC27D\\uAC8C \\uCD94\\uCE21\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n        sequences: '\"abc\"\\uC640 \\uAC19\\uC740 \\uC77C\\uBC18\\uC801\\uC778 \\uBB38\\uC790 \\uC2DC\\uD000\\uC2A4\\uB294 \\uC27D\\uAC8C \\uCD94\\uCE21\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.',\n        similarToCommon: \"\\uC77C\\uBC18\\uC801\\uC73C\\uB85C \\uC0AC\\uC6A9\\uB418\\uB294 \\uBE44\\uBC00\\uBC88\\uD638\\uC640 \\uC720\\uC0AC\\uD569\\uB2C8\\uB2E4.\",\n        simpleRepeat: '\"aaa\"\\uC640 \\uAC19\\uC774 \\uBC18\\uBCF5\\uB418\\uB294 \\uBB38\\uC790\\uB294 \\uC27D\\uAC8C \\uCD94\\uCE21\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.',\n        straightRow: \"\\uAC19\\uC740 \\uC904\\uC5D0 \\uC704\\uCE58\\uD55C \\uD0A4\\uBCF4\\uB4DC\\uB97C \\uC0AC\\uC6A9\\uD558\\uB294 \\uAC83\\uC740 \\uCD94\\uCE21\\uD558\\uAE30 \\uC27D\\uC2B5\\uB2C8\\uB2E4.\",\n        topHundred: \"\\uC790\\uC8FC \\uC0AC\\uC6A9\\uB418\\uB294 \\uBE44\\uBC00\\uBC88\\uD638\\uC785\\uB2C8\\uB2E4.\",\n        topTen: \"\\uC544\\uC8FC \\uB9CE\\uC774 \\uC0AC\\uC6A9\\uB418\\uB294 \\uBE44\\uBC00\\uBC88\\uD638\\uC785\\uB2C8\\uB2E4.\",\n        userInputs: \"\\uAC1C\\uC778 \\uC815\\uBCF4\\uB098 \\uD398\\uC774\\uC9C0 \\uAD00\\uB828 \\uB370\\uC774\\uD130\\uAC00 \\uC5C6\\uC5B4\\uC57C \\uD569\\uB2C8\\uB2E4.\",\n        wordByItself: \"\\uD55C \\uB2E8\\uC5B4\\uB294 \\uC27D\\uAC8C \\uCD94\\uCE21\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n      }\n    }\n  },\n  userButton: {\n    action__addAccount: \"\\uACC4\\uC815 \\uCD94\\uAC00\",\n    action__manageAccount: \"\\uACC4\\uC815 \\uAD00\\uB9AC\",\n    action__signOut: \"\\uB85C\\uADF8\\uC544\\uC6C3\",\n    action__signOutAll: \"\\uBAA8\\uB4E0 \\uACC4\\uC815\\uC5D0\\uC11C \\uB85C\\uADF8\\uC544\\uC6C3\"\n  },\n  userProfile: {\n    backupCodePage: {\n      actionLabel__copied: \"\\uBCF5\\uC0AC \\uC644\\uB8CC!\",\n      actionLabel__copy: \"\\uC804\\uCCB4 \\uBCF5\\uC0AC\",\n      actionLabel__download: \".txt \\uB2E4\\uC6B4\\uB85C\\uB4DC\",\n      actionLabel__print: \"\\uC778\\uC1C4\",\n      infoText1: \"\\uC774 \\uACC4\\uC815\\uC5D0 \\uB300\\uD574 \\uBC31\\uC5C5 \\uCF54\\uB4DC\\uAC00 \\uD65C\\uC131\\uD654\\uB429\\uB2C8\\uB2E4.\",\n      infoText2: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC\\uB97C \\uBE44\\uBC00\\uB85C \\uC720\\uC9C0\\uD558\\uACE0 \\uC548\\uC804\\uD558\\uAC8C \\uBCF4\\uAD00\\uD558\\uC138\\uC694. \\uBC31\\uC5C5 \\uCF54\\uB4DC\\uAC00 \\uC190\\uC0C1\\uB41C \\uAC83\\uC73C\\uB85C \\uC758\\uC2EC\\uB418\\uB294 \\uACBD\\uC6B0 \\uBC31\\uC5C5 \\uCF54\\uB4DC\\uB97C \\uB2E4\\uC2DC \\uC0DD\\uC131\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      subtitle__codelist: \"\\uC548\\uC804\\uD558\\uAC8C \\uC800\\uC7A5\\uD558\\uACE0 \\uBE44\\uBC00\\uB85C \\uC720\\uC9C0\\uD558\\uC138\\uC694.\",\n      successMessage: \"\\uC774\\uC81C \\uBC31\\uC5C5 \\uCF54\\uB4DC\\uAC00 \\uD65C\\uC131\\uD654\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uC778\\uC99D \\uC7A5\\uCE58\\uC5D0 \\uC561\\uC138\\uC2A4\\uD560 \\uC218 \\uC5C6\\uB294 \\uACBD\\uC6B0 \\uC774 \\uC911 \\uD558\\uB098\\uB97C \\uC0AC\\uC6A9\\uD558\\uC5EC \\uACC4\\uC815\\uC5D0 \\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uAC01 \\uCF54\\uB4DC\\uB294 \\uD55C \\uBC88\\uB9CC \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      successSubtitle: \"\\uC778\\uC99D \\uC7A5\\uCE58\\uC5D0 \\uC561\\uC138\\uC2A4\\uD560 \\uC218 \\uC5C6\\uB294 \\uACBD\\uC6B0 \\uC774 \\uC911 \\uD558\\uB098\\uB97C \\uC0AC\\uC6A9\\uD558\\uC5EC \\uACC4\\uC815\\uC5D0 \\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC \\uC778\\uC99D \\uCD94\\uAC00\",\n      title__codelist: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC\"\n    },\n    connectedAccountPage: {\n      formHint: \"\\uACC4\\uC815\\uC744 \\uC5F0\\uACB0\\uD560 \\uC81C\\uACF5\\uC790\\uB97C \\uC120\\uD0DD\\uD558\\uC138\\uC694\",\n      formHint__noAccounts: \"\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uC678\\uBD80 \\uACC4\\uC815 \\uC81C\\uACF5\\uC790\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n      removeResource: {\n        messageLine1: \"{{identifier}}\\uAC00 \\uC774 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70 \\uB420 \\uC608\\uC815\\uC785\\uB2C8\\uB2E4.\",\n        messageLine2: \"\\uC774 \\uC5F0\\uACB0\\uB41C \\uACC4\\uC815\\uC744 \\uB354 \\uC774\\uC0C1 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC73C\\uBA70 \\uC885\\uC18D\\uB41C \\uBAA8\\uB4E0 \\uAE30\\uB2A5\\uC774 \\uB354 \\uC774\\uC0C1 \\uC791\\uB3D9\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\n        successMessage: \"{{connectedAccount}}\\uAC00 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n        title: \"\\uC5F0\\uACB0\\uB41C \\uACC4\\uC815 \\uC81C\\uAC70\"\n      },\n      socialButtonsBlockButton: \"{{provider|titleize}} \\uACC4\\uC815 \\uC5F0\\uACB0\",\n      successMessage: \"\\uC774 \\uC81C\\uACF5\\uC790\\uAC00 \\uACC4\\uC815\\uC5D0 \\uCD94\\uAC00\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uC5F0\\uACB0\\uB41C \\uACC4\\uC815 \\uCD94\\uAC00\\uD558\\uAE30\"\n    },\n    deletePage: {\n      actionDescription: \"\\uACC4\\uC18D\\uD558\\uB824\\uBA74 \\uC544\\uB798\\uC5D0 \\uACC4\\uC815 \\uC0AD\\uC81C\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694.\",\n      confirm: \"\\uACC4\\uC815 \\uC0AD\\uC81C\",\n      messageLine1: \"\\uC815\\uB9D0\\uB85C \\uACC4\\uC815\\uC744 \\uC0AD\\uC81C\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C?\",\n      messageLine2: \"\\uC774 \\uC791\\uC5C5\\uC740 \\uC601\\uAD6C\\uC801\\uC774\\uBA70 \\uB418\\uB3CC\\uB9B4 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uACC4\\uC815 \\uC0AD\\uC81C\"\n    },\n    emailAddressPage: {\n      emailCode: {\n        formHint: \"\\uC774 \\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\\uB85C \\uC778\\uC99D \\uCF54\\uB4DC\\uAC00 \\uD3EC\\uD568\\uB41C \\uC774\\uBA54\\uC77C\\uC774 \\uC804\\uC1A1\\uB429\\uB2C8\\uB2E4.\",\n        formSubtitle: \"{{identifier}}\\uC5D0\\uAC8C \\uC804\\uC1A1\\uB41C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD569\\uB2C8\\uB2E4\",\n        formTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\",\n        resendButton: \"\\uCF54\\uB4DC \\uC7AC\\uC804\\uC1A1\",\n        successMessage: \"{{identifier}} \\uC774\\uBA54\\uC77C\\uC774 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0 \\uCD94\\uAC00\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\"\n      },\n      emailLink: {\n        formHint: \"\\uC778\\uC99D \\uB9C1\\uD06C\\uAC00 \\uD3EC\\uD568\\uB41C \\uC774\\uBA54\\uC77C\\uC774 \\uC774 \\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\\uB85C \\uC804\\uC1A1\\uB429\\uB2C8\\uB2E4.\",\n        formSubtitle: \"{{identifier}}\\uC5D0\\uAC8C \\uC804\\uC1A1\\uB41C \\uC774\\uBA54\\uC77C\\uC758 \\uB9C1\\uD06C\\uB97C \\uD074\\uB9AD\\uD569\\uB2C8\\uB2E4.\",\n        formTitle: \"\\uC778\\uC99D \\uB9C1\\uD06C\",\n        resendButton: \"\\uB9C1\\uD06C \\uC7AC\\uC804\\uC1A1\",\n        successMessage: \"{{identifier}} \\uC774\\uBA54\\uC77C\\uC774 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0 \\uCD94\\uAC00\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\"\n      },\n      removeResource: {\n        messageLine1: \"{{identifier}} \\uC774\\uBA54\\uC77C\\uC774 \\uC774 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70 \\uB420 \\uC5D0\\uC815\\uC785\\uB2C8\\uB2E4.\",\n        messageLine2: \"\\uB354 \\uC774\\uC0C1 \\uC774 \\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\\uB85C \\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n        successMessage: \"{{emailAddress}} \\uC774\\uBA54\\uC77C\\uC774 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0\\uC11C \\uC0AD\\uC81C\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4\",\n        title: \"\\uC774\\uBA54\\uC77C \\uC81C\\uAC70\"\n      },\n      title: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C \\uCD94\\uAC00\",\n      verifyTitle: \"Verify email address\"\n    },\n    formButtonPrimary__add: \"Add\",\n    formButtonPrimary__continue: \"\\uACC4\\uC18D\",\n    formButtonPrimary__finish: \"\\uC644\\uB8CC\",\n    formButtonPrimary__remove: \"Remove\",\n    formButtonPrimary__save: \"Save\",\n    formButtonReset: \"\\uCDE8\\uC18C\",\n    mfaPage: {\n      formHint: \"\\uCD94\\uAC00\\uD560 \\uBC29\\uBC95\\uC744 \\uC120\\uD0DD\\uD569\\uB2C8\\uB2E4.\",\n      title: \"2\\uB2E8\\uACC4 \\uC778\\uC99D \\uCD94\\uAC00\"\n    },\n    mfaPhoneCodePage: {\n      backButton: \"Use existing number\",\n      primaryButton__addPhoneNumber: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uCD94\\uAC00\",\n      removeResource: {\n        messageLine1: \"{{identifier}}\\uB294 \\uB85C\\uADF8\\uC778\\uD560 \\uB54C \\uB354 \\uC774\\uC0C1 \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uBC1B\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\n        messageLine2: \"\\uACC4\\uC815\\uC774 \\uC548\\uC804\\uD558\\uC9C0 \\uC54A\\uC744 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uACC4\\uC18D\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C?\",\n        successMessage: \"{{mfaPhoneCode}}\\uC5D0 \\uB300\\uD55C SMS \\uCF54\\uB4DC 2\\uB2E8\\uACC4 \\uC778\\uC99D\\uC774 \\uC81C\\uAC70\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4\",\n        title: \"2\\uB2E8\\uACC4 \\uC778\\uC99D \\uC81C\\uAC70\"\n      },\n      subtitle__availablePhoneNumbers: \"SMS \\uCF54\\uB4DC 2\\uB2E8\\uACC4 \\uC778\\uC99D\\uC744 \\uC704\\uD574 \\uB4F1\\uB85D\\uD560 \\uD734\\uB300\\uD3F0 \\uBC88\\uD638\\uB97C \\uC120\\uD0DD\\uD558\\uC138\\uC694.\",\n      subtitle__unavailablePhoneNumbers: \"SMS \\uCF54\\uB4DC 2\\uB2E8\\uACC4 \\uC778\\uC99D\\uC5D0 \\uB4F1\\uB85D\\uD560 \\uC218 \\uC788\\uB294 \\uD734\\uB300\\uD3F0 \\uBC88\\uD638\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n      successMessage1: \"When signing in, you will need to enter a verification code sent to this phone number as an additional step.\",\n      successMessage2: \"Save these backup codes and store them somewhere safe. If you lose access to your authentication device, you can use backup codes to sign in.\",\n      successTitle: \"SMS code verification enabled\",\n      title: \"SMS \\uCF54\\uB4DC \\uC778\\uC99D \\uCD94\\uAC00\"\n    },\n    mfaTOTPPage: {\n      authenticatorApp: {\n        buttonAbleToScan__nonPrimary: \"\\uB300\\uC2E0 QR \\uCF54\\uB4DC \\uC2A4\\uCE94 \\uD558\\uC138\\uC694\",\n        buttonUnableToScan__nonPrimary: \"QR \\uCF54\\uB4DC\\uB97C \\uC2A4\\uCE94\\uD560 \\uC218 \\uC5C6\\uB098\\uC694?\",\n        infoText__ableToScan: \"\\uC778\\uC99D \\uC571\\uC5D0\\uC11C \\uC0C8 \\uB85C\\uADF8\\uC778 \\uBC29\\uBC95\\uC744 \\uC124\\uC815\\uD558\\uACE0 \\uB2E4\\uC74C QR \\uCF54\\uB4DC\\uB97C \\uC2A4\\uCE94\\uD558\\uC5EC \\uACC4\\uC815\\uC5D0 \\uC5F0\\uACB0\\uD569\\uB2C8\\uB2E4.\",\n        infoText__unableToScan: \"\\uC778\\uC99D \\uC7A5\\uCE58\\uC5D0\\uC11C \\uC0C8 \\uB85C\\uADF8\\uC778 \\uBC29\\uBC95\\uC744 \\uC124\\uC815\\uD558\\uACE0 \\uC544\\uB798\\uC5D0 \\uC81C\\uACF5\\uB41C \\uD0A4\\uB97C \\uC785\\uB825\\uD569\\uB2C8\\uB2E4.\",\n        inputLabel__unableToScan1: \"\\uC2DC\\uAC04 \\uAE30\\uBC18 \\uB610\\uB294 \\uC77C\\uD68C\\uC6A9 \\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uC0AC\\uC6A9 \\uC124\\uC815\\uB418\\uC5B4 \\uC788\\uB294\\uC9C0 \\uD655\\uC778\\uD55C \\uB2E4\\uC74C \\uACC4\\uC815 \\uC5F0\\uACB0\\uC744 \\uC644\\uB8CC\\uD569\\uB2C8\\uB2E4.\",\n        inputLabel__unableToScan2: \"\\uB610\\uB294 \\uC778\\uC99D\\uC790\\uAC00 TOTP URI\\uB97C \\uC9C0\\uC6D0\\uD558\\uB294 \\uACBD\\uC6B0 \\uC804\\uCCB4 URI\\uB97C \\uBCF5\\uC0AC\\uD560 \\uC218\\uB3C4 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"\n      },\n      removeResource: {\n        messageLine1: \"\\uB85C\\uADF8\\uC778\\uD560 \\uB54C \\uB354 \\uC774\\uC0C1 \\uC774 \\uC778\\uC99D\\uC790\\uC758 \\uC778\\uC99D \\uCF54\\uB4DC\\uAC00 \\uD544\\uC694\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\n        messageLine2: \"\\uACC4\\uC815\\uC774 \\uC548\\uC804\\uD558\\uC9C0 \\uC54A\\uC744 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uACC4\\uC18D \\uC9C4\\uD589\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C?\",\n        successMessage: \"\\uC778\\uC99D\\uC790 \\uC560\\uD50C\\uB9AC\\uCF00\\uC774\\uC158\\uC744 \\uD1B5\\uD55C 2\\uB2E8\\uACC4 \\uC778\\uC99D\\uC774 \\uC81C\\uAC70\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n        title: \"2\\uB2E8\\uACC4 \\uC778\\uC99D \\uC81C\\uAC70\"\n      },\n      successMessage: \"\\uC774\\uC81C 2\\uB2E8\\uACC4 \\uC778\\uC99D\\uC774 \\uD65C\\uC131\\uD654\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4. \\uB85C\\uADF8\\uC778\\uD560 \\uB54C \\uCD94\\uAC00 \\uB2E8\\uACC4\\uB85C \\uC774 \\uC778\\uC99D\\uC790\\uC758 \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\n      title: \"\\uC778\\uC99D \\uC560\\uD50C\\uB9AC\\uCF00\\uC774\\uC158 \\uCD94\\uAC00\",\n      verifySubtitle: \"\\uC778\\uC99D\\uC790\\uAC00 \\uC0DD\\uC131\\uD55C \\uC778\\uC99D \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD569\\uB2C8\\uB2E4\",\n      verifyTitle: \"\\uC778\\uC99D \\uCF54\\uB4DC\"\n    },\n    mobileButton__menu: \"\\uBA54\\uB274\",\n    navbar: {\n      account: \"\\uD504\\uB85C\\uD544\",\n      description: \"\\uACC4\\uC815 \\uC815\\uBCF4\\uB97C \\uAD00\\uB9AC\\uD558\\uC138\\uC694.\",\n      security: \"\\uBCF4\\uC548\",\n      title: \"\\uACC4\\uC815\"\n    },\n    passkeyScreen: {\n      removeResource: {\n        messageLine1: void 0,\n        title: void 0\n      },\n      subtitle__rename: void 0,\n      title__rename: void 0\n    },\n    passwordPage: {\n      checkboxInfoText__signOutOfOtherSessions: \"It is recommended to sign out of all other devices which may have used your old password.\",\n      readonly: \"Your password can currently not be edited because you can sign in only via the enterprise connection.\",\n      successMessage__set: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uC124\\uC815\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      successMessage__signOutOfOtherSessions: \"\\uB2E4\\uB978 \\uBAA8\\uB4E0 \\uAE30\\uAE30\\uB294 \\uB85C\\uADF8\\uC544\\uC6C3\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      successMessage__update: \"\\uBE44\\uBC00\\uBC88\\uD638\\uAC00 \\uC5C5\\uB370\\uC774\\uD2B8\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      title__set: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC124\\uC815\",\n      title__update: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uBCC0\\uACBD\"\n    },\n    phoneNumberPage: {\n      infoText: \"\\uC778\\uC99D \\uB9C1\\uD06C\\uAC00 \\uD3EC\\uD568\\uB41C \\uBB38\\uC790 \\uBA54\\uC2DC\\uC9C0\\uAC00 \\uC774 \\uD734\\uB300\\uD3F0 \\uBC88\\uD638\\uB85C \\uC804\\uC1A1\\uB429\\uB2C8\\uB2E4.\",\n      removeResource: {\n        messageLine1: \"{{identifier}}\\uAC00 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70 \\uB420 \\uC608\\uC815\\uC785\\uB2C8\\uB2E4.\",\n        messageLine2: \"\\uB354 \\uC774\\uC0C1 \\uC774 \\uD734\\uB300\\uD3F0 \\uBC88\\uD638\\uB85C \\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n        successMessage: \"{{phoneNumber}}\\uAC00 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n        title: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uC81C\\uAC70\"\n      },\n      successMessage: \"{{identifier}}\\uAC00 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0 \\uCD94\\uAC00\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uCD94\\uAC00\",\n      verifySubtitle: \"Enter the verification code sent to {{identifier}}\",\n      verifyTitle: \"Verify phone number\"\n    },\n    profilePage: {\n      fileDropAreaHint: \"10MB\\uBCF4\\uB2E4 \\uC791\\uC740 JPG, PNG, GIF \\uB610\\uB294 WEBP \\uC774\\uBBF8\\uC9C0\\uB97C \\uC5C5\\uB85C\\uB4DC\\uD569\\uB2C8\\uB2E4\",\n      imageFormDestructiveActionSubtitle: \"\\uC774\\uBBF8\\uC9C0 \\uC81C\\uAC70\",\n      imageFormSubtitle: \"\\uC774\\uBBF8\\uC9C0 \\uC5C5\\uB85C\\uB4DC\",\n      imageFormTitle: \"\\uD504\\uB85C\\uD544 \\uC774\\uBBF8\\uC9C0\",\n      readonly: \"Your profile information has been provided by the enterprise connection and cannot be edited.\",\n      successMessage: \"\\uD504\\uB85C\\uD544\\uC774 \\uC5C5\\uB370\\uC774\\uD2B8\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      title: \"\\uD504\\uB85C\\uD544 \\uC5C5\\uB370\\uC774\\uD2B8\"\n    },\n    start: {\n      activeDevicesSection: {\n        destructiveAction: \"\\uC774 \\uC7A5\\uCE58\\uC5D0\\uC11C \\uB85C\\uADF8\\uC544\\uC6C3\",\n        title: \"\\uD65C\\uC131\\uD654\\uB41C \\uC7A5\\uCE58\"\n      },\n      connectedAccountsSection: {\n        actionLabel__connectionFailed: \"\\uC7AC\\uC2DC\\uB3C4\",\n        actionLabel__reauthorize: \"\\uC9C0\\uAE08 \\uC778\\uC99D\\uD558\\uAE30\",\n        destructiveActionTitle: \"\\uC81C\\uAC70\",\n        primaryButton: \"\\uACC4\\uC815 \\uC5F0\\uACB0\\uD558\\uAE30\",\n        subtitle__disconnected: void 0,\n        subtitle__reauthorize: \"The required scopes have been updated, and you may be experiencing limited functionality. Please re-authorize this application to avoid any issues\",\n        title: \"\\uC5F0\\uACB0\\uB41C \\uACC4\\uC815\"\n      },\n      dangerSection: {\n        deleteAccountButton: \"\\uACC4\\uC815 \\uC0AD\\uC81C\",\n        title: \"\\uC704\\uD5D8\"\n      },\n      emailAddressesSection: {\n        destructiveAction: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C \\uC81C\\uAC70\",\n        detailsAction__nonPrimary: \"\\uAE30\\uBCF8\\uC73C\\uB85C \\uC124\\uC815\",\n        detailsAction__primary: \"\\uC778\\uC99D \\uC644\\uB8CC\",\n        detailsAction__unverified: \"\\uC778\\uC99D \\uC644\\uB8CC\",\n        primaryButton: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C \\uCD94\\uAC00\",\n        title: \"\\uC774\\uBA54\\uC77C \\uC8FC\\uC18C\"\n      },\n      enterpriseAccountsSection: {\n        title: \"\\uAE30\\uC5C5 \\uACC4\\uC815\"\n      },\n      headerTitle__account: \"\\uD504\\uB85C\\uD544\",\n      headerTitle__security: \"\\uBCF4\\uC548\",\n      mfaSection: {\n        backupCodes: {\n          actionLabel__regenerate: \"\\uCF54\\uB4DC \\uC7AC\\uC0DD\\uC131\",\n          headerTitle: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC\",\n          subtitle__regenerate: \"\\uC0C8\\uB85C\\uC6B4 \\uBCF4\\uC548 \\uBC31\\uC5C5 \\uCF54\\uB4DC \\uC138\\uD2B8\\uB97C \\uBC1B\\uC73C\\uC138\\uC694. \\uC774\\uC804 \\uBC31\\uC5C5 \\uCF54\\uB4DC\\uB294 \\uC0AD\\uC81C\\uB418\\uBA70 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n          title__regenerate: \"\\uBC31\\uC5C5 \\uCF54\\uB4DC \\uC7AC\\uC0DD\\uC131\"\n        },\n        phoneCode: {\n          actionLabel__setDefault: \"\\uAE30\\uBCF8\\uC73C\\uB85C \\uC124\\uC815\",\n          destructiveActionLabel: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uC81C\\uAC70\"\n        },\n        primaryButton: \"2\\uB2E8\\uACC4 \\uC778\\uC99D \\uCD94\\uAC00\",\n        title: \"2\\uB2E8\\uACC4 \\uC778\\uC99D\",\n        totp: {\n          destructiveActionTitle: \"\\uC81C\\uAC70\",\n          headerTitle: \"\\uC778\\uC99D \\uC560\\uD50C\\uB9AC\\uCF00\\uC774\\uC158\"\n        }\n      },\n      passkeysSection: {\n        menuAction__destructive: void 0,\n        menuAction__rename: void 0,\n        title: void 0\n      },\n      passwordSection: {\n        primaryButton__setPassword: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uC124\\uC815\",\n        primaryButton__updatePassword: \"\\uBE44\\uBC00\\uBC88\\uD638 \\uBCC0\\uACBD\",\n        title: \"\\uBE44\\uBC00\\uBC88\\uD638\"\n      },\n      phoneNumbersSection: {\n        destructiveAction: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uC81C\\uAC70\",\n        detailsAction__nonPrimary: \"\\uAE30\\uBCF8\\uC73C\\uB85C \\uC124\\uC815\",\n        detailsAction__primary: \"\\uC778\\uC99D \\uC644\\uB8CC\",\n        detailsAction__unverified: \"\\uC778\\uC99D \\uC644\\uB8CC\",\n        primaryButton: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638 \\uCD94\\uAC00\",\n        title: \"\\uD734\\uB300\\uD3F0 \\uBC88\\uD638\"\n      },\n      profileSection: {\n        primaryButton: \"\\uD504\\uB85C\\uD544 \\uC218\\uC815\",\n        title: \"\\uD504\\uB85C\\uD544\"\n      },\n      usernameSection: {\n        primaryButton__setUsername: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984 \\uC124\\uC815\",\n        primaryButton__updateUsername: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984 \\uBCC0\\uACBD\",\n        title: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984\"\n      },\n      web3WalletsSection: {\n        destructiveAction: \"\\uC9C0\\uAC11 \\uC81C\\uAC70\",\n        primaryButton: \"Web3 \\uC9C0\\uAC11\",\n        title: \"Web3 \\uC9C0\\uAC11\"\n      }\n    },\n    usernamePage: {\n      successMessage: \"\\uB2F9\\uC2E0\\uC76D \\uC0AC\\uC6A9\\uC790 \\uC774\\uB984\\uC774 \\uC5C5\\uB370\\uC774\\uD2B8\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n      title__set: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984 \\uC5C5\\uB370\\uC774\\uD2B8\",\n      title__update: \"\\uC0AC\\uC6A9\\uC790 \\uC774\\uB984 \\uC5C5\\uB370\\uC774\\uD2B8\"\n    },\n    web3WalletPage: {\n      removeResource: {\n        messageLine1: \"{{identifier}}\\uAC00 \\uC774 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70 \\uB420 \\uC608\\uC815\\uC785\\uB2C8\\uB2E4.\",\n        messageLine2: \"\\uB354 \\uC774\\uC0C1 \\uC774 web3 \\uC9C0\\uAC11\\uC744 \\uC0AC\\uC6A9\\uD558\\uC5EC \\uB85C\\uADF8\\uC778\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n        successMessage: \"{{web3Wallet}}\\uAC00 \\uB2F9\\uC2E0\\uC758 \\uACC4\\uC815\\uC5D0\\uC11C \\uC81C\\uAC70\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\n        title: \"web3 \\uC9C0\\uAC11 \\uC81C\\uAC70\"\n      },\n      subtitle__availableWallets: \"\\uACC4\\uC815\\uC5D0 \\uC5F0\\uACB0\\uD560 web3 \\uC9C0\\uAC11\\uC744 \\uC120\\uD0DD\\uD558\\uC138\\uC694.\",\n      subtitle__unavailableWallets: \"\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C web3 \\uC9C0\\uAC11\\uC774 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\n      successMessage: \"\\uC9C0\\uAC11\\uC774 \\uACC4\\uC815\\uC5D0 \\uCD94\\uAC00\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4\\xDF.\",\n      title: \"web3 \\uC9C0\\uAC11 \\uCD94\\uAC00\"\n    }\n  }\n};\n\n// src/auth/Init.tsx\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction Init(props) {\n  const { databaseURL, anonKey } = props;\n  const [store, setStore] = useGlobalStore();\n  const { clerk, supabase, user } = store;\n  useEffect(() => {\n    triggerConversionAPI({ event_name: \"PageView\" });\n  }, []);\n  useEffect(() => {\n    console.log(\"load script\");\n    const script = document.createElement(\"script\");\n    script.async = true;\n    script.crossOrigin = \"anonymous\";\n    script.dataset.clerkPublishableKey = PUBLISHABLE_KEY;\n    script.src = CLERK_SRC;\n    script.type = \"text/javascript\";\n    document.head.appendChild(script);\n    return () => {\n      console.log(\"remove script\");\n      document.head.removeChild(script);\n    };\n  }, []);\n  useEffect(() => {\n    const script1 = document.createElement(\"script\");\n    script1.async = true;\n    script1.src = \"https://www.googletagmanager.com/gtag/js?id=AW-17376406129\";\n    document.head.appendChild(script1);\n    const script2 = document.createElement(\"script\");\n    script2.innerHTML = `\n      window.dataLayer = window.dataLayer || [];\n      function gtag(){dataLayer.push(arguments);}\n      gtag('js', new Date());\n\n      gtag('config', 'AW-17376406129');\n    `;\n    document.head.appendChild(script2);\n    return () => {\n      document.head.removeChild(script1);\n      document.head.removeChild(script2);\n    };\n  }, []);\n  const seconds = useCountdown(3);\n  useEffect(() => {\n    console.log(\"seconds\", seconds);\n    console.log({ clerk, Clerk: typeof Clerk });\n    if (seconds == 0 && typeof Clerk && !clerk) loadClerk({ setStore });\n  }, [seconds]);\n  useWindowLoad(() => __async(null, null, function* () {\n    console.log(\"Window loaded\");\n    loadClerk({ setStore });\n  }));\n  useEffect(() => {\n    if (store.supabase == null || store.supabase == void 0) {\n      const supabase2 = createClient(databaseURL, anonKey);\n      setStore({ supabase: supabase2 });\n    }\n  }, []);\n  useEffect(() => {\n    if (clerk == null ? void 0 : clerk.user) initUser({ supabase, clerkUser: clerk.user, setStore });\n  }, [clerk, supabase]);\n  const tailwindLoaded = useTailwind();\n  if (!showDebug) return;\n  return /* @__PURE__ */ jsxs(\"ul\", { children: [\n    /* @__PURE__ */ jsxs(\"li\", { children: [\n      clerk ? /* @__PURE__ */ jsx(\"span\", { className: \"text-green-500\", children: \"loaded\" }) : \"loading..\",\n      \" \",\n      \"(clerk)\"\n    ] }),\n    /* @__PURE__ */ jsxs(\"li\", { children: [\n      supabase ? /* @__PURE__ */ jsx(\"span\", { className: \"text-green-500\", children: \"loaded\" }) : \"loading..\",\n      \" \",\n      \"(supabase)\"\n    ] }),\n    /* @__PURE__ */ jsxs(\"li\", { children: [\n      user ? /* @__PURE__ */ jsx(\"span\", { className: \"text-green-500\", children: \"loaded\" }) : \"loading..\",\n      \" \",\n      \"(user)\"\n    ] }),\n    /* @__PURE__ */ jsx(\"br\", {}),\n    /* @__PURE__ */ jsxs(\"li\", { children: [\n      tailwindLoaded ? /* @__PURE__ */ jsx(\"span\", { className: \"text-green-500\", children: \"loaded\" }) : \"loading..\",\n      \"(tailwind)\"\n    ] })\n  ] });\n}\nfunction loadClerk(_0) {\n  return __async(this, arguments, function* ({ setStore }) {\n    yield Clerk.load({\n      localization: koKR\n      // signInForceRedirectUrl: \"https://harbor.school/my-courses\", // not working\n    });\n    console.log(\"ClerkJS is loaded\");\n    setStore({ clerk: Clerk });\n  });\n}\nvar useWindowLoad = (asyncCallback) => {\n  const [loaded, setLoaded] = useState(false);\n  useLayoutEffect(() => {\n    const onLoad = () => __async(null, null, function* () {\n      yield asyncCallback();\n      setLoaded(true);\n    });\n    window.addEventListener(\"load\", onLoad);\n    return () => {\n      window.removeEventListener(\"load\", onLoad);\n    };\n  }, [asyncCallback]);\n  return loaded;\n};\nvar useCountdown = (initialSeconds) => {\n  const [seconds, setSeconds] = useState(initialSeconds);\n  useEffect(() => {\n    if (seconds <= 0) {\n      return;\n    }\n    const intervalId = setInterval(() => {\n      setSeconds((prevSeconds) => prevSeconds - 1);\n    }, 1e3);\n    return () => clearInterval(intervalId);\n  }, [seconds]);\n  return seconds;\n};\nfunction initUser(_0) {\n  return __async(this, arguments, function* ({ supabase, clerkUser, setStore }) {\n    const email = clerkUser.primaryEmailAddress.emailAddress;\n    const { data, error } = yield supabase.from(\"users\").select().eq(\"email\", email);\n    console.log(\"data\", data);\n    if (data.length >= 1) setStore({ user: data[0] });\n    else {\n      const { data: created, error: error2 } = yield supabase.from(\"users\").insert({\n        email,\n        username: clerkUser.fullName\n      }).select();\n      console.log(\"error\", error2);\n      console.log(\"created\", created);\n      setStore({ user: created[0] });\n    }\n  });\n}\nInit.propertyControls = {\n  databaseURL: {\n    title: \"DB URL\",\n    type: ControlType.String,\n    defaultValue: \"\"\n  },\n  anonKey: {\n    type: ControlType.String,\n    defaultValue: \"\"\n  }\n};\n\nexport {\n  Init\n};\n", "import {\n  Spinner\n} from \"./chunk-SDKSBXQ2.mjs\";\nimport {\n  useGlobalStore\n} from \"./chunk-QHMWAEE2.mjs\";\nimport {\n  isDev\n} from \"./chunk-OBTVI3NH.mjs\";\n\n// src/auth/Login.tsx\nimport { useEffect } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction Login(props) {\n  const [store, setStore] = useGlobalStore();\n  const { clerk, user } = store;\n  useEffect(() => {\n    if (!clerk) return;\n    if (!clerk.user) {\n      const signInDiv = document.getElementById(\"sign-in\");\n      const signInProps = {\n        afterSignInUrl: \"/my-courses\",\n        afterSignUpUrl: \"/courses\"\n      };\n      console.log(\"signInProps\", signInProps);\n      clerk.mountSignIn(signInDiv, signInProps);\n    }\n  }, [clerk]);\n  if (!clerk && !isDev)\n    return /* @__PURE__ */ jsx(\"div\", { style: { display: \"flex\", justifyContent: \"center\" }, children: /* @__PURE__ */ jsx(Spinner, { style: { width: 24, height: 24 } }) });\n  return /* @__PURE__ */ jsxs(\"div\", { children: [\n    /* @__PURE__ */ jsx(\"style\", { children: `\n            .cl-internal-b3fm6y {\n                display: none !important;\n            }\n        ` }),\n    !(clerk == null ? void 0 : clerk.user) && /* @__PURE__ */ jsx(\"div\", { style: { display: \"flex\", justifyContent: \"center\" }, children: /* @__PURE__ */ jsx(\"div\", { id: \"sign-in\" }) })\n  ] });\n}\n\nexport {\n  Login\n};\n", "import {\n  MenuItem\n} from \"./chunk-SDKSBXQ2.mjs\";\nimport {\n  useGlobalStore\n} from \"./chunk-QHMWAEE2.mjs\";\nimport {\n  afterSignOutUrl\n} from \"./chunk-HLCVLHIF.mjs\";\n\n// src/auth/UserButton.tsx\nimport { useEffect } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nfunction UserButton(props) {\n  const [store, setStore] = useGlobalStore();\n  const { clerk, user } = store;\n  useEffect(() => {\n    if (!clerk) return;\n    if (clerk.user) {\n      const userButtonDiv = document.getElementById(\"user-button\");\n      clerk.mountUserButton(userButtonDiv, { afterSignOutUrl });\n    }\n  }, [clerk]);\n  if (!clerk) return /* @__PURE__ */ jsx(MenuItem, { title: \"...\" });\n  return /* @__PURE__ */ jsxs(Fragment, { children: [\n    /* @__PURE__ */ jsx(\"style\", { children: `\n            .cl-userButtonPopoverActionButton__manageAccount, .cl-userButtonPopoverFooter {\n                display: none !important;\n            }\n        ` }),\n    (clerk == null ? void 0 : clerk.user) ? /* @__PURE__ */ jsxs(\n      \"div\",\n      {\n        style: {\n          display: \"flex\",\n          gap: 36,\n          justifyContent: \"end\"\n        },\n        className: \"flex-col md:flex-row items-start md:items-center\",\n        children: [\n          /* @__PURE__ */ jsx(\n            MenuItem,\n            {\n              title: \"\\uB0B4 \\uAC15\\uC758\\uC2E4\",\n              onClick: () => window.open(`/my-courses`, \"_self\")\n            }\n          ),\n          /* @__PURE__ */ jsx(\"div\", { id: \"user-button\" })\n        ]\n      }\n    ) : /* @__PURE__ */ jsx(\n      MenuItem,\n      {\n        title: \"\\uB85C\\uADF8\\uC778\",\n        onClick: () => window.open(`/login`, \"_self\")\n      }\n    )\n  ] });\n}\n\nexport {\n  UserButton\n};\n", "import {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-JWK35I2R.mjs\";\n\n// src/CompareImage.tsx\nimport { ControlType } from \"framer\";\n\n// node_modules/.pnpm/react-compare-slider@3.1.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-compare-slider/dist/index.mjs\nimport { forwardRef as be, useCallback as P, useEffect as k, useImperativeHandle as He, useRef as M, useState as V } from \"react\";\nimport { forwardRef as ee } from \"react\";\nimport { jsx as te } from \"react/jsx-runtime\";\nimport { jsx as H, jsxs as ne } from \"react/jsx-runtime\";\nimport { useCallback as ge, useEffect as O, useLayoutEffect as Le, useRef as N } from \"react\";\nimport { jsx as Y, jsxs as xe } from \"react/jsx-runtime\";\nimport { forwardRef as we } from \"react\";\nimport { jsx as Ae } from \"react/jsx-runtime\";\nimport { useRef as De } from \"react\";\nvar B = ee((_a, r) => {\n  var _b = _a, { transition: e } = _b, t = __objRest(_b, [\"transition\"]);\n  let o = { position: \"absolute\", top: 0, left: 0, width: \"100%\", height: \"100%\", transition: e ? `clip-path ${e}` : void 0, userSelect: \"none\", willChange: \"clip-path, transition\", KhtmlUserSelect: \"none\", MozUserSelect: \"none\", WebkitUserSelect: \"none\" };\n  return te(\"div\", __spreadProps(__spreadValues({}, t), { style: o, \"data-rcs\": \"clip-item\", ref: r }));\n});\nB.displayName = \"ContainerClip\";\nvar W = ee(({ children: e, disabled: t, portrait: r, position: o, transition: i }, m) => {\n  let u = { position: \"absolute\", top: 0, width: r ? \"100%\" : void 0, height: r ? void 0 : \"100%\", background: \"none\", border: 0, padding: 0, pointerEvents: \"all\", appearance: \"none\", WebkitAppearance: \"none\", MozAppearance: \"none\", outline: 0, transform: r ? \"translate3d(0, -50% ,0)\" : \"translate3d(-50%, 0, 0)\", transition: i ? `${r ? \"top\" : \"left\"} ${i}` : void 0 };\n  return te(\"button\", { ref: m, \"aria-label\": \"Drag to move or focus and use arrow keys\", \"aria-orientation\": r ? \"vertical\" : \"horizontal\", \"aria-valuemin\": 0, \"aria-valuemax\": 100, \"aria-valuenow\": o, \"data-rcs\": \"handle-container\", disabled: t, role: \"slider\", style: u, children: e });\n});\nW.displayName = \"ThisHandleContainer\";\nvar re = ({ flip: e }) => H(\"div\", { className: \"__rcs-handle-arrow\", style: { width: 0, height: 0, borderTop: \"8px solid transparent\", borderRight: \"10px solid\", borderBottom: \"8px solid transparent\", transform: e ? \"rotate(180deg)\" : void 0 } });\nvar F = (_a) => {\n  var _b = _a, { className: e = \"__rcs-handle-root\", disabled: t, buttonStyle: r, linesStyle: o, portrait: i, style: m } = _b, C = __objRest(_b, [\"className\", \"disabled\", \"buttonStyle\", \"linesStyle\", \"portrait\", \"style\"]);\n  let u = __spreadValues({ display: \"flex\", flexDirection: i ? \"row\" : \"column\", placeItems: \"center\", height: \"100%\", cursor: t ? \"not-allowed\" : i ? \"ns-resize\" : \"ew-resize\", pointerEvents: \"none\", color: \"#fff\" }, m), E = __spreadValues({ flexGrow: 1, height: i ? 2 : \"100%\", width: i ? \"100%\" : 2, backgroundColor: \"currentColor\", pointerEvents: \"auto\", boxShadow: \"0 0 4px rgba(0,0,0,.5)\" }, o), y = __spreadValues({ display: \"grid\", gridAutoFlow: \"column\", gap: 8, placeContent: \"center\", flexShrink: 0, width: 56, height: 56, borderRadius: \"50%\", borderStyle: \"solid\", borderWidth: 2, pointerEvents: \"auto\", backdropFilter: \"blur(7px)\", WebkitBackdropFilter: \"blur(7px)\", backgroundColor: \"rgba(0, 0, 0, 0.125)\", boxShadow: \"0 0 4px rgba(0,0,0,.35)\", transform: i ? \"rotate(90deg)\" : void 0 }, r);\n  return ne(\"div\", __spreadProps(__spreadValues({}, C), { className: e, style: u, children: [H(\"div\", { className: \"__rcs-handle-line\", style: E }), ne(\"div\", { className: \"__rcs-handle-button\", style: y, children: [H(re, {}), H(re, { flip: true })] }), H(\"div\", { className: \"__rcs-handle-line\", style: E })] }));\n};\nvar $ = ((i) => (i.ARROW_LEFT = \"ArrowLeft\", i.ARROW_RIGHT = \"ArrowRight\", i.ARROW_UP = \"ArrowUp\", i.ARROW_DOWN = \"ArrowDown\", i))($ || {});\nvar G = (_a = {}) => {\n  var _b = _a, { boxSizing: e = \"border-box\", objectFit: t = \"cover\", objectPosition: r = \"center center\" } = _b, o = __objRest(_b, [\"boxSizing\", \"objectFit\", \"objectPosition\"]);\n  return __spreadValues({ display: \"block\", width: \"100%\", height: \"100%\", maxWidth: \"100%\", boxSizing: e, objectFit: t, objectPosition: r }, o);\n};\nvar oe = (e) => {\n  let t = N(e);\n  return O(() => {\n    t.current = e;\n  }), t.current;\n};\nvar U = (e, t, r, o) => {\n  let i = N();\n  O(() => {\n    i.current = t;\n  }, [t]), O(() => {\n    if (!(r && r.addEventListener)) return;\n    let m = (C) => i.current && i.current(C);\n    return r.addEventListener(e, m, o), () => {\n      r.removeEventListener(e, m, o);\n    };\n  }, [e, r, o]);\n};\nvar Te = typeof window < \"u\" && typeof window.document < \"u\" && typeof window.document.createElement < \"u\" ? Le : O;\nvar ie = (e, t) => {\n  let r = N(), o = ge(() => {\n    e.current && r.current && r.current.observe(e.current);\n  }, [e]);\n  Te(() => (r.current = new ResizeObserver(([i]) => t(i.contentRect)), o(), () => {\n    r.current && r.current.disconnect();\n  }), [t, o]);\n};\nvar I = { capture: false, passive: true };\nvar X = { capture: true, passive: false };\nvar Me = (e) => {\n  e.preventDefault(), e.currentTarget.focus();\n};\nvar se = be((_a, de) => {\n  var _b = _a, { boundsPadding: e = 0, browsingContext: t = globalThis, changePositionOnHover: r = false, disabled: o = false, handle: i, itemOne: m, itemTwo: C, keyboardIncrement: u = \"5%\", onlyHandleDraggable: E = false, onPositionChange: y, portrait: a = false, position: g = 50, style: le, transition: ce } = _b, pe = __objRest(_b, [\"boundsPadding\", \"browsingContext\", \"changePositionOnHover\", \"disabled\", \"handle\", \"itemOne\", \"itemTwo\", \"keyboardIncrement\", \"onlyHandleDraggable\", \"onPositionChange\", \"portrait\", \"position\", \"style\", \"transition\"]);\n  let p = M(null), j = M(null), f = M(null), d = M(g), [L, q] = V(false), [me, x] = V(true), w = M(false), [ue, fe] = V(), J = oe(g), l = P(function({ x: s, y: c, isOffset: R }) {\n    let b = p.current, A = f.current, D = j.current, { width: h, height: S, left: Pe, top: Ee } = b.getBoundingClientRect();\n    if (h === 0 || S === 0) return;\n    let ye = a ? R ? c - Ee - t.scrollY : c : R ? s - Pe - t.scrollX : s, Q = Math.min(Math.max(ye / (a ? S : h) * 100, 0), 100), z = a ? S / (b.offsetHeight || 1) : h / (b.offsetWidth || 1), Z = e * z / (a ? S : h) * 100, _ = Math.min(Math.max(Q, Z * z), 100 - Z * z);\n    d.current = Q, A.setAttribute(\"aria-valuenow\", `${Math.round(d.current)}`), A.style.top = a ? `${_}%` : \"0\", A.style.left = a ? \"0\" : `${_}%`, D.style.clipPath = a ? `inset(${_}% 0 0 0)` : `inset(0 0 0 ${_}%)`, y && y(d.current);\n  }, [e, y, a, t]);\n  k(() => {\n    let { width: n, height: s } = p.current.getBoundingClientRect(), c = g === J ? d.current : g;\n    l({ x: n / 100 * c, y: s / 100 * c });\n  }, [e, g, a, J, l]);\n  let Re = P((n) => {\n    n.preventDefault(), !(o || n.button !== 0) && (l({ isOffset: true, x: n.pageX, y: n.pageY }), q(true), x(true));\n  }, [o, l]), v = P(function(s) {\n    l({ isOffset: true, x: s.pageX, y: s.pageY }), x(false);\n  }, [l]), T = P(() => {\n    q(false), x(true);\n  }, []), Se = P(({ width: n, height: s }) => {\n    let { width: c, height: R } = p.current.getBoundingClientRect();\n    l({ x: n / 100 * d.current * c / n, y: s / 100 * d.current * R / s });\n  }, [l]), Ce = P((n) => {\n    if (!Object.values($).includes(n.key)) return;\n    n.preventDefault(), x(true);\n    let { top: s, left: c } = f.current.getBoundingClientRect(), { width: R, height: b } = p.current.getBoundingClientRect(), D = typeof u == \"string\" ? parseFloat(u) : u / R * 100, h = a ? n.key === \"ArrowLeft\" || n.key === \"ArrowDown\" : n.key === \"ArrowRight\" || n.key === \"ArrowUp\", S = Math.min(Math.max(h ? d.current + D : d.current - D, 0), 100);\n    l({ x: a ? c : R * S / 100, y: a ? b * S / 100 : s });\n  }, [u, a, l]);\n  k(() => {\n    fe(E ? f.current : p.current);\n  }, [E]), k(() => {\n    let n = p.current, s = () => {\n      L || T();\n    };\n    return r && (n.addEventListener(\"pointermove\", v, I), n.addEventListener(\"pointerleave\", s, I)), () => {\n      n.removeEventListener(\"pointermove\", v), n.removeEventListener(\"pointerleave\", s);\n    };\n  }, [r, v, T, L]), k(() => (L && !w.current && (t.addEventListener(\"pointermove\", v, I), t.addEventListener(\"pointerup\", T, I), w.current = true), () => {\n    w.current && (t.removeEventListener(\"pointermove\", v), t.removeEventListener(\"pointerup\", T), w.current = false);\n  }), [v, T, L, t]), He(de, () => ({ rootContainer: p.current, handleContainer: f.current, setPosition(n) {\n    let { width: s, height: c } = p.current.getBoundingClientRect();\n    l({ x: s / 100 * n, y: c / 100 * n });\n  } }), [l]), ie(p, Se), U(\"keydown\", Ce, f.current, X), U(\"click\", Me, f.current, X), U(\"pointerdown\", Re, ue, X);\n  let ve = i || Y(F, { disabled: o, portrait: a }), K = me ? ce : void 0, he = __spreadValues({ position: \"relative\", display: \"flex\", overflow: \"hidden\", cursor: L ? a ? \"ns-resize\" : \"ew-resize\" : void 0, touchAction: \"none\", userSelect: \"none\", KhtmlUserSelect: \"none\", msUserSelect: \"none\", MozUserSelect: \"none\", WebkitUserSelect: \"none\" }, le);\n  return xe(\"div\", __spreadProps(__spreadValues({}, pe), { ref: p, style: he, \"data-rcs\": \"root\", children: [m, Y(B, { ref: j, transition: K, children: C }), Y(W, { disabled: o, portrait: a, position: Math.round(d.current), ref: f, transition: K, children: ve })] }));\n});\nse.displayName = \"ReactCompareSlider\";\nvar ae = we((_a, r) => {\n  var _b = _a, { style: e } = _b, t = __objRest(_b, [\"style\"]);\n  let o = G(e);\n  return Ae(\"img\", __spreadProps(__spreadValues({ ref: r }, t), { style: o, \"data-rcs\": \"image\" }));\n});\nae.displayName = \"ReactCompareSliderImage\";\n\n// src/CompareImage.tsx\nimport { jsx } from \"react/jsx-runtime\";\nfunction CompareImage({\n  image1 = \"https://upload.wikimedia.org/wikipedia/commons/f/f5/Poster-sized_portrait_of_Barack_Obama.jpg\",\n  image2 = \"https://upload.wikimedia.org/wikipedia/en/b/b7/President_Barack_Obama_by_Kehinde_Wiley.jpg\",\n  position\n}) {\n  return /* @__PURE__ */ jsx(\n    se,\n    {\n      itemOne: /* @__PURE__ */ jsx(ae, { src: image1, alt: \"Image one\" }),\n      itemTwo: /* @__PURE__ */ jsx(ae, { src: image2, alt: \"Image two\" }),\n      onlyHandleDraggable: true,\n      position,\n      style: { touchAction: \"pan-y\" }\n    }\n  );\n}\nCompareImage.propertyControls = {\n  image1: {\n    type: ControlType.Image,\n    defaultValue: \"https://upload.wikimedia.org/wikipedia/commons/f/f5/Poster-sized_portrait_of_Barack_Obama.jpg\"\n  },\n  image2: {\n    type: ControlType.Image,\n    defaultValue: \"https://upload.wikimedia.org/wikipedia/en/b/b7/President_Barack_Obama_by_Kehinde_Wiley.jpg\"\n  },\n  position: {\n    type: ControlType.Number,\n    min: 0,\n    max: 100,\n    defaultValue: 50\n  }\n};\n\nexport {\n  CompareImage\n};\n", "import {\n  useMounted\n} from \"./chunk-OBTVI3NH.mjs\";\n\n// src/Counter.tsx\nimport { ControlType } from \"framer\";\nimport { useState, useEffect } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar systemFont = `ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"`;\nvar highlightStyle = {\n  color: \"#005DFA\",\n  // \uC6D0\uD558\uB294 \uD558\uC774\uB77C\uC774\uD2B8 \uC0C9\uC0C1\n  fontWeight: \"bold\",\n  backgroundColor: \"#FCEBEF\",\n  // \uBC30\uACBD\uC0C9\n  padding: \"0 5px\",\n  borderRadius: \"4px\"\n};\nfunction Counter({\n  targetDate = \"2024-06-31T00:00:00\",\n  slotLeft,\n  suffix\n}) {\n  const calculateTimeLeft = () => {\n    const difference = +new Date(targetDate) - +/* @__PURE__ */ new Date();\n    let timeLeft2 = {};\n    if (difference > 0) {\n      timeLeft2 = {\n        days: Math.floor(difference / (1e3 * 60 * 60 * 24)),\n        hours: Math.floor(difference / (1e3 * 60 * 60) % 24),\n        minutes: Math.floor(difference / 1e3 / 60 % 60)\n      };\n    }\n    return timeLeft2;\n  };\n  const [timeLeft, setTimeLeft] = useState(calculateTimeLeft());\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      setTimeLeft(calculateTimeLeft());\n    }, 1e3);\n    return () => clearTimeout(timer);\n  }, [timeLeft]);\n  const isMounted = useMounted();\n  if (!isMounted) return;\n  return /* @__PURE__ */ jsx(\n    \"div\",\n    {\n      style: { fontFamily: systemFont, color: \"black\" },\n      className: \"md:text-xl text-xs md:text-center text-left\",\n      children: slotLeft ? /* @__PURE__ */ jsxs(\"span\", { children: [\n        /* @__PURE__ */ jsx(\"span\", { style: highlightStyle, children: slotLeft }),\n        /* @__PURE__ */ jsx(\"span\", { style: { whiteSpace: \"nowrap\" }, children: suffix })\n      ] }) : timeLeft.days !== void 0 ? /* @__PURE__ */ jsxs(\"span\", { children: [\n        /* @__PURE__ */ jsxs(\"span\", { style: highlightStyle, children: [\n          timeLeft.days,\n          \"\\uC77C\"\n        ] }),\n        \" \",\n        /* @__PURE__ */ jsxs(\"span\", { style: highlightStyle, children: [\n          timeLeft.hours,\n          \"\\uC2DC\\uAC04\"\n        ] }),\n        \" \",\n        /* @__PURE__ */ jsxs(\"span\", { style: highlightStyle, children: [\n          timeLeft.minutes,\n          \"\\uBD84\"\n        ] }),\n        /* @__PURE__ */ jsx(\"span\", { style: { whiteSpace: \"nowrap\" }, children: suffix })\n      ] }) : (\n        //  {/* <span>Time's up!</span>*/}\n        /* @__PURE__ */ jsxs(\"span\", { children: [\n          /* @__PURE__ */ jsx(\"span\", { style: highlightStyle, children: \"0\\uC77C\" }),\n          \" \",\n          /* @__PURE__ */ jsx(\"span\", { style: highlightStyle, children: \"0\\uC2DC\\uAC04\" }),\n          \" \",\n          /* @__PURE__ */ jsx(\"span\", { style: highlightStyle, children: \"0\\uBD84\" }),\n          /* @__PURE__ */ jsx(\"span\", { style: { whiteSpace: \"nowrap\" }, children: suffix })\n        ] })\n      )\n    }\n  );\n}\nCounter.propertyControls = {\n  targetDate: {\n    type: ControlType.String,\n    defaultValue: \"2024-07-30T00:00:00\"\n  },\n  slotLeft: {\n    type: ControlType.String,\n    defaultValue: \"2\\uC790\\uB9AC\"\n  },\n  suffix: {\n    type: ControlType.String,\n    defaultValue: \" \\uD6C4 \\uAC00\\uACA9 \\uC778\\uC0C1\"\n  }\n};\n\nexport {\n  Counter\n};\n", "import {\n  Ae\n} from \"./chunk-PO4BOMMR.mjs\";\nimport {\n  cx\n} from \"./chunk-OBTVI3NH.mjs\";\n\n// src/MuxPlayer.tsx\nimport { useState, useRef } from \"react\";\nimport { ControlType } from \"framer\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction MuxPlayer({\n  playbackId,\n  thumbnailUrl,\n  thumbnailTime,\n  title,\n  autoPlay = true,\n  startTime = 5,\n  endTime = 167\n}) {\n  const [isPlaying, setIsPlaying] = useState(false);\n  const [isClosed, setIsClosed] = useState(false);\n  const playerRef = useRef(null);\n  const handlePlay = () => {\n    setIsPlaying(true);\n  };\n  const handlePause = () => {\n    if (playerRef.current) {\n      playerRef.current.pause();\n    }\n    setIsPlaying(false);\n  };\n  const handleClose = () => {\n    setIsPlaying(false);\n    setIsClosed(true);\n  };\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      className: `overflow-hidden video-container ${isPlaying ? \"playing\" : \"\"} ${isClosed ? \"closed\" : \"\"}`,\n      children: [\n        /* @__PURE__ */ jsx(\n          \"button\",\n          {\n            onClick: (e) => {\n              if (isPlaying) handlePause();\n              else handleClose();\n            },\n            className: \"absolute top-2 left-2 md:top-4 md:left-4 z-20 bg-black bg-opacity-50 rounded-full w-10 h-10 flex items-center justify-center text-white hover:bg-opacity-70 transition-all\",\n            children: /* @__PURE__ */ jsx(\n              \"svg\",\n              {\n                width: \"16\",\n                height: \"16\",\n                viewBox: \"0 0 24 24\",\n                fill: \"none\",\n                xmlns: \"http://www.w3.org/2000/svg\",\n                children: /* @__PURE__ */ jsx(\n                  \"path\",\n                  {\n                    d: \"M18 6L6 18M6 6L18 18\",\n                    stroke: \"currentColor\",\n                    strokeWidth: \"2\",\n                    strokeLinecap: \"round\",\n                    strokeLinejoin: \"round\"\n                  }\n                )\n              }\n            )\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"div\", { className: \"absolute left-1/2 top-1/2 transform -translate-x-1/2 -translate-y-1/2 video-wrapper\", children: [\n          /* @__PURE__ */ jsx(\n            \"img\",\n            {\n              src: thumbnailUrl,\n              className: cx(\n                \"w-full h-full object-cover absolute z-10 pointer-events-none\",\n                isPlaying ? \"opacity-0\" : \"opacity-100\"\n              )\n            }\n          ),\n          /* @__PURE__ */ jsx(PlayButton, { isPlaying }),\n          /* @__PURE__ */ jsx(\n            Ae,\n            {\n              ref: playerRef,\n              playbackId,\n              thumbnailTime,\n              metadataVideoTitle: title,\n              primaryColor: \"#FFFFFF\",\n              secondaryColor: \"#000000\",\n              accentColor: \"#005DFA\",\n              autoPlay: false,\n              startTime,\n              loop: true,\n              endTime,\n              onPlay: handlePlay,\n              onPause: handlePause\n            }\n          )\n        ] }),\n        /* @__PURE__ */ jsx(\"style\", { children: `\n        .video-container {\n          position: fixed;\n          bottom: 20px;\n          left: 20px;\n          width: 168px;\n          height: 258px;\n          transition: all 0.3s ease;\n          z-index: 1;\n          border-radius: 32px;\n        }\n\n        .video-wrapper {\n          width: 486px;\n          height: 300px;\n        }\n\n        .video-container.playing {\n          left: 50%;\n          bottom: 50%;\n          transform: translate(-50%, 50%);\n          width: 70%;\n          height: 70%;\n        }\n\n        .video-container.closed {\n          transform: translateX(-200%);\n          opacity: 0;\n        }\n\n        .video-container.playing .video-wrapper {\n          width: 100%;\n          height: 100%;\n        }\n\n        mux-player {\n          --seek-backward-button: none;\n          --seek-forward-button: none;\n          width: 100%;\n          height: auto;\n          display: block;\n        }\n        \n        @media (max-width: 768px) {\n          .video-container {\n            width: 100px;\n            height: 190px;\n            bottom: 50px;\n            border-radius: 20px;\n            left: 16px;\n          }\n          .video-wrapper {\n            width: 400px;\n            height: 190px;\n          }\n\n         \n\n          .video-container.playing {\n            top: 0;\n            left: 0;\n            right: 0;\n            bottom: 0;\n            width: 100%;\n            height: 100%;\n            transform: none;\n            border-radius: 0;\n          }\n          .video-container.playing .video-wrapper {\n            width: 300%;\n            height: 100%;\n          }\n\n          .video-container.playing mux-player {\n            height: 100%;\n          }\n          \n          .video-container.closed {\n            transform: translateX(-200%);\n            opacity: 0;\n          }\n        }\n      ` })\n      ]\n    }\n  );\n}\nfunction PlayButton({ isPlaying }) {\n  return /* @__PURE__ */ jsx(\n    \"div\",\n    {\n      className: cx(\n        \"absolute inset-0 flex items-center justify-center pointer-events-none top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 z-10\",\n        isPlaying ? \"opacity-0\" : \"opacity-100\"\n      ),\n      children: /* @__PURE__ */ jsx(\"div\", { className: \"w-16 h-16 rounded-full bg-black bg-opacity-25 flex items-center justify-center\", children: /* @__PURE__ */ jsx(\n        \"svg\",\n        {\n          className: \"w-8 h-8 text-white\",\n          fill: \"currentColor\",\n          viewBox: \"0 0 24 24\",\n          children: /* @__PURE__ */ jsx(\"path\", { d: \"M8 5v14l11-7z\" })\n        }\n      ) })\n    }\n  );\n}\nMuxPlayer.propertyControls = {\n  playbackId: {\n    type: ControlType.String,\n    title: \"Playback ID\",\n    defaultValue: \"5duxZe1PdSCnujI3H2fOrJ01JM53ePc2bYxJ0000xcuo0000\"\n  },\n  thumbnailUrl: {\n    type: ControlType.String,\n    title: \"Thumbnail URL\",\n    defaultValue: \"https://cdn.monthlystartup.co/comfy-for-real-ads-thumbnail.webp\"\n  },\n  thumbnailTime: {\n    type: ControlType.Number,\n    title: \"Thumbnail Time\"\n  },\n  title: {\n    type: ControlType.String,\n    title: \"Title\"\n  },\n  autoPlay: {\n    type: ControlType.Boolean,\n    title: \"Auto Play\",\n    defaultValue: true\n  },\n  startTime: {\n    type: ControlType.Number,\n    title: \"Start Time (seconds)\",\n    defaultValue: 5\n  },\n  endTime: {\n    type: ControlType.Number,\n    title: \"End Time (seconds)\",\n    defaultValue: 167\n  }\n};\n\nexport {\n  MuxPlayer\n};\n", "import {\n  __export\n} from \"./chunk-JWK35I2R.mjs\";\n\n// node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/esm/commons.js\nvar PACKET_TYPES = /* @__PURE__ */ Object.create(null);\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nvar PACKET_TYPES_REVERSE = /* @__PURE__ */ Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key) => {\n  PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nvar ERROR_PACKET = { type: \"error\", data: \"parser error\" };\n\n// node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/esm/encodePacket.browser.js\nvar withNativeBlob = typeof Blob === \"function\" || typeof Blob !== \"undefined\" && Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\";\nvar withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nvar isView = (obj) => {\n  return typeof ArrayBuffer.isView === \"function\" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer;\n};\nvar encodePacket = ({ type, data }, supportsBinary, callback) => {\n  if (withNativeBlob && data instanceof Blob) {\n    if (supportsBinary) {\n      return callback(data);\n    } else {\n      return encodeBlobAsBase64(data, callback);\n    }\n  } else if (withNativeArrayBuffer && (data instanceof ArrayBuffer || isView(data))) {\n    if (supportsBinary) {\n      return callback(data);\n    } else {\n      return encodeBlobAsBase64(new Blob([data]), callback);\n    }\n  }\n  return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nvar encodeBlobAsBase64 = (data, callback) => {\n  const fileReader = new FileReader();\n  fileReader.onload = function() {\n    const content = fileReader.result.split(\",\")[1];\n    callback(\"b\" + (content || \"\"));\n  };\n  return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n  if (data instanceof Uint8Array) {\n    return data;\n  } else if (data instanceof ArrayBuffer) {\n    return new Uint8Array(data);\n  } else {\n    return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n  }\n}\nvar TEXT_ENCODER;\nfunction encodePacketToBinary(packet, callback) {\n  if (withNativeBlob && packet.data instanceof Blob) {\n    return packet.data.arrayBuffer().then(toArray).then(callback);\n  } else if (withNativeArrayBuffer && (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n    return callback(toArray(packet.data));\n  }\n  encodePacket(packet, false, (encoded) => {\n    if (!TEXT_ENCODER) {\n      TEXT_ENCODER = new TextEncoder();\n    }\n    callback(TEXT_ENCODER.encode(encoded));\n  });\n}\n\n// node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n  lookup[chars.charCodeAt(i)] = i;\n}\nvar decode = (base64) => {\n  let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n  if (base64[base64.length - 1] === \"=\") {\n    bufferLength--;\n    if (base64[base64.length - 2] === \"=\") {\n      bufferLength--;\n    }\n  }\n  const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n  for (i = 0; i < len; i += 4) {\n    encoded1 = lookup[base64.charCodeAt(i)];\n    encoded2 = lookup[base64.charCodeAt(i + 1)];\n    encoded3 = lookup[base64.charCodeAt(i + 2)];\n    encoded4 = lookup[base64.charCodeAt(i + 3)];\n    bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n    bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n    bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n  }\n  return arraybuffer;\n};\n\n// node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/esm/decodePacket.browser.js\nvar withNativeArrayBuffer2 = typeof ArrayBuffer === \"function\";\nvar decodePacket = (encodedPacket, binaryType) => {\n  if (typeof encodedPacket !== \"string\") {\n    return {\n      type: \"message\",\n      data: mapBinary(encodedPacket, binaryType)\n    };\n  }\n  const type = encodedPacket.charAt(0);\n  if (type === \"b\") {\n    return {\n      type: \"message\",\n      data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n    };\n  }\n  const packetType = PACKET_TYPES_REVERSE[type];\n  if (!packetType) {\n    return ERROR_PACKET;\n  }\n  return encodedPacket.length > 1 ? {\n    type: PACKET_TYPES_REVERSE[type],\n    data: encodedPacket.substring(1)\n  } : {\n    type: PACKET_TYPES_REVERSE[type]\n  };\n};\nvar decodeBase64Packet = (data, binaryType) => {\n  if (withNativeArrayBuffer2) {\n    const decoded = decode(data);\n    return mapBinary(decoded, binaryType);\n  } else {\n    return { base64: true, data };\n  }\n};\nvar mapBinary = (data, binaryType) => {\n  switch (binaryType) {\n    case \"blob\":\n      if (data instanceof Blob) {\n        return data;\n      } else {\n        return new Blob([data]);\n      }\n    case \"arraybuffer\":\n    default:\n      if (data instanceof ArrayBuffer) {\n        return data;\n      } else {\n        return data.buffer;\n      }\n  }\n};\n\n// node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/esm/index.js\nvar SEPARATOR = String.fromCharCode(30);\nvar encodePayload = (packets, callback) => {\n  const length = packets.length;\n  const encodedPackets = new Array(length);\n  let count = 0;\n  packets.forEach((packet, i) => {\n    encodePacket(packet, false, (encodedPacket) => {\n      encodedPackets[i] = encodedPacket;\n      if (++count === length) {\n        callback(encodedPackets.join(SEPARATOR));\n      }\n    });\n  });\n};\nvar decodePayload = (encodedPayload, binaryType) => {\n  const encodedPackets = encodedPayload.split(SEPARATOR);\n  const packets = [];\n  for (let i = 0; i < encodedPackets.length; i++) {\n    const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n    packets.push(decodedPacket);\n    if (decodedPacket.type === \"error\") {\n      break;\n    }\n  }\n  return packets;\n};\nfunction createPacketEncoderStream() {\n  return new TransformStream({\n    transform(packet, controller) {\n      encodePacketToBinary(packet, (encodedPacket) => {\n        const payloadLength = encodedPacket.length;\n        let header;\n        if (payloadLength < 126) {\n          header = new Uint8Array(1);\n          new DataView(header.buffer).setUint8(0, payloadLength);\n        } else if (payloadLength < 65536) {\n          header = new Uint8Array(3);\n          const view = new DataView(header.buffer);\n          view.setUint8(0, 126);\n          view.setUint16(1, payloadLength);\n        } else {\n          header = new Uint8Array(9);\n          const view = new DataView(header.buffer);\n          view.setUint8(0, 127);\n          view.setBigUint64(1, BigInt(payloadLength));\n        }\n        if (packet.data && typeof packet.data !== \"string\") {\n          header[0] |= 128;\n        }\n        controller.enqueue(header);\n        controller.enqueue(encodedPacket);\n      });\n    }\n  });\n}\nvar TEXT_DECODER;\nfunction totalLength(chunks) {\n  return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n  if (chunks[0].length === size) {\n    return chunks.shift();\n  }\n  const buffer = new Uint8Array(size);\n  let j = 0;\n  for (let i = 0; i < size; i++) {\n    buffer[i] = chunks[0][j++];\n    if (j === chunks[0].length) {\n      chunks.shift();\n      j = 0;\n    }\n  }\n  if (chunks.length && j < chunks[0].length) {\n    chunks[0] = chunks[0].slice(j);\n  }\n  return buffer;\n}\nfunction createPacketDecoderStream(maxPayload, binaryType) {\n  if (!TEXT_DECODER) {\n    TEXT_DECODER = new TextDecoder();\n  }\n  const chunks = [];\n  let state = 0;\n  let expectedLength = -1;\n  let isBinary2 = false;\n  return new TransformStream({\n    transform(chunk, controller) {\n      chunks.push(chunk);\n      while (true) {\n        if (state === 0) {\n          if (totalLength(chunks) < 1) {\n            break;\n          }\n          const header = concatChunks(chunks, 1);\n          isBinary2 = (header[0] & 128) === 128;\n          expectedLength = header[0] & 127;\n          if (expectedLength < 126) {\n            state = 3;\n          } else if (expectedLength === 126) {\n            state = 1;\n          } else {\n            state = 2;\n          }\n        } else if (state === 1) {\n          if (totalLength(chunks) < 2) {\n            break;\n          }\n          const headerArray = concatChunks(chunks, 2);\n          expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n          state = 3;\n        } else if (state === 2) {\n          if (totalLength(chunks) < 8) {\n            break;\n          }\n          const headerArray = concatChunks(chunks, 8);\n          const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n          const n = view.getUint32(0);\n          if (n > Math.pow(2, 53 - 32) - 1) {\n            controller.enqueue(ERROR_PACKET);\n            break;\n          }\n          expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n          state = 3;\n        } else {\n          if (totalLength(chunks) < expectedLength) {\n            break;\n          }\n          const data = concatChunks(chunks, expectedLength);\n          controller.enqueue(decodePacket(isBinary2 ? data : TEXT_DECODER.decode(data), binaryType));\n          state = 0;\n        }\n        if (expectedLength === 0 || expectedLength > maxPayload) {\n          controller.enqueue(ERROR_PACKET);\n          break;\n        }\n      }\n    }\n  });\n}\nvar protocol = 4;\n\n// node_modules/.pnpm/@socket.io+component-emitter@3.1.2/node_modules/@socket.io/component-emitter/lib/esm/index.js\nfunction Emitter(obj) {\n  if (obj) return mixin(obj);\n}\nfunction mixin(obj) {\n  for (var key in Emitter.prototype) {\n    obj[key] = Emitter.prototype[key];\n  }\n  return obj;\n}\nEmitter.prototype.on = Emitter.prototype.addEventListener = function(event, fn) {\n  this._callbacks = this._callbacks || {};\n  (this._callbacks[\"$\" + event] = this._callbacks[\"$\" + event] || []).push(fn);\n  return this;\n};\nEmitter.prototype.once = function(event, fn) {\n  function on2() {\n    this.off(event, on2);\n    fn.apply(this, arguments);\n  }\n  on2.fn = fn;\n  this.on(event, on2);\n  return this;\n};\nEmitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function(event, fn) {\n  this._callbacks = this._callbacks || {};\n  if (0 == arguments.length) {\n    this._callbacks = {};\n    return this;\n  }\n  var callbacks = this._callbacks[\"$\" + event];\n  if (!callbacks) return this;\n  if (1 == arguments.length) {\n    delete this._callbacks[\"$\" + event];\n    return this;\n  }\n  var cb;\n  for (var i = 0; i < callbacks.length; i++) {\n    cb = callbacks[i];\n    if (cb === fn || cb.fn === fn) {\n      callbacks.splice(i, 1);\n      break;\n    }\n  }\n  if (callbacks.length === 0) {\n    delete this._callbacks[\"$\" + event];\n  }\n  return this;\n};\nEmitter.prototype.emit = function(event) {\n  this._callbacks = this._callbacks || {};\n  var args = new Array(arguments.length - 1), callbacks = this._callbacks[\"$\" + event];\n  for (var i = 1; i < arguments.length; i++) {\n    args[i - 1] = arguments[i];\n  }\n  if (callbacks) {\n    callbacks = callbacks.slice(0);\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\n      callbacks[i].apply(this, args);\n    }\n  }\n  return this;\n};\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\nEmitter.prototype.listeners = function(event) {\n  this._callbacks = this._callbacks || {};\n  return this._callbacks[\"$\" + event] || [];\n};\nEmitter.prototype.hasListeners = function(event) {\n  return !!this.listeners(event).length;\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/globals.js\nvar nextTick = (() => {\n  const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n  if (isPromiseAvailable) {\n    return (cb) => Promise.resolve().then(cb);\n  } else {\n    return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n  }\n})();\nvar globalThisShim = (() => {\n  if (typeof self !== \"undefined\") {\n    return self;\n  } else if (typeof window !== \"undefined\") {\n    return window;\n  } else {\n    return Function(\"return this\")();\n  }\n})();\nvar defaultBinaryType = \"arraybuffer\";\nfunction createCookieJar() {\n}\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/util.js\nfunction pick(obj, ...attr) {\n  return attr.reduce((acc, k) => {\n    if (obj.hasOwnProperty(k)) {\n      acc[k] = obj[k];\n    }\n    return acc;\n  }, {});\n}\nvar NATIVE_SET_TIMEOUT = globalThisShim.setTimeout;\nvar NATIVE_CLEAR_TIMEOUT = globalThisShim.clearTimeout;\nfunction installTimerFunctions(obj, opts) {\n  if (opts.useNativeTimers) {\n    obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThisShim);\n    obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThisShim);\n  } else {\n    obj.setTimeoutFn = globalThisShim.setTimeout.bind(globalThisShim);\n    obj.clearTimeoutFn = globalThisShim.clearTimeout.bind(globalThisShim);\n  }\n}\nvar BASE64_OVERHEAD = 1.33;\nfunction byteLength(obj) {\n  if (typeof obj === \"string\") {\n    return utf8Length(obj);\n  }\n  return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n  let c = 0, length = 0;\n  for (let i = 0, l = str.length; i < l; i++) {\n    c = str.charCodeAt(i);\n    if (c < 128) {\n      length += 1;\n    } else if (c < 2048) {\n      length += 2;\n    } else if (c < 55296 || c >= 57344) {\n      length += 3;\n    } else {\n      i++;\n      length += 4;\n    }\n  }\n  return length;\n}\nfunction randomString() {\n  return Date.now().toString(36).substring(3) + Math.random().toString(36).substring(2, 5);\n}\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/contrib/parseqs.js\nfunction encode(obj) {\n  let str = \"\";\n  for (let i in obj) {\n    if (obj.hasOwnProperty(i)) {\n      if (str.length)\n        str += \"&\";\n      str += encodeURIComponent(i) + \"=\" + encodeURIComponent(obj[i]);\n    }\n  }\n  return str;\n}\nfunction decode2(qs) {\n  let qry = {};\n  let pairs = qs.split(\"&\");\n  for (let i = 0, l = pairs.length; i < l; i++) {\n    let pair = pairs[i].split(\"=\");\n    qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n  }\n  return qry;\n}\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/transport.js\nvar TransportError = class extends Error {\n  constructor(reason, description, context) {\n    super(reason);\n    this.description = description;\n    this.context = context;\n    this.type = \"TransportError\";\n  }\n};\nvar Transport = class extends Emitter {\n  /**\n   * Transport abstract constructor.\n   *\n   * @param {Object} opts - options\n   * @protected\n   */\n  constructor(opts) {\n    super();\n    this.writable = false;\n    installTimerFunctions(this, opts);\n    this.opts = opts;\n    this.query = opts.query;\n    this.socket = opts.socket;\n    this.supportsBinary = !opts.forceBase64;\n  }\n  /**\n   * Emits an error.\n   *\n   * @param {String} reason\n   * @param description\n   * @param context - the error context\n   * @return {Transport} for chaining\n   * @protected\n   */\n  onError(reason, description, context) {\n    super.emitReserved(\"error\", new TransportError(reason, description, context));\n    return this;\n  }\n  /**\n   * Opens the transport.\n   */\n  open() {\n    this.readyState = \"opening\";\n    this.doOpen();\n    return this;\n  }\n  /**\n   * Closes the transport.\n   */\n  close() {\n    if (this.readyState === \"opening\" || this.readyState === \"open\") {\n      this.doClose();\n      this.onClose();\n    }\n    return this;\n  }\n  /**\n   * Sends multiple packets.\n   *\n   * @param {Array} packets\n   */\n  send(packets) {\n    if (this.readyState === \"open\") {\n      this.write(packets);\n    } else {\n    }\n  }\n  /**\n   * Called upon open\n   *\n   * @protected\n   */\n  onOpen() {\n    this.readyState = \"open\";\n    this.writable = true;\n    super.emitReserved(\"open\");\n  }\n  /**\n   * Called with data.\n   *\n   * @param {String} data\n   * @protected\n   */\n  onData(data) {\n    const packet = decodePacket(data, this.socket.binaryType);\n    this.onPacket(packet);\n  }\n  /**\n   * Called with a decoded packet.\n   *\n   * @protected\n   */\n  onPacket(packet) {\n    super.emitReserved(\"packet\", packet);\n  }\n  /**\n   * Called upon close.\n   *\n   * @protected\n   */\n  onClose(details) {\n    this.readyState = \"closed\";\n    super.emitReserved(\"close\", details);\n  }\n  /**\n   * Pauses the transport, in order not to lose packets during an upgrade.\n   *\n   * @param onPause\n   */\n  pause(onPause) {\n  }\n  createUri(schema, query = {}) {\n    return schema + \"://\" + this._hostname() + this._port() + this.opts.path + this._query(query);\n  }\n  _hostname() {\n    const hostname = this.opts.hostname;\n    return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n  }\n  _port() {\n    if (this.opts.port && (this.opts.secure && Number(this.opts.port !== 443) || !this.opts.secure && Number(this.opts.port) !== 80)) {\n      return \":\" + this.opts.port;\n    } else {\n      return \"\";\n    }\n  }\n  _query(query) {\n    const encodedQuery = encode(query);\n    return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n  }\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/transports/polling.js\nvar Polling = class extends Transport {\n  constructor() {\n    super(...arguments);\n    this._polling = false;\n  }\n  get name() {\n    return \"polling\";\n  }\n  /**\n   * Opens the socket (triggers polling). We write a PING message to determine\n   * when the transport is open.\n   *\n   * @protected\n   */\n  doOpen() {\n    this._poll();\n  }\n  /**\n   * Pauses polling.\n   *\n   * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n   * @package\n   */\n  pause(onPause) {\n    this.readyState = \"pausing\";\n    const pause = () => {\n      this.readyState = \"paused\";\n      onPause();\n    };\n    if (this._polling || !this.writable) {\n      let total = 0;\n      if (this._polling) {\n        total++;\n        this.once(\"pollComplete\", function() {\n          --total || pause();\n        });\n      }\n      if (!this.writable) {\n        total++;\n        this.once(\"drain\", function() {\n          --total || pause();\n        });\n      }\n    } else {\n      pause();\n    }\n  }\n  /**\n   * Starts polling cycle.\n   *\n   * @private\n   */\n  _poll() {\n    this._polling = true;\n    this.doPoll();\n    this.emitReserved(\"poll\");\n  }\n  /**\n   * Overloads onData to detect payloads.\n   *\n   * @protected\n   */\n  onData(data) {\n    const callback = (packet) => {\n      if (\"opening\" === this.readyState && packet.type === \"open\") {\n        this.onOpen();\n      }\n      if (\"close\" === packet.type) {\n        this.onClose({ description: \"transport closed by the server\" });\n        return false;\n      }\n      this.onPacket(packet);\n    };\n    decodePayload(data, this.socket.binaryType).forEach(callback);\n    if (\"closed\" !== this.readyState) {\n      this._polling = false;\n      this.emitReserved(\"pollComplete\");\n      if (\"open\" === this.readyState) {\n        this._poll();\n      } else {\n      }\n    }\n  }\n  /**\n   * For polling, send a close packet.\n   *\n   * @protected\n   */\n  doClose() {\n    const close = () => {\n      this.write([{ type: \"close\" }]);\n    };\n    if (\"open\" === this.readyState) {\n      close();\n    } else {\n      this.once(\"open\", close);\n    }\n  }\n  /**\n   * Writes a packets payload.\n   *\n   * @param {Array} packets - data packets\n   * @protected\n   */\n  write(packets) {\n    this.writable = false;\n    encodePayload(packets, (data) => {\n      this.doWrite(data, () => {\n        this.writable = true;\n        this.emitReserved(\"drain\");\n      });\n    });\n  }\n  /**\n   * Generates uri for connection.\n   *\n   * @private\n   */\n  uri() {\n    const schema = this.opts.secure ? \"https\" : \"http\";\n    const query = this.query || {};\n    if (false !== this.opts.timestampRequests) {\n      query[this.opts.timestampParam] = randomString();\n    }\n    if (!this.supportsBinary && !query.sid) {\n      query.b64 = 1;\n    }\n    return this.createUri(schema, query);\n  }\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/contrib/has-cors.js\nvar value = false;\ntry {\n  value = typeof XMLHttpRequest !== \"undefined\" && \"withCredentials\" in new XMLHttpRequest();\n} catch (err) {\n}\nvar hasCORS = value;\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/transports/polling-xhr.js\nfunction empty() {\n}\nvar BaseXHR = class extends Polling {\n  /**\n   * XHR Polling constructor.\n   *\n   * @param {Object} opts\n   * @package\n   */\n  constructor(opts) {\n    super(opts);\n    if (typeof location !== \"undefined\") {\n      const isSSL = \"https:\" === location.protocol;\n      let port = location.port;\n      if (!port) {\n        port = isSSL ? \"443\" : \"80\";\n      }\n      this.xd = typeof location !== \"undefined\" && opts.hostname !== location.hostname || port !== opts.port;\n    }\n  }\n  /**\n   * Sends data.\n   *\n   * @param {String} data to send.\n   * @param {Function} called upon flush.\n   * @private\n   */\n  doWrite(data, fn) {\n    const req = this.request({\n      method: \"POST\",\n      data\n    });\n    req.on(\"success\", fn);\n    req.on(\"error\", (xhrStatus, context) => {\n      this.onError(\"xhr post error\", xhrStatus, context);\n    });\n  }\n  /**\n   * Starts a poll cycle.\n   *\n   * @private\n   */\n  doPoll() {\n    const req = this.request();\n    req.on(\"data\", this.onData.bind(this));\n    req.on(\"error\", (xhrStatus, context) => {\n      this.onError(\"xhr poll error\", xhrStatus, context);\n    });\n    this.pollXhr = req;\n  }\n};\nvar Request = class _Request extends Emitter {\n  /**\n   * Request constructor\n   *\n   * @param {Object} options\n   * @package\n   */\n  constructor(createRequest, uri, opts) {\n    super();\n    this.createRequest = createRequest;\n    installTimerFunctions(this, opts);\n    this._opts = opts;\n    this._method = opts.method || \"GET\";\n    this._uri = uri;\n    this._data = void 0 !== opts.data ? opts.data : null;\n    this._create();\n  }\n  /**\n   * Creates the XHR object and sends the request.\n   *\n   * @private\n   */\n  _create() {\n    var _a;\n    const opts = pick(this._opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n    opts.xdomain = !!this._opts.xd;\n    const xhr = this._xhr = this.createRequest(opts);\n    try {\n      xhr.open(this._method, this._uri, true);\n      try {\n        if (this._opts.extraHeaders) {\n          xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n          for (let i in this._opts.extraHeaders) {\n            if (this._opts.extraHeaders.hasOwnProperty(i)) {\n              xhr.setRequestHeader(i, this._opts.extraHeaders[i]);\n            }\n          }\n        }\n      } catch (e) {\n      }\n      if (\"POST\" === this._method) {\n        try {\n          xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n        } catch (e) {\n        }\n      }\n      try {\n        xhr.setRequestHeader(\"Accept\", \"*/*\");\n      } catch (e) {\n      }\n      (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n      if (\"withCredentials\" in xhr) {\n        xhr.withCredentials = this._opts.withCredentials;\n      }\n      if (this._opts.requestTimeout) {\n        xhr.timeout = this._opts.requestTimeout;\n      }\n      xhr.onreadystatechange = () => {\n        var _a2;\n        if (xhr.readyState === 3) {\n          (_a2 = this._opts.cookieJar) === null || _a2 === void 0 ? void 0 : _a2.parseCookies(\n            // @ts-ignore\n            xhr.getResponseHeader(\"set-cookie\")\n          );\n        }\n        if (4 !== xhr.readyState)\n          return;\n        if (200 === xhr.status || 1223 === xhr.status) {\n          this._onLoad();\n        } else {\n          this.setTimeoutFn(() => {\n            this._onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n          }, 0);\n        }\n      };\n      xhr.send(this._data);\n    } catch (e) {\n      this.setTimeoutFn(() => {\n        this._onError(e);\n      }, 0);\n      return;\n    }\n    if (typeof document !== \"undefined\") {\n      this._index = _Request.requestsCount++;\n      _Request.requests[this._index] = this;\n    }\n  }\n  /**\n   * Called upon error.\n   *\n   * @private\n   */\n  _onError(err) {\n    this.emitReserved(\"error\", err, this._xhr);\n    this._cleanup(true);\n  }\n  /**\n   * Cleans up house.\n   *\n   * @private\n   */\n  _cleanup(fromError) {\n    if (\"undefined\" === typeof this._xhr || null === this._xhr) {\n      return;\n    }\n    this._xhr.onreadystatechange = empty;\n    if (fromError) {\n      try {\n        this._xhr.abort();\n      } catch (e) {\n      }\n    }\n    if (typeof document !== \"undefined\") {\n      delete _Request.requests[this._index];\n    }\n    this._xhr = null;\n  }\n  /**\n   * Called upon load.\n   *\n   * @private\n   */\n  _onLoad() {\n    const data = this._xhr.responseText;\n    if (data !== null) {\n      this.emitReserved(\"data\", data);\n      this.emitReserved(\"success\");\n      this._cleanup();\n    }\n  }\n  /**\n   * Aborts the request.\n   *\n   * @package\n   */\n  abort() {\n    this._cleanup();\n  }\n};\nRequest.requestsCount = 0;\nRequest.requests = {};\nif (typeof document !== \"undefined\") {\n  if (typeof attachEvent === \"function\") {\n    attachEvent(\"onunload\", unloadHandler);\n  } else if (typeof addEventListener === \"function\") {\n    const terminationEvent = \"onpagehide\" in globalThisShim ? \"pagehide\" : \"unload\";\n    addEventListener(terminationEvent, unloadHandler, false);\n  }\n}\nfunction unloadHandler() {\n  for (let i in Request.requests) {\n    if (Request.requests.hasOwnProperty(i)) {\n      Request.requests[i].abort();\n    }\n  }\n}\nvar hasXHR2 = function() {\n  const xhr = newRequest({\n    xdomain: false\n  });\n  return xhr && xhr.responseType !== null;\n}();\nvar XHR = class extends BaseXHR {\n  constructor(opts) {\n    super(opts);\n    const forceBase64 = opts && opts.forceBase64;\n    this.supportsBinary = hasXHR2 && !forceBase64;\n  }\n  request(opts = {}) {\n    Object.assign(opts, { xd: this.xd }, this.opts);\n    return new Request(newRequest, this.uri(), opts);\n  }\n};\nfunction newRequest(opts) {\n  const xdomain = opts.xdomain;\n  try {\n    if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n      return new XMLHttpRequest();\n    }\n  } catch (e) {\n  }\n  if (!xdomain) {\n    try {\n      return new globalThisShim[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n    } catch (e) {\n    }\n  }\n}\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/transports/websocket.js\nvar isReactNative = typeof navigator !== \"undefined\" && typeof navigator.product === \"string\" && navigator.product.toLowerCase() === \"reactnative\";\nvar BaseWS = class extends Transport {\n  get name() {\n    return \"websocket\";\n  }\n  doOpen() {\n    const uri = this.uri();\n    const protocols = this.opts.protocols;\n    const opts = isReactNative ? {} : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n    if (this.opts.extraHeaders) {\n      opts.headers = this.opts.extraHeaders;\n    }\n    try {\n      this.ws = this.createSocket(uri, protocols, opts);\n    } catch (err) {\n      return this.emitReserved(\"error\", err);\n    }\n    this.ws.binaryType = this.socket.binaryType;\n    this.addEventListeners();\n  }\n  /**\n   * Adds event listeners to the socket\n   *\n   * @private\n   */\n  addEventListeners() {\n    this.ws.onopen = () => {\n      if (this.opts.autoUnref) {\n        this.ws._socket.unref();\n      }\n      this.onOpen();\n    };\n    this.ws.onclose = (closeEvent) => this.onClose({\n      description: \"websocket connection closed\",\n      context: closeEvent\n    });\n    this.ws.onmessage = (ev) => this.onData(ev.data);\n    this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n  }\n  write(packets) {\n    this.writable = false;\n    for (let i = 0; i < packets.length; i++) {\n      const packet = packets[i];\n      const lastPacket = i === packets.length - 1;\n      encodePacket(packet, this.supportsBinary, (data) => {\n        try {\n          this.doWrite(packet, data);\n        } catch (e) {\n        }\n        if (lastPacket) {\n          nextTick(() => {\n            this.writable = true;\n            this.emitReserved(\"drain\");\n          }, this.setTimeoutFn);\n        }\n      });\n    }\n  }\n  doClose() {\n    if (typeof this.ws !== \"undefined\") {\n      this.ws.onerror = () => {\n      };\n      this.ws.close();\n      this.ws = null;\n    }\n  }\n  /**\n   * Generates uri for connection.\n   *\n   * @private\n   */\n  uri() {\n    const schema = this.opts.secure ? \"wss\" : \"ws\";\n    const query = this.query || {};\n    if (this.opts.timestampRequests) {\n      query[this.opts.timestampParam] = randomString();\n    }\n    if (!this.supportsBinary) {\n      query.b64 = 1;\n    }\n    return this.createUri(schema, query);\n  }\n};\nvar WebSocketCtor = globalThisShim.WebSocket || globalThisShim.MozWebSocket;\nvar WS = class extends BaseWS {\n  createSocket(uri, protocols, opts) {\n    return !isReactNative ? protocols ? new WebSocketCtor(uri, protocols) : new WebSocketCtor(uri) : new WebSocketCtor(uri, protocols, opts);\n  }\n  doWrite(_packet, data) {\n    this.ws.send(data);\n  }\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/transports/webtransport.js\nvar WT = class extends Transport {\n  get name() {\n    return \"webtransport\";\n  }\n  doOpen() {\n    try {\n      this._transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n    } catch (err) {\n      return this.emitReserved(\"error\", err);\n    }\n    this._transport.closed.then(() => {\n      this.onClose();\n    }).catch((err) => {\n      this.onError(\"webtransport error\", err);\n    });\n    this._transport.ready.then(() => {\n      this._transport.createBidirectionalStream().then((stream) => {\n        const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n        const reader = stream.readable.pipeThrough(decoderStream).getReader();\n        const encoderStream = createPacketEncoderStream();\n        encoderStream.readable.pipeTo(stream.writable);\n        this._writer = encoderStream.writable.getWriter();\n        const read = () => {\n          reader.read().then(({ done, value: value2 }) => {\n            if (done) {\n              return;\n            }\n            this.onPacket(value2);\n            read();\n          }).catch((err) => {\n          });\n        };\n        read();\n        const packet = { type: \"open\" };\n        if (this.query.sid) {\n          packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n        }\n        this._writer.write(packet).then(() => this.onOpen());\n      });\n    });\n  }\n  write(packets) {\n    this.writable = false;\n    for (let i = 0; i < packets.length; i++) {\n      const packet = packets[i];\n      const lastPacket = i === packets.length - 1;\n      this._writer.write(packet).then(() => {\n        if (lastPacket) {\n          nextTick(() => {\n            this.writable = true;\n            this.emitReserved(\"drain\");\n          }, this.setTimeoutFn);\n        }\n      });\n    }\n  }\n  doClose() {\n    var _a;\n    (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();\n  }\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/transports/index.js\nvar transports = {\n  websocket: WS,\n  webtransport: WT,\n  polling: XHR\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/contrib/parseuri.js\nvar re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nvar parts = [\n  \"source\",\n  \"protocol\",\n  \"authority\",\n  \"userInfo\",\n  \"user\",\n  \"password\",\n  \"host\",\n  \"port\",\n  \"relative\",\n  \"path\",\n  \"directory\",\n  \"file\",\n  \"query\",\n  \"anchor\"\n];\nfunction parse(str) {\n  if (str.length > 8e3) {\n    throw \"URI too long\";\n  }\n  const src = str, b = str.indexOf(\"[\"), e = str.indexOf(\"]\");\n  if (b != -1 && e != -1) {\n    str = str.substring(0, b) + str.substring(b, e).replace(/:/g, \";\") + str.substring(e, str.length);\n  }\n  let m = re.exec(str || \"\"), uri = {}, i = 14;\n  while (i--) {\n    uri[parts[i]] = m[i] || \"\";\n  }\n  if (b != -1 && e != -1) {\n    uri.source = src;\n    uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, \":\");\n    uri.authority = uri.authority.replace(\"[\", \"\").replace(\"]\", \"\").replace(/;/g, \":\");\n    uri.ipv6uri = true;\n  }\n  uri.pathNames = pathNames(uri, uri[\"path\"]);\n  uri.queryKey = queryKey(uri, uri[\"query\"]);\n  return uri;\n}\nfunction pathNames(obj, path) {\n  const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n  if (path.slice(0, 1) == \"/\" || path.length === 0) {\n    names.splice(0, 1);\n  }\n  if (path.slice(-1) == \"/\") {\n    names.splice(names.length - 1, 1);\n  }\n  return names;\n}\nfunction queryKey(uri, query) {\n  const data = {};\n  query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function($0, $1, $2) {\n    if ($1) {\n      data[$1] = $2;\n    }\n  });\n  return data;\n}\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/socket.js\nvar withEventListeners = typeof addEventListener === \"function\" && typeof removeEventListener === \"function\";\nvar OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n  addEventListener(\"offline\", () => {\n    OFFLINE_EVENT_LISTENERS.forEach((listener) => listener());\n  }, false);\n}\nvar SocketWithoutUpgrade = class _SocketWithoutUpgrade extends Emitter {\n  /**\n   * Socket constructor.\n   *\n   * @param {String|Object} uri - uri or options\n   * @param {Object} opts - options\n   */\n  constructor(uri, opts) {\n    super();\n    this.binaryType = defaultBinaryType;\n    this.writeBuffer = [];\n    this._prevBufferLen = 0;\n    this._pingInterval = -1;\n    this._pingTimeout = -1;\n    this._maxPayload = -1;\n    this._pingTimeoutTime = Infinity;\n    if (uri && \"object\" === typeof uri) {\n      opts = uri;\n      uri = null;\n    }\n    if (uri) {\n      const parsedUri = parse(uri);\n      opts.hostname = parsedUri.host;\n      opts.secure = parsedUri.protocol === \"https\" || parsedUri.protocol === \"wss\";\n      opts.port = parsedUri.port;\n      if (parsedUri.query)\n        opts.query = parsedUri.query;\n    } else if (opts.host) {\n      opts.hostname = parse(opts.host).host;\n    }\n    installTimerFunctions(this, opts);\n    this.secure = null != opts.secure ? opts.secure : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n    if (opts.hostname && !opts.port) {\n      opts.port = this.secure ? \"443\" : \"80\";\n    }\n    this.hostname = opts.hostname || (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n    this.port = opts.port || (typeof location !== \"undefined\" && location.port ? location.port : this.secure ? \"443\" : \"80\");\n    this.transports = [];\n    this._transportsByName = {};\n    opts.transports.forEach((t) => {\n      const transportName = t.prototype.name;\n      this.transports.push(transportName);\n      this._transportsByName[transportName] = t;\n    });\n    this.opts = Object.assign({\n      path: \"/engine.io\",\n      agent: false,\n      withCredentials: false,\n      upgrade: true,\n      timestampParam: \"t\",\n      rememberUpgrade: false,\n      addTrailingSlash: true,\n      rejectUnauthorized: true,\n      perMessageDeflate: {\n        threshold: 1024\n      },\n      transportOptions: {},\n      closeOnBeforeunload: false\n    }, opts);\n    this.opts.path = this.opts.path.replace(/\\/$/, \"\") + (this.opts.addTrailingSlash ? \"/\" : \"\");\n    if (typeof this.opts.query === \"string\") {\n      this.opts.query = decode2(this.opts.query);\n    }\n    if (withEventListeners) {\n      if (this.opts.closeOnBeforeunload) {\n        this._beforeunloadEventListener = () => {\n          if (this.transport) {\n            this.transport.removeAllListeners();\n            this.transport.close();\n          }\n        };\n        addEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n      }\n      if (this.hostname !== \"localhost\") {\n        this._offlineEventListener = () => {\n          this._onClose(\"transport close\", {\n            description: \"network connection lost\"\n          });\n        };\n        OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);\n      }\n    }\n    if (this.opts.withCredentials) {\n      this._cookieJar = createCookieJar();\n    }\n    this._open();\n  }\n  /**\n   * Creates transport of the given type.\n   *\n   * @param {String} name - transport name\n   * @return {Transport}\n   * @private\n   */\n  createTransport(name) {\n    const query = Object.assign({}, this.opts.query);\n    query.EIO = protocol;\n    query.transport = name;\n    if (this.id)\n      query.sid = this.id;\n    const opts = Object.assign({}, this.opts, {\n      query,\n      socket: this,\n      hostname: this.hostname,\n      secure: this.secure,\n      port: this.port\n    }, this.opts.transportOptions[name]);\n    return new this._transportsByName[name](opts);\n  }\n  /**\n   * Initializes transport to use and starts probe.\n   *\n   * @private\n   */\n  _open() {\n    if (this.transports.length === 0) {\n      this.setTimeoutFn(() => {\n        this.emitReserved(\"error\", \"No transports available\");\n      }, 0);\n      return;\n    }\n    const transportName = this.opts.rememberUpgrade && _SocketWithoutUpgrade.priorWebsocketSuccess && this.transports.indexOf(\"websocket\") !== -1 ? \"websocket\" : this.transports[0];\n    this.readyState = \"opening\";\n    const transport = this.createTransport(transportName);\n    transport.open();\n    this.setTransport(transport);\n  }\n  /**\n   * Sets the current transport. Disables the existing one (if any).\n   *\n   * @private\n   */\n  setTransport(transport) {\n    if (this.transport) {\n      this.transport.removeAllListeners();\n    }\n    this.transport = transport;\n    transport.on(\"drain\", this._onDrain.bind(this)).on(\"packet\", this._onPacket.bind(this)).on(\"error\", this._onError.bind(this)).on(\"close\", (reason) => this._onClose(\"transport close\", reason));\n  }\n  /**\n   * Called when connection is deemed open.\n   *\n   * @private\n   */\n  onOpen() {\n    this.readyState = \"open\";\n    _SocketWithoutUpgrade.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n    this.emitReserved(\"open\");\n    this.flush();\n  }\n  /**\n   * Handles a packet.\n   *\n   * @private\n   */\n  _onPacket(packet) {\n    if (\"opening\" === this.readyState || \"open\" === this.readyState || \"closing\" === this.readyState) {\n      this.emitReserved(\"packet\", packet);\n      this.emitReserved(\"heartbeat\");\n      switch (packet.type) {\n        case \"open\":\n          this.onHandshake(JSON.parse(packet.data));\n          break;\n        case \"ping\":\n          this._sendPacket(\"pong\");\n          this.emitReserved(\"ping\");\n          this.emitReserved(\"pong\");\n          this._resetPingTimeout();\n          break;\n        case \"error\":\n          const err = new Error(\"server error\");\n          err.code = packet.data;\n          this._onError(err);\n          break;\n        case \"message\":\n          this.emitReserved(\"data\", packet.data);\n          this.emitReserved(\"message\", packet.data);\n          break;\n      }\n    } else {\n    }\n  }\n  /**\n   * Called upon handshake completion.\n   *\n   * @param {Object} data - handshake obj\n   * @private\n   */\n  onHandshake(data) {\n    this.emitReserved(\"handshake\", data);\n    this.id = data.sid;\n    this.transport.query.sid = data.sid;\n    this._pingInterval = data.pingInterval;\n    this._pingTimeout = data.pingTimeout;\n    this._maxPayload = data.maxPayload;\n    this.onOpen();\n    if (\"closed\" === this.readyState)\n      return;\n    this._resetPingTimeout();\n  }\n  /**\n   * Sets and resets ping timeout timer based on server pings.\n   *\n   * @private\n   */\n  _resetPingTimeout() {\n    this.clearTimeoutFn(this._pingTimeoutTimer);\n    const delay = this._pingInterval + this._pingTimeout;\n    this._pingTimeoutTime = Date.now() + delay;\n    this._pingTimeoutTimer = this.setTimeoutFn(() => {\n      this._onClose(\"ping timeout\");\n    }, delay);\n    if (this.opts.autoUnref) {\n      this._pingTimeoutTimer.unref();\n    }\n  }\n  /**\n   * Called on `drain` event\n   *\n   * @private\n   */\n  _onDrain() {\n    this.writeBuffer.splice(0, this._prevBufferLen);\n    this._prevBufferLen = 0;\n    if (0 === this.writeBuffer.length) {\n      this.emitReserved(\"drain\");\n    } else {\n      this.flush();\n    }\n  }\n  /**\n   * Flush write buffers.\n   *\n   * @private\n   */\n  flush() {\n    if (\"closed\" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) {\n      const packets = this._getWritablePackets();\n      this.transport.send(packets);\n      this._prevBufferLen = packets.length;\n      this.emitReserved(\"flush\");\n    }\n  }\n  /**\n   * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n   * long-polling)\n   *\n   * @private\n   */\n  _getWritablePackets() {\n    const shouldCheckPayloadSize = this._maxPayload && this.transport.name === \"polling\" && this.writeBuffer.length > 1;\n    if (!shouldCheckPayloadSize) {\n      return this.writeBuffer;\n    }\n    let payloadSize = 1;\n    for (let i = 0; i < this.writeBuffer.length; i++) {\n      const data = this.writeBuffer[i].data;\n      if (data) {\n        payloadSize += byteLength(data);\n      }\n      if (i > 0 && payloadSize > this._maxPayload) {\n        return this.writeBuffer.slice(0, i);\n      }\n      payloadSize += 2;\n    }\n    return this.writeBuffer;\n  }\n  /**\n   * Checks whether the heartbeat timer has expired but the socket has not yet been notified.\n   *\n   * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the\n   * `write()` method then the message would not be buffered by the Socket.IO client.\n   *\n   * @return {boolean}\n   * @private\n   */\n  /* private */\n  _hasPingExpired() {\n    if (!this._pingTimeoutTime)\n      return true;\n    const hasExpired = Date.now() > this._pingTimeoutTime;\n    if (hasExpired) {\n      this._pingTimeoutTime = 0;\n      nextTick(() => {\n        this._onClose(\"ping timeout\");\n      }, this.setTimeoutFn);\n    }\n    return hasExpired;\n  }\n  /**\n   * Sends a message.\n   *\n   * @param {String} msg - message.\n   * @param {Object} options.\n   * @param {Function} fn - callback function.\n   * @return {Socket} for chaining.\n   */\n  write(msg, options, fn) {\n    this._sendPacket(\"message\", msg, options, fn);\n    return this;\n  }\n  /**\n   * Sends a message. Alias of {@link Socket#write}.\n   *\n   * @param {String} msg - message.\n   * @param {Object} options.\n   * @param {Function} fn - callback function.\n   * @return {Socket} for chaining.\n   */\n  send(msg, options, fn) {\n    this._sendPacket(\"message\", msg, options, fn);\n    return this;\n  }\n  /**\n   * Sends a packet.\n   *\n   * @param {String} type: packet type.\n   * @param {String} data.\n   * @param {Object} options.\n   * @param {Function} fn - callback function.\n   * @private\n   */\n  _sendPacket(type, data, options, fn) {\n    if (\"function\" === typeof data) {\n      fn = data;\n      data = void 0;\n    }\n    if (\"function\" === typeof options) {\n      fn = options;\n      options = null;\n    }\n    if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n      return;\n    }\n    options = options || {};\n    options.compress = false !== options.compress;\n    const packet = {\n      type,\n      data,\n      options\n    };\n    this.emitReserved(\"packetCreate\", packet);\n    this.writeBuffer.push(packet);\n    if (fn)\n      this.once(\"flush\", fn);\n    this.flush();\n  }\n  /**\n   * Closes the connection.\n   */\n  close() {\n    const close = () => {\n      this._onClose(\"forced close\");\n      this.transport.close();\n    };\n    const cleanupAndClose = () => {\n      this.off(\"upgrade\", cleanupAndClose);\n      this.off(\"upgradeError\", cleanupAndClose);\n      close();\n    };\n    const waitForUpgrade = () => {\n      this.once(\"upgrade\", cleanupAndClose);\n      this.once(\"upgradeError\", cleanupAndClose);\n    };\n    if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n      this.readyState = \"closing\";\n      if (this.writeBuffer.length) {\n        this.once(\"drain\", () => {\n          if (this.upgrading) {\n            waitForUpgrade();\n          } else {\n            close();\n          }\n        });\n      } else if (this.upgrading) {\n        waitForUpgrade();\n      } else {\n        close();\n      }\n    }\n    return this;\n  }\n  /**\n   * Called upon transport error\n   *\n   * @private\n   */\n  _onError(err) {\n    _SocketWithoutUpgrade.priorWebsocketSuccess = false;\n    if (this.opts.tryAllTransports && this.transports.length > 1 && this.readyState === \"opening\") {\n      this.transports.shift();\n      return this._open();\n    }\n    this.emitReserved(\"error\", err);\n    this._onClose(\"transport error\", err);\n  }\n  /**\n   * Called upon transport close.\n   *\n   * @private\n   */\n  _onClose(reason, description) {\n    if (\"opening\" === this.readyState || \"open\" === this.readyState || \"closing\" === this.readyState) {\n      this.clearTimeoutFn(this._pingTimeoutTimer);\n      this.transport.removeAllListeners(\"close\");\n      this.transport.close();\n      this.transport.removeAllListeners();\n      if (withEventListeners) {\n        if (this._beforeunloadEventListener) {\n          removeEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n        }\n        if (this._offlineEventListener) {\n          const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);\n          if (i !== -1) {\n            OFFLINE_EVENT_LISTENERS.splice(i, 1);\n          }\n        }\n      }\n      this.readyState = \"closed\";\n      this.id = null;\n      this.emitReserved(\"close\", reason, description);\n      this.writeBuffer = [];\n      this._prevBufferLen = 0;\n    }\n  }\n};\nSocketWithoutUpgrade.protocol = protocol;\nvar SocketWithUpgrade = class extends SocketWithoutUpgrade {\n  constructor() {\n    super(...arguments);\n    this._upgrades = [];\n  }\n  onOpen() {\n    super.onOpen();\n    if (\"open\" === this.readyState && this.opts.upgrade) {\n      for (let i = 0; i < this._upgrades.length; i++) {\n        this._probe(this._upgrades[i]);\n      }\n    }\n  }\n  /**\n   * Probes a transport.\n   *\n   * @param {String} name - transport name\n   * @private\n   */\n  _probe(name) {\n    let transport = this.createTransport(name);\n    let failed = false;\n    SocketWithoutUpgrade.priorWebsocketSuccess = false;\n    const onTransportOpen = () => {\n      if (failed)\n        return;\n      transport.send([{ type: \"ping\", data: \"probe\" }]);\n      transport.once(\"packet\", (msg) => {\n        if (failed)\n          return;\n        if (\"pong\" === msg.type && \"probe\" === msg.data) {\n          this.upgrading = true;\n          this.emitReserved(\"upgrading\", transport);\n          if (!transport)\n            return;\n          SocketWithoutUpgrade.priorWebsocketSuccess = \"websocket\" === transport.name;\n          this.transport.pause(() => {\n            if (failed)\n              return;\n            if (\"closed\" === this.readyState)\n              return;\n            cleanup();\n            this.setTransport(transport);\n            transport.send([{ type: \"upgrade\" }]);\n            this.emitReserved(\"upgrade\", transport);\n            transport = null;\n            this.upgrading = false;\n            this.flush();\n          });\n        } else {\n          const err = new Error(\"probe error\");\n          err.transport = transport.name;\n          this.emitReserved(\"upgradeError\", err);\n        }\n      });\n    };\n    function freezeTransport() {\n      if (failed)\n        return;\n      failed = true;\n      cleanup();\n      transport.close();\n      transport = null;\n    }\n    const onerror = (err) => {\n      const error = new Error(\"probe error: \" + err);\n      error.transport = transport.name;\n      freezeTransport();\n      this.emitReserved(\"upgradeError\", error);\n    };\n    function onTransportClose() {\n      onerror(\"transport closed\");\n    }\n    function onclose() {\n      onerror(\"socket closed\");\n    }\n    function onupgrade(to) {\n      if (transport && to.name !== transport.name) {\n        freezeTransport();\n      }\n    }\n    const cleanup = () => {\n      transport.removeListener(\"open\", onTransportOpen);\n      transport.removeListener(\"error\", onerror);\n      transport.removeListener(\"close\", onTransportClose);\n      this.off(\"close\", onclose);\n      this.off(\"upgrading\", onupgrade);\n    };\n    transport.once(\"open\", onTransportOpen);\n    transport.once(\"error\", onerror);\n    transport.once(\"close\", onTransportClose);\n    this.once(\"close\", onclose);\n    this.once(\"upgrading\", onupgrade);\n    if (this._upgrades.indexOf(\"webtransport\") !== -1 && name !== \"webtransport\") {\n      this.setTimeoutFn(() => {\n        if (!failed) {\n          transport.open();\n        }\n      }, 200);\n    } else {\n      transport.open();\n    }\n  }\n  onHandshake(data) {\n    this._upgrades = this._filterUpgrades(data.upgrades);\n    super.onHandshake(data);\n  }\n  /**\n   * Filters upgrades, returning only those matching client transports.\n   *\n   * @param {Array} upgrades - server upgrades\n   * @private\n   */\n  _filterUpgrades(upgrades) {\n    const filteredUpgrades = [];\n    for (let i = 0; i < upgrades.length; i++) {\n      if (~this.transports.indexOf(upgrades[i]))\n        filteredUpgrades.push(upgrades[i]);\n    }\n    return filteredUpgrades;\n  }\n};\nvar Socket = class extends SocketWithUpgrade {\n  constructor(uri, opts = {}) {\n    const o = typeof uri === \"object\" ? uri : opts;\n    if (!o.transports || o.transports && typeof o.transports[0] === \"string\") {\n      o.transports = (o.transports || [\"polling\", \"websocket\", \"webtransport\"]).map((transportName) => transports[transportName]).filter((t) => !!t);\n    }\n    super(uri, o);\n  }\n};\n\n// node_modules/.pnpm/engine.io-client@6.6.3/node_modules/engine.io-client/build/esm/index.js\nvar protocol2 = Socket.protocol;\n\n// node_modules/.pnpm/socket.io-client@4.8.1/node_modules/socket.io-client/build/esm/url.js\nfunction url(uri, path = \"\", loc) {\n  let obj = uri;\n  loc = loc || typeof location !== \"undefined\" && location;\n  if (null == uri)\n    uri = loc.protocol + \"//\" + loc.host;\n  if (typeof uri === \"string\") {\n    if (\"/\" === uri.charAt(0)) {\n      if (\"/\" === uri.charAt(1)) {\n        uri = loc.protocol + uri;\n      } else {\n        uri = loc.host + uri;\n      }\n    }\n    if (!/^(https?|wss?):\\/\\//.test(uri)) {\n      if (\"undefined\" !== typeof loc) {\n        uri = loc.protocol + \"//\" + uri;\n      } else {\n        uri = \"https://\" + uri;\n      }\n    }\n    obj = parse(uri);\n  }\n  if (!obj.port) {\n    if (/^(http|ws)$/.test(obj.protocol)) {\n      obj.port = \"80\";\n    } else if (/^(http|ws)s$/.test(obj.protocol)) {\n      obj.port = \"443\";\n    }\n  }\n  obj.path = obj.path || \"/\";\n  const ipv6 = obj.host.indexOf(\":\") !== -1;\n  const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n  obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n  obj.href = obj.protocol + \"://\" + host + (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n  return obj;\n}\n\n// node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/esm/index.js\nvar esm_exports = {};\n__export(esm_exports, {\n  Decoder: () => Decoder,\n  Encoder: () => Encoder,\n  PacketType: () => PacketType,\n  protocol: () => protocol3\n});\n\n// node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/esm/is-binary.js\nvar withNativeArrayBuffer3 = typeof ArrayBuffer === \"function\";\nvar isView2 = (obj) => {\n  return typeof ArrayBuffer.isView === \"function\" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer;\n};\nvar toString = Object.prototype.toString;\nvar withNativeBlob2 = typeof Blob === \"function\" || typeof Blob !== \"undefined\" && toString.call(Blob) === \"[object BlobConstructor]\";\nvar withNativeFile = typeof File === \"function\" || typeof File !== \"undefined\" && toString.call(File) === \"[object FileConstructor]\";\nfunction isBinary(obj) {\n  return withNativeArrayBuffer3 && (obj instanceof ArrayBuffer || isView2(obj)) || withNativeBlob2 && obj instanceof Blob || withNativeFile && obj instanceof File;\n}\nfunction hasBinary(obj, toJSON) {\n  if (!obj || typeof obj !== \"object\") {\n    return false;\n  }\n  if (Array.isArray(obj)) {\n    for (let i = 0, l = obj.length; i < l; i++) {\n      if (hasBinary(obj[i])) {\n        return true;\n      }\n    }\n    return false;\n  }\n  if (isBinary(obj)) {\n    return true;\n  }\n  if (obj.toJSON && typeof obj.toJSON === \"function\" && arguments.length === 1) {\n    return hasBinary(obj.toJSON(), true);\n  }\n  for (const key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n      return true;\n    }\n  }\n  return false;\n}\n\n// node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/esm/binary.js\nfunction deconstructPacket(packet) {\n  const buffers = [];\n  const packetData = packet.data;\n  const pack = packet;\n  pack.data = _deconstructPacket(packetData, buffers);\n  pack.attachments = buffers.length;\n  return { packet: pack, buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n  if (!data)\n    return data;\n  if (isBinary(data)) {\n    const placeholder = { _placeholder: true, num: buffers.length };\n    buffers.push(data);\n    return placeholder;\n  } else if (Array.isArray(data)) {\n    const newData = new Array(data.length);\n    for (let i = 0; i < data.length; i++) {\n      newData[i] = _deconstructPacket(data[i], buffers);\n    }\n    return newData;\n  } else if (typeof data === \"object\" && !(data instanceof Date)) {\n    const newData = {};\n    for (const key in data) {\n      if (Object.prototype.hasOwnProperty.call(data, key)) {\n        newData[key] = _deconstructPacket(data[key], buffers);\n      }\n    }\n    return newData;\n  }\n  return data;\n}\nfunction reconstructPacket(packet, buffers) {\n  packet.data = _reconstructPacket(packet.data, buffers);\n  delete packet.attachments;\n  return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n  if (!data)\n    return data;\n  if (data && data._placeholder === true) {\n    const isIndexValid = typeof data.num === \"number\" && data.num >= 0 && data.num < buffers.length;\n    if (isIndexValid) {\n      return buffers[data.num];\n    } else {\n      throw new Error(\"illegal attachments\");\n    }\n  } else if (Array.isArray(data)) {\n    for (let i = 0; i < data.length; i++) {\n      data[i] = _reconstructPacket(data[i], buffers);\n    }\n  } else if (typeof data === \"object\") {\n    for (const key in data) {\n      if (Object.prototype.hasOwnProperty.call(data, key)) {\n        data[key] = _reconstructPacket(data[key], buffers);\n      }\n    }\n  }\n  return data;\n}\n\n// node_modules/.pnpm/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/esm/index.js\nvar RESERVED_EVENTS = [\n  \"connect\",\n  \"connect_error\",\n  \"disconnect\",\n  \"disconnecting\",\n  \"newListener\",\n  \"removeListener\"\n  // used by the Node.js EventEmitter\n];\nvar protocol3 = 5;\nvar PacketType;\n(function(PacketType2) {\n  PacketType2[PacketType2[\"CONNECT\"] = 0] = \"CONNECT\";\n  PacketType2[PacketType2[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n  PacketType2[PacketType2[\"EVENT\"] = 2] = \"EVENT\";\n  PacketType2[PacketType2[\"ACK\"] = 3] = \"ACK\";\n  PacketType2[PacketType2[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n  PacketType2[PacketType2[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n  PacketType2[PacketType2[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\nvar Encoder = class {\n  /**\n   * Encoder constructor\n   *\n   * @param {function} replacer - custom replacer to pass down to JSON.parse\n   */\n  constructor(replacer) {\n    this.replacer = replacer;\n  }\n  /**\n   * Encode a packet as a single string if non-binary, or as a\n   * buffer sequence, depending on packet type.\n   *\n   * @param {Object} obj - packet object\n   */\n  encode(obj) {\n    if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n      if (hasBinary(obj)) {\n        return this.encodeAsBinary({\n          type: obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK,\n          nsp: obj.nsp,\n          data: obj.data,\n          id: obj.id\n        });\n      }\n    }\n    return [this.encodeAsString(obj)];\n  }\n  /**\n   * Encode packet as string.\n   */\n  encodeAsString(obj) {\n    let str = \"\" + obj.type;\n    if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) {\n      str += obj.attachments + \"-\";\n    }\n    if (obj.nsp && \"/\" !== obj.nsp) {\n      str += obj.nsp + \",\";\n    }\n    if (null != obj.id) {\n      str += obj.id;\n    }\n    if (null != obj.data) {\n      str += JSON.stringify(obj.data, this.replacer);\n    }\n    return str;\n  }\n  /**\n   * Encode packet as 'buffer sequence' by removing blobs, and\n   * deconstructing packet into object with placeholders and\n   * a list of buffers.\n   */\n  encodeAsBinary(obj) {\n    const deconstruction = deconstructPacket(obj);\n    const pack = this.encodeAsString(deconstruction.packet);\n    const buffers = deconstruction.buffers;\n    buffers.unshift(pack);\n    return buffers;\n  }\n};\nfunction isObject(value2) {\n  return Object.prototype.toString.call(value2) === \"[object Object]\";\n}\nvar Decoder = class _Decoder extends Emitter {\n  /**\n   * Decoder constructor\n   *\n   * @param {function} reviver - custom reviver to pass down to JSON.stringify\n   */\n  constructor(reviver) {\n    super();\n    this.reviver = reviver;\n  }\n  /**\n   * Decodes an encoded packet string into packet JSON.\n   *\n   * @param {String} obj - encoded packet\n   */\n  add(obj) {\n    let packet;\n    if (typeof obj === \"string\") {\n      if (this.reconstructor) {\n        throw new Error(\"got plaintext data when reconstructing a packet\");\n      }\n      packet = this.decodeString(obj);\n      const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n      if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n        packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n        this.reconstructor = new BinaryReconstructor(packet);\n        if (packet.attachments === 0) {\n          super.emitReserved(\"decoded\", packet);\n        }\n      } else {\n        super.emitReserved(\"decoded\", packet);\n      }\n    } else if (isBinary(obj) || obj.base64) {\n      if (!this.reconstructor) {\n        throw new Error(\"got binary data when not reconstructing a packet\");\n      } else {\n        packet = this.reconstructor.takeBinaryData(obj);\n        if (packet) {\n          this.reconstructor = null;\n          super.emitReserved(\"decoded\", packet);\n        }\n      }\n    } else {\n      throw new Error(\"Unknown type: \" + obj);\n    }\n  }\n  /**\n   * Decode a packet String (JSON data)\n   *\n   * @param {String} str\n   * @return {Object} packet\n   */\n  decodeString(str) {\n    let i = 0;\n    const p = {\n      type: Number(str.charAt(0))\n    };\n    if (PacketType[p.type] === void 0) {\n      throw new Error(\"unknown packet type \" + p.type);\n    }\n    if (p.type === PacketType.BINARY_EVENT || p.type === PacketType.BINARY_ACK) {\n      const start = i + 1;\n      while (str.charAt(++i) !== \"-\" && i != str.length) {\n      }\n      const buf = str.substring(start, i);\n      if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n        throw new Error(\"Illegal attachments\");\n      }\n      p.attachments = Number(buf);\n    }\n    if (\"/\" === str.charAt(i + 1)) {\n      const start = i + 1;\n      while (++i) {\n        const c = str.charAt(i);\n        if (\",\" === c)\n          break;\n        if (i === str.length)\n          break;\n      }\n      p.nsp = str.substring(start, i);\n    } else {\n      p.nsp = \"/\";\n    }\n    const next = str.charAt(i + 1);\n    if (\"\" !== next && Number(next) == next) {\n      const start = i + 1;\n      while (++i) {\n        const c = str.charAt(i);\n        if (null == c || Number(c) != c) {\n          --i;\n          break;\n        }\n        if (i === str.length)\n          break;\n      }\n      p.id = Number(str.substring(start, i + 1));\n    }\n    if (str.charAt(++i)) {\n      const payload = this.tryParse(str.substr(i));\n      if (_Decoder.isPayloadValid(p.type, payload)) {\n        p.data = payload;\n      } else {\n        throw new Error(\"invalid payload\");\n      }\n    }\n    return p;\n  }\n  tryParse(str) {\n    try {\n      return JSON.parse(str, this.reviver);\n    } catch (e) {\n      return false;\n    }\n  }\n  static isPayloadValid(type, payload) {\n    switch (type) {\n      case PacketType.CONNECT:\n        return isObject(payload);\n      case PacketType.DISCONNECT:\n        return payload === void 0;\n      case PacketType.CONNECT_ERROR:\n        return typeof payload === \"string\" || isObject(payload);\n      case PacketType.EVENT:\n      case PacketType.BINARY_EVENT:\n        return Array.isArray(payload) && (typeof payload[0] === \"number\" || typeof payload[0] === \"string\" && RESERVED_EVENTS.indexOf(payload[0]) === -1);\n      case PacketType.ACK:\n      case PacketType.BINARY_ACK:\n        return Array.isArray(payload);\n    }\n  }\n  /**\n   * Deallocates a parser's resources\n   */\n  destroy() {\n    if (this.reconstructor) {\n      this.reconstructor.finishedReconstruction();\n      this.reconstructor = null;\n    }\n  }\n};\nvar BinaryReconstructor = class {\n  constructor(packet) {\n    this.packet = packet;\n    this.buffers = [];\n    this.reconPack = packet;\n  }\n  /**\n   * Method to be called when binary data received from connection\n   * after a BINARY_EVENT packet.\n   *\n   * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n   * @return {null | Object} returns null if more binary data is expected or\n   *   a reconstructed packet object if all buffers have been received.\n   */\n  takeBinaryData(binData) {\n    this.buffers.push(binData);\n    if (this.buffers.length === this.reconPack.attachments) {\n      const packet = reconstructPacket(this.reconPack, this.buffers);\n      this.finishedReconstruction();\n      return packet;\n    }\n    return null;\n  }\n  /**\n   * Cleans up binary packet reconstruction variables.\n   */\n  finishedReconstruction() {\n    this.reconPack = null;\n    this.buffers = [];\n  }\n};\n\n// node_modules/.pnpm/socket.io-client@4.8.1/node_modules/socket.io-client/build/esm/on.js\nfunction on(obj, ev, fn) {\n  obj.on(ev, fn);\n  return function subDestroy() {\n    obj.off(ev, fn);\n  };\n}\n\n// node_modules/.pnpm/socket.io-client@4.8.1/node_modules/socket.io-client/build/esm/socket.js\nvar RESERVED_EVENTS2 = Object.freeze({\n  connect: 1,\n  connect_error: 1,\n  disconnect: 1,\n  disconnecting: 1,\n  // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n  newListener: 1,\n  removeListener: 1\n});\nvar Socket2 = class extends Emitter {\n  /**\n   * `Socket` constructor.\n   */\n  constructor(io, nsp, opts) {\n    super();\n    this.connected = false;\n    this.recovered = false;\n    this.receiveBuffer = [];\n    this.sendBuffer = [];\n    this._queue = [];\n    this._queueSeq = 0;\n    this.ids = 0;\n    this.acks = {};\n    this.flags = {};\n    this.io = io;\n    this.nsp = nsp;\n    if (opts && opts.auth) {\n      this.auth = opts.auth;\n    }\n    this._opts = Object.assign({}, opts);\n    if (this.io._autoConnect)\n      this.open();\n  }\n  /**\n   * Whether the socket is currently disconnected\n   *\n   * @example\n   * const socket = io();\n   *\n   * socket.on(\"connect\", () => {\n   *   console.log(socket.disconnected); // false\n   * });\n   *\n   * socket.on(\"disconnect\", () => {\n   *   console.log(socket.disconnected); // true\n   * });\n   */\n  get disconnected() {\n    return !this.connected;\n  }\n  /**\n   * Subscribe to open, close and packet events\n   *\n   * @private\n   */\n  subEvents() {\n    if (this.subs)\n      return;\n    const io = this.io;\n    this.subs = [\n      on(io, \"open\", this.onopen.bind(this)),\n      on(io, \"packet\", this.onpacket.bind(this)),\n      on(io, \"error\", this.onerror.bind(this)),\n      on(io, \"close\", this.onclose.bind(this))\n    ];\n  }\n  /**\n   * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n   *\n   * @example\n   * const socket = io();\n   *\n   * console.log(socket.active); // true\n   *\n   * socket.on(\"disconnect\", (reason) => {\n   *   if (reason === \"io server disconnect\") {\n   *     // the disconnection was initiated by the server, you need to manually reconnect\n   *     console.log(socket.active); // false\n   *   }\n   *   // else the socket will automatically try to reconnect\n   *   console.log(socket.active); // true\n   * });\n   */\n  get active() {\n    return !!this.subs;\n  }\n  /**\n   * \"Opens\" the socket.\n   *\n   * @example\n   * const socket = io({\n   *   autoConnect: false\n   * });\n   *\n   * socket.connect();\n   */\n  connect() {\n    if (this.connected)\n      return this;\n    this.subEvents();\n    if (!this.io[\"_reconnecting\"])\n      this.io.open();\n    if (\"open\" === this.io._readyState)\n      this.onopen();\n    return this;\n  }\n  /**\n   * Alias for {@link connect()}.\n   */\n  open() {\n    return this.connect();\n  }\n  /**\n   * Sends a `message` event.\n   *\n   * This method mimics the WebSocket.send() method.\n   *\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n   *\n   * @example\n   * socket.send(\"hello\");\n   *\n   * // this is equivalent to\n   * socket.emit(\"message\", \"hello\");\n   *\n   * @return self\n   */\n  send(...args) {\n    args.unshift(\"message\");\n    this.emit.apply(this, args);\n    return this;\n  }\n  /**\n   * Override `emit`.\n   * If the event is in `events`, it's emitted normally.\n   *\n   * @example\n   * socket.emit(\"hello\", \"world\");\n   *\n   * // all serializable datastructures are supported (no need to call JSON.stringify)\n   * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n   *\n   * // with an acknowledgement from the server\n   * socket.emit(\"hello\", \"world\", (val) => {\n   *   // ...\n   * });\n   *\n   * @return self\n   */\n  emit(ev, ...args) {\n    var _a, _b, _c;\n    if (RESERVED_EVENTS2.hasOwnProperty(ev)) {\n      throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n    }\n    args.unshift(ev);\n    if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n      this._addToQueue(args);\n      return this;\n    }\n    const packet = {\n      type: PacketType.EVENT,\n      data: args\n    };\n    packet.options = {};\n    packet.options.compress = this.flags.compress !== false;\n    if (\"function\" === typeof args[args.length - 1]) {\n      const id = this.ids++;\n      const ack = args.pop();\n      this._registerAckCallback(id, ack);\n      packet.id = id;\n    }\n    const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;\n    const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());\n    const discardPacket = this.flags.volatile && !isTransportWritable;\n    if (discardPacket) {\n    } else if (isConnected) {\n      this.notifyOutgoingListeners(packet);\n      this.packet(packet);\n    } else {\n      this.sendBuffer.push(packet);\n    }\n    this.flags = {};\n    return this;\n  }\n  /**\n   * @private\n   */\n  _registerAckCallback(id, ack) {\n    var _a;\n    const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n    if (timeout === void 0) {\n      this.acks[id] = ack;\n      return;\n    }\n    const timer = this.io.setTimeoutFn(() => {\n      delete this.acks[id];\n      for (let i = 0; i < this.sendBuffer.length; i++) {\n        if (this.sendBuffer[i].id === id) {\n          this.sendBuffer.splice(i, 1);\n        }\n      }\n      ack.call(this, new Error(\"operation has timed out\"));\n    }, timeout);\n    const fn = (...args) => {\n      this.io.clearTimeoutFn(timer);\n      ack.apply(this, args);\n    };\n    fn.withError = true;\n    this.acks[id] = fn;\n  }\n  /**\n   * Emits an event and waits for an acknowledgement\n   *\n   * @example\n   * // without timeout\n   * const response = await socket.emitWithAck(\"hello\", \"world\");\n   *\n   * // with a specific timeout\n   * try {\n   *   const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n   * } catch (err) {\n   *   // the server did not acknowledge the event in the given delay\n   * }\n   *\n   * @return a Promise that will be fulfilled when the server acknowledges the event\n   */\n  emitWithAck(ev, ...args) {\n    return new Promise((resolve, reject) => {\n      const fn = (arg1, arg2) => {\n        return arg1 ? reject(arg1) : resolve(arg2);\n      };\n      fn.withError = true;\n      args.push(fn);\n      this.emit(ev, ...args);\n    });\n  }\n  /**\n   * Add the packet to the queue.\n   * @param args\n   * @private\n   */\n  _addToQueue(args) {\n    let ack;\n    if (typeof args[args.length - 1] === \"function\") {\n      ack = args.pop();\n    }\n    const packet = {\n      id: this._queueSeq++,\n      tryCount: 0,\n      pending: false,\n      args,\n      flags: Object.assign({ fromQueue: true }, this.flags)\n    };\n    args.push((err, ...responseArgs) => {\n      if (packet !== this._queue[0]) {\n        return;\n      }\n      const hasError = err !== null;\n      if (hasError) {\n        if (packet.tryCount > this._opts.retries) {\n          this._queue.shift();\n          if (ack) {\n            ack(err);\n          }\n        }\n      } else {\n        this._queue.shift();\n        if (ack) {\n          ack(null, ...responseArgs);\n        }\n      }\n      packet.pending = false;\n      return this._drainQueue();\n    });\n    this._queue.push(packet);\n    this._drainQueue();\n  }\n  /**\n   * Send the first packet of the queue, and wait for an acknowledgement from the server.\n   * @param force - whether to resend a packet that has not been acknowledged yet\n   *\n   * @private\n   */\n  _drainQueue(force = false) {\n    if (!this.connected || this._queue.length === 0) {\n      return;\n    }\n    const packet = this._queue[0];\n    if (packet.pending && !force) {\n      return;\n    }\n    packet.pending = true;\n    packet.tryCount++;\n    this.flags = packet.flags;\n    this.emit.apply(this, packet.args);\n  }\n  /**\n   * Sends a packet.\n   *\n   * @param packet\n   * @private\n   */\n  packet(packet) {\n    packet.nsp = this.nsp;\n    this.io._packet(packet);\n  }\n  /**\n   * Called upon engine `open`.\n   *\n   * @private\n   */\n  onopen() {\n    if (typeof this.auth == \"function\") {\n      this.auth((data) => {\n        this._sendConnectPacket(data);\n      });\n    } else {\n      this._sendConnectPacket(this.auth);\n    }\n  }\n  /**\n   * Sends a CONNECT packet to initiate the Socket.IO session.\n   *\n   * @param data\n   * @private\n   */\n  _sendConnectPacket(data) {\n    this.packet({\n      type: PacketType.CONNECT,\n      data: this._pid ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data) : data\n    });\n  }\n  /**\n   * Called upon engine or manager `error`.\n   *\n   * @param err\n   * @private\n   */\n  onerror(err) {\n    if (!this.connected) {\n      this.emitReserved(\"connect_error\", err);\n    }\n  }\n  /**\n   * Called upon engine `close`.\n   *\n   * @param reason\n   * @param description\n   * @private\n   */\n  onclose(reason, description) {\n    this.connected = false;\n    delete this.id;\n    this.emitReserved(\"disconnect\", reason, description);\n    this._clearAcks();\n  }\n  /**\n   * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n   * the server.\n   *\n   * @private\n   */\n  _clearAcks() {\n    Object.keys(this.acks).forEach((id) => {\n      const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n      if (!isBuffered) {\n        const ack = this.acks[id];\n        delete this.acks[id];\n        if (ack.withError) {\n          ack.call(this, new Error(\"socket has been disconnected\"));\n        }\n      }\n    });\n  }\n  /**\n   * Called with socket packet.\n   *\n   * @param packet\n   * @private\n   */\n  onpacket(packet) {\n    const sameNamespace = packet.nsp === this.nsp;\n    if (!sameNamespace)\n      return;\n    switch (packet.type) {\n      case PacketType.CONNECT:\n        if (packet.data && packet.data.sid) {\n          this.onconnect(packet.data.sid, packet.data.pid);\n        } else {\n          this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n        }\n        break;\n      case PacketType.EVENT:\n      case PacketType.BINARY_EVENT:\n        this.onevent(packet);\n        break;\n      case PacketType.ACK:\n      case PacketType.BINARY_ACK:\n        this.onack(packet);\n        break;\n      case PacketType.DISCONNECT:\n        this.ondisconnect();\n        break;\n      case PacketType.CONNECT_ERROR:\n        this.destroy();\n        const err = new Error(packet.data.message);\n        err.data = packet.data.data;\n        this.emitReserved(\"connect_error\", err);\n        break;\n    }\n  }\n  /**\n   * Called upon a server event.\n   *\n   * @param packet\n   * @private\n   */\n  onevent(packet) {\n    const args = packet.data || [];\n    if (null != packet.id) {\n      args.push(this.ack(packet.id));\n    }\n    if (this.connected) {\n      this.emitEvent(args);\n    } else {\n      this.receiveBuffer.push(Object.freeze(args));\n    }\n  }\n  emitEvent(args) {\n    if (this._anyListeners && this._anyListeners.length) {\n      const listeners = this._anyListeners.slice();\n      for (const listener of listeners) {\n        listener.apply(this, args);\n      }\n    }\n    super.emit.apply(this, args);\n    if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n      this._lastOffset = args[args.length - 1];\n    }\n  }\n  /**\n   * Produces an ack callback to emit with an event.\n   *\n   * @private\n   */\n  ack(id) {\n    const self2 = this;\n    let sent = false;\n    return function(...args) {\n      if (sent)\n        return;\n      sent = true;\n      self2.packet({\n        type: PacketType.ACK,\n        id,\n        data: args\n      });\n    };\n  }\n  /**\n   * Called upon a server acknowledgement.\n   *\n   * @param packet\n   * @private\n   */\n  onack(packet) {\n    const ack = this.acks[packet.id];\n    if (typeof ack !== \"function\") {\n      return;\n    }\n    delete this.acks[packet.id];\n    if (ack.withError) {\n      packet.data.unshift(null);\n    }\n    ack.apply(this, packet.data);\n  }\n  /**\n   * Called upon server connect.\n   *\n   * @private\n   */\n  onconnect(id, pid) {\n    this.id = id;\n    this.recovered = pid && this._pid === pid;\n    this._pid = pid;\n    this.connected = true;\n    this.emitBuffered();\n    this.emitReserved(\"connect\");\n    this._drainQueue(true);\n  }\n  /**\n   * Emit buffered events (received and emitted).\n   *\n   * @private\n   */\n  emitBuffered() {\n    this.receiveBuffer.forEach((args) => this.emitEvent(args));\n    this.receiveBuffer = [];\n    this.sendBuffer.forEach((packet) => {\n      this.notifyOutgoingListeners(packet);\n      this.packet(packet);\n    });\n    this.sendBuffer = [];\n  }\n  /**\n   * Called upon server disconnect.\n   *\n   * @private\n   */\n  ondisconnect() {\n    this.destroy();\n    this.onclose(\"io server disconnect\");\n  }\n  /**\n   * Called upon forced client/server side disconnections,\n   * this method ensures the manager stops tracking us and\n   * that reconnections don't get triggered for this.\n   *\n   * @private\n   */\n  destroy() {\n    if (this.subs) {\n      this.subs.forEach((subDestroy) => subDestroy());\n      this.subs = void 0;\n    }\n    this.io[\"_destroy\"](this);\n  }\n  /**\n   * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n   *\n   * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n   *\n   * @example\n   * const socket = io();\n   *\n   * socket.on(\"disconnect\", (reason) => {\n   *   // console.log(reason); prints \"io client disconnect\"\n   * });\n   *\n   * socket.disconnect();\n   *\n   * @return self\n   */\n  disconnect() {\n    if (this.connected) {\n      this.packet({ type: PacketType.DISCONNECT });\n    }\n    this.destroy();\n    if (this.connected) {\n      this.onclose(\"io client disconnect\");\n    }\n    return this;\n  }\n  /**\n   * Alias for {@link disconnect()}.\n   *\n   * @return self\n   */\n  close() {\n    return this.disconnect();\n  }\n  /**\n   * Sets the compress flag.\n   *\n   * @example\n   * socket.compress(false).emit(\"hello\");\n   *\n   * @param compress - if `true`, compresses the sending data\n   * @return self\n   */\n  compress(compress) {\n    this.flags.compress = compress;\n    return this;\n  }\n  /**\n   * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n   * ready to send messages.\n   *\n   * @example\n   * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n   *\n   * @returns self\n   */\n  get volatile() {\n    this.flags.volatile = true;\n    return this;\n  }\n  /**\n   * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n   * given number of milliseconds have elapsed without an acknowledgement from the server:\n   *\n   * @example\n   * socket.timeout(5000).emit(\"my-event\", (err) => {\n   *   if (err) {\n   *     // the server did not acknowledge the event in the given delay\n   *   }\n   * });\n   *\n   * @returns self\n   */\n  timeout(timeout) {\n    this.flags.timeout = timeout;\n    return this;\n  }\n  /**\n   * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n   * callback.\n   *\n   * @example\n   * socket.onAny((event, ...args) => {\n   *   console.log(`got ${event}`);\n   * });\n   *\n   * @param listener\n   */\n  onAny(listener) {\n    this._anyListeners = this._anyListeners || [];\n    this._anyListeners.push(listener);\n    return this;\n  }\n  /**\n   * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n   * callback. The listener is added to the beginning of the listeners array.\n   *\n   * @example\n   * socket.prependAny((event, ...args) => {\n   *   console.log(`got event ${event}`);\n   * });\n   *\n   * @param listener\n   */\n  prependAny(listener) {\n    this._anyListeners = this._anyListeners || [];\n    this._anyListeners.unshift(listener);\n    return this;\n  }\n  /**\n   * Removes the listener that will be fired when any event is emitted.\n   *\n   * @example\n   * const catchAllListener = (event, ...args) => {\n   *   console.log(`got event ${event}`);\n   * }\n   *\n   * socket.onAny(catchAllListener);\n   *\n   * // remove a specific listener\n   * socket.offAny(catchAllListener);\n   *\n   * // or remove all listeners\n   * socket.offAny();\n   *\n   * @param listener\n   */\n  offAny(listener) {\n    if (!this._anyListeners) {\n      return this;\n    }\n    if (listener) {\n      const listeners = this._anyListeners;\n      for (let i = 0; i < listeners.length; i++) {\n        if (listener === listeners[i]) {\n          listeners.splice(i, 1);\n          return this;\n        }\n      }\n    } else {\n      this._anyListeners = [];\n    }\n    return this;\n  }\n  /**\n   * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n   * e.g. to remove listeners.\n   */\n  listenersAny() {\n    return this._anyListeners || [];\n  }\n  /**\n   * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n   * callback.\n   *\n   * Note: acknowledgements sent to the server are not included.\n   *\n   * @example\n   * socket.onAnyOutgoing((event, ...args) => {\n   *   console.log(`sent event ${event}`);\n   * });\n   *\n   * @param listener\n   */\n  onAnyOutgoing(listener) {\n    this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n    this._anyOutgoingListeners.push(listener);\n    return this;\n  }\n  /**\n   * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n   * callback. The listener is added to the beginning of the listeners array.\n   *\n   * Note: acknowledgements sent to the server are not included.\n   *\n   * @example\n   * socket.prependAnyOutgoing((event, ...args) => {\n   *   console.log(`sent event ${event}`);\n   * });\n   *\n   * @param listener\n   */\n  prependAnyOutgoing(listener) {\n    this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n    this._anyOutgoingListeners.unshift(listener);\n    return this;\n  }\n  /**\n   * Removes the listener that will be fired when any event is emitted.\n   *\n   * @example\n   * const catchAllListener = (event, ...args) => {\n   *   console.log(`sent event ${event}`);\n   * }\n   *\n   * socket.onAnyOutgoing(catchAllListener);\n   *\n   * // remove a specific listener\n   * socket.offAnyOutgoing(catchAllListener);\n   *\n   * // or remove all listeners\n   * socket.offAnyOutgoing();\n   *\n   * @param [listener] - the catch-all listener (optional)\n   */\n  offAnyOutgoing(listener) {\n    if (!this._anyOutgoingListeners) {\n      return this;\n    }\n    if (listener) {\n      const listeners = this._anyOutgoingListeners;\n      for (let i = 0; i < listeners.length; i++) {\n        if (listener === listeners[i]) {\n          listeners.splice(i, 1);\n          return this;\n        }\n      }\n    } else {\n      this._anyOutgoingListeners = [];\n    }\n    return this;\n  }\n  /**\n   * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n   * e.g. to remove listeners.\n   */\n  listenersAnyOutgoing() {\n    return this._anyOutgoingListeners || [];\n  }\n  /**\n   * Notify the listeners for each packet sent\n   *\n   * @param packet\n   *\n   * @private\n   */\n  notifyOutgoingListeners(packet) {\n    if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n      const listeners = this._anyOutgoingListeners.slice();\n      for (const listener of listeners) {\n        listener.apply(this, packet.data);\n      }\n    }\n  }\n};\n\n// node_modules/.pnpm/socket.io-client@4.8.1/node_modules/socket.io-client/build/esm/contrib/backo2.js\nfunction Backoff(opts) {\n  opts = opts || {};\n  this.ms = opts.min || 100;\n  this.max = opts.max || 1e4;\n  this.factor = opts.factor || 2;\n  this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n  this.attempts = 0;\n}\nBackoff.prototype.duration = function() {\n  var ms = this.ms * Math.pow(this.factor, this.attempts++);\n  if (this.jitter) {\n    var rand = Math.random();\n    var deviation = Math.floor(rand * this.jitter * ms);\n    ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n  }\n  return Math.min(ms, this.max) | 0;\n};\nBackoff.prototype.reset = function() {\n  this.attempts = 0;\n};\nBackoff.prototype.setMin = function(min) {\n  this.ms = min;\n};\nBackoff.prototype.setMax = function(max) {\n  this.max = max;\n};\nBackoff.prototype.setJitter = function(jitter) {\n  this.jitter = jitter;\n};\n\n// node_modules/.pnpm/socket.io-client@4.8.1/node_modules/socket.io-client/build/esm/manager.js\nvar Manager = class extends Emitter {\n  constructor(uri, opts) {\n    var _a;\n    super();\n    this.nsps = {};\n    this.subs = [];\n    if (uri && \"object\" === typeof uri) {\n      opts = uri;\n      uri = void 0;\n    }\n    opts = opts || {};\n    opts.path = opts.path || \"/socket.io\";\n    this.opts = opts;\n    installTimerFunctions(this, opts);\n    this.reconnection(opts.reconnection !== false);\n    this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n    this.reconnectionDelay(opts.reconnectionDelay || 1e3);\n    this.reconnectionDelayMax(opts.reconnectionDelayMax || 5e3);\n    this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n    this.backoff = new Backoff({\n      min: this.reconnectionDelay(),\n      max: this.reconnectionDelayMax(),\n      jitter: this.randomizationFactor()\n    });\n    this.timeout(null == opts.timeout ? 2e4 : opts.timeout);\n    this._readyState = \"closed\";\n    this.uri = uri;\n    const _parser = opts.parser || esm_exports;\n    this.encoder = new _parser.Encoder();\n    this.decoder = new _parser.Decoder();\n    this._autoConnect = opts.autoConnect !== false;\n    if (this._autoConnect)\n      this.open();\n  }\n  reconnection(v) {\n    if (!arguments.length)\n      return this._reconnection;\n    this._reconnection = !!v;\n    if (!v) {\n      this.skipReconnect = true;\n    }\n    return this;\n  }\n  reconnectionAttempts(v) {\n    if (v === void 0)\n      return this._reconnectionAttempts;\n    this._reconnectionAttempts = v;\n    return this;\n  }\n  reconnectionDelay(v) {\n    var _a;\n    if (v === void 0)\n      return this._reconnectionDelay;\n    this._reconnectionDelay = v;\n    (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n    return this;\n  }\n  randomizationFactor(v) {\n    var _a;\n    if (v === void 0)\n      return this._randomizationFactor;\n    this._randomizationFactor = v;\n    (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n    return this;\n  }\n  reconnectionDelayMax(v) {\n    var _a;\n    if (v === void 0)\n      return this._reconnectionDelayMax;\n    this._reconnectionDelayMax = v;\n    (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n    return this;\n  }\n  timeout(v) {\n    if (!arguments.length)\n      return this._timeout;\n    this._timeout = v;\n    return this;\n  }\n  /**\n   * Starts trying to reconnect if reconnection is enabled and we have not\n   * started reconnecting yet\n   *\n   * @private\n   */\n  maybeReconnectOnOpen() {\n    if (!this._reconnecting && this._reconnection && this.backoff.attempts === 0) {\n      this.reconnect();\n    }\n  }\n  /**\n   * Sets the current transport `socket`.\n   *\n   * @param {Function} fn - optional, callback\n   * @return self\n   * @public\n   */\n  open(fn) {\n    if (~this._readyState.indexOf(\"open\"))\n      return this;\n    this.engine = new Socket(this.uri, this.opts);\n    const socket = this.engine;\n    const self2 = this;\n    this._readyState = \"opening\";\n    this.skipReconnect = false;\n    const openSubDestroy = on(socket, \"open\", function() {\n      self2.onopen();\n      fn && fn();\n    });\n    const onError = (err) => {\n      this.cleanup();\n      this._readyState = \"closed\";\n      this.emitReserved(\"error\", err);\n      if (fn) {\n        fn(err);\n      } else {\n        this.maybeReconnectOnOpen();\n      }\n    };\n    const errorSub = on(socket, \"error\", onError);\n    if (false !== this._timeout) {\n      const timeout = this._timeout;\n      const timer = this.setTimeoutFn(() => {\n        openSubDestroy();\n        onError(new Error(\"timeout\"));\n        socket.close();\n      }, timeout);\n      if (this.opts.autoUnref) {\n        timer.unref();\n      }\n      this.subs.push(() => {\n        this.clearTimeoutFn(timer);\n      });\n    }\n    this.subs.push(openSubDestroy);\n    this.subs.push(errorSub);\n    return this;\n  }\n  /**\n   * Alias for open()\n   *\n   * @return self\n   * @public\n   */\n  connect(fn) {\n    return this.open(fn);\n  }\n  /**\n   * Called upon transport open.\n   *\n   * @private\n   */\n  onopen() {\n    this.cleanup();\n    this._readyState = \"open\";\n    this.emitReserved(\"open\");\n    const socket = this.engine;\n    this.subs.push(\n      on(socket, \"ping\", this.onping.bind(this)),\n      on(socket, \"data\", this.ondata.bind(this)),\n      on(socket, \"error\", this.onerror.bind(this)),\n      on(socket, \"close\", this.onclose.bind(this)),\n      // @ts-ignore\n      on(this.decoder, \"decoded\", this.ondecoded.bind(this))\n    );\n  }\n  /**\n   * Called upon a ping.\n   *\n   * @private\n   */\n  onping() {\n    this.emitReserved(\"ping\");\n  }\n  /**\n   * Called with data.\n   *\n   * @private\n   */\n  ondata(data) {\n    try {\n      this.decoder.add(data);\n    } catch (e) {\n      this.onclose(\"parse error\", e);\n    }\n  }\n  /**\n   * Called when parser fully decodes a packet.\n   *\n   * @private\n   */\n  ondecoded(packet) {\n    nextTick(() => {\n      this.emitReserved(\"packet\", packet);\n    }, this.setTimeoutFn);\n  }\n  /**\n   * Called upon socket error.\n   *\n   * @private\n   */\n  onerror(err) {\n    this.emitReserved(\"error\", err);\n  }\n  /**\n   * Creates a new socket for the given `nsp`.\n   *\n   * @return {Socket}\n   * @public\n   */\n  socket(nsp, opts) {\n    let socket = this.nsps[nsp];\n    if (!socket) {\n      socket = new Socket2(this, nsp, opts);\n      this.nsps[nsp] = socket;\n    } else if (this._autoConnect && !socket.active) {\n      socket.connect();\n    }\n    return socket;\n  }\n  /**\n   * Called upon a socket close.\n   *\n   * @param socket\n   * @private\n   */\n  _destroy(socket) {\n    const nsps = Object.keys(this.nsps);\n    for (const nsp of nsps) {\n      const socket2 = this.nsps[nsp];\n      if (socket2.active) {\n        return;\n      }\n    }\n    this._close();\n  }\n  /**\n   * Writes a packet.\n   *\n   * @param packet\n   * @private\n   */\n  _packet(packet) {\n    const encodedPackets = this.encoder.encode(packet);\n    for (let i = 0; i < encodedPackets.length; i++) {\n      this.engine.write(encodedPackets[i], packet.options);\n    }\n  }\n  /**\n   * Clean up transport subscriptions and packet buffer.\n   *\n   * @private\n   */\n  cleanup() {\n    this.subs.forEach((subDestroy) => subDestroy());\n    this.subs.length = 0;\n    this.decoder.destroy();\n  }\n  /**\n   * Close the current socket.\n   *\n   * @private\n   */\n  _close() {\n    this.skipReconnect = true;\n    this._reconnecting = false;\n    this.onclose(\"forced close\");\n  }\n  /**\n   * Alias for close()\n   *\n   * @private\n   */\n  disconnect() {\n    return this._close();\n  }\n  /**\n   * Called when:\n   *\n   * - the low-level engine is closed\n   * - the parser encountered a badly formatted packet\n   * - all sockets are disconnected\n   *\n   * @private\n   */\n  onclose(reason, description) {\n    var _a;\n    this.cleanup();\n    (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();\n    this.backoff.reset();\n    this._readyState = \"closed\";\n    this.emitReserved(\"close\", reason, description);\n    if (this._reconnection && !this.skipReconnect) {\n      this.reconnect();\n    }\n  }\n  /**\n   * Attempt a reconnection.\n   *\n   * @private\n   */\n  reconnect() {\n    if (this._reconnecting || this.skipReconnect)\n      return this;\n    const self2 = this;\n    if (this.backoff.attempts >= this._reconnectionAttempts) {\n      this.backoff.reset();\n      this.emitReserved(\"reconnect_failed\");\n      this._reconnecting = false;\n    } else {\n      const delay = this.backoff.duration();\n      this._reconnecting = true;\n      const timer = this.setTimeoutFn(() => {\n        if (self2.skipReconnect)\n          return;\n        this.emitReserved(\"reconnect_attempt\", self2.backoff.attempts);\n        if (self2.skipReconnect)\n          return;\n        self2.open((err) => {\n          if (err) {\n            self2._reconnecting = false;\n            self2.reconnect();\n            this.emitReserved(\"reconnect_error\", err);\n          } else {\n            self2.onreconnect();\n          }\n        });\n      }, delay);\n      if (this.opts.autoUnref) {\n        timer.unref();\n      }\n      this.subs.push(() => {\n        this.clearTimeoutFn(timer);\n      });\n    }\n  }\n  /**\n   * Called upon successful reconnect.\n   *\n   * @private\n   */\n  onreconnect() {\n    const attempt = this.backoff.attempts;\n    this._reconnecting = false;\n    this.backoff.reset();\n    this.emitReserved(\"reconnect\", attempt);\n  }\n};\n\n// node_modules/.pnpm/socket.io-client@4.8.1/node_modules/socket.io-client/build/esm/index.js\nvar cache = {};\nfunction lookup2(uri, opts) {\n  if (typeof uri === \"object\") {\n    opts = uri;\n    uri = void 0;\n  }\n  opts = opts || {};\n  const parsed = url(uri, opts.path || \"/socket.io\");\n  const source = parsed.source;\n  const id = parsed.id;\n  const path = parsed.path;\n  const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n  const newConnection = opts.forceNew || opts[\"force new connection\"] || false === opts.multiplex || sameNamespace;\n  let io;\n  if (newConnection) {\n    io = new Manager(source, opts);\n  } else {\n    if (!cache[id]) {\n      cache[id] = new Manager(source, opts);\n    }\n    io = cache[id];\n  }\n  if (parsed.query && !opts.query) {\n    opts.query = parsed.queryKey;\n  }\n  return io.socket(parsed.path, opts);\n}\nObject.assign(lookup2, {\n  Manager,\n  Socket: Socket2,\n  io: lookup2,\n  connect: lookup2\n});\n\n// src/utils/live-reload/socket.ts\nvar socket_default = {\n  connect(endpoint) {\n    return new Promise((resolve, reject) => {\n      const socket = lookup2(endpoint);\n      socket.on(\"connect\", () => {\n        console.log(`[framer-live-esm] Socket connected`);\n        return resolve(socket);\n      });\n      socket.on(\"reconnect\", (data) => {\n        console.error(`[framer-live-esm] Socket reconnected`);\n      });\n      socket.on(\"connect_error\", (err) => {\n        console.error(\n          `[framer-live-esm] Socket had a connection error: ${err.message}`,\n          socket\n        );\n        return reject(err);\n      });\n      socket.on(\"connect_timeout\", (err) => {\n        console.error(\n          `[framer-live-esm] Socket connection timed out: ${err.message}`\n        );\n        return reject(err);\n      });\n    });\n  }\n};\n\nexport {\n  socket_default\n};\n", "import {\n  socket_default\n} from \"./chunk-DEZTVITG.mjs\";\nimport {\n  __async\n} from \"./chunk-JWK35I2R.mjs\";\n\n// src/utils/live-reload/bootstrap.ts\nvar SOCKET_SERVER_URL = \"http://127.0.0.1:8001\";\nfunction initLiveReload() {\n  return __async(this, null, function* () {\n    if (window.framerRealtimeSocket) return;\n    try {\n      console.log(`[framer-live-esm] Connecting on ${SOCKET_SERVER_URL}`);\n      const createdSocket = yield socket_default.connect(SOCKET_SERVER_URL);\n      console.log(`[framer-live-esm] Created socket`);\n      window.framerRealtimeSocket = createdSocket;\n    } catch (err) {\n      console.error(`[framer-live-esm] Error trying to create socket `, err);\n    }\n  });\n}\n\nexport {\n  initLiveReload\n};\n", "import {\n  initLiveReload\n} from \"../../chunk-X6ESPM5B.mjs\";\nimport \"../../chunk-DEZTVITG.mjs\";\nimport {\n  isDev\n} from \"../../chunk-OBTVI3NH.mjs\";\nimport \"../../chunk-HLCVLHIF.mjs\";\nimport \"../../chunk-OPROYRJW.mjs\";\nimport \"../../chunk-FC4HU4W2.mjs\";\nimport \"../../chunk-7S43GEAK.mjs\";\nimport {\n  __async\n} from \"../../chunk-JWK35I2R.mjs\";\n\n// src/utils/live-reload/useRealtimeComponent.ts\nimport * as React from \"react\";\nfunction useRealtimeComponent(originalComponent, componentName) {\n  if (!isDev) return originalComponent;\n  const [, setForceRerender] = React.useState(0);\n  const updateCount = React.useRef(0);\n  const updatedInstance = React.useRef(null);\n  React.useLayoutEffect(() => {\n    const onRebuild = (event) => __async(null, null, function* () {\n      console.log(\n        `[framer-live-esm] Build complete, refreshing ${componentName}`\n      );\n      const response = yield import(`http://127.0.0.1:8000/${componentName}.mjs?${updateCount.current}`);\n      updateCount.current++;\n      updatedInstance.current = response[componentName.split(\"/\").pop()];\n      setForceRerender(updateCount.current);\n    });\n    const setupHandler = (retryCount = 0) => {\n      if (!window.framerRealtimeSocket) {\n        setTimeout(() => setupHandler(retryCount + 1), retryCount + 1 * 500);\n        return;\n      }\n      window.framerRealtimeSocket.on(\"build\", onRebuild);\n    };\n    setupHandler();\n    return () => {\n      if (window.framerRealtimeSocket) {\n        window.framerRealtimeSocket.off(\"build\", onRebuild);\n      }\n    };\n  }, [componentName]);\n  React.useEffect(() => {\n    initLiveReload();\n  }, []);\n  return updatedInstance.current || originalComponent;\n}\nexport {\n  useRealtimeComponent\n};\n", "import{jsx as _jsx}from\"react/jsx-runtime\";import*as m from\"https://esm.ngrok.dev/index.mjs\";import{useRealtimeComponent}from\"https://esm.ngrok.dev/utils/live-reload/useRealtimeComponent.mjs\";import{addPropertyControls}from\"framer\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function Init(props){const Component=useRealtimeComponent(m.Init,\"auth/Init\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(Init,m.Init.propertyControls||{});/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export function UserButton(props){const Component=useRealtimeComponent(m.UserButton,\"auth/UserButton\");return /*#__PURE__*/_jsx(Component,{...props});}/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export function Login(props){const Component=useRealtimeComponent(m.Login,\"auth/Login\");return /*#__PURE__*/_jsx(Component,{...props});}/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight auto\n */export function CompareImage(props){const Component=useRealtimeComponent(m.CompareImage,\"CompareImage\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(CompareImage,m.CompareImage.propertyControls||{});/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export function Counter(props){const Component=useRealtimeComponent(m.Counter,\"Counter\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(Counter,m.Counter.propertyControls||{});/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */export function ClassList(props){const Component=useRealtimeComponent(m.ClassList,\"ClassList\");return /*#__PURE__*/_jsx(Component,{...props});}/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight any\n */export function VideoList(props){const Component=useRealtimeComponent(m.VideoList,\"class/VideoList\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(VideoList,m.VideoList.propertyControls||{});/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function MuxPlayer(props){const Component=useRealtimeComponent(m.MuxPlayer,\"MuxPlayer\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(MuxPlayer,m.MuxPlayer.propertyControls||{});/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function Reviews(props){const Component=useRealtimeComponent(m.Reviews,\"Reviews\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(Reviews,m.Reviews.propertyControls||{});/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function Framer101(props){const Component=useRealtimeComponent(m.Framer101,\"Framer101\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(Framer101,m.Framer101.propertyControls||{});/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function Framer101_2(props){const Component=useRealtimeComponent(m.Framer101_2,\"Framer101_2\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(Framer101_2,m.Framer101_2.propertyControls||{});/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function Framer101_3(props){const Component=useRealtimeComponent(m.Framer101_3,\"Framer101_3\");return /*#__PURE__*/_jsx(Component,{...props});}addPropertyControls(Framer101_3,m.Framer101_3.propertyControls||{});//------------------------------------------------ Payments\n/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export function HandleMobileRedirection(props){const Component=useRealtimeComponent(m.HandleMobileRedirection,\"payments/HandleMobileRedirection\");return /*#__PURE__*/_jsx(Component,{...props});}\nexport const __FramerMetadata__ = {\"exports\":{\"Counter\":{\"type\":\"reactComponent\",\"name\":\"Counter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\"}},\"Framer101\":{\"type\":\"reactComponent\",\"name\":\"Framer101\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"CompareImage\":{\"type\":\"reactComponent\",\"name\":\"CompareImage\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"MuxPlayer\":{\"type\":\"reactComponent\",\"name\":\"MuxPlayer\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\"}},\"ClassList\":{\"type\":\"reactComponent\",\"name\":\"ClassList\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\"}},\"VideoList\":{\"type\":\"reactComponent\",\"name\":\"VideoList\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"any\"}},\"Framer101_3\":{\"type\":\"reactComponent\",\"name\":\"Framer101_3\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"Framer101_2\":{\"type\":\"reactComponent\",\"name\":\"Framer101_2\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\"}},\"HandleMobileRedirection\":{\"type\":\"reactComponent\",\"name\":\"HandleMobileRedirection\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\"}},\"Login\":{\"type\":\"reactComponent\",\"name\":\"Login\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"auto\",\"framerSupportedLayoutHeight\":\"auto\"}},\"Init\":{\"type\":\"reactComponent\",\"name\":\"Init\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\"}},\"Reviews\":{\"type\":\"reactComponent\",\"name\":\"Reviews\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\"}},\"UserButton\":{\"type\":\"reactComponent\",\"name\":\"UserButton\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"auto\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Components.map"],
  "mappings": "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CMC,EAAW,CACf,CACE,MAAO,oHACP,YAAa,yVACf,EACA,CACE,MAAO,gHACP,YAAa,qUACf,EACA,CACE,MAAO,6GACP,YAAa,+XACf,CACF,EACMC,EAAU,CACd,CACE,KAAM,qBACN,KAAM,iCACN,KAAM,iUACR,EACA,CACE,KAAM,qBACN,KAAM,wCACN,KAAM,sUACR,EACA,CACE,KAAM,kCACN,KAAM,4BACN,KAAM,sRACR,CACF,EACMC,EAAa,CACjB,CACE,OAAQ,4BACR,MAAO,gFACP,YAAa,+SACb,aAAc,EACd,SAAU,kBACV,QAAS,+MACT,QAAS,CACP,uEACA,yGACA,wEACA,qFACA,sFACF,CACF,EACA,CACE,OAAQ,6BACR,MAAO,kGACP,YAAa,oTACb,aAAc,EACd,SAAU,gBACV,QAAS,iOACT,QAAS,CACP,4GACA,6GACA,yFACA,wFACA,gGACF,CACF,EACA,CACE,OAAQ,8BACR,MAAO,6EACP,YAAa,sQACb,aAAc,EACd,SAAU,gBACV,QAAS,qMACT,QAAS,CACP,4EACA,mCACA,sFACA,6FACA,4FACF,CACF,EACA,CACE,OAAQ,wBACR,MAAO,2FACP,YAAa,8QACb,aAAc,EACd,SAAU,kBACV,QAAS,oNACT,QAAS,CACP,kEACA,wEACA,uEACA,uGACA,gHACF,CACF,EACA,CACE,OAAQ,6BACR,MAAO,kGACP,YAAa,mUACb,aAAc,EACd,SAAU,gBACV,QAAS,4OACT,QAAS,CACP,kGACA,+DACA,yGACA,sFACA,wGACF,CACF,EACA,CACE,OAAQ,+BACR,MAAO,sFACP,YAAa,uWACb,aAAc,EACd,SAAU,gBACV,QAAS,kMACT,QAAS,CACP,uEACA,mFACA,4GACA,qHACA,gFACA,6EACA,qHACF,CACF,CACF,EACMC,EAAO,CACX,CACE,SAAU,yGACV,OAAQ,itBACV,EACA,CACE,SAAU,+GACV,OAAQ,sfACV,EACA,CACE,SAAU,sFACV,OAAQ,uSACV,EACA,CACE,SAAU,4HACV,OAAQ,mYACV,CACF,EACMC,EAAiB,CAAC,CAAE,WAAAC,CAAW,IAAM,CACzC,IAAMC,E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AC,CAAC,EAClBH,EAAI,IAAK,CAAE,UAAW,4BAA6B,SAAU,oGAAqG,CAAC,CACrL,CAAE,CAAC,EACaA,EACd,SACA,CACE,IAAK,mCACL,UAAW,yBACX,MAAO,yBACP,UAAW,IACb,CACF,CACF,CACF,CACF,CACF,CACF,CACF,EACgBA,EACd,IACA,CACE,UAAW,6BACX,MAAO,CAAE,MAAOJ,GAAO,UAAW,EAClC,SAAU,8EACZ,CACF,CACF,CAAE,CAAC,CACL,CAAE,CAAC,CACL,ECzMA,IAAIa,EAAS,CACX,WAAY,UACZ,MAAO,UACP,WAAY,UACZ,MAAO,UACP,WAAY,UACZ,UAAW,UACX,UAAW,SACb,EACIC,GAAY,CAAC,CAAE,UAAAC,CAAU,IAAsBC,EACjD,MACA,CACE,UAAAD,EACA,MAAO,6BACP,QAAS,YACT,KAAM,eACN,SAA0BC,EACxB,OACA,CACE,SAAU,UACV,EAAG,gOACH,SAAU,SACZ,CACF,CACF,CACF,EACIC,GAAW,CAAC,CAAE,UAAAF,CAAU,IAAsBC,EAChD,MACA,CACE,UAAAD,EACA,MAAO,6BACP,QAAS,YACT,KAAM,eACN,SAA0BC,EACxB,OACA,CACE,SAAU,UACV,EAAG,kSACH,SAAU,SACZ,CACF,CACF,CACF,EACA,SAASE,IAAY,CACnB,IAAMC,EAAW,CACf,8GACA,8FACA,+GACA,iIACA,yFACA,0GACF,EACMC,EAAW,CACf,CACE,MAAO,oHACP,YAAa,yVACf,EACA,CACE,MAAO,gHACP,YAAa,qUACf,EACA,CACE,MAAO,6GACP,YAAa,+XACf,CACF,EACMC,EAAU,CACd,CACE,KAAM,qBACN,KAAM,iCACN,KAAM,iUACR,EACA,CACE,KAAM,qBACN,KAAM,wCACN,KAAM,sUACR,EACA,CACE,KAAM,kCACN,KAAM,4BACN,KAAM,sRACR,CACF,EACMC,EAAa,CACjB,CACE,OAAQ,4BACR,MAAO,gFACP,YAAa,+SACb,aAAc,EACd,SAAU,kBACV,QAAS,+MACT,QAAS,CACP,uEACA,yGACA,wEACA,qFACA,sFACF,CACF,EACA,CACE,OAAQ,6BACR,MA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,IAC9Bo2D,EAAK,MAAMp2D,CAAE,EAAI,CAACA,EAAG,WAAW,CAAC,EAAGA,EAAG,WAAW,CAAC,EAAGA,EAAG,WAAW,CAAC,EAAGA,EAAG,WAAW,CAAC,CAAC,GAG5F,IAAMq2D,EAAY,IAAI,WAAW,CAC/B,EAEA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,IACA,IACA,IACA,IAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,CAEF,CAAC,EACKC,EAAY,IAAI,WAAW,CAC/B,EAEA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,IACA,IACA,IACA,IAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,CAEF,CAAC,EACDF,EAAK,WAAa,CAChB,MAAOC,EACP,MAAOC,CACT,EACA,IAAMC,EAAO,IAAI,WAAW,CAC1B,EAEA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,GAEA,IACA,IACA,IACA,GAEA,EAEA,EACA,EACA,CAEF,CAAC,EACKC,EAAO,IAAI,WAAW,CAC1B,EAEA,EACA,EACA,EAEA,EACA,EACA,EACA,CAEF,CAAC,EACDJ,EAAK,KAAOA,EAAK,KAAOA,EAAK,KAAOI,EACpCJ,EAAK,KAAO,IAAI,WAAW,CACzB,EAEA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,CAEF,CAAC,EACDA,EAAK,KAAO,IAAI,WAAW,CACzB,EAEA,EACA,EACA,EAEA,EACA,EAEA,EACA,EACA,EACA,EACA,EACA,CAEF,CAAC,EACDA,EAAK,KAAO,IAAI,WAAW,CACzB,EAEA,EACA,EACA,EAEA,EACA,EAEA,EACA,CAEF,CAAC,EACDA,EAAK,KAAO,IAAI,WAAW,CACzB,EAEA,EACA,EACA,EAEA,EACA,EACA,EACA,CACF,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AG,OAAQC,CAAE,CACrL,CACA,IAAI4/I,GAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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",
  "names": ["fontStore", "fonts", "css", "className", "HandleMobileRedirection", "props", "store", "setStore", "useGlobalStore", "clerk", "supabase", "user", "ue", "urlParams", "window", "paymentId", "courseId", "update", "__async", "url", "options", "paymentData", "email", "username", "phone", "customData", "getCustomData", "afterPayments", "error", "p", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "width", "props", "_humanReadableVariantMap_props_variant", "_ref", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onAppearl4lp60", "args", "useOnVariantChange", "ref1", "pe", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "cx", "SVG", "css", "FramerubzwLPDLP", "withCSS", "web_Spinner_IdTB_default", "addPropertyControls", "ControlType", "addFonts", "serializationHash", "variantClassNames", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "getProps", "height", "id", "onClick", "title", "width", "props", "_ref", "createLayoutDependency", "variants", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "variant", "DicMLVR17", "GFTgizblO", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "variantClassNames", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTap1knps2q", "args", "ref1", "pe", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "cx", "serializationHash", "RichText", "css", "FramerwUFtSXOPd", "withCSS", "web_MenuItem_oSWT_default", "addPropertyControls", "ControlType", "addFonts", "MotionAWithFX", "withFX", "motion", "serializationHash", "variantClassNames", "animation", "transition1", "transition2", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "getProps", "content", "height", "id", "link", "smallTitle", "subTitle", "width", "props", "u", "createLayoutDependency", "variants", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "variant", "g6Gj_B3C8", "tELsFd721", "SNA6l19Uu", "OF8b_4AWY", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "variantClassNames", "layoutDependency", "scopingClassNames", "cx", "serializationHash", "ref1", "pe", "defaultLayoutId", "ae", "componentViewport", "useComponentViewport", "LayoutGroup", "Link", "MotionAWithFX", "RichText", "ComponentPresetsProvider", "css", "FramerpNHUzUY_J", "withCSS", "web_Course_Card_oJCo_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "getFontsFromComponentPreset", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "link", "newTab", "onClick", "text", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "qGd_L3zY2", "qdfjHAymA", "s4doLI9Je", "sLwHAfjpJ", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTap15wv0rg", "args", "scopingClassNames", "cx", "LayoutGroup", "Link", "RichText", "css", "Framere26fWTkl8", "withCSS", "web_Button_amAd_default", "addPropertyControls", "ControlType", "addFonts", "serializationHash", "variantClassNames", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "getProps", "height", "id", "title", "width", "props", "createLayoutDependency", "variants", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "variant", "ZjOataw8x", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "variantClassNames", "layoutDependency", "scopingClassNames", "cx", "serializationHash", "ref1", "pe", "defaultLayoutId", "ae", "componentViewport", "useComponentViewport", "LayoutGroup", "ComponentPresetsProvider", "RichText", "css", "FramerqZtbqVS6g", "withCSS", "class_Course_Title_s240_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "getFontsFromComponentPreset", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "title", "width", "props", "_ref", "_humanReadableVariantMap_props_variant", "_ref1", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "HmIe2CS40", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "cx", "RichText", "css", "FramerL_qgV81kS", "withCSS", "L_qgV81kS_default", "addPropertyControls", "ControlType", "addFonts", "ClassBadgeFonts", "getFonts", "L_qgV81kS_default", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "isSet", "value", "Transition", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "category", "height", "id", "onClick", "showBadge", "showBadges", "title", "width", "props", "_ref", "_humanReadableVariantMap_props_variant", "_ref1", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "vUdH30LGf", "K0LT0h_gV", "B_OfjITaX", "oaG9Chr4C", "BsCHs94Gy", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTap1rr2kdx", "args", "ref1", "pe", "isDisplayed", "visible", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "RichText", "SVG", "ComponentViewportProvider", "css", "FramerrTlTWfSvU", "withCSS", "class_Video_Item_Qr97_default", "addPropertyControls", "ControlType", "addFonts", "serializationHash", "variantClassNames", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "getProps", "height", "id", "width", "props", "createLayoutDependency", "variants", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "variant", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "variantClassNames", "layoutDependency", "scopingClassNames", "cx", "serializationHash", "LayoutGroup", "u", "RichText", "Link", "css", "FramerU_w7ouzJ4", "withCSS", "class_Info_ii1V_default", "addFonts", "getFontsFromSharedStyle", "fonts", "WebButtonFonts", "getFonts", "e26fWTkl8_default", "PaymentsPaymentFormFonts", "ctqoUUpVh_default", "MotionDivWithFX", "withFX", "motion", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "transition2", "animation", "animation1", "animation2", "Overlay", "children", "blockDocumentScrolling", "enabled", "visible", "setVisible", "useOverlayState", "Transition", "value", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "x", "humanReadableVariantMap", "getProps", "click", "height", "id", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "Qb7DnJ8iN", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "qdfjHAymA10lo0u3", "overlay", "paginationInfo", "args", "ref1", "pe", "ref2", "ref3", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "cx", "l", "ComponentViewportProvider", "u", "AnimatePresence", "Floating", "css", "FramergMV56Irc9", "withCSS", "payments_Payment_Button_oYzB_default", "addPropertyControls", "ControlType", "addFonts", "serializationHash", "variantClassNames", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "getProps", "height", "id", "width", "props", "createLayoutDependency", "variants", "Variants", "motion", "x", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "variant", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "variantClassNames", "layoutDependency", "scopingClassNames", "cx", "serializationHash", "ref1", "pe", "defaultLayoutId", "ae", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "RichText", "Link", "css", "FramerJ_CUIzUcf", "withCSS", "LiveEventInfo_1uhR_default", "addFonts", "getFontsFromSharedStyle", "fonts", "ClassList", "props", "store", "setStore", "useGlobalStore", "user", "isDev", "myCourses", "p", "course", "id", "courses", "web_Course_Card_oJCo_default", "Framer101_2", "u", "p", "motion", "colors", "CheckIcon", "className", "p", "StarIcon", "Framer101_3", "features", "audience", "reviews", "curriculum", "faqs", "CountdownTimer", "targetDate", "calculateTimeLeft", "difference", "timeLeft2", "timeLeft", "setTimeLeft", "ye", "ue", "timer", "timerComponents", "interval", "u", "person", "index", "feature", "i", "week", "lesson", "lessonIndex", "review", "_", "starIndex", "faq", "colors", "Icon", "path", "className", "p", "FigmaIcon", "u", "ScrollIcon", "Arrow", "BeforeAfterGraphic", "showTooltip", "setShowTooltip", "ye", "colors", "CheckIcon", "className", "p", "StarIcon", "Framer101", "features", "audience", "reviews", "curriculum", "faqs", "CountdownTimer", "targetDate", "calculateTimeLeft", "difference", "timeLeft2", "timeLeft", "setTimeLeft", "ye", "ue", "timer", "timerComponents", "interval", "u", "BeforeAfterGraphic", "person", "index", "feature", "i", "week", "lesson", "lessonIndex", "review", "_", "starIndex", "faq", "FONTS", "StarRating", "rating", "size", "sizeClasses", "p", "star", "ReviewItem", "review", "isHelpful", "setIsHelpful", "ye", "helpfulCount", "setHelpfulCount", "handleHelpful", "prev", "u", "ReviewStats", "reviews", "averageRating", "sum", "ratingDistribution", "r", "count", "percentage", "Reviews", "sortBy", "setSortBy", "filterRating", "setFilterRating", "reviewsData", "filteredAndSortedReviews", "b", "e", "NeedPayment", "u", "p", "payments_Payment_Button_oYzB_default", "Arrow", "className", "p", "$r", "ct", "Zr", "ei", "ti", "ri", "ft", "r10", "e", "H", "ii", "t2", "a2", "i2", "n2", "o", "s", "f", "B", "J", "za", "ht2", "Te4", "window", "global", "C", "ke", "gt", "yt4", "Ae4", "l", "w2", "D3", "p3", "h3", "T3", "_3", "c4", "u3", "m3", "q3", "y5", "P2", "E4", "k3", "g2", "x4", "v4", "U", "Z", "Xt", "Ge3", "Ai", "Oi", "Kt3", "Yt3", "Ii", "Li", "er", "$t3", "Zt4", "Ke", "du", "gr", "yr", "$i", "wr", "cu", "br", "pe4", "Er", "_u", "Tr", "re5", "Ye", "pu", "kr", "Zi", "Xe", "vu", "xr", "ea", "$e", "mu", "Dr", "ta2", "Ar", "yu", "qr", "Sr", "ra2", "Ze3", "ia2", "sa2", "oa2", "aa", "na2", "Rr", "ua2", "tt", "bu", "Ir", "et3", "da2", "la2", "ca", "fa2", "Or", "N3", "Nr", "Tu", "Lr", "rt3", "z2", "Cr", "Eu", "Pr", "it2", "Hr", "xu", "Mr", "_a3", "pa2", "va", "Se3", "ma2", "ha2", "ya", "ga2", "ba2", "He3", "V4", "Ur", "Du", "Br", "wa2", "Wr", "Su", "Vr", "Fr", "Ta", "Re4", "_t", "pt", "vt", "We", "mt", "j", "ye", "X", "qe", "$", "Ee", "ue", "ai", "I", "Oe", "de", "bt", "ni", "A", "b", "S", "wt", "M", "d", "Ie", "Tt", "xe", "Et", "kt", "xt", "F", "ee", "Le", "oi", "le", "O", "ne", "si", "ce", "ui", "Dt", "di", "fe", "oe", "li", "Ne", "Pe", "De", "St", "W4", "ae5", "L2", "R2", "Y5", "ge4", "be3", "Rt", "qt", "ci", "fi", "_i", "At", "we4", "Q5", "Ue4", "Fe3", "Ve4", "zr", "Kr", "Yr", "Xr", "Ot", "It", "pi", "Lt", "Ce", "vi", "Nt", "mi", "r", "Pt", "hi", "Ct", "yi", "Mt", "gi", "Ht", "Bt", "bi", "r2", "Ut", "wi", "Ft", "Ti", "Vt", "Ei", "r3", "Wt", "ki", "xi", "r4", "jt", "Gt", "Di", "Si", "Jt", "je", "Ri", "r5", "Qt", "qi", "r6", "zt", "Me", "Je", "Qe", "tr", "rr", "ir", "ar", "nr", "ze", "or", "sr", "ur", "dr", "Ni", "Pi", "cr", "Ci", "lr", "_e", "te", "Mi", "Hi", "Bi", "Ui", "K", "fr", "Fi", "navigator", "_r", "Vi", "Wi", "ji", "Gi", "Ji", "pr", "Qi", "r7", "vr", "zi", "Ki", "r8", "mr", "Yi", "Xi", "hr", "ve", "at", "Ea", "ka", "nt", "ot", "he", "me", "st", "ut", "se", "Be", "Ra", "lt", "dt", "qa", "jr", "Sa", "Da", "xa", "Gr", "Aa", "Jr", "Oa", "Qr", "Ia", "La", "Na", "G", "ie", "Pa", "od", "getDefaultExportFromCjs", "urlToolkit", "module", "exports", "root", "URL_REGEX", "FIRST_SEGMENT_REGEX", "SLASH_DOT_REGEX", "SLASH_DOT_DOT_REGEX", "URLToolkit", "baseURL", "relativeURL", "opts", "basePartsForNormalise", "relativeParts", "baseParts", "pathParts", "builtParts", "baseURLPath", "newPath", "url", "parts", "path", "urlToolkitExports", "ownKeys", "r11", "_objectSpread2", "_defineProperty", "_toPrimitive", "_toPropertyKey", "obj", "key", "value", "_extends", "target", "source", "isFiniteNumber", "isSafeInteger", "MAX_SAFE_INTEGER", "Events", "Events2", "ErrorTypes", "ErrorTypes2", "ErrorDetails", "ErrorDetails2", "noop", "fakeLogger", "exportedLogger", "consolePrintFn", "type", "func", "exportLoggerFunctions", "debugConfig", "functions", "enableLogs", "id", "logger", "DECIMAL_RESOLUTION_REGEX", "ATTR_LIST_REGEX", "AttrList", "_AttrList", "attrs", "attr", "attrName", "intValue", "stringValue", "defaultValue", "res", "input", "match", "quote", "name", "isDateRangeCueAttribute", "isSCTE35Attribute", "DateRange", "dateRangeAttr", "dateRangeWithSameId", "previousAttr", "endDate", "duration", "LoadStats", "ElementaryStreamTypes", "BaseSegment", "baseurl", "previous", "params", "start", "Fragment", "levelkeys", "keyFormats", "_this$_decryptdata", "len", "keyFormat", "_this$loader", "_this$keyLoader", "startPTS", "endPTS", "startDTS", "endDTS", "partial", "elementaryStreams", "info", "Part", "partAttrs", "frag", "index", "byteRange", "DEFAULT_TARGET_DURATION", "LevelDetails", "baseUrl", "partSnDiff", "partIndexDiff", "runTime", "_this$partList", "_this$fragments", "_this$partList2", "_this$partList3", "base64Decode", "base64encodedStr", "getKeyIdBytes", "str", "keyIdbytes", "strToUtf8array", "paddedkeyIdbytes", "changeEndianness", "keyId", "swap", "array", "from", "to", "cur", "convertDataUriToArrayBytes", "uri", "colonsplit", "keydata", "semicolonsplit", "commasplit", "isbase64", "data", "optionalSelf", "KeySystems", "KeySystemFormats", "keySystemFormatToKeySystemDomain", "format2", "KeySystemIds", "keySystemIdToKeySystemDomain", "systemId", "keySystemDomainToKeySystemFormat", "keySystem", "getKeySystemsForConfig", "config", "drmSystems", "widevineLicenseUrl", "keySystemsToAttempt", "requestMediaKeySystemAccess", "_optionalSelf$navigat", "getSupportedMediaKeySystemConfigurations", "audioCodecs", "videoCodecs", "drmSystemOptions", "initDataTypes", "createMediaKeySystemConfigurations", "codec", "parsePlayReadyWRM", "keyBytes", "keyBytesUtf16", "keyByteStr", "xmlKeyBytes", "keyData", "keyIdArray", "sliceUint8", "end", "isHeader$2", "offset", "isFooter", "getID3Data", "front", "length", "size", "readSize", "canParse$2", "getTimeStamp", "frames", "getID3Frames", "frame", "isTimeStampFrame", "readTimeStamp", "getFrameData", "id3Data", "frameData", "decodeFrame", "decodePrivFrame", "decodeURLFrame", "decodeTextFrame", "owner", "utf8ArrayToStr", "privateData", "description", "text", "timeStampFrame", "pts33Bit", "timestamp", "exitOnNull", "decoder2", "getTextDecoder", "decoded", "idx", "char2", "char3", "out", "decoder", "Hex", "UINT32_MAX$1", "push", "RemuxerTrackIdConfig", "bin2str", "readUint16", "buffer", "val", "readUint32", "readSint32", "readUint64", "result", "writeUint32", "hasMoofData", "findBox", "results", "endbox", "subresults", "parseSegmentIndex", "sidx", "references", "version", "timescale", "earliestPresentationTime", "firstOffset", "startByte", "referencesCount", "referenceIndex", "referenceInfo", "referenceSize", "subsegmentDuration", "parseInitSegment", "initSegment", "traks", "trak", "tkhd", "trackId", "mdhd", "hdlr", "hdlrType", "stsd", "stsdData", "parseStsd", "trex2", "track", "sampleEntries", "sampleEntriesEnd", "fourCC", "encrypted", "encBoxChildren", "sinf", "schm", "scheme", "frma", "avcCBox", "toHex", "codecBox", "esdsBox", "skipBERInteger", "flags", "objectType", "firstByte", "audioObjectType", "hvcCBox", "profileByte", "profileSpace", "generalProfileIdc", "profileCompat", "tierFlag", "levelIDC", "constraintIndicator", "constraintString", "byte", "dvcCBox", "profile", "level", "addLeadingZero", "vpcCBox", "bitDepth", "av1CBox", "highBitDepth", "twelveBit", "monochrome", "chromaSubsamplingX", "chromaSubsamplingY", "chromaSamplePosition", "bytes", "limit", "num", "patchEncyptionData", "decryptdata", "encBoxes", "isAudio", "enc", "tenc", "parseSinf", "tencKeyId", "b4", "getStartDTS", "initData", "fmp4", "traf", "tfdt", "result2", "tfhd", "baseTime", "scale", "startTime", "getDuration", "rawDuration", "videoDuration", "audioDuration", "trafs", "trackDefault", "tfhdFlags", "sampleDuration", "truns", "j4", "computeRawDurationFromSamples", "sampleCount", "sidxMinStart", "sidxMaxEnd", "sidxDuration", "sidxs", "subSegmentDuration", "dur", "ref", "trun", "offsetStartDTS", "timeOffset", "baseMediaDecodeTime", "upper", "lower", "segmentValidRange", "segmentedRange", "moofs", "last", "appendUint8Array", "data1", "data2", "temp", "parseSamples", "seiSamples", "videoData", "isHEVCFlavor", "moof", "moofOffset", "baseDataOffsetPresent", "sampleDescriptionIndexPresent", "defaultSampleDurationPresent", "defaultSampleDuration", "defaultSampleSizePresent", "defaultSampleSize", "defaultSampleFlagsPresent", "tfhdOffset", "isHEVC", "dataOffsetPresent", "dataOffset", "firstSampleFlagsPresent", "sampleDurationPresent", "sampleSizePresent", "sampleSize", "sampleFlagsPresent", "sampleCompositionOffsetsPresent", "compositionOffset", "trunOffset", "sampleOffset", "ix", "naluTotalSize", "naluSize", "isSEIMessage", "parseSEIMessageFromNALu", "delimit", "baseCodec", "naluHeader", "naluType", "unescapedData", "headerSize", "pts", "samples", "discardEPB", "seiPtr", "payloadType", "payloadSize", "leftOver", "payPtr", "providerCode", "userStructure", "userDataType", "totalCCs", "enabled", "totalBytes", "byteArray", "uuidStrArray", "_b", "userDataBytes", "EPBPositions", "newLength", "newData", "sourceIndex", "parseEmsg", "schemeIdUri", "timeScale", "presentationTimeDelta", "presentationTime", "eventDuration", "leftPresentationTime", "rightPresentationTime", "__pow", "payload", "mp4Box", "mp4pssh", "keyids", "kids", "kidCount", "dataSize", "parseMultiPssh", "view", "pssh", "parsePssh", "dataSizeOrKidCount", "keyUriToKeyIdMap", "LevelKey", "_LevelKey", "method", "formatversions", "iv", "sn", "createInitializationVector", "PlayReadyKeySystemUUID", "padded", "segmentNumber", "uint8View", "VARIABLE_REPLACEMENT_REGEX", "hasVariableReferences", "substituteVariablesInAttributes", "parsed", "attributeNames", "substituteVariables", "variableList", "variableReference", "variableName", "variableValue", "addVariableDefinition", "parentUrl", "NAME", "VALUE", "searchParams", "error", "importVariableDefinition", "sourceVariableList", "IMPORT", "getMediaSource", "preferManagedMediaSource", "isManagedMediaSource", "sampleEntryCodesISO", "isCodecType", "typeCodes", "areCodecsMediaSourceSupported", "codecs", "isCodecMediaSourceSupported", "_MediaSource$isTypeSu", "MediaSource", "mimeTypeForCodec", "videoCodecPreferenceValue", "videoCodec", "codecsSetSelectionPreferenceValue", "codecSet", "preferenceValue", "CODEC_COMPATIBLE_NAMES", "getCodecCompatibleNameLower", "lowerCaseCodec", "codecsToCheck", "AUDIO_CODEC_REGEXP", "getCodecCompatibleName", "pickMostCompleteCodecName", "parsedCodec", "levelCodec", "convertAVC1ToAVCOTI", "avcdata", "MASTER_PLAYLIST_REGEX", "MASTER_PLAYLIST_MEDIA_REGEX", "IS_MEDIA_PLAYLIST", "LEVEL_PLAYLIST_REGEX_FAST", "LEVEL_PLAYLIST_REGEX_SLOW", "M3U8Parser", "_M3U8Parser", "groups", "mediaGroupId", "group", "string", "hasVariableRefs", "levelsWithKnownCodecs", "_level$unknownCodecs", "resolution", "setCodecs", "tag", "attributes", "sessionAttrs", "dataId", "sessionKey", "parseKey", "variableAttributes", "contentSteeringAttributes", "parseStartTimeOffset", "stripUnknownCodecLevels", "levels", "groupsByType", "medias", "lang", "assocLang", "channels", "characteristics", "instreamId", "media", "groupCodec", "assignCodec", "levelUrlId", "multivariantVariableList", "fragments", "currentInitSegment", "currentSN", "currentPart", "totalduration", "discontinuityCounter", "prevFrag", "firstPdtIndex", "createNextFrag", "nextByteRange", "title", "setFragLevelKeys", "assignProgramDateTime", "value1", "value2", "skipAttrs", "skippedSegments", "_i2", "recentlyRemovedDateranges", "dateRange", "levelKey", "mapAttrs", "init", "setInitSegment", "serverControlAttrs", "partInfAttrs", "partList", "previousFragmentPart", "part", "preloadHintAttrs", "renditionReportAttrs", "fragmentLength", "firstFragment", "lastFragment", "lastSn", "backfillProgramDateTimes", "keyTagAttributes", "_keyAttrs$METHOD", "_keyAttrs$KEYFORMAT", "keyAttrs", "decryptmethod", "decrypturi", "decryptiv", "decryptkeyformatversions", "decryptkeyformat", "resolvedUri", "keyFormatVersions", "startAttributes", "startTimeOffset", "codecsAttributeValue", "filtered", "groupItem", "codecProperty", "codecValue", "fragPrev", "encryptedFragments", "PlaylistContextType", "PlaylistLevelType", "mapContextToLevelType", "context", "getResponseUrl", "response", "PlaylistLoader", "hls", "startPosition", "PLoader", "Loader", "InternalLoader", "loader", "contextType", "event", "pathwayId", "deliveryDirectives", "groupId", "_context$deliveryDire", "loaderContext", "loadPolicy", "levelDetails", "partTarget", "targetDuration", "maxLowLatencyPlaylistRefresh", "legacyRetryCompatibility", "loaderConfig", "loaderCallbacks", "stats", "context2", "networkDetails", "loader2", "parsedResult", "contentSteering", "sessionData", "sessionKeys", "audioTracks", "subtitles", "captions", "audioTrack", "levelId", "levelType", "singleLevel", "timeout", "message", "details", "fatal", "errorData", "parent", "levelIndex", "_error", "sendAddTrackEvent", "videoEl", "addCueToTrack", "cue", "mode", "err", "textTrackCue", "err2", "clearCurrentCues", "removeCuesInRange", "predicate", "cues", "getCuesInRange", "getFirstCueIndexAfterTime", "time", "left", "right", "mid", "cuesFound", "firstCueInRange", "filterSubtitleTracks", "textTrackList", "tracks", "MetadataSchema", "MIN_CUE_DURATION", "getCueClass", "createCueWithDataFields", "Cue", "endTime", "MAX_CUE_ENDTIME", "dateRangeDateToTimelineSeconds", "date", "hexToArrayBuffer", "ID3TrackController", "textTracks", "textTrack", "enableEmsgMetadataCues", "enableID3MetadataCues", "_this$id3Track", "startOffset", "endOffset", "id3Track", "dateRangeCuesAppended", "dateRanges", "ids", "idsToRemove", "dateTimeOffset", "appendedDateRangeCues", "durationKnown", "nextDateRangeWithSameClass", "candidateDateRange", "id2", "otherDateRange", "_cue", "LatencyController", "holdBack", "partHoldBack", "targetduration", "liveSyncDuration", "liveSyncDurationCount", "lowLatencyMode", "userConfig", "targetLatency", "maxLiveSyncOnStallIncrease", "liveEdge", "edge", "syncPosition", "min", "max", "maxLevelUpdateAge", "bufferedRanges", "_this$levelDetails", "latency", "maxLiveSyncPlaybackRate", "distanceFromTarget", "liveMinLatencyDuration", "rate", "HdcpLevels", "isHdcpLevel", "VideoRangeValues", "isVideoRange", "HlsSkip", "getSkipValue", "canSkipUntil", "canSkipDateRanges", "age", "playlistRecentEnough", "HlsUrlParameters", "msn", "skip", "Level", "hasGroup", "audioGroups", "subtitleGroups", "_this$audioGroups", "_this$subtitleGroups", "updateFromToPTS", "fragFrom", "fragTo", "fragToPTS", "updateFragPTSDTS", "maxStartPTS", "minEndPTS", "fragStartPts", "fragEndPts", "deltaPTS", "drift", "fragIdx", "mergeDetails", "oldDetails", "newDetails", "oldFragments", "oldInit", "PTSFrag", "mapFragmentIntersection", "oldFrag", "newFrag", "newFragIndex", "newFragments2", "ccOffset", "newFragments", "_currentInitSegment", "mergeDateRanges", "mapPartIntersection", "oldPart", "newPart", "adjustSliding", "advancedDateTime", "oldDateRanges", "deltaDateRanges", "oldParts", "newParts", "intersectionFn", "delta", "newFrags", "oldFrags", "addSliding", "computeReloadInterval", "distanceToLiveEdgeMs", "reloadInterval", "lastSegmentDuration", "getFragmentWithSN", "fragCurrent", "fragment", "getPartWith", "partIndex", "_level$details", "findPart", "reassignFragmentLevelIndexes", "isTimeoutError", "getRetryConfig", "isTimeout", "getRetryDelay", "retryConfig", "retryCount", "backoffFactor", "getLoaderConfigWithoutReties", "loderConfig", "shouldRetry", "loaderResponse", "httpStatus", "retry", "retryForHttpStatus", "BinarySearch", "list", "comparisonFn", "minIndex", "maxIndex", "currentIndex", "currentElement", "comparisonResult", "findFragmentByPDT", "PDTValue", "maxFragLookUpTolerance", "startPDT", "endPDT", "seg", "pdtWithinToleranceTest", "findFragmentByPTS", "fragPrevious", "bufferEnd", "nextFragLookupTolerance", "fragNext", "bufferEdgeError", "fragmentWithinToleranceTest", "fragmentWithinFastStartSwitch", "foundFragment", "firstDuration", "candidate", "candidateLookupTolerance", "pdtBufferEnd", "findFragWithCC", "cc", "NetworkErrorAction", "ErrorActionFlags", "ErrorController", "_data$frag", "_data$level", "_data$context", "_data$context$levelDe", "restrictedHdcpLevel", "errorAction", "variantLevelIndex", "fragLoadPolicy", "keyLoadPolicy", "fragmentErrors", "acc", "level2", "_data$frag2", "_data$context2", "errorDetails", "nextLevel", "loadLevel", "minAutoLevel", "maxAutoLevel", "fragErrorType", "findAudioCodecAlternate", "audioCodec", "findVideoCodecAlternate", "playlistErrorType", "playlistErrorGroupId", "_level$audioGroups", "_level$subtitleGroups", "levelCandidate", "fragCandidate", "_data$errorAction", "hdcpLevel", "nextAutoLevel", "BasePlaylistController", "logPrefix", "playlistUri", "current", "renditionReports", "foundIndex", "currentGoal", "hlsUrlParameters", "playlist", "previousDetails", "now2", "elapsed", "lastPartSn", "endSn", "lastPartIndex", "hasParts", "lastPart", "nextSnStartIndex", "lastAdvanced", "cdnAge", "segments", "bufferInfo", "position", "estimatedTimeUntilUpdate", "previousDeliveryDirectives", "errorEvent", "action", "_errorEvent$context", "delay2", "EWMA", "halfLife", "estimate", "weight", "adjAlpha", "zeroFactor", "EwmaBandWidthEstimator", "slow", "fast", "defaultEstimate", "defaultTTFB", "slow_", "fast_", "ttfb_", "durationMs", "numBytes", "numBits", "durationS", "bandwidthInBps", "ttfb", "seconds", "SUPPORTED_INFO_DEFAULT", "SUPPORTED_INFO_CACHE", "requiresMediaCapabilitiesDecodingInfo", "audioTracksByGroup", "currentVideoRange", "currentFrameRate", "currentBw", "audioPreference", "audioCodecPreference", "channelsPreference", "maxChannels", "audioChannels", "audioTrackGroup", "getMediaDecodingInfoPromise", "mediaCapabilities", "baseVideoConfiguration", "videoRange", "configurations", "audioGroupId", "_audioTracksByGroup$g", "channelsNumber", "configuration", "decodingInfoKey", "getMediaDecodingInfoKey", "decodingInfoResults", "audio", "video", "mediaConfig", "isHdrSupported", "mediaQueryList", "badQuery", "getVideoSelectionOptions", "videoPreference", "preferHDR", "allowedVideoRanges", "range", "getStartCodecTier", "codecTiers", "codecSets", "preferStereo", "hasStereo", "hasCurrentVideoRange", "minHeight", "minFramerate", "minBitrate", "selectedScore", "videoRanges", "tier", "matchingVideoRanges", "maxHeight", "maxFramerate", "selected", "candidateTier", "logStartCodecCandidateIgnored", "codeSet", "reason", "getAudioTracksByGroup", "allAudioTracks", "trackGroup", "channelsKey", "getCodecTiers", "tiers", "lesserWidthOrHeight", "audioGroup", "findMatchingOption", "option", "matchPredicate", "matchesOption", "isDefault", "forced", "characteristicsMatch", "characteristicsA", "characteristicsB", "arrA", "arrB", "el", "audioMatchPredicate", "findClosestLevelWithAudioGroup", "searchIndex", "currentLevel", "renditions", "variantMap", "currentVideoCodec", "matchingVideo", "searchDownAndUpList", "arr", "AbrController", "_hls", "autoLevelEnabled", "timeLoading", "ttfbEstimate", "playbackRate", "bufferStarvationDelay", "loadedFirstByte", "bwEstimate", "expectedLen", "timeStreaming", "loadRate", "fragLoadedDelay", "bwe", "fragLevelNextLoadedDelay", "nextLoadLevel", "levelNextBitrate", "nextLoadLevelBitrate", "abrEwmaDefaultEstimate", "_data$part", "timeToFirstByteSec", "bandwidth", "fragSizeBits", "isSwitch", "fragLoadSec", "playlistLoadSec", "loading", "timeLoadingMs", "loadedBytes", "loadedDuration", "fragBufferedData", "processingMs", "maxStartDelay", "abrAutoLevel", "firstLevel", "clamped", "forcedAutoLevel", "useEstimate", "loadedFirstFrag", "nextABRAutoLevel", "partCurrent", "currentFragDuration", "avgbw", "bwFactor", "bwUpFactor", "_bestLevel", "maxStarvationDelay", "bitrateTestDelay", "bestLevel", "minLevel", "autoLevel", "maxFetchDuration", "lastLoadedFragLevel", "selectionBaseLevel", "live", "firstSelection", "currentCodecSet", "startTier", "ttfbEstimateSec", "levelsSkipped", "_levelInfo$supportedR", "levelInfo", "upSwitch", "decodingInfo", "levels2", "avgDuration", "adjustedbw", "bitrate", "fetchDuration", "TaskLoop", "millis", "FragmentState", "FragmentTracker", "activeParts", "activePart", "appendedPTS", "keys", "fragmentEntity", "elementaryStream", "timeRange", "playlistType", "appendedPart", "appendedPartSn", "esData", "isNotBuffered", "timeRanges", "fragKey", "getFragmentKey", "isFragHint", "streamInfo", "isPartial", "snToKeep", "force", "buffered", "bestFragment", "timePadding", "bestOverlap", "bufferPadding", "lastFragmentEntity", "loaded", "_this$activePartLists", "withGapOnly", "unbufferedOnly", "snToRemove", "_fragmentEntity$range", "_fragmentEntity$range2", "_fragmentEntity$range3", "noopBuffered", "BufferHelper", "_BufferHelper", "pos", "maxHoleDuration", "vbuffered", "diff", "buffered2", "buf2len", "buf2end", "bufferLen", "bufferStartNext", "bufferStart", "ChunkMetadata", "getNewPerformanceTiming", "findFirstFragWithCC", "_fragments$i", "shouldAlignOnDiscontinuities", "lastFrag", "switchDetails", "findDiscontinuousReferenceFrag", "prevDetails", "curDetails", "prevFrags", "curFrags", "prevStartFrag", "adjustFragmentStart", "sliding", "adjustSlidingStart", "alignStream", "alignDiscontinuities", "alignMediaPlaylistByPDT", "referenceFrag", "refDetails", "refFragments", "refFrag", "targetCC", "refPDT", "targetPDT", "MIN_CHUNK_SIZE", "FragmentLoader", "onProgress", "LoadError", "FragmentILoader", "DefaultILoader", "resolve", "reject", "tags", "createGapLoadError", "createLoaderContext", "partLoadedData", "fragStats", "partStats", "partTotal", "estTotalParts", "estLoadedParts", "estRemainingBytes", "fragLoading", "partLoading", "segment", "_frag$decryptdata", "byteRangeStart", "byteRangeEnd", "fragmentLen", "AESCrypto", "subtle", "FastAESKey", "removePadding", "outputBytes", "paddingBytes", "AESDecryptor", "arrayBuffer", "newArray", "sBox", "invSBox", "subMix", "subMix0", "subMix1", "subMix2", "subMix3", "invSubMix", "invSubMix0", "invSubMix1", "invSubMix2", "invSubMix3", "d4", "xi2", "sx", "x22", "x42", "x8", "keyBuffer", "sameKey", "keySize", "ksRows", "ksRow", "invKsRow", "keySchedule", "invKeySchedule", "sbox", "rcon", "prev", "word", "inputArrayBuffer", "aesIV", "nRounds", "invSBOX", "initVector", "initVector0", "initVector1", "initVector2", "initVector3", "inputInt32", "outputInt32", "t0", "t1", "t3", "s0", "s1", "s2", "s3", "inputWords0", "inputWords1", "inputWords2", "inputWords3", "swapWord", "CHUNK_SIZE", "Decrypter", "removePKCS7Padding", "browserCrypto", "currentResult", "remainderData", "decryptResult", "currentIV", "currentChunk", "softwareDecrypter", "aesKey", "splitPoint", "msg", "TimeRanges", "log", "State", "BaseStreamController", "fragmentTracker", "keyLoader", "_this$levelLastLoaded", "mediaBuffer", "state", "currentTime", "tolerance", "fragStartOffset", "fragEndOffset", "pastFragment", "targetBufferTime", "progressCallback", "_this$mediaBuffer", "bufferedInfo", "minForwardBufferLength", "backtrackFragment", "flushScope", "decryptData", "decryptedData", "_frag$startPTS", "_frag$endPTS", "_this$fragCurrent", "_this$fragPrevious", "_this$levels", "fragLoadedEndData", "transmuxer", "partsLoaded", "complete", "fragLoaded", "chunkMeta", "keyLoadingPromise", "keyLoadedData", "_result", "dataOnProgress", "fragLoadedData", "fromPart", "initialPartList", "loadPart", "loadedPart", "nextPart", "noBacktracking", "_buffer", "fragDuration", "segmentFraction", "bufferable", "maxBufferHole", "bufferedFragAtPos", "levelBitrate", "maxBufLen", "threshold", "minLength", "reducedLength", "fragOrPart", "fragLen", "initialLiveManifestSize", "trackerState", "gapStart", "nextFragment", "nextbufferInfo", "contiguous", "independentAttrOmitted", "targetSN", "liveStart", "endSN", "fragmentHint", "loadingParts", "lookupTolerance", "curSNIdx", "fragState", "nextFrag", "liveSyncPosition", "withinSlidingWindow", "maxLatency", "slidingStart", "firstLevelLoad", "aligned", "alignedSlidingStart", "offsetInMultivariantPlaylist", "filterType", "_this$fragCurrent2", "gapTagEncountered", "flushBuffer", "bufferType", "bufferedTimeRanges", "_this$transmuxer", "parsedDuration", "nextState", "previousState", "ChunkCache", "chunk", "chunks", "dataLength", "concatUint8Arrays", "hasUMDWorker", "injectWorker", "blob", "objectURL", "loadWorker", "scriptURL", "dummyTrack", "inputTimeScale", "BaseAudioDemuxer", "trackDuration", "deaultTimestamp", "lastDataIndex", "initPTSFn", "partialData", "cachedData", "initPTS", "init90kHz", "getAudioConfig", "observer2", "adtsObjectType", "adtsExtensionSamplingIndex", "adtsChannelConfig", "userAgent", "manifestCodec", "adtsSamplingRates", "adtsSamplingIndex", "isHeaderPattern$1", "getHeaderLength", "getFullFrameLength", "canGetFrameLength", "isHeader$1", "canParse$1", "probe$1", "headerLength", "frameLength", "newOffset", "initTrackConfig", "getFrameDuration", "samplerate", "parseFrameHeader", "appendFrame$2", "frameIndex", "frameDuration", "stamp", "header", "unit", "_length", "missing", "_sample", "chromeVersion$1", "BitratesMap", "SamplingRateMap", "SamplesCoefficients", "BytesInSlot", "appendFrame$1", "parseHeader", "sample", "mpegVersion", "mpegLayer", "bitRateIndex", "sampleRateIndex", "paddingBit", "channelMode", "columnInBitrates", "bitRate", "sampleRate", "channelCount", "sampleCoefficient", "bytesInSlot", "samplesPerFrame", "isHeaderPattern", "isHeader", "canParse", "probe", "AACDemuxer", "emsgSchemePattern", "MP4Demuxer", "videoTrack", "captionTrack", "videoSamples", "segmentedData", "emsgs", "emsgInfo", "getAudioBSID", "bsid", "mask", "bits", "shift", "AC3Demuxer", "appendFrame", "samplingRateCode", "frameSizeCode", "skipCount", "lfeon", "bsmod", "BaseVideoParser", "dts", "debug", "_VideoSample", "VideoSample", "lastUnit", "units", "nbSamples", "lastSample", "ExpGolomb", "bytesAvailable", "workingBytes", "availableBytes", "count", "skipBytes", "valu", "leadingZeroCount", "clz", "lastScale", "nextScale", "deltaScale", "frameCropLeftOffset", "frameCropRightOffset", "frameCropTopOffset", "frameCropBottomOffset", "numRefFramesInPicOrderCntCycle", "scalingListCount", "readUByte", "readBits", "readUEG", "readBoolean", "skipBits", "skipEG", "skipUEG", "skipScalingList", "profileIdc", "chromaFormatIdc", "picOrderCntType", "picWidthInMbsMinus1", "picHeightInMapUnitsMinus1", "frameMbsOnlyFlag", "pixelRatio", "AvcVideoParser", "pes", "push2", "spsfound", "_VideoSample2", "iskey", "sliceType", "_track$pixelRatio", "_track$pixelRatio2", "sps", "codecarray", "codecstring", "lastState", "overflow", "unitType", "lastUnitStart", "lastUnitType", "SampleAesDecrypter", "encryptedData", "sampleIndex", "callback", "curUnit", "encryptedBuffer", "decryptedBuffer", "decodedData", "encryptedDataLen", "outputPos", "inputPos", "uint8DecryptedData", "unitIndex", "curUnits", "PACKET_LENGTH", "TSDemuxer", "_TSDemuxer", "typeSupported", "syncOffset", "scanwindow", "foundPat", "packetStart", "tsPackets", "parsePID", "_audioTrack", "_videoTrack", "_id3Track", "isSampleAes", "flush", "videoPid", "audioPid", "id3Pid", "audioData", "unknownPID", "pmtParsed", "pmtId", "tsPacketErrors", "stt", "pid", "atf", "parsePES", "parsePAT", "parsedPIDs", "parsePMT", "emitParsingError", "demuxResult", "sampleAes", "aacOverFlow", "frameMissingBytes", "sampleLength", "frameOverflowBytes", "recoverable", "id3Sample", "sectionLength", "tableEnd", "programInfoLength", "esInfoLength", "logEncryptedSamplesFoundInUnencryptedStream", "parsePos", "remaining", "descriptorLen", "levelRetry", "stream", "pesLen", "pesHdrLen", "pesPts", "pesDts", "pesFlags", "payloadStartOffset", "pesData", "dataLen", "MP3Demuxer", "AAC", "UINT32_MAX", "MP4", "_MP4", "videoHdlr", "audioHdlr", "dref", "stco", "majorBrand", "avc1Brand", "minorVersion", "upperWordDuration", "lowerWordDuration", "sequenceNumber", "boxes", "pps", "avcc", "width", "height", "hSpacing", "vSpacing", "configlen", "sampleDependencyTable", "upperWordBaseMediaDecodeTime", "lowerWordBaseMediaDecodeTime", "arraylen", "cts", "movie", "MPEG_TS_CLOCK_FREQ_HZ", "toTimescaleFromBase", "destScale", "srcBase", "round", "toTimescaleFromScale", "srcScale", "toMsFromMpegTsClock", "toMpegTsClockFromTimescale", "MAX_SILENT_FRAME_DURATION", "AAC_SAMPLES_PER_FRAME", "MPEG_AUDIO_SAMPLE_PER_FRAME", "AC3_SAMPLES_PER_FRAME", "chromeVersion", "safariWebkitVersion", "MP4Remuxer", "vendor", "defaultTimeStamp", "rolloverDetected", "firstPts", "minPTS", "normalizePts", "accurateTimeOffset", "id3", "independent", "audioTimeOffset", "videoTimeOffset", "hasAudio", "hasVideo", "enoughAudioSamples", "enoughVideoSamples", "_videoTrack$pixelRati", "_config$pixelRatio", "_videoTrack$pixelRati2", "_config$pixelRatio2", "isVideoContiguous", "firstKeyFrameIndex", "firstKeyFramePTS", "findKeyframeIndex", "audiovideoTimestampDelta", "audioTrackLength", "flushTextTrackMetadataCueSamples", "flushTextTrackUserdataCueSamples", "audioSamples", "_initPTS", "computePTSDTS", "container", "initDTS", "inputSamples", "outputSamples", "nextAvcDts", "mp4SampleDuration", "firstDTS", "lastDTS", "maxPTS", "sortSamples", "initTime", "deltadts", "deltapts", "inputDuration", "averageSampleDuration", "foundHole", "foundOverlap", "firstPTS", "nbNalu", "naluLen", "dtsStep", "nbUnits", "sampleLen", "mdatSize", "mdat", "stretchedLastFrame", "minDtsDelta", "minPtsDelta", "maxDtsDelta", "maxPtsDelta", "VideoSampleUnits", "mp4SampleLength", "unitData", "unitDataLen", "ptsDelta", "lastFrameDuration", "gapTolerance", "deltaToFrameEnd", "compositionTimeOffset", "Mp4Sample", "nextDts", "nextPts", "mp4timeScale", "scaleFactor", "inputSampleDuration", "rawMPEG", "alignedWithVideo", "nextAudioPts", "timeOffsetMpegTS", "maxAudioFramesDrift", "newStamp", "fillFrame", "lastPTS", "_nbSamples", "audioSample", "prevSample", "unitLen", "silentFrame", "reference", "isKeyframe", "PassThroughRemuxer", "defaultInitPTS", "getParsedTrackCodec", "_initData", "_initData2", "lastEndTime", "decodeTime", "isInvalidInitPts", "minDuration", "now", "muxConfig", "Transmuxer", "transmuxConfig", "uintData", "currentTransmuxState", "discontinuity", "trackSwitch", "initSegmentChange", "defaultInitPts", "initSegmentData", "getEncryptionType", "decrypter", "emptyResult", "resetMuxers", "currentState", "decryptionPromise", "transmuxResults", "demuxer", "remuxer", "demuxResultOrPromise", "isPromise", "remuxResult", "mux", "_muxConfig$i$demux", "Remuxer", "Demuxer", "encryptionType", "TransmuxConfig", "TransmuxState", "eventemitter3", "has", "prefix", "EE", "fn", "once", "addListener", "emitter", "listener", "evt", "clearEvent", "EventEmitter2", "names", "events", "handlers", "ee6", "listeners", "a1", "a3", "a4", "a5", "args", "eventemitter3Exports", "EventEmitter", "TransmuxerInterface", "onTransmuxComplete", "onFlush", "forwardMessage", "ev", "m2tsTypeSupported", "worker", "_frag$initSegment", "_lastFrag$initSegment", "snDiff", "partDiff", "progressive", "transmuxResult", "_this$workerContext", "TICK_INTERVAL$2", "AudioStreamController", "lastCurrentTime", "_levels$trackId", "_this$media", "retryDate", "waitingData", "cache", "trackDetails", "mainBufferInfo", "loadPosition", "atGap", "atBufferSyncLimit", "mainFrag", "mainBufferLength", "maxConfigBuffer", "mediaPlaylist", "altAudio", "_track$details", "mainDetails", "_id3$samples", "mapFragment", "emittedID3", "emittedText", "variantAudioCodecs", "_track$details2", "switchingTrack", "subtitleOptionsIdentical", "trackList1", "trackList2", "mediaAttributesIdentical", "attrs1", "attrs2", "customAttributes", "stableRenditionId", "subtitleAttribute", "subtitleTrackMatchesTextTrack", "subtitleTrack", "AudioTrackController", "trackInActiveGroup", "currentGroups", "currentTrack", "groupIndex", "allIndex", "audioTracksUpdated", "selectedTrackId", "_this$groupIds", "newId", "audioOption", "switchIndex", "withoutCodecAndChannelsMatch", "lastTrack", "trackLoaded", "TICK_INTERVAL$1", "SubtitleStreamController", "success", "fragStart", "fragEnd", "endOffsetSubtitles", "subtitleTracks", "currentTrackId", "mainSlidingStartFragment", "foundFrag", "BufferableInstance", "timeranges", "getRange", "SubtitleTrackController", "subtitlePreference", "subtitleTracksUpdated", "selectDefault", "subtitleOption", "allSubtitleTracks", "nextTrack", "BufferOperationQueue", "sourceBufferReference", "operation", "pending", "queue", "execute", "promise", "sb", "VIDEO_CODEC_PROFILE_REPLACE", "BufferController", "mediaSource", "mediaSrc", "_objectUrl", "codecEvents", "_ms$constructor", "ms", "objectUrl", "MMS", "removeSourceChildren", "addSource", "_this$mediaSource", "sourceBufferCount", "trackNames", "trackName", "_trackCodec", "metadata", "currentCodecFull", "currentCodec", "trackCodec", "nextCodec", "mimeType", "bufferCodecEventsExpected", "operationQueue", "eventData", "chunkStats", "bufferAppendingStart", "fragBuffering", "partBuffering", "checkTimestampOffset", "sourceBuffer", "type2", "event2", "appendErrorCount", "flushOperation", "buffersAppendedTo", "onUnblocked", "backBufferLength", "maxBackBufferLength", "targetBackBufferPosition", "frontBufferLength", "maxFrontBufferLength", "targetFrontBufferPosition", "numBufferedRanges", "levelDuration", "mediaDuration", "msDuration", "pendingTracks", "pendingTracksCount", "buffers", "_track$levelCodec", "sbName", "removedRanges", "_this$media$querySele", "_this$mediaSource2", "_this$mediaSource3", "removeStart", "removeEnd", "blockingOperations", "node", "sourceChildren", "specialCea608CharsCodes", "getCharForByte", "NR_ROWS", "NR_COLS", "rowsLowCh1", "rowsHighCh1", "rowsLowCh2", "rowsHighCh2", "backgroundColors", "CaptionsLogger", "severity", "numArrayToHexArray", "numArray", "hexArray", "PenState", "styles", "attribs", "style", "other", "newPenState", "StyledUnicodeChar", "uchar", "newChar", "Row", "logger2", "empty", "absPos", "relPos", "newPos", "char", "startPos", "chars", "CaptionScreen", "equal", "pacData", "newRow", "topRowIndex", "lastOutputScreen", "prevLineTime", "row", "indent", "prevPos", "bkgData", "nrRows", "topRow", "asOneRow", "displayText", "rowNr", "rowText", "Cea608Channel", "channelNumber", "outputFilter", "newHandler", "newMode", "screen", "tmp", "nrCols", "secondByte", "colorIndex", "colors", "dispatch", "Cea608Parser", "field", "out1", "out2", "createCmdHistory", "channel", "byteList", "cmdFound", "charsFound", "cmdHistory", "hasCmdRepeated", "setLastCmd", "currChNr", "cond1", "cond2", "chNr", "case1", "case2", "pacIndex", "channelNr", "charCodes", "charCode1", "oneCode", "OutputFilter", "timelineController", "VTTCue2", "AllowedDirections", "AllowedAlignments", "isAllowedValue", "allowed", "lcValue", "findDirectionSetting", "findAlignSetting", "extend", "rest", "cobj", "VTTCue3", "baseObj", "_id2", "_pauseOnExit", "_startTime2", "_endTime", "_text", "_region", "_vertical", "_snapToLines", "_line", "_lineAlign", "_position", "_positionAlign", "_size", "_align", "setting", "StringDecoder", "options", "parseTimeStamp", "computeSeconds", "m4", "Settings", "dflt", "defaultKey", "percent", "parseOptions", "keyValueDelim", "groupDelim", "kv", "defaults", "center", "parseCue", "regionList", "oInput", "consumeTimeStamp", "ts", "consumeCueSettings", "input2", "cue2", "settings", "vals", "line", "skipWhitespace", "fixLineBreaks", "VTTParser", "_this", "collectNextLine", "parseHeader2", "alreadyCollectedLine", "hasSubstring", "LINEBREAKS", "startsWith", "inputString", "searchString", "cueString2millis", "timeString", "secs", "mins", "hours", "hash", "_hash", "generateCueId", "calculateOffset", "vttCCs", "currCC", "prevCC", "_prevCC", "parseWebVTT", "vttByteArray", "callBack", "errorCallBack", "parser", "vttLines", "cueTime", "timestampMapMPEGTS", "timestampMapLOCAL", "parsingError", "inHeader", "cueOffset", "webVttMpegTsMapOffset", "IMSC1_CODEC", "HMSF_REGEX", "TIME_UNIT_REGEX", "textAlignToLineAlign", "parseIMSC1", "ttmlList", "syncTime", "ttml", "parseTTML", "tt4", "defaultRateInfo", "rateInfo", "trim", "styleElements", "collectionToDictionary", "getElementCollection", "regionElements", "cueElements", "cueElement", "cueText", "getTextContent", "parseTtmlTime", "timestampParsingError", "region", "getTtmlStyles", "textAlign", "lineAlign", "fromElement", "parentName", "childName", "elementsWithId", "dict", "element", "_node$childNodes", "ttsNs", "regionStyle", "styleAttributes", "regionStyleName", "getAttributeNS", "ns", "timeAttributeValue", "parseHoursMinutesSecondsFrames", "parseTimeUnits", "TimelineController", "newVTTCCs", "channel1", "channel2", "channel3", "channel4", "cueRanges", "merged", "cueRange", "overlap", "intersection", "unparsedVttFrags", "frag2", "label", "language", "canReuseVttTextTrack", "captionsProperties", "captionsTracks", "languageCode", "existingTrack", "trackProperties", "kind", "hasIMSC1", "inUseTracks", "inUseTrack", "textTrackKind", "captionsOrSubtitlesFromCharacteristics", "unusedTextTracks", "tracksList", "captionsTrack", "instreamIdMatch", "_data$part$index", "cea608Parser1", "cea608Parser2", "decrypted", "trackPlaylistMedia", "maxAvCC", "payloadWebVTT", "missingInitPTS", "fragLevel", "ccBytes", "ccdatas", "actualCCBytes", "tmpByte", "ccbyte1", "ccbyte2", "ccType", "manifestTrack", "x1", "y1", "y22", "CapLevelController", "_CapLevelController", "streamController", "maxLevel", "capLevelIndex", "validLevels", "boundsRect", "clientRect", "restrictedLevel", "atGreatestBandwidth", "curLevel", "maxLevelIndex", "squareSize", "FPSController", "decodedFrames", "droppedFrames", "currentPeriod", "currentDropped", "currentDecoded", "droppedFPS", "videoPlaybackQuality", "LOGGER_PREFIX", "EMEController", "_EMEController", "initDataType", "logMessage", "keySystems", "keySystemFormat", "keySystemDomain", "json", "psshResults", "psshInfos", "psshInfo", "keyIdHex", "keyIdToKeySessionPromise", "mediaKeySessions", "keySessionContextPromise", "keyContext", "oldKeyIdHex", "keySystem2", "mediaKeys", "_keySystemToKeySystem", "keySessionContext", "keySystemConfiguration", "uniqueCodec", "attempt", "EMEKeyError", "supportedConfigurations", "requestMediaKeySystemAccessFunc", "errMessage", "mediaKeySystemConfigs", "keySystemAccessPromises", "keySystemAccess", "_keySystemAccessPromises", "mediaKeySystemAccess", "certificateRequest", "certificate", "mediaKeysSession", "mediaKeySessionContext", "_mediaKeySessionConte", "keySession", "keySystemsInConfig", "keyDetails", "setMediaKeysPromise", "_this$config$drmSyste", "_this$config$drmSyste2", "generateRequestFilter", "mappedInitData", "_this$hls", "licenseStatus", "onmessage", "messageType", "onkeystatuseschange", "keyStatus", "keyUsablePromise", "_context$mediaKeysSes", "status2", "certLoader", "contex", "cert", "keyMessage", "xhr", "licenseChallenge", "xmlString", "keyMessageXml", "headers", "_header$querySelector", "_header$querySelector2", "challengeElement", "challengeText", "keysListItem", "licenseXhrSetup", "licenseXhrSetupResult", "licenseResponseCallback", "maxNumRetry", "attemptsLeft", "xhr2", "licenseChallenge2", "mediaKeysList", "keySessionCount", "formats", "licenseXhr", "CmObjectType", "CmObjectType2", "CmStreamingFormat", "CmStreamingFormat2", "CmcdHeaderField", "CmcdHeaderField2", "CmcdHeaderMap", "SfItem", "_SfItem", "SfToken", "DICT", "format", "throwError", "src", "cause", "BARE_ITEM", "BOOLEAN", "BYTES", "DECIMAL", "INTEGER", "isInvalidInt", "STRING_REGEX", "TOKEN", "KEY", "serializeError", "serializeBoolean", "base64encode", "binary", "serializeByteSequence", "serializeInteger", "serializeDate", "roundToEven", "precision", "decimalShift", "flooredValue", "serializeDecimal", "roundedValue", "STRING", "serializeString", "symbolToStr", "symbol", "serializeToken", "token", "serializeBareItem", "serializeKey", "serializeParams", "serializeItem", "serializeInnerList", "serializeDict", "entries", "optionalWhiteSpace", "item", "output", "encodeSfDict", "isTokenField", "isValid", "urlToRelativePath", "base", "toPath", "fromPath", "uuid", "uuid2", "dt5", "toRounded", "toUrlSafe", "toHundred", "CmcdFormatters", "processCmcd", "formatters", "filter", "formatter", "encodeCmcd", "cmcd", "toCmcdHeaders", "headerMap", "shards", "entry", "_headerMap$find", "_acc$field", "entry2", "appendCmcdHeaders", "CMCD_PARAM", "toCmcdQuery", "REGEX", "appendCmcdQuery", "query", "separator", "CMCDController", "ot4", "_data$tracks$audio", "_data$tracks$video", "isVideo", "includeKeys", "pLoader", "apply", "Ctor", "callbacks", "fLoader", "PATHWAY_PENALTY_DURATION_MS", "ContentSteeringController", "ttl", "levelToRemove", "pathwayPriority", "errorPathway", "pathways", "pathwayLevels", "penalizedPathways", "selectedIndex", "selectedLevel", "levelAfterChange", "defaultPathway", "pathwayClones", "audioGroupCloneMap", "subtitleGroupCloneMap", "pathwayClone", "cloneId", "baseId", "uriReplacement", "clonedVariants", "baseLevel", "clonedAudioGroupId", "clonedSubtitleGroupId", "performUriReplacement", "clonedLevel", "cloneRenditionGroups", "throughput", "steeringData", "reloadUri", "loadedSteeringData", "retryAfter", "ttlMs", "groupCloneMap", "clonedTracks", "clonedTrack", "stableId", "perOptionKey", "host", "perOptionUris", "perVariantUri", "AGE_HEADER_LINE_REGEX", "XhrLoader", "_this$callbacks", "xhrSetup", "maxTimeToFirstByteMs", "maxLoadTimeMs", "readyState", "useResponseText", "_response", "_this$context", "ageHeader", "fetchSupported", "BYTERANGE", "FetchLoader", "getRequest", "initParams", "getRequestParameters", "isArrayBuffer", "LENGTH", "first", "statusText", "FetchError", "getContentLength", "responseData", "total", "code", "highWaterMark", "chunkCache", "reader", "pump", "signal", "getByteRangeLength", "byteRangeHeader", "contentRange", "byteRangeLength", "contentLength", "WHITESPACE_CHAR", "Cues", "captionScreen", "indenting", "_track$cues", "cueA", "cueB", "defaultLoadPolicy", "hlsDefaultConfig", "timelineConfig", "mergeConfig", "defaultConfig", "defaultsCopy", "deepCpy", "deprecatedSettingTypes", "deprecatedSettings", "policyName", "policyNotSet", "report", "deprecatedSetting", "enableStreamingMode", "currentLoader", "chromeOrFirefox", "LevelController", "contentSteeringController", "redundantSet", "generatePathwaySet", "resolutionFound", "videoCodecFound", "audioCodecFound", "levelParsed", "_audioCodec", "_videoCodec", "unknownCodecs", "CODECS", "FRAMERATE", "HDCP", "PATHWAY", "RESOLUTION", "VIDEO_RANGE", "pathwayCount", "filteredLevels", "assignTrackIdsByGroup", "unsortedLevels", "valueA", "valueB", "firstLevelInPlaylist", "_this$hls$userConfig", "firstLevelBitrate", "bandwidthEstimate", "startingBwEstimate", "audioOnly", "edata", "newLevel", "lastLevelIndex", "lastLevel", "lastPathwayId", "levelSwitchingData", "configStartLevel", "_data$deliveryDirecti2", "_data$deliveryDirecti", "currentLevelIndex", "_this$currentLevel", "autoLevelCapping", "maxHdcpLevel", "KeyLoader", "_loader$context", "keyInfo", "loadingFrag", "_keyInfo", "_keyInfo2", "_keyInfo$mediaKeySess", "keyInfo2", "getSourceBuffer", "isMSESupported", "isSupported", "codecsForVideoContainer", "codecForAudioContainer", "changeTypeSupported", "_sourceBuffer$prototy", "STALL_MINIMUM_DURATION_MS", "MAX_START_GAP_JUMP", "SKIP_BUFFER_HOLE_STEP_SECONDS", "SKIP_BUFFER_RANGE_START", "GapController", "activeFrag", "stalled", "seeking", "seeked", "beginSeek", "_stalledDuration", "nextStart", "hasEnoughBuffer", "noBufferGap", "startJump", "maxStartGapJump", "partialOrGap", "tnow", "stalledDuration", "bufferedWithHoles", "stalledDurationMs", "stallReported", "bufferStarved", "waiting", "gapLength", "startGap", "startFrag", "startProvisioned", "moreToLoad", "provisioned", "targetTime", "nudgeRetry", "TICK_INTERVAL", "StreamController", "startLevel", "levelLastLoaded", "lastDetails", "_this$backtrackFragme", "backtrackFrag", "fetchdelay", "fragPlayingCurrent", "nextLevelId", "fragLastKbps", "bufferedFrag", "nextBufferedFrag", "maxStart", "startPts", "aac", "heaac", "_curLevel$details", "newLevelId", "fromAltAudio", "videoBuffer", "mediaTrack", "alternate", "gapController", "isFirstFragment", "isFirstInDiscontinuity", "audiovideo", "audioMetadata", "fragPlaying", "fragCurrentLevel", "epocMs", "Hls", "_Hls", "ConfigAbrController", "ConfigBufferController", "ConfigCapLevelController", "ConfigErrorController", "ConfigFpsController", "errorController", "abrController", "bufferController", "capLevelController", "fpsController", "playListLoader", "id3TrackController", "ConfigContentSteeringController", "levelController", "networkControllers", "coreComponents", "AudioStreamControllerClass", "SubtitleStreamControllerClass", "onErrorOut", "ControllerClass", "components", "controllerInstance", "eventObject", "component", "loadedSource", "loadingSource", "controller", "shouldStartCapping", "newCapLevelToPlayerSize", "bwEstimator", "minAutoBitrate", "_this$audioTrackContr", "_this$subtitleTrackCo", "audioTrackController", "audioTrackId", "subtitleTrackController", "subtitleTrackId", "T", "v", "v2", "x", "we", "N", "w", "g", "_", "h", "dt2", "b2", "D", "lt2", "pt2", "y", "Q", "Z2", "C2", "De2", "O2", "V", "Ie2", "ee2", "te2", "U2", "ne2", "re", "F2", "ae", "W", "Re", "E", "oe2", "__async", "K2", "se2", "ie2", "_0", "_1", "I2", "He", "ce2", "ue2", "B2", "de2", "R", "le2", "Ne2", "pe", "fe2", "_e2", "Oe2", "Ve", "Ue", "Fe", "$2", "_22", "M2", "We2", "Ke2", "A3", "ye2", "me2", "Be2", "$e2", "k", "ge", "Me2", "ve2", "qe2", "Xt2", "Ye2", "Gt2", "ze2", "be", "Xe2", "Ee2", "jt2", "Te", "Jt2", "q", "Qt2", "X2", "Ge", "xe2", "je2", "Le2", "Je2", "Zt", "Qe2", "Ze", "ot2", "st2", "Ce2", "Y", "he2", "ke2", "et", "tt2", "__spreadValues", "G4", "S4", "J4", "H2", "Pe2", "__spreadProps", "nt2", "rt", "at2", "MediaUIEvents", "MediaStateReceiverAttributes", "MediaUIProps", "MediaUIPropsEntries", "MediaUIAttributes", "dictObj", "propName", "MediaStateChangeEvents", "StateChangeEventToAttributeMap", "mapObj", "eventType", "AttributeToStateChangeEventMap", "evtType", "TextTrackKinds", "TextTrackModes", "PointerTypes", "AvailabilityStates", "StreamTypes", "WebkitPresentationModes", "nouns", "verbs", "seekOffset", "labels_default", "stringifyRenditionList", "stringifyRendition", "parseRenditionList", "parseRendition", "rendition", "stringifyAudioTrackList", "stringifyAudioTrack", "parseAudioTrackList", "parseAudioTrack", "camelCase", "$0", "$1", "isValidNumber", "isNumericString", "delay", "UnitLabels", "toTimeUnitPhrase", "timeUnitValue", "unitLabel", "formatAsTimePhrase", "positiveSeconds", "negative", "secondsDateTime", "formatTime", "guide", "gm", "gh", "emptyTimeRanges", "unsignedIdx", "EventTarget2", "Node", "ResizeObserver", "documentShim", "globalThisShim", "isServer", "isShimmed", "GlobalThis", "Document2", "callbacksMap", "getCallbacks", "observer", "observeResize", "unobserveResize", "getMediaController", "getAttributeMediaController", "closestComposedNode", "MEDIA_CONTROLLER", "mediaControllerId", "getDocumentOrShadowRoot", "updateIconText", "svg", "selector", "getAllSlotted", "slotSelector", "slot", "getSlotted", "containsComposedNode", "rootNode", "childNode", "closest", "getActiveElement", "activeEl", "isElementVisible", "depth", "getPointProgressOnLine", "p1", "p22", "distance", "toStart", "toEnd", "getOrInsertCSSRule", "styleParent", "selectorText", "cssRule", "getCSSRule", "st4", "insertCSSRule", "cssRules", "rule", "getNumericAttr", "attrVal", "setNumericAttr", "nextNumericValue", "getBooleanAttr", "setBooleanAttr", "getStringAttr", "setStringAttr", "nextValue", "__accessCheck", "member", "__privateGet", "getter", "__privateAdd", "__privateSet", "setter", "_mediaController", "template", "MediaGestureReceiver", "shadow", "buttonHTML", "slotTemplate20", "oldValue", "newValue", "_c", "_d", "_e5", "getMediaControllerEl", "composedTarget", "clientX", "clientY", "top", "pointerType", "eventName", "controlEl", "__defProp", "__defNormalProp", "__publicField", "__accessCheck2", "__privateGet2", "__privateAdd2", "__privateSet2", "__privateMethod", "_pointerDownTimeStamp", "_currentMedia", "_handlePointerMove", "handlePointerMove_fn", "_handlePointerUp", "handlePointerUp_fn", "_setInactive", "setInactive_fn", "_setActive", "setActive_fn", "_scheduleInactive", "scheduleInactive_fn", "Attributes", "template2", "MEDIA_UI_ATTRIBUTE_NAMES", "defaultBreakpoints", "resizeCallback", "setBreakpoints", "breakpoints", "ranges", "createBreakpointMap", "activeBreakpoints", "getBreakpoints", "changed", "pairs", "pair", "MediaContainer", "mutationCallback", "mutationsList", "mutation", "previousSibling", "wasFirst", "pendingResizeCb", "chainedSlot", "controlsVisible", "__accessCheck3", "__privateGet3", "__privateAdd3", "__privateSet3", "_el", "_attr", "_defaultSet", "_tokenSet", "_tokens", "tokens_get", "AttributeTokenList", "tokens", "oldToken", "newToken", "splitTextTracksStr", "textTracksStr", "parseTextTrackStr", "textTrackStr", "encodedLabel", "parseTextTracksStr", "textTrackLikeObj", "textTrackObj", "parseTracks", "trackOrTracks", "trackObjOrStr", "formatTextTrackObj", "stringifyTextTrackList", "isMatchingPropOf", "textTrackObjAsPred", "filterObj", "preds", "pred", "updateTracksModeTo", "tracksToUpdate", "isTrackToUpdate", "getTextTracksList", "filterPredOrObj", "filterPred", "areSubsOn", "enterFullscreen", "stateOwners", "fullscreenElement", "enterFullscreenKey", "maybePromise", "exitFullscreenKey", "exitFullscreen", "documentElement", "fullscreenElementKey", "getFullscreenElement", "docFullscreenElement", "isFullscreen", "currentFullscreenElement", "currentRoot", "fullscreenEnabledKey", "isFullscreenEnabled", "testMediaEl", "getTestMediaEl", "hasVolumeSupportAsync", "mediaEl", "prevVolume", "isSafari", "hasPipSupport", "hasFullscreenSupport", "fullscreenSupported", "pipSupported", "airplaySupported", "castSupported", "getSubtitleTracks", "getShowingSubtitleTracks", "toggleSubtitleTracks", "showingSubitleTracks", "subtitlesShowing", "subTrack", "subtitlesPref", "userLangPrefs", "preferredAvailableSubs", "textTrackA", "textTrackB", "idxA", "idxB", "areValuesEq", "areArraysEq", "xs", "ys", "xIsArray", "yIsArray", "StreamTypeValues", "volumeSupported", "volumeSupportPromise", "supported", "prepareStateOwners", "stateOwner", "classDef", "stateMediator", "handler", "noVolumePref", "volumePref", "defaultDuration", "defaultStreamType", "usedDefaultStreamType", "streamType", "targetLiveWindow", "liveEdgeOffset", "seekable", "liveEdgeStart", "_handler", "updateDefaultSubtitlesCallback", "_a22", "_b2", "chaptersTrack", "warnNotReady", "cleanup", "tryPip", "videoRendition", "renditionId", "_value2", "availability", "availabilityBool", "_stateOwners", "requestMap", "stateMediator2", "detail", "mediaPreviewTime", "mediaPreviewImage", "mediaPreviewCoords", "cs", "numStr", "mediaPreviewChapter", "notDvr", "liveEdgeTime", "_stateMediator", "preferredLanguage", "createMediaStore", "requestMap2", "monitorStateOwnersOnlyWithSubscriptions", "updateState", "nextStateDelta", "cb", "updateStateFromFacade", "nextState2", "stateName", "get", "stateUpdateHandlers", "nextStateOwners", "updateStateOwners", "nextStateOwnersDelta", "nextSubscriberCount", "_f", "_g", "_h", "_j", "_k", "_l", "_m", "_n", "_o", "_p", "pendingUpdate", "shouldTeardownFromSubscriberCount", "mediaChanged", "textTracksChanged", "videoRenditionsChanged", "audioTracksChanged", "remoteChanged", "rootNodeChanged", "teardownMedia", "teardownTextTracks", "teardownVideoRenditions", "teardownAudioTracks", "teardownRemote", "teardownRootNode", "teardownSomething", "shouldSetupFromSubscriberCount", "setupMedia", "setupTextTracks", "setupVideoRenditions", "setupAudioTracks", "setupRemote", "setupRootNode", "setupSomething", "stateOwnerName", "mediaEvents", "textTracksEvents", "videoRenditionsEvents", "audioTracksEvents", "remoteEvents", "rootEvents", "stateOwnersUpdateHandlers", "prevHandler", "prevHandlerTeardown", "optionName", "optionValue", "media_store_default", "__accessCheck4", "__privateGet4", "__privateAdd4", "__privateSet4", "__privateMethod2", "_hotKeys", "_fullscreenElement", "_mediaStore", "_mediaStateCallback", "_mediaStoreUnsubscribe", "_mediaStateEventHandler", "_setupDefaultStore", "setupDefaultStore_fn", "_keyUpHandler", "keyUpHandler_fn", "_keyDownHandler", "keyDownHandler_fn", "ButtonPressedKeys", "DEFAULT_SEEK_OFFSET", "Attributes2", "MediaController", "prevState", "stateValue", "propagateMediaState", "associatedElementSubscriptions", "registerMediaStateReceiver", "unregisterMediaStateReceiver", "unsubscribe", "monitorForMediaStateReceivers", "els", "offsetValue", "metaKey", "altKey", "MEDIA_UI_ATTRIBUTE_NAMES2", "MEDIA_UI_PROP_NAMES", "getMediaUIAttributesFrom", "child", "observedAttributes", "mediaChromeAttributesList", "hasMediaUIProps", "mediaStateReceiverCandidate", "isMediaStateReceiver", "serializeTuple", "tuple", "CustomAttrSerializer", "tuples", "coords", "setAttr", "attrValue", "isMediaSlotElementDescendant", "traverseForMediaStateReceivers", "mediaStateReceiverCallback", "traverseForMediaStateReceiversSync", "rootNode2", "mediaStateReceiverCallback2", "children", "shadowChildren", "relevantAttrs", "registerMediaStateReceiverHandler", "unregisterMediaStateReceiverHandler", "mutationRecord", "addedNodes", "removedNodes", "attributeName", "prevSlotted", "slotChangeHandler", "slotEl", "media_controller_default", "__defProp2", "__defNormalProp2", "__publicField2", "__accessCheck5", "__privateGet5", "__privateAdd5", "__privateSet5", "_mediaController2", "_clickListener", "_keyupListener", "_keydownListener", "template3", "MediaChromeButton", "airplayIcon", "slotTemplate", "updateAriaLabel", "MediaAirplayButton", "computePosition", "anchor", "floating", "placement", "rects", "getElementRects", "computeCoordsFromPlacement", "getRectRelativeToOffsetParent", "offsetParent", "rect", "offsetRect", "alignmentAxis", "getSideAxis", "alignLength", "side", "getSide", "commonX", "commonY", "commonAlign", "__defProp3", "__defNormalProp3", "__publicField3", "InvokeEvent", "relatedTarget", "__objRest", "ToggleEvent", "newState", "oldState", "__defProp4", "__defNormalProp4", "__publicField4", "__accessCheck6", "__privateGet6", "__privateAdd6", "__privateSet6", "__privateMethod3", "_mediaController3", "_previouslyFocused", "_invokerElement", "_keysSoFar", "_clearKeysTimeout", "_previousItems", "_mutationObserver", "_isPopover", "_handleSlotChange", "handleSlotChange_fn", "_handleMenuItems", "_updateLayoutStyle", "updateLayoutStyle_fn", "_handleInvoke", "handleInvoke_fn", "_handleOpen", "handleOpen_fn", "_handleClosed", "handleClosed_fn", "_handleBoundsResize", "_handleMenuResize", "_positionMenu", "positionMenu_fn", "_resizeMenu", "resizeMenu_fn", "_handleClick", "handleClick_fn", "_backButtonElement", "backButtonElement_get", "_handleToggle", "handleToggle_fn", "_checkSubmenuHasExpanded", "checkSubmenuHasExpanded_fn", "_handleFocusOut", "handleFocusOut_fn", "_handleKeyDown", "handleKeyDown_fn", "_getItem", "getItem_fn", "_getTabItem", "getTabItem_fn", "_setTabItem", "setTabItem_fn", "_selectItem", "selectItem_fn", "createMenuItem", "checked", "createIndicator", "customIndicator", "fallbackIndicator", "template4", "Attributes3", "MediaChromeMenu", "previousItems", "currentItems", "getBoundsElement", "isMenuItem", "item2", "focusable", "items", "currentItem", "layoutRowStyle", "menuLayout", "animate", "menuWidth", "anchorRect", "bottom", "expandedMenuItem", "expandedSubmenu", "menuItemsWithSubmenu", "ctrlKey", "tabItem", "toggle", "oldCheckedItems", "opt", "__accessCheck7", "__privateGet7", "__privateAdd7", "__privateSet7", "__privateMethod4", "_audioTrackList", "_prevState", "_render", "render_fn", "_onChange", "onChange_fn", "MediaAudioTrackMenu", "audioTrackList", "MediaChromeMenuButton", "audioTrackIcon", "slotTemplate2", "MediaAudioTrackMenuButton", "ccIconOn", "ccIconOff", "slotTemplate3", "updateAriaChecked", "MediaCaptionsButton", "getSubtitlesListAttr", "setSubtitlesListAttr", "newValStr", "__defProp5", "__defNormalProp5", "__publicField5", "__accessCheck8", "__privateGet8", "__privateAdd8", "__privateSet8", "__privateMethod5", "_prevState2", "_render2", "render_fn2", "_onChange2", "onChange_fn2", "ccIcon", "template5", "MediaCaptionsMenu", "getSubtitlesListAttr2", "setSubtitlesListAttr2", "isOff", "subtitlesList", "subs", "showingSubs", "showingSubsStr", "localStateChange", "ccIconOn2", "ccIconOff2", "slotTemplate4", "updateAriaChecked2", "MediaCaptionsMenuButton", "getSubtitlesListAttr3", "setSubtitlesListAttr3", "enterIcon", "exitIcon", "slotTemplate5", "updateAriaLabel2", "MediaCastButton", "__defProp6", "__defNormalProp6", "__publicField6", "__accessCheck9", "__privateGet9", "__privateAdd9", "__privateSet9", "__privateMethod6", "_previouslyFocused2", "_invokerElement2", "_handleOpen2", "handleOpen_fn2", "_handleClosed2", "handleClosed_fn2", "_handleInvoke2", "handleInvoke_fn2", "_handleFocusOut2", "handleFocusOut_fn2", "_handleKeyDown2", "handleKeyDown_fn2", "template6", "Attributes4", "MediaChromeDialog", "__defProp7", "__defNormalProp7", "__publicField7", "__accessCheck10", "__privateGet10", "__privateAdd10", "__privateSet10", "__privateMethod7", "_dirty", "_ownerElement", "_handleSlotChange2", "handleSlotChange_fn2", "_submenuConnected", "submenuConnected_fn", "_submenuDisconnected", "submenuDisconnected_fn", "_handleMenuItem", "_handleKeyUp", "handleKeyUp_fn", "_handleKeyDown3", "handleKeyDown_fn3", "_reset", "reset_fn", "template7", "Attributes5", "MediaChromeMenuItem", "descriptionSlot", "span", "isCheckable", "closestMenuItemsContainer", "checkedItem", "parentNode", "__accessCheck11", "__privateGet11", "__privateAdd11", "__privateSet11", "__privateMethod8", "_mediaController4", "_isInputTarget", "_startpoint", "_endpoint", "_cssRules", "_segments", "_onFocusIn", "_onFocusOut", "_updateComputedStyles", "_updateActiveSegment", "updateActiveSegment_fn", "_enableUserEvents", "enableUserEvents_fn", "_disableUserEvents", "disableUserEvents_fn", "_handlePointerDown", "handlePointerDown_fn", "_handlePointerEnter", "handlePointerEnter_fn", "_handlePointerUp2", "handlePointerUp_fn2", "_handlePointerLeave", "handlePointerLeave_fn", "_handlePointerMove2", "handlePointerMove_fn2", "template8", "MediaChromeRange", "clipping", "rangePercent", "normalized", "lastMarker", "marker", "isFirst", "isLast", "segmentEl", "pointerRatio", "__accessCheck12", "__privateGet12", "__privateAdd12", "__privateSet12", "_mediaController5", "template9", "MediaControlBar", "__accessCheck13", "__privateGet13", "__privateAdd13", "__privateSet13", "_mediaController6", "template10", "MediaTextDisplay", "media_text_display_default", "__accessCheck14", "__privateGet14", "__privateAdd14", "__privateSet14", "_slot", "MediaDurationDisplay", "enterFullscreenIcon", "exitFullscreenIcon", "slotTemplate6", "updateAriaLabel3", "MediaFullscreenButton", "MEDIA_TIME_IS_LIVE", "MEDIA_PAUSED", "MEDIA_SEEK_TO_LIVE_REQUEST", "MEDIA_PLAY_REQUEST", "indicatorSVG", "slotTemplate7", "updateAriaAttributes", "isPausedOrNotLive", "MediaLiveButton", "__accessCheck15", "__privateGet15", "__privateAdd15", "__privateSet15", "_mediaController7", "_delay", "Attributes6", "DEFAULT_LOADING_DELAY", "template11", "loadingIndicatorIcon", "MediaLoadingIndicator", "indicatorHTML", "MEDIA_VOLUME_LEVEL", "offIcon", "lowIcon", "highIcon", "slotTemplate8", "updateAriaLabel4", "MediaMuteButton", "pipIcon", "slotTemplate9", "updateAriaLabel5", "MediaPipButton", "__accessCheck16", "__privateGet16", "__privateAdd16", "_rates", "Attributes7", "DEFAULT_RATES", "DEFAULT_RATE", "slotTemplate10", "MediaPlaybackRateButton", "newPlaybackRate", "availableRates", "__accessCheck17", "__privateGet17", "__privateAdd17", "__privateMethod9", "_rates2", "_render3", "render_fn3", "_onChange3", "onChange_fn3", "Attributes8", "MediaPlaybackRateMenu", "__accessCheck18", "__privateGet18", "__privateAdd18", "_rates3", "Attributes9", "DEFAULT_RATES2", "DEFAULT_RATE2", "slotTemplate11", "MediaPlaybackRateMenuButton", "playIcon", "pauseIcon", "slotTemplate12", "updateAriaLabel6", "MediaPlayButton", "Attributes10", "template12", "unsetBackgroundImage", "setBackgroundImage", "image", "MediaPosterImage", "_oldValue", "__accessCheck19", "__privateGet19", "__privateAdd19", "__privateSet16", "_slot2", "MediaPreviewChapterDisplay", "__accessCheck20", "__privateGet20", "__privateAdd20", "__privateSet17", "_mediaController8", "template13", "MediaPreviewThumbnail", "coord", "previewImage", "computedStyle", "maxWidth", "minWidth", "maxRatio", "minRatio", "isScalingDown", "imgStyle", "img", "extremum", "resize", "__accessCheck21", "__privateGet21", "__privateAdd21", "__privateSet18", "_slot3", "MediaPreviewTimeDisplay", "__accessCheck22", "__privateGet22", "__privateAdd22", "__privateSet19", "__privateMethod10", "_renditionList", "_prevState3", "_render4", "render_fn4", "_onChange4", "onChange_fn4", "MediaRenditionMenu", "renditionList", "isAuto", "renditionIcon", "slotTemplate13", "MediaRenditionMenuButton", "Attributes11", "DEFAULT_SEEK_OFFSET2", "backwardIcon", "slotTemplate14", "DEFAULT_TIME", "MediaSeekBackwardButton", "Attributes12", "DEFAULT_SEEK_OFFSET3", "forwardIcon", "slotTemplate15", "DEFAULT_TIME2", "MediaSeekForwardButton", "__defProp8", "__defNormalProp8", "__publicField8", "template14", "MediaSettingsMenu", "slotTemplate16", "MediaSettingsMenuButton", "__defProp9", "__defNormalProp9", "__publicField9", "_a", "template15", "MediaSettingsMenuItem", "__accessCheck23", "__privateGet23", "__privateAdd23", "__privateSet20", "_slot4", "Attributes13", "CombinedAttributes", "ButtonPressedKeys2", "DEFAULT_TIMES_SEP", "formatTimesLabel", "timesSep", "showRemaining", "showDuration", "seekableEnd", "timeLabel", "DEFAULT_MISSING_TIME_PHRASE", "updateAriaValueText", "currentTimePhrase", "totalTimePhrase", "fullPhrase", "MediaTimeDisplay", "keyUpHandler", "show", "notoggle", "timesLabel", "__accessCheck24", "__privateGet24", "__privateAdd24", "__privateSet21", "__privateWrapper", "_range", "_startTime", "_previousTime", "_deltaTime", "_frameCount", "_updateTimestamp", "_updateStartValue", "_lastRangeIncrease", "_id", "_animate", "RangeAnimation", "fps", "fpsInterval", "fps2", "increase", "durationDelta", "__accessCheck25", "__privateGet25", "__privateAdd25", "__privateSet22", "__privateMethod11", "_rootNode", "_animation", "_boxes", "_previewTime", "_previewBox", "_currentBox", "_boxPaddingLeft", "_boxPaddingRight", "_mediaChaptersCues", "_toggleRangeAnimation", "toggleRangeAnimation_fn", "_shouldRangeAnimate", "shouldRangeAnimate_fn", "_updateRange", "_getElementRects", "getElementRects_fn", "_getBoxPosition", "getBoxPosition_fn", "_getBoxShiftPosition", "getBoxShiftPosition_fn", "_handlePointerMove3", "handlePointerMove_fn3", "_previewRequest", "previewRequest_fn", "_seekRequest", "seekRequest_fn", "DEFAULT_MISSING_TIME_PHRASE2", "updateAriaValueText2", "calcTimeFromRangeValue", "template16", "calcRangeValueFromTime", "MediaTimeRange", "timePair", "timeStr", "strVal", "relativeBufferedEnd", "bufferedEnd", "currentRailRule", "currentBoxRule", "boxPos", "boxShift", "box", "rangeRect", "ratio", "maxPos", "pointerX", "isOverBoxes", "previewRailRule", "previewBoxRule", "DEFAULT_VOLUME", "toVolume", "formatAsPercentString", "MediaVolumeRange", "__accessCheck26", "__privateGet26", "__privateAdd26", "__privateSet23", "__privateMethod12", "_mediaController9", "_keysSoFar2", "_clearKeysTimeout2", "_metaPressed", "_clickListener2", "_handleKeyListener", "handleKeyListener_fn", "_keyupListener2", "_keydownListener2", "_updateLayoutStyle2", "updateLayoutStyle_fn2", "_getOption", "getOption_fn", "_selectOption", "selectOption_fn", "_searchOption", "searchOption_fn", "_clearKeysOnDelay", "clearKeysOnDelay_fn", "checkIcon", "createOption", "createIndicator2", "template17", "MediaChromeListbox", "option2", "currentOption", "nextOption", "isLayoutRow", "composedPath", "oldSelectedOptions", "activeIndex", "repeatedKey", "after", "before", "afterRepeated", "beforeRepeated", "__accessCheck27", "__privateGet27", "__privateAdd27", "__privateSet24", "__privateMethod13", "_dirty2", "_ownerElement2", "_reset2", "reset_fn2", "template18", "Attributes14", "MediaChromeOption", "closestOptionsContainer", "selectedOption", "__accessCheck28", "__privateGet28", "__privateAdd28", "__privateSet25", "__privateMethod14", "_mediaController10", "_button", "_buttonSlot", "_listbox", "_listboxSlot", "_keyupListener3", "_keydownListener3", "_documentClickHandler", "_clickHandler", "_handleOptionChange", "_toggle", "toggle_fn", "_show", "show_fn", "_hide", "hide_fn", "_updateMenuPosition", "template19", "MediaChromeSelectMenu", "listboxWidth", "buttonRect", "getBoundsElement2", "listboxRight", "newButton", "activeElement", "getMediaControllerElement", "__accessCheck29", "__privateGet29", "__privateAdd29", "__privateSet26", "__privateMethod15", "_prevState4", "_render5", "render_fn5", "_onChange5", "onChange_fn5", "ccIcon2", "slotTemplate17", "MediaCaptionsListbox", "getSubtitlesListAttr4", "setSubtitlesListAttr4", "MediaCaptionsSelectMenu", "captionsButton", "captionsListbox", "buttonSlot", "listboxSlot", "__accessCheck30", "__privateGet30", "__privateAdd30", "__privateMethod16", "_rates4", "_render6", "render_fn6", "_onChange6", "onChange_fn6", "Attributes15", "MediaPlaybackRateListbox", "MediaPlaybackRateSelectMenu", "playbackRateButton", "playbackRateListbox", "__accessCheck31", "__privateGet31", "__privateAdd31", "__privateSet27", "__privateMethod17", "_renditionList2", "_prevState5", "_render7", "render_fn7", "_onChange7", "onChange_fn7", "MediaRenditionListbox", "renditionIcon2", "slotTemplate18", "MediaRenditionButton", "MediaRenditionSelectMenu", "renditionButton", "renditionListbox", "__accessCheck32", "__privateGet32", "__privateAdd32", "__privateSet28", "__privateMethod18", "_audioTrackList2", "_prevState6", "_render8", "render_fn8", "_onChange8", "onChange_fn8", "MediaAudioTrackListbox", "audioTrackIcon2", "slotTemplate19", "MediaAudioTrackButton", "MediaAudioTrackSelectMenu", "audioTrackButton", "audioTrackListbox", "oi2", "ai2", "di2", "ci2", "v3", "ft2", "r9", "u", "h2", "k2", "$e3", "pe2", "Le3", "mt2", "ui2", "Me3", "pt3", "hi2", "Ct2", "Ot2", "ze3", "Ki2", "li2", "fi2", "_t2", "Et2", "mi2", "Nt2", "pi2", "Lt2", "I4", "Mt3", "se5", "ne5", "gt3", "wt3", "xt3", "gi2", "O4", "Ei2", "Pe4", "Ie4", "C3", "me5", "Pt2", "Xe3", "It2", "zi2", "V2", "ge2", "Je3", "Dt2", "Vt2", "Gt3", "Ft2", "W2", "we2", "Qe3", "qt2", "Bt2", "vt2", "bt2", "Ze2", "j2", "S2", "Ut2", "y2", "xe3", "P", "G2", "ae2", "de3", "K3", "tt3", "F3", "oe3", "it", "Wt2", "Ne3", "Tt2", "rt2", "jt3", "De3", "yt", "st3", "Kt", "Ve2", "At2", "et2", "M4", "St3", "U4", "Yt", "Ht3", "__superGet", "q2", "kt2", "d2", "vi2", "nt3", "ue3", "ot3", "$t", "Y2", "H3", "$3", "ce3", "Ge2", "B3", "zt2", "he3", "Ee3", "Xt3", "Jt3", "z", "X3", "J2", "ve3", "Fe2", "be2", "Te2", "Qt3", "le3", "ye3", "Zt2", "ei2", "Q2", "Z3", "ee3", "Ae", "qe3", "dt3", "fe3", "ct2", "ti2", "te3", "ie3", "re2", "ke3", "at3", "Re2", "Se", "ii2", "ut2", "ri2", "si2", "bi2", "Ti2", "c", "qi2", "Bi2", "Ui2", "x2", "Ce3", "Ue2", "Oe3", "We3", "je3", "Ke3", "Ye3", "_e3", "lt3", "Rt2", "Be3", "ks", "__defProp10", "__defNormalProp10", "__publicField10", "__accessCheck33", "__privateGet33", "__privateAdd33", "__privateSet29", "_parts", "_processor", "_items", "_value", "_element", "_attributeName", "_namespaceURI", "_list", "list_get", "_parentNode", "_nodes", "ELEMENT", "STRING2", "PART", "defaultProcessor", "instance", "expression", "AttrPart", "TemplateInstance", "template20", "processor2", "parse", "AttrPartList", "tokenize", "ChildNodePart", "InnerTemplatePart", "mem", "open", "FRAGMENT", "Part2", "attrPartToList", "namespaceURI", "nodes", "normalisedNodes", "swapdom", "directive", "next", "bi3", "pipeModifiers", "PartialTemplate", "templates", "templateInstances", "Directives", "evaluateExpression", "tpl", "processor", "DirectiveNames", "operators", "tokenizeExpression", "expr", "tokenize2", "invalidExpression", "partialState", "operator", "getParamValue", "isValidParam", "run", "raw", "firstChar", "lastChar", "parsers", "__defProp11", "__defNormalProp11", "__publicField11", "__accessCheck34", "__privateGet34", "__privateAdd34", "__privateSet30", "__privateMethod19", "_template", "_prevTemplate", "_prevTemplateId", "_upgradeProperty", "upgradeProperty_fn", "_updateTemplate", "updateTemplate_fn", "observedMediaAttributes", "prependTemplate", "MediaThemeElement", "mutationList", "props", "prop", "templateId", "isValidUrl", "request", "template22", "resource", "xe4", "u2", "p", "x3", "b3", "G3", "X4", "Le4", "Ft3", "J3", "Re3", "Yt2", "dt4", "lt4", "c2", "T2", "Wt3", "U3", "mt3", "m", "we3", "ut3", "de4", "le4", "L", "Oe4", "Zt3", "N2", "Se2", "ct3", "Gt4", "jt4", "ue4", "pt4", "bt3", "Q3", "qt3", "ht", "K4", "$4", "E2", "me3", "gt2", "I3", "A2", "_e4", "y3", "F4", "yt2", "Xt4", "Jt4", "Qt4", "j3", "Pe3", "vt3", "ee4", "Ne4", "Et3", "Tt3", "At3", "D2", "kt3", "ta", "Ct3", "Ie3", "xt2", "te4", "ae3", "Ve3", "t", "ia", "ra", "ce4", "oa", "na", "sa", "da", "la", "ma", "De4", "Lt3", "Rt3", "ua", "S3", "wt2", "pa", "St2", "fa", "ba", "ha", "ga", "B5", "$e4", "Ye4", "We4", "je4", "qe4", "ze4", "Xe4", "Je4", "Qe4", "at4", "nt4", "ge3", "Mt2", "He2", "_t3", "Pt3", "fe4", "Ca", "M3", "n", "Ue3", "xa2", "La2", "Ra2", "Dt3", "wa", "Oa2", "Sa2", "Ma", "_a2", "Vt3", "Pa2", "re3", "oe4", "H4", "ne3", "Z4", "O3", "V3", "Ee4", "Ht2", "se3", "Ke4", "_2", "W3", "ke4", "Bt3", "Te3", "Ut3", "Ae2", "Kt2", "Ce4", "$t2", "ie4", "Y3", "p2", "Y4", "$5", "Q4", "X5", "B4", "d3", "m2", "ae4", "re4", "c3", "oe5", "ie5", "i", "se4", "le5", "E3", "ce5", "a", "pe3", "K5", "H5", "F5", "Z5", "de5", "me4", "Ee5", "Ae3", "Video", "video", "showNote", "noteLink", "mounted", "useMounted", "playbackId", "title", "thumbnailTime", "chapters", "workflows", "videoRef", "pe", "playbackKey", "lastKnownTime", "setLastKnownTime", "ye", "isFirstPlay", "setIsFirstPlay", "canPlay", "setCanPlay", "ue", "player", "savedTime", "window", "handleTimeUpdate", "e", "handleEnded", "handlePlay", "formattedTime", "u", "l", "AspectRatio", "p", "web_Spinner_IdTB_default", "cx", "Ae3", "VideoIndex", "workflow", "index", "Arrow", "playerRef", "handleChapterClick", "time", "minutes", "seconds", "timeInSeconds", "chapter", "VideoList", "passwordProtect", "courseId", "title", "showNote", "showNordyInfo", "showLiveEventInfo", "videos", "noteLink", "_a", "store", "setStore", "useGlobalStore", "password", "setPassword", "ye", "canAccess", "setCanAccess", "user", "firstVideo", "current", "setCurrent", "isDev", "p", "NeedPayment", "l", "u", "e", "web_Button_amAd_default", "class_Course_Title_s240_default", "video", "id", "class_Video_Item_Qr97_default", "Video", "window", "class_Info_ii1V_default", "LiveEventInfo_1uhR_default", "ControlType", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "e", "rejected", "result", "resolveFetch", "customFetch", "_fetch", "args", "FunctionsError", "message", "name", "context", "FunctionsFetchError", "FunctionsRelayError", "FunctionsHttpError", "__awaiter$1", "FunctionsClient", "url", "headers", "token", "functionName", "options", "_a", "method", "functionArgs", "_headers", "body", "response", "fetchError", "isRelayError", "responseType", "data", "error", "PostgrestBuilder", "builder", "cross_fetch_default", "onfulfilled", "onrejected", "_fetch", "res", "res2", "_a", "_b", "_c", "error", "data", "count", "status", "statusText", "body", "countHeader", "contentRange", "fetchError", "PostgrestTransformBuilder", "columns", "quoted", "cleanedColumns", "c", "column", "ascending", "nullsFirst", "foreignTable", "key", "existingOrder", "from", "to", "keyOffset", "keyLimit", "signal", "analyze", "verbose", "settings", "buffers", "wal", "format", "options", "forMediatype", "PostgrestFilterBuilder", "value", "pattern", "values", "cleanedValues", "s", "range", "query", "config", "type", "typePart", "configPart", "operator", "filters", "PostgrestQueryBuilder", "url", "headers", "schema", "fetch2", "head", "method", "prefersHeaders", "acc", "x", "uniqueColumns", "onConflict", "ignoreDuplicates", "version", "DEFAULT_HEADERS", "PostgrestClient", "relation", "fn", "args", "name", "naiveFallback", "window", "__VIRTUAL_FILE", "global_default", "name", "description", "keywords", "author", "contributors", "version", "repository", "homepage", "engines", "dependencies", "devDependencies", "config", "scripts", "main", "directories", "browser", "license", "require$$0", "version$1", "_globalThis", "global_default", "window", "NativeWebSocket", "W3CWebSocket", "uri", "protocols", "native_instance", "prop", "browser$1", "websocket_default", "w3cwebsocket", "w3cwebsocket", "websocket_default", "version", "DEFAULT_HEADERS", "VSN", "DEFAULT_TIMEOUT", "WS_CLOSE_NORMAL", "SOCKET_STATES", "SOCKET_STATES2", "CHANNEL_STATES", "CHANNEL_STATES2", "CHANNEL_EVENTS", "CHANNEL_EVENTS2", "TRANSPORTS", "TRANSPORTS2", "CONNECTION_STATE", "CONNECTION_STATE2", "Timer", "callback", "timerCalc", "Serializer", "rawPayload", "buffer", "view", "decoder", "topicSize", "eventSize", "offset", "topic", "event", "data", "Push", "channel", "payload", "timeout", "status", "_a", "response", "h", "REALTIME_PRESENCE_LISTEN_EVENTS", "REALTIME_PRESENCE_LISTEN_EVENTS2", "RealtimePresence", "_RealtimePresence", "opts", "events", "newState", "onJoin", "onLeave", "onSync", "diff", "key", "currentPresences", "newPresences", "leftPresences", "currentState", "state", "transformedState", "joins", "leaves", "presences", "newPresenceRefs", "m", "curPresenceRefs", "joinedPresences", "joinedPresenceRefs", "curPresences", "presenceRefsToRemove", "obj", "func", "presence", "PostgresTypes", "PostgresTypes2", "convertChangeData", "columns", "record", "options", "skipTypes", "acc", "rec_key", "convertColumn", "columnName", "column", "x", "colType", "value", "convertCell", "noop", "type", "dataType", "toArray", "toBoolean", "toNumber", "toJson", "toTimestampString", "parsedValue", "error", "lastIdx", "closeBrace", "arr", "valTrim", "val", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "resolve", "reject", "fulfilled", "step", "e", "rejected", "result", "REALTIME_POSTGRES_CHANGES_LISTEN_EVENT", "REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2", "REALTIME_LISTEN_TYPES", "REALTIME_LISTEN_TYPES2", "REALTIME_SUBSCRIBE_STATES", "REALTIME_SUBSCRIBE_STATES2", "RealtimeChannel", "_RealtimeChannel", "params", "socket", "pushEvent", "reason", "ref", "_b", "broadcast", "accessTokenPayload", "config", "r", "serverPostgresFilters", "_a2", "clientPostgresBindings", "bindingsLen", "newPostgresBindings", "i", "clientPostgresBinding", "schema", "table", "filter", "serverPostgresFilter", "_c", "push", "onClose", "leavePush", "_event", "_ref", "typeLower", "close", "leave", "join", "handledPayload", "bind", "_b2", "_d", "_e", "_f", "bindId", "bindEvent", "postgresChanges", "commit_timestamp", "type2", "errors", "binding", "obj1", "obj2", "k", "records", "__awaiter$1", "noop$1", "RealtimeClient", "endPoint", "eventsPerSecond", "tries", "code", "values", "kind", "msg", "chan", "token", "newRef", "dupChannel", "c", "rawMessage", "url", "prefix", "query", "eventsPerSecondLimitMs", "StorageError", "message", "isStorageError", "error", "StorageApiError", "status", "StorageUnknownError", "originalError", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "e", "rejected", "result", "resolveFetch", "customFetch", "_fetch", "args", "resolveResponse", "__awaiter$1", "_getErrorMessage", "err", "handleError", "Res", "_getRequestParams", "method", "options", "parameters", "body", "params", "_handleRequest", "fetcher", "url", "data", "get", "post", "put", "remove", "__awaiter$2", "DEFAULT_SEARCH_OPTIONS", "DEFAULT_FILE_OPTIONS", "StorageFileApi", "headers", "bucketId", "fetch2", "path", "fileBody", "fileOptions", "cleanPath", "_path", "res", "fromPath", "toPath", "expiresIn", "downloadQueryParam", "paths", "datum", "renderPath", "transformationQuery", "queryString", "_queryString", "transform", "version", "DEFAULT_HEADERS", "__awaiter$3", "StorageBucketApi", "id", "StorageClient", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "e", "rejected", "result", "expiresAt", "expiresIn", "uuid", "c", "r", "isBrowser", "localStorageWriteTests", "supportsLocalStorage", "randomKey", "getParameterByName", "name", "url", "_a", "window", "regex", "results", "resolveFetch", "customFetch", "_fetch", "args", "looksLikeFetchResponse", "maybeResponse", "setItemAsync", "storage", "key", "data", "getItemAsync", "removeItemAsync", "decodeBase64URL", "base64", "chr1", "chr2", "chr3", "enc1", "enc2", "enc3", "enc4", "i", "Deferred", "_Deferred", "res", "rej", "decodeJWTPayload", "token", "base64UrlRegex", "parts", "base64Url", "sleep", "time", "accept", "retryable", "fn", "isRetryable", "attempt", "AuthError", "message", "status", "isAuthError", "error", "AuthApiError", "isAuthApiError", "AuthUnknownError", "originalError", "CustomAuthError", "AuthSessionMissingError", "AuthInvalidCredentialsError", "AuthImplicitGrantRedirectError", "details", "AuthRetryableFetchError", "__awaiter$1", "__rest", "s", "t", "p", "_getErrorMessage", "err", "handleError", "NETWORK_ERROR_CODES", "_getRequestParams", "method", "options", "parameters", "body", "params", "_request", "fetcher", "headers", "qs", "queryString", "_handleRequest", "_sessionResponse", "session", "hasSession", "user", "_userResponse", "_ssoResponse", "_generateLinkResponse", "action_link", "email_otp", "hashed_token", "redirect_to", "verification_type", "rest", "properties", "_noResolveJsonResponse", "__awaiter$2", "__rest$1", "GoTrueAdminApi", "fetch2", "jwt", "email", "attributes", "_b", "_c", "_d", "_e", "_f", "_g", "pagination", "response", "users", "total", "links", "link", "page", "rel", "uid", "id", "shouldSoftDelete", "factors", "version", "GOTRUE_URL", "STORAGE_KEY", "DEFAULT_HEADERS", "EXPIRY_MARGIN", "localStorageAdapter", "polyfillGlobalThis", "__awaiter$3", "DEFAULT_OPTIONS", "AUTO_REFRESH_TICK_DURATION", "AUTO_REFRESH_TICK_THRESHOLD", "GoTrueClient", "settings", "event", "redirectType", "credentials", "password", "phone", "provider", "nonce", "currentSession", "maybeSession", "sessionData", "sessionError", "userError", "timeNow", "expiresAt2", "hasExpired", "payload", "refreshedSession", "error2", "error_description", "error_code", "provider_token", "provider_refresh_token", "access_token", "expires_in", "refresh_token", "token_type", "expires_at", "accessToken", "callback", "subscription", "refreshToken", "startedAt", "_", "broadcast", "x", "ticker", "now", "isInitial", "urlParams", "query", "challengeData", "challengeError", "totp", "factor", "currentLevel", "nextLevel", "currentAuthenticationMethods", "Headers$1", "cross_fetch_default", "version", "DEFAULT_HEADERS", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "e", "rejected", "result", "resolveFetch", "customFetch", "_fetch", "args", "resolveHeadersConstructor", "fetchWithAuth", "supabaseKey", "getAccessToken", "fetch2", "HeadersConstructor", "input", "init", "_a", "accessToken", "headers", "stripTrailingSlash", "url", "applySettingDefaults", "options", "defaults", "dbOptions", "authOptions", "realtimeOptions", "globalOptions", "DEFAULT_DB_OPTIONS2", "DEFAULT_AUTH_OPTIONS2", "DEFAULT_REALTIME_OPTIONS2", "DEFAULT_GLOBAL_OPTIONS2", "SupabaseAuthClient", "GoTrueClient", "__awaiter$1", "DEFAULT_GLOBAL_OPTIONS", "DEFAULT_DB_OPTIONS", "DEFAULT_AUTH_OPTIONS", "DEFAULT_REALTIME_OPTIONS", "SupabaseClient", "supabaseUrl", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_supabaseUrl", "urlParts", "defaultStorageKey", "DEFAULTS", "settings", "PostgrestClient", "FunctionsClient", "StorageClient", "relation", "fn", "name", "opts", "channel", "data", "autoRefreshToken", "persistSession", "detectSessionInUrl", "storage", "storageKey", "authHeaders", "RealtimeClient", "event", "session", "token", "source", "createClient", "nlNL", "nlBE", "__spreadValues", "koKR", "Init", "props", "databaseURL", "anonKey", "store", "setStore", "useGlobalStore", "clerk", "supabase", "user", "ue", "triggerConversionAPI", "script", "PUBLISHABLE_KEY", "CLERK_SRC", "script1", "script2", "seconds", "useCountdown", "loadClerk", "useWindowLoad", "__async", "supabase2", "createClient", "initUser", "tailwindLoaded", "useTailwind", "showDebug", "u", "p", "_0", "asyncCallback", "loaded", "setLoaded", "ye", "fe", "onLoad", "window", "initialSeconds", "setSeconds", "intervalId", "prevSeconds", "clerkUser", "email", "data", "error", "created", "error2", "ControlType", "Login", "props", "store", "setStore", "useGlobalStore", "clerk", "user", "ue", "signInDiv", "signInProps", "isDev", "p", "web_Spinner_IdTB_default", "u", "UserButton", "props", "store", "setStore", "useGlobalStore", "clerk", "user", "ue", "userButtonDiv", "afterSignOutUrl", "u", "l", "p", "web_MenuItem_oSWT_default", "window", "B", "Y", "_a", "r", "_b", "e", "t", "__objRest", "o", "p", "__spreadProps", "__spreadValues", "W", "i", "m", "u", "re", "F", "C", "E", "y", "$", "G", "oe", "pe", "ue", "U", "Te", "window", "fe", "ie", "te", "I", "X", "Me", "se", "de", "a", "g", "le", "ce", "j", "f", "d", "L", "q", "ye", "me", "x", "J", "l", "s", "c", "R", "b", "A", "D", "h", "S", "Pe", "Ee", "Q", "z", "Z", "_", "n", "Re", "v", "T", "Se", "Ce", "ve", "K", "he", "ae", "CompareImage", "image1", "image2", "position", "ControlType", "systemFont", "highlightStyle", "Counter", "targetDate", "slotLeft", "suffix", "calculateTimeLeft", "difference", "timeLeft2", "timeLeft", "setTimeLeft", "ye", "ue", "timer", "useMounted", "p", "u", "ControlType", "MuxPlayer", "playbackId", "thumbnailUrl", "thumbnailTime", "title", "autoPlay", "startTime", "endTime", "isPlaying", "setIsPlaying", "ye", "isClosed", "setIsClosed", "playerRef", "pe", "handlePlay", "handlePause", "handleClose", "u", "p", "e", "cx", "PlayButton", "Ae3", "ControlType", "PACKET_TYPES", "PACKET_TYPES_REVERSE", "key", "ERROR_PACKET", "withNativeBlob", "withNativeArrayBuffer", "isView", "obj", "encodePacket", "type", "data", "supportsBinary", "callback", "encodeBlobAsBase64", "fileReader", "content", "toArray", "TEXT_ENCODER", "encodePacketToBinary", "packet", "encoded", "chars", "lookup", "i", "decode", "base64", "bufferLength", "len", "p", "encoded1", "encoded2", "encoded3", "encoded4", "arraybuffer", "bytes", "withNativeArrayBuffer2", "decodePacket", "encodedPacket", "binaryType", "mapBinary", "decodeBase64Packet", "decoded", "SEPARATOR", "encodePayload", "packets", "length", "encodedPackets", "count", "decodePayload", "encodedPayload", "decodedPacket", "createPacketEncoderStream", "controller", "payloadLength", "header", "view", "TEXT_DECODER", "totalLength", "chunks", "acc", "chunk", "concatChunks", "size", "buffer", "j", "createPacketDecoderStream", "maxPayload", "state", "expectedLength", "isBinary2", "headerArray", "n", "protocol", "Emitter", "mixin", "event", "fn", "on2", "callbacks", "cb", "args", "nextTick", "setTimeoutFn", "globalThisShim", "window", "defaultBinaryType", "pick", "obj", "attr", "acc", "k", "NATIVE_SET_TIMEOUT", "globalThisShim", "NATIVE_CLEAR_TIMEOUT", "installTimerFunctions", "opts", "BASE64_OVERHEAD", "byteLength", "utf8Length", "str", "c", "length", "i", "l", "randomString", "encode", "decode2", "qs", "qry", "pairs", "pair", "TransportError", "reason", "description", "context", "Transport", "Emitter", "packets", "data", "packet", "decodePacket", "details", "onPause", "schema", "query", "hostname", "encodedQuery", "Polling", "pause", "total", "callback", "decodePayload", "close", "encodePayload", "value", "hasCORS", "empty", "BaseXHR", "isSSL", "port", "fn", "req", "xhrStatus", "Request", "_Request", "createRequest", "uri", "_a", "xhr", "_a2", "e", "err", "fromError", "unloadHandler", "terminationEvent", "hasXHR2", "newRequest", "XHR", "forceBase64", "xdomain", "isReactNative", "navigator", "BaseWS", "protocols", "closeEvent", "ev", "lastPacket", "encodePacket", "nextTick", "WebSocketCtor", "WS", "_packet", "WT", "stream", "decoderStream", "createPacketDecoderStream", "reader", "encoderStream", "createPacketEncoderStream", "read", "done", "value2", "transports", "re", "parts", "parse", "src", "b", "m", "pathNames", "queryKey", "path", "regx", "names", "$0", "$1", "$2", "withEventListeners", "OFFLINE_EVENT_LISTENERS", "listener", "SocketWithoutUpgrade", "_SocketWithoutUpgrade", "defaultBinaryType", "parsedUri", "t", "transportName", "name", "protocol", "transport", "delay", "payloadSize", "hasExpired", "msg", "options", "type", "cleanupAndClose", "waitForUpgrade", "SocketWithUpgrade", "failed", "onTransportOpen", "cleanup", "freezeTransport", "onerror", "error", "onTransportClose", "onclose", "onupgrade", "to", "upgrades", "filteredUpgrades", "Socket", "o", "protocol2", "url", "loc", "host", "esm_exports", "__export", "Decoder", "Encoder", "PacketType", "protocol3", "withNativeArrayBuffer3", "isView2", "toString", "withNativeBlob2", "withNativeFile", "isBinary", "hasBinary", "toJSON", "key", "deconstructPacket", "buffers", "packetData", "pack", "_deconstructPacket", "placeholder", "newData", "reconstructPacket", "_reconstructPacket", "RESERVED_EVENTS", "PacketType2", "replacer", "deconstruction", "isObject", "_Decoder", "reviver", "isBinaryEvent", "BinaryReconstructor", "p", "start", "buf", "next", "payload", "binData", "on", "RESERVED_EVENTS2", "Socket2", "io", "nsp", "args", "_b", "_c", "id", "ack", "isTransportWritable", "isConnected", "timeout", "timer", "resolve", "reject", "arg1", "arg2", "responseArgs", "force", "listeners", "self2", "sent", "pid", "subDestroy", "compress", "Backoff", "ms", "rand", "deviation", "min", "max", "jitter", "Manager", "_parser", "v", "socket", "openSubDestroy", "onError", "errorSub", "nsps", "encodedPackets", "attempt", "cache", "lookup2", "parsed", "source", "sameNamespace", "newConnection", "socket_default", "endpoint", "SOCKET_SERVER_URL", "initLiveReload", "__async", "window", "createdSocket", "socket_default", "err", "useRealtimeComponent", "originalComponent", "componentName", "isDev", "setForceRerender", "ye", "updateCount", "pe", "updatedInstance", "fe", "onRebuild", "event", "__async", "response", "setupHandler", "retryCount", "window", "ue", "initLiveReload", "Init", "props", "Component", "useRealtimeComponent", "p", "addPropertyControls", "UserButton", "Login", "CompareImage", "Counter", "ClassList", "VideoList", "MuxPlayer", "Reviews", "Framer101", "Framer101_2", "Framer101_3", "HandleMobileRedirection"]
}
