{
  "version": 3,
  "sources": ["/cdn/shop/t/245/assets/timesact.js?rerun=1789667278440"],
  "sourcesContent": ["/* Using a self-executing anonymous function - (function(){})(); - so that all variables and functions defined within\naren't available to the outside world. */\n\n(function () {\n    const loadScript = function (url, callback) {\n        const script = document.createElement(\"script\")\n\n        script.type = \"text/javascript\"\n\n        // If the browser is Internet Explorer.\n        if (script.readyState) {\n            script.onreadystatechange = function () {\n                if (script.readyState === \"loaded\" || script.readyState === \"complete\") {\n                    script.onreadystatechange = null\n                    callback()\n                }\n            };\n            // For any other browser.\n        } else {\n            script.onload = function () {\n                callback()\n            }\n        }\n        script.src = url\n        document.getElementsByTagName(\"head\")[0].appendChild(script)\n    }\n\n    /* This is Timesact main function. */\n    timesactScriptNew = async function ($) {\n        const style = document.createElement(\"style\")\n        style.id = \"TimesactCSS\"\n        style.innerHTML = `.timesact-badge-ribbon span::before {\n                            content: \"\";\n                            position: absolute; left: 0px; top: 100%;\n                            z-index: -1;\n                            border-left: 3px solid #888888;\n                            border-right: 3px solid transparent;\n                            border-bottom: 3px solid transparent;\n                            border-top: 3px solid #888888;\n                        }\n                        .timesact-badge-ribbon span::after {\n                            content: \"\";\n                            position: absolute; right: 0px; top: 100%;\n                            z-index: -1;\n                            border-left: 3px solid transparent;\n                            border-right: 3px solid #888888;\n                            border-bottom: 3px solid transparent;\n                            border-top: 3px solid #888888;\n                        }\n                        .md-modal {\n                            position: fixed;\n                            top: 50%;\n                            left: 50%;\n                            width: 40%;\n                            height: auto;\n                            z-index: 999999999999;\n                            visibility: hidden;\n                            transform: translateX(-50%) translateY(-50%);\n                        }\n                        .md-content {\n                            background: #fff;\n                            position: relative;\n                            border-radius: 10px;\n                            margin: 0 auto;\n                        }\n                        .md-show {\n                            visibility: visible;\n                        }\n                        .md-show ~ .md-overlay {\n                            opacity: 1;\n                            visibility: visible;\n                            display: block;\n                        }\n                        .popup-container {\n                            min-height: 100%;\n                            display: none;\n                        }\n                        .md-overlay {\n                            position: fixed;\n                            width: 100%;\n                            height: 100%;\n                            visibility: hidden;\n                            top: 0;\n                            left: 0;\n                            z-index: 1000;\n                            opacity: 0;\n                            background: #c9c9c9c2;\n                            -webkit-transition: all 0.3s;\n                            -moz-transition: all 0.3s;\n                            transition: all 0.3s;\n                        }\n                        .md-body {\n                            text-align: center;\n                            padding-top: 10%;\n                            padding-bottom: 10%;\n                            font-family: \"Roboto\";\n                        }\n                        p.message {\n                              padding: 20px;\n                        }\n                        .md-close {\n                            background: #f70427;\n                            border: none;\n                            color: white;\n                            padding: 10px;\n                            border-radius: 4px;\n                            cursor: pointer;\n                        }\n                        @media screen and (max-width: 32em) {\n                            .md-modal { width: 80%; }\n                        }\n                        .timesact_bis_popup_overlay {\n                            position: fixed;\n                            top: 0;\n                            left: 0;\n                            z-index: 1040;\n                            visibility: hidden;\n                            width: 100vw;\n                            height: 100vh;\n                            background-color: #000;\n                            opacity: .5;\n                            display: block !important;\n                        }\n\n                        .timesact_bis_dialog {\n                            display: inline-table;\n                            position: fixed;\n                            top: 0;\n                            left: 0;\n                            z-index: 1050;\n                            visibility: hidden;\n                            width: 100%;\n                            height: 100%;\n                            overflow-x: hidden;\n                            overflow-y: auto;\n                            outline: 0;\n                        }\n                        \n                        .timesact_bis_popup_overlay_show,\n                        .timesact_bis_dialog_show {\n                            visibility: visible;\n                        }\n                        \n                        .timesact_bis_popup {\n                            z-index: 1000000;\n                            background: #fff;\n                            color: #000;\n                            margin: auto;\n                            pointer-events: none;\n                            max-width: 460px;\n                            width: 96%;\n                            top: 50%;\n                            left: 50%;\n                            transform: translate(-50%, -50%);\n                            position: fixed;\n                            border-radius: 10px;\n                            font-size: 14px;\n                            /*add dynamic value*/\n                        }\n\n                        .timesact_bis_popup_content {\n                            pointer-events: auto;\n                            position: relative\n                        }\n\n                        .timesact_bis_popup_body {\n                            padding: 20px;\n                            position: relative;\n                            display: flex;\n                            flex-direction: column;\n                            width: 100%;\n                            border-radius: .3rem\n                        }\n\n                        .timesact_bis_close_button {\n                            padding: 5px;\n                            background: 0 0;\n                            font-size: 1.4rem;\n                            font-weight: 700;\n                            line-height: 1;\n                            opacity: 1;\n                            cursor: pointer;\n                            outline: 0;\n                            border-radius: 0;\n                            position: absolute;\n                            top: 0;\n                            right: 0;\n                            border: 0\n                        }\n\n                        .timesact_bis_close_span {\n                            display: inline-block;\n                            height: 20px;\n                            width: 20px;\n                            color: #000;\n                            margin-top: 0;\n                        }\n\n                        .timesact_bis_heading {\n                            margin-bottom: 0;\n                            color: #000;\n                            /*dynamic value*/\n                            margin-top: 0;\n                            font-size: calc(2 * 1em);\n                            /*dynamic value*/\n                            font-weight: 700\n                        }\n\n                        .timesact_bis_desc {\n                            margin-bottom: 0;\n                            color: #000;\n                            /*dynamic value*/\n                            font-size: 14px;\n                            /*dynamic value*/\n                        }\n\n                        .timesact_bis_line {\n                            margin: 10px 0\n                        }\n\n                        .timesact_bis_form_field {\n                            margin-top: 10px\n                        }\n\n                        .timesact_bis_input {\n                            padding: 8px 15px;\n                            border: 1px solid #949494;\n                            background-color: #fff;\n                            color: #000;\n                            max-width: 100%;\n                            line-height: 1.2;\n                            width: 100%;\n                            outline: 0;\n                            border-radius: 10px;\n                            /*dynamic value*/\n                        }\n\n                        .timesact_bis_submit_button {\n                            width: 100%;\n                            outline: 0;\n                            border: 0;\n                            padding: 10px;\n                            display: flex;\n                            align-items: center;\n                            justify-content: center;\n                            background: #000;\n                            /*dynamic value*/\n                            color: #fff;\n                            /*dynamic value*/\n                            border-radius: 10px;\n                            /*dynamic value*/\n                            font-size: 14px;\n                            cursor: pointer;\n                        }\n\n                        .timesact_bis_submit_button--disabled {\n                            background: #ddd\n                        }\n\n                        .timesact_bis_loading_icon {\n                            width: 15px !important;\n                            height: 15px !important;\n                            margin-right: 5px !important;\n                        }\n\n                        .timesact_bis_loading_icon:after {\n                            content: \" \";\n                            display: block;\n                            width: 15px !important;\n                            height: 15px !important;\n                            border-radius: 50%;\n                            border: 2px solid #fff;\n                            border-color: #fff transparent #fff transparent;\n                            animation: timesact-bis-loading 1.2s linear infinite\n                        }\n\n                        @keyframes timesact-bis-loading {\n                            0% {\n                                transform: rotate(0)\n                            }\n\n                            100% {\n                                transform: rotate(360deg)\n                            }\n                        }\n\n                        .timesact_bis_note {\n                            color: black;\n                            font-size: 80%;\n                            margin-bottom: 0\n                        }\n                        \n                        .timesact_bis_response {\n                            margin-bottom: 0;\n                        }\n\n                        .timesact_bis_message_success {\n                            width: 100%;\n\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\tfont-weight: 600;\n                            display: none;\n                            color: #28a745;\n                        }\n\n                        .timesact_bis_message_error {\n                            width: 100%;\n\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\tfont-weight: 600;\n                            display: none;\n                            color: red;\n                        }\n\n                        .timesact_powered_by {\n                            margin-top: 15px;\n                            left: 0;\n                            right: 0;\n                            text-align: center;\n                        }\n\n                        .timesact_powered_by a {\n                          text-decoration: none;\n                          color: #000 !important;\n                          font-weight: 700;\n                        }\n                        \n                        .timesact_bis_field_empty {\n                          border: 1px solid red;\n                        }\n                        \n                        .timesact_bis_message_show {\n                            display: block !important;\n                        }\n                        \n                        .timesact-button:after {\n                            content: none\n                        }\n\n                        .timesact-button:before {\n                            content: none\n                        }\n                        .timesact_bis_subscribe {\n                          font-size: 80%;\n                        }\n\n                        .timesact_sub #newsletter {\n                            height: 14px !important;\n                            width: 14px !important;\n                        }\n                        .timesact_sub {\n                            display: none;\n                        }\n\n                        #timesact_widget{\n                            width: 100%;\n                            text-align: left;\n                            margin-top: 17px;\n                            clear: both;\n                            max-width: 400px;\n                            \n                        }\n                        #timesact_widget .timesact_widget_wrapper {\n                            border: 1.5px solid #cccccc;\n                            // box-shadow: 0 0 0 1px #c4cdd5;\n                            border-radius: 5px;\n                            margin-bottom: 5px;\n                            margin-top: 10px;\n                        }\n                        \n                        #timesact_widget .timesact_option {\n                            display: flex;\n                            position: relative;\n                            padding: 16px 16px;\n                            flex-direction: column;\n                        }\n                        \n                        #timesact_widget .timesact_option:first-child {\n                            border-bottom: inherit;\n                        }\n                        #timesact_widget .timesact_option:first-child:last-child {\n                            border-bottom: none;\n                        }\n\n                        #timesact_widget .timesact_radio_label {\n                            display: flex !important;\n                            align-items: center;\n                            margin: 0;\n                            padding: 0;\n                            background: none;\n                        }\n                        \n                        .timesact_circle {\n                            position: relative;\n                        }\n                        \n                        .timesact_option input[type=radio]:focus + label .timesact_circle:before {\n                            height: 24px;\n                            width: 24px;\n                            border: 2px solid #3a3a3a;\n                            border-radius: 50%;\n                            flex-shrink: 0;\n                            content: '';\n                            position: absolute;\n                            left: 50%;\n                            top: 50%;\n                            transform: translate(-50%, -50%);\n                        }\n                        \n                        [name=\"selling_plan\"] {\n                          position: absolute;\n                          opacity: 0;\n                        }\n\n                        #timesact_widget .timesact_circle {\n                            display: flex;\n                            height: 18px;\n                            width: 18px;\n                            border: 2px solid #3a3a3a;\n                            border-radius: 50%;\n                            margin-right: 10px;\n                            justify-content: center;\n                            align-items: center;\n                            flex-shrink: 0;\n                            \n                          }\n                      \n                        #timesact_widget .timesact_option input[type=radio]:checked + label .timesact_circle .timesact_dot {\n                            height: 10px;\n                            width: 10px;\n                            background-color: #3a3a3a;\n                            border-radius: 50%;\n                            flex-shrink: 0;\n                            \n                          }\n                          `\n        document.getElementsByTagName(\"head\")[0].appendChild(style)\n\n        const mixedCartModal = '<div class=\"md-modal\" id=\"mixed-modal\"><div class=\"md-content\"><div class=\"md-body\"></div></div></div><div class=\"popup-container\"><div class=\"column\"><button class=\"md-trigger md-setperspective\" data-modal=\"mixed-modal\"></button></div></div><div class=\"md-overlay\"></div>';\n        document.getElementsByTagName(\"body\")[0].insertAdjacentHTML('afterbegin', mixedCartModal)\n\n        const timesactBIS = `<div class=\"timesact_bis_popup_overlay\"></div>\n        <div aria-modal=\"true\" aria-hidden=\"true\" tabindex=\"-1\" role=\"dialog\" class=\"timesact_bis_dialog\">\n            <div class=\"timesact_bis_popup\">\n                <div class=\"timesact_bis_popup_content\">\n                    <div class=\"timesact_bis_popup_body\">\n                        <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\"\n                            class=\"timesact_bis_close_button\">\n                            <span aria-hidden=\"true\" class=\"timesact_bis_close_span\">x</span>\n                        </button>\n                        <h3 class=\"timesact_bis_heading\"></h3>\n                        <p class=\"timesact_bis_desc\"></p>\n                        <p class=\"timesact_bis_response\">\n                            <span class=\"timesact_bis_message_success\"></span>\n                            <span class=\"timesact_bis_message_error\"></span>\n                             \n                        </p>\n                        <hr class=\"timesact_bis_line\">\n                        <div id=\"subscriptionForm\">\n                            <div class=\"timesact_bis_form_field\">\n                                <input id=\"timesact_bis_email\" class=\"timesact_bis_input \" type=\"email\"\n                                placeholder=\"eg. username@example.com\" name=\"email\" value=\"\">\n                            </div>\n                            <div class=\"timesact_bis_form_field\">\n                                <button type=\"button\" class=\"timesact_bis_submit_button \">\n                                    <span class=\"timesact_bis_loading_icon\"></span>\n                                </button>\n                            </div>\n                            <div class=\"timesact_bis_form_field\">\n                                <p class=\"timesact_bis_note\"></p>\n                            </div>\n                            <div class=\"timesact_bis_form_field timesact_sub\">\n                                <input type=\"checkbox\" id=\"newsletter\" name=\"newsletter\" checked />\n                                <label class=\"timesact_bis_subscribe\" for=\"newsletter\"></label>\n                            </div>\n                        </div>\n                        <div class=\"timesact_powered_by\">\n                            <a href=\"https://timesact.com\" target=\"_blank\" rel=\"noreferrer\">\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M8 24l2.674-9h-9.674l16-15-2.674 9h8.674l-15 15zm-1.586-11h6.912l-1.326 4 5.739-6h-6.065l1.304-4-6.564 6z\"></path></svg>\n                                <span>by Timesact</span>\n                            </a>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>`\n\n        const timesactPartialPayment = `<div class=\"timesact_widget\" id=\"timesact_widget\">\n            <div class=\"timesact_widget_wrapper\">\n                <div class=\"timesact_option\">\n                    <div class=\"timesact_radio_wrapper\">\n                        <input checked type=\"radio\" id=\"timesact_selling_plan_label\" name=\"selling_plan\" value=\"\" tabindex=\"2\">\n                        <label for=\"timesact_selling_plan_label\" class=\"timesact_radio_label\">\n                            <span class=\"timesact_circle\"><span class=\"timesact_dot\"></span></span>\n                            <span class=\"timesact_text\"></span>\n                        </label>\n                    </div>\n                </div>\n            </div>\n        </div>\n        `\n\n        document.getElementsByTagName(\"body\")[0].insertAdjacentHTML('afterbegin', timesactBIS)\n\n        const emailInputFieldSelector = document.querySelector('#timesact_bis_email')\n        const newsletterCheckboxFieldSelector = document.querySelector('#newsletter')\n\n        // Cart alert modal global variables.\n        const cartModal = {\n            isOpen: false,\n            queue: JSON.parse(window.sessionStorage.getItem(\"modal-queue\") || null) || []\n        }\n\n        /* Models */\n        class Badge {\n            add(selector, badgeType, value, settingType) {\n                if (badgeType === \"RIBBON\") {\n                    $(selector).remove(`.timesact-badge-common-${settingType}`);\n                    $(selector).remove(`.timesact-badge-ribbon-${settingType}`);\n                    $(selector).append(`<div class='timesact-badge-ribbon timesact-badge-ribbon-${settingType}'><span class='timesact-badge-ribbon-span-${settingType}'><p>` + value + \"</p></span></div>\")\n                    return;\n                }\n\n                if (badgeType === \"ROUNDED\") {\n                    $(selector).remove(`.timesact-badge-common-${settingType}`);\n                    $(selector).remove(`.timesact-badge-ribbon-${settingType}`);\n                    $(selector).append(`<div class='timesact-badge-common-${settingType}'><span class='timesact-badge-rounded-span-${settingType}'>` + value + \"</span></div>\");\n                }\n\n                if (badgeType === \"RECTANGLE\") {\n                    $(selector).remove(`.timesact-badge-common-${settingType}`);\n                    $(selector).remove(`.timesact-badge-ribbon-${settingType}`);\n                    $(selector).append(`<div class='timesact-badge-common-${settingType}'><span class='timesact-badge-rectangle-span-${settingType}'>` + value + \"</span></div>\");\n                }\n\n                if (badgeType === \"SQUARE\") {\n                    $(selector).remove(`.timesact-badge-common-${settingType}`);\n                    $(selector).remove(`.timesact-badge-ribbon-${settingType}`);\n                    $(selector).append(`<div class='timesact-badge-common-${settingType}'><span class='timesact-badge-square-span-${settingType}'>` + value + \"</span></div>\");\n                }\n\n                if (badgeType === \"CIRCLE\") {\n                    $(selector).remove(`.timesact-badge-common-${settingType}`);\n                    $(selector).remove(`.timesact-badge-ribbon-${settingType}`);\n                    $(selector).append(`<div class='timesact-badge-common-${settingType}'><span class='timesact-badge-circle-span-${settingType}'>` + value + \"</span></div>\");\n                }\n            }\n\n            getPositions(isTop, isRight, x, y) {\n                return {\n                    \"top\": isTop && y,\n                    \"bottom\": !isTop && y,\n                    \"left\": !isRight && x,\n                    \"right\": isRight && x,\n                }\n            }\n\n            getPositionsRibbon(isTop, isRight) {\n                const top = isTop ? \"19px\" : \"35px\"\n                const right = !isRight ? \"-5px\" : \"-20px\"\n                return { top, right }\n            }\n\n            getTransformRibbon(isTop, isRight) {\n                // top right\n                let degree = 45\n                if (isTop && !isRight) {\n                    // left top\n                    degree -= 90\n                } else if (!isTop && !isRight) {\n                    // left bottom\n                    degree -= 180\n                } else if (!isTop && isRight) {\n                    // bottom right\n                    degree -= 270\n                }\n\n                return {\n                    \"transform\": `rotate(${degree}deg)`,\n                    \"-webkit-transform\": `rotate(${degree}deg)`,\n                }\n            }\n\n            getTransformRibbonText(isTop) {\n                return isTop ? {} : {\n                    \"transform\": `rotate(180deg)`,\n                    \"-webkit-transform\": `rotate(180deg)`,\n                }\n            }\n\n            applyStyles(style, settingType) {\n                const isTop = style.top || style.top === undefined\n                const isRight = style.right || style.right === undefined\n\n                $('.timesact-badge').css({\n                    \"position\": \"relative\"\n                });\n                $(`.timesact-badge-ribbon-${settingType}`).css({\n                    \"position\": \"absolute\",\n                    ...this.getPositions(isTop, isRight, \"-5px\", \"-5px\"),\n                    \"width\": \"75px\",\n                    \"height\": \"75px\",\n                    \"text-align\": \"right\",\n                    \"z-index\": \"1\",\n                    \"overflow\": \"hidden\",\n                });\n                $(`.timesact-badge-ribbon-${settingType} span`).css({\n                    \"position\": \"absolute\",\n                    ...this.getPositionsRibbon(isTop, isRight),\n                    \"display\": \"block\",\n                    \"width\": \"100px\",\n                    \"font-size\": `${style.fontSize}px`,\n                    \"font-weight\": \"bold\",\n                    \"color\": style.fontColor,\n                    \"text-transform\": \"uppercase\",\n                    \"text-align\": \"center\",\n                    \"line-height\": \"20px\",\n                    \"white-space\": \"nowrap\",\n                    ...this.getTransformRibbon(isTop, isRight),\n                });\n                $(`.timesact-badge-ribbon-${settingType} span p`).css({\n                    \"margin\": 0,\n                    ...this.getTransformRibbonText(isTop),\n                    \"font-size\": `${style.fontSize}px`,\n                    \"color\": style.fontColor,\n                });\n                $(`.timesact-badge-ribbon-span-${settingType}`).css({\n                    \"background-color\": style.backgroundColor,\n                    \"box-shadow\": \"0 3px 10px -5px rgba(0, 0, 0, 1)\"\n                });\n                $(`.timesact-badge-rounded-span-${settingType}`).css({\n                    \"border\": \"1px solid transparent\",\n                    \"border-radius\": \"4rem\",\n                    \"display\": \"inline-block\",\n                    \"letter-spacing\": \".1rem\",\n                    \"line-height\": \"1\",\n                    \"padding\": \"0.6rem 1.3rem\",\n                    \"text-align\": \"center\",\n                    \"background-color\": style.backgroundColor,\n                    \"border-color\": style.backgroundColor,\n                    \"font-size\": `${style.fontSize}px`,\n                    \"color\": style.fontColor,\n                    \"font-weight\": \"bold\",\n                    \"word-break\": \"break-word\",\n                })\n                $(`.timesact-badge-rectangle-span-${settingType}`).css({\n                    \"display\": \"inline-block\",\n                    \"min-width\": \"60px\",\n                    \"padding\": \"0.6rem 1.3rem\",\n                    \"letter-spacing\": \".1rem\",\n                    \"line-height\": \"1\",\n                    \"text-align\": \"center\",\n                    \"font-size\": `${style.fontSize}px`,\n                    \"color\": style.fontColor,\n                    \"font-weight\": \"bold\",\n                    \"word-break\": \"break-word\",\n                    \"background-color\": style.backgroundColor,\n                    \"border-color\": style.backgroundColor,\n                    \"border\": \"1px solid transparent\",\n                })\n                $(`.timesact-badge-square-span-${settingType}`).css({\n                    \"display\": \"flex\",\n                    \"align-items\": \"center\",\n                    \"justify-content\": \"center\",\n                    \"min-height\": \"60px\",\n                    \"min-width\": \"60px\",\n                    \"width\": `${style.width}px`,\n                    \"height\": `${style.width}px`,\n                    \"letter-spacing\": \".1rem\",\n                    \"line-height\": \"1\",\n                    \"text-align\": \"center\",\n                    \"font-size\": `${style.fontSize}px`,\n                    \"color\": style.fontColor,\n                    \"font-weight\": \"bold\",\n                    \"word-break\": \"break-word\",\n                    \"background-color\": style.backgroundColor,\n                    \"border-color\": style.backgroundColor,\n                    \"border\": \"1px solid transparent\",\n                    \"overflow\": \"hidden\"\n                })\n                $(`.timesact-badge-circle-span-${settingType}`).css({\n                    \"display\": \"flex\",\n                    \"align-items\": \"center\",\n                    \"justify-content\": \"center\",\n                    \"min-height\": \"60px\",\n                    \"min-width\": \"60px\",\n                    \"width\": `${style.width + 28}px`,\n                    \"height\": `${style.width + 28}px`,\n                    \"padding\": \"14px\",\n                    \"letter-spacing\": \".1rem\",\n                    \"line-height\": \"1\",\n                    \"text-align\": \"center\",\n                    \"font-size\": `${style.fontSize}px`,\n                    \"color\": style.fontColor,\n                    \"font-weight\": \"bold\",\n                    \"word-break\": \"break-word\",\n                    \"background-color\": style.backgroundColor,\n                    \"border-color\": style.backgroundColor,\n                    \"border\": \"1px solid transparent\",\n                    \"border-radius\": \"50%\",\n                    \"overflow\": \"hidden\"\n                });\n                $(`.timesact-badge-common-${settingType}`).css({\n                    \"position\": \"absolute\",\n                    ...this.getPositions(isTop, isRight, \"10px\", \"10px\"),\n                    \"display\": \"flex\",\n                    \"flex-wrap\": \"wrap\",\n                    \"z-index\": \"1\"\n                });\n\n                if($('gp-product-images-v2').length > 0) {\n                   $(`.timesact-badge-ribbon-${settingType}`).css({\n                     \"width\": \"100%\"\n                   })\n                } \n            }\n        }\n\n        class Modal {\n            static updateStorage() {\n                window.sessionStorage.setItem(\"modal-queue\", JSON.stringify(cartModal.queue))\n            }\n\n            static pushQueue(settings, closeCb) {\n                // if exist\n                if (cartModal.queue.find(it => it.settings.id === settings.id)) return\n\n                cartModal.queue.push({ settings, closeCb })\n                this.updateStorage()\n            }\n\n            static popQueue() {\n                if (cartModal.queue.length <= 0) return\n                const item = cartModal.queue.pop()\n                this.updateStorage()\n                return item\n            }\n\n            static clearQueue() {\n                cartModal.queue = []\n                this.updateStorage()\n            }\n\n            static showFirst() {\n                if (cartModal.isOpen) return\n                const item = this.popQueue()\n                item && new Modal().display(item.settings, item.closeCb)\n            }\n\n            display(settings, closeCb) {\n                if (cartModal.isOpen) {\n                    return Modal.pushQueue(settings, closeCb)\n                }\n\n                cartModal.isOpen = true\n                $(\".md-body\").append('<h3>' + settings.header + '</h3><p class=\"message\">' + settings.body + '</p><button class=\"md-close\">' + settings.button + '</button><p><input type=\"checkbox\" id=\"md-stop\" name=\"md-stop\"><label for=\"md-stop\">' + settings.stop + '</label></p>');\n                $(\"#mixed-modal\").addClass('md-show');\n                $(\".md-close, .md-overlay\").click(function (event) {\n                    event.stopPropagation()\n                    if (closeCb instanceof Function) closeCb()\n\n                    cartModal.isOpen = false\n                    $(\"#mixed-modal\").removeClass('md-show');\n                    $(\".md-body\").empty()\n                    Modal.showFirst()\n                });\n                $('.md-close').attr('style', `\n\t\t\t\tbackground: ${settings.buttonBackgroundColor}!important;\n\t\t\t\tcolor: ${settings.buttonFontColor}!important;`)\n            }\n        }\n\n        class Product {\n            constructor(id, variants, title, sellingPlanGroups) {\n                this.id = id\n                this.variants = variants\n                this.title = title\n                this.sellingPlans = sellingPlanGroups ? sellingPlanGroups.filter(sellingPlanGroup => sellingPlanGroup.app_id == 'timesact').reduce((accumulator, sellingPlanGroup) => accumulator.concat(sellingPlanGroup.selling_plans), []) : []\n            }\n\n            setActiveVariant(variantId) {\n                this.variantId = variantId\n            }\n\n            setTimesactVariants(productConfig) {\n                if (!productConfig || !productConfig.variants) {\n                    console.log('[ERROR 2002]: Product config is undefined.')\n\n                    return\n                }\n                this.timesactVariants = productConfig.variants\n            }\n\n            isPOEnabledForVariant() {\n                if (!this.timesactVariants[this.variantId] || !this.timesactVariants[this.variantId].config) {\n                    return false\n                }\n\n                // New flow.\n                if ('isPOEnabled' in this.timesactVariants[this.variantId]) {\n                    return this.timesactVariants[this.variantId].isPOEnabled\n                }\n\n                // Old flow.\n                return this.timesactVariants[this.variantId].config.status === \"ACTIVE\" || this.timesactVariants[this.variantId].config.status === \"NO_STOCK\"\n            }\n\n            isISEnabledForVariant() {\n                if (!this.timesactVariants[this.variantId]) {\n                    return false\n                }\n\n                if ('isISEnabled' in this.timesactVariants[this.variantId]) {\n                    return this.timesactVariants[this.variantId].isISEnabled\n                }\n\n                return false\n            }\n\n            isBISEnabledForVariant() {\n                if (!this.timesactVariants[this.variantId]) {\n                    return false\n                }\n\n                window.ta.currentTimesactProductData.variantId = this.variantId\n                window.ta.currentTimesactProductData.productName = this.timesactVariants[this.variantId].displayName\n\n                return this.timesactVariants[this.variantId].isBISEnabled\n            }\n            isCSEnabledForVariant() {\n                if (!this.timesactVariants[this.variantId]) {\n                    return false\n                }\n\n                return this.timesactVariants[this.variantId].isCSEnabled\n            }\n\n            getVariantSettings(settings, defaultSettingId, type) {\n                if (!this.timesactVariants[this.variantId].config.settingsTemplate) {\n                    // Old flow, if the variant does not have a template assigned.\n                    const defaultSettings = settings[defaultSettingId]\n                    if (!this.hasCustomSettings()) {\n                        return defaultSettings\n                    }\n\n                    const customSettings = this.timesactVariants[this.variantId].settings\n\n                    return {\n                        button: {\n                            ...defaultSettings.button,\n                            name: customSettings.buttonName || defaultSettings.button.name\n                        },\n                        message: {\n                            ...defaultSettings.message,\n                            type: customSettings.messageType || defaultSettings.message.type,\n                            value: customSettings.messageValue || defaultSettings.message.value,\n                        },\n                        cart: {\n                            ...defaultSettings.cart,\n                            labelText: {\n                                key: customSettings.cartLabelTextKey || defaultSettings.cart.labelText.key,\n                                value: customSettings.cartLabelTextValue || defaultSettings.cart.labelText.value,\n                            }\n                        },\n                        badge: defaultSettings.badge\n                    }\n                }\n\n                if (type === \"PO\") {\n                    return this.timesactVariants[this.variantId].config.settingsTemplate in settings\n                        ? settings[this.timesactVariants[this.variantId].config.settingsTemplate]\n                        : settings[defaultSettingId]\n                }\n\n                if (type === \"BIS\") {\n                    return this.timesactVariants[this.variantId].configBIS.settingsTemplate in settings\n                        ? settings[this.timesactVariants[this.variantId].configBIS.settingsTemplate]\n                        : settings[defaultSettingId]\n                }\n\n                if (type === \"CS\") {\n                    return this.timesactVariants[this.variantId].configCS.settingsTemplate in settings\n                        ? settings[this.timesactVariants[this.variantId].configCS.settingsTemplate]\n                        : settings[defaultSettingId]\n                }\n\n                if (type === \"IS\") {\n                    return this.timesactVariants[this.variantId].configIS.settingsTemplate in settings\n                        ? settings[this.timesactVariants[this.variantId].configIS.settingsTemplate]\n                        : settings[defaultSettingId]\n                }\n\n                return settings[defaultSettingId]\n            }\n\n            hasCustomSettings() {\n                if (!this.timesactVariants[this.variantId].settings) {\n                    return false;\n                }\n                return this.timesactVariants[this.variantId].settings.type === \"CUSTOM\";\n            }\n\n            isVariantOutOfStock() {\n                if (!this.timesactVariants[this.variantId]) {\n                    return false;\n                }\n\n                const variant = this.timesactVariants[this.variantId]\n                if (variant.quantity > 0) { return false; }\n\n                if (variant.inventoryPolicy === \"DENY\") { return true; }\n                return false;\n            }\n        }\n\n        class ShopUtil {\n            constructor() { }\n\n            initTimesact() {\n                if (\"undefined\" != typeof window.ta) {\n                    return;\n                }\n\n                const products = localStorage.getItem('products') ? JSON.parse(localStorage.getItem('products')) : {}\n                const settings = localStorage.getItem('settings') ? JSON.parse(localStorage.getItem('settings')) : undefined\n\n                const lastProductUpdate = this.computeLastProductUpdate(products)\n                const lastSettingsUpdate = localStorage.getItem('lastSettingsUpdate') ? JSON.parse(localStorage.getItem('lastSettingsUpdate')) : 0\n\n                window.ta = {\n                    products,\n                    settings,\n                    lastProductUpdate,\n                    lastSettingsUpdate,\n                    cart: {\n                        showMixedCartAlert: sessionStorage.getItem('showCartMixedAlert') ? JSON.parse(sessionStorage.getItem('showCartMixedAlert')) : true\n                    },\n                    quickView: {\n                        selectors: {\n                            button: \".quickbuy-toggle, .quick-add__submit, .productitem--action-qs, .boost-pfs-quickview-btn, .cc-quick-buy-btn, .button--quick-shop, .sca-qv-button, .quick-view-btn, .bc-quickview-btn-wrapper, .sca-qv-cartbtn, .js-quick-shop-link, .searchit-quick-view-button, .quick-view, .js-quickbuy-button, .quick-product__btn, .product-card-interaction-quickshop, .product-modal, .productitem--action button, a.quickview, .overlay, a.quickview, .has-quick-view .btn .v-b, .shop-now-button, .quick-buy, .quick_shop, a[data-action='show-product'], .trigger-quick-view, .quickview-button, .quick_view, .qview-button, button.btn-addToCart:last, .quick-shop, .fancybox.ajax, .quick-add-button-variants, .product-thumbnail__quickshop-button, .js-quickView-button\",\n                            form: `.product__form:visible,\n\t\t\t\t\t\t\t#sca-qv-add-item-form:visible,\n\t\t\t\t\t\t\t.shopify-product-form:visible,\n\t\t\t\t\t\t\t.bc-modal-wrapper:visible\n\t\t\t\t\t\t\t#bc-quickview-cart-form:visible,\n\t\t\t\t\t\t\t.product_form:visible,\n\t\t\t\t\t\t\t.searchit-quick-view-form-wrapper\n\t\t\t\t\t\t\tform:visible, .product-form:visible,\n\t\t\t\t\t\t\t.quick-buy__product-form:visible,\n\t\t\t\t\t\t\t.product-single__form:visible,\n\t\t\t\t\t\t\tform[action='/cart/add']:visible,\n\t\t\t\t\t\t\t#AddToCartForm:visible,\n\t\t\t\t\t\t\tform.module:visible,\n\t\t\t\t\t\t\t#add-to-cart-quickview-form:visible`,\n                            addToCartButton: \"[type=submit]:visible:first\",\n                            variant: \"#sca-qv-variant-options select.single-option-selector, .bc-quickview-single-option-selector, .searchit-option-selector-wrapper select, .qview-variants select, select:visible, .radio-wrapper fieldset, input[type='radio']\",\n                            quantity: \"[name='quantity']\",\n                            quickviewModalContainer: \".quickbuy-container, .quick-add-modal, .theme-modal--quickbuy, .quickview-product .product-quickview:visible, .sca-fancybox-wrap:visible, .mfp-container:visible, .bc-modal-wrapper:visible, .quick-shop:visible, .searchit-modal:visible, #colorbox:visible, .modal--quick-shop:visible, .quickshop:visible, .fancybox-wrap:visible, .fancybox-container:visible, .modal-content:visible, .product-quick-view, section.quick-view, #ShopNowContainer, #ProductScreens, .product.preview, .modal__inner__wrapper:visible, .halo-modal-content:visible, #quickView:visible, .quickshop-content:visible, .modal__inner:visible, .quick-view .content:visible, .qview-product:visible\"\n                        }\n                    }\n                }\n            }\n\n            computeLastProductUpdate(products) {\n                let timestamp = parseInt(new Date().getTime() / 1000);\n                for (let product of Object.values(products)) {\n                    if (product.lastUpdate && product.lastUpdate < timestamp) {\n                        timestamp = product.lastUpdate;\n                        continue;\n                    }\n                    if (!product.lastUpdate) {\n                        timestamp = 1;\n                    }\n                }\n                return timestamp;\n            }\n\n            isProductPage() {\n                return -1 < window.location.href.indexOf(\"/products/\") || -1 < window.location.href.indexOf(\"/products_preview?\");\n            }\n\n            isCollectionPage() {\n                return -1 < window.location.href.indexOf(\"/collections/\");\n            }\n\n            isSearchPage() {\n                return -1 < window.location.href.indexOf(\"/search?\");\n            }\n\n            isPagesPage() {\n                return -1 < window.location.href.indexOf(\"/pages/\");\n            }\n\n            isHomePage() {\n                return document.location.pathname === \"/\";\n            }\n\n            isCartPage() {\n                return -1 < window.location.pathname.indexOf(\"/cart\");\n            }\n\n            initQuickView(shop) {\n                this.shopData = shop;\n                this.createQuickViewButtonListener();\n            }\n\n            createQuickViewButtonListener() {\n                var thisShop = this;\n                $(window.ta.quickView.selectors.button).click(function (target) {\n                    const handle = thisShop.getProductHandle(target.currentTarget);\n                    if (!handle) { return; }\n                    const url = thisShop.getProductPageJsURL(handle);\n                    var product;\n                  thisShop.sleep(600).then(function(){\n                     $.getJSON(url.concat('.js'), function (data) {\n                       console.log(data);\n                        product = new Product(data.id, data.variants, data.title, data.selling_plan_groups)\n                    }).done(function () {\n                        // thisShop.cleanupModal();\n                        new ScriptRunner(thisShop.shopData, product).run(/*isQuickView=*/true);\n                    }).fail(function () {\n                        console.log(\"[Error 1001]: Product could not be fetched.\");\n                    });\n                    });\n                });\n            }\n\n            getProductHandle(target) {\n                return $(target).attr(\"href\").split('/').pop();\n            }\n\n            getProductPageJsURL(handle) {\n                return \"https://\" + window.location.hostname + \"/products/\" + handle;\n            }\n\n            sleep(e) {\n                return new Promise(function (t) {\n                    setTimeout(t, e);\n                });\n            }\n\n            cleanupModal() {\n                $(window.ta.quickView.selectors.quickviewModalContainer).find(\"#preorder-label\").remove();\n                $(window.ta.quickView.selectors.quickviewModalContainer).find(\".timesact-preorder-description\").remove();\n            }\n        }\n\n        /* Util classes */\n        class ProductUtil {\n            extractVariantId(variants, formSelector) {\n                var productParams = window.location.search.match(/variant=([0-9]+)/);\n                if (productParams != null) return productParams[1];\n                const variantIdFromForm =\n                    \"radio\" === $(formSelector).find(\"select[name='id'], input[name='id'], select[name='id[]'], input[name='id[]']\").attr(\"type\")\n                        ? $(formSelector).find(\"input[name='id']:checked, input[name='id[]']:checked\").val()\n                        : $(formSelector).find(\"select[name='id'], input[name='id'], select[name='id[]'], input[name='id[]']\").val();\n\n                if (variants.some(variant => variant.id.toString() === variantIdFromForm)) {\n                    return variantIdFromForm;\n                }\n                // console.log(\"Variants are different: \" + variantIdFromForm + ' ' + variants[0].id);\n                return variants[0].id;\n            }\n        }\n\n        class TimesactBisModal {\n            static createListeners() {\n                $('.timesact_bis_input').focusout(function () {\n                    const timesactBisInput = $('.timesact_bis_input')\n\n                    if (timesactBisInput.val() && timesactBisInput.hasClass('timesact_bis_field_empty')) {\n                        timesactBisInput.removeClass('timesact_bis_field_empty')\n                        $('.timesact_bis_message_success').removeClass('timesact_bis_message_show')\n                        $('.timesact_bis_message_error').removeClass('timesact_bis_message_show')\n                    }\n                })\n                $('.timesact_bis_close_button').click(TimesactBisModal.hidenBisModal)\n                $('.timesact_bis_submit_button').click(TimesactBisModal.createSubscription)\n            }\n\n            static displayBisModal() {\n                const { defaultSettings, productId, productVariants, variantId } = window.ta.currentTimesactProductData\n                const product = new Product(productId, productVariants)\n\n                product.setActiveVariant(variantId)\n                product.setTimesactVariants({ variants: productVariants })\n\n                const { form } = product.getVariantSettings(window.ta.settings, defaultSettings.templates['BIS'], 'BIS');\n\n                // Set styles.\n                $('h3.timesact_bis_heading').attr('style', `color: ${form.headingFontColor} !important;`)\n\n                $('#subscriptionForm .timesact_bis_submit_button').attr('style', `\n\t\t\t\tbackground: ${form.buttonBackgroundColor} !important;\n\t\t\t\tcolor: ${form.buttonFontColor} !important;\n\t\t\t\tborder-radius: ${form.fieldsBorderRadius}px !important;\n\t\t\t\tfont-size: ${form.fontSize}px !important;`)\n\n                $('#subscriptionForm .timesact_bis_input').attr('style', `\n\t\t\t\tborder-radius: ${form.fieldsBorderRadius}px !important;\n\t\t\t\tfont-size: ${form.fontSize}px !important;`)\n\n                $('.timesact_bis_popup').attr('style', `border-radius: ${form.popupBorderRadius}px !important;`)\n                $('.timesact_bis_desc, .timesact_bis_note, .timesact_bis_subscribe').attr('style', `color: ${form.textFontColor} !important;`)\n                $('.timesact_bis_email').attr('style', `border-radius: ${form.fieldsBorderRadius}px !important;`)\n\n                // Set texts.\n                $('.timesact_bis_heading').text(form.heading)\n                $('.timesact_bis_desc').text(form.description)\n                $('.timesact_bis_submit_button').text(form.buttonName)\n                $('.timesact_bis_form_field .timesact_bis_note').text(form.note)\n                $('.timesact_bis_form_field .timesact_bis_subscribe').text(form.messageNewsletter)\n                $('.timesact_bis_message_success').text(form.messageSuccess)\n                $('.timesact_bis_message_error').text(form.messageError)\n\n                form.isNewsletterEnabled && $('.timesact_sub').attr(\"style\", \"display: inline-flex !important;\")\n\n                $(\".timesact_bis_popup_overlay\").addClass(\"timesact_bis_popup_overlay_show\")\n                $(\".timesact_bis_dialog\").addClass(\"timesact_bis_dialog_show\")\n                if (!form.isBrandEnabled) {\n                    $(\".timesact_powered_by\").hide()\n                }\n            }\n\n            static hidenBisModal() {\n                $('.timesact_bis_popup_overlay').removeClass('timesact_bis_popup_overlay_show')\n                $('.timesact_bis_dialog').removeClass(\"timesact_bis_dialog_show\")\n                $('.timesact_bis_message_success').removeClass(\"timesact_bis_message_show\").html('')\n                $('.timesact_bis_message_error').removeClass(\"timesact_bis_message_show\").html('')\n\n                emailInputFieldSelector.value = ''\n            }\n\n            static async createSubscription() {\n                const timesactBisMessageSuccess = $('.timesact_bis_message_success')\n                const timesactBisMessageError = $('.timesact_bis_message_error')\n                const timesactBisInput = $('.timesact_bis_input')\n\n                if (!emailInputFieldSelector.value) {\n                    timesactBisInput.addClass('timesact_bis_field_empty')\n                    return\n                }\n\n                const data = {\n                    type: 'EMAIL',\n                    status: 'PENDING',\n                    value: emailInputFieldSelector.value,\n                    productId: window.ta.currentTimesactProductData.productId,\n                    variantId: window.ta.currentTimesactProductData.variantId,\n                    productName: window.ta.currentTimesactProductData.productName,\n                    isSubNewsletter: $('#newsletter').is(\":checked\")\n                }\n\n                // console.log(data);\n              // return;\n\n                const created = await Api.createSubscription(data)\n\n                created && timesactBisMessageError.removeClass('timesact_bis_message_show') && timesactBisMessageSuccess.addClass('timesact_bis_message_show') && $('#timesact_bis_email').val('')\n\n                !created && timesactBisMessageSuccess.removeClass('timesact_bis_message_show') && timesactBisMessageError.addClass('timesact_bis_message_show')\n            }\n        }\n\n        class TimesactButton {\n            constructor(buttonSelector, className) {\n                this.addToCartButtonSelector = buttonSelector\n                this.hasInsideSpan = $(this.addToCartButtonSelector).first().prop('tagName')?.toLowerCase() === \"span\"\n\n                if (className === \"timesact-button-po\" || className === \"timesact-button-is\") {\n                    // Pre-order and In stock features use the existing \"Add to cart\" button.\n                    this.button = buttonSelector\n                } else {\n                    // BIS and CS features use our own button.\n                    this.button = $(`<button type=\"button\" class=\"${className}\" />`).attr('style', `display: none !important;`)\n\n                    if (this.hasInsideSpan) {\n                        $(this.addToCartButtonSelector).first().parent().after(this.button)\n                    } else {\n                        $(this.addToCartButtonSelector).first().after(this.button)\n                    }\n                }\n            }\n\n            showPO(settings) {\n                if (this.hasInsideSpan) {\n                    $(this.button).parent().show()\n                } else {\n                    $(this.button).show()\n                }\n                $(this.button).val(settings.button.name)\n                $(this.button).text(settings.button.name)\n                $(this.button).prop(\"disabled\", false)\n                if (settings.button.type === \"DEFAULT\") {\n                    return\n                }\n\n                // Custom button\n                if (this.hasInsideSpan) {\n                    $(this.button).first().parent().addClass(\"timesact-button\")\n                } else {\n                    $(this.button).first().addClass(\"timesact-button\")\n                }\n\n                this.applyStyles(settings.button.style, \"timesact-button\")\n            }\n\n            showBIS(settings) {\n                $(this.button).text(settings.button.name)\n                this.applyStyles(settings.button.style, \"timesact-button-bis\")\n                $(this.button).click(TimesactBisModal.displayBisModal)\n                $(this.button).show()\n\n                if (this.hasInsideSpan) {\n                    $(this.addToCartButtonSelector).first().parent().attr('style', `display: none !important;`)\n                } else {\n                    $(this.addToCartButtonSelector).first().attr('style', `display: none !important;`)\n                }\n            }\n\n            showCS(settings) {\n                $(this.button).text(settings.button.name)\n                this.button.prop(\"disabled\", true);\n                this.applyStyles(settings.button.style, \"timesact-button-cs\")\n                $(this.button).show()\n\n                if (this.hasInsideSpan) {\n                    $(this.addToCartButtonSelector).first().parent().attr('style', `display: none !important;`)\n                } else {\n                    $(this.addToCartButtonSelector).first().attr('style', `display: none !important;`)\n                }\n            }\n\n            showAddToCart() {\n                if (this.hasInsideSpan) {\n                    $(this.addToCartButtonSelector).first().parent().show()\n                    $(this.addToCartButtonSelector).first().parent().removeClass(\"timesact-button\")\n                    $(this.addToCartButtonSelector).first().parent().removeAttr(\"style\")\n                } else {\n                    $(this.addToCartButtonSelector).first().show()\n                    $(this.addToCartButtonSelector).first().removeClass(\"timesact-button\")\n                    $(this.addToCartButtonSelector).first().removeAttr(\"style\")\n                }\n\n                $(this.addToCartButtonSelector).val(this.addToCartText)\n                $(this.addToCartButtonSelector).text(this.addToCartText)\n                $(this.addToCartButtonSelector).prop(\"disabled\", false)\n            }\n\n            showOutOfStock() {\n                if (this.hasInsideSpan) {\n                    $(this.addToCartButtonSelector).first().parent().show()\n                    $(this.addToCartButtonSelector).first().parent().removeClass(\"timesact-button\")\n                    $(this.addToCartButtonSelector).first().parent().removeAttr(\"style\")\n                } else {\n                    $(this.addToCartButtonSelector).first().show()\n                    $(this.addToCartButtonSelector).first().removeClass(\"timesact-button\")\n                    $(this.addToCartButtonSelector).first().removeAttr(\"style\")\n                }\n\n                $(this.addToCartButtonSelector).val(this.soldOutText)\n                $(this.addToCartButtonSelector).text(this.soldOutText)\n                $(this.addToCartButtonSelector).prop(\"disabled\", true)\n\n                console.log('showOutOfStock: Button disabled:', $(this.addToCartButtonSelector).prop(\"disabled\")) // Debugging line\n            }\n\n            setAddToCartText(text) {\n                this.addToCartText = text || $(this.addToCartButtonSelector).text()\n            }\n\n            setSoldOutText(text) {\n                this.soldOutText = text\n            }\n\n            hide() {\n                $(this.button).hide()\n            }\n\n            disable() {\n                if (this.hasInsideSpan) {\n                    $(this.button).parent().prop(\"disabled\", true)\n                } else {\n                    $(this.button).prop(\"disabled\", true)\n                }\n                $(this.addToCartButtonSelector).prop(\"disabled\", true)\n\n                console.log('disable: Button disabled:', $(this.addToCartButtonSelector).prop(\"disabled\")) // Debugging line\n            }\n\n            confirmButtonExists() {\n                return $(this.button).closest(\"body\").length > 0;\n            }\n\n            identifyButton(selectors) {\n                this.button = selectors.formSelector.find(selectors.ids.addToCartButton);\n            }\n\n            applyStyles(style, className) {\n                $(`.${className}`).attr('style', `\n                width: ${style.width}${style.widthType === \"PERCENT\" ? \"%\" : \"px\"} !important;\n                height: ${style.height}${style.heightType === \"PERCENT\" ? \"%\" : \"px\"} !important;\n                background-color: ${style.backgroundColor} !important;\n                border: ${style.borderWidth}px solid ${style.borderColor} !important;\n                border-color: ${style.borderColor} !important;\n                border-radius: ${style.borderRadius}px !important;\n                border-width: ${style.borderWidth}px !important;\n                color: ${style.fontColor} !important;\n                font-size: ${style.fontSize}px !important;\n                font-style: ${style.fontStyle} !important;\n                font-weight: ${style.fontWeight} !important;\n                margin-bottom: 10px !important;\n                margin-top: 10px !important;\n                cursor: pointer;`);\n\n                // set px height to make dependency in %\n                if (style.heightType === \"PERCENT\") {\n                    const parentHeight = $(`.${className}`).parent().height()\n                    $(`.${className}`).height(`${parentHeight * style.height / 100}px`)\n                }\n            }\n\n            // PO cart alert functions\n            removeCartAlertListener() {\n                $(this.button).parent().off(\"click\", this.cartAlertModalClickHandler)\n            }\n\n            closeCartAlertModal(settings, tmps = {}) {\n                window.sessionStorage.setItem(\"showCartAlert\", JSON.stringify({\n                    ...tmps,\n                    [settings.id]: { dismiss: $('#md-stop').is(\":checked\") },\n                }));\n\n                // if not dismissed\n                if (!($('#md-stop').is(\":checked\"))) return\n\n                this.removeCartAlertListener()\n            }\n\n            addCartAlertListener(settings, product) {\n                const tmps = JSON.parse(window.sessionStorage.getItem(\"showCartAlert\") || null) || {}\n                const closedTmpsIds = JSON.parse(window.sessionStorage.getItem(\"closedModals\") || null) || []\n                const tmpId = `${settings.type}-${product.id}-${product.variantId}`\n\n                // if not enabled or closed already with this template\n                if (!settings.cart.alert) {\n                    return\n                }\n\n                if (\n                    !settings.cart.alert.isEnabled || settings.cart.alert.onButtonClick !== true ||\n                    tmps[tmpId]?.dismiss || closedTmpsIds.includes(tmpId)\n                ) {\n                    return\n                }\n\n                // save temporary to reset event handling\n                this.cartAlertModalClickHandler = () => {\n                    const s = { ...settings.cart.alert, id: tmpId }\n                    return new Modal().display(s, () => this.closeCartAlertModal(s, tmps));\n                }\n\n                $(this.button).parent().on(\"click\", this.cartAlertModalClickHandler)\n            }\n        }\n\n        class TimesactCountdownTimer {\n            constructor(timerSelector, className) {\n                this.timerSelector = timerSelector\n\n                // for inner operations\n                this.utils = {\n                    delims: [60, 60, 24, 365]\n                }\n\n                // component\n                this.components = {\n                    timer: null,\n                    timerElements: [null, null, null, null]\n                }\n                this.componentsClasses = {\n                    timer: `timer-container-${className}`,\n                    title: \"timer-title\",\n                    subheading: \"timer-subheading\",\n                    timerValueContainer: \"timer-value-container\",\n                    timerLabels: \"timer-value-labels\",\n                    timerValues: \"timer-values\"\n                }\n            }\n\n            setTimerInfo({ content, isEnabled, placement, style, productConfig }) {\n                this.title = content.title;\n                this.subheading = content.subheading;\n                this.labels = content.labels;\n                this.dates = content?.dates;\n                this.placement = placement;\n                this.isEnabled = isEnabled || false;\n                this.style = style || null;\n\n                this.onceItEnds = content.onceItEnds\n\n                this.productConfig = productConfig\n            }\n\n            show() {\n                if (!this.isEnable()) return false\n\n                this.createTimer()\n\n                this.placement === \"BELOW\"\n                    ? $(this.timerSelector).after(this.components.timer)\n                    : $(this.timerSelector).before(this.components.timer)\n\n                this.applyStyles()\n\n                this.countdown()\n            }\n\n            hide() {\n                // stop & remove old timer\n                this.stop()\n                $(`.${this.componentsClasses.timer}`).remove();\n            }\n\n            createTitle() {\n                return $(`<h2 class=\"${this.componentsClasses.title}\">${this.title}</h2>`)\n            }\n\n            createSubheading() {\n                return $(`<p class=\"${this.componentsClasses.subheading}\">${this.subheading}</p>`)\n            }\n\n            createTimerLabels() {\n                const els = []\n                const labelOrder = [\"days\", \"hours\", \"mins\", \"secs\"]\n                for (const propName of labelOrder) {\n                    els.push($(`<div class=\"${this.componentsClasses.timerLabels}\">${this.labels[propName]}</div>`))\n                }\n                return els\n            }\n\n            createTimerValues() {\n                const els = []\n                const vals = [\"00\", \":\", \"00\", \":\", \"00\", \":\", \"00\"]\n                vals.forEach(v => els.push($(`<div translate=\"no\" class=\"${this.componentsClasses.timerValues}\">${v}</div>`)))\n\n                // add to handle\n                this.components.timerElements = els.filter((_, i) => i % 2 === 0)\n\n                return els\n            }\n\n            createTimerValueContainer() {\n                const el = $(`<div class=\"${this.componentsClasses.timerValueContainer}\"></div>`)\n                el.append(...this.createTimerValues(), ...this.createTimerLabels())\n                return el\n            }\n\n            createTimer() {\n                const el = $(`<div class=\"${this.componentsClasses.timer}\"></div>`)\n\n                // add title & subheading & timer\n                el.append(this.createTitle(), this.createSubheading(), this.createTimerValueContainer())\n\n                this.components.timer = el\n\n                return el\n            }\n\n            getEndDateFromPeriod(type, value) {\n                const now = parseInt(Date.now() / 1000)\n                const dayInSeconds = parseInt(value) * 60 * 60 * 24\n\n                switch (type) {\n                    case \"MONTH\":\n                        return now + (dayInSeconds * 30)\n                    case \"WEEK\":\n                        return now + (dayInSeconds * 7)\n                    // DAY\n                    default:\n                        return now + dayInSeconds\n                }\n            }\n\n            getActualEndDate() {\n                switch (this.dates.endAt) {\n                    case \"END_DATE\":\n                        return (this.productConfig.hasEndDate && this.productConfig.endDate) || parseInt(Date.now() / 1000)\n\n                    case \"SHIPPING_DATE\": {\n                        switch (this.productConfig.shippingDate.type) {\n                            case \"PERIOD\":\n                                return this.getEndDateFromPeriod(this.productConfig.shippingDate.periodType, this.productConfig.shippingDate.periodValue)\n\n                            case \"INTERVAL\":\n                                return this.getEndDateFromPeriod(this.productConfig.shippingDate.periodEnd.type, this.productConfig.shippingDate.periodEnd.value)\n\n                            default:\n                                return this.productConfig.shippingDate.date || parseInt(Date.now() / 1000)\n                        }\n                    }\n\n                    // DATE\n                    default: {\n                        switch (this.dates.type) {\n                            case \"FIXED\":\n                                return parseInt(Date.now() / 1000) + (parseInt(this.dates.minutes) * 60)\n\n                            default:\n                                return this.dates.endDate._seconds\n                        }\n                    }\n                }\n            }\n\n            isEnable() {\n                // is expired?\n                if (this.getActualEndDate() < Date.now() / 1000) return false\n\n                // is started?\n                if (this.dates?.startDate) {\n                    return this.isEnabled && this.dates.startDate._seconds < Date.now() / 1000\n                }\n\n                // is enabled at all?\n                return this.isEnabled\n            }\n\n            make2Digit(number) {\n                return `${number < 10 ? '0' : ''}${number}`\n            }\n\n            handleOnEnd() {\n                const { value, customTitle } = this.onceItEnds\n\n                switch (value) {\n                    case \"unpublish-timer\":\n                        return this.hide()\n\n                    case \"repeat-the-countdown\":\n                        // cant repeat not fixed timer\n                        // cant repeat not specific date timer\n                        if (this.dates.type !== \"FIXED\" || (!!this.dates.endAt && this.dates.endAt !== \"DATE\")) {\n                            return\n                        }\n\n                        // set new end date\n                        this.dates.endDate._seconds = this.getActualEndDate()\n\n                        // restart countdown with delay\n                        return setTimeout(() => {\n                            return this.countdown()\n                        }, 500);\n\n                    case \"show-custom-title\":\n                        return this.components.timer.html(customTitle)\n\n                    default: break\n                }\n            }\n\n            // [dd, hh, mm, ss]\n            calculateRelativeDatetime(fromSeconds, toSeconds) {\n                if (typeof fromSeconds !== \"number\" || typeof toSeconds !== \"number\") return [\"00\", \"00\", \"00\", \"00\"]\n                if (fromSeconds - toSeconds <= 0) return [\"00\", \"00\", \"00\", \"00\"]\n\n                const remains = [0, 0, 0, 0]\n\n                let diff = Math.abs(fromSeconds - toSeconds)\n\n                // calculate difference\n                for (let i = 0; i < this.utils.delims.length; i++) {\n                    const delimeter = this.utils.delims[i];\n                    remains[i] = Math.floor(diff % delimeter);\n\n                    if (diff >= delimeter) {\n                        diff /= delimeter;\n                        continue;\n                    }\n                    break\n                }\n\n                return remains.map(v => this.make2Digit(v)).reverse()\n            };\n\n            countdown() {\n                let prevVals = []\n                let timerDateSeconds = parseInt(Date.now() / 1000)\n                const endDateSeconds = this.getActualEndDate()\n                const timerInterval = 1000\n\n                this.timerId = setInterval(() => {\n                    if (endDateSeconds < timerDateSeconds) {\n                        this.handleOnEnd()\n                        return this.stop()\n                    }\n\n                    // get difference between end and now\n                    const timerVals = this.calculateRelativeDatetime(endDateSeconds, timerDateSeconds)\n\n                    // update content\n                    this.components.timerElements.forEach((el, i) => {\n                        if (prevVals[i] !== timerVals[i]) el.text(timerVals[i])\n                    })\n\n                    // update prev vals\n                    prevVals = timerVals\n\n                    // update current time\n                    timerDateSeconds += timerInterval / 1000\n                }, timerInterval);\n            }\n\n            stop() {\n                clearInterval(this.timerId)\n            }\n\n            applyStyles() {\n                $(`.${this.componentsClasses.timer} *`).css({\n                    \"margin\": 0,\n                    \"padding\": 0,\n                    \"box-sizing\": \"border-box\",\n                });\n\n                $(`.${this.componentsClasses.timer}`).css({\n                    \"max-width\": \"420px\",\n                    \"min-width\": \"260px\",\n                    \"display\": \"flex\",\n                    \"flex-flow\": \"column\",\n                    \"text-align\": \"center\",\n                    \"-webkit-box-align\": \"center\",\n                    \"align-items\": \"center\",\n                    \"overflow\": \"hidden\",\n\n                    // customer\n                    \"margin-bottom\": `${this.style.container?.marginBottom}px`,\n                    \"margin-top\": `${this.style.container?.marginTop}px`,\n                    \"padding-bottom\": `${this.style.container?.paddingBottom}px`,\n                    \"padding-top\": `${this.style.container?.paddingTop}px`,\n                    \"background-color\": this.style.container?.background,\n                    \"border-color\": this.style.container?.borderColor,\n                    \"border-radius\": `${this.style.container?.borderRadius}px`,\n                    \"border-width\": `${this.style.container?.borderSize}px`,\n                    \"border-style\": 'solid'\n                });\n\n                $(`.${this.componentsClasses.title}`).css({\n                    \"font-weight\": \"bold\",\n\n                    // customer\n                    \"color\": this.style.title?.color,\n                    \"font-size\": `${this.style.title?.fontSize}px`\n                });\n\n                $(`.${this.componentsClasses.subheading}`).css({\n                    \"padding-top\": \"2px\",\n                    \"line-height\": \"1.5\",\n\n                    // customer\n                    \"color\": this.style.subheading?.color,\n                    \"font-size\": `${this.style.subheading?.fontSize}px`\n                });\n\n                $(`.${this.componentsClasses.timerValueContainer}`).css({\n                    \"display\": \"grid\",\n                    \"grid-template-columns\": \"1fr 10px 1fr 10px 1fr 10px 1fr\",\n                    \"gap\": \"6px 2px\",\n                    \"place-items\": \"center\",\n                    \"align-items\": \"flex-start\",\n                });\n\n                $(`.${this.componentsClasses.timerValues}`).css({\n                    \"font-weight\": \"bold\",\n                    \"font-feature-settings\": \"tnum\",\n                    \"font-variant-numeric\": \"tabular-nums\",\n                    \"letter-spacing\": \"-2px\",\n                    \"line-height\": \"1\",\n\n                    // customer\n                    \"color\": this.style.timer?.color,\n                    \"font-size\": `${this.style.timer?.fontSize}px`,\n                });\n\n                $(`.${this.componentsClasses.timerLabels}`).css({\n                    \"max-width\": \"100px\",\n                    \"white-space\": \"pre-line\",\n                    \"grid-column\": \"span 2 / auto\",\n                    \"text-align\": \"center\",\n                    \"padding-right\": \"10px\",\n                    \"line-height\": \"1\",\n\n                    // customer\n                    \"color\": this.style.labels?.color,\n                    \"font-size\": `${this.style.labels?.fontSize}px`\n                });\n\n                $(`.${this.componentsClasses.timerLabels}:last-of-type`).css({\n                    \"grid-column\": \"span 1 / auto\",\n                    \"padding-right\": 0,\n                });\n            }\n        }\n\n        class Message {\n            constructor(locale) {\n                this.locale = locale;\n            }\n\n            addStylePreorderMessage(style, type) {\n                $(`.timesact-${type}-description`).css({\n                    \"font-size\": `${style.fontSize}px`,\n                    \"color\": style.fontColor,\n                    \"text-align\": style.textAlign,\n                    \"font-weight\": style.fontWeight,\n                    \"font-style\": style.fontStyle,\n                    \"margin-bottom\": \"10px\",\n                    \"margin-top\": \"10px\"\n                });\n            }\n\n            populateDynamicValues(variant, value, isCartLabel, configType) {\n                value = value.replace(\"{{preorderQuantity}}\", this.getQuantity(variant, isCartLabel, configType));\n                value = value.replace(\"{{shippingDate}}\", this.getShippingDate(variant[configType].shippingDate, isCartLabel));\n                value = value.replace(\"{{daysLeftUntilShippingDate}}\", this.getDaysLeftUntilShippingDate(variant[configType].shippingDate, isCartLabel));\n                value = value.replace(\"{{daysLeftUntilPreorderEndDate}}\", this.getDaysLeftUntilEndDate(variant[configType], isCartLabel));\n                return value;\n            }\n\n            getQuantity(variant, isCartLabel, configType) {\n                if (variant[configType].stock.option == \"STOCK3\") {\n                    // Stock3 uses Shopify stock inventory.\n                    return variant.quantity;\n                }\n                if (variant[configType].stock.hasUnlimitedQuantity) {\n                    return isCartLabel ? 'VARIABLE_NOT_SET' : '<span style=\"color:red;\">VARIABLE_NOT_SET</span>';\n                }\n\n                return variant[configType].stock.quantity;\n            }\n\n            getShippingDate(shippingDate, isCartLabel) {\n                if (!shippingDate || shippingDate.type === \"NO_SET\") {\n                    return isCartLabel ? 'VARIABLE_NOT_SET' : '<span style=\"color:red;\">VARIABLE_NOT_SET</span>';\n                }\n\n                if (shippingDate.type === \"DATE\") {\n                    const date = new Date(shippingDate.date * 1000);\n                    return date.toLocaleDateString(this.locale, { day: \"numeric\", month: \"long\", year: \"numeric\" });\n                }\n\n                if (shippingDate.type === \"PERIOD\") {\n                    var days = 1;\n                    switch (shippingDate.periodType) {\n                        case \"DAY\": days = shippingDate.periodValue; break;\n                        case \"WEEK\": days = shippingDate.periodValue * 7; break;\n                        case \"MONTH\": days = shippingDate.periodValue * 30; break;\n                    }\n\n                    var date = new Date();\n                    date.setDate(date.getDate() + days);\n                    return date.toLocaleDateString(this.locale, { day: \"numeric\", month: \"long\", year: \"numeric\" });\n                }\n\n                if (shippingDate.type === \"INTERVAL\") {\n                    var periodStartDays = 1\n                    var periodEndDays = 1\n                    switch (shippingDate.periodStart.type) {\n                        case \"DAY\": periodStartDays = shippingDate.periodStart.value; break;\n                        case \"WEEK\": periodStartDays = shippingDate.periodStart.value * 7; break;\n                        case \"MONTH\": periodStartDays = shippingDate.periodStart.value * 30; break;\n                    }\n                    switch (shippingDate.periodEnd.type) {\n                        case \"DAY\": periodEndDays = shippingDate.periodEnd.value; break;\n                        case \"WEEK\": periodEndDays = shippingDate.periodEnd.value * 7; break;\n                        case \"MONTH\": periodEndDays = shippingDate.periodEnd.value * 30; break;\n                    }\n\n                    var dateStart = new Date();\n                    dateStart.setDate(dateStart.getDate() + periodStartDays);\n\n                    var dateEnd = new Date();\n                    dateEnd.setDate(dateEnd.getDate() + periodEndDays);\n                    return dateStart.toLocaleDateString(this.locale, { day: \"numeric\", month: \"long\", year: \"numeric\" }) + ' - ' + dateEnd.toLocaleDateString(this.locale, { day: \"numeric\", month: \"long\", year: \"numeric\" });\n                }\n            }\n\n            getDaysLeftUntilShippingDate(shippingDate, isCartLabel) {\n                if (!shippingDate || shippingDate.type === \"NO_SET\") {\n                    return isCartLabel ? 'VARIABLE_NOT_SET' : '<span style=\"color:red;\">VARIABLE_NOT_SET</span>';\n                }\n\n                const today = new Date();\n                if (shippingDate.type === \"DATE\") {\n                    const date = new Date(shippingDate.date * 1000);\n                    return Math.ceil((date.getTime() - today.getTime()) / (1000 * 3600 * 24));\n                }\n\n                if (shippingDate.type === \"PERIOD\") {\n                    switch (shippingDate.periodType) {\n                        case \"DAY\": return shippingDate.periodValue;\n                        case \"WEEK\": return shippingDate.periodValue * 7;\n                        case \"MONTH\": return shippingDate.periodValue * 30;\n                        default: return 1;\n                    }\n                }\n\n                if (shippingDate.type === \"INTERVAL\") {\n                    var periodStartDays = 1\n                    var periodEndDays = 1\n                    switch (shippingDate.periodStart.type) {\n                        case \"DAY\": periodStartDays = shippingDate.periodStart.value; break;\n                        case \"WEEK\": periodStartDays = shippingDate.periodStart.value * 7; break;\n                        case \"MONTH\": periodStartDays = shippingDate.periodStart.value * 30; break;\n                    }\n                    switch (shippingDate.periodEnd.type) {\n                        case \"DAY\": periodEndDays = shippingDate.periodEnd.value; break;\n                        case \"WEEK\": periodEndDays = shippingDate.periodEnd.value * 7; break;\n                        case \"MONTH\": periodEndDays = shippingDate.periodEnd.value * 30; break;\n                    }\n                    return periodStartDays + ' - ' + periodEndDays\n                }\n            }\n\n            getDaysLeftUntilEndDate(config, isCartLabel) {\n                if (!config.hasEndDate) { return isCartLabel ? 'VARIABLE_NOT_SET' : '<span style=\"color:red;\">VARIABLE_NOT_SET</span>'; }\n                const today = new Date();\n                const date = new Date(config.endDate * 1000);\n                return Math.ceil((date.getTime() - today.getTime()) / (1000 * 3600 * 24));\n            }\n        }\n\n        class Timesact {\n            constructor(selectors, product, defaultSettingIds, shop) {\n                this.selectors = selectors\n                this.product = product\n                this.settings = window.ta.settings\n                this.defaultSettingIds = defaultSettingIds\n                this.buttonPO = new TimesactButton(this.selectors.buttonSelector, \"timesact-button-po\")\n                this.buttonIS = new TimesactButton(this.selectors.buttonSelector, \"timesact-button-is\")\n                this.buttonBIS = new TimesactButton(this.selectors.buttonSelector, \"timesact-button-bis\")\n                this.buttonCS = new TimesactButton(this.selectors.buttonSelector, \"timesact-button-cs\")\n                this.timerPO = new TimesactCountdownTimer(this.selectors.timerSelector, \"timesact-timer-po\")\n                this.timerIS = new TimesactCountdownTimer(this.selectors.timerSelector, \"timesact-timer-is\")\n                this.timerBIS = new TimesactCountdownTimer(this.selectors.timerSelector, \"timesact-timer-bis\")\n                this.timerCS = new TimesactCountdownTimer(this.selectors.timerSelector, \"timesact-timer-cs\")\n                this.uuid = Math.floor(100000000 + Math.random() * 900000000)\n                $(this.selectors.variantSelector).addClass(\"timesact-variant-picker-\" + this.uuid)\n                this.shop = shop\n            }\n\n            init() {\n                this.createWidget();\n                new TimesactEventListener().initVariantEventListener(this);\n            }\n\n            createWidget() {\n                const variant = this.product.timesactVariants[this.product.variantId]\n\n                if (this.product.isBISEnabledForVariant()) {\n                    const settings = this.product.getVariantSettings(this.settings, this.defaultSettingIds.BIS, \"BIS\")\n\n                    this.buttonBIS.setAddToCartText(settings.button.addToCartText)\n                    this.buttonBIS.setSoldOutText(settings.button.soldOutText)\n\n                    if (variant.configBIS.status === \"ACTIVE\") {\n                        this.buttonBIS.showBIS(settings)\n                        this.addCommonElements(settings, variant)\n                    }\n                }\n\n                if (this.product.isISEnabledForVariant()) {\n                    const settings = this.product.getVariantSettings(this.settings, this.defaultSettingIds.IS, \"IS\")\n\n                    this.buttonIS.setAddToCartText(settings.button.addToCartText)\n                    this.buttonIS.setSoldOutText(settings.button.soldOutText)\n\n                    if (variant.configIS.status === \"NO_STOCK\") {\n                        this.buttonIS.showOutOfStock()\n                        $(this.selectors.formSelector).find(\".shopify-payment-button\").hide()\n                    }\n\n                    if (variant.configIS.status === \"ACTIVE\") {\n                        if (!this.buttonIS.confirmButtonExists()) {\n                            this.buttonIS.identifyButton(this.selectors)\n                            this.selectors.buttonSelector = $(this.selectors.formSelector).find(this.selectors.ids.addToCartButton)\n                        }\n\n                        this.buttonIS.showPO(settings)\n                        this.buttonIS.addCartAlertListener(settings, this.product)\n\n                        // Shop has been disabled but the product was not marked accordingly.\n                        if (this.shop.isDisabledIS) {\n                            this.buttonIS.disable()\n                        }\n\n                        this.addCommonElements(settings, variant)\n\n                        // Set-up cart label.\n                        const message = new Message(settings.message.locale || \"en-US\")\n                        const cartLabelTextKey = message.populateDynamicValues(variant, settings.cart.labelText.key, /*isCartLabel=*/true, /*configType=*/'configIS')\n                        const cartLabelTextValue = message.populateDynamicValues(variant, settings.cart.labelText.value,  /*isCartLabel=*/true, /*configType=*/'configIS')\n\n                        if (typeof settings.cart.labelText.isEnabled === \"undefined\" || settings.cart.labelText.isEnabled) {\n                            this.showPreorderLineItemProperty(cartLabelTextKey, cartLabelTextValue)\n                        }\n                    }\n\n                }\n\n                if (this.product.isPOEnabledForVariant()) {\n                    const settings = this.product.getVariantSettings(this.settings, this.defaultSettingIds.PO, \"PO\")\n\n                    this.buttonPO.setAddToCartText(settings.button.addToCartText)\n                    this.buttonPO.setSoldOutText(settings.button.soldOutText)\n\n                    if (variant.config.status === \"NO_STOCK\") {\n                        this.buttonPO.showOutOfStock()\n                        $(this.selectors.formSelector).find(\".shopify-payment-button\").hide()\n                    }\n\n                    if (variant.config.status === \"ACTIVE\") {\n                        if (!this.buttonPO.confirmButtonExists()) {\n                            this.buttonPO.identifyButton(this.selectors)\n                            this.selectors.buttonSelector = $(this.selectors.formSelector).find(this.selectors.ids.addToCartButton)\n                        }\n\n                        if (this.shop.hasSellingPlanEnabled && this.product.sellingPlans.length > 0 && !this.shop.isSellingPlanUIDisabled) {\n                            this.addSellingPlan(this.product.sellingPlans, settings, variant)\n                        }\n\n                        this.buttonPO.showPO(settings)\n                        this.buttonPO.addCartAlertListener(settings, this.product)\n\n                        // Shop has been disabled but the product was not marked accordingly.\n                        if (this.shop.isDisabled) {\n                            this.buttonPO.disable()\n                        }\n\n                        this.addCommonElements(settings, variant)\n\n                        // Set-up cart label.\n                        const message = new Message(settings.message.locale || \"en-US\")\n                        const cartLabelTextKey = message.populateDynamicValues(variant, settings.cart.labelText.key, /*isCartLabel=*/true, /*configType=*/'config')\n                        const cartLabelTextValue = message.populateDynamicValues(variant, settings.cart.labelText.value,  /*isCartLabel=*/true, /*configType=*/'config')\n\n                        if (typeof settings.cart.labelText.isEnabled === \"undefined\" || settings.cart.labelText.isEnabled) {\n                            this.showPreorderLineItemProperty(cartLabelTextKey, cartLabelTextValue)\n                        }\n\n                        if (!variant.config.stock.hasUnlimitedQuantity) {\n                            // If pre-order quantity has been set, we should add quantity limitation.\n                            this.addQuantityListener(variant.config.stock.quantity)\n                        }\n                    }\n                }\n\n                if (this.product.isCSEnabledForVariant()) {\n                    const settings = this.product.getVariantSettings(this.settings, this.defaultSettingIds.CS, \"CS\")\n\n                    this.buttonCS.setAddToCartText(settings.button.addToCartText)\n                    this.buttonCS.setSoldOutText(settings.button.soldOutText)\n                    if (variant.configCS.status === \"ACTIVE\") {\n                        this.buttonCS.showCS(settings)\n                        this.addCommonElements(settings, variant)\n                    }\n                }\n\n                $('.atc-button-hide').removeClass('atc-button-hide');\n            }\n\n            resetDefault() {\n                this.buttonBIS.hide()\n                this.buttonCS.hide()\n\n                // timer\n                this.timerPO.hide()\n                this.timerIS.hide()\n                this.timerBIS.hide()\n                this.timerCS.hide()\n\n                // listeners\n                this.buttonPO.removeCartAlertListener()\n                this.buttonIS.removeCartAlertListener()\n\n                if (!this.buttonPO.confirmButtonExists() || !this.buttonIS.confirmButtonExists()) {\n                    this.buttonPO.identifyButton(this.selectors);\n                    this.buttonIS.identifyButton(this.selectors);\n                    this.selectors.buttonSelector = $(this.selectors.formSelector).find(this.selectors.ids.addToCartButton);\n                }\n\n                if (this.product.isVariantOutOfStock()) {\n                    this.buttonPO.showOutOfStock();\n                    $(this.selectors.formSelector).find(\".shopify-payment-button\").hide();\n                } else {\n                    this.buttonPO.showAddToCart();\n                    $(this.selectors.formSelector).find(\".shopify-payment-button\").show();\n                }\n                this.removePreorderLineItemProperty();\n                this.removePreorderMessage();\n                this.removePreorderBadge();\n                this.removePreorderQuantity();\n                this.removeSellingPlanWidget();\n\n                if (this.selectors.hideProductElements) {\n                    this.addHiddenElements();\n                }\n            }\n\n            addSellingPlan(sellingPlans, settings, variant) {\n                if (!variant.config.sellingPlan) {\n                    console.log('Variant has no SellingPlan set.')\n                    return\n                }\n\n                const sellingPlan = sellingPlans.find(sellingPlan => String(sellingPlan.id) === variant.config.sellingPlan)\n\n                if (!sellingPlan) {\n                    console.log('SellingPlan was not found.')\n                    return\n                }\n\n                if (sellingPlan.options[0].name === \"FULL_PAYMENT\") {\n                    this.addHiddenSellingPlan(sellingPlan.id);\n                    \n                } else {\n                    // Partial Payment widget.\n                    $(this.selectors.sellingPlanSelector).before(timesactPartialPayment)\n                    $('#timesact_widget .timesact_text').text(sellingPlan.options[0].value)\n                    $('#timesact_widget #timesact_selling_plan_label').val(sellingPlan.id)\n                }\n\n                // Selling plan description as a pre-order message.\n                const message = new Message(settings.locale || \"en-US\");\n                this.showPreorderMessage(settings.message.type, sellingPlan.description, /*type=*/\"selling-plan\")\n                message.addStylePreorderMessage(settings.message, /*type=*/\"selling-plan\");\n            }\n\n            static displayBisModal() {\n                const { defaultSettings, productId, productVariants, variantId } = window.ta.currentTimesactProductData\n                const product = new Product(productId, productVariants)\n\n                product.setActiveVariant(variantId)\n                product.setTimesactVariants({ variants: productVariants })\n\n                const { form } = product.getVariantSettings(window.ta.settings, defaultSettings.templates['BIS'], 'BIS');\n\n                // Set styles.\n                $('h3.timesact_bis_heading').attr('style', `color: ${form.headingFontColor} !important;`)\n\n                $('#subscriptionForm .timesact_bis_submit_button').attr('style', `\n\t\t\t\tbackground: ${form.buttonBackgroundColor} !important;\n\t\t\t\tcolor: ${form.buttonFontColor} !important;\n\t\t\t\tborder-radius: ${form.fieldsBorderRadius}px !important;\n\t\t\t\tfont-size: ${form.fontSize}px !important;`)\n\n                $('#subscriptionForm .timesact_bis_input').attr('style', `\n\t\t\t\tborder-radius: ${form.fieldsBorderRadius}px !important;\n\t\t\t\tfont-size: ${form.fontSize}px !important;`)\n\n                $('.timesact_bis_popup').attr('style', `border-radius: ${form.popupBorderRadius}px !important;`)\n                $('.timesact_bis_desc, .timesact_bis_note, .timesact_bis_subscribe').attr('style', `color: ${form.textFontColor} !important;`)\n                $('.timesact_bis_email').attr('style', `border-radius: ${form.fieldsBorderRadius}px !important;`)\n\n                // Set texts.\n                $('.timesact_bis_heading').text(form.heading)\n                $('.timesact_bis_desc').text(form.description)\n                $('.timesact_bis_submit_button').text(form.buttonName)\n                $('.timesact_bis_form_field .timesact_bis_note').text(form.note)\n                $('.timesact_bis_form_field .timesact_bis_subscribe').text(form.messageNewsletter)\n                $('.timesact_bis_message_success').text(form.messageSuccess)\n                $('.timesact_bis_message_error').text(form.messageError)\n\n\n                !form.isNewsletterEnabled && $('.timesact_sub').attr(\"style\", \"display: none;\")\n\n                $(\".timesact_bis_popup_overlay\").addClass(\"timesact_bis_popup_overlay_show\")\n                $(\".timesact_bis_dialog\").addClass(\"timesact_bis_dialog_show\")\n                if (!form.isBrandEnabled) {\n                    $(\".timesact_powered_by\").hide()\n                }\n            }\n\n            addHiddenSellingPlan(sellingPlanId) {\n                $(this.selectors.formSelector).append(`<input type=\"hidden\" checked=\"checked\" data-timesact-selling-plan name=\"selling_plan\" value=\"${sellingPlanId}\" id=\"selling_plan_${sellingPlanId}\">`)\n            }\n\n            addCommonElements(settings, variant) {\n                const type = settings.type === \"BIS\" ? \"bis\" : settings.type === \"CS\" ? \"cs\" : settings.type === \"IS\" ? \"is\" : \"preorder\"\n\n                if (type !== \"is\") {\n                    $(this.selectors.formSelector).find(\".shopify-payment-button\").hide();\n                }\n\n                this.addPreorderMessage(settings.message, variant, type)\n\n                settings.badge.product && this.addBadge(this.selectors.badgeSelector, settings.badge, type)\n\n                this.selectors.hideProductElements && $(this.selectors.hideProductElements).hide();\n\n                // set timer & activate\n                const timer = settings.message.timer\n                if (!!timer) {\n                    const configType = settings.type !== \"PO\" ? settings.type : \"\"\n                    this[`timer${settings.type}`].setTimerInfo({ ...timer, productConfig: variant[`config${configType}`] })\n                    this[`timer${settings.type}`].show()\n                }\n            }\n\n            showPreorderLineItemProperty(key, value) {\n                0 === $(this.selectors.formSelector).find(\"#preorder-label\").length\n                    ? $(this.selectors.formSelector).append('<input type=\"hidden\" id=\"preorder-label\" name=\"properties[' + key + ']\" value=\"' + value + '\" />')\n                    : $(this.selectors.formSelector).find(\"#preorder-label\").val(value);\n            }\n\n            removePreorderLineItemProperty() {\n                $(this.selectors.formSelector).find(\"#preorder-label\").remove();\n            }\n\n            removePreorderBadge() {\n                $(this.selectors.badgeSelector).find(\".timesact-badge-ribbon-preorder, .timesact-badge-ribbon-bis, .timesact-badge-ribbon-cs, .timesact-badge-ribbon-is\").remove();\n                $(this.selectors.badgeSelector).find(\".timesact-badge-common-preorder, .timesact-badge-common-bis, .timesact-badge-common-cs, .timesact-badge-common-is\").remove();\n            }\n\n            removeSellingPlanWidget() {\n                $('#timesact_widget').remove();\n                $('.timesact-selling-plan-description').remove();\n                $('[data-timesact-selling-plan]').remove();\n            }\n\n            addBadge(selector, settings, settingType) {\n                const badge = new Badge();\n                badge.add(selector, settings.type, settings.value, settingType);\n                badge.applyStyles(settings, settingType);\n            }\n\n            addPreorderMessage(settings, variant, type) {\n                const message = new Message(settings.locale || \"en-US\");\n\n                // Set-up preorder message.\n                if (settings.value != \"\") {\n                    const configType = type === \"bis\" ? 'configBIS' : type === \"cs\" ? \"configCS\" : type === 'is' ? 'configIS' : 'config'\n                    const messageValue = message.populateDynamicValues(variant, settings.value, /*isCartLabel=*/false, /*configType=*/ configType)\n                    this.showPreorderMessage(settings.type, messageValue, type);\n                    message.addStylePreorderMessage(settings, type);\n                }\n            }\n\n            showPreorderMessage(placementType, value, type) {\n                if (this.selectors.messageSelector) {\n                    0 === $(this.selectors.formSelector).find(`.timesact-${type}-description`).length\n                        ? placementType === \"BELOW\"\n                            ? $(this.selectors.messageSelector).after(`<div class='timesact-${type}-description'>` + value + \"</div>\")\n                            : $(this.selectors.messageSelector).before(`<div class='timesact-${type}-description'>` + value + \"</div>\")\n                        : $(this.selectors.formSelector).find(`.timesact-${type}-description`).val(value);\n                    return\n                }\n                0 === $(this.selectors.formSelector).find(`.timesact-${type}-description`).length\n                    ? placementType === \"BELOW\"\n                        ? $(this.selectors.buttonSelector).after(`<div class='timesact-${type}-description'>` + value + \"</div>\")\n                        : $(this.selectors.buttonSelector).before(`<div class='timesact-${type}-description'>` + value + \"</div>\")\n                    : $(this.selectors.formSelector).find(`.timesact-${type}-description`).val(value);\n            }\n\n            removePreorderMessage() {\n                $(this.selectors.formSelector).find(\".timesact-preorder-description, .timesact-bis-description, .timesact-cs-description, .timesact-is-description\").remove();\n            }\n\n            removePreorderQuantity() {\n                $(\".timesact-quantity-message\").remove();\n                $(this.selectors.quantitySelector).off('change.quantityChange');\n                $(this.selectors.buttonSelector).off('click.quantityButtonClick');\n            }\n\n            addHiddenElements() {\n                $(this.selectors.hideProductElements).show();\n            }\n\n            addQuantityListener(preorderQty) {\n                const selectors = this.selectors;\n                $(this.selectors.quantitySelector).on('change.quantityChange', function () {\n                    if (preorderQty < parseInt($(this).val())) {\n                        if (!$(\".timesact-quantity-message\").length) {\n                            if (selectors.messageSelector) {\n                                $(selectors.messageSelector).before(\"<div class='timesact-quantity-message' style='color:red'>\" + `You can only pre-order ${preorderQty} items!` + \"</div>\");\n                            } else {\n                                $(selectors.buttonSelector).before(\"<div class='timesact-quantity-message' style='color:red'>\" + `You can only pre-order ${preorderQty} items!` + \"</div>\");\n                            }\n                        }\n                        $(selectors.buttonSelector).prop(\"disabled\", true);\n                    } else {\n                        $(\".timesact-quantity-message\").remove();\n                        $(selectors.buttonSelector).prop(\"disabled\", false);\n                    }\n                });\n\n                $(this.selectors.buttonSelector).on('click.quantityButtonClick', function (event) {\n                    const qty = $(selectors.quantitySelector).val();\n                    if (preorderQty < parseInt(qty)) {\n                        event.preventDefault();\n                        if (!$(\".timesact-quantity-message\").length) {\n                            if (selectors.messageSelector) {\n                                $(selectors.messageSelector).before(\"<div class='timesact-quantity-message' style='color:red'>\" + `You can only pre-order ${preorderQty} items!` + \"</div>\");\n                            } else {\n                                $(selectors.buttonSelector).before(\"<div class='timesact-quantity-message' style='color:red'>\" + `You can only pre-order ${preorderQty} items!` + \"</div>\");\n                            }\n                        }\n                    } else {\n                        $(\".timesact-quantity-message\").remove();\n                    }\n                });\n            }\n        }\n\n        class TimesactEventListener {\n            initVariantEventListener(preorder) {\n                var event = this;\n                ($(document).on(\"change\", \".timesact-variant-picker-\" + preorder.uuid, function (e) {\n                    event.variantChangeHandler(preorder);\n                }),\n                    event.setup(function () {\n                        event.variantChangeHandler(preorder);\n                    }));\n            }\n\n            sleep(e) {\n                return new Promise(function (t) {\n                    setTimeout(t, e);\n                });\n            }\n\n            variantChangeHandler(preorder) {\n                const preorderEntry = preorder;\n\n                this.sleep(preorder.selectors.variantChangingTime).then(function () {\n                    var selectedVariantId = window.location.search.replace(/.*variant=(\\d+).*/, '$1');\n                    if (!selectedVariantId) {\n                        selectedVariantId =\n                            \"radio\" === $(preorderEntry.selectors.formSelector).find(\"select[name='id'], input[name='id'], select[name='id[]'], input[name='id[]']\").attr(\"type\")\n                                ? $(preorderEntry.selectors.formSelector).find(\"input[name='id']:checked, input[name='id[]']:checked\").val()\n                                : $(preorderEntry.selectors.formSelector).find(\"select[name='id'], input[name='id'], select[name='id[]'], input[name='id[]']\").val();\n                    }\n                    preorderEntry.product.setActiveVariant(selectedVariantId);\n                    preorderEntry.resetDefault();\n                    preorderEntry.createWidget();\n                });\n            }\n\n\n            track(fn, handler, before) {\n                return function r() {\n                    if (before) return handler.apply(this, arguments), fn.apply(this, arguments);\n                    var result = fn.apply(this, arguments);\n                    return handler.apply(this, arguments), result;\n                };\n            }\n\n            setup(handler) {\n                history.pushState = this.track(history.pushState, handler);\n                history.replaceState = this.track(history.replaceState, handler);\n                window.addEventListener(\"popstate\", handler);\n            };\n        }\n\n        class Api {\n            static async createSubscription(data) {\n                try {\n                    await $.ajax({\n                        url: `/apps/timesact/notifications/bis`,\n                        type: 'POST',\n                        contentType: \"application/json; charset=utf-8\",\n                        dataType: \"json\",\n                        data: JSON.stringify(data)\n                    })\n\n                    return true\n                } catch (err) {\n                    console.log(\"Subscription no create\", err)\n\n                    return false\n                }\n            }\n\n            static async getProductPreOrderConfig(productId) {\n                try {\n                    return await $.ajax({\n                        url: `/apps/timesact/config?productId=${productId}`,\n                        type: 'GET',\n                        contentType: \"application/json; charset=utf-8\",\n                        dataType: \"json\"\n                    })\n                } catch (err) {\n                    console.log(\"Product is not active on pre-order.\")\n                    return null\n                }\n            }\n\n            async getProducts(productIds = []) {\n                try {\n                    return await $.ajax({\n                        url: `/apps/timesact/products?productIds=${productIds}`,\n                        type: 'GET',\n                        contentType: \"application/json; charset=utf-8\",\n                        dataType: \"json\"\n                    });\n                } catch (err) {\n                    console.log(\"Products config couldn't be fetched.\");\n                    return null;\n                }\n            }\n\n            async getShop() {\n                try {\n                    return await $.ajax({\n                        url: `/apps/timesact/shop`,\n                        type: 'GET',\n                        contentType: \"application/json; charset=utf-8\",\n                        dataType: \"json\"\n                    })\n                } catch (err) {\n                    console.log(\"Shop data couldn't be fetched.\")\n                    return null\n                }\n            }\n\n            async getSettings() {\n                try {\n                    return await $.ajax({\n                        url: `/apps/timesact/shop/settings`,\n                        type: 'GET',\n                        contentType: \"application/json; charset=utf-8\",\n                        dataType: \"json\"\n                    })\n                } catch (err) {\n                    console.log(\"Settings data couldn't be fetched.\")\n                    return null\n                }\n            }\n        }\n\n        class Selectors {\n            constructor(selectors) {\n                this.ids = selectors;\n            }\n\n            setNormalSelectors() {\n                this.formSelector = $(this.ids.form)\n                this.buttonSelector = this.formSelector.find(this.ids.addToCartButton)\n                if (this.buttonSelector.length === 0) {\n                    // In case the Add To Cart button was not identified, we try some generic selectors.\n                    this.buttonSelector = this.formSelector.find('[type=\"submit\"]:visible:first, [name=\"add\"], .product-submit, .addtocart-button-active, .product-form--add-to-cart, .button--addToCart, .product-form__submit, .add-to-cart, .btn-addtocart, .single_add_to_cart_button, .product-form__cart-submit, .product-form--atc-button, .ProductForm__AddToCart, [type=\"button\"]:visible:first').first()\n                }\n                this.variantSelector = this.formSelector.find(this.ids.variant)\n\n                if (this.ids.quantity) {\n                    this.quantitySelector = this.formSelector.find(this.ids.quantity)\n                } else {\n                    this.quantitySelector = this.formSelector.find('[name=\"quantity\"]')\n                    if (this.quantitySelector.length === 0) {\n                        this.quantitySelector = $('[name=\"quantity\"]')\n                    }\n                }\n\n                if (this.ids.badge) {\n                    this.badgeSelector = $(this.ids.badge)\n                } else {\n                    this.badgeSelector = $('.timesact-badge')\n                }\n\n                if (this.ids.message) {\n                    this.messageSelector = this.formSelector.find(this.ids.message)\n                }\n\n                this.sellingPlanSelector = this.formSelector.find('[type=\"submit\"]:visible:first')\n                if (this.ids.sellingPlan) {\n                    this.sellingPlanSelector = this.formSelector.find(this.ids.sellingPlan)\n                }\n\n                // timer\n                this.timerSelector = this.formSelector.find('[type=\"submit\"]:visible:first')\n                if (this.ids.timer) {\n                    this.timerSelector = this.formSelector.find(this.ids.timer)\n                }\n\n                if (this.ids.hide && this.ids.hide.product) {\n                    this.hideProductElements = this.ids.hide.product\n                }\n                this.variantChangingTime = this.ids.variantChangingTime || 250\n\n                // PageFly Integration.\n                if (this.formSelector.find('[data-pf-type=\"ProductATC\"], [data-pf-type=\"ProductATC2\"]').length > 0) {\n                    this.buttonSelector = this.formSelector.find('[data-pf-type=\"ProductATC\"] span:first, [data-pf-type=\"ProductATC2\"] span:first')\n                    this.messageSelector = this.formSelector.find(this.ids.message || '[data-pf-type=\"ProductATC\"]')\n                    this.badgeSelector = $('[data-pf-type=\"MainMedia\"]')\n\n                }\n\n                if(this.formSelector.find('gp-product-images-v2').length > 0) {\n                  this.badgeSelector = this.formSelector.find('gp-product-images-v2')\n                }\n            }\n\n            setQuickViewSelectors() {\n                this.formSelector = $(window.ta.quickView.selectors.quickviewModalContainer).find(window.ta.quickView.selectors.form);\n                this.buttonSelector = $(window.ta.quickView.selectors.quickviewModalContainer).find(window.ta.quickView.selectors.addToCartButton);\n                this.variantSelector = $(window.ta.quickView.selectors.quickviewModalContainer).find(window.ta.quickView.selectors.variant);\n                this.quantitySelector = $(window.ta.quickView.selectors.quickviewModalContainer).find(window.ta.quickView.selectors.quantity);\n                if (this.ids.message) {\n                    this.messageSelector = this.formSelector.find(this.ids.message);\n                }\n                this.variantChangingTime = this.ids.variantChangingTime || 250;\n\n                if (this.ids.badge) {\n                    this.badgeSelector = $(this.ids.badge);\n                } else {\n                    this.badgeSelector = $('.timesact-badge');\n                }\n\n                this.sellingPlanSelector = this.formSelector.find('[type=\"submit\"]:visible:first')\n                if (this.ids.sellingPlan) {\n                    this.sellingPlanSelector = $(this.ids.sellingPlan)\n                }\n            }\n        }\n\n        /* Main entry point. */\n        class ScriptRunner {\n            constructor(shop, product) {\n                this.shop = shop\n                this.product = product\n            }\n\n            async run(isQuickView) {\n                const timesactProduct = await Api.getProductPreOrderConfig(this.product.id)\n\n                if (!timesactProduct) {\n                    // Product is not set in the app. Store it in the cache.\n                    window.ta.products[this.product.id] = {\n                        isPreorder: false,\n                        isBIS: false,\n                        isCS: false,\n                        isIS: false,\n                        lastUpdate: parseInt(new Date().getTime() / 1000)\n                    };\n                    localStorage.setItem(\"products\", JSON.stringify(window.ta.products))\n\n                    $('.atc-button-hide').removeClass('atc-button-hide');\n                    return\n                }\n\n                window.ta.currentTimesactProductData = {\n                    defaultSettings: this.shop.settings,\n                    productId: this.product.id,\n                    productName: this.product.title,\n                    productVariants: timesactProduct.product.variants,\n                    variantId: null\n                }\n\n                this.selectors = new Selectors(this.shop.selectors)\n\n                if (!isQuickView) {\n                    this.selectors.setNormalSelectors()\n                } else {\n                    this.selectors.setQuickViewSelectors()\n                }\n\n\n                this.product.setActiveVariant(new ProductUtil().extractVariantId(this.product.variants, this.selectors.formSelector))\n                this.product.setTimesactVariants(timesactProduct.product)\n\n                const timesact = new Timesact(this.selectors, this.product, this.shop.settings.templates, this.shop)\n\n                timesact.init()\n\n                window.ta.products[this.product.id] = {\n                    isPreorder: this.isActiveOnPreorder(timesactProduct.product.variants),\n                    isBIS: this.isActiveOnBIS(timesactProduct.product.variants),\n                    isCS: this.isActiveOnCS(timesactProduct.product.variants),\n                    isIS: this.isActiveOnIS(timesactProduct.product.variants),\n                    variants: timesactProduct.product.variants,\n                    lastUpdate: parseInt(new Date().getTime() / 1000)\n                }\n                localStorage.setItem(\"products\", JSON.stringify(window.ta.products))\n            }\n\n            hasCustomSettings(product, variantId) {\n                if (!product.variants[variantId].settings) {\n                    return false;\n                }\n                return product.variants[variantId].settings.type === \"CUSTOM\";\n            }\n\n            async getVariantSettings(settings, defaultSettings, product, variantId, type) {\n                if (!product.variants[variantId].config.settingsTemplate) {\n                    // Old flow, if the variant does not have a template assigned.\n                    if (!this.hasCustomSettings(product, variantId)) {\n                        return defaultSettings\n                    }\n\n                    const customSettings = product.variants[variantId].settings\n\n                    return {\n                        button: {\n                            ...defaultSettings.button,\n                            name: customSettings.buttonName || defaultSettings.button.name\n                        },\n                        message: {\n                            ...defaultSettings.message,\n                            type: customSettings.messageType || defaultSettings.message.type,\n                            value: customSettings.messageValue || defaultSettings.message.value,\n                        },\n                        cart: {\n                            ...defaultSettings.cart,\n                            labelText: {\n                                key: customSettings.cartLabelTextKey || defaultSettings.cart.labelText.key,\n                                value: customSettings.cartLabelTextValue || defaultSettings.cart.labelText.value,\n                            }\n                        },\n                        badge: defaultSettings.badge\n                    }\n                }\n                if (type === \"PO\") {\n                    return product.variants[variantId].config.settingsTemplate in settings\n                        ? settings[product.variants[variantId].config.settingsTemplate]\n                        : defaultSettings\n                }\n\n                if (type === \"BIS\") {\n                    return product.variants[variantId].configBIS.settingsTemplate in settings\n                        ? settings[product.variants[variantId].configBIS.settingsTemplate]\n                        : defaultSettings\n                }\n\n                if (type === \"CS\") {\n                    return product.variants[variantId].configCS.settingsTemplate in settings\n                        ? settings[product.variants[variantId].configCS.settingsTemplate]\n                        : defaultSettings\n                }\n\n                return defaultSettings\n            }\n\n            addSellingPlan(sellingPlans, settings, variant, productForm) {\n                if (!variant.config.sellingPlan) {\n                    console.log('Variant has no SellingPlan set.')\n                    return\n                }\n\n                const sellingPlan = sellingPlans.find(sellingPlan => String(sellingPlan.id) === variant.config.sellingPlan)\n\n                if (!sellingPlan) {\n                    console.log('SellingPlan was not found.')\n                    return\n                }\n\n                if (sellingPlan.options[0].name === \"FULL_PAYMENT\") {\n                    $(productForm).append(`<input type=\"hidden\" checked=\"checked\" data-timesact-selling-plan name=\"selling_plan\" value=\"${sellingPlan.id}\" id=\"selling_plan_${sellingPlan.id}\">`)\n                } else {\n                    // Partial Payment widget.\n                    $(productForm).find(this.selectors.sellingPlanSelector).before(timesactPartialPayment)\n                    $('#timesact_widget .timesact_text').text(sellingPlan.options[0].value)\n                    $('#timesact_widget #timesact_selling_plan_label').val(sellingPlan.id)\n                }\n\n                const message = new Message(settings.locale || \"en-US\");\n\n                0 === $(productForm).find(\".timesact-selling-plan-description\").length\n                    ? $(productForm).find(this.selectors.messageSelector).after(\"<div class='timesact-selling-plan-description'>\" + sellingPlan.description + \"</div>\")\n                    : $(productForm).find(\".timesact-selling-plan-description\").val(sellingPlan.description);\n                message.addStylePreorderMessage(settings.message, /*type=*/\"selling-plan\");\n            }\n          \n            async runHomepage() {\n                const thisEvent = this;\n                this.selectors = new Selectors(this.shop.selectors);\n                this.selectors.setNormalSelectors();\n\n                var productIds = new Set()\n                const productForms = $(this.selectors.formSelector);\n                for (var form = 0; form < productForms.length; form++) {\n                    const productId = $(productForms[form]).data('productid')\n                    if (productId) {\n                        productIds.add(productId)\n                    }\n                }\n\n                const timesact = await new Api().getProducts(Array.from(productIds))\n                if (!timesact) {\n                    console.log('[Error] Timesact API getProducts.')\n                    return\n                }\n\n                const defaultSetting = window.ta.settings[this.shop.settings.templates['PO']];\n\n                for (var form = 0; form < productForms.length; form++) {\n                    const productId = $(productForms[form]).data('productid')\n                    if (!(productId in timesact.products)) {\n                        continue;\n                    }\n\n                    const product = timesact.products[productId];\n\n                    if (this.shop.hasSellingPlanEnabled) {\n                      var shopifyProduct;\n                      await $.getJSON(window.Shopify.routes.root + `products/${product.handle}.js`, function (data) {\n                          shopifyProduct = new Product(data.id, data.variants, data.title, data.selling_plan_groups)\n                      });\n                    }\n\n                    const variantId = $(productForms[form]).find(\"[name='id']\").val()\n                    const variantSetting = await this.getVariantSettings(window.ta.settings, defaultSetting, product, variantId, \"PO\")\n\n                  const buttonSelector = $(productForms[form]).find(this.selectors.buttonSelector)\n                    if (!variantId || product.variants[variantId].config.status === \"NO_STOCK\") {\n                        $(buttonSelector).val(variantSetting.button.soldOutText);\n                        $(buttonSelector).text(variantSetting.button.soldOutText);\n                        $(buttonSelector).prop(\"disabled\", true);\n                        $(productForms[form]).find(\".timesact-preorder-description\").remove();\n                        $(productForms[form]).find(\"#preorder-label\").remove();\n                        $(productForms[form]).parent().parent().parent().parent().parent().find('.timesact-badge-common').remove();\n\n                        continue;\n                    }\n                    if (product.variants[variantId].config.status === \"ACTIVE\") {\n                        $(buttonSelector).val(variantSetting.button.name);\n                        $(buttonSelector).text(variantSetting.button.name);\n                        $(buttonSelector).prop(\"disabled\", false);\n                        $(productForms[form]).find(\".shopify-payment-button\").hide();\n                        const message = new Message(defaultSetting.message.locale || \"en-US\");\n\n\n                        if (typeof variantSetting.cart.labelText.isEnabled === \"undefined\" || variantSetting.cart.labelText.isEnabled) {\n                          const key = message.populateDynamicValues(product.variants[variantId], variantSetting.cart.labelText.key, /*isCartLabel=*/false, /*configType=*/'config')\n                          const value = message.populateDynamicValues(product.variants[variantId], variantSetting.cart.labelText.value, /*isCartLabel=*/false, /*configType=*/'config')\n\n                          0 === $(productForms[form]).find(\"#preorder-label\").length\n                              ? $(productForms[form]).append('<input type=\"hidden\" id=\"preorder-label\" name=\"properties[' + key + ']\" value=\"' + value + '\" />')\n                              : $(productForms[form]).find(\"#preorder-label\").val(value);\n                        }\n\n                        if (this.shop.hasSellingPlanEnabled) {\n                          this.addSellingPlan(shopifyProduct.sellingPlans, variantSetting, product.variants[variantId], productForms[form]);\n                        }\n    \n                        const messageValue = message.populateDynamicValues(product.variants[variantId], variantSetting.message.value, /*isCartLabel=*/false, /*configType=*/'config')\n                        0 === $(productForms[form]).find(\".timesact-preorder-description\").length\n                            ? $(productForms[form]).find(this.selectors.messageSelector).after(\"<div class='timesact-preorder-description'>\" + messageValue + \"</div>\")\n                            : $(productForms[form]).find(\".timesact-preorder-description\").val(messageValue);\n                        message.addStylePreorderMessage(variantSetting.message, 'preorder');\n\n                        const badge = new Badge();\n                        badge.add($(productForms[form]).parent().parent().parent().parent().parent().find('.image--container:first'), variantSetting.badge.type, variantSetting.badge.value);\n                        badge.applyStyles(variantSetting.badge);\n                    }\n\n                    if (product.variants[variantId].config.status === \"NO_SET\" || product.variants[variantId].config.status === \"PENDING\") {\n                        $(buttonSelector).val(variantSetting.button.addToCartText);\n                        $(buttonSelector).text(variantSetting.button.addToCartText);\n                        $(productForms[form]).find(\".timesact-preorder-description\").remove();\n                        $(productForms[form]).find(\"#preorder-label\").remove();\n                        $(productForms[form]).parent().parent().parent().parent().parent().find('.timesact-badge-common').remove();\n                    }\n\n                    $(productForms[form]).parent().parent().parent().find(\"[type='radio']\").on('click.variant', function () {\n                    thisEvent.runHomepage();\n                })\n                }\n            }\n\n\n            async runCollection() {\n                if (window.ta.settings[this.shop.settings.templates.PO].badge.collection ||\n                    window.ta.settings[this.shop.settings.templates.BIS].badge.collection ||\n                    window.ta.settings[this.shop.settings.templates.CS].badge.collection ||\n                    window.ta.settings[this.shop.settings.templates.IS].badge.collection) {\n                    if (this.shop.lastProductUpdate && window.ta.lastProductUpdate < this.shop.lastProductUpdate) {\n                        // Invalidate the product cache if there was a change on server-side.\n                        window.ta.products = {};\n                    }\n                    // Enable badge on collection.\n                    let possibleClasses = ['.timesact-badge', '.product-item', '.card--standard', '.card--card', '.ProductItem', '[data-pf-type=\"ProductBox\"], gp-product'];\n                    if (this.shop.selectors.collection && this.shop.selectors.collection.badge) {\n                        possibleClasses = [this.shop.selectors.collection.badge];\n                    }\n\n                    let items = [];\n                    for (let i = 0; i < possibleClasses.length; i++) {\n                        if ($(possibleClasses[i]).length > 0) {\n                            items = $(possibleClasses[i]);\n                            break;\n                        }\n                    }\n\n                    this.enableBadgeOnCollection(items)\n                }\n            }\n\n            async runMixedCartAlert(data) {\n                if (!window.ta.cart.showMixedCartAlert) {\n                    return;\n                }\n\n                if (!data.items.length) {\n                    return;\n                }\n\n                const isCartPage = window.location.pathname.includes(\"cart\")\n                const defaultSettingsPO = window.ta.settings[this.shop.settings.templates.PO]\n                if (\n                    !defaultSettingsPO.cart.mixed.isEnabled ||\n                    (isCartPage && defaultSettingsPO.cart.mixed.onCartPage === false) || // on /cart check page enabled\n                    (!isCartPage && defaultSettingsPO.cart.mixed.onButtonClick !== true) // on other check button click\n                ) {\n                    return;\n                }\n\n                let hasPreorderProduct = false;\n                let hasNormalProduct = false;\n                let products = {};\n\n                for (const item of data.items) {\n                    if (window.ta.products[item.product_id]) {\n                        if (window.ta.products[item.product_id].variants && window.ta.products[item.product_id].variants[item.variant_id]) {\n                            if (window.ta.products[item.product_id].variants[item.variant_id].config.status === \"ACTIVE\") {\n                                hasPreorderProduct = true;\n                                continue;\n                            }\n                        }\n                        hasNormalProduct = true;\n                        continue;\n                    }\n                    // products is not in the cache.\n                    products[item.product_id] = products[item.product_id] || [];\n                    products[item.product_id].push(item.variant_id);\n                }\n\n                const modal = new Modal();\n                const modalSettings = { ...defaultSettingsPO.cart.mixed, id: defaultSettingsPO.id || defaultSettingsPO.name }\n\n                const closeModal = () => {\n                    window.sessionStorage.setItem(\"showCartMixedAlert\", !($('#md-stop').is(\":checked\")));\n                    window.ta.cart.showMixedCartAlert = !($('#md-stop').is(\":checked\"))\n                }\n\n                if (hasPreorderProduct && hasNormalProduct) {\n                    return modal.display(modalSettings, closeModal);\n                }\n\n                if (!Object.keys(products).length) {\n                    return;\n                }\n\n                const timesact = await new Api().getProducts(Object.keys(products))\n                if (!timesact) {\n                    console.log('[Error] Timesact API getProducts.')\n                    return\n                }\n\n                for (const productId of Object.keys(products)) {\n                    if (!(productId in timesact.products)) {\n                        hasNormalProduct = true\n                        // Product is not set in the app. Store it in the cache.\n                        window.ta.products[productId] = {\n                            isPreorder: false,\n                            isBIS: false,\n                            isCS: false,\n                            lastUpdate: parseInt(new Date().getTime() / 1000)\n                        }\n                        continue\n                    }\n\n                    for (const variantId of products[productId]) {\n                        if (timesact.products[productId].variants[variantId] && timesact.products[productId].variants[variantId].config.status === \"ACTIVE\") {\n                            hasPreorderProduct = true\n                            continue\n                        }\n                        hasNormalProduct = true\n                    }\n\n                    window.ta.products[productId] = {\n                        isPreorder: this.isActiveOnPreorder(timesact.products[productId].variants),\n                        isBIS: this.isActiveOnBIS(timesact.products[productId].variants),\n                        isCS: this.isActiveOnCS(timesact.products[productId].variants),\n                        isIS: this.isActiveOnIS(timesact.products[productId].variants),\n                        variants: timesact.products[productId].variants,\n                        lastUpdate: parseInt(new Date().getTime() / 1000)\n                    };\n\n                    if (hasNormalProduct && hasPreorderProduct) {\n                        modal.display(modalSettings, closeModal);\n                        break;\n                    }\n                }\n                localStorage.setItem(\"products\", JSON.stringify(window.ta.products));\n            }\n\n            async runCartAlert(data) {\n                if (!data.items.length) {\n                    return;\n                }\n\n                // collect products here\n                const products = {};\n\n                // from cache\n                for (var item of data.items) {\n                    const product = window.ta.products[item.product_id]\n                    // not in cache\n                    if (!product) continue\n\n                    const variant = product?.variants?.[item.variant_id]\n                    const configName = product.isIS ? \"configIS\" : \"config\"\n                    if (variant?.[configName]?.status !== \"ACTIVE\") continue\n\n                    products[item.product_id] = {\n                        ...(products[item.product_id] || {}),\n                        [item.variant_id]: variant,\n                    }\n                }\n\n                // empty products\n                if (!Object.keys(products).length) return;\n\n                // get products & variants & set templates\n                const storageTmps = JSON.parse(window.sessionStorage.getItem(\"showCartAlert\") || null) || {}\n                const tmps = {}\n                for (const [productId, product] of Object.entries(products)) {\n                    for (const [variantId, variant] of Object.entries(product)) {\n                        const configName = variant.isISEnabled ? \"configIS\" : \"config\"\n                        const tmpSettings = window.ta.settings[variant[configName]?.settingsTemplate]\n                        const id = `${tmpSettings.type}-${productId}-${variantId}`\n                        tmps[id] = {\n                            dismiss: !!storageTmps[id]?.dismiss,\n                            settings: {\n                                id,\n                                ...tmpSettings.cart?.alert\n                            }\n                        }\n                    }\n                }\n\n                const closeModal = (settings) => {\n                    return () => {\n                        const actualStorageTmps = JSON.parse(window.sessionStorage.getItem(\"showCartAlert\") || null) || {}\n                        return new TimesactButton(\"\", \"\").closeCartAlertModal(settings, actualStorageTmps)\n                    }\n                }\n\n                // check enabled & push to queue\n                for (const tmp of Object.values(tmps)) {\n                    if (!tmp.settings.isEnabled || tmp.settings.onCartPage === false || tmp.dismiss) {\n                        continue\n                    }\n                    Modal.pushQueue(tmp.settings, closeModal(tmp.settings))\n                }\n                Modal.showFirst()\n            }\n\n            /** Checks if all the variants are active on pre-order. */\n            isActiveOnPreorder(variants) {\n                return Object.values(variants).every((variant) => variant.config.status === \"ACTIVE\")\n            }\n\n            /** Checks if all the variants are active on back in stock. */\n            isActiveOnBIS(variants) {\n                return Object.values(variants).every((variant) => variant.configBIS && variant.configBIS.status === \"ACTIVE\")\n            }\n\n            /** Checks if all the variants are active on coming soon. */\n            isActiveOnCS(variants) {\n                return Object.values(variants).every((variant) => variant.configCS && variant.configCS.status === \"ACTIVE\")\n            }\n\n            /** Checks if all the variants are active on in stock. */\n            isActiveOnIS(variants) {\n                return Object.values(variants).some((variant) => variant.configIS && variant.configIS.status === \"ACTIVE\")\n            }\n\n            async enableBadgeOnCollection(items) {\n                if (items.length === 0) {\n                    console.log('No items detected.')\n                    return\n                }\n\n                const products = {}\n                const defaultSettingsPO = window.ta.settings[this.shop.settings.templates.PO]\n                const defaultSettingsBIS = window.ta.settings[this.shop.settings.templates.BIS]\n                const defaultSettingsCS = window.ta.settings[this.shop.settings.templates.CS]\n                const defaultSettingsIS = window.ta.settings[this.shop.settings.templates.IS]\n\n                await Promise.all(Array.from(items).map(async (item) => {\n                    var productId;\n                    if ($(item).attr('gp-context')) {\n                      var gpContextObject = JSON.parse($(item).attr('gp-context'))\n                      if (gpContextObject.productId) {\n                        productId = gpContextObject.productId\n                      } else {\n                        var gpContextImage = JSON.parse($(item).find('gp-product-images-v2').attr('gp-data'))\n                        productId = gpContextImage.product.id;\n                      }\n                    } else {\n                      if ($(item).data('product-id')) {\n                          // PageFly Integration.\n                          productId = $(item).data('product-id')\n                      } else {\n                          let href = $(item).find('a').attr('href')\n                          if (!href) {\n                              return\n                          }\n                          let handle = href.split(\"/\").pop().split('?')[0]\n                          if (!handle) {\n                              return\n                          }\n  \n                          console.log(\"Product handle: \", handle)\n                          const data = await $.getJSON(window.location.origin + href)\n                          if (!data || !data.product || !data.product.id) {\n                              return;\n                          }\n  \n                          productId = String(data.product.id)\n                      }\n                    }\n\n                    if (window.ta.products[productId]) {\n                        let shouldHide = false\n                        if (window.ta.products[productId].isPreorder && defaultSettingsPO.badge.collection) {\n                            this.addBadge(item, defaultSettingsPO.badge, 'preorder')\n                            shouldHide = true\n                            // Enable button on collection.\n                            defaultSettingsPO.button.collection && defaultSettingsPO.button.collection.isEnabled && this.enableButtonOnCollection(item, this.shop, window.ta.products[productId], defaultSettingsPO, productId)\n                        }\n\n                        if (window.ta.products[productId].isBIS && defaultSettingsBIS.badge.collection) {\n                            this.addBadge(item, defaultSettingsBIS.badge, 'bis')\n                            shouldHide = true\n                            this.enableButtonOnCollection(item, this.shop, window.ta.products[productId], defaultSettingsBIS, productId)\n                        }\n\n                        if (window.ta.products[productId].isCS && defaultSettingsCS.badge.collection) {\n                            this.addBadge(item, defaultSettingsCS.badge, 'cs')\n                            shouldHide = true\n                            this.enableButtonOnCollection(item, this.shop, window.ta.products[productId], defaultSettingsCS, productId)\n\n                        }\n\n                        if (window.ta.products[productId].isIS && defaultSettingsIS.badge.collection) {\n                            this.addBadge(item, defaultSettingsIS.badge, 'is')\n                            shouldHide = true\n                        }\n\n                        // Hide elements from the collection page.\n                        shouldHide && this.shop.selectors.hide && this.shop.selectors.hide.collection && $(item).find(this.shop.selectors.hide.collection).hide()\n\n                        return\n                    }\n\n                    products[productId] = item\n                }))\n\n                const timesact = await new Api().getProducts(Object.keys(products))\n                if (!timesact) {\n                    console.log('[Error] Timesact API getProducts.')\n                    return\n                }\n\n                for (const [productId, item] of Object.entries(products)) {\n                    if (!(productId in timesact.products)) {\n                        // Product is not set in the app. Store it in the cache.\n                        window.ta.products[productId] = {\n                            isPreorder: false,\n                            isBIS: false,\n                            isCS: false,\n                            isIS: false,\n                            lastUpdate: parseInt(new Date().getTime() / 1000)\n                        }\n                        continue\n                    }\n\n                    const isPreorder = this.isActiveOnPreorder(timesact.products[productId].variants)\n                    const isBIS = this.isActiveOnBIS(timesact.products[productId].variants)\n                    const isCS = this.isActiveOnCS(timesact.products[productId].variants)\n                    const isIS = this.isActiveOnIS(timesact.products[productId].variants)\n\n                    let shouldHide = false\n                    if (isPreorder && defaultSettingsPO.badge.collection) {\n                        this.addBadge(item, defaultSettingsPO.badge, 'preorder')\n                        shouldHide = true\n                        // Enable button on collection.\n                        defaultSettingsPO.button.collection && defaultSettingsPO.button.collection.isEnabled && this.enableButtonOnCollection(item, this.shop, timesact.products[productId], defaultSettingsPO, productId)\n                    }\n\n                    if (isBIS && defaultSettingsBIS.badge.collection) {\n                        this.addBadge(item, defaultSettingsBIS.badge, 'bis')\n                        shouldHide = true\n                      this.enableButtonOnCollection(item, this.shop, timesact.products[productId], defaultSettingsBIS, productId)\n                    }\n\n                    if (isCS && defaultSettingsCS.badge.collection) {\n                        this.addBadge(item, defaultSettingsCS.badge, 'cs')\n                        shouldHide = true\n                      this.enableButtonOnCollection(item, this.shop, timesact.products[productId], defaultSettingsCS, productId)\n                    }\n\n                    if (isIS && defaultSettingsIS.badge.collection) {\n                        this.addBadge(item, defaultSettingsIS.badge, 'is')\n                        shouldHide = true\n                    }\n\n                    // Hide elements from the collection page.\n                    shouldHide && this.shop.selectors.hide && this.shop.selectors.hide.collection && $(item).find(this.shop.selectors.hide.collection).hide()\n\n                    window.ta.products[productId] = {\n                        isPreorder,\n                        isBIS,\n                        isCS,\n                        isIS,\n                        variants: timesact.products[productId].variants,\n                        lastUpdate: parseInt(new Date().getTime() / 1000)\n                    };\n                }\n                localStorage.setItem(\"products\", JSON.stringify(window.ta.products));\n            }\n\n            getActiveConfigType(product) {\n                if (product.isBISEnabled) return \"configBIS\"\n                if (product.isCSEnabled) return \"configCS\"\n                if (product.isISEnabled) return \"configIS\"\n                return \"config\"\n            }\n\n            enableButtonOnCollection(item, shop, product, defaultSettings, productId) {\n                let formCollectionSelector = 'form[action=\"/cart/add\"]'\n                if (shop.selectors.collection && shop.selectors.collection.form) {\n                    formCollectionSelector = shop.selectors.collection.form\n                }\n\n                let addToCartButtonCollectionSelector = '[type=submit]:visible:first, [data-pf-type=\"ProductATC\"] span:first, [data-pf-type=\"ProductATC2\"] span:first, .gp-button-atc'\n                if (shop.selectors.collection && shop.selectors.collection.addToCartButton) {\n                    addToCartButtonCollectionSelector = shop.selectors.collection.addToCartButton\n                }\n\n                const productForm = $(item).find(formCollectionSelector);\n                for (let variantId in product.variants) {\n                    const variant = product.variants[variantId]\n                    const configType = this.getActiveConfigType(variant)\n                    const config = variant[configType]\n\n                    // not active -> skip\n                    if (!config || config?.status !== \"ACTIVE\") continue\n                  \n                    let buttonSelector = $(item).find(addToCartButtonCollectionSelector);\n                    const buttonName = window.ta.settings[config.settingsTemplate]?.button.name || defaultSettings.button.name\n                    if ($(buttonSelector).length === 0) {\n                      buttonSelector = $(item).find('[type=\"submit\"]')\n                    }\n                    $(buttonSelector).val(buttonName);\n                    $(buttonSelector).text(buttonName);\t\n                    $(buttonSelector).prop(\"disabled\", false);\n                    $(item).find(\".shopify-payment-button\").hide();\n\n                    if (configType === \"configBIS\") {\n                        $(buttonSelector).click(function (event) {\n                          window.ta.currentTimesactProductData = {\n                            defaultSettings: shop.settings,\n                            productId: productId,\n                            productName: product.variants[variantId].displayName,\n                            productVariants: product.variants,\n                            variantId\n                          }\n                          event.preventDefault();\n                          TimesactBisModal.displayBisModal();})\n                        $(buttonSelector).prop(\"disabled\", false);\n                        // $(buttonSelector).attr('style', \"cursor: pointer !important; pointer-events: auto !important\")\n                    }\n\n                    if (configType === \"configCS\") {\n                        window.ta.currentTimesactProductData = {\n                            defaultSettings: shop.settings,\n                            productId: product?.id,\n                            productName: product?.title,\n                            productVariants: product.variants,\n                            variantId\n                        }\n                    }\n\n\n                    const message = new Message(defaultSettings.message.locale || \"en-US\")\n                    let cartValue = window.ta.settings[product.variants[variantId].config.settingsTemplate] ? window.ta.settings[product.variants[variantId].config.settingsTemplate].cart.labelText.value : defaultSettings.cart.labelText.value;\n                    let cartKey = window.ta.settings[product.variants[variantId].config.settingsTemplate] ? window.ta.settings[product.variants[variantId].config.settingsTemplate].cart.labelText.key : defaultSettings.cart.labelText.key;\n                    let isCartEnabled = window.ta.settings[product.variants[variantId].config.settingsTemplate] ? window.ta.settings[product.variants[variantId].config.settingsTemplate].cart.labelText.isEnabled : defaultSettings.cart.labelText.isEnabled;\n                        \n                    if (shop.hasSellingPlanEnabled && product.variants[variantId].config.sellingPlan) {\n                        $(productForm).append(`<input type=\"hidden\" checked=\"checked\" data-timesact-selling-plan name=\"selling_plan\" value=\"${product.variants[variantId].config.sellingPlan}\" id=\"selling_plan_${product.variants[variantId].config.sellingPlan}\">`)\n                    }\n\n                    if (typeof isCartEnabled === \"undefined\" || isCartEnabled) {\n                        cartKey = message.populateDynamicValues(product.variants[variantId], cartKey, /*isCartLabel=*/true, /*configType=*/'config')\n                        cartValue = message.populateDynamicValues(product.variants[variantId], cartValue,  /*isCartLabel=*/true, /*configType=*/'config')\n\n                        0 === $(productForm).find(\"#preorder-label\").length\n                            ? $(productForm).append('<input type=\"hidden\" id=\"preorder-label\" name=\"properties[' + cartKey + ']\" value=\"' + cartValue + '\" />')\n                            : $(productForm).find(\"#preorder-label\").val(cartValue);\n                    }\n                    // if (window.ta.settings[config.settingsTemplate]?.cart) {\n                    //     let cartValue = window.ta.settings[config.settingsTemplate]?.cart.labelText.value || defaultSettings.cart?.labelText.value;\n                    //     let cartKey = window.ta.settings[config.settingsTemplate]?.cart.labelText.key || defaultSettings.cart?.labelText.key;\n\n                    //     cartKey = message.populateDynamicValues(variant, cartKey, /*isCartLabel=*/true, /*configType=*/configType)\n                    //     cartValue = message.populateDynamicValues(variant, cartValue,  /*isCartLabel=*/true, /*configType=*/configType)\n\n                    //     0 === $(productForm).find(\"#preorder-label\").length\n                    //         ? $(productForm).append('<input type=\"hidden\" id=\"preorder-label\" name=\"properties[' + cartKey + ']\" value=\"' + cartValue + '\" />')\n                    //         : $(productForm).find(\"#preorder-label\").val(cartValue);\n                    // }\n                }\n            }\n\n            addBadge(selector, settings, settingType) {\n                // PageFly Integration.\n                if ($(selector).find('[data-pf-type=\"ProductMedia\"], [data-pf-type=\"ProductMedia2\"]').length > 0) {\n                    selector = $(selector).find('[data-pf-type=\"ProductMedia\"], [data-pf-type=\"ProductMedia2\"]')\n                }\n\n                const isGemPage = $(selector).attr('gp-context')\n                if (isGemPage) {\n                  selector = $(selector).find('gp-product-images-v2')\n                }\n\n                // add position relative to product item if not absolute\n                if ($(selector).css(\"position\") !== \"absolute\") {\n                    $(selector).css({\n                        \"position\": \"relative\"\n                    });\n                }\n\n                const badge = new Badge();\n                badge.add(selector, settings.type, settings.value, settingType);\n                badge.applyStyles(settings, settingType);\n            }\n        }\n\n        $(document).ready(async function () {\n            const api = new Api()\n            const utils = new ShopUtil()\n\n            TimesactBisModal.createListeners()\n\n            // Initialize app.\n            utils.initTimesact()\n\n            if (!utils.isProductPage() && !utils.isCollectionPage() && !utils.isSearchPage()\n                && !utils.isPagesPage() && !utils.isHomePage() && !utils.isCartPage()) {\n                return\n            }\n\n            const shop = await api.getShop()\n\n            // Get the new settings if they have been updated on the backend side.\n            if (!window.ta.settings || (shop.lastSettingsUpdate && window.ta.lastSettingsUpdate < shop.lastSettingsUpdate)) {\n                const { settings } = await api.getSettings()\n\n                window.ta.settings = settings\n                window.ta.lastSettingsUpdate = shop.lastSettingsUpdate || parseInt(new Date().getTime() / 1000);\n                localStorage.setItem(\"settings\", JSON.stringify(window.ta.settings))\n                localStorage.setItem(\"lastSettingsUpdate\", JSON.stringify(window.ta.lastSettingsUpdate))\n            }\n\n            if (utils.isProductPage()) {\n                let product = {}\n\n                $.getJSON(window.location.href.split('?')[0].concat('.js'), function (data) {\n                    product = new Product(data.id, data.variants, data.title, data.selling_plan_groups)\n                }).done(function () {\n                    new ScriptRunner(shop, product).run(/*isQuickView=*/false)\n                }).fail(function () {\n                    console.log(\"[Error 1001]: Product could not be fetched.\")\n                });\n            }\n\n            if (utils.isCollectionPage() || utils.isHomePage() || utils.isSearchPage() || utils.isPagesPage()) {\n                utils.initQuickView(shop);\n                new ScriptRunner(shop).runCollection();\n                // new ScriptRunner(shop).runHomepage();\n            }\n\n            // mixing alert popup \n            // cart alert popup\n            function callRunningMixedCartAlert(timeout = 0, isNeedCartAlert = false) {\n                const closedTmpsIds = JSON.parse(window.sessionStorage.getItem(\"closedModals\") || null) || []\n                const t = shop.settings.templates.PO\n                if (closedTmpsIds.includes(t)) return\n\n                setTimeout(() => {\n                    $.getJSON(window.location.origin + \"/cart\", function (data) {\n                        isNeedCartAlert && new ScriptRunner(shop).runCartAlert(data);\n                        new ScriptRunner(shop).runMixedCartAlert(data);\n                    }).fail(function () {\n                        console.log(\"[Error 1001]: Product could not be fetched.\");\n                    });\n                }, timeout);\n            }\n\n            // add click handlers and /cart page handler\n            let submitBtn = $(shop.selectors.form).find(shop.selectors.addToCartButton)\n            if (submitBtn.prop(\"tagName\") !== \"button\") submitBtn = submitBtn.parent()\n            submitBtn.click(() => callRunningMixedCartAlert(2000))\n            $('a[href=\"/cart\"]').click(() => callRunningMixedCartAlert(500))\n            if (utils.isCartPage()) {\n                callRunningMixedCartAlert(0, true)\n            }\n        });\n    };\n\n    /* If jQuery has not yet been loaded or if it has but it's too old for our needs,\n    we will load jQuery from the Google CDN, and when it's fully loaded, we will run\n    our app's JavaScript. */\n    if ((typeof jQuery === 'undefined') || (parseFloat(jQuery.fn.jquery) < 100.0)) {\n        loadScript('https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js', function () {\n            jQuery191 = jQuery.noConflict(true);\n            timesactScriptNew(jQuery191);\n        });\n    } else {\n        timesactScriptNew(jQuery);\n    }\n\n})()"],
  "mappings": "CAGC,UAAY,CACT,MAAM,WAAa,SAAU,IAAK,SAAU,CACxC,MAAM,OAAS,SAAS,cAAc,QAAQ,EAE9C,OAAO,KAAO,kBAGV,OAAO,WACP,OAAO,mBAAqB,UAAY,EAChC,OAAO,aAAe,UAAY,OAAO,aAAe,cACxD,OAAO,mBAAqB,KAC5B,SAAS,EAEjB,EAGA,OAAO,OAAS,UAAY,CACxB,SAAS,CACb,EAEJ,OAAO,IAAM,IACb,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAAE,YAAY,MAAM,CAC/D,EAGA,kBAAoB,eAAgB,EAAG,CACnC,MAAM,MAAQ,SAAS,cAAc,OAAO,EAC5C,MAAM,GAAK,cACX,MAAM,UAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAmZlB,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAAE,YAAY,KAAK,EAG1D,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAAE,mBAAmB,aADrC,kRACiE,EAExF,MAAM,YAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBA8Cd,uBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAe/B,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAAE,mBAAmB,aAAc,WAAW,EAErF,MAAM,wBAA0B,SAAS,cAAc,qBAAqB,EACtE,gCAAkC,SAAS,cAAc,aAAa,EAGtE,UAAY,CACd,OAAQ,GACR,MAAO,KAAK,MAAM,OAAO,eAAe,QAAQ,aAAa,GAAK,IAAI,GAAK,CAAC,CAChF,EAGA,MAAM,KAAM,CACR,IAAI,SAAU,UAAW,MAAO,YAAa,CACzC,GAAI,YAAc,SAAU,CACxB,EAAE,QAAQ,EAAE,OAAO,0BAA0B,WAAW,EAAE,EAC1D,EAAE,QAAQ,EAAE,OAAO,0BAA0B,WAAW,EAAE,EAC1D,EAAE,QAAQ,EAAE,OAAO,2DAA2D,WAAW,6CAA6C,WAAW,QAAU,MAAQ,mBAAmB,EACtL,MACJ,CAEI,YAAc,YACd,EAAE,QAAQ,EAAE,OAAO,0BAA0B,WAAW,EAAE,EAC1D,EAAE,QAAQ,EAAE,OAAO,0BAA0B,WAAW,EAAE,EAC1D,EAAE,QAAQ,EAAE,OAAO,qCAAqC,WAAW,8CAA8C,WAAW,KAAO,MAAQ,eAAe,GAG1J,YAAc,cACd,EAAE,QAAQ,EAAE,OAAO,0BAA0B,WAAW,EAAE,EAC1D,EAAE,QAAQ,EAAE,OAAO,0BAA0B,WAAW,EAAE,EAC1D,EAAE,QAAQ,EAAE,OAAO,qCAAqC,WAAW,gDAAgD,WAAW,KAAO,MAAQ,eAAe,GAG5J,YAAc,WACd,EAAE,QAAQ,EAAE,OAAO,0BAA0B,WAAW,EAAE,EAC1D,EAAE,QAAQ,EAAE,OAAO,0BAA0B,WAAW,EAAE,EAC1D,EAAE,QAAQ,EAAE,OAAO,qCAAqC,WAAW,6CAA6C,WAAW,KAAO,MAAQ,eAAe,GAGzJ,YAAc,WACd,EAAE,QAAQ,EAAE,OAAO,0BAA0B,WAAW,EAAE,EAC1D,EAAE,QAAQ,EAAE,OAAO,0BAA0B,WAAW,EAAE,EAC1D,EAAE,QAAQ,EAAE,OAAO,qCAAqC,WAAW,6CAA6C,WAAW,KAAO,MAAQ,eAAe,EAEjK,CAEA,aAAa,MAAO,QAAS,EAAG,EAAG,CAC/B,MAAO,CACH,IAAO,OAAS,EAChB,OAAU,CAAC,OAAS,EACpB,KAAQ,CAAC,SAAW,EACpB,MAAS,SAAW,CACxB,CACJ,CAEA,mBAAmB,MAAO,QAAS,CAG/B,MAAO,CAAE,IAFG,MAAQ,OAAS,OAEf,MADC,QAAmB,QAAT,MACL,CACxB,CAEA,mBAAmB,MAAO,QAAS,CAE/B,IAAI,OAAS,GACb,OAAI,OAAS,CAAC,QAEV,QAAU,GACH,CAAC,OAAS,CAAC,QAElB,QAAU,IACH,CAAC,OAAS,UAEjB,QAAU,KAGP,CACH,UAAa,UAAU,MAAM,OAC7B,oBAAqB,UAAU,MAAM,MACzC,CACJ,CAEA,uBAAuB,MAAO,CAC1B,OAAO,MAAQ,CAAC,EAAI,CAChB,UAAa,iBACb,oBAAqB,gBACzB,CACJ,CAEA,YAAYA,OAAO,YAAa,CAC5B,MAAM,MAAQA,OAAM,KAAOA,OAAM,MAAQ,OACnC,QAAUA,OAAM,OAASA,OAAM,QAAU,OAE/C,EAAE,iBAAiB,EAAE,IAAI,CACrB,SAAY,UAChB,CAAC,EACD,EAAE,0BAA0B,WAAW,EAAE,EAAE,IAAI,CAC3C,SAAY,WACZ,GAAG,KAAK,aAAa,MAAO,QAAS,OAAQ,MAAM,EACnD,MAAS,OACT,OAAU,OACV,aAAc,QACd,UAAW,IACX,SAAY,QAChB,CAAC,EACD,EAAE,0BAA0B,WAAW,OAAO,EAAE,IAAI,CAChD,SAAY,WACZ,GAAG,KAAK,mBAAmB,MAAO,OAAO,EACzC,QAAW,QACX,MAAS,QACT,YAAa,GAAGA,OAAM,QAAQ,KAC9B,cAAe,OACf,MAASA,OAAM,UACf,iBAAkB,YAClB,aAAc,SACd,cAAe,OACf,cAAe,SACf,GAAG,KAAK,mBAAmB,MAAO,OAAO,CAC7C,CAAC,EACD,EAAE,0BAA0B,WAAW,SAAS,EAAE,IAAI,CAClD,OAAU,EACV,GAAG,KAAK,uBAAuB,KAAK,EACpC,YAAa,GAAGA,OAAM,QAAQ,KAC9B,MAASA,OAAM,SACnB,CAAC,EACD,EAAE,+BAA+B,WAAW,EAAE,EAAE,IAAI,CAChD,mBAAoBA,OAAM,gBAC1B,aAAc,kCAClB,CAAC,EACD,EAAE,gCAAgC,WAAW,EAAE,EAAE,IAAI,CACjD,OAAU,wBACV,gBAAiB,OACjB,QAAW,eACX,iBAAkB,QAClB,cAAe,IACf,QAAW,gBACX,aAAc,SACd,mBAAoBA,OAAM,gBAC1B,eAAgBA,OAAM,gBACtB,YAAa,GAAGA,OAAM,QAAQ,KAC9B,MAASA,OAAM,UACf,cAAe,OACf,aAAc,YAClB,CAAC,EACD,EAAE,kCAAkC,WAAW,EAAE,EAAE,IAAI,CACnD,QAAW,eACX,YAAa,OACb,QAAW,gBACX,iBAAkB,QAClB,cAAe,IACf,aAAc,SACd,YAAa,GAAGA,OAAM,QAAQ,KAC9B,MAASA,OAAM,UACf,cAAe,OACf,aAAc,aACd,mBAAoBA,OAAM,gBAC1B,eAAgBA,OAAM,gBACtB,OAAU,uBACd,CAAC,EACD,EAAE,+BAA+B,WAAW,EAAE,EAAE,IAAI,CAChD,QAAW,OACX,cAAe,SACf,kBAAmB,SACnB,aAAc,OACd,YAAa,OACb,MAAS,GAAGA,OAAM,KAAK,KACvB,OAAU,GAAGA,OAAM,KAAK,KACxB,iBAAkB,QAClB,cAAe,IACf,aAAc,SACd,YAAa,GAAGA,OAAM,QAAQ,KAC9B,MAASA,OAAM,UACf,cAAe,OACf,aAAc,aACd,mBAAoBA,OAAM,gBAC1B,eAAgBA,OAAM,gBACtB,OAAU,wBACV,SAAY,QAChB,CAAC,EACD,EAAE,+BAA+B,WAAW,EAAE,EAAE,IAAI,CAChD,QAAW,OACX,cAAe,SACf,kBAAmB,SACnB,aAAc,OACd,YAAa,OACb,MAAS,GAAGA,OAAM,MAAQ,EAAE,KAC5B,OAAU,GAAGA,OAAM,MAAQ,EAAE,KAC7B,QAAW,OACX,iBAAkB,QAClB,cAAe,IACf,aAAc,SACd,YAAa,GAAGA,OAAM,QAAQ,KAC9B,MAASA,OAAM,UACf,cAAe,OACf,aAAc,aACd,mBAAoBA,OAAM,gBAC1B,eAAgBA,OAAM,gBACtB,OAAU,wBACV,gBAAiB,MACjB,SAAY,QAChB,CAAC,EACD,EAAE,0BAA0B,WAAW,EAAE,EAAE,IAAI,CAC3C,SAAY,WACZ,GAAG,KAAK,aAAa,MAAO,QAAS,OAAQ,MAAM,EACnD,QAAW,OACX,YAAa,OACb,UAAW,GACf,CAAC,EAEE,EAAE,sBAAsB,EAAE,OAAS,GACnC,EAAE,0BAA0B,WAAW,EAAE,EAAE,IAAI,CAC7C,MAAS,MACX,CAAC,CAER,CACJ,CAEA,MAAM,KAAM,CACR,OAAO,eAAgB,CACnB,OAAO,eAAe,QAAQ,cAAe,KAAK,UAAU,UAAU,KAAK,CAAC,CAChF,CAEA,OAAO,UAAU,SAAU,QAAS,CAE5B,UAAU,MAAM,KAAK,IAAM,GAAG,SAAS,KAAO,SAAS,EAAE,IAE7D,UAAU,MAAM,KAAK,CAAE,SAAU,OAAQ,CAAC,EAC1C,KAAK,cAAc,EACvB,CAEA,OAAO,UAAW,CACd,GAAI,UAAU,MAAM,QAAU,EAAG,OACjC,MAAM,KAAO,UAAU,MAAM,IAAI,EACjC,YAAK,cAAc,EACZ,IACX,CAEA,OAAO,YAAa,CAChB,UAAU,MAAQ,CAAC,EACnB,KAAK,cAAc,CACvB,CAEA,OAAO,WAAY,CACf,GAAI,UAAU,OAAQ,OACtB,MAAM,KAAO,KAAK,SAAS,EAC3B,MAAQ,IAAI,MAAM,EAAE,QAAQ,KAAK,SAAU,KAAK,OAAO,CAC3D,CAEA,QAAQ,SAAU,QAAS,CACvB,GAAI,UAAU,OACV,OAAO,MAAM,UAAU,SAAU,OAAO,EAG5C,UAAU,OAAS,GACnB,EAAE,UAAU,EAAE,OAAO,OAAS,SAAS,OAAS,2BAA6B,SAAS,KAAO,gCAAkC,SAAS,OAAS,uFAAyF,SAAS,KAAO,cAAc,EACxQ,EAAE,cAAc,EAAE,SAAS,SAAS,EACpC,EAAE,wBAAwB,EAAE,MAAM,SAAU,MAAO,CAC/C,MAAM,gBAAgB,EAClB,mBAAmB,UAAU,QAAQ,EAEzC,UAAU,OAAS,GACnB,EAAE,cAAc,EAAE,YAAY,SAAS,EACvC,EAAE,UAAU,EAAE,MAAM,EACpB,MAAM,UAAU,CACpB,CAAC,EACD,EAAE,WAAW,EAAE,KAAK,QAAS;AAAA,kBAC3B,SAAS,qBAAqB;AAAA,aACnC,SAAS,eAAe,aAAa,CACtC,CACJ,CAEA,MAAM,OAAQ,CACV,YAAY,GAAI,SAAU,MAAO,kBAAmB,CAChD,KAAK,GAAK,GACV,KAAK,SAAW,SAChB,KAAK,MAAQ,MACb,KAAK,aAAe,kBAAoB,kBAAkB,OAAO,kBAAoB,iBAAiB,QAAU,UAAU,EAAE,OAAO,CAAC,YAAa,mBAAqB,YAAY,OAAO,iBAAiB,aAAa,EAAG,CAAC,CAAC,EAAI,CAAC,CACrO,CAEA,iBAAiB,UAAW,CACxB,KAAK,UAAY,SACrB,CAEA,oBAAoB,cAAe,CAC/B,GAAI,CAAC,eAAiB,CAAC,cAAc,SAAU,CAC3C,QAAQ,IAAI,4CAA4C,EAExD,MACJ,CACA,KAAK,iBAAmB,cAAc,QAC1C,CAEA,uBAAwB,CACpB,MAAI,CAAC,KAAK,iBAAiB,KAAK,SAAS,GAAK,CAAC,KAAK,iBAAiB,KAAK,SAAS,EAAE,OAC1E,GAIP,gBAAiB,KAAK,iBAAiB,KAAK,SAAS,EAC9C,KAAK,iBAAiB,KAAK,SAAS,EAAE,YAI1C,KAAK,iBAAiB,KAAK,SAAS,EAAE,OAAO,SAAW,UAAY,KAAK,iBAAiB,KAAK,SAAS,EAAE,OAAO,SAAW,UACvI,CAEA,uBAAwB,CACpB,OAAK,KAAK,iBAAiB,KAAK,SAAS,GAIrC,gBAAiB,KAAK,iBAAiB,KAAK,SAAS,EAC9C,KAAK,iBAAiB,KAAK,SAAS,EAAE,YAJtC,EAQf,CAEA,wBAAyB,CACrB,OAAK,KAAK,iBAAiB,KAAK,SAAS,GAIzC,OAAO,GAAG,2BAA2B,UAAY,KAAK,UACtD,OAAO,GAAG,2BAA2B,YAAc,KAAK,iBAAiB,KAAK,SAAS,EAAE,YAElF,KAAK,iBAAiB,KAAK,SAAS,EAAE,cANlC,EAOf,CACA,uBAAwB,CACpB,OAAK,KAAK,iBAAiB,KAAK,SAAS,EAIlC,KAAK,iBAAiB,KAAK,SAAS,EAAE,YAHlC,EAIf,CAEA,mBAAmB,SAAU,iBAAkB,KAAM,CACjD,GAAI,CAAC,KAAK,iBAAiB,KAAK,SAAS,EAAE,OAAO,iBAAkB,CAEhE,MAAM,gBAAkB,SAAS,gBAAgB,EACjD,GAAI,CAAC,KAAK,kBAAkB,EACxB,OAAO,gBAGX,MAAM,eAAiB,KAAK,iBAAiB,KAAK,SAAS,EAAE,SAE7D,MAAO,CACH,OAAQ,CACJ,GAAG,gBAAgB,OACnB,KAAM,eAAe,YAAc,gBAAgB,OAAO,IAC9D,EACA,QAAS,CACL,GAAG,gBAAgB,QACnB,KAAM,eAAe,aAAe,gBAAgB,QAAQ,KAC5D,MAAO,eAAe,cAAgB,gBAAgB,QAAQ,KAClE,EACA,KAAM,CACF,GAAG,gBAAgB,KACnB,UAAW,CACP,IAAK,eAAe,kBAAoB,gBAAgB,KAAK,UAAU,IACvE,MAAO,eAAe,oBAAsB,gBAAgB,KAAK,UAAU,KAC/E,CACJ,EACA,MAAO,gBAAgB,KAC3B,CACJ,CAEA,OAAI,OAAS,KACF,KAAK,iBAAiB,KAAK,SAAS,EAAE,OAAO,oBAAoB,SAClE,SAAS,KAAK,iBAAiB,KAAK,SAAS,EAAE,OAAO,gBAAgB,EACtE,SAAS,gBAAgB,EAG/B,OAAS,MACF,KAAK,iBAAiB,KAAK,SAAS,EAAE,UAAU,oBAAoB,SACrE,SAAS,KAAK,iBAAiB,KAAK,SAAS,EAAE,UAAU,gBAAgB,EACzE,SAAS,gBAAgB,EAG/B,OAAS,KACF,KAAK,iBAAiB,KAAK,SAAS,EAAE,SAAS,oBAAoB,SACpE,SAAS,KAAK,iBAAiB,KAAK,SAAS,EAAE,SAAS,gBAAgB,EACxE,SAAS,gBAAgB,EAG/B,OAAS,MACF,KAAK,iBAAiB,KAAK,SAAS,EAAE,SAAS,oBAAoB,SACpE,SAAS,KAAK,iBAAiB,KAAK,SAAS,EAAE,SAAS,gBAAgB,EAI3E,SAAS,gBAAgB,CACpC,CAEA,mBAAoB,CAChB,OAAK,KAAK,iBAAiB,KAAK,SAAS,EAAE,SAGpC,KAAK,iBAAiB,KAAK,SAAS,EAAE,SAAS,OAAS,SAFpD,EAGf,CAEA,qBAAsB,CAClB,GAAI,CAAC,KAAK,iBAAiB,KAAK,SAAS,EACrC,MAAO,GAGX,MAAM,QAAU,KAAK,iBAAiB,KAAK,SAAS,EACpD,OAAI,QAAQ,SAAW,EAAY,GAE/B,QAAQ,kBAAoB,MAEpC,CACJ,CAEA,MAAM,QAAS,CACX,aAAc,CAAE,CAEhB,cAAe,CACX,GAAmB,OAAO,OAAO,GAA7B,IACA,OAGJ,MAAM,SAAW,aAAa,QAAQ,UAAU,EAAI,KAAK,MAAM,aAAa,QAAQ,UAAU,CAAC,EAAI,CAAC,EAC9F,SAAW,aAAa,QAAQ,UAAU,EAAI,KAAK,MAAM,aAAa,QAAQ,UAAU,CAAC,EAAI,OAE7F,kBAAoB,KAAK,yBAAyB,QAAQ,EAC1D,mBAAqB,aAAa,QAAQ,oBAAoB,EAAI,KAAK,MAAM,aAAa,QAAQ,oBAAoB,CAAC,EAAI,EAEjI,OAAO,GAAK,CACR,SACA,SACA,kBACA,mBACA,KAAM,CACF,mBAAoB,eAAe,QAAQ,oBAAoB,EAAI,KAAK,MAAM,eAAe,QAAQ,oBAAoB,CAAC,EAAI,EAClI,EACA,UAAW,CACP,UAAW,CACP,OAAQ,uuBACR,KAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4CAcN,gBAAiB,8BACjB,QAAS,8NACT,SAAU,oBACV,wBAAyB,opBAC7B,CACJ,CACJ,CACJ,CAEA,yBAAyB,SAAU,CAC/B,IAAI,UAAY,SAAS,IAAI,KAAK,EAAE,QAAQ,EAAI,GAAI,EACpD,QAAS,WAAW,OAAO,OAAO,QAAQ,EAAG,CACzC,GAAI,QAAQ,YAAc,QAAQ,WAAa,UAAW,CACtD,UAAY,QAAQ,WACpB,QACJ,CACK,QAAQ,aACT,UAAY,EAEpB,CACA,OAAO,SACX,CAEA,eAAgB,CACZ,MAAO,GAAK,OAAO,SAAS,KAAK,QAAQ,YAAY,GAAK,GAAK,OAAO,SAAS,KAAK,QAAQ,oBAAoB,CACpH,CAEA,kBAAmB,CACf,MAAO,GAAK,OAAO,SAAS,KAAK,QAAQ,eAAe,CAC5D,CAEA,cAAe,CACX,MAAO,GAAK,OAAO,SAAS,KAAK,QAAQ,UAAU,CACvD,CAEA,aAAc,CACV,MAAO,GAAK,OAAO,SAAS,KAAK,QAAQ,SAAS,CACtD,CAEA,YAAa,CACT,OAAO,SAAS,SAAS,WAAa,GAC1C,CAEA,YAAa,CACT,MAAO,GAAK,OAAO,SAAS,SAAS,QAAQ,OAAO,CACxD,CAEA,cAAc,KAAM,CAChB,KAAK,SAAW,KAChB,KAAK,8BAA8B,CACvC,CAEA,+BAAgC,CAC5B,IAAI,SAAW,KACf,EAAE,OAAO,GAAG,UAAU,UAAU,MAAM,EAAE,MAAM,SAAU,OAAQ,CAC5D,MAAM,OAAS,SAAS,iBAAiB,OAAO,aAAa,EAC7D,GAAI,CAAC,OAAU,OACf,MAAM,IAAM,SAAS,oBAAoB,MAAM,EAC/C,IAAI,QACN,SAAS,MAAM,GAAG,EAAE,KAAK,UAAU,CAChC,EAAE,QAAQ,IAAI,OAAO,KAAK,EAAG,SAAU,KAAM,CAC3C,QAAQ,IAAI,IAAI,EACf,QAAU,IAAI,QAAQ,KAAK,GAAI,KAAK,SAAU,KAAK,MAAO,KAAK,mBAAmB,CACtF,CAAC,EAAE,KAAK,UAAY,CAEhB,IAAI,aAAa,SAAS,SAAU,OAAO,EAAE,IAAoB,EAAI,CACzE,CAAC,EAAE,KAAK,UAAY,CAChB,QAAQ,IAAI,6CAA6C,CAC7D,CAAC,CACD,CAAC,CACL,CAAC,CACL,CAEA,iBAAiB,OAAQ,CACrB,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,GAAG,EAAE,IAAI,CACjD,CAEA,oBAAoB,OAAQ,CACxB,MAAO,WAAa,OAAO,SAAS,SAAW,aAAe,MAClE,CAEA,MAAM,EAAG,CACL,OAAO,IAAI,QAAQ,SAAU,EAAG,CAC5B,WAAW,EAAG,CAAC,CACnB,CAAC,CACL,CAEA,cAAe,CACX,EAAE,OAAO,GAAG,UAAU,UAAU,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,OAAO,EACxF,EAAE,OAAO,GAAG,UAAU,UAAU,uBAAuB,EAAE,KAAK,gCAAgC,EAAE,OAAO,CAC3G,CACJ,CAGA,MAAM,WAAY,CACd,iBAAiB,SAAU,aAAc,CACrC,IAAI,cAAgB,OAAO,SAAS,OAAO,MAAM,kBAAkB,EACnE,GAAI,eAAiB,KAAM,OAAO,cAAc,CAAC,EACjD,MAAM,kBACU,EAAE,YAAY,EAAE,KAAK,8EAA8E,EAAE,KAAK,MAAM,IAA5H,QACM,EAAE,YAAY,EAAE,KAAK,sDAAsD,EAAE,IAAI,EACjF,EAAE,YAAY,EAAE,KAAK,8EAA8E,EAAE,IAAI,EAEnH,OAAI,SAAS,KAAK,SAAW,QAAQ,GAAG,SAAS,IAAM,iBAAiB,EAC7D,kBAGJ,SAAS,CAAC,EAAE,EACvB,CACJ,CAEA,MAAM,gBAAiB,CACnB,OAAO,iBAAkB,CACrB,EAAE,qBAAqB,EAAE,SAAS,UAAY,CAC1C,MAAM,iBAAmB,EAAE,qBAAqB,EAE5C,iBAAiB,IAAI,GAAK,iBAAiB,SAAS,0BAA0B,IAC9E,iBAAiB,YAAY,0BAA0B,EACvD,EAAE,+BAA+B,EAAE,YAAY,2BAA2B,EAC1E,EAAE,6BAA6B,EAAE,YAAY,2BAA2B,EAEhF,CAAC,EACD,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,aAAa,EACpE,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,kBAAkB,CAC9E,CAEA,OAAO,iBAAkB,CACrB,KAAM,CAAE,gBAAiB,UAAW,gBAAiB,SAAU,EAAI,OAAO,GAAG,2BACvE,QAAU,IAAI,QAAQ,UAAW,eAAe,EAEtD,QAAQ,iBAAiB,SAAS,EAClC,QAAQ,oBAAoB,CAAE,SAAU,eAAgB,CAAC,EAEzD,KAAM,CAAE,IAAK,EAAI,QAAQ,mBAAmB,OAAO,GAAG,SAAU,gBAAgB,UAAU,IAAQ,KAAK,EAGvG,EAAE,yBAAyB,EAAE,KAAK,QAAS,UAAU,KAAK,gBAAgB,cAAc,EAExF,EAAE,+CAA+C,EAAE,KAAK,QAAS;AAAA,kBAC/D,KAAK,qBAAqB;AAAA,aAC/B,KAAK,eAAe;AAAA,qBACZ,KAAK,kBAAkB;AAAA,iBAC3B,KAAK,QAAQ,gBAAgB,EAE9B,EAAE,uCAAuC,EAAE,KAAK,QAAS;AAAA,qBACpD,KAAK,kBAAkB;AAAA,iBAC3B,KAAK,QAAQ,gBAAgB,EAE9B,EAAE,qBAAqB,EAAE,KAAK,QAAS,kBAAkB,KAAK,iBAAiB,gBAAgB,EAC/F,EAAE,iEAAiE,EAAE,KAAK,QAAS,UAAU,KAAK,aAAa,cAAc,EAC7H,EAAE,qBAAqB,EAAE,KAAK,QAAS,kBAAkB,KAAK,kBAAkB,gBAAgB,EAGhG,EAAE,uBAAuB,EAAE,KAAK,KAAK,OAAO,EAC5C,EAAE,oBAAoB,EAAE,KAAK,KAAK,WAAW,EAC7C,EAAE,6BAA6B,EAAE,KAAK,KAAK,UAAU,EACrD,EAAE,6CAA6C,EAAE,KAAK,KAAK,IAAI,EAC/D,EAAE,kDAAkD,EAAE,KAAK,KAAK,iBAAiB,EACjF,EAAE,+BAA+B,EAAE,KAAK,KAAK,cAAc,EAC3D,EAAE,6BAA6B,EAAE,KAAK,KAAK,YAAY,EAEvD,KAAK,qBAAuB,EAAE,eAAe,EAAE,KAAK,QAAS,kCAAkC,EAE/F,EAAE,6BAA6B,EAAE,SAAS,iCAAiC,EAC3E,EAAE,sBAAsB,EAAE,SAAS,0BAA0B,EACxD,KAAK,gBACN,EAAE,sBAAsB,EAAE,KAAK,CAEvC,CAEA,OAAO,eAAgB,CACnB,EAAE,6BAA6B,EAAE,YAAY,iCAAiC,EAC9E,EAAE,sBAAsB,EAAE,YAAY,0BAA0B,EAChE,EAAE,+BAA+B,EAAE,YAAY,2BAA2B,EAAE,KAAK,EAAE,EACnF,EAAE,6BAA6B,EAAE,YAAY,2BAA2B,EAAE,KAAK,EAAE,EAEjF,wBAAwB,MAAQ,EACpC,CAEA,aAAa,oBAAqB,CAC9B,MAAM,0BAA4B,EAAE,+BAA+B,EAC7D,wBAA0B,EAAE,6BAA6B,EACzD,iBAAmB,EAAE,qBAAqB,EAEhD,GAAI,CAAC,wBAAwB,MAAO,CAChC,iBAAiB,SAAS,0BAA0B,EACpD,MACJ,CAEA,MAAM,KAAO,CACT,KAAM,QACN,OAAQ,UACR,MAAO,wBAAwB,MAC/B,UAAW,OAAO,GAAG,2BAA2B,UAChD,UAAW,OAAO,GAAG,2BAA2B,UAChD,YAAa,OAAO,GAAG,2BAA2B,YAClD,gBAAiB,EAAE,aAAa,EAAE,GAAG,UAAU,CACnD,EAKM,QAAU,MAAM,IAAI,mBAAmB,IAAI,EAEjD,SAAW,wBAAwB,YAAY,2BAA2B,GAAK,0BAA0B,SAAS,2BAA2B,GAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAEjL,CAAC,SAAW,0BAA0B,YAAY,2BAA2B,GAAK,wBAAwB,SAAS,2BAA2B,CAClJ,CACJ,CAEA,MAAM,cAAe,CACjB,YAAY,eAAgB,UAAW,CACnC,KAAK,wBAA0B,eAC/B,KAAK,cAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,KAAK,SAAS,GAAG,YAAY,IAAM,OAE5F,YAAc,sBAAwB,YAAc,qBAEpD,KAAK,OAAS,gBAGd,KAAK,OAAS,EAAE,gCAAgC,SAAS,MAAM,EAAE,KAAK,QAAS,2BAA2B,EAEtG,KAAK,cACL,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,EAElE,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,EAGrE,CAEA,OAAO,SAAU,CACT,KAAK,cACL,EAAE,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAE7B,EAAE,KAAK,MAAM,EAAE,KAAK,EAExB,EAAE,KAAK,MAAM,EAAE,IAAI,SAAS,OAAO,IAAI,EACvC,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,OAAO,IAAI,EACxC,EAAE,KAAK,MAAM,EAAE,KAAK,WAAY,EAAK,EACjC,SAAS,OAAO,OAAS,YAKzB,KAAK,cACL,EAAE,KAAK,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,iBAAiB,EAE1D,EAAE,KAAK,MAAM,EAAE,MAAM,EAAE,SAAS,iBAAiB,EAGrD,KAAK,YAAY,SAAS,OAAO,MAAO,iBAAiB,EAC7D,CAEA,QAAQ,SAAU,CACd,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,OAAO,IAAI,EACxC,KAAK,YAAY,SAAS,OAAO,MAAO,qBAAqB,EAC7D,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,eAAe,EACrD,EAAE,KAAK,MAAM,EAAE,KAAK,EAEhB,KAAK,cACL,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,QAAS,2BAA2B,EAE1F,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,KAAK,QAAS,2BAA2B,CAEzF,CAEA,OAAO,SAAU,CACb,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,OAAO,IAAI,EACxC,KAAK,OAAO,KAAK,WAAY,EAAI,EACjC,KAAK,YAAY,SAAS,OAAO,MAAO,oBAAoB,EAC5D,EAAE,KAAK,MAAM,EAAE,KAAK,EAEhB,KAAK,cACL,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,QAAS,2BAA2B,EAE1F,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,KAAK,QAAS,2BAA2B,CAEzF,CAEA,eAAgB,CACR,KAAK,eACL,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EACtD,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,iBAAiB,EAC9E,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,OAAO,IAEnE,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,KAAK,EAC7C,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,YAAY,iBAAiB,EACrE,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,WAAW,OAAO,GAG9D,EAAE,KAAK,uBAAuB,EAAE,IAAI,KAAK,aAAa,EACtD,EAAE,KAAK,uBAAuB,EAAE,KAAK,KAAK,aAAa,EACvD,EAAE,KAAK,uBAAuB,EAAE,KAAK,WAAY,EAAK,CAC1D,CAEA,gBAAiB,CACT,KAAK,eACL,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EACtD,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,iBAAiB,EAC9E,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,OAAO,IAEnE,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,KAAK,EAC7C,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,YAAY,iBAAiB,EACrE,EAAE,KAAK,uBAAuB,EAAE,MAAM,EAAE,WAAW,OAAO,GAG9D,EAAE,KAAK,uBAAuB,EAAE,IAAI,KAAK,WAAW,EACpD,EAAE,KAAK,uBAAuB,EAAE,KAAK,KAAK,WAAW,EACrD,EAAE,KAAK,uBAAuB,EAAE,KAAK,WAAY,EAAI,EAErD,QAAQ,IAAI,mCAAoC,EAAE,KAAK,uBAAuB,EAAE,KAAK,UAAU,CAAC,CACpG,CAEA,iBAAiB,KAAM,CACnB,KAAK,cAAgB,MAAQ,EAAE,KAAK,uBAAuB,EAAE,KAAK,CACtE,CAEA,eAAe,KAAM,CACjB,KAAK,YAAc,IACvB,CAEA,MAAO,CACH,EAAE,KAAK,MAAM,EAAE,KAAK,CACxB,CAEA,SAAU,CACF,KAAK,cACL,EAAE,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,WAAY,EAAI,EAE7C,EAAE,KAAK,MAAM,EAAE,KAAK,WAAY,EAAI,EAExC,EAAE,KAAK,uBAAuB,EAAE,KAAK,WAAY,EAAI,EAErD,QAAQ,IAAI,4BAA6B,EAAE,KAAK,uBAAuB,EAAE,KAAK,UAAU,CAAC,CAC7F,CAEA,qBAAsB,CAClB,OAAO,EAAE,KAAK,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAS,CACnD,CAEA,eAAe,UAAW,CACtB,KAAK,OAAS,UAAU,aAAa,KAAK,UAAU,IAAI,eAAe,CAC3E,CAEA,YAAYA,OAAO,UAAW,CAkB1B,GAjBA,EAAE,IAAI,SAAS,EAAE,EAAE,KAAK,QAAS;AAAA,yBACxBA,OAAM,KAAK,GAAGA,OAAM,YAAc,UAAY,IAAM,IAAI;AAAA,0BACvDA,OAAM,MAAM,GAAGA,OAAM,aAAe,UAAY,IAAM,IAAI;AAAA,oCAChDA,OAAM,eAAe;AAAA,0BAC/BA,OAAM,WAAW,YAAYA,OAAM,WAAW;AAAA,gCACxCA,OAAM,WAAW;AAAA,iCAChBA,OAAM,YAAY;AAAA,gCACnBA,OAAM,WAAW;AAAA,yBACxBA,OAAM,SAAS;AAAA,6BACXA,OAAM,QAAQ;AAAA,8BACbA,OAAM,SAAS;AAAA,+BACdA,OAAM,UAAU;AAAA;AAAA;AAAA,iCAGd,EAGbA,OAAM,aAAe,UAAW,CAChC,MAAM,aAAe,EAAE,IAAI,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EACxD,EAAE,IAAI,SAAS,EAAE,EAAE,OAAO,GAAG,aAAeA,OAAM,OAAS,GAAG,IAAI,CACtE,CACJ,CAGA,yBAA0B,CACtB,EAAE,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,QAAS,KAAK,0BAA0B,CACxE,CAEA,oBAAoB,SAAU,KAAO,CAAC,EAAG,CACrC,OAAO,eAAe,QAAQ,gBAAiB,KAAK,UAAU,CAC1D,GAAG,KACH,CAAC,SAAS,EAAE,EAAG,CAAE,QAAS,EAAE,UAAU,EAAE,GAAG,UAAU,CAAE,CAC3D,CAAC,CAAC,EAGI,EAAE,UAAU,EAAE,GAAG,UAAU,GAEjC,KAAK,wBAAwB,CACjC,CAEA,qBAAqB,SAAU,QAAS,CACpC,MAAM,KAAO,KAAK,MAAM,OAAO,eAAe,QAAQ,eAAe,GAAK,IAAI,GAAK,CAAC,EAC9E,cAAgB,KAAK,MAAM,OAAO,eAAe,QAAQ,cAAc,GAAK,IAAI,GAAK,CAAC,EACtF,MAAQ,GAAG,SAAS,IAAI,IAAI,QAAQ,EAAE,IAAI,QAAQ,SAAS,GAG5D,SAAS,KAAK,QAKf,CAAC,SAAS,KAAK,MAAM,WAAa,SAAS,KAAK,MAAM,gBAAkB,IACxE,KAAK,KAAK,GAAG,SAAW,cAAc,SAAS,KAAK,IAMxD,KAAK,2BAA6B,IAAM,CACpC,MAAM,EAAI,CAAE,GAAG,SAAS,KAAK,MAAO,GAAI,KAAM,EAC9C,OAAO,IAAI,MAAM,EAAE,QAAQ,EAAG,IAAM,KAAK,oBAAoB,EAAG,IAAI,CAAC,CACzE,EAEA,EAAE,KAAK,MAAM,EAAE,OAAO,EAAE,GAAG,QAAS,KAAK,0BAA0B,GACvE,CACJ,CAEA,MAAM,sBAAuB,CACzB,YAAY,cAAe,UAAW,CAClC,KAAK,cAAgB,cAGrB,KAAK,MAAQ,CACT,OAAQ,CAAC,GAAI,GAAI,GAAI,GAAG,CAC5B,EAGA,KAAK,WAAa,CACd,MAAO,KACP,cAAe,CAAC,KAAM,KAAM,KAAM,IAAI,CAC1C,EACA,KAAK,kBAAoB,CACrB,MAAO,mBAAmB,SAAS,GACnC,MAAO,cACP,WAAY,mBACZ,oBAAqB,wBACrB,YAAa,qBACb,YAAa,cACjB,CACJ,CAEA,aAAa,CAAE,QAAS,UAAW,UAAW,MAAAA,OAAO,aAAc,EAAG,CAClE,KAAK,MAAQ,QAAQ,MACrB,KAAK,WAAa,QAAQ,WAC1B,KAAK,OAAS,QAAQ,OACtB,KAAK,MAAQ,SAAS,MACtB,KAAK,UAAY,UACjB,KAAK,UAAY,WAAa,GAC9B,KAAK,MAAQA,QAAS,KAEtB,KAAK,WAAa,QAAQ,WAE1B,KAAK,cAAgB,aACzB,CAEA,MAAO,CACH,GAAI,CAAC,KAAK,SAAS,EAAG,MAAO,GAE7B,KAAK,YAAY,EAEjB,KAAK,YAAc,QACb,EAAE,KAAK,aAAa,EAAE,MAAM,KAAK,WAAW,KAAK,EACjD,EAAE,KAAK,aAAa,EAAE,OAAO,KAAK,WAAW,KAAK,EAExD,KAAK,YAAY,EAEjB,KAAK,UAAU,CACnB,CAEA,MAAO,CAEH,KAAK,KAAK,EACV,EAAE,IAAI,KAAK,kBAAkB,KAAK,EAAE,EAAE,OAAO,CACjD,CAEA,aAAc,CACV,OAAO,EAAE,cAAc,KAAK,kBAAkB,KAAK,KAAK,KAAK,KAAK,OAAO,CAC7E,CAEA,kBAAmB,CACf,OAAO,EAAE,aAAa,KAAK,kBAAkB,UAAU,KAAK,KAAK,UAAU,MAAM,CACrF,CAEA,mBAAoB,CAChB,MAAM,IAAM,CAAC,EACP,WAAa,CAAC,OAAQ,QAAS,OAAQ,MAAM,EACnD,UAAW,YAAY,WACnB,IAAI,KAAK,EAAE,eAAe,KAAK,kBAAkB,WAAW,KAAK,KAAK,OAAO,QAAQ,CAAC,QAAQ,CAAC,EAEnG,OAAO,GACX,CAEA,mBAAoB,CAChB,MAAM,IAAM,CAAC,EAEb,MADa,CAAC,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAI,EAC9C,QAAQ,GAAK,IAAI,KAAK,EAAE,8BAA8B,KAAK,kBAAkB,WAAW,KAAK,CAAC,QAAQ,CAAC,CAAC,EAG7G,KAAK,WAAW,cAAgB,IAAI,OAAO,CAAC,EAAG,IAAM,EAAI,IAAM,CAAC,EAEzD,GACX,CAEA,2BAA4B,CACxB,MAAM,GAAK,EAAE,eAAe,KAAK,kBAAkB,mBAAmB,UAAU,EAChF,UAAG,OAAO,GAAG,KAAK,kBAAkB,EAAG,GAAG,KAAK,kBAAkB,CAAC,EAC3D,EACX,CAEA,aAAc,CACV,MAAM,GAAK,EAAE,eAAe,KAAK,kBAAkB,KAAK,UAAU,EAGlE,UAAG,OAAO,KAAK,YAAY,EAAG,KAAK,iBAAiB,EAAG,KAAK,0BAA0B,CAAC,EAEvF,KAAK,WAAW,MAAQ,GAEjB,EACX,CAEA,qBAAqB,KAAM,MAAO,CAC9B,MAAM,IAAM,SAAS,KAAK,IAAI,EAAI,GAAI,EAChC,aAAe,SAAS,KAAK,EAAI,GAAK,GAAK,GAEjD,OAAQ,KAAM,CACV,IAAK,QACD,OAAO,IAAO,aAAe,GACjC,IAAK,OACD,OAAO,IAAO,aAAe,EAEjC,QACI,OAAO,IAAM,YACrB,CACJ,CAEA,kBAAmB,CACf,OAAQ,KAAK,MAAM,MAAO,CACtB,IAAK,WACD,OAAQ,KAAK,cAAc,YAAc,KAAK,cAAc,SAAY,SAAS,KAAK,IAAI,EAAI,GAAI,EAEtG,IAAK,gBACD,OAAQ,KAAK,cAAc,aAAa,KAAM,CAC1C,IAAK,SACD,OAAO,KAAK,qBAAqB,KAAK,cAAc,aAAa,WAAY,KAAK,cAAc,aAAa,WAAW,EAE5H,IAAK,WACD,OAAO,KAAK,qBAAqB,KAAK,cAAc,aAAa,UAAU,KAAM,KAAK,cAAc,aAAa,UAAU,KAAK,EAEpI,QACI,OAAO,KAAK,cAAc,aAAa,MAAQ,SAAS,KAAK,IAAI,EAAI,GAAI,CACjF,CAIJ,QACI,OAAQ,KAAK,MAAM,OACV,QACM,SAAS,KAAK,IAAI,EAAI,GAAI,EAAK,SAAS,KAAK,MAAM,OAAO,EAAI,GAG9D,KAAK,MAAM,QAAQ,QAG1C,CACJ,CAEA,UAAW,CAEP,OAAI,KAAK,iBAAiB,EAAI,KAAK,IAAI,EAAI,IAAa,GAGpD,KAAK,OAAO,UACL,KAAK,WAAa,KAAK,MAAM,UAAU,SAAW,KAAK,IAAI,EAAI,IAInE,KAAK,SAChB,CAEA,WAAW,OAAQ,CACf,MAAO,GAAG,OAAS,GAAK,IAAM,EAAE,GAAG,MAAM,EAC7C,CAEA,aAAc,CACV,KAAM,CAAE,MAAO,WAAY,EAAI,KAAK,WAEpC,OAAQ,MAAO,CACX,IAAK,kBACD,OAAO,KAAK,KAAK,EAErB,IAAK,uBAGD,OAAI,KAAK,MAAM,OAAS,SAAc,KAAK,MAAM,OAAS,KAAK,MAAM,QAAU,OAC3E,QAIJ,KAAK,MAAM,QAAQ,SAAW,KAAK,iBAAiB,EAG7C,WAAW,IACP,KAAK,UAAU,EACvB,GAAG,GAEV,IAAK,oBACD,OAAO,KAAK,WAAW,MAAM,KAAK,WAAW,EAEjD,QAAS,KACb,CACJ,CAGA,0BAA0B,YAAa,UAAW,CAC9C,GAAI,OAAO,aAAgB,UAAY,OAAO,WAAc,SAAU,MAAO,CAAC,KAAM,KAAM,KAAM,IAAI,EACpG,GAAI,YAAc,WAAa,EAAG,MAAO,CAAC,KAAM,KAAM,KAAM,IAAI,EAEhE,MAAM,QAAU,CAAC,EAAG,EAAG,EAAG,CAAC,EAE3B,IAAI,KAAO,KAAK,IAAI,YAAc,SAAS,EAG3C,QAAS,EAAI,EAAG,EAAI,KAAK,MAAM,OAAO,OAAQ,IAAK,CAC/C,MAAM,UAAY,KAAK,MAAM,OAAO,CAAC,EAGrC,GAFA,QAAQ,CAAC,EAAI,KAAK,MAAM,KAAO,SAAS,EAEpC,MAAQ,UAAW,CACnB,MAAQ,UACR,QACJ,CACA,KACJ,CAEA,OAAO,QAAQ,IAAI,GAAK,KAAK,WAAW,CAAC,CAAC,EAAE,QAAQ,CACxD,CAEA,WAAY,CACR,IAAI,SAAW,CAAC,EACZ,iBAAmB,SAAS,KAAK,IAAI,EAAI,GAAI,EACjD,MAAM,eAAiB,KAAK,iBAAiB,EACvC,cAAgB,IAEtB,KAAK,QAAU,YAAY,IAAM,CAC7B,GAAI,eAAiB,iBACjB,YAAK,YAAY,EACV,KAAK,KAAK,EAIrB,MAAM,UAAY,KAAK,0BAA0B,eAAgB,gBAAgB,EAGjF,KAAK,WAAW,cAAc,QAAQ,CAAC,GAAI,IAAM,CACzC,SAAS,CAAC,IAAM,UAAU,CAAC,GAAG,GAAG,KAAK,UAAU,CAAC,CAAC,CAC1D,CAAC,EAGD,SAAW,UAGX,kBAAoB,cAAgB,GACxC,EAAG,aAAa,CACpB,CAEA,MAAO,CACH,cAAc,KAAK,OAAO,CAC9B,CAEA,aAAc,CACV,EAAE,IAAI,KAAK,kBAAkB,KAAK,IAAI,EAAE,IAAI,CACxC,OAAU,EACV,QAAW,EACX,aAAc,YAClB,CAAC,EAED,EAAE,IAAI,KAAK,kBAAkB,KAAK,EAAE,EAAE,IAAI,CACtC,YAAa,QACb,YAAa,QACb,QAAW,OACX,YAAa,SACb,aAAc,SACd,oBAAqB,SACrB,cAAe,SACf,SAAY,SAGZ,gBAAiB,GAAG,KAAK,MAAM,WAAW,YAAY,KACtD,aAAc,GAAG,KAAK,MAAM,WAAW,SAAS,KAChD,iBAAkB,GAAG,KAAK,MAAM,WAAW,aAAa,KACxD,cAAe,GAAG,KAAK,MAAM,WAAW,UAAU,KAClD,mBAAoB,KAAK,MAAM,WAAW,WAC1C,eAAgB,KAAK,MAAM,WAAW,YACtC,gBAAiB,GAAG,KAAK,MAAM,WAAW,YAAY,KACtD,eAAgB,GAAG,KAAK,MAAM,WAAW,UAAU,KACnD,eAAgB,OACpB,CAAC,EAED,EAAE,IAAI,KAAK,kBAAkB,KAAK,EAAE,EAAE,IAAI,CACtC,cAAe,OAGf,MAAS,KAAK,MAAM,OAAO,MAC3B,YAAa,GAAG,KAAK,MAAM,OAAO,QAAQ,IAC9C,CAAC,EAED,EAAE,IAAI,KAAK,kBAAkB,UAAU,EAAE,EAAE,IAAI,CAC3C,cAAe,MACf,cAAe,MAGf,MAAS,KAAK,MAAM,YAAY,MAChC,YAAa,GAAG,KAAK,MAAM,YAAY,QAAQ,IACnD,CAAC,EAED,EAAE,IAAI,KAAK,kBAAkB,mBAAmB,EAAE,EAAE,IAAI,CACpD,QAAW,OACX,wBAAyB,iCACzB,IAAO,UACP,cAAe,SACf,cAAe,YACnB,CAAC,EAED,EAAE,IAAI,KAAK,kBAAkB,WAAW,EAAE,EAAE,IAAI,CAC5C,cAAe,OACf,wBAAyB,OACzB,uBAAwB,eACxB,iBAAkB,OAClB,cAAe,IAGf,MAAS,KAAK,MAAM,OAAO,MAC3B,YAAa,GAAG,KAAK,MAAM,OAAO,QAAQ,IAC9C,CAAC,EAED,EAAE,IAAI,KAAK,kBAAkB,WAAW,EAAE,EAAE,IAAI,CAC5C,YAAa,QACb,cAAe,WACf,cAAe,gBACf,aAAc,SACd,gBAAiB,OACjB,cAAe,IAGf,MAAS,KAAK,MAAM,QAAQ,MAC5B,YAAa,GAAG,KAAK,MAAM,QAAQ,QAAQ,IAC/C,CAAC,EAED,EAAE,IAAI,KAAK,kBAAkB,WAAW,eAAe,EAAE,IAAI,CACzD,cAAe,gBACf,gBAAiB,CACrB,CAAC,CACL,CACJ,CAEA,MAAM,OAAQ,CACV,YAAY,OAAQ,CAChB,KAAK,OAAS,MAClB,CAEA,wBAAwBA,OAAO,KAAM,CACjC,EAAE,aAAa,IAAI,cAAc,EAAE,IAAI,CACnC,YAAa,GAAGA,OAAM,QAAQ,KAC9B,MAASA,OAAM,UACf,aAAcA,OAAM,UACpB,cAAeA,OAAM,WACrB,aAAcA,OAAM,UACpB,gBAAiB,OACjB,aAAc,MAClB,CAAC,CACL,CAEA,sBAAsB,QAAS,MAAO,YAAa,WAAY,CAC3D,aAAQ,MAAM,QAAQ,uBAAwB,KAAK,YAAY,QAAS,YAAa,UAAU,CAAC,EAChG,MAAQ,MAAM,QAAQ,mBAAoB,KAAK,gBAAgB,QAAQ,UAAU,EAAE,aAAc,WAAW,CAAC,EAC7G,MAAQ,MAAM,QAAQ,gCAAiC,KAAK,6BAA6B,QAAQ,UAAU,EAAE,aAAc,WAAW,CAAC,EACvI,MAAQ,MAAM,QAAQ,mCAAoC,KAAK,wBAAwB,QAAQ,UAAU,EAAG,WAAW,CAAC,EACjH,KACX,CAEA,YAAY,QAAS,YAAa,WAAY,CAC1C,OAAI,QAAQ,UAAU,EAAE,MAAM,QAAU,SAE7B,QAAQ,SAEf,QAAQ,UAAU,EAAE,MAAM,qBACnB,YAAc,mBAAqB,mDAGvC,QAAQ,UAAU,EAAE,MAAM,QACrC,CAEA,gBAAgB,aAAc,YAAa,CACvC,GAAI,CAAC,cAAgB,aAAa,OAAS,SACvC,OAAO,YAAc,mBAAqB,mDAG9C,GAAI,aAAa,OAAS,OAEtB,OADa,IAAI,KAAK,aAAa,KAAO,GAAI,EAClC,mBAAmB,KAAK,OAAQ,CAAE,IAAK,UAAW,MAAO,OAAQ,KAAM,SAAU,CAAC,EAGlG,GAAI,aAAa,OAAS,SAAU,CAChC,IAAI,KAAO,EACX,OAAQ,aAAa,WAAY,CAC7B,IAAK,MAAO,KAAO,aAAa,YAAa,MAC7C,IAAK,OAAQ,KAAO,aAAa,YAAc,EAAG,MAClD,IAAK,QAAS,KAAO,aAAa,YAAc,GAAI,KACxD,CAEA,IAAI,KAAO,IAAI,KACf,YAAK,QAAQ,KAAK,QAAQ,EAAI,IAAI,EAC3B,KAAK,mBAAmB,KAAK,OAAQ,CAAE,IAAK,UAAW,MAAO,OAAQ,KAAM,SAAU,CAAC,CAClG,CAEA,GAAI,aAAa,OAAS,WAAY,CAClC,IAAI,gBAAkB,EAClB,cAAgB,EACpB,OAAQ,aAAa,YAAY,KAAM,CACnC,IAAK,MAAO,gBAAkB,aAAa,YAAY,MAAO,MAC9D,IAAK,OAAQ,gBAAkB,aAAa,YAAY,MAAQ,EAAG,MACnE,IAAK,QAAS,gBAAkB,aAAa,YAAY,MAAQ,GAAI,KACzE,CACA,OAAQ,aAAa,UAAU,KAAM,CACjC,IAAK,MAAO,cAAgB,aAAa,UAAU,MAAO,MAC1D,IAAK,OAAQ,cAAgB,aAAa,UAAU,MAAQ,EAAG,MAC/D,IAAK,QAAS,cAAgB,aAAa,UAAU,MAAQ,GAAI,KACrE,CAEA,IAAI,UAAY,IAAI,KACpB,UAAU,QAAQ,UAAU,QAAQ,EAAI,eAAe,EAEvD,IAAI,QAAU,IAAI,KAClB,eAAQ,QAAQ,QAAQ,QAAQ,EAAI,aAAa,EAC1C,UAAU,mBAAmB,KAAK,OAAQ,CAAE,IAAK,UAAW,MAAO,OAAQ,KAAM,SAAU,CAAC,EAAI,MAAQ,QAAQ,mBAAmB,KAAK,OAAQ,CAAE,IAAK,UAAW,MAAO,OAAQ,KAAM,SAAU,CAAC,CAC7M,CACJ,CAEA,6BAA6B,aAAc,YAAa,CACpD,GAAI,CAAC,cAAgB,aAAa,OAAS,SACvC,OAAO,YAAc,mBAAqB,mDAG9C,MAAM,MAAQ,IAAI,KAClB,GAAI,aAAa,OAAS,OAAQ,CAC9B,MAAM,KAAO,IAAI,KAAK,aAAa,KAAO,GAAI,EAC9C,OAAO,KAAK,MAAM,KAAK,QAAQ,EAAI,MAAM,QAAQ,IAAM,IAAO,KAAO,GAAG,CAC5E,CAEA,GAAI,aAAa,OAAS,SACtB,OAAQ,aAAa,WAAY,CAC7B,IAAK,MAAO,OAAO,aAAa,YAChC,IAAK,OAAQ,OAAO,aAAa,YAAc,EAC/C,IAAK,QAAS,OAAO,aAAa,YAAc,GAChD,QAAS,MAAO,EACpB,CAGJ,GAAI,aAAa,OAAS,WAAY,CAClC,IAAI,gBAAkB,EAClB,cAAgB,EACpB,OAAQ,aAAa,YAAY,KAAM,CACnC,IAAK,MAAO,gBAAkB,aAAa,YAAY,MAAO,MAC9D,IAAK,OAAQ,gBAAkB,aAAa,YAAY,MAAQ,EAAG,MACnE,IAAK,QAAS,gBAAkB,aAAa,YAAY,MAAQ,GAAI,KACzE,CACA,OAAQ,aAAa,UAAU,KAAM,CACjC,IAAK,MAAO,cAAgB,aAAa,UAAU,MAAO,MAC1D,IAAK,OAAQ,cAAgB,aAAa,UAAU,MAAQ,EAAG,MAC/D,IAAK,QAAS,cAAgB,aAAa,UAAU,MAAQ,GAAI,KACrE,CACA,OAAO,gBAAkB,MAAQ,aACrC,CACJ,CAEA,wBAAwB,OAAQ,YAAa,CACzC,GAAI,CAAC,OAAO,WAAc,OAAO,YAAc,mBAAqB,mDACpE,MAAM,MAAQ,IAAI,KACZ,KAAO,IAAI,KAAK,OAAO,QAAU,GAAI,EAC3C,OAAO,KAAK,MAAM,KAAK,QAAQ,EAAI,MAAM,QAAQ,IAAM,IAAO,KAAO,GAAG,CAC5E,CACJ,CAEA,MAAM,QAAS,CACX,YAAY,UAAW,QAAS,kBAAmB,KAAM,CACrD,KAAK,UAAY,UACjB,KAAK,QAAU,QACf,KAAK,SAAW,OAAO,GAAG,SAC1B,KAAK,kBAAoB,kBACzB,KAAK,SAAW,IAAI,eAAe,KAAK,UAAU,eAAgB,oBAAoB,EACtF,KAAK,SAAW,IAAI,eAAe,KAAK,UAAU,eAAgB,oBAAoB,EACtF,KAAK,UAAY,IAAI,eAAe,KAAK,UAAU,eAAgB,qBAAqB,EACxF,KAAK,SAAW,IAAI,eAAe,KAAK,UAAU,eAAgB,oBAAoB,EACtF,KAAK,QAAU,IAAI,uBAAuB,KAAK,UAAU,cAAe,mBAAmB,EAC3F,KAAK,QAAU,IAAI,uBAAuB,KAAK,UAAU,cAAe,mBAAmB,EAC3F,KAAK,SAAW,IAAI,uBAAuB,KAAK,UAAU,cAAe,oBAAoB,EAC7F,KAAK,QAAU,IAAI,uBAAuB,KAAK,UAAU,cAAe,mBAAmB,EAC3F,KAAK,KAAO,KAAK,MAAM,IAAY,KAAK,OAAO,EAAI,GAAS,EAC5D,EAAE,KAAK,UAAU,eAAe,EAAE,SAAS,2BAA6B,KAAK,IAAI,EACjF,KAAK,KAAO,IAChB,CAEA,MAAO,CACH,KAAK,aAAa,EAClB,IAAI,sBAAsB,EAAE,yBAAyB,IAAI,CAC7D,CAEA,cAAe,CACX,MAAM,QAAU,KAAK,QAAQ,iBAAiB,KAAK,QAAQ,SAAS,EAEpE,GAAI,KAAK,QAAQ,uBAAuB,EAAG,CACvC,MAAM,SAAW,KAAK,QAAQ,mBAAmB,KAAK,SAAU,KAAK,kBAAkB,IAAK,KAAK,EAEjG,KAAK,UAAU,iBAAiB,SAAS,OAAO,aAAa,EAC7D,KAAK,UAAU,eAAe,SAAS,OAAO,WAAW,EAErD,QAAQ,UAAU,SAAW,WAC7B,KAAK,UAAU,QAAQ,QAAQ,EAC/B,KAAK,kBAAkB,SAAU,OAAO,EAEhD,CAEA,GAAI,KAAK,QAAQ,sBAAsB,EAAG,CACtC,MAAM,SAAW,KAAK,QAAQ,mBAAmB,KAAK,SAAU,KAAK,kBAAkB,GAAI,IAAI,EAU/F,GARA,KAAK,SAAS,iBAAiB,SAAS,OAAO,aAAa,EAC5D,KAAK,SAAS,eAAe,SAAS,OAAO,WAAW,EAEpD,QAAQ,SAAS,SAAW,aAC5B,KAAK,SAAS,eAAe,EAC7B,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,yBAAyB,EAAE,KAAK,GAGpE,QAAQ,SAAS,SAAW,SAAU,CACjC,KAAK,SAAS,oBAAoB,IACnC,KAAK,SAAS,eAAe,KAAK,SAAS,EAC3C,KAAK,UAAU,eAAiB,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,KAAK,UAAU,IAAI,eAAe,GAG1G,KAAK,SAAS,OAAO,QAAQ,EAC7B,KAAK,SAAS,qBAAqB,SAAU,KAAK,OAAO,EAGrD,KAAK,KAAK,cACV,KAAK,SAAS,QAAQ,EAG1B,KAAK,kBAAkB,SAAU,OAAO,EAGxC,MAAM,QAAU,IAAI,QAAQ,SAAS,QAAQ,QAAU,OAAO,EACxD,iBAAmB,QAAQ,sBAAsB,QAAS,SAAS,KAAK,UAAU,IAAqB,GAAqB,UAAU,EACtI,mBAAqB,QAAQ,sBAAsB,QAAS,SAAS,KAAK,UAAU,MAAwB,GAAqB,UAAU,GAE7I,OAAO,SAAS,KAAK,UAAU,UAAc,KAAe,SAAS,KAAK,UAAU,YACpF,KAAK,6BAA6B,iBAAkB,kBAAkB,CAE9E,CAEJ,CAEA,GAAI,KAAK,QAAQ,sBAAsB,EAAG,CACtC,MAAM,SAAW,KAAK,QAAQ,mBAAmB,KAAK,SAAU,KAAK,kBAAkB,GAAI,IAAI,EAU/F,GARA,KAAK,SAAS,iBAAiB,SAAS,OAAO,aAAa,EAC5D,KAAK,SAAS,eAAe,SAAS,OAAO,WAAW,EAEpD,QAAQ,OAAO,SAAW,aAC1B,KAAK,SAAS,eAAe,EAC7B,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,yBAAyB,EAAE,KAAK,GAGpE,QAAQ,OAAO,SAAW,SAAU,CAC/B,KAAK,SAAS,oBAAoB,IACnC,KAAK,SAAS,eAAe,KAAK,SAAS,EAC3C,KAAK,UAAU,eAAiB,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,KAAK,UAAU,IAAI,eAAe,GAGtG,KAAK,KAAK,uBAAyB,KAAK,QAAQ,aAAa,OAAS,GAAK,CAAC,KAAK,KAAK,yBACtF,KAAK,eAAe,KAAK,QAAQ,aAAc,SAAU,OAAO,EAGpE,KAAK,SAAS,OAAO,QAAQ,EAC7B,KAAK,SAAS,qBAAqB,SAAU,KAAK,OAAO,EAGrD,KAAK,KAAK,YACV,KAAK,SAAS,QAAQ,EAG1B,KAAK,kBAAkB,SAAU,OAAO,EAGxC,MAAM,QAAU,IAAI,QAAQ,SAAS,QAAQ,QAAU,OAAO,EACxD,iBAAmB,QAAQ,sBAAsB,QAAS,SAAS,KAAK,UAAU,IAAqB,GAAqB,QAAQ,EACpI,mBAAqB,QAAQ,sBAAsB,QAAS,SAAS,KAAK,UAAU,MAAwB,GAAqB,QAAQ,GAE3I,OAAO,SAAS,KAAK,UAAU,UAAc,KAAe,SAAS,KAAK,UAAU,YACpF,KAAK,6BAA6B,iBAAkB,kBAAkB,EAGrE,QAAQ,OAAO,MAAM,sBAEtB,KAAK,oBAAoB,QAAQ,OAAO,MAAM,QAAQ,CAE9D,CACJ,CAEA,GAAI,KAAK,QAAQ,sBAAsB,EAAG,CACtC,MAAM,SAAW,KAAK,QAAQ,mBAAmB,KAAK,SAAU,KAAK,kBAAkB,GAAI,IAAI,EAE/F,KAAK,SAAS,iBAAiB,SAAS,OAAO,aAAa,EAC5D,KAAK,SAAS,eAAe,SAAS,OAAO,WAAW,EACpD,QAAQ,SAAS,SAAW,WAC5B,KAAK,SAAS,OAAO,QAAQ,EAC7B,KAAK,kBAAkB,SAAU,OAAO,EAEhD,CAEA,EAAE,kBAAkB,EAAE,YAAY,iBAAiB,CACvD,CAEA,cAAe,CACX,KAAK,UAAU,KAAK,EACpB,KAAK,SAAS,KAAK,EAGnB,KAAK,QAAQ,KAAK,EAClB,KAAK,QAAQ,KAAK,EAClB,KAAK,SAAS,KAAK,EACnB,KAAK,QAAQ,KAAK,EAGlB,KAAK,SAAS,wBAAwB,EACtC,KAAK,SAAS,wBAAwB,GAElC,CAAC,KAAK,SAAS,oBAAoB,GAAK,CAAC,KAAK,SAAS,oBAAoB,KAC3E,KAAK,SAAS,eAAe,KAAK,SAAS,EAC3C,KAAK,SAAS,eAAe,KAAK,SAAS,EAC3C,KAAK,UAAU,eAAiB,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,KAAK,UAAU,IAAI,eAAe,GAGtG,KAAK,QAAQ,oBAAoB,GACjC,KAAK,SAAS,eAAe,EAC7B,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,yBAAyB,EAAE,KAAK,IAEpE,KAAK,SAAS,cAAc,EAC5B,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,yBAAyB,EAAE,KAAK,GAExE,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAEzB,KAAK,UAAU,qBACf,KAAK,kBAAkB,CAE/B,CAEA,eAAe,aAAc,SAAU,QAAS,CAC5C,GAAI,CAAC,QAAQ,OAAO,YAAa,CAC7B,QAAQ,IAAI,iCAAiC,EAC7C,MACJ,CAEA,MAAM,YAAc,aAAa,KAAKC,cAAe,OAAOA,aAAY,EAAE,IAAM,QAAQ,OAAO,WAAW,EAE1G,GAAI,CAAC,YAAa,CACd,QAAQ,IAAI,4BAA4B,EACxC,MACJ,CAEI,YAAY,QAAQ,CAAC,EAAE,OAAS,eAChC,KAAK,qBAAqB,YAAY,EAAE,GAIxC,EAAE,KAAK,UAAU,mBAAmB,EAAE,OAAO,sBAAsB,EACnE,EAAE,iCAAiC,EAAE,KAAK,YAAY,QAAQ,CAAC,EAAE,KAAK,EACtE,EAAE,+CAA+C,EAAE,IAAI,YAAY,EAAE,GAIzE,MAAM,QAAU,IAAI,QAAQ,SAAS,QAAU,OAAO,EACtD,KAAK,oBAAoB,SAAS,QAAQ,KAAM,YAAY,YAAsB,cAAc,EAChG,QAAQ,wBAAwB,SAAS,QAAkB,cAAc,CAC7E,CAEA,OAAO,iBAAkB,CACrB,KAAM,CAAE,gBAAiB,UAAW,gBAAiB,SAAU,EAAI,OAAO,GAAG,2BACvE,QAAU,IAAI,QAAQ,UAAW,eAAe,EAEtD,QAAQ,iBAAiB,SAAS,EAClC,QAAQ,oBAAoB,CAAE,SAAU,eAAgB,CAAC,EAEzD,KAAM,CAAE,IAAK,EAAI,QAAQ,mBAAmB,OAAO,GAAG,SAAU,gBAAgB,UAAU,IAAQ,KAAK,EAGvG,EAAE,yBAAyB,EAAE,KAAK,QAAS,UAAU,KAAK,gBAAgB,cAAc,EAExF,EAAE,+CAA+C,EAAE,KAAK,QAAS;AAAA,kBAC/D,KAAK,qBAAqB;AAAA,aAC/B,KAAK,eAAe;AAAA,qBACZ,KAAK,kBAAkB;AAAA,iBAC3B,KAAK,QAAQ,gBAAgB,EAE9B,EAAE,uCAAuC,EAAE,KAAK,QAAS;AAAA,qBACpD,KAAK,kBAAkB;AAAA,iBAC3B,KAAK,QAAQ,gBAAgB,EAE9B,EAAE,qBAAqB,EAAE,KAAK,QAAS,kBAAkB,KAAK,iBAAiB,gBAAgB,EAC/F,EAAE,iEAAiE,EAAE,KAAK,QAAS,UAAU,KAAK,aAAa,cAAc,EAC7H,EAAE,qBAAqB,EAAE,KAAK,QAAS,kBAAkB,KAAK,kBAAkB,gBAAgB,EAGhG,EAAE,uBAAuB,EAAE,KAAK,KAAK,OAAO,EAC5C,EAAE,oBAAoB,EAAE,KAAK,KAAK,WAAW,EAC7C,EAAE,6BAA6B,EAAE,KAAK,KAAK,UAAU,EACrD,EAAE,6CAA6C,EAAE,KAAK,KAAK,IAAI,EAC/D,EAAE,kDAAkD,EAAE,KAAK,KAAK,iBAAiB,EACjF,EAAE,+BAA+B,EAAE,KAAK,KAAK,cAAc,EAC3D,EAAE,6BAA6B,EAAE,KAAK,KAAK,YAAY,EAGvD,CAAC,KAAK,qBAAuB,EAAE,eAAe,EAAE,KAAK,QAAS,gBAAgB,EAE9E,EAAE,6BAA6B,EAAE,SAAS,iCAAiC,EAC3E,EAAE,sBAAsB,EAAE,SAAS,0BAA0B,EACxD,KAAK,gBACN,EAAE,sBAAsB,EAAE,KAAK,CAEvC,CAEA,qBAAqB,cAAe,CAChC,EAAE,KAAK,UAAU,YAAY,EAAE,OAAO,gGAAgG,aAAa,sBAAsB,aAAa,IAAI,CAC9L,CAEA,kBAAkB,SAAU,QAAS,CACjC,MAAM,KAAO,SAAS,OAAS,MAAQ,MAAQ,SAAS,OAAS,KAAO,KAAO,SAAS,OAAS,KAAO,KAAO,WAE3G,OAAS,MACT,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,yBAAyB,EAAE,KAAK,EAGxE,KAAK,mBAAmB,SAAS,QAAS,QAAS,IAAI,EAEvD,SAAS,MAAM,SAAW,KAAK,SAAS,KAAK,UAAU,cAAe,SAAS,MAAO,IAAI,EAE1F,KAAK,UAAU,qBAAuB,EAAE,KAAK,UAAU,mBAAmB,EAAE,KAAK,EAGjF,MAAM,MAAQ,SAAS,QAAQ,MAC/B,GAAM,MAAO,CACT,MAAM,WAAa,SAAS,OAAS,KAAO,SAAS,KAAO,GAC5D,KAAK,QAAQ,SAAS,IAAI,EAAE,EAAE,aAAa,CAAE,GAAG,MAAO,cAAe,QAAQ,SAAS,UAAU,EAAE,CAAE,CAAC,EACtG,KAAK,QAAQ,SAAS,IAAI,EAAE,EAAE,KAAK,CACvC,CACJ,CAEA,6BAA6B,IAAK,MAAO,CAC/B,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,iBAAiB,EAAE,SAA7D,EACM,EAAE,KAAK,UAAU,YAAY,EAAE,OAAO,6DAA+D,IAAM,aAAe,MAAQ,MAAM,EACxI,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,iBAAiB,EAAE,IAAI,KAAK,CAC1E,CAEA,gCAAiC,CAC7B,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,iBAAiB,EAAE,OAAO,CAClE,CAEA,qBAAsB,CAClB,EAAE,KAAK,UAAU,aAAa,EAAE,KAAK,mHAAmH,EAAE,OAAO,EACjK,EAAE,KAAK,UAAU,aAAa,EAAE,KAAK,mHAAmH,EAAE,OAAO,CACrK,CAEA,yBAA0B,CACtB,EAAE,kBAAkB,EAAE,OAAO,EAC7B,EAAE,oCAAoC,EAAE,OAAO,EAC/C,EAAE,8BAA8B,EAAE,OAAO,CAC7C,CAEA,SAAS,SAAU,SAAU,YAAa,CACtC,MAAM,MAAQ,IAAI,MAClB,MAAM,IAAI,SAAU,SAAS,KAAM,SAAS,MAAO,WAAW,EAC9D,MAAM,YAAY,SAAU,WAAW,CAC3C,CAEA,mBAAmB,SAAU,QAAS,KAAM,CACxC,MAAM,QAAU,IAAI,QAAQ,SAAS,QAAU,OAAO,EAGtD,GAAI,SAAS,OAAS,GAAI,CACtB,MAAM,WAAa,OAAS,MAAQ,YAAc,OAAS,KAAO,WAAa,OAAS,KAAO,WAAa,SACtG,aAAe,QAAQ,sBAAsB,QAAS,SAAS,MAAuB,GAAuB,UAAU,EAC7H,KAAK,oBAAoB,SAAS,KAAM,aAAc,IAAI,EAC1D,QAAQ,wBAAwB,SAAU,IAAI,CAClD,CACJ,CAEA,oBAAoB,cAAe,MAAO,KAAM,CAC5C,GAAI,KAAK,UAAU,gBAAiB,CAC1B,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,aAAa,IAAI,cAAc,EAAE,SAA3E,EACM,gBAAkB,QACd,EAAE,KAAK,UAAU,eAAe,EAAE,MAAM,wBAAwB,IAAI,iBAAmB,MAAQ,QAAQ,EACvG,EAAE,KAAK,UAAU,eAAe,EAAE,OAAO,wBAAwB,IAAI,iBAAmB,MAAQ,QAAQ,EAC5G,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,aAAa,IAAI,cAAc,EAAE,IAAI,KAAK,EACpF,MACJ,CACM,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,aAAa,IAAI,cAAc,EAAE,SAA3E,EACM,gBAAkB,QACd,EAAE,KAAK,UAAU,cAAc,EAAE,MAAM,wBAAwB,IAAI,iBAAmB,MAAQ,QAAQ,EACtG,EAAE,KAAK,UAAU,cAAc,EAAE,OAAO,wBAAwB,IAAI,iBAAmB,MAAQ,QAAQ,EAC3G,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,aAAa,IAAI,cAAc,EAAE,IAAI,KAAK,CACxF,CAEA,uBAAwB,CACpB,EAAE,KAAK,UAAU,YAAY,EAAE,KAAK,+GAA+G,EAAE,OAAO,CAChK,CAEA,wBAAyB,CACrB,EAAE,4BAA4B,EAAE,OAAO,EACvC,EAAE,KAAK,UAAU,gBAAgB,EAAE,IAAI,uBAAuB,EAC9D,EAAE,KAAK,UAAU,cAAc,EAAE,IAAI,2BAA2B,CACpE,CAEA,mBAAoB,CAChB,EAAE,KAAK,UAAU,mBAAmB,EAAE,KAAK,CAC/C,CAEA,oBAAoB,YAAa,CAC7B,MAAM,UAAY,KAAK,UACvB,EAAE,KAAK,UAAU,gBAAgB,EAAE,GAAG,wBAAyB,UAAY,CACnE,YAAc,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,GAC/B,EAAE,4BAA4B,EAAE,SAC7B,UAAU,gBACV,EAAE,UAAU,eAAe,EAAE,OAAO,mFAAwF,WAAW,eAAoB,EAE3J,EAAE,UAAU,cAAc,EAAE,OAAO,mFAAwF,WAAW,eAAoB,GAGlK,EAAE,UAAU,cAAc,EAAE,KAAK,WAAY,EAAI,IAEjD,EAAE,4BAA4B,EAAE,OAAO,EACvC,EAAE,UAAU,cAAc,EAAE,KAAK,WAAY,EAAK,EAE1D,CAAC,EAED,EAAE,KAAK,UAAU,cAAc,EAAE,GAAG,4BAA6B,SAAU,MAAO,CAC9E,MAAM,IAAM,EAAE,UAAU,gBAAgB,EAAE,IAAI,EAC1C,YAAc,SAAS,GAAG,GAC1B,MAAM,eAAe,EAChB,EAAE,4BAA4B,EAAE,SAC7B,UAAU,gBACV,EAAE,UAAU,eAAe,EAAE,OAAO,mFAAwF,WAAW,eAAoB,EAE3J,EAAE,UAAU,cAAc,EAAE,OAAO,mFAAwF,WAAW,eAAoB,IAIlK,EAAE,4BAA4B,EAAE,OAAO,CAE/C,CAAC,CACL,CACJ,CAEA,MAAM,qBAAsB,CACxB,yBAAyB,SAAU,CAC/B,IAAI,MAAQ,KACX,EAAE,QAAQ,EAAE,GAAG,SAAU,4BAA8B,SAAS,KAAM,SAAU,EAAG,CAChF,MAAM,qBAAqB,QAAQ,CACvC,CAAC,EACG,MAAM,MAAM,UAAY,CACpB,MAAM,qBAAqB,QAAQ,CACvC,CAAC,CACT,CAEA,MAAM,EAAG,CACL,OAAO,IAAI,QAAQ,SAAU,EAAG,CAC5B,WAAW,EAAG,CAAC,CACnB,CAAC,CACL,CAEA,qBAAqB,SAAU,CAC3B,MAAM,cAAgB,SAEtB,KAAK,MAAM,SAAS,UAAU,mBAAmB,EAAE,KAAK,UAAY,CAChE,IAAI,kBAAoB,OAAO,SAAS,OAAO,QAAQ,oBAAqB,IAAI,EAC3E,oBACD,kBACgB,EAAE,cAAc,UAAU,YAAY,EAAE,KAAK,8EAA8E,EAAE,KAAK,MAAM,IAApJ,QACM,EAAE,cAAc,UAAU,YAAY,EAAE,KAAK,sDAAsD,EAAE,IAAI,EACzG,EAAE,cAAc,UAAU,YAAY,EAAE,KAAK,8EAA8E,EAAE,IAAI,GAE/I,cAAc,QAAQ,iBAAiB,iBAAiB,EACxD,cAAc,aAAa,EAC3B,cAAc,aAAa,CAC/B,CAAC,CACL,CAGA,MAAM,GAAI,QAAS,OAAQ,CACvB,OAAO,UAAa,CAChB,GAAI,OAAQ,OAAO,QAAQ,MAAM,KAAM,SAAS,EAAG,GAAG,MAAM,KAAM,SAAS,EAC3E,IAAI,OAAS,GAAG,MAAM,KAAM,SAAS,EACrC,OAAO,QAAQ,MAAM,KAAM,SAAS,EAAG,MAC3C,CACJ,CAEA,MAAM,QAAS,CACX,QAAQ,UAAY,KAAK,MAAM,QAAQ,UAAW,OAAO,EACzD,QAAQ,aAAe,KAAK,MAAM,QAAQ,aAAc,OAAO,EAC/D,OAAO,iBAAiB,WAAY,OAAO,CAC/C,CACJ,CAEA,MAAM,GAAI,CACN,aAAa,mBAAmB,KAAM,CAClC,GAAI,CACA,aAAM,EAAE,KAAK,CACT,IAAK,mCACL,KAAM,OACN,YAAa,kCACb,SAAU,OACV,KAAM,KAAK,UAAU,IAAI,CAC7B,CAAC,EAEM,EACX,OAAS,IAAK,CACV,eAAQ,IAAI,yBAA0B,GAAG,EAElC,EACX,CACJ,CAEA,aAAa,yBAAyB,UAAW,CAC7C,GAAI,CACA,OAAO,MAAM,EAAE,KAAK,CAChB,IAAK,mCAAmC,SAAS,GACjD,KAAM,MACN,YAAa,kCACb,SAAU,MACd,CAAC,CACL,MAAc,CACV,eAAQ,IAAI,qCAAqC,EAC1C,IACX,CACJ,CAEA,MAAM,YAAY,WAAa,CAAC,EAAG,CAC/B,GAAI,CACA,OAAO,MAAM,EAAE,KAAK,CAChB,IAAK,sCAAsC,UAAU,GACrD,KAAM,MACN,YAAa,kCACb,SAAU,MACd,CAAC,CACL,MAAc,CACV,eAAQ,IAAI,sCAAsC,EAC3C,IACX,CACJ,CAEA,MAAM,SAAU,CACZ,GAAI,CACA,OAAO,MAAM,EAAE,KAAK,CAChB,IAAK,sBACL,KAAM,MACN,YAAa,kCACb,SAAU,MACd,CAAC,CACL,MAAc,CACV,eAAQ,IAAI,gCAAgC,EACrC,IACX,CACJ,CAEA,MAAM,aAAc,CAChB,GAAI,CACA,OAAO,MAAM,EAAE,KAAK,CAChB,IAAK,+BACL,KAAM,MACN,YAAa,kCACb,SAAU,MACd,CAAC,CACL,MAAc,CACV,eAAQ,IAAI,oCAAoC,EACzC,IACX,CACJ,CACJ,CAEA,MAAM,SAAU,CACZ,YAAY,UAAW,CACnB,KAAK,IAAM,SACf,CAEA,oBAAqB,CACjB,KAAK,aAAe,EAAE,KAAK,IAAI,IAAI,EACnC,KAAK,eAAiB,KAAK,aAAa,KAAK,KAAK,IAAI,eAAe,EACjE,KAAK,eAAe,SAAW,IAE/B,KAAK,eAAiB,KAAK,aAAa,KAAK,wUAAwU,EAAE,MAAM,GAEjY,KAAK,gBAAkB,KAAK,aAAa,KAAK,KAAK,IAAI,OAAO,EAE1D,KAAK,IAAI,SACT,KAAK,iBAAmB,KAAK,aAAa,KAAK,KAAK,IAAI,QAAQ,GAEhE,KAAK,iBAAmB,KAAK,aAAa,KAAK,mBAAmB,EAC9D,KAAK,iBAAiB,SAAW,IACjC,KAAK,iBAAmB,EAAE,mBAAmB,IAIjD,KAAK,IAAI,MACT,KAAK,cAAgB,EAAE,KAAK,IAAI,KAAK,EAErC,KAAK,cAAgB,EAAE,iBAAiB,EAGxC,KAAK,IAAI,UACT,KAAK,gBAAkB,KAAK,aAAa,KAAK,KAAK,IAAI,OAAO,GAGlE,KAAK,oBAAsB,KAAK,aAAa,KAAK,+BAA+B,EAC7E,KAAK,IAAI,cACT,KAAK,oBAAsB,KAAK,aAAa,KAAK,KAAK,IAAI,WAAW,GAI1E,KAAK,cAAgB,KAAK,aAAa,KAAK,+BAA+B,EACvE,KAAK,IAAI,QACT,KAAK,cAAgB,KAAK,aAAa,KAAK,KAAK,IAAI,KAAK,GAG1D,KAAK,IAAI,MAAQ,KAAK,IAAI,KAAK,UAC/B,KAAK,oBAAsB,KAAK,IAAI,KAAK,SAE7C,KAAK,oBAAsB,KAAK,IAAI,qBAAuB,IAGvD,KAAK,aAAa,KAAK,2DAA2D,EAAE,OAAS,IAC7F,KAAK,eAAiB,KAAK,aAAa,KAAK,iFAAiF,EAC9H,KAAK,gBAAkB,KAAK,aAAa,KAAK,KAAK,IAAI,SAAW,6BAA6B,EAC/F,KAAK,cAAgB,EAAE,4BAA4B,GAIpD,KAAK,aAAa,KAAK,sBAAsB,EAAE,OAAS,IACzD,KAAK,cAAgB,KAAK,aAAa,KAAK,sBAAsB,EAExE,CAEA,uBAAwB,CACpB,KAAK,aAAe,EAAE,OAAO,GAAG,UAAU,UAAU,uBAAuB,EAAE,KAAK,OAAO,GAAG,UAAU,UAAU,IAAI,EACpH,KAAK,eAAiB,EAAE,OAAO,GAAG,UAAU,UAAU,uBAAuB,EAAE,KAAK,OAAO,GAAG,UAAU,UAAU,eAAe,EACjI,KAAK,gBAAkB,EAAE,OAAO,GAAG,UAAU,UAAU,uBAAuB,EAAE,KAAK,OAAO,GAAG,UAAU,UAAU,OAAO,EAC1H,KAAK,iBAAmB,EAAE,OAAO,GAAG,UAAU,UAAU,uBAAuB,EAAE,KAAK,OAAO,GAAG,UAAU,UAAU,QAAQ,EACxH,KAAK,IAAI,UACT,KAAK,gBAAkB,KAAK,aAAa,KAAK,KAAK,IAAI,OAAO,GAElE,KAAK,oBAAsB,KAAK,IAAI,qBAAuB,IAEvD,KAAK,IAAI,MACT,KAAK,cAAgB,EAAE,KAAK,IAAI,KAAK,EAErC,KAAK,cAAgB,EAAE,iBAAiB,EAG5C,KAAK,oBAAsB,KAAK,aAAa,KAAK,+BAA+B,EAC7E,KAAK,IAAI,cACT,KAAK,oBAAsB,EAAE,KAAK,IAAI,WAAW,EAEzD,CACJ,CAGA,MAAM,YAAa,CACf,YAAY,KAAM,QAAS,CACvB,KAAK,KAAO,KACZ,KAAK,QAAU,OACnB,CAEA,MAAM,IAAI,YAAa,CACnB,MAAM,gBAAkB,MAAM,IAAI,yBAAyB,KAAK,QAAQ,EAAE,EAE1E,GAAI,CAAC,gBAAiB,CAElB,OAAO,GAAG,SAAS,KAAK,QAAQ,EAAE,EAAI,CAClC,WAAY,GACZ,MAAO,GACP,KAAM,GACN,KAAM,GACN,WAAY,SAAS,IAAI,KAAK,EAAE,QAAQ,EAAI,GAAI,CACpD,EACA,aAAa,QAAQ,WAAY,KAAK,UAAU,OAAO,GAAG,QAAQ,CAAC,EAEnE,EAAE,kBAAkB,EAAE,YAAY,iBAAiB,EACnD,MACJ,CAEA,OAAO,GAAG,2BAA6B,CACnC,gBAAiB,KAAK,KAAK,SAC3B,UAAW,KAAK,QAAQ,GACxB,YAAa,KAAK,QAAQ,MAC1B,gBAAiB,gBAAgB,QAAQ,SACzC,UAAW,IACf,EAEA,KAAK,UAAY,IAAI,UAAU,KAAK,KAAK,SAAS,EAE7C,YAGD,KAAK,UAAU,sBAAsB,EAFrC,KAAK,UAAU,mBAAmB,EAMtC,KAAK,QAAQ,iBAAiB,IAAI,YAAY,EAAE,iBAAiB,KAAK,QAAQ,SAAU,KAAK,UAAU,YAAY,CAAC,EACpH,KAAK,QAAQ,oBAAoB,gBAAgB,OAAO,EAEvC,IAAI,SAAS,KAAK,UAAW,KAAK,QAAS,KAAK,KAAK,SAAS,UAAW,KAAK,IAAI,EAE1F,KAAK,EAEd,OAAO,GAAG,SAAS,KAAK,QAAQ,EAAE,EAAI,CAClC,WAAY,KAAK,mBAAmB,gBAAgB,QAAQ,QAAQ,EACpE,MAAO,KAAK,cAAc,gBAAgB,QAAQ,QAAQ,EAC1D,KAAM,KAAK,aAAa,gBAAgB,QAAQ,QAAQ,EACxD,KAAM,KAAK,aAAa,gBAAgB,QAAQ,QAAQ,EACxD,SAAU,gBAAgB,QAAQ,SAClC,WAAY,SAAS,IAAI,KAAK,EAAE,QAAQ,EAAI,GAAI,CACpD,EACA,aAAa,QAAQ,WAAY,KAAK,UAAU,OAAO,GAAG,QAAQ,CAAC,CACvE,CAEA,kBAAkB,QAAS,UAAW,CAClC,OAAK,QAAQ,SAAS,SAAS,EAAE,SAG1B,QAAQ,SAAS,SAAS,EAAE,SAAS,OAAS,SAF1C,EAGf,CAEA,MAAM,mBAAmB,SAAU,gBAAiB,QAAS,UAAW,KAAM,CAC1E,GAAI,CAAC,QAAQ,SAAS,SAAS,EAAE,OAAO,iBAAkB,CAEtD,GAAI,CAAC,KAAK,kBAAkB,QAAS,SAAS,EAC1C,OAAO,gBAGX,MAAM,eAAiB,QAAQ,SAAS,SAAS,EAAE,SAEnD,MAAO,CACH,OAAQ,CACJ,GAAG,gBAAgB,OACnB,KAAM,eAAe,YAAc,gBAAgB,OAAO,IAC9D,EACA,QAAS,CACL,GAAG,gBAAgB,QACnB,KAAM,eAAe,aAAe,gBAAgB,QAAQ,KAC5D,MAAO,eAAe,cAAgB,gBAAgB,QAAQ,KAClE,EACA,KAAM,CACF,GAAG,gBAAgB,KACnB,UAAW,CACP,IAAK,eAAe,kBAAoB,gBAAgB,KAAK,UAAU,IACvE,MAAO,eAAe,oBAAsB,gBAAgB,KAAK,UAAU,KAC/E,CACJ,EACA,MAAO,gBAAgB,KAC3B,CACJ,CACA,OAAI,OAAS,KACF,QAAQ,SAAS,SAAS,EAAE,OAAO,oBAAoB,SACxD,SAAS,QAAQ,SAAS,SAAS,EAAE,OAAO,gBAAgB,EAC5D,gBAGN,OAAS,MACF,QAAQ,SAAS,SAAS,EAAE,UAAU,oBAAoB,SAC3D,SAAS,QAAQ,SAAS,SAAS,EAAE,UAAU,gBAAgB,EAC/D,gBAGN,OAAS,MACF,QAAQ,SAAS,SAAS,EAAE,SAAS,oBAAoB,SAC1D,SAAS,QAAQ,SAAS,SAAS,EAAE,SAAS,gBAAgB,EAIjE,eACX,CAEA,eAAe,aAAc,SAAU,QAAS,YAAa,CACzD,GAAI,CAAC,QAAQ,OAAO,YAAa,CAC7B,QAAQ,IAAI,iCAAiC,EAC7C,MACJ,CAEA,MAAM,YAAc,aAAa,KAAKA,cAAe,OAAOA,aAAY,EAAE,IAAM,QAAQ,OAAO,WAAW,EAE1G,GAAI,CAAC,YAAa,CACd,QAAQ,IAAI,4BAA4B,EACxC,MACJ,CAEI,YAAY,QAAQ,CAAC,EAAE,OAAS,eAChC,EAAE,WAAW,EAAE,OAAO,gGAAgG,YAAY,EAAE,sBAAsB,YAAY,EAAE,IAAI,GAG5K,EAAE,WAAW,EAAE,KAAK,KAAK,UAAU,mBAAmB,EAAE,OAAO,sBAAsB,EACrF,EAAE,iCAAiC,EAAE,KAAK,YAAY,QAAQ,CAAC,EAAE,KAAK,EACtE,EAAE,+CAA+C,EAAE,IAAI,YAAY,EAAE,GAGzE,MAAM,QAAU,IAAI,QAAQ,SAAS,QAAU,OAAO,EAEhD,EAAE,WAAW,EAAE,KAAK,oCAAoC,EAAE,SAAhE,EACM,EAAE,WAAW,EAAE,KAAK,KAAK,UAAU,eAAe,EAAE,MAAM,kDAAoD,YAAY,YAAc,QAAQ,EAChJ,EAAE,WAAW,EAAE,KAAK,oCAAoC,EAAE,IAAI,YAAY,WAAW,EAC3F,QAAQ,wBAAwB,SAAS,QAAkB,cAAc,CAC7E,CAEA,MAAM,aAAc,CAChB,MAAM,UAAY,KAClB,KAAK,UAAY,IAAI,UAAU,KAAK,KAAK,SAAS,EAClD,KAAK,UAAU,mBAAmB,EAElC,IAAI,WAAa,IAAI,IACrB,MAAM,aAAe,EAAE,KAAK,UAAU,YAAY,EAClD,QAAS,KAAO,EAAG,KAAO,aAAa,OAAQ,OAAQ,CACnD,MAAM,UAAY,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,WAAW,EACpD,WACA,WAAW,IAAI,SAAS,CAEhC,CAEA,MAAM,SAAW,MAAM,IAAI,IAAI,EAAE,YAAY,MAAM,KAAK,UAAU,CAAC,EACnE,GAAI,CAAC,SAAU,CACX,QAAQ,IAAI,mCAAmC,EAC/C,MACJ,CAEA,MAAM,eAAiB,OAAO,GAAG,SAAS,KAAK,KAAK,SAAS,UAAU,EAAK,EAE5E,QAAS,KAAO,EAAG,KAAO,aAAa,OAAQ,OAAQ,CACnD,MAAM,UAAY,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,WAAW,EACxD,GAAI,EAAE,aAAa,SAAS,UACxB,SAGJ,MAAM,QAAU,SAAS,SAAS,SAAS,EAE3C,GAAI,KAAK,KAAK,sBAAuB,CACnC,IAAI,eACJ,MAAM,EAAE,QAAQ,OAAO,QAAQ,OAAO,KAAO,YAAY,QAAQ,MAAM,MAAO,SAAU,KAAM,CAC1F,eAAiB,IAAI,QAAQ,KAAK,GAAI,KAAK,SAAU,KAAK,MAAO,KAAK,mBAAmB,CAC7F,CAAC,CACH,CAEA,MAAM,UAAY,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,aAAa,EAAE,IAAI,EAC1D,eAAiB,MAAM,KAAK,mBAAmB,OAAO,GAAG,SAAU,eAAgB,QAAS,UAAW,IAAI,EAE7G,eAAiB,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,KAAK,UAAU,cAAc,EAC7E,GAAI,CAAC,WAAa,QAAQ,SAAS,SAAS,EAAE,OAAO,SAAW,WAAY,CACxE,EAAE,cAAc,EAAE,IAAI,eAAe,OAAO,WAAW,EACvD,EAAE,cAAc,EAAE,KAAK,eAAe,OAAO,WAAW,EACxD,EAAE,cAAc,EAAE,KAAK,WAAY,EAAI,EACvC,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,gCAAgC,EAAE,OAAO,EACpE,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,iBAAiB,EAAE,OAAO,EACrD,EAAE,aAAa,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,wBAAwB,EAAE,OAAO,EAEzG,QACJ,CACA,GAAI,QAAQ,SAAS,SAAS,EAAE,OAAO,SAAW,SAAU,CACxD,EAAE,cAAc,EAAE,IAAI,eAAe,OAAO,IAAI,EAChD,EAAE,cAAc,EAAE,KAAK,eAAe,OAAO,IAAI,EACjD,EAAE,cAAc,EAAE,KAAK,WAAY,EAAK,EACxC,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,yBAAyB,EAAE,KAAK,EAC3D,MAAM,QAAU,IAAI,QAAQ,eAAe,QAAQ,QAAU,OAAO,EAGpE,GAAI,OAAO,eAAe,KAAK,UAAU,UAAc,KAAe,eAAe,KAAK,UAAU,UAAW,CAC7G,MAAM,IAAM,QAAQ,sBAAsB,QAAQ,SAAS,SAAS,EAAG,eAAe,KAAK,UAAU,IAAqB,GAAsB,QAAQ,EAClJ,MAAQ,QAAQ,sBAAsB,QAAQ,SAAS,SAAS,EAAG,eAAe,KAAK,UAAU,MAAuB,GAAsB,QAAQ,EAEtJ,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,iBAAiB,EAAE,SAApD,EACM,EAAE,aAAa,IAAI,CAAC,EAAE,OAAO,6DAA+D,IAAM,aAAe,MAAQ,MAAM,EAC/H,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,iBAAiB,EAAE,IAAI,KAAK,CAC/D,CAEI,KAAK,KAAK,uBACZ,KAAK,eAAe,eAAe,aAAc,eAAgB,QAAQ,SAAS,SAAS,EAAG,aAAa,IAAI,CAAC,EAGlH,MAAM,aAAe,QAAQ,sBAAsB,QAAQ,SAAS,SAAS,EAAG,eAAe,QAAQ,MAAuB,GAAsB,QAAQ,EACtJ,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,gCAAgC,EAAE,SAAnE,EACM,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,KAAK,UAAU,eAAe,EAAE,MAAM,8CAAgD,aAAe,QAAQ,EACxI,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,gCAAgC,EAAE,IAAI,YAAY,EACnF,QAAQ,wBAAwB,eAAe,QAAS,UAAU,EAElE,MAAM,MAAQ,IAAI,MAClB,MAAM,IAAI,EAAE,aAAa,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,yBAAyB,EAAG,eAAe,MAAM,KAAM,eAAe,MAAM,KAAK,EACnK,MAAM,YAAY,eAAe,KAAK,CAC1C,EAEI,QAAQ,SAAS,SAAS,EAAE,OAAO,SAAW,UAAY,QAAQ,SAAS,SAAS,EAAE,OAAO,SAAW,aACxG,EAAE,cAAc,EAAE,IAAI,eAAe,OAAO,aAAa,EACzD,EAAE,cAAc,EAAE,KAAK,eAAe,OAAO,aAAa,EAC1D,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,gCAAgC,EAAE,OAAO,EACpE,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,iBAAiB,EAAE,OAAO,EACrD,EAAE,aAAa,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,wBAAwB,EAAE,OAAO,GAG7G,EAAE,aAAa,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,gBAAgB,EAAE,GAAG,gBAAiB,UAAY,CACxG,UAAU,YAAY,CAC1B,CAAC,CACD,CACJ,CAGA,MAAM,eAAgB,CAClB,GAAI,OAAO,GAAG,SAAS,KAAK,KAAK,SAAS,UAAU,EAAE,EAAE,MAAM,YAC1D,OAAO,GAAG,SAAS,KAAK,KAAK,SAAS,UAAU,GAAG,EAAE,MAAM,YAC3D,OAAO,GAAG,SAAS,KAAK,KAAK,SAAS,UAAU,EAAE,EAAE,MAAM,YAC1D,OAAO,GAAG,SAAS,KAAK,KAAK,SAAS,UAAU,EAAE,EAAE,MAAM,WAAY,CAClE,KAAK,KAAK,mBAAqB,OAAO,GAAG,kBAAoB,KAAK,KAAK,oBAEvE,OAAO,GAAG,SAAW,CAAC,GAG1B,IAAI,gBAAkB,CAAC,kBAAmB,gBAAiB,kBAAmB,cAAe,eAAgB,yCAAyC,EAClJ,KAAK,KAAK,UAAU,YAAc,KAAK,KAAK,UAAU,WAAW,QACjE,gBAAkB,CAAC,KAAK,KAAK,UAAU,WAAW,KAAK,GAG3D,IAAI,MAAQ,CAAC,EACb,QAAS,EAAI,EAAG,EAAI,gBAAgB,OAAQ,IACxC,GAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,OAAS,EAAG,CAClC,MAAQ,EAAE,gBAAgB,CAAC,CAAC,EAC5B,KACJ,CAGJ,KAAK,wBAAwB,KAAK,CACtC,CACJ,CAEA,MAAM,kBAAkB,KAAM,CAK1B,GAJI,CAAC,OAAO,GAAG,KAAK,oBAIhB,CAAC,KAAK,MAAM,OACZ,OAGJ,MAAM,WAAa,OAAO,SAAS,SAAS,SAAS,MAAM,EACrD,kBAAoB,OAAO,GAAG,SAAS,KAAK,KAAK,SAAS,UAAU,EAAE,EAC5E,GACI,CAAC,kBAAkB,KAAK,MAAM,WAC7B,YAAc,kBAAkB,KAAK,MAAM,aAAe,IAC1D,CAAC,YAAc,kBAAkB,KAAK,MAAM,gBAAkB,GAE/D,OAGJ,IAAI,mBAAqB,GACrB,iBAAmB,GACnB,SAAW,CAAC,EAEhB,UAAW,QAAQ,KAAK,MAAO,CAC3B,GAAI,OAAO,GAAG,SAAS,KAAK,UAAU,EAAG,CACrC,GAAI,OAAO,GAAG,SAAS,KAAK,UAAU,EAAE,UAAY,OAAO,GAAG,SAAS,KAAK,UAAU,EAAE,SAAS,KAAK,UAAU,GACxG,OAAO,GAAG,SAAS,KAAK,UAAU,EAAE,SAAS,KAAK,UAAU,EAAE,OAAO,SAAW,SAAU,CAC1F,mBAAqB,GACrB,QACJ,CAEJ,iBAAmB,GACnB,QACJ,CAEA,SAAS,KAAK,UAAU,EAAI,SAAS,KAAK,UAAU,GAAK,CAAC,EAC1D,SAAS,KAAK,UAAU,EAAE,KAAK,KAAK,UAAU,CAClD,CAEA,MAAM,MAAQ,IAAI,MACZ,cAAgB,CAAE,GAAG,kBAAkB,KAAK,MAAO,GAAI,kBAAkB,IAAM,kBAAkB,IAAK,EAEtG,WAAa,IAAM,CACrB,OAAO,eAAe,QAAQ,qBAAsB,CAAE,EAAE,UAAU,EAAE,GAAG,UAAU,CAAE,EACnF,OAAO,GAAG,KAAK,mBAAqB,CAAE,EAAE,UAAU,EAAE,GAAG,UAAU,CACrE,EAEA,GAAI,oBAAsB,iBACtB,OAAO,MAAM,QAAQ,cAAe,UAAU,EAGlD,GAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,OACvB,OAGJ,MAAM,SAAW,MAAM,IAAI,IAAI,EAAE,YAAY,OAAO,KAAK,QAAQ,CAAC,EAClE,GAAI,CAAC,SAAU,CACX,QAAQ,IAAI,mCAAmC,EAC/C,MACJ,CAEA,UAAW,aAAa,OAAO,KAAK,QAAQ,EAAG,CAC3C,GAAI,EAAE,aAAa,SAAS,UAAW,CACnC,iBAAmB,GAEnB,OAAO,GAAG,SAAS,SAAS,EAAI,CAC5B,WAAY,GACZ,MAAO,GACP,KAAM,GACN,WAAY,SAAS,IAAI,KAAK,EAAE,QAAQ,EAAI,GAAI,CACpD,EACA,QACJ,CAEA,UAAW,aAAa,SAAS,SAAS,EAAG,CACzC,GAAI,SAAS,SAAS,SAAS,EAAE,SAAS,SAAS,GAAK,SAAS,SAAS,SAAS,EAAE,SAAS,SAAS,EAAE,OAAO,SAAW,SAAU,CACjI,mBAAqB,GACrB,QACJ,CACA,iBAAmB,EACvB,CAWA,GATA,OAAO,GAAG,SAAS,SAAS,EAAI,CAC5B,WAAY,KAAK,mBAAmB,SAAS,SAAS,SAAS,EAAE,QAAQ,EACzE,MAAO,KAAK,cAAc,SAAS,SAAS,SAAS,EAAE,QAAQ,EAC/D,KAAM,KAAK,aAAa,SAAS,SAAS,SAAS,EAAE,QAAQ,EAC7D,KAAM,KAAK,aAAa,SAAS,SAAS,SAAS,EAAE,QAAQ,EAC7D,SAAU,SAAS,SAAS,SAAS,EAAE,SACvC,WAAY,SAAS,IAAI,KAAK,EAAE,QAAQ,EAAI,GAAI,CACpD,EAEI,kBAAoB,mBAAoB,CACxC,MAAM,QAAQ,cAAe,UAAU,EACvC,KACJ,CACJ,CACA,aAAa,QAAQ,WAAY,KAAK,UAAU,OAAO,GAAG,QAAQ,CAAC,CACvE,CAEA,MAAM,aAAa,KAAM,CACrB,GAAI,CAAC,KAAK,MAAM,OACZ,OAIJ,MAAM,SAAW,CAAC,EAGlB,QAAS,QAAQ,KAAK,MAAO,CACzB,MAAM,QAAU,OAAO,GAAG,SAAS,KAAK,UAAU,EAElD,GAAI,CAAC,QAAS,SAEd,MAAM,QAAU,SAAS,WAAW,KAAK,UAAU,EAC7C,WAAa,QAAQ,KAAO,WAAa,SAC3C,UAAU,UAAU,GAAG,SAAW,WAEtC,SAAS,KAAK,UAAU,EAAI,CACxB,GAAI,SAAS,KAAK,UAAU,GAAK,CAAC,EAClC,CAAC,KAAK,UAAU,EAAG,OACvB,EACJ,CAGA,GAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,OAAQ,OAGnC,MAAM,YAAc,KAAK,MAAM,OAAO,eAAe,QAAQ,eAAe,GAAK,IAAI,GAAK,CAAC,EACrF,KAAO,CAAC,EACd,SAAW,CAAC,UAAW,OAAO,IAAK,OAAO,QAAQ,QAAQ,EACtD,SAAW,CAAC,UAAW,OAAO,IAAK,OAAO,QAAQ,OAAO,EAAG,CACxD,MAAM,WAAa,QAAQ,YAAc,WAAa,SAChD,YAAc,OAAO,GAAG,SAAS,QAAQ,UAAU,GAAG,gBAAgB,EACtE,GAAK,GAAG,YAAY,IAAI,IAAI,SAAS,IAAI,SAAS,GACxD,KAAK,EAAE,EAAI,CACP,QAAS,CAAC,CAAC,YAAY,EAAE,GAAG,QAC5B,SAAU,CACN,GACA,GAAG,YAAY,MAAM,KACzB,CACJ,CACJ,CAGJ,MAAM,WAAc,UACT,IAAM,CACT,MAAM,kBAAoB,KAAK,MAAM,OAAO,eAAe,QAAQ,eAAe,GAAK,IAAI,GAAK,CAAC,EACjG,OAAO,IAAI,eAAe,GAAI,EAAE,EAAE,oBAAoB,SAAU,iBAAiB,CACrF,EAIJ,UAAW,OAAO,OAAO,OAAO,IAAI,EAC5B,CAAC,IAAI,SAAS,WAAa,IAAI,SAAS,aAAe,IAAS,IAAI,SAGxE,MAAM,UAAU,IAAI,SAAU,WAAW,IAAI,QAAQ,CAAC,EAE1D,MAAM,UAAU,CACpB,CAGA,mBAAmB,SAAU,CACzB,OAAO,OAAO,OAAO,QAAQ,EAAE,MAAO,SAAY,QAAQ,OAAO,SAAW,QAAQ,CACxF,CAGA,cAAc,SAAU,CACpB,OAAO,OAAO,OAAO,QAAQ,EAAE,MAAO,SAAY,QAAQ,WAAa,QAAQ,UAAU,SAAW,QAAQ,CAChH,CAGA,aAAa,SAAU,CACnB,OAAO,OAAO,OAAO,QAAQ,EAAE,MAAO,SAAY,QAAQ,UAAY,QAAQ,SAAS,SAAW,QAAQ,CAC9G,CAGA,aAAa,SAAU,CACnB,OAAO,OAAO,OAAO,QAAQ,EAAE,KAAM,SAAY,QAAQ,UAAY,QAAQ,SAAS,SAAW,QAAQ,CAC7G,CAEA,MAAM,wBAAwB,MAAO,CACjC,GAAI,MAAM,SAAW,EAAG,CACpB,QAAQ,IAAI,oBAAoB,EAChC,MACJ,CAEA,MAAM,SAAW,CAAC,EACZ,kBAAoB,OAAO,GAAG,SAAS,KAAK,KAAK,SAAS,UAAU,EAAE,EACtE,mBAAqB,OAAO,GAAG,SAAS,KAAK,KAAK,SAAS,UAAU,GAAG,EACxE,kBAAoB,OAAO,GAAG,SAAS,KAAK,KAAK,SAAS,UAAU,EAAE,EACtE,kBAAoB,OAAO,GAAG,SAAS,KAAK,KAAK,SAAS,UAAU,EAAE,EAE5E,MAAM,QAAQ,IAAI,MAAM,KAAK,KAAK,EAAE,IAAI,MAAO,MAAS,CACpD,IAAI,UACJ,GAAI,EAAE,IAAI,EAAE,KAAK,YAAY,EAAG,CAC9B,IAAI,gBAAkB,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,YAAY,CAAC,EAC3D,GAAI,gBAAgB,UAClB,UAAY,gBAAgB,cACvB,CACL,IAAI,eAAiB,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,sBAAsB,EAAE,KAAK,SAAS,CAAC,EACpF,UAAY,eAAe,QAAQ,EACrC,CACF,SACM,EAAE,IAAI,EAAE,KAAK,YAAY,EAEzB,UAAY,EAAE,IAAI,EAAE,KAAK,YAAY,MAClC,CACH,IAAI,KAAO,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,EACxC,GAAI,CAAC,KACD,OAEJ,IAAI,OAAS,KAAK,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC,EAC/C,GAAI,CAAC,OACD,OAGJ,QAAQ,IAAI,mBAAoB,MAAM,EACtC,MAAM,KAAO,MAAM,EAAE,QAAQ,OAAO,SAAS,OAAS,IAAI,EAC1D,GAAI,CAAC,MAAQ,CAAC,KAAK,SAAW,CAAC,KAAK,QAAQ,GACxC,OAGJ,UAAY,OAAO,KAAK,QAAQ,EAAE,CACtC,CAGF,GAAI,OAAO,GAAG,SAAS,SAAS,EAAG,CAC/B,IAAI,WAAa,GACb,OAAO,GAAG,SAAS,SAAS,EAAE,YAAc,kBAAkB,MAAM,aACpE,KAAK,SAAS,KAAM,kBAAkB,MAAO,UAAU,EACvD,WAAa,GAEb,kBAAkB,OAAO,YAAc,kBAAkB,OAAO,WAAW,WAAa,KAAK,yBAAyB,KAAM,KAAK,KAAM,OAAO,GAAG,SAAS,SAAS,EAAG,kBAAmB,SAAS,GAGlM,OAAO,GAAG,SAAS,SAAS,EAAE,OAAS,mBAAmB,MAAM,aAChE,KAAK,SAAS,KAAM,mBAAmB,MAAO,KAAK,EACnD,WAAa,GACb,KAAK,yBAAyB,KAAM,KAAK,KAAM,OAAO,GAAG,SAAS,SAAS,EAAG,mBAAoB,SAAS,GAG3G,OAAO,GAAG,SAAS,SAAS,EAAE,MAAQ,kBAAkB,MAAM,aAC9D,KAAK,SAAS,KAAM,kBAAkB,MAAO,IAAI,EACjD,WAAa,GACb,KAAK,yBAAyB,KAAM,KAAK,KAAM,OAAO,GAAG,SAAS,SAAS,EAAG,kBAAmB,SAAS,GAI1G,OAAO,GAAG,SAAS,SAAS,EAAE,MAAQ,kBAAkB,MAAM,aAC9D,KAAK,SAAS,KAAM,kBAAkB,MAAO,IAAI,EACjD,WAAa,IAIjB,YAAc,KAAK,KAAK,UAAU,MAAQ,KAAK,KAAK,UAAU,KAAK,YAAc,EAAE,IAAI,EAAE,KAAK,KAAK,KAAK,UAAU,KAAK,UAAU,EAAE,KAAK,EAExI,MACJ,CAEA,SAAS,SAAS,EAAI,IAC1B,CAAC,CAAC,EAEF,MAAM,SAAW,MAAM,IAAI,IAAI,EAAE,YAAY,OAAO,KAAK,QAAQ,CAAC,EAClE,GAAI,CAAC,SAAU,CACX,QAAQ,IAAI,mCAAmC,EAC/C,MACJ,CAEA,SAAW,CAAC,UAAW,IAAI,IAAK,OAAO,QAAQ,QAAQ,EAAG,CACtD,GAAI,EAAE,aAAa,SAAS,UAAW,CAEnC,OAAO,GAAG,SAAS,SAAS,EAAI,CAC5B,WAAY,GACZ,MAAO,GACP,KAAM,GACN,KAAM,GACN,WAAY,SAAS,IAAI,KAAK,EAAE,QAAQ,EAAI,GAAI,CACpD,EACA,QACJ,CAEA,MAAM,WAAa,KAAK,mBAAmB,SAAS,SAAS,SAAS,EAAE,QAAQ,EAC1E,MAAQ,KAAK,cAAc,SAAS,SAAS,SAAS,EAAE,QAAQ,EAChE,KAAO,KAAK,aAAa,SAAS,SAAS,SAAS,EAAE,QAAQ,EAC9D,KAAO,KAAK,aAAa,SAAS,SAAS,SAAS,EAAE,QAAQ,EAEpE,IAAI,WAAa,GACb,YAAc,kBAAkB,MAAM,aACtC,KAAK,SAAS,KAAM,kBAAkB,MAAO,UAAU,EACvD,WAAa,GAEb,kBAAkB,OAAO,YAAc,kBAAkB,OAAO,WAAW,WAAa,KAAK,yBAAyB,KAAM,KAAK,KAAM,SAAS,SAAS,SAAS,EAAG,kBAAmB,SAAS,GAGjM,OAAS,mBAAmB,MAAM,aAClC,KAAK,SAAS,KAAM,mBAAmB,MAAO,KAAK,EACnD,WAAa,GACf,KAAK,yBAAyB,KAAM,KAAK,KAAM,SAAS,SAAS,SAAS,EAAG,mBAAoB,SAAS,GAGxG,MAAQ,kBAAkB,MAAM,aAChC,KAAK,SAAS,KAAM,kBAAkB,MAAO,IAAI,EACjD,WAAa,GACf,KAAK,yBAAyB,KAAM,KAAK,KAAM,SAAS,SAAS,SAAS,EAAG,kBAAmB,SAAS,GAGvG,MAAQ,kBAAkB,MAAM,aAChC,KAAK,SAAS,KAAM,kBAAkB,MAAO,IAAI,EACjD,WAAa,IAIjB,YAAc,KAAK,KAAK,UAAU,MAAQ,KAAK,KAAK,UAAU,KAAK,YAAc,EAAE,IAAI,EAAE,KAAK,KAAK,KAAK,UAAU,KAAK,UAAU,EAAE,KAAK,EAExI,OAAO,GAAG,SAAS,SAAS,EAAI,CAC5B,WACA,MACA,KACA,KACA,SAAU,SAAS,SAAS,SAAS,EAAE,SACvC,WAAY,SAAS,IAAI,KAAK,EAAE,QAAQ,EAAI,GAAI,CACpD,CACJ,CACA,aAAa,QAAQ,WAAY,KAAK,UAAU,OAAO,GAAG,QAAQ,CAAC,CACvE,CAEA,oBAAoB,QAAS,CACzB,OAAI,QAAQ,aAAqB,YAC7B,QAAQ,YAAoB,WAC5B,QAAQ,YAAoB,WACzB,QACX,CAEA,yBAAyB,KAAM,KAAM,QAAS,gBAAiB,UAAW,CACtE,IAAI,uBAAyB,2BACzB,KAAK,UAAU,YAAc,KAAK,UAAU,WAAW,OACvD,uBAAyB,KAAK,UAAU,WAAW,MAGvD,IAAI,kCAAoC,+HACpC,KAAK,UAAU,YAAc,KAAK,UAAU,WAAW,kBACvD,kCAAoC,KAAK,UAAU,WAAW,iBAGlE,MAAM,YAAc,EAAE,IAAI,EAAE,KAAK,sBAAsB,EACvD,QAAS,aAAa,QAAQ,SAAU,CACpC,MAAM,QAAU,QAAQ,SAAS,SAAS,EACpC,WAAa,KAAK,oBAAoB,OAAO,EAC7C,OAAS,QAAQ,UAAU,EAGjC,GAAI,CAAC,QAAU,QAAQ,SAAW,SAAU,SAE5C,IAAI,eAAiB,EAAE,IAAI,EAAE,KAAK,iCAAiC,EACnE,MAAM,WAAa,OAAO,GAAG,SAAS,OAAO,gBAAgB,GAAG,OAAO,MAAQ,gBAAgB,OAAO,KAClG,EAAE,cAAc,EAAE,SAAW,IAC/B,eAAiB,EAAE,IAAI,EAAE,KAAK,iBAAiB,GAEjD,EAAE,cAAc,EAAE,IAAI,UAAU,EAChC,EAAE,cAAc,EAAE,KAAK,UAAU,EACjC,EAAE,cAAc,EAAE,KAAK,WAAY,EAAK,EACxC,EAAE,IAAI,EAAE,KAAK,yBAAyB,EAAE,KAAK,EAEzC,aAAe,cACf,EAAE,cAAc,EAAE,MAAM,SAAU,MAAO,CACvC,OAAO,GAAG,2BAA6B,CACrC,gBAAiB,KAAK,SACtB,UACA,YAAa,QAAQ,SAAS,SAAS,EAAE,YACzC,gBAAiB,QAAQ,SACzB,SACF,EACA,MAAM,eAAe,EACrB,iBAAiB,gBAAgB,CAAE,CAAC,EACtC,EAAE,cAAc,EAAE,KAAK,WAAY,EAAK,GAIxC,aAAe,aACf,OAAO,GAAG,2BAA6B,CACnC,gBAAiB,KAAK,SACtB,UAAW,SAAS,GACpB,YAAa,SAAS,MACtB,gBAAiB,QAAQ,SACzB,SACJ,GAIJ,MAAM,QAAU,IAAI,QAAQ,gBAAgB,QAAQ,QAAU,OAAO,EACrE,IAAI,UAAY,OAAO,GAAG,SAAS,QAAQ,SAAS,SAAS,EAAE,OAAO,gBAAgB,EAAI,OAAO,GAAG,SAAS,QAAQ,SAAS,SAAS,EAAE,OAAO,gBAAgB,EAAE,KAAK,UAAU,MAAQ,gBAAgB,KAAK,UAAU,MACpN,QAAU,OAAO,GAAG,SAAS,QAAQ,SAAS,SAAS,EAAE,OAAO,gBAAgB,EAAI,OAAO,GAAG,SAAS,QAAQ,SAAS,SAAS,EAAE,OAAO,gBAAgB,EAAE,KAAK,UAAU,IAAM,gBAAgB,KAAK,UAAU,IAChN,cAAgB,OAAO,GAAG,SAAS,QAAQ,SAAS,SAAS,EAAE,OAAO,gBAAgB,EAAI,OAAO,GAAG,SAAS,QAAQ,SAAS,SAAS,EAAE,OAAO,gBAAgB,EAAE,KAAK,UAAU,UAAY,gBAAgB,KAAK,UAAU,UAE5N,KAAK,uBAAyB,QAAQ,SAAS,SAAS,EAAE,OAAO,aACjE,EAAE,WAAW,EAAE,OAAO,gGAAgG,QAAQ,SAAS,SAAS,EAAE,OAAO,WAAW,sBAAsB,QAAQ,SAAS,SAAS,EAAE,OAAO,WAAW,IAAI,GAG5O,OAAO,cAAkB,KAAe,iBACxC,QAAU,QAAQ,sBAAsB,QAAQ,SAAS,SAAS,EAAG,QAAyB,GAAqB,QAAQ,EAC3H,UAAY,QAAQ,sBAAsB,QAAQ,SAAS,SAAS,EAAG,UAA4B,GAAqB,QAAQ,EAE1H,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,SAA7C,EACM,EAAE,WAAW,EAAE,OAAO,6DAA+D,QAAU,aAAe,UAAY,MAAM,EAChI,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,IAAI,SAAS,EAalE,CACJ,CAEA,SAAS,SAAU,SAAU,YAAa,CAElC,EAAE,QAAQ,EAAE,KAAK,+DAA+D,EAAE,OAAS,IAC3F,SAAW,EAAE,QAAQ,EAAE,KAAK,+DAA+D,GAG7E,EAAE,QAAQ,EAAE,KAAK,YAAY,IAE7C,SAAW,EAAE,QAAQ,EAAE,KAAK,sBAAsB,GAIhD,EAAE,QAAQ,EAAE,IAAI,UAAU,IAAM,YAChC,EAAE,QAAQ,EAAE,IAAI,CACZ,SAAY,UAChB,CAAC,EAGL,MAAM,MAAQ,IAAI,MAClB,MAAM,IAAI,SAAU,SAAS,KAAM,SAAS,MAAO,WAAW,EAC9D,MAAM,YAAY,SAAU,WAAW,CAC3C,CACJ,CAEA,EAAE,QAAQ,EAAE,MAAM,gBAAkB,CAChC,MAAM,IAAM,IAAI,IACV,MAAQ,IAAI,SAOlB,GALA,iBAAiB,gBAAgB,EAGjC,MAAM,aAAa,EAEf,CAAC,MAAM,cAAc,GAAK,CAAC,MAAM,iBAAiB,GAAK,CAAC,MAAM,aAAa,GACxE,CAAC,MAAM,YAAY,GAAK,CAAC,MAAM,WAAW,GAAK,CAAC,MAAM,WAAW,EACpE,OAGJ,MAAM,KAAO,MAAM,IAAI,QAAQ,EAG/B,GAAI,CAAC,OAAO,GAAG,UAAa,KAAK,oBAAsB,OAAO,GAAG,mBAAqB,KAAK,mBAAqB,CAC5G,KAAM,CAAE,QAAS,EAAI,MAAM,IAAI,YAAY,EAE3C,OAAO,GAAG,SAAW,SACrB,OAAO,GAAG,mBAAqB,KAAK,oBAAsB,SAAS,IAAI,KAAK,EAAE,QAAQ,EAAI,GAAI,EAC9F,aAAa,QAAQ,WAAY,KAAK,UAAU,OAAO,GAAG,QAAQ,CAAC,EACnE,aAAa,QAAQ,qBAAsB,KAAK,UAAU,OAAO,GAAG,kBAAkB,CAAC,CAC3F,CAEA,GAAI,MAAM,cAAc,EAAG,CACvB,IAAI,QAAU,CAAC,EAEf,EAAE,QAAQ,OAAO,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,EAAE,OAAO,KAAK,EAAG,SAAU,KAAM,CACxE,QAAU,IAAI,QAAQ,KAAK,GAAI,KAAK,SAAU,KAAK,MAAO,KAAK,mBAAmB,CACtF,CAAC,EAAE,KAAK,UAAY,CAChB,IAAI,aAAa,KAAM,OAAO,EAAE,IAAoB,EAAK,CAC7D,CAAC,EAAE,KAAK,UAAY,CAChB,QAAQ,IAAI,6CAA6C,CAC7D,CAAC,CACL,EAEI,MAAM,iBAAiB,GAAK,MAAM,WAAW,GAAK,MAAM,aAAa,GAAK,MAAM,YAAY,KAC5F,MAAM,cAAc,IAAI,EACxB,IAAI,aAAa,IAAI,EAAE,cAAc,GAMzC,SAAS,0BAA0B,QAAU,EAAG,gBAAkB,GAAO,CACrE,MAAM,cAAgB,KAAK,MAAM,OAAO,eAAe,QAAQ,cAAc,GAAK,IAAI,GAAK,CAAC,EACtF,EAAI,KAAK,SAAS,UAAU,GAC9B,cAAc,SAAS,CAAC,GAE5B,WAAW,IAAM,CACb,EAAE,QAAQ,OAAO,SAAS,OAAS,QAAS,SAAU,KAAM,CACxD,iBAAmB,IAAI,aAAa,IAAI,EAAE,aAAa,IAAI,EAC3D,IAAI,aAAa,IAAI,EAAE,kBAAkB,IAAI,CACjD,CAAC,EAAE,KAAK,UAAY,CAChB,QAAQ,IAAI,6CAA6C,CAC7D,CAAC,CACL,EAAG,OAAO,CACd,CAGA,IAAI,UAAY,EAAE,KAAK,UAAU,IAAI,EAAE,KAAK,KAAK,UAAU,eAAe,EACtE,UAAU,KAAK,SAAS,IAAM,WAAU,UAAY,UAAU,OAAO,GACzE,UAAU,MAAM,IAAM,0BAA0B,GAAI,CAAC,EACrD,EAAE,iBAAiB,EAAE,MAAM,IAAM,0BAA0B,GAAG,CAAC,EAC3D,MAAM,WAAW,GACjB,0BAA0B,EAAG,EAAI,CAEzC,CAAC,CACL,EAKK,OAAO,OAAW,KAAiB,WAAW,OAAO,GAAG,MAAM,EAAI,IACnE,WAAW,mEAAoE,UAAY,CACvF,UAAY,OAAO,WAAW,EAAI,EAClC,kBAAkB,SAAS,CAC/B,CAAC,EAED,kBAAkB,MAAM,CAGhC,GAAG",
  "names": ["style", "sellingPlan"]
}
