{"version":3,"file":"Marketo_Form.BySnoZnQ.mjs","names":["Fragment","input","value","Fragment","ButtonsSubmitButton","propertyControls","withNativeBlob","withNativeArrayBuffer","isView","lookup","decode","p","withNativeArrayBuffer","on","l","l","isBinary","protocol","_a","value","protocol","Socket","l","value","RESERVED_EVENTS","PacketType","p","self","Socket","self","Socket$1","socket","index","ImportedComponent"],"sources":["https:/mirostatic.com/website/static/production-eu/framer-code-components/marketo-form/lib/marketo-components.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/marketo-form/lib/marketo-helpers.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/marketo-form/lib/marketo-framer-form.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-parser/build/esm/commons.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-parser/build/esm/encodePacket.browser.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-parser/build/esm/decodePacket.browser.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/@socket.io/component-emitter/lib/esm/index.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/globals.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/util.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/contrib/parseqs.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transport.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-parser/build/esm/index.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transports/polling.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/contrib/has-cors.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transports/polling-xhr.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transports/websocket.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transports/webtransport.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transports/index.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/contrib/parseuri.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/socket.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-client/build/esm/url.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-parser/build/esm/is-binary.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-parser/build/esm/binary.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-parser/build/esm/index.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-client/build/esm/on.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-client/build/esm/socket.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-client/build/esm/contrib/backo2.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-client/build/esm/manager.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/socket.io-client/build/esm/index.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/node_modules/engine.io-client/build/esm/transports/polling-fetch.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/utils/live-reload/socket.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/utils/live-reload/bootstrap.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/utils/live-reload/use-realtime-component.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/cmp-manager/lib/cmp-manager.esm.js","https:/mirostatic.com/website/static/production-eu/framer-code-components/index.esm.js","https:/framerusercontent.com/modules/W9pZlTbV45AK340axNN5/bpJOd1Cgvur0Ipev1Wv9/Marketo_Form.js"],"sourcesContent":["import { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { withCSS } from 'framer';\n\nconst version = 'version-2';\nconst classNamePrefix = 'framer-marketo-';\nconst classNames = {\n    input: classNamePrefix + 'input',\n    select: classNamePrefix + 'select',\n    textarea: classNamePrefix + 'textarea',\n    error: classNamePrefix + 'error',\n    formContainer: classNamePrefix + 'form-container',\n    formRow: classNamePrefix + 'form-row',\n    loader: classNamePrefix + 'loader',\n    label: classNamePrefix + 'label',\n    fieldErrorMessage: classNamePrefix + 'error-message',\n    checkboxContainer: classNamePrefix + 'checkbox-container',\n    checkbox: classNamePrefix + 'checkbox',\n    checkboxLabel: classNamePrefix + 'checkbox-label',\n    checkmark: classNamePrefix + 'checkmark',\n    radioGroup: classNamePrefix + 'radio-group',\n    radioOption: classNamePrefix + 'radio-option',\n    hiddenRadio: classNamePrefix + 'hidden-radio',\n    customRadio: classNamePrefix + 'custom-radio',\n    textOnlyContent: classNamePrefix + 'text-only-content',\n    successMessage: classNamePrefix + 'success-message',\n    formErrorMessage: classNamePrefix + 'success-message'\n};\nconst formContainerStyles = [\n    `.${classNames.formContainer} {\n        display: flex;\n        flex-direction: column;\n        gap: 16px;\n        font-family: 'Noto Sans', 'Noto Sans Placeholder', sans-serif;\n    }`,\n    `.${classNames.formContainer} a {\n        color: #3859ff;\n        text-decoration: none;\n        font-weight: 400;\n        font-size: 16px;\n    }`,\n    `.${classNames.formContainer} a:hover {\n         color: #314cd9;\n         text-decoration: underline;\n    }`,\n    `.${classNames.formContainer} a:active {\n         color: #2a41b6;\n    }`\n];\nconst formRowStyles = [\n    `.${classNames.formRow} {\n        display: flex;\n        gap: 16px;\n    }`,\n    `.${classNames.formRow} > div {\n        flex-grow: 1;\n    }`,\n    `@media (max-width: 768px) { \n    .${classNames.formRow} {\n        flex-direction: column;\n    }\n  }`\n];\nconst inputStyles = [\n    `.${classNames.input} { \n        padding: 12px 16px;\n        background: transparent;\n        font-family: 'Noto Sans';\n        font-weight: 400;\n        font-size: 16px;\n        line-height: 150%;\n        color: #1c1c1e;\n        white-space: nowrap;\n        overflow: hidden;\n        width: 100%;\n        height: 48px;\n        letter-spacing: -0.16px;\n        border-radius: 8px;\n        border: 1px solid #e0e2e8;\n        box-sizing: border-box;\n        margin-top: 8px;\n    }`,\n    `.${classNames.input}:hover {\n            border-color: #314cd9;\n     }`,\n    `.${classNames.input}:focus {\n            border-color: #3859ff;\n     }`,\n    `.${classNames.input}.${classNames.error} {\n            border: 2px solid #d8182c;\n     }`\n];\nconst loaderStyles = [\n    `.${classNames.loader} {\n        width: 40px;\n        height: 40px;\n        border: 4px solid #7a90fe;\n        border-top-color: #314cd9;\n        border-radius: 50%;\n        animation: mktoLoaderSpin 1s linear infinite;\n     }`,\n    `.${classNames.loader}-wrapper {\n        width: 100%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n     }`,\n    `@keyframes mktoLoaderSpin {\n    from { transform: rotate(0deg); }\n    to { transform: rotate(360deg); }\n    }`\n];\nconst labelStyles = [\n    `.${classNames.label} {\n        display: inline-block;\n        font-family: 'Noto Sans', 'Noto Sans Placeholder', sans-serif;\n        font-style: normal;\n        font-weight: 600;\n        color: #1c1c1e;\n        font-size: 16px;\n        line-height: 150%;\n        letter-spacing: -0.16px;\n        text-decoration: none;\n     }`\n];\nconst selectStyles = [\n    `.${classNames.select} {\n        appearance: none;\n        padding-right: 32px;\n        text-overflow: ellipsis;\n     }`,\n    `.${classNames.select}-wrapper {\n        position: relative;\n     }`,\n    `.${classNames.select}-arrow {\n        position: absolute;\n        right: 16px;\n        top: 24px;\n     }`\n];\nconst textAreaStyles = [\n    `.${classNames.textarea} {\n        min-height: 100px;\n        white-space: break-spaces;\n        resize: vertical;\n     }`\n];\nconst errorMessageStyles = [\n    `.${classNames.fieldErrorMessage} {\n        color: #d8182c;\n        font-size: 14px;\n        margin-top: 4px;\n        line-height: 145%;\n     }`\n];\nconst checkboxContainerStyles = [\n    `.${classNames.checkboxContainer} {\n        display: flex;\n        align-items: center;\n        gap: 8px;\n        position: relative;\n    }`\n];\nconst checkboxStyles = [\n    `.${classNames.checkbox} {\n        appearance: none;\n        background: transparent;\n        width: 24px;\n        height: 24px;\n        border: 2px solid #e0e2e8;\n        border-radius: 4px;\n        cursor: pointer;\n        transition: all 0.2s ease-in-out;\n        position: relative;\n        z-index: 2;\n    }`,\n    `.${classNames.checkbox}:checked {\n        border-color: #1e40af;\n    }`,\n    `.${classNames.checkbox}.${classNames.error} {\n        border-color: #d8182c;\n    }`,\n    `.${classNames.checkbox}:disabled {\n        border-color: #ddd;\n        background-color: #f9f9f9;\n        cursor: not-allowed;\n        opacity: 0.6;\n    }`\n];\nconst checkboxLabelStyles = [\n    `.${classNames.checkboxLabel} {\n        font-weight: 400;\n    }`\n];\nconst checkmarkStyles = [\n    `.${classNames.checkmark} {\n        position: absolute;\n        top: 8px;\n        left: 8px;\n        z-index: 1;\n    }`\n];\n// Radio button styles\nconst radioGroupStyles = [\n    `.${classNames.radioGroup} {\n        margin-top: 8px;\n        display: flex;\n        flex-direction: column;\n        gap: 12px;\n    }`\n];\nconst radioOptionStyles = [\n    `.${classNames.radioOption} {\n        display: flex;\n        align-items: center;\n        cursor: pointer;\n        font-size: 16px;\n        font-weight: 400;\n        color: #1c1c1e;\n    }`\n];\nconst hiddenRadioStyles = [\n    `.${classNames.hiddenRadio} {\n        opacity: 0;\n        position: absolute;\n        width: 0;\n        height: 0;\n    }`\n];\nconst customRadioStyles = [\n    `.${classNames.customRadio} {\n        display: inline-block;\n        width: 24px;\n        height: 24px;\n        border: 3px solid #e0e2e8;\n        border-radius: 50%;\n        margin-right: 8px;\n        position: relative;\n        transition: border 0.2s ease-in-out;\n    }`,\n    `.${classNames.hiddenRadio}:checked + .${classNames.customRadio} {\n        border: 3px solid #2f52e0;\n    }`,\n    `.${classNames.hiddenRadio}:checked + .${classNames.customRadio}::after {\n        content: '';\n        width: 12px;\n        height: 12px;\n        background-color: #454954;\n        border-radius: 50%;\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        transform: translate(-50%, -50%);\n    }`\n];\n// Additional styles\nconst textOnlyContentStyles = [\n    `.${classNames.textOnlyContent} {\n        font-size: 14px;\n        line-height: 1.5;\n    }`\n];\nconst successMessageStyles = [\n    `.${classNames.successMessage} {\n        font-size: 16px;\n        text-align: center;\n    }`,\n    `.${classNames.successMessage} a {\n        font-size: 16px;\n    }`\n];\nconst formErrorMessageStyles = [\n    `.${classNames.formErrorMessage} {\n        background-color: #d8182c;\n        color: white;\n        padding: 16px;\n        text-align: center;\n    }`\n];\nconst _FormContainer = ({ children })=>{\n    return jsx(\"form\", {\n        className: `${classNames.formContainer}`,\n        children: children\n    });\n};\nconst _FormRow = ({ children })=>{\n    return jsx(\"div\", {\n        className: `${classNames.formRow}`,\n        children: children\n    });\n};\nconst _Label = ({ children, ...props })=>{\n    return jsx(\"label\", {\n        className: `${classNames.label}`,\n        ...props,\n        children: children\n    });\n};\nconst _Input = ({ hasError, ...props })=>{\n    return jsx(\"input\", {\n        className: `${classNames.input} ${hasError ? classNames.error : ''}`,\n        ...props\n    });\n};\nconst _Textarea = ({ hasError, ...props })=>{\n    return jsx(\"textarea\", {\n        className: `${classNames.input} ${classNames.textarea} ${hasError ? classNames.error : ''}`,\n        ...props\n    });\n};\nconst _Select = ({ children, hasError, ...props })=>{\n    return jsxs(\"div\", {\n        className: `${classNames.select}-wrapper`,\n        children: [\n            jsx(\"div\", {\n                className: `${classNames.select}-arrow`,\n                children: jsx(\"svg\", {\n                    xmlns: \"http://www.w3.org/2000/svg\",\n                    width: \"16\",\n                    height: \"16\",\n                    children: jsx(\"path\", {\n                        d: \"M 3.5 6 L 8 10.5 L 12.5 6\",\n                        fill: \"transparent\",\n                        strokeWidth: \"1.5\",\n                        stroke: \"rgb(153, 153, 153)\",\n                        strokeLinecap: \"round\",\n                        strokeLinejoin: \"round\"\n                    })\n                })\n            }),\n            jsx(\"select\", {\n                className: `${classNames.input} ${classNames.select} ${hasError ? classNames.error : ''}`,\n                ...props,\n                children: children\n            })\n        ]\n    });\n};\nconst _Loader = ()=>{\n    return jsx(\"div\", {\n        className: `${classNames.loader}-wrapper`,\n        children: jsx(\"div\", {\n            className: `${classNames.loader}`\n        })\n    });\n};\nconst _ErrorMessage = ({ children, ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.fieldErrorMessage}`,\n        ...props,\n        children: children\n    });\n};\nconst _CheckboxContainer = ({ children, ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.checkboxContainer}`,\n        ...props,\n        children: children\n    });\n};\nconst _Checkbox = ({ isChecked, hasError, disabled, ...props })=>{\n    return jsx(\"input\", {\n        type: \"checkbox\",\n        className: `${classNames.checkbox} ${hasError ? classNames.error : ''}`,\n        checked: isChecked,\n        disabled: disabled,\n        ...props\n    });\n};\nconst _CheckboxLabel = ({ children, ...props })=>{\n    return jsx(\"label\", {\n        className: `${classNames.label} ${classNames.checkboxLabel}`,\n        ...props,\n        children: children\n    });\n};\nconst _Checkmark = ({ ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.checkmark}`,\n        ...props,\n        children: jsx(\"svg\", {\n            width: \"16\",\n            height: \"16\",\n            viewBox: \"0 0 16 16\",\n            fill: \"none\",\n            xmlns: \"http://www.w3.org/2000/svg\",\n            children: jsx(\"path\", {\n                d: \"M3 7.5L6.5 11L13 4.5\",\n                stroke: \"#1e40af\",\n                strokeWidth: \"2\",\n                strokeLinecap: \"round\",\n                strokeLinejoin: \"round\"\n            })\n        })\n    });\n};\nconst _RadioGroup = ({ children, ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.radioGroup}`,\n        ...props,\n        children: children\n    });\n};\nconst _RadioOption = ({ children, ...props })=>{\n    return jsx(\"label\", {\n        className: `${classNames.radioOption}`,\n        ...props,\n        children: children\n    });\n};\nconst _Radio = ({ ...props })=>{\n    return jsxs(Fragment, {\n        children: [\n            jsx(\"input\", {\n                type: \"radio\",\n                className: `${classNames.hiddenRadio}`,\n                ...props\n            }),\n            jsx(\"span\", {\n                className: `${classNames.customRadio}`\n            })\n        ]\n    });\n};\nconst _TextOnlyContent = ({ children, ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.textOnlyContent}`,\n        ...props,\n        children: children\n    });\n};\nconst _SuccessMessage = ({ children, ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.successMessage}`,\n        ...props,\n        children: children\n    });\n};\nconst _FormErrorMessage = ({ children, ...props })=>{\n    return jsx(\"div\", {\n        className: `${classNames.successMessage}`,\n        ...props,\n        children: children\n    });\n};\nconst CheckboxContainer = withCSS(_CheckboxContainer, checkboxContainerStyles, 'CheckboxContainer' + version);\nconst Checkbox = withCSS(_Checkbox, checkboxStyles, 'Checkbox' + version);\nconst CheckboxLabel = withCSS(_CheckboxLabel, checkboxLabelStyles, 'CheckboxLabel' + version);\nconst Checkmark = withCSS(_Checkmark, checkmarkStyles, 'Checkmark' + version);\nconst RadioGroup = withCSS(_RadioGroup, radioGroupStyles, 'RadioGroup' + version);\nconst RadioOption = withCSS(_RadioOption, radioOptionStyles, 'RadioOption' + version);\nconst Radio = withCSS(_Radio, [\n    ...hiddenRadioStyles,\n    ...customRadioStyles\n], 'Radio' + version);\nconst TextOnlyContent = withCSS(_TextOnlyContent, textOnlyContentStyles, 'TextOnlyContent' + version);\nconst SuccessMessage = withCSS(_SuccessMessage, successMessageStyles, 'SuccessMessage' + version);\nwithCSS(_FormErrorMessage, formErrorMessageStyles, 'FormErrorMessage' + version);\nconst Input = withCSS(_Input, inputStyles, 'Input' + version);\nconst FormContainer = withCSS(_FormContainer, formContainerStyles, 'FormContainer' + version);\nconst FormRow = withCSS(_FormRow, formRowStyles, 'FormRow' + version);\nconst Loader = withCSS(_Loader, loaderStyles, 'Loader' + version);\nconst Label = withCSS(_Label, labelStyles, 'Label' + version);\nconst Select = withCSS(_Select, selectStyles, 'Select' + version);\nconst TextArea = withCSS(_Textarea, textAreaStyles, 'TextArea' + version);\nconst ErrorMessage = withCSS(_ErrorMessage, errorMessageStyles, 'ErrorMessage' + version);\n\nexport { Checkbox, CheckboxContainer, CheckboxLabel, Checkmark, ErrorMessage, FormContainer, FormRow, Input, Label, Loader, Radio, RadioGroup, RadioOption, Select, SuccessMessage, TextArea, TextOnlyContent };\n","import { createStore } from 'https://framer.com/m/framer/store.js';\nimport { useState, useCallback } from 'react';\n\n// Hook for validating business email domains\nconst useInvalidDomains = ()=>{\n    const [invalidDomains, setInvalidDomains] = useState([]);\n    const [isLoaded, setIsLoaded] = useState(false);\n    const loadDomains = useCallback(async ()=>{\n        if (!isLoaded) {\n            try {\n                const endpoint = \"/miro-site-lp-build-api\";\n                const response = await fetch(`${endpoint}/invalid-email-domains/`);\n                const result = await response.json();\n                setInvalidDomains(result);\n                setIsLoaded(true);\n            } catch (error) {\n                console.error(\"Error loading invalid domains:\", error);\n            }\n        }\n    }, [\n        isLoaded\n    ]);\n    const checkDomainName = useCallback((email)=>{\n        let emailDomain = \"\";\n        const pos = email.search(\"@\");\n        if (pos > 0) {\n            emailDomain = email.slice(pos + 1);\n        }\n        return invalidDomains.includes(emailDomain);\n    }, [\n        invalidDomains\n    ]);\n    return {\n        loadDomains,\n        checkDomainName\n    };\n};\nconst getCookie = (key)=>{\n    const cookies = document.cookie.split(\";\").reduce((acc, curr)=>{\n        const [cookieKey, cookieValue] = curr.trim().split(\"=\");\n        acc[cookieKey] = cookieValue;\n        return acc;\n    }, {});\n    return cookies[key] || \"\";\n};\nconst getURLParameter = (param)=>{\n    const urlParams = new URLSearchParams(window.location.search);\n    return urlParams.get(param) || \"\";\n};\nconst getMarketoParamKey = (name)=>{\n    return \"marketoUtm.\" + name;\n};\nconst getLastServerViewedExperiment = ()=>{\n    const cookieValue = getCookie(\"server_experiment_viewed\");\n    const result = cookieValue ? JSON.parse(cookieValue) : {};\n    return {\n        name: result?.experiment_name,\n        variant: result?.treatment\n    };\n};\nconst addLinkedinPixel = ()=>{\n    const linkedinPixel = document.createElement(\"img\");\n    linkedinPixel.setAttribute(\"width\", \"1\");\n    linkedinPixel.setAttribute(\"height\", \"1\");\n    linkedinPixel.setAttribute(\"src\", \"https://px.ads.linkedin.com/collect/?pid=1370905&conversionId=2514145&fmt=gif\");\n    linkedinPixel.style.display = \"none\";\n    document.body.appendChild(linkedinPixel);\n};\nconst extractFieldOptions = (element)=>{\n    const options = [];\n    Array.from(element.options).forEach((option)=>{\n        options.push({\n            value: option.value,\n            label: option.text\n        });\n    });\n    return options;\n};\nconst formatLabel = (label)=>{\n    if (label) {\n        label?.querySelector(\".mktoAsterix\")?.remove();\n    }\n    return label?.innerHTML || \"\";\n};\nconst getLabelForFieldRow = (row, inputElement)=>{\n    // Find the label associated with this input\n    // First try by for attribute\n    let label = row.querySelector(`label[for=\"${inputElement.id}\"]`);\n    // If not found, try finding the closest label\n    if (!label) {\n        const formCol = inputElement.closest(\".mktoFormCol\");\n        if (formCol) {\n            label = formCol.querySelector(\"label\");\n        }\n    }\n    return formatLabel(label);\n};\nconst processFormRow = (row)=>{\n    // Check for text-only content\n    const htmlTextElement = row.querySelector(\".mktoHtmlText\");\n    if (htmlTextElement) {\n        return [\n            {\n                id: \"\",\n                name: \"\",\n                type: \"text-only\",\n                required: false,\n                label: \"\",\n                htmlContent: htmlTextElement.innerHTML\n            }\n        ];\n    }\n    const inputs = row.querySelectorAll(\"input, select, textarea\");\n    if (!inputs.length) return [];\n    const fields = [];\n    const processedGroups = new Set();\n    inputs.forEach((input)=>{\n        const inputElement = input;\n        // Skip hidden inputs as they're handled separately\n        if (inputElement instanceof HTMLInputElement && inputElement.type === \"hidden\") {\n            return;\n        }\n        const fieldType = inputElement.tagName.toLowerCase() === \"select\" ? \"select\" : inputElement.tagName.toLowerCase() === \"textarea\" ? \"textarea\" : inputElement.type;\n        const name = inputElement.name;\n        // Skip if we've already processed this group\n        if ((fieldType === \"radio\" || fieldType === \"checkbox\") && processedGroups.has(name)) {\n            return;\n        }\n        // Check if this is a checkbox list (multiple checkboxes with the same name)\n        const isCheckboxList = fieldType === \"checkbox\" && row.querySelectorAll(`input[name=\"${name}\"]`).length > 1;\n        const field = {\n            id: inputElement.id,\n            name: name,\n            type: isCheckboxList ? \"checkboxList\" : fieldType,\n            required: inputElement.required,\n            label: getLabelForFieldRow(row, inputElement),\n            placeholder: \"placeholder\" in inputElement ? inputElement.placeholder : undefined,\n            isEmailField: inputElement?.classList?.contains(\"mktoEmailField\"),\n            options: []\n        };\n        if (fieldType === \"select\") {\n            field.options = extractFieldOptions(inputElement);\n        } else if (fieldType === \"radio\" || isCheckboxList) {\n            processedGroups.add(name);\n            // Get all inputs in this group within the row\n            const groupInputs = row.querySelectorAll(`input[name=\"${name}\"]`);\n            // For group fields, try to get the overall label from the row\n            const groupLabel = formatLabel(row.querySelector(\"label\"));\n            field.label = groupLabel;\n            field.options = Array.from(groupInputs).map((groupInput)=>{\n                const input = groupInput;\n                const inputLabel = row.querySelector(`label[for=\"${input.id}\"]`);\n                return {\n                    value: input.value,\n                    label: inputLabel ? inputLabel.textContent || input.value : input.value\n                };\n            });\n        }\n        fields.push(field);\n    });\n    return fields;\n};\nconst processHiddenFields = (form)=>{\n    const hiddenInputs = form.querySelectorAll('input[type=\"hidden\"]');\n    const hiddenFieldsData = {};\n    hiddenInputs.forEach((input)=>{\n        const inputElement = input;\n        const fieldName = inputElement.name;\n        hiddenFieldsData[fieldName] = getHiddenFieldValue(inputElement, fieldName);\n    });\n    return hiddenFieldsData;\n};\nconst getHiddenFieldValue = (inputElement, fieldName)=>{\n    if (inputElement.value) {\n        return inputElement.value;\n    }\n    // Check cookies first and then URL parameters\n    const cookieValue = getCookie(fieldName);\n    if (cookieValue) {\n        return cookieValue;\n    }\n    return getURLParameter(fieldName) || \"\";\n};\nconst useMarketoFormStore = createStore({\n    isFormLoading: false\n});\n\nexport { addLinkedinPixel, extractFieldOptions, formatLabel, getCookie, getHiddenFieldValue, getLabelForFieldRow, getLastServerViewedExperiment, getMarketoParamKey, getURLParameter, processFormRow, processHiddenFields, useInvalidDomains, useMarketoFormStore };\n","import { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { ControlType } from 'framer';\nimport ButtonsSubmitButton from 'https://framer.com/m/Buttons-Submit-Button-s9Qi.js@9fVDNfrYO6MqcwTbTmCa';\nimport { useState, useRef, useEffect } from 'react';\nimport { SuccessMessage, Loader, FormContainer, FormRow, ErrorMessage, Label, Input, RadioGroup, RadioOption, Radio, Checkbox, Checkmark, CheckboxLabel, CheckboxContainer, TextArea, Select, TextOnlyContent } from './marketo-components.esm.js';\nimport { useInvalidDomains, useMarketoFormStore, processFormRow, processHiddenFields, getLastServerViewedExperiment, getURLParameter, getMarketoParamKey, addLinkedinPixel } from './marketo-helpers.esm.js';\n\n/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */ function MarketoFramerForm({ formId, successMessage, isSalesForm, fastlaneCampaignId, validateBusinessEmails, invalidBusinessEmailMessage }) {\n    const [fields, setFields] = useState([]);\n    const [fieldRows, setFieldRows] = useState([]);\n    const [formData, setFormData] = useState({});\n    const [hiddenFields, setHiddenFields] = useState({});\n    const [status, setStatus] = useState({\n        type: null,\n        message: ''\n    });\n    const [formErrors, setFormErrors] = useState({});\n    const { loadDomains, checkDomainName } = useInvalidDomains();\n    const [isScriptLoaded, setScrpitLoaded] = useState(false);\n    const [marketoFormStore, setMarketoFormStore] = useMarketoFormStore();\n    const marketoFormRef = useRef(null);\n    const FORM_BASE_URL = 'https://228-gpv-835.mktoweb.com';\n    const FORM_MUNCHKIN_ID = '228-gpv-835';\n    const initializeForm = ()=>{\n        if (marketoFormStore.isFormLoading) {\n            return false;\n        }\n        setMarketoFormStore({\n            isFormLoading: true\n        });\n        marketoFormRef?.current?.setAttribute('id', 'mktoForm_' + formId);\n        window?.MktoForms2?.loadForm(FORM_BASE_URL, FORM_MUNCHKIN_ID, formId);\n        window?.MktoForms2?.whenReady((form)=>{\n            const formElement = form.getFormElem()[0];\n            const formRows = formElement.querySelectorAll('.mktoFormRow');\n            const processedFormRows = [];\n            const formFields = [];\n            formRows.forEach((row)=>{\n                const fieldsInRow = processFormRow(row);\n                if (fieldsInRow && fieldsInRow.length > 0) {\n                    processedFormRows.push(fieldsInRow);\n                    formFields.push(...fieldsInRow);\n                }\n            });\n            const hiddenFormFields = processHiddenFields(formElement);\n            setFields(formFields);\n            setFieldRows(processedFormRows);\n            setHiddenFields(hiddenFormFields);\n            marketoFormRef.current?.setAttribute('id', '');\n            setMarketoFormStore({\n                isFormLoading: false\n            });\n        });\n        return true;\n    };\n    const appendScript = async ()=>{\n        if (window.MktoForms2) return setScrpitLoaded(true);\n        const script = document.createElement('script');\n        script.defer = true;\n        script.onload = ()=>window.MktoForms2 ? setScrpitLoaded(true) : null;\n        script.src = `${FORM_BASE_URL}/js/forms2/js/forms2.min.js`;\n        document.head.appendChild(script);\n    };\n    useEffect(()=>{\n        if (validateBusinessEmails) {\n            loadDomains();\n        }\n    }, [\n        validateBusinessEmails,\n        loadDomains\n    ]);\n    useEffect(()=>{\n        let intervalId;\n        if (isScriptLoaded) {\n            intervalId = setInterval(()=>{\n                if (initializeForm()) {\n                    clearInterval(intervalId);\n                }\n            }, 250);\n        }\n        appendScript();\n        return ()=>{\n            clearInterval(intervalId);\n        };\n    }, [\n        isScriptLoaded,\n        formId\n    ]);\n    const validateBusinessEmail = (name, email)=>{\n        if (!validateBusinessEmails || !email) return true;\n        const isValidBusinessEmail = !checkDomainName(email);\n        if (!isValidBusinessEmail) {\n            setFormErrors((prev)=>({\n                    ...prev,\n                    [name]: invalidBusinessEmailMessage || 'Must be a Business email.'\n                }));\n        } else {\n            setFormErrors((prev)=>({\n                    ...prev,\n                    [name]: ''\n                }));\n        }\n        return isValidBusinessEmail;\n    };\n    const handleEmailBlur = (field, email)=>{\n        if (!field.isEmailField) {\n            return;\n        }\n        validateBusinessEmail(field.name, email);\n    };\n    const handleInputChange = (name, value)=>{\n        setFormData((prev)=>({\n                ...prev,\n                [name]: value\n            }));\n        if (formErrors[name]) {\n            setFormErrors((prev)=>({\n                    ...prev,\n                    [name]: ''\n                }));\n        }\n    };\n    const renderField = (field)=>{\n        const hasError = !!formErrors[field.name];\n        switch(field.type){\n            case 'text-only':\n                return jsx(TextOnlyContent, {\n                    dangerouslySetInnerHTML: {\n                        __html: field.htmlContent || ''\n                    }\n                });\n            case 'select':\n                return jsxs(\"div\", {\n                    children: [\n                        jsx(Label, {\n                            dangerouslySetInnerHTML: {\n                                __html: field.label\n                            }\n                        }),\n                        jsx(Select, {\n                            name: field.name,\n                            required: field.required,\n                            hasError: hasError,\n                            value: formData[field.name] || '',\n                            onChange: (e)=>handleInputChange(field.name, e.target.value),\n                            children: field.options?.map((option)=>jsx(\"option\", {\n                                    value: option.value,\n                                    children: option.label\n                                }, option.value))\n                        })\n                    ]\n                });\n            case 'textarea':\n                return jsxs(Fragment, {\n                    children: [\n                        jsx(Label, {\n                            dangerouslySetInnerHTML: {\n                                __html: field.label\n                            }\n                        }),\n                        jsx(TextArea, {\n                            name: field.name,\n                            required: field.required,\n                            placeholder: field.placeholder,\n                            hasError: hasError,\n                            value: formData[field.name] || '',\n                            onChange: (e)=>handleInputChange(field.name, e.target.value)\n                        })\n                    ]\n                });\n            case 'checkbox':\n                return jsxs(CheckboxContainer, {\n                    children: [\n                        jsxs(\"div\", {\n                            style: {\n                                position: 'relative'\n                            },\n                            children: [\n                                jsx(Checkbox, {\n                                    name: field.name,\n                                    isChecked: !!formData[field.name],\n                                    hasError: hasError,\n                                    onChange: (e)=>handleInputChange(field.name, e.target.checked),\n                                    checked: !!formData[field.name]\n                                }),\n                                !!formData[field.name] && jsx(Checkmark, {})\n                            ]\n                        }),\n                        jsx(CheckboxLabel, {\n                            dangerouslySetInnerHTML: {\n                                __html: field.label\n                            }\n                        })\n                    ]\n                });\n            case 'checkboxList':\n                return jsxs(\"div\", {\n                    children: [\n                        jsx(Label, {\n                            style: {\n                                marginBottom: '12px'\n                            },\n                            dangerouslySetInnerHTML: {\n                                __html: field.label\n                            }\n                        }),\n                        field.options?.map((option)=>{\n                            // Initialize the selected values as an array if not already\n                            const selectedValues = Array.isArray(formData[field.name]) ? formData[field.name] : [];\n                            const isChecked = selectedValues.includes(option.value);\n                            return jsxs(\"div\", {\n                                style: {\n                                    display: 'flex',\n                                    alignItems: 'center',\n                                    gap: '8px'\n                                },\n                                children: [\n                                    jsxs(\"div\", {\n                                        style: {\n                                            position: 'relative'\n                                        },\n                                        children: [\n                                            jsx(Checkbox, {\n                                                name: `${field.name}[]`,\n                                                value: option.value,\n                                                isChecked: isChecked,\n                                                hasError: hasError,\n                                                onChange: (e)=>{\n                                                    const newValues = [\n                                                        ...selectedValues\n                                                    ];\n                                                    if (e.target.checked) {\n                                                        if (!newValues.includes(option.value)) {\n                                                            newValues.push(option.value);\n                                                        }\n                                                    } else {\n                                                        const index = newValues.indexOf(option.value);\n                                                        if (index !== -1) {\n                                                            newValues.splice(index, 1);\n                                                        }\n                                                    }\n                                                    handleInputChange(field.name, newValues);\n                                                },\n                                                checked: isChecked\n                                            }),\n                                            isChecked && jsx(Checkmark, {})\n                                        ]\n                                    }),\n                                    jsx(CheckboxLabel, {\n                                        children: option.label\n                                    })\n                                ]\n                            }, option.value);\n                        })\n                    ]\n                });\n            case 'radio':\n                return jsxs(RadioGroup, {\n                    children: [\n                        jsx(Label, {\n                            dangerouslySetInnerHTML: {\n                                __html: field.label\n                            }\n                        }),\n                        field.options?.map((option)=>jsxs(RadioOption, {\n                                children: [\n                                    jsx(Radio, {\n                                        name: field.name,\n                                        value: option.value,\n                                        checked: formData[field.name] === option.value,\n                                        onChange: (e)=>handleInputChange(field.name, e.target.value)\n                                    }),\n                                    jsx(\"span\", {\n                                        children: option.label\n                                    })\n                                ]\n                            }, option.value))\n                    ]\n                });\n            default:\n                return jsxs(Fragment, {\n                    children: [\n                        jsx(Label, {\n                            dangerouslySetInnerHTML: {\n                                __html: field.label\n                            }\n                        }),\n                        jsx(Input, {\n                            type: field.type,\n                            name: field.name,\n                            required: field.required,\n                            placeholder: field.placeholder,\n                            hasError: hasError,\n                            value: formData[field.name] || '',\n                            onChange: (e)=>handleInputChange(field.name, e.target.value),\n                            onBlur: (e)=>handleEmailBlur(field, e.target.value)\n                        })\n                    ]\n                });\n        }\n    };\n    const handleSubmit = async (e)=>{\n        e.preventDefault();\n        const emailField = fields.find((field)=>field.isEmailField);\n        if (emailField && typeof window.OptanonWrapper !== 'undefined' && window.OptanonWrapper.isForceOptOut()) {\n            setFormErrors((prev)=>({\n                    ...prev,\n                    [emailField.name]: 'There was an error submitting your form'\n                }));\n            return;\n        }\n        // Validate business email if needed\n        if (validateBusinessEmails && emailField) {\n            const isValidBusinessEmail = validateBusinessEmail(emailField.name, formData[emailField.name]);\n            if (!isValidBusinessEmail) {\n                return;\n            }\n        }\n        setStatus({\n            type: 'loading',\n            message: ''\n        });\n        setFormErrors({});\n        try {\n            const marketoForm = window.MktoForms2.getForm(formId);\n            // Set form values\n            const marketoFormData = {\n                ...formData,\n                ...hiddenFields\n            };\n            // Add experiment data for sales forms\n            if (isSalesForm) {\n                const experiment = getLastServerViewedExperiment();\n                if (experiment && experiment.name) {\n                    marketoForm.addHiddenFields({\n                        server_experiment_viewed: experiment.name + '=' + experiment.variant\n                    });\n                }\n            }\n            marketoForm.vals(marketoFormData);\n            // Validate form\n            const validationResult = marketoForm.validate();\n            if (!validationResult) {\n                const formElement = marketoForm.getFormElem()[0];\n                const fieldDescriptors = [\n                    ...formElement.querySelectorAll('.mktoFieldDescriptor')\n                ];\n                const newErrors = {};\n                fieldDescriptors.map((descriptor)=>{\n                    // Get the field descriptor data\n                    return window.MktoForms2.$(descriptor).data('mktoFieldDescriptor');\n                }).filter((descriptor)=>{\n                    // Filter only fields that have validation messages and are invalid\n                    return descriptor && descriptor.validationMessage !== undefined && descriptor.validatorElem[0].classList.contains('mktoInvalid');\n                }).forEach((descriptor)=>{\n                    const fieldName = descriptor.name;\n                    newErrors[fieldName] = descriptor.validationMessage;\n                });\n                setFormErrors(newErrors);\n                setStatus({\n                    type: 'error',\n                    message: ''\n                });\n                return;\n            }\n            // Submit form\n            await new Promise((resolve, reject)=>{\n                marketoForm.onSuccess((data, followUpUrl)=>{\n                    const currentUrl = window.location.origin + window.location.pathname;\n                    const _followUpUrl = new URL(followUpUrl);\n                    const parsedFollowUpUrl = _followUpUrl.origin + _followUpUrl.pathname;\n                    let leadSource = getURLParameter('lead_source');\n                    const referrer = document.referrer;\n                    const events = [];\n                    // Handle lead source for sales forms\n                    if (!!leadSource && isSalesForm) {\n                        const _trigger = getURLParameter('Trigger');\n                        const _window = getURLParameter('window');\n                        if (_trigger) {\n                            leadSource = 'Trigger_' + leadSource;\n                        } else if (_window) {\n                            leadSource = leadSource + ' window';\n                        }\n                    }\n                    // Push data layer events\n                    events.push({\n                        event: 'marketo_form_submitted',\n                        form_id: formId,\n                        form_data: data,\n                        lead_source: leadSource,\n                        user_email: data.Email ?? '',\n                        referer: referrer,\n                        Contact_form_page: window.location.href\n                    });\n                    if (isSalesForm) {\n                        events.push({\n                            event: 'ga-event',\n                            hitType: 'event',\n                            eventCategory: 'company_form_submission',\n                            eventAction: 'Sales',\n                            eventLabel: referrer,\n                            utm_source: leadSource\n                        });\n                        events.push({\n                            event: 'contact-sales-form-submit'\n                        });\n                        // Clear localStorage UTM parameters\n                        const marketoQueryParamsNames = [\n                            'utmsource',\n                            'utmmedium',\n                            'utmcampaign',\n                            'utmcontent',\n                            'utmname'\n                        ];\n                        marketoQueryParamsNames.forEach((name)=>{\n                            window.localStorage.removeItem(getMarketoParamKey(name));\n                        });\n                    }\n                    // Push events to dataLayer\n                    if (typeof window.dataLayer !== 'undefined') {\n                        window.dataLayer.push(...events);\n                    }\n                    // Handle sales form specific actions\n                    if (isSalesForm) {\n                        addLinkedinPixel();\n                        // Handle Drift API integration\n                        if (fastlaneCampaignId) {\n                            try {\n                                window.drift?.api?.collectFormData(marketoFormData, {\n                                    campaignId: Number(fastlaneCampaignId),\n                                    followupUrl: currentUrl !== parsedFollowUpUrl ? followUpUrl : undefined\n                                });\n                                resolve(true);\n                                return false;\n                            } catch (error) {\n                                console.error('Error executing fastlane on sales form', error);\n                            }\n                        }\n                    }\n                    // Handle redirect\n                    const shouldRedirect = currentUrl !== parsedFollowUpUrl;\n                    if (shouldRedirect) {\n                        window.open(followUpUrl, followUpUrl.startsWith('https://miro.com/') ? '_self' : '_blank');\n                    }\n                    setStatus({\n                        type: 'success',\n                        message: ''\n                    });\n                    setFormData({});\n                    resolve(true);\n                    return false;\n                });\n                marketoForm.submit();\n            });\n        } catch (error) {\n            setStatus({\n                type: 'error',\n                message: ''\n            });\n        }\n    };\n    if (status.type === 'success') {\n        return jsx(SuccessMessage, {\n            dangerouslySetInnerHTML: {\n                __html: successMessage || ''\n            }\n        });\n    }\n    return jsxs(\"div\", {\n        children: [\n            fields.length === 0 ? jsx(Loader, {}) : jsxs(FormContainer, {\n                children: [\n                    fieldRows.map((row)=>{\n                        const haveMultipleElements = row.length > 1;\n                        if (haveMultipleElements) {\n                            return jsx(FormRow, {\n                                children: row.map((field)=>jsx(\"div\", {\n                                        children: renderField(field)\n                                    }, field.id))\n                            }, `row-${row[0]?.id}`);\n                        } else {\n                            const field = row[0];\n                            return jsxs(\"div\", {\n                                children: [\n                                    renderField(field),\n                                    formErrors[field.name] && jsx(ErrorMessage, {\n                                        dangerouslySetInnerHTML: {\n                                            __html: formErrors[field.name]\n                                        }\n                                    })\n                                ]\n                            }, field.id);\n                        }\n                    }),\n                    jsx(ButtonsSubmitButton, {\n                        style: {\n                            width: '100%'\n                        },\n                        button: \"Submit\",\n                        onClick: handleSubmit,\n                        variant: status.type === 'loading' ? 'Loading' : status.type === 'success' ? 'Success' : 'Default'\n                    })\n                ]\n            }),\n            jsx(\"form\", {\n                ref: marketoFormRef,\n                style: {\n                    display: 'none'\n                }\n            })\n        ]\n    });\n}\n// Add Framer property controls\nconst propertyControls = {\n    formId: {\n        type: ControlType.String,\n        title: 'Marketo Form ID',\n        defaultValue: ''\n    },\n    successMessage: {\n        type: ControlType.String,\n        title: 'Success Message',\n        defaultValue: 'Thank you!'\n    },\n    isSalesForm: {\n        type: ControlType.Boolean,\n        title: 'Is Sales Form',\n        defaultValue: false\n    },\n    fastlaneCampaignId: {\n        type: ControlType.String,\n        title: 'Fastlane Campaign ID',\n        defaultValue: ''\n    },\n    validateBusinessEmails: {\n        type: ControlType.Boolean,\n        title: 'Validate Business Emails',\n        defaultValue: false\n    },\n    invalidBusinessEmailMessage: {\n        type: ControlType.String,\n        title: 'Invalid Business Email Message',\n        defaultValue: 'Must be a Business email.'\n    }\n};\nMarketoFramerForm.propertyControls = propertyControls;\n\nexport { MarketoFramerForm };\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\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\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key)=>{\n    PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = {\n    type: \"error\",\n    data: \"parser error\"\n};\n\nexport { ERROR_PACKET, PACKET_TYPES, PACKET_TYPES_REVERSE };\n","import { PACKET_TYPES } from './commons.esm.js';\n\nconst withNativeBlob = typeof Blob === \"function\" || typeof Blob !== \"undefined\" && Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj)=>{\n    return typeof ArrayBuffer.isView === \"function\" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst 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([\n                data\n            ]), callback);\n        }\n    }\n    // plain string\n    return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst 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}\nlet 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\nexport { encodePacket, encodePacketToBinary };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor(let i = 0; i < chars.length; i++){\n    lookup[chars.charCodeAt(i)] = i;\n}\nconst 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\nexport { decode };\n","import { PACKET_TYPES_REVERSE, ERROR_PACKET } from './commons.esm.js';\nimport { decode } from './contrib/base64-arraybuffer.esm.js';\n\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst 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};\nconst decodeBase64Packet = (data, binaryType)=>{\n    if (withNativeArrayBuffer) {\n        const decoded = decode(data);\n        return mapBinary(decoded, binaryType);\n    } else {\n        return {\n            base64: true,\n            data\n        }; // fallback for old browsers\n    }\n};\nconst mapBinary = (data, binaryType)=>{\n    switch(binaryType){\n        case \"blob\":\n            if (data instanceof Blob) {\n                // from WebSocket + binaryType \"blob\"\n                return data;\n            } else {\n                // from HTTP long-polling or WebTransport\n                return new Blob([\n                    data\n                ]);\n            }\n        case \"arraybuffer\":\n        default:\n            if (data instanceof ArrayBuffer) {\n                // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n                return data;\n            } else {\n                // from WebTransport (Uint8Array)\n                return data.buffer;\n            }\n    }\n};\n\nexport { decodePacket };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */ function Emitter(obj) {\n    if (obj) return mixin(obj);\n}\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */ function mixin(obj) {\n    for(var key in Emitter.prototype){\n        obj[key] = Emitter.prototype[key];\n    }\n    return obj;\n}\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */ Emitter.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};\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */ Emitter.prototype.once = function(event, fn) {\n    function on() {\n        this.off(event, on);\n        fn.apply(this, arguments);\n    }\n    on.fn = fn;\n    this.on(event, on);\n    return this;\n};\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */ Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function(event, fn) {\n    this._callbacks = this._callbacks || {};\n    // all\n    if (0 == arguments.length) {\n        this._callbacks = {};\n        return this;\n    }\n    // specific event\n    var callbacks = this._callbacks['$' + event];\n    if (!callbacks) return this;\n    // remove all handlers\n    if (1 == arguments.length) {\n        delete this._callbacks['$' + event];\n        return this;\n    }\n    // remove specific handler\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    // Remove event specific arrays for event types that no\n    // one is subscribed for to avoid memory leak.\n    if (callbacks.length === 0) {\n        delete this._callbacks['$' + event];\n    }\n    return this;\n};\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */ Emitter.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};\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */ Emitter.prototype.listeners = function(event) {\n    this._callbacks = this._callbacks || {};\n    return this._callbacks['$' + event] || [];\n};\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */ Emitter.prototype.hasListeners = function(event) {\n    return !!this.listeners(event).length;\n};\n\nexport { Emitter };\n","const 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})();\nconst 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})();\nconst defaultBinaryType = \"arraybuffer\";\nfunction createCookieJar() {}\n\nexport { createCookieJar, defaultBinaryType, globalThisShim, nextTick };\n","import { globalThisShim } from './globals.esm.js';\n\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}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThisShim.setTimeout;\nconst 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}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nfunction byteLength(obj) {\n    if (typeof obj === \"string\") {\n        return utf8Length(obj);\n    }\n    // arraybuffer or blob\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 < 0x80) {\n            length += 1;\n        } else if (c < 0x800) {\n            length += 2;\n        } else if (c < 0xd800 || c >= 0xe000) {\n            length += 3;\n        } else {\n            i++;\n            length += 4;\n        }\n    }\n    return length;\n}\n/**\n * Generates a random 8-characters string.\n */ function randomString() {\n    return Date.now().toString(36).substring(3) + Math.random().toString(36).substring(2, 5);\n}\n\nexport { byteLength, installTimerFunctions, pick, randomString };\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */ function encode(obj) {\n    let str = '';\n    for(let i in obj){\n        if (obj.hasOwnProperty(i)) {\n            if (str.length) str += '&';\n            str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n        }\n    }\n    return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */ function decode(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\nexport { decode, encode };\n","import '../../../engine.io-parser/build/esm/encodePacket.browser.esm.js';\nimport { decodePacket } from '../../../engine.io-parser/build/esm/decodePacket.browser.esm.js';\nimport '../../../engine.io-parser/build/esm/commons.esm.js';\nimport { Emitter } from '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport { installTimerFunctions } from './util.esm.js';\nimport { encode } from './contrib/parseqs.esm.js';\n\nclass TransportError extends Error {\n    constructor(reason, description, context){\n        super(reason);\n        this.description = description;\n        this.context = context;\n        this.type = \"TransportError\";\n    }\n}\nclass Transport extends Emitter {\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     */ onError(reason, description, context) {\n        super.emitReserved(\"error\", new TransportError(reason, description, context));\n        return this;\n    }\n    /**\n     * Opens the transport.\n     */ open() {\n        this.readyState = \"opening\";\n        this.doOpen();\n        return this;\n    }\n    /**\n     * Closes the transport.\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     */ send(packets) {\n        if (this.readyState === \"open\") {\n            this.write(packets);\n        }\n    }\n    /**\n     * Called upon open\n     *\n     * @protected\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     */ 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     */ onPacket(packet) {\n        super.emitReserved(\"packet\", packet);\n    }\n    /**\n     * Called upon close.\n     *\n     * @protected\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     */ pause(onPause) {}\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     * Transport abstract constructor.\n     *\n     * @param {Object} opts - options\n     * @protected\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\nexport { Transport, TransportError };\n","import { encodePacketToBinary, encodePacket } from './encodePacket.browser.esm.js';\nimport { decodePacket } from './decodePacket.browser.esm.js';\nimport { ERROR_PACKET } from './commons.esm.js';\n\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback)=>{\n    // some packets may be added to the array while encoding, so the initial length must be saved\n    const length = packets.length;\n    const encodedPackets = new Array(length);\n    let count = 0;\n    packets.forEach((packet, i)=>{\n        // force base64 encoding for binary packets\n        encodePacket(packet, false, (encodedPacket)=>{\n            encodedPackets[i] = encodedPacket;\n            if (++count === length) {\n                callback(encodedPackets.join(SEPARATOR));\n            }\n        });\n    });\n};\nconst 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                // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\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                // first bit indicates whether the payload is plain text (0) or binary (1)\n                if (packet.data && typeof packet.data !== \"string\") {\n                    header[0] |= 0x80;\n                }\n                controller.enqueue(header);\n                controller.enqueue(encodedPacket);\n            });\n        }\n    });\n}\nlet 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 /* State.READ_HEADER */ ;\n    let expectedLength = -1;\n    let isBinary = false;\n    return new TransformStream({\n        transform (chunk, controller) {\n            chunks.push(chunk);\n            while(true){\n                if (state === 0 /* State.READ_HEADER */ ) {\n                    if (totalLength(chunks) < 1) {\n                        break;\n                    }\n                    const header = concatChunks(chunks, 1);\n                    isBinary = (header[0] & 0x80) === 0x80;\n                    expectedLength = header[0] & 0x7f;\n                    if (expectedLength < 126) {\n                        state = 3 /* State.READ_PAYLOAD */ ;\n                    } else if (expectedLength === 126) {\n                        state = 1 /* State.READ_EXTENDED_LENGTH_16 */ ;\n                    } else {\n                        state = 2 /* State.READ_EXTENDED_LENGTH_64 */ ;\n                    }\n                } else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */ ) {\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 /* State.READ_PAYLOAD */ ;\n                } else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */ ) {\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                        // the maximum safe integer in JavaScript is 2^53 - 1\n                        controller.enqueue(ERROR_PACKET);\n                        break;\n                    }\n                    expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n                    state = 3 /* State.READ_PAYLOAD */ ;\n                } else {\n                    if (totalLength(chunks) < expectedLength) {\n                        break;\n                    }\n                    const data = concatChunks(chunks, expectedLength);\n                    controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n                    state = 0 /* State.READ_HEADER */ ;\n                }\n                if (expectedLength === 0 || expectedLength > maxPayload) {\n                    controller.enqueue(ERROR_PACKET);\n                    break;\n                }\n            }\n        }\n    });\n}\nconst protocol = 4;\n\nexport { createPacketDecoderStream, createPacketEncoderStream, decodePacket, decodePayload, encodePacket, encodePayload, protocol };\n","import { Transport } from '../transport.esm.js';\nimport { randomString } from '../util.esm.js';\nimport { decodePayload, encodePayload } from '../../../../engine.io-parser/build/esm/index.esm.js';\n\nclass Polling extends Transport {\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     */ 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     */ 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     */ _poll() {\n        this._polling = true;\n        this.doPoll();\n        this.emitReserved(\"poll\");\n    }\n    /**\n     * Overloads onData to detect payloads.\n     *\n     * @protected\n     */ onData(data) {\n        const callback = (packet)=>{\n            // if its the first message we consider the transport open\n            if (\"opening\" === this.readyState && packet.type === \"open\") {\n                this.onOpen();\n            }\n            // if its a close packet, we close the ongoing requests\n            if (\"close\" === packet.type) {\n                this.onClose({\n                    description: \"transport closed by the server\"\n                });\n                return false;\n            }\n            // otherwise bypass onData and handle the message\n            this.onPacket(packet);\n        };\n        // decode payload\n        decodePayload(data, this.socket.binaryType).forEach(callback);\n        // if an event did not trigger closing\n        if (\"closed\" !== this.readyState) {\n            // if we got data we're not polling\n            this._polling = false;\n            this.emitReserved(\"pollComplete\");\n            if (\"open\" === this.readyState) {\n                this._poll();\n            }\n        }\n    }\n    /**\n     * For polling, send a close packet.\n     *\n     * @protected\n     */ doClose() {\n        const close = ()=>{\n            this.write([\n                {\n                    type: \"close\"\n                }\n            ]);\n        };\n        if (\"open\" === this.readyState) {\n            close();\n        } else {\n            // in case we're trying to close while\n            // handshaking is in progress (GH-164)\n            this.once(\"open\", close);\n        }\n    }\n    /**\n     * Writes a packets payload.\n     *\n     * @param {Array} packets - data packets\n     * @protected\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     */ uri() {\n        const schema = this.opts.secure ? \"https\" : \"http\";\n        const query = this.query || {};\n        // cache busting is forced\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    constructor(){\n        super(...arguments);\n        this._polling = false;\n    }\n}\n\nexport { Polling };\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n    value = typeof XMLHttpRequest !== 'undefined' && 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n// if XMLHttp support is disabled in IE then it will throw\n// when trying to create\n}\nconst hasCORS = value;\n\nexport { hasCORS };\n","import { Polling } from './polling.esm.js';\nimport { Emitter } from '../../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport { pick, installTimerFunctions } from '../util.esm.js';\nimport { globalThisShim } from '../globals.esm.js';\nimport { hasCORS } from '../contrib/has-cors.esm.js';\n\nfunction empty() {}\nclass BaseXHR extends Polling {\n    /**\n     * Sends data.\n     *\n     * @param {String} data to send.\n     * @param {Function} called upon flush.\n     * @private\n     */ doWrite(data, fn) {\n        const req = this.request({\n            method: \"POST\",\n            data: 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     */ 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    /**\n     * XHR Polling constructor.\n     *\n     * @param {Object} opts\n     * @package\n     */ constructor(opts){\n        super(opts);\n        if (typeof location !== \"undefined\") {\n            const isSSL = \"https:\" === location.protocol;\n            let port = location.port;\n            // some user agents have empty `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}\nclass Request extends Emitter {\n    /**\n     * Creates the XHR object and sends the request.\n     *\n     * @private\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                    // @ts-ignore\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            if (\"POST\" === this._method) {\n                try {\n                    xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n                } catch (e) {}\n            }\n            try {\n                xhr.setRequestHeader(\"Accept\", \"*/*\");\n            } catch (e) {}\n            (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n            // ie6 check\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 _a;\n                if (xhr.readyState === 3) {\n                    (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(// @ts-ignore\n                    xhr.getResponseHeader(\"set-cookie\"));\n                }\n                if (4 !== xhr.readyState) return;\n                if (200 === xhr.status || 1223 === xhr.status) {\n                    this._onLoad();\n                } else {\n                    // make sure the `error` event handler that's user-set\n                    // does not throw in the same tick and gets caught here\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            // Need to defer since .create() is called directly from the constructor\n            // and thus the 'error' event can only be only bound *after* this exception\n            // occurs.  Therefore, also, we cannot throw here at all.\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     */ _onError(err) {\n        this.emitReserved(\"error\", err, this._xhr);\n        this._cleanup(true);\n    }\n    /**\n     * Cleans up house.\n     *\n     * @private\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        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     */ _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     */ abort() {\n        this._cleanup();\n    }\n    /**\n     * Request constructor\n     *\n     * @param {Object} options\n     * @package\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 = undefined !== opts.data ? opts.data : null;\n        this._create();\n    }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */ if (typeof document !== \"undefined\") {\n    // @ts-ignore\n    if (typeof attachEvent === \"function\") {\n        // @ts-ignore\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}\nconst hasXHR2 = function() {\n    const xhr = newRequest({\n        xdomain: false\n    });\n    return xhr && xhr.responseType !== null;\n}();\n/**\n * HTTP long-polling based on the built-in `XMLHttpRequest` object.\n *\n * Usage: browser\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n */ class XHR extends BaseXHR {\n    request(opts = {}) {\n        Object.assign(opts, {\n            xd: this.xd\n        }, this.opts);\n        return new Request(newRequest, this.uri(), opts);\n    }\n    constructor(opts){\n        super(opts);\n        const forceBase64 = opts && opts.forceBase64;\n        this.supportsBinary = hasXHR2 && !forceBase64;\n    }\n}\nfunction newRequest(opts) {\n    const xdomain = opts.xdomain;\n    // XMLHttpRequest can be disabled on IE\n    try {\n        if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n            return new XMLHttpRequest();\n        }\n    } catch (e) {}\n    if (!xdomain) {\n        try {\n            return new globalThisShim[[\n                \"Active\"\n            ].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n        } catch (e) {}\n    }\n}\n\nexport { BaseXHR, Request, XHR };\n","import { Transport } from '../transport.esm.js';\nimport { pick, randomString } from '../util.esm.js';\nimport { encodePacket } from '../../../../engine.io-parser/build/esm/encodePacket.browser.esm.js';\nimport '../../../../engine.io-parser/build/esm/commons.esm.js';\nimport '../../../../engine.io-parser/build/esm/contrib/base64-arraybuffer.esm.js';\nimport { globalThisShim, nextTick } from '../globals.esm.js';\n\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" && typeof navigator.product === \"string\" && navigator.product.toLowerCase() === \"reactnative\";\nclass BaseWS extends Transport {\n    get name() {\n        return \"websocket\";\n    }\n    doOpen() {\n        const uri = this.uri();\n        const protocols = this.opts.protocols;\n        // React Native only supports the 'headers' option, and will print a warning if anything else is passed\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     */ 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        // encodePacket efficient as it uses WS framing\n        // no need for encodePayload\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                // Sometimes the websocket has already been closed but the browser didn't\n                // have a chance of informing us about it yet, in that case send will\n                // throw an error\n                try {\n                    this.doWrite(packet, data);\n                } catch (e) {}\n                if (lastPacket) {\n                    // fake drain\n                    // defer to next tick to allow Socket to clear writeBuffer\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            this.ws.close();\n            this.ws = null;\n        }\n    }\n    /**\n     * Generates uri for connection.\n     *\n     * @private\n     */ uri() {\n        const schema = this.opts.secure ? \"wss\" : \"ws\";\n        const query = this.query || {};\n        // append timestamp to URI\n        if (this.opts.timestampRequests) {\n            query[this.opts.timestampParam] = randomString();\n        }\n        // communicate binary support capabilities\n        if (!this.supportsBinary) {\n            query.b64 = 1;\n        }\n        return this.createUri(schema, query);\n    }\n}\nconst WebSocketCtor = globalThisShim.WebSocket || globalThisShim.MozWebSocket;\n/**\n * WebSocket transport based on the built-in `WebSocket` object.\n *\n * Usage: browser, Node.js (since v21), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @see https://caniuse.com/mdn-api_websocket\n * @see https://nodejs.org/api/globals.html#websocket\n */ class WS 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\nexport { BaseWS, WS };\n","import { Transport } from '../transport.esm.js';\nimport { nextTick } from '../globals.esm.js';\nimport { createPacketDecoderStream, createPacketEncoderStream } from '../../../../engine.io-parser/build/esm/index.esm.js';\n\n/**\n * WebTransport transport based on the built-in `WebTransport` object.\n *\n * Usage: browser, Node.js (with the `@fails-components/webtransport` package)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebTransport\n * @see https://caniuse.com/webtransport\n */ class WT extends Transport {\n    get name() {\n        return \"webtransport\";\n    }\n    doOpen() {\n        try {\n            // @ts-ignore\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        // note: we could have used async/await, but that would require some additional polyfills\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 })=>{\n                        if (done) {\n                            return;\n                        }\n                        this.onPacket(value);\n                        read();\n                    }).catch((err)=>{});\n                };\n                read();\n                const packet = {\n                    type: \"open\"\n                };\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\nexport { WT };\n","import { XHR } from './polling-xhr.esm.js';\nimport { WS } from './websocket.esm.js';\nimport { WT } from './webtransport.esm.js';\n\nconst transports = {\n    websocket: WS,\n    webtransport: WT,\n    polling: XHR\n};\n\nexport { transports };\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */ const re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst 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 > 8000) {\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\nexport { parse };\n","import { transports } from './transports/index.esm.js';\nimport { byteLength, installTimerFunctions } from './util.esm.js';\nimport { decode } from './contrib/parseqs.esm.js';\nimport { parse } from './contrib/parseuri.esm.js';\nimport { Emitter } from '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport { protocol } from '../../../engine.io-parser/build/esm/index.esm.js';\nimport { nextTick, defaultBinaryType, createCookieJar } from './globals.esm.js';\n\nconst withEventListeners = typeof addEventListener === \"function\" && typeof removeEventListener === \"function\";\nconst OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n    // within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the\n    // script, so we create one single event listener here which will forward the event to the socket instances\n    addEventListener(\"offline\", ()=>{\n        OFFLINE_EVENT_LISTENERS.forEach((listener)=>listener());\n    }, false);\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes without upgrade mechanism, which means that it will keep the first low-level transport that\n * successfully establishes the connection.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithoutUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithoutUpgrade({\n *   transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n *   socket.send(\"hello\");\n * });\n *\n * @see SocketWithUpgrade\n * @see Socket\n */ class SocketWithoutUpgrade extends Emitter {\n    /**\n     * Creates transport of the given type.\n     *\n     * @param {String} name - transport name\n     * @return {Transport}\n     * @private\n     */ createTransport(name) {\n        const query = Object.assign({}, this.opts.query);\n        // append engine.io protocol identifier\n        query.EIO = protocol;\n        // transport name\n        query.transport = name;\n        // session id if we already have one\n        if (this.id) 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     */ _open() {\n        if (this.transports.length === 0) {\n            // Emit error on next tick so it can be listened to\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     */ setTransport(transport) {\n        if (this.transport) {\n            this.transport.removeAllListeners();\n        }\n        // set up transport\n        this.transport = transport;\n        // set up transport listeners\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     */ 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     */ _onPacket(packet) {\n        if (\"opening\" === this.readyState || \"open\" === this.readyState || \"closing\" === this.readyState) {\n            this.emitReserved(\"packet\", packet);\n            // Socket is live - any packet counts\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                    // @ts-ignore\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        }\n    }\n    /**\n     * Called upon handshake completion.\n     *\n     * @param {Object} data - handshake obj\n     * @private\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        // In case open handler closes socket\n        if (\"closed\" === this.readyState) return;\n        this._resetPingTimeout();\n    }\n    /**\n     * Sets and resets ping timeout timer based on server pings.\n     *\n     * @private\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     */ _onDrain() {\n        this.writeBuffer.splice(0, this._prevBufferLen);\n        // setting prevBufferLen = 0 is very important\n        // for example, when upgrading, upgrade packet is sent over,\n        // and a nonzero prevBufferLen could cause problems on `drain`\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     */ 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            // keep track of current length of writeBuffer\n            // splice writeBuffer and callbackBuffer on `drain`\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     */ _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; // first packet type\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; // separator + packet type\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     */ /* private */ _hasPingExpired() {\n        if (!this._pingTimeoutTime) 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     */ 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     */ 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     */ _sendPacket(type, data, options, fn) {\n        if (\"function\" === typeof data) {\n            fn = data;\n            data = undefined;\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: type,\n            data: data,\n            options: options\n        };\n        this.emitReserved(\"packetCreate\", packet);\n        this.writeBuffer.push(packet);\n        if (fn) this.once(\"flush\", fn);\n        this.flush();\n    }\n    /**\n     * Closes the connection.\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            // wait for upgrade to finish since we can't send packets while pausing a transport\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     */ _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     */ _onClose(reason, description) {\n        if (\"opening\" === this.readyState || \"open\" === this.readyState || \"closing\" === this.readyState) {\n            // clear timers\n            this.clearTimeoutFn(this._pingTimeoutTimer);\n            // stop event from firing again for transport\n            this.transport.removeAllListeners(\"close\");\n            // ensure transport won't stay open\n            this.transport.close();\n            // ignore further transport communication\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            // set ready state\n            this.readyState = \"closed\";\n            // clear session id\n            this.id = null;\n            // emit close event\n            this.emitReserved(\"close\", reason, description);\n            // clean buffers after, so users can still\n            // grab the buffers on `close` event\n            this.writeBuffer = [];\n            this._prevBufferLen = 0;\n        }\n    }\n    /**\n     * Socket constructor.\n     *\n     * @param {String|Object} uri - uri or options\n     * @param {Object} opts - options\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        /**\n         * The expiration timestamp of the {@link _pingTimeoutTimer} object is tracked, in case the timer is throttled and the\n         * callback is not fired on time. This can happen for example when a laptop is suspended or when a phone is locked.\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) 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            // if no port is specified manually, use the protocol default\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 = decode(this.opts.query);\n        }\n        if (withEventListeners) {\n            if (this.opts.closeOnBeforeunload) {\n                // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n                // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n                // closed/reloaded)\n                this._beforeunloadEventListener = ()=>{\n                    if (this.transport) {\n                        // silently close the 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}\nSocketWithoutUpgrade.protocol = protocol;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithUpgrade({\n *   transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n *   socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see Socket\n */ class SocketWithUpgrade extends SocketWithoutUpgrade {\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     */ _probe(name) {\n        let transport = this.createTransport(name);\n        let failed = false;\n        SocketWithoutUpgrade.priorWebsocketSuccess = false;\n        const onTransportOpen = ()=>{\n            if (failed) return;\n            transport.send([\n                {\n                    type: \"ping\",\n                    data: \"probe\"\n                }\n            ]);\n            transport.once(\"packet\", (msg)=>{\n                if (failed) return;\n                if (\"pong\" === msg.type && \"probe\" === msg.data) {\n                    this.upgrading = true;\n                    this.emitReserved(\"upgrading\", transport);\n                    if (!transport) return;\n                    SocketWithoutUpgrade.priorWebsocketSuccess = \"websocket\" === transport.name;\n                    this.transport.pause(()=>{\n                        if (failed) return;\n                        if (\"closed\" === this.readyState) return;\n                        cleanup();\n                        this.setTransport(transport);\n                        transport.send([\n                            {\n                                type: \"upgrade\"\n                            }\n                        ]);\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                    // @ts-ignore\n                    err.transport = transport.name;\n                    this.emitReserved(\"upgradeError\", err);\n                }\n            });\n        };\n        function freezeTransport() {\n            if (failed) return;\n            // Any callback called by transport should be ignored since now\n            failed = true;\n            cleanup();\n            transport.close();\n            transport = null;\n        }\n        // Handle any error that happens while probing\n        const onerror = (err)=>{\n            const error = new Error(\"probe error: \" + err);\n            // @ts-ignore\n            error.transport = transport.name;\n            freezeTransport();\n            this.emitReserved(\"upgradeError\", error);\n        };\n        function onTransportClose() {\n            onerror(\"transport closed\");\n        }\n        // When the socket is closed while we're probing\n        function onclose() {\n            onerror(\"socket closed\");\n        }\n        // When the socket is upgraded while we're probing\n        function onupgrade(to) {\n            if (transport && to.name !== transport.name) {\n                freezeTransport();\n            }\n        }\n        // Remove all listeners on the transport and on self\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            // favor 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     */ _filterUpgrades(upgrades) {\n        const filteredUpgrades = [];\n        for(let i = 0; i < upgrades.length; i++){\n            if (~this.transports.indexOf(upgrades[i])) filteredUpgrades.push(upgrades[i]);\n        }\n        return filteredUpgrades;\n    }\n    constructor(){\n        super(...arguments);\n        this._upgrades = [];\n    }\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * @example\n * import { Socket } from \"engine.io-client\";\n *\n * const socket = new Socket();\n *\n * socket.on(\"open\", () => {\n *   socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see SocketWithUpgrade\n */ class Socket 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 || [\n                \"polling\",\n                \"websocket\",\n                \"webtransport\"\n            ]).map((transportName)=>transports[transportName]).filter((t)=>!!t);\n        }\n        super(uri, o);\n    }\n}\n\nexport { Socket, SocketWithUpgrade, SocketWithoutUpgrade };\n","import '../../../engine.io-client/build/esm/socket.esm.js';\nimport '../../../engine.io-parser/build/esm/encodePacket.browser.esm.js';\nimport '../../../engine.io-parser/build/esm/commons.esm.js';\nimport '../../../engine.io-parser/build/esm/contrib/base64-arraybuffer.esm.js';\nimport '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport '../../../engine.io-client/build/esm/util.esm.js';\nimport '../../../engine.io-client/build/esm/transports/polling-xhr.esm.js';\nimport '../../../engine.io-client/build/esm/transports/websocket.esm.js';\nimport '../../../engine.io-client/build/esm/globals.esm.js';\nimport { parse } from '../../../engine.io-client/build/esm/contrib/parseuri.esm.js';\n\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n *        Defaults to window.location.\n * @public\n */ function url(uri, path = \"\", loc) {\n    let obj = uri;\n    // default to window.location\n    loc = loc || typeof location !== \"undefined\" && location;\n    if (null == uri) uri = loc.protocol + \"//\" + loc.host;\n    // relative path support\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        // parse\n        obj = parse(uri);\n    }\n    // make sure we treat `localhost:80` and `localhost` equally\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    // define unique id\n    obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n    // define href\n    obj.href = obj.protocol + \"://\" + host + (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n    return obj;\n}\n\nexport { url };\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj)=>{\n    return typeof ArrayBuffer.isView === \"function\" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" || typeof Blob !== \"undefined\" && toString.call(Blob) === \"[object BlobConstructor]\";\nconst withNativeFile = typeof File === \"function\" || typeof File !== \"undefined\" && toString.call(File) === \"[object FileConstructor]\";\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */ function isBinary(obj) {\n    return withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)) || withNativeBlob && 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\nexport { hasBinary, isBinary };\n","import { isBinary } from './is-binary.esm.js';\n\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */ function 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; // number of binary 'attachments'\n    return {\n        packet: pack,\n        buffers: buffers\n    };\n}\nfunction _deconstructPacket(data, buffers) {\n    if (!data) return data;\n    if (isBinary(data)) {\n        const placeholder = {\n            _placeholder: true,\n            num: buffers.length\n        };\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}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */ function reconstructPacket(packet, buffers) {\n    packet.data = _reconstructPacket(packet.data, buffers);\n    delete packet.attachments; // no longer useful\n    return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n    if (!data) 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]; // appropriate buffer (should be natural order anyway)\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\nexport { deconstructPacket, reconstructPacket };\n","import { Emitter } from '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport { deconstructPacket, reconstructPacket } from './binary.esm.js';\nimport { hasBinary, isBinary } from './is-binary.esm.js';\n\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */ const RESERVED_EVENTS = [\n    \"connect\",\n    \"connect_error\",\n    \"disconnect\",\n    \"disconnecting\",\n    \"newListener\",\n    \"removeListener\"\n];\n/**\n * Protocol version.\n *\n * @public\n */ const protocol = 5;\nvar PacketType;\n(function(PacketType) {\n    PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n    PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n    PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n    PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n    PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n    PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n    PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */ class Encoder {\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     */ 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 [\n            this.encodeAsString(obj)\n        ];\n    }\n    /**\n     * Encode packet as string.\n     */ encodeAsString(obj) {\n        // first is type\n        let str = \"\" + obj.type;\n        // attachments if we have them\n        if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) {\n            str += obj.attachments + \"-\";\n        }\n        // if we have a namespace other than `/`\n        // we append it followed by a comma `,`\n        if (obj.nsp && \"/\" !== obj.nsp) {\n            str += obj.nsp + \",\";\n        }\n        // immediately followed by the id\n        if (null != obj.id) {\n            str += obj.id;\n        }\n        // json data\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     */ encodeAsBinary(obj) {\n        const deconstruction = deconstructPacket(obj);\n        const pack = this.encodeAsString(deconstruction.packet);\n        const buffers = deconstruction.buffers;\n        buffers.unshift(pack); // add packet info to beginning of data list\n        return buffers; // write all the buffers\n    }\n    /**\n     * Encoder constructor\n     *\n     * @param {function} replacer - custom replacer to pass down to JSON.parse\n     */ constructor(replacer){\n        this.replacer = replacer;\n    }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n    return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */ class Decoder extends Emitter {\n    /**\n     * Decodes an encoded packet string into packet JSON.\n     *\n     * @param {String} obj - encoded packet\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                // binary packet's json\n                this.reconstructor = new BinaryReconstructor(packet);\n                // no attachments, labeled binary but no binary data to follow\n                if (packet.attachments === 0) {\n                    super.emitReserved(\"decoded\", packet);\n                }\n            } else {\n                // non-binary full packet\n                super.emitReserved(\"decoded\", packet);\n            }\n        } else if (isBinary(obj) || obj.base64) {\n            // raw binary data\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                    // received final buffer\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     */ decodeString(str) {\n        let i = 0;\n        // look up type\n        const p = {\n            type: Number(str.charAt(0))\n        };\n        if (PacketType[p.type] === undefined) {\n            throw new Error(\"unknown packet type \" + p.type);\n        }\n        // look up attachments if type binary\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            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        // look up namespace (if any)\n        if (\"/\" === str.charAt(i + 1)) {\n            const start = i + 1;\n            while(++i){\n                const c = str.charAt(i);\n                if (\",\" === c) break;\n                if (i === str.length) break;\n            }\n            p.nsp = str.substring(start, i);\n        } else {\n            p.nsp = \"/\";\n        }\n        // look up id\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) break;\n            }\n            p.id = Number(str.substring(start, i + 1));\n        }\n        // look up json data\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 === undefined;\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     */ destroy() {\n        if (this.reconstructor) {\n            this.reconstructor.finishedReconstruction();\n            this.reconstructor = null;\n        }\n    }\n    /**\n     * Decoder constructor\n     *\n     * @param {function} reviver - custom reviver to pass down to JSON.stringify\n     */ constructor(reviver){\n        super();\n        this.reviver = reviver;\n    }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */ class BinaryReconstructor {\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     */ takeBinaryData(binData) {\n        this.buffers.push(binData);\n        if (this.buffers.length === this.reconPack.attachments) {\n            // done with buffer list\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     */ finishedReconstruction() {\n        this.reconPack = null;\n        this.buffers = [];\n    }\n    constructor(packet){\n        this.packet = packet;\n        this.buffers = [];\n        this.reconPack = packet;\n    }\n}\n\nexport { Decoder, Encoder, PacketType, protocol };\n","function on(obj, ev, fn) {\n    obj.on(ev, fn);\n    return function subDestroy() {\n        obj.off(ev, fn);\n    };\n}\n\nexport { on };\n","import { PacketType } from '../../../socket.io-parser/build/esm/index.esm.js';\nimport { on } from './on.esm.js';\nimport { Emitter } from '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\n\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */ const RESERVED_EVENTS = 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});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n *   console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n *   // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n *   console.log(`disconnected due to ${reason}`);\n * });\n */ class Socket extends Emitter {\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     */ get disconnected() {\n        return !this.connected;\n    }\n    /**\n     * Subscribe to open, close and packet events\n     *\n     * @private\n     */ subEvents() {\n        if (this.subs) 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     */ 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     */ connect() {\n        if (this.connected) return this;\n        this.subEvents();\n        if (!this.io[\"_reconnecting\"]) this.io.open(); // ensure open\n        if (\"open\" === this.io._readyState) this.onopen();\n        return this;\n    }\n    /**\n     * Alias for {@link connect()}.\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     */ 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     */ emit(ev, ...args) {\n        var _a, _b, _c;\n        if (RESERVED_EVENTS.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        // event ack callback\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) ; 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     */ _registerAckCallback(id, ack) {\n        var _a;\n        const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n        if (timeout === undefined) {\n            this.acks[id] = ack;\n            return;\n        }\n        // @ts-ignore\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            // @ts-ignore\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     */ 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     */ _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({\n                fromQueue: true\n            }, this.flags)\n        };\n        args.push((err, ...responseArgs)=>{\n            if (packet !== this._queue[0]) {\n                // the packet has already been acknowledged\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     */ _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     */ packet(packet) {\n        packet.nsp = this.nsp;\n        this.io._packet(packet);\n    }\n    /**\n     * Called upon engine `open`.\n     *\n     * @private\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     */ _sendConnectPacket(data) {\n        this.packet({\n            type: PacketType.CONNECT,\n            data: this._pid ? Object.assign({\n                pid: this._pid,\n                offset: this._lastOffset\n            }, data) : data\n        });\n    }\n    /**\n     * Called upon engine or manager `error`.\n     *\n     * @param err\n     * @private\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     */ 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     */ _clearAcks() {\n        Object.keys(this.acks).forEach((id)=>{\n            const isBuffered = this.sendBuffer.some((packet)=>String(packet.id) === id);\n            if (!isBuffered) {\n                // note: handlers that do not accept an error as first argument are ignored here\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     */ onpacket(packet) {\n        const sameNamespace = packet.nsp === this.nsp;\n        if (!sameNamespace) 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                // @ts-ignore\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     */ 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     */ ack(id) {\n        const self = this;\n        let sent = false;\n        return function(...args) {\n            // prevent double callbacks\n            if (sent) return;\n            sent = true;\n            self.packet({\n                type: PacketType.ACK,\n                id: id,\n                data: args\n            });\n        };\n    }\n    /**\n     * Called upon a server acknowledgement.\n     *\n     * @param packet\n     * @private\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        // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n        if (ack.withError) {\n            packet.data.unshift(null);\n        }\n        // @ts-ignore\n        ack.apply(this, packet.data);\n    }\n    /**\n     * Called upon server connect.\n     *\n     * @private\n     */ onconnect(id, pid) {\n        this.id = id;\n        this.recovered = pid && this._pid === pid;\n        this._pid = pid; // defined only if connection state recovery is enabled\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     */ 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     */ 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     */ destroy() {\n        if (this.subs) {\n            // clean subscriptions to avoid reconnections\n            this.subs.forEach((subDestroy)=>subDestroy());\n            this.subs = undefined;\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     */ disconnect() {\n        if (this.connected) {\n            this.packet({\n                type: PacketType.DISCONNECT\n            });\n        }\n        // remove socket from pool\n        this.destroy();\n        if (this.connected) {\n            // fire events\n            this.onclose(\"io client disconnect\");\n        }\n        return this;\n    }\n    /**\n     * Alias for {@link disconnect()}.\n     *\n     * @return self\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     */ 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     */ 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     */ 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     */ 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     */ 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     */ 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     */ 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     */ 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     */ 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     */ 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     */ listenersAnyOutgoing() {\n        return this._anyOutgoingListeners || [];\n    }\n    /**\n     * Notify the listeners for each packet sent\n     *\n     * @param packet\n     *\n     * @private\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     * `Socket` constructor.\n     */ constructor(io, nsp, opts){\n        super();\n        /**\n         * Whether the socket is currently connected to the server.\n         *\n         * @example\n         * const socket = io();\n         *\n         * socket.on(\"connect\", () => {\n         *   console.log(socket.connected); // true\n         * });\n         *\n         * socket.on(\"disconnect\", () => {\n         *   console.log(socket.connected); // false\n         * });\n         */ this.connected = false;\n        /**\n         * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n         * be transmitted by the server.\n         */ this.recovered = false;\n        /**\n         * Buffer for packets received before the CONNECT packet\n         */ this.receiveBuffer = [];\n        /**\n         * Buffer for packets that will be sent once the socket is connected\n         */ this.sendBuffer = [];\n        /**\n         * The queue of packets to be sent with retry in case of failure.\n         *\n         * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n         * @private\n         */ this._queue = [];\n        /**\n         * A sequence to generate the ID of the {@link QueuedPacket}.\n         * @private\n         */ this._queueSeq = 0;\n        this.ids = 0;\n        /**\n         * A map containing acknowledgement handlers.\n         *\n         * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n         *\n         * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n         * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n         * - `const value = await socket.emitWithAck(\"test\")`\n         *\n         * From those that don't:\n         *\n         * - `socket.emit(\"test\", (value) => { ... });`\n         *\n         * In the first case, the handlers will be called with an error when:\n         *\n         * - the timeout is reached\n         * - the socket gets disconnected\n         *\n         * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n         * an acknowledgement from the server.\n         *\n         * @private\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) this.open();\n    }\n}\n\nexport { Socket };\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */ function Backoff(opts) {\n    opts = opts || {};\n    this.ms = opts.min || 100;\n    this.max = opts.max || 10000;\n    this.factor = opts.factor || 2;\n    this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n    this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */ Backoff.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};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */ Backoff.prototype.reset = function() {\n    this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */ Backoff.prototype.setMin = function(min) {\n    this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */ Backoff.prototype.setMax = function(max) {\n    this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */ Backoff.prototype.setJitter = function(jitter) {\n    this.jitter = jitter;\n};\n\nexport { Backoff };\n","import { Socket } from '../../../engine.io-client/build/esm/socket.esm.js';\nimport '../../../engine.io-parser/build/esm/encodePacket.browser.esm.js';\nimport '../../../engine.io-parser/build/esm/commons.esm.js';\nimport '../../../engine.io-parser/build/esm/contrib/base64-arraybuffer.esm.js';\nimport { Emitter } from '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport { installTimerFunctions } from '../../../engine.io-client/build/esm/util.esm.js';\nimport '../../../engine.io-client/build/esm/transports/polling-xhr.esm.js';\nimport '../../../engine.io-client/build/esm/transports/websocket.esm.js';\nimport { nextTick } from '../../../engine.io-client/build/esm/globals.esm.js';\nimport { Socket as Socket$1 } from './socket.esm.js';\nimport * as index from '../../../socket.io-parser/build/esm/index.esm.js';\nimport { on } from './on.esm.js';\nimport { Backoff } from './contrib/backo2.esm.js';\n\nclass Manager extends Emitter {\n    reconnection(v) {\n        if (!arguments.length) 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 === undefined) return this._reconnectionAttempts;\n        this._reconnectionAttempts = v;\n        return this;\n    }\n    reconnectionDelay(v) {\n        var _a;\n        if (v === undefined) 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 === undefined) 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 === undefined) 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) 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     */ maybeReconnectOnOpen() {\n        // Only try to reconnect if it's the first time we're connecting\n        if (!this._reconnecting && this._reconnection && this.backoff.attempts === 0) {\n            // keeps reconnection from firing twice for the same reconnection loop\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     */ open(fn) {\n        if (~this._readyState.indexOf(\"open\")) return this;\n        this.engine = new Socket(this.uri, this.opts);\n        const socket = this.engine;\n        const self = this;\n        this._readyState = \"opening\";\n        this.skipReconnect = false;\n        // emit `open`\n        const openSubDestroy = on(socket, \"open\", function() {\n            self.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                // Only do this if there is no fn to handle the error\n                this.maybeReconnectOnOpen();\n            }\n        };\n        // emit `error`\n        const errorSub = on(socket, \"error\", onError);\n        if (false !== this._timeout) {\n            const timeout = this._timeout;\n            // set timer\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     */ connect(fn) {\n        return this.open(fn);\n    }\n    /**\n     * Called upon transport open.\n     *\n     * @private\n     */ onopen() {\n        // clear old subs\n        this.cleanup();\n        // mark as open\n        this._readyState = \"open\";\n        this.emitReserved(\"open\");\n        // add new subs\n        const socket = this.engine;\n        this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), // @ts-ignore\n        on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n    }\n    /**\n     * Called upon a ping.\n     *\n     * @private\n     */ onping() {\n        this.emitReserved(\"ping\");\n    }\n    /**\n     * Called with data.\n     *\n     * @private\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     */ ondecoded(packet) {\n        // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n        nextTick(()=>{\n            this.emitReserved(\"packet\", packet);\n        }, this.setTimeoutFn);\n    }\n    /**\n     * Called upon socket error.\n     *\n     * @private\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     */ socket(nsp, opts) {\n        let socket = this.nsps[nsp];\n        if (!socket) {\n            socket = new Socket$1(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     */ _destroy(socket) {\n        const nsps = Object.keys(this.nsps);\n        for (const nsp of nsps){\n            const socket = this.nsps[nsp];\n            if (socket.active) {\n                return;\n            }\n        }\n        this._close();\n    }\n    /**\n     * Writes a packet.\n     *\n     * @param packet\n     * @private\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     */ 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     */ _close() {\n        this.skipReconnect = true;\n        this._reconnecting = false;\n        this.onclose(\"forced close\");\n    }\n    /**\n     * Alias for close()\n     *\n     * @private\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     */ 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     */ reconnect() {\n        if (this._reconnecting || this.skipReconnect) return this;\n        const self = 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 (self.skipReconnect) return;\n                this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n                // check again for the case socket closed in above events\n                if (self.skipReconnect) return;\n                self.open((err)=>{\n                    if (err) {\n                        self._reconnecting = false;\n                        self.reconnect();\n                        this.emitReserved(\"reconnect_error\", err);\n                    } else {\n                        self.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     */ onreconnect() {\n        const attempt = this.backoff.attempts;\n        this._reconnecting = false;\n        this.backoff.reset();\n        this.emitReserved(\"reconnect\", attempt);\n    }\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 = undefined;\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 || 1000);\n        this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\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 ? 20000 : opts.timeout);\n        this._readyState = \"closed\";\n        this.uri = uri;\n        const _parser = opts.parser || index;\n        this.encoder = new _parser.Encoder();\n        this.decoder = new _parser.Decoder();\n        this._autoConnect = opts.autoConnect !== false;\n        if (this._autoConnect) this.open();\n    }\n}\n\nexport { Manager };\n","import { url } from './url.esm.js';\nimport { Manager } from './manager.esm.js';\nimport { Socket } from './socket.esm.js';\nexport { protocol } from '../../../socket.io-parser/build/esm/index.esm.js';\nimport '../../../engine.io-client/build/esm/socket.esm.js';\nimport '../../../engine.io-parser/build/esm/encodePacket.browser.esm.js';\nimport '../../../engine.io-parser/build/esm/commons.esm.js';\nimport '../../../engine.io-parser/build/esm/contrib/base64-arraybuffer.esm.js';\nimport '../../../@socket.io/component-emitter/lib/esm/index.esm.js';\nimport '../../../engine.io-client/build/esm/util.esm.js';\nexport { XHR as NodeXHR, XHR } from '../../../engine.io-client/build/esm/transports/polling-xhr.esm.js';\nexport { WS as NodeWebSocket, WS as WebSocket } from '../../../engine.io-client/build/esm/transports/websocket.esm.js';\nimport '../../../engine.io-client/build/esm/globals.esm.js';\n\n/**\n * Managers cache.\n */ const cache = {};\nfunction lookup(uri, opts) {\n    if (typeof uri === \"object\") {\n        opts = uri;\n        uri = undefined;\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}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n    Manager,\n    Socket,\n    io: lookup,\n    connect: lookup\n});\n\nexport { Manager, Socket, lookup as connect, lookup as default, lookup as io };\n","import { Polling } from './polling.esm.js';\n\n/**\n * HTTP long-polling based on the built-in `fetch()` method.\n *\n * Usage: browser, Node.js (since v18), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/fetch\n * @see https://caniuse.com/fetch\n * @see https://nodejs.org/api/globals.html#fetch\n */ class Fetch extends Polling {\n    doPoll() {\n        this._fetch().then((res)=>{\n            if (!res.ok) {\n                return this.onError(\"fetch read error\", res.status, res);\n            }\n            res.text().then((data)=>this.onData(data));\n        }).catch((err)=>{\n            this.onError(\"fetch read error\", err);\n        });\n    }\n    doWrite(data, callback) {\n        this._fetch(data).then((res)=>{\n            if (!res.ok) {\n                return this.onError(\"fetch write error\", res.status, res);\n            }\n            callback();\n        }).catch((err)=>{\n            this.onError(\"fetch write error\", err);\n        });\n    }\n    _fetch(data) {\n        var _a;\n        const isPost = data !== undefined;\n        const headers = new Headers(this.opts.extraHeaders);\n        if (isPost) {\n            headers.set(\"content-type\", \"text/plain;charset=UTF-8\");\n        }\n        (_a = this.socket._cookieJar) === null || _a === void 0 ? void 0 : _a.appendCookies(headers);\n        return fetch(this.uri(), {\n            method: isPost ? \"POST\" : \"GET\",\n            body: isPost ? data : null,\n            headers,\n            credentials: this.opts.withCredentials ? \"include\" : \"omit\"\n        }).then((res)=>{\n            var _a;\n            // @ts-ignore getSetCookie() was added in Node.js v19.7.0\n            (_a = this.socket._cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(res.headers.getSetCookie());\n            return res;\n        });\n    }\n}\n\nexport { Fetch };\n","import { io as lookup } from '../../node_modules/socket.io-client/build/esm/index.esm.js';\nimport { Fetch } from '../../node_modules/engine.io-client/build/esm/transports/polling-fetch.esm.js';\nimport '../../node_modules/engine.io-client/build/esm/socket.esm.js';\nimport '../../node_modules/engine.io-parser/build/esm/encodePacket.browser.esm.js';\nimport '../../node_modules/engine.io-parser/build/esm/commons.esm.js';\nimport '../../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.esm.js';\nimport '../../node_modules/@socket.io/component-emitter/lib/esm/index.esm.js';\nimport '../../node_modules/engine.io-client/build/esm/util.esm.js';\nimport '../../node_modules/engine.io-client/build/esm/transports/polling-xhr.esm.js';\nimport { WS } from '../../node_modules/engine.io-client/build/esm/transports/websocket.esm.js';\nimport '../../node_modules/engine.io-client/build/esm/globals.esm.js';\n\nvar SocketIO = {\n    connect (endpoint) {\n        return new Promise((resolve, reject)=>{\n            const socket = lookup(endpoint, {\n                transports: [\n                    Fetch,\n                    WS\n                ]\n            });\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(`[framer-live-esm] Socket had a connection error: ${err.message}`, socket);\n                return reject(err);\n            });\n            socket.on(\"connect_timeout\", (err)=>{\n                console.error(`[framer-live-esm] Socket connection timed out: ${err.message}`);\n                return reject(err);\n            });\n        });\n    }\n};\n\nexport { SocketIO as default };\n","import SocketIO from './socket.esm.js';\n\nconst SOCKET_SERVER_URL = \"http://127.0.0.1:8001\";\nasync function initLiveReload() {\n    // @ts-ignore\n    if (window.framerRealtimeSocket) return;\n    try {\n        console.log(`[framer-live-esm] Connecting on ${SOCKET_SERVER_URL}`);\n        const createdSocket = await SocketIO.connect(SOCKET_SERVER_URL);\n        console.log(`[framer-live-esm] Created socket`);\n        // @ts-ignore\n        window.framerRealtimeSocket = createdSocket;\n    } catch (err) {\n        console.error(`[framer-live-esm] Error trying to create socket `, err);\n    }\n}\n\nexport { initLiveReload };\n","import * as React from 'react';\nimport { initLiveReload } from './bootstrap.esm.js';\nimport { RenderTarget } from 'framer';\n\nconst isDev = [\n    RenderTarget.canvas,\n    RenderTarget.preview\n].includes(RenderTarget.current());\nfunction useRealtimeComponent(originalComponent, importPath, 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 = async (event)=>{\n            console.log(`[framer-live-esm] Build complete, refreshing ${componentName}`);\n            const response = await import(`http://localhost:8000/${importPath}.esm.js?${updateCount.current}`);\n            console.log(updateCount.current, response);\n            updateCount.current++;\n            updatedInstance.current = response[componentName];\n            setForceRerender(updateCount.current);\n        };\n        const setupHandler = (retryCount = 0)=>{\n            // @ts-ignore\n            if (!window.framerRealtimeSocket) {\n                setTimeout(()=>setupHandler(retryCount + 1), retryCount + 1 * 500);\n                return;\n            }\n            // @ts-ignore\n            window.framerRealtimeSocket.on(\"build\", onRebuild);\n        };\n        setupHandler();\n        return ()=>{\n            // @ts-ignore\n            if (window.framerRealtimeSocket) {\n                // @ts-ignore\n                window.framerRealtimeSocket.off(\"build\", onRebuild);\n            }\n        };\n    }, [\n        componentName\n    ]);\n    React.useEffect(()=>{\n        initLiveReload();\n    }, []);\n    return updatedInstance.current || originalComponent;\n}\n\nexport { isDev, useRealtimeComponent };\n","import { useEffect } from 'react';\n\n/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */ function CMPManager() {\n    useEffect(()=>{\n        let attempts = 0;\n        const maxAttempts = 100;\n        let intervalOneTrust;\n        if (typeof window.applyCMPRules !== 'undefined') {\n            window.applyCMPRules();\n        } else {\n            intervalOneTrust = setInterval(()=>{\n                attempts++;\n                if (typeof window.applyCMPRules !== 'undefined') {\n                    clearInterval(intervalOneTrust);\n                    window.applyCMPRules();\n                } else if (attempts >= maxAttempts) {\n                    clearInterval(intervalOneTrust);\n                }\n            }, 100);\n        }\n        return ()=>{\n            if (intervalOneTrust) {\n                clearInterval(intervalOneTrust);\n            }\n        };\n    }, []);\n    return null;\n}\nconst propertyControls = {};\nCMPManager.propertyControls = propertyControls;\n\nexport { CMPManager };\n","export { MarketoFramerForm } from './marketo-form/lib/marketo-framer-form.esm.js';\nexport { isDev, useRealtimeComponent } from './utils/live-reload/use-realtime-component.esm.js';\nexport { CMPManager } from './cmp-manager/lib/cmp-manager.esm.js';\n","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls}from\"framer\";import{MarketoFramerForm as ImportedComponent}from\"https://mirostatic.com/website/static/production-eu/framer-code-components/index.esm.js\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function MarketoForm(props){return /*#__PURE__*/_jsx(\"div\",{children:/*#__PURE__*/_jsx(ImportedComponent,{...props})});}addPropertyControls(MarketoForm,ImportedComponent.propertyControls||{});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MarketoForm\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Marketo_Form.map"],"x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],"mappings":"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"}