{
  "version": 3,
  "sources": ["/cdn/shop/t/37/assets/theme.js?view=ajax_variant_quantity"],
  "sourcesContent": ["(function ($) {\n    var $body = $('body'),\n        $doc = $(document),\n        $html = $('html'),\n        $win = $(window);\n\n    $doc.ready(() => {\n        $doc.ajaxStart(() => {\n            halo.isAjaxLoading = true;\n        });\n\n        $doc.ajaxStop(() => {\n            halo.isAjaxLoading = false;\n        });\n\n        halo.ready();\n    });\n\n    window.onload = function() { \n        halo.init();\n    }\n\n    var halo = {\n        haloTimeout: null,\n        isAjaxLoading: false,\n\n        ready: function (){\n            this.loaderScript();\n            this.loaderProductBlock();\n            \n            if (navigator.userAgent.match(/OS X.*Safari/) && ! navigator.userAgent.match(/Chrome/)) {\n                document.body.classList.add('safari')\n            } else {\n                document.body.classList.add('chrome')\n            }\n\n            const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n            if (isIOS) document.body.classList.add('iOS')\n\n            if($body.hasClass('template-product')) {\n                this.loaderRecommendationsBlock();\n                this.scrollToReview();\n            }\n\n            if($('[data-product-tab-block]').length) {\n                this.clickedActiveProductTabs();\n            }\n\n            if ($body.hasClass('product-card-layout-07')) {\n                this.calculateTranslateYHeight()\n            }\n            \n            window.sharedFunctions = {\n                setLocalStorageProductForWishlist: this.setLocalStorageProductForWishlist,\n                checkNeedToConvertCurrency: this.checkNeedToConvertCurrency,\n                productBlockSilder: this.productBlockSilder,    \n                productBlockScroller: this.productBlockScroller,\n                calculateTranslateYHeight: this.calculateTranslateYHeight,\n            }\n        },\n        \n        init: function () {\n            this.initMultiTab();\n            this.initMultiTabMobile();\n            this.productBlockInfiniteScroll();\n            this.initGlobalCheckbox();\n            this.initColorSwatch();\n            this.initAddToCart();\n            this.initQuickShop();\n            this.initQuickCart();\n            this.initNotifyInStock();\n            this.initCompareProduct();\n            this.initWishlist();\n            this.initAskAnExpert();\n            this.initHeader();\n            this.headerLanguageCurrency();\n            this.headerMasonry();\n            this.initLiveChat();\n            this.headerSidebarSearch();\n            this.headerStickySearchForm();\n            this.initCountdown();\n            this.collectionCountdown();\n            this.handleScrollDown();\n            this.initVideoPopup();\n            this.swapHoverVideoProductCard();\n            this.initDynamicBrowserTabTitle();\n            this.initWarningPopup();\n            this.clickIconScrollSection();\n            this.specialBanner();\n            this.formMessage();\n\n            if ($('.lookbook-carousel').length) {\n                this.lookbookCarousel();\n            }\n\n            // Init Quick View \n            if (window.quick_view.show || window.quick_view.show_mb) {\n                this.initQuickView();\n            }\n\n            // Init Mobile Menu \n            if (window.innerWidth < 1025) {\n                this.menuSidebarMobile();\n                this.menuSidebarMobileToggle();\n            }\n\n            // Check Lazyload Done\n            const loadingImages = document.querySelectorAll('.media--loading-effect img')\n            const productGrid = document.getElementById('main-collection-product-grid')\n\n            if (loadingImages.length > 0 || productGrid) {\n                this.initLazyloadObserver(loadingImages, productGrid);\n            }\n\n            if($body.hasClass('show_effect_close')) {\n                this.backgroundOverlayHoverEffect();\n                this.backgroundOverlayHoverEffect1();\n            }\n\n            if (window.innerWidth > 1024) {\n                this.productMenuSlider();\n            }\n\n            if($body.hasClass('template-cart')) {\n                this.updateGiftWrapper();\n            }\n            \n            if($body.hasClass('template-product')) {\n                this.initProductView($('.halo-productView'));\n                this.initProductBundle();\n                this.articleGallery();\n                this.toggleSidebarMobile(); \n                this.initCollapseSidebarBlock();    \n                this.initCategoryActive();\n                this.initProductReviewSection();\n                this.productCustomInformation();\n                this.iconZoomClickMobile();\n            }\n\n            if($body.hasClass('template-blog') || $body.hasClass('template-article')) {\n                this.initCollapseSidebarBlock();\n                this.initCategoryActive();\n                this.toggleSidebarMobile();\n                this.initBlogMasonry();\n                this.productBlockSilderSidebar();\n                this.productBlockSilderArticle();\n            }\n\n            if($body.hasClass('template-article')) {\n                this.articleGallery();\n            }\n\n            if($body.hasClass('template-collection') || $body.hasClass('template-search')) {\n                this.initCollapseSidebarBlock();\n                this.initCategoryActive();\n                this.toggleSidebarMobile();\n                this.productBlockSilderSidebar();\n                this.initInfiniteScrolling();\n                this.initQuickShopProductList();\n            }\n\n            if($body.hasClass('template-list-collections')) {\n                this.toggleSidebarMobile();\n                this.productBlockSilderSidebar();\n            }\n            if($body.hasClass('template-collection') && $('.collection-express-order').length) {\n                this.toggleVariantsForExpressOrder();\n                this.initExpressOrderAddToCart();\n            }\n            \n            halo.checkScrollLayoutForRecenlyViewed();\n\n            let checkMenuMobile;\n            window.innerWidth > 1024 ? checkMenuMobile = true : checkMenuMobile = false;\n\n            $win.on('resize', () => {\n                this.headerSidebarSearch();\n                this.specialBanner();\n                this.specialBannerSlider();\n                if (window.innerWidth > 1024) {\n                    document.body.classList.remove('menu_open')\n                } else if (checkMenuMobile) {\n                    checkMenuMobile = false;\n                    this.menuSidebarMobile()\n                    this.menuSidebarMobileToggle()\n                    this.initMultiTab()\n                    this.initMultiTabMobile()\n                }\n            });\n        },\n        \n        checkNeedToConvertCurrency: function () {\n            return (window.show_multiple_currencies && typeof Currency != 'undefined' && Currency.currentCurrency != shopCurrency) || window.show_auto_currency;\n        },\n\n        loaderScript: function() {\n            var load = function(){\n                var script = $('[data-loader-script]');\n\n                if (script.length > 0) {\n                    script.each((index, element) => {\n                        var $this = $(element),\n                            link = $this.data('loader-script'),\n                            top = element.getBoundingClientRect().top;\n\n                        if (!$this.hasClass('is-load')){\n                            if (top < window.innerHeight + 100) {\n                                halo.buildScript(link);\n                                $('[data-loader-script=\"' + link + '\"]').addClass('is-load');\n                            }\n                        }\n                    })\n                }\n            }\n            \n            load();\n            window.addEventListener('scroll', load);\n        },\n\n        buildScript: function(name) {\n            var loadScript = document.createElement(\"script\");\n            loadScript.src = name;\n            document.body.appendChild(loadScript);\n        },\n\n        buildStyleSheet: function(name, $this) {\n            if (name == '') return;\n            const loadStyleSheet = document.createElement(\"link\");\n            loadStyleSheet.rel = 'stylesheet';\n            loadStyleSheet.type = 'text/css';\n            loadStyleSheet.href = name;\n            $this.parentNode.insertBefore(loadStyleSheet, $this);\n        },\n\n        loaderProductBlock: function() {\n            var isAjaxLoading = false;\n\n            $doc.ajaxStart(() => {\n                isAjaxLoading = true;\n            });\n\n            $doc.ajaxStop(() => {\n                isAjaxLoading = false;\n            });\n\n            const handler = (entries, observer) => {\n                entries.forEach(entry => {\n                    if (entry.isIntersecting) {\n                        const $block = $(entry.target);\n                        if ($block.hasClass('ajax-loaded')) return;\n\n                        var url = $block.data('collection'),\n                            layout = $block.data('layout'),\n                            limit = $block.data('limit'),\n                            image_ratio = $block.data('image-ratio'),\n                            swipe = $block.data('swipe'),\n                            sectionId = $block.attr('sectionId');\n                            hasCountdown = $block.attr('hasCountdown');\n\n                        if(url != null && url != undefined) {\n                            $.ajax({\n                                type: 'get',\n                                url: window.routes.root + '/collections/' + url,\n                                cache: false,\n                                data: {\n                                    view: 'ajax_product_block',\n                                    constraint: 'limit=' + limit + '+layout=' + layout + '+sectionId=' + sectionId + '+imageRatio=' + image_ratio + '+swipe=' + swipe + '+hasCountdown=' + hasCountdown\n                                },\n                                beforeSend: function () {\n                                    $block.addClass('ajax-loaded');\n                                },\n                                success: function (data) {\n                                    if (url != '') {\n                                        const res = halo.handleResponse($(data), 0, limit);\n                                        if (layout == 'grid') {\n                                            $block.find('.products-grid').html(res);\n                                        } else if (layout == 'slider'){\n                                            $block.find('.products-carousel').html(res);\n                                        } else if (layout == 'scroll') {\n                                            $block.find('.products-flex').html(res);\n                                        }\n                                    }\n                                },\n                                complete: function () {\n                                    if (layout == 'slider') {\n                                        halo.productBlockSilder($block);\n                                    }\n\n                                    if (layout == 'scroll') {\n                                        const enableHover = $block.find('[data-enable-hover]').attr('data-enable-hover')\n                                        if (enableHover === 'true') {\n                                            halo.productBlockScroller($block);\n                                        }\n                                    }\n\n                                    if ($block.hasClass('special-banner__product') && layout == 'grid' && window.innerWidth < 1200) {\n                                        $block.find('.special-banner__products--grid').addClass('products-carousel');\n                                        halo.productBlockSilder($block);\n                                    }\n                                    \n                                    if(window.compare.show){\n                                        var $compareLink = $('[data-compare-link]');\n\n                                        halo.setLocalStorageProductForCompare($compareLink);\n                                    }\n\n                                    halo.swapHoverVideoProductCard();\n\n                                    if(window.wishlist.show){\n                                        halo.setLocalStorageProductForWishlist();\n                                    }\n\n                                    if (halo.checkNeedToConvertCurrency()) {\n                                        Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                                    };\n\n                                    if (window.review.show && $('.shopify-product-reviews-badge').length > 0 && window.SPR != null && typeof window.SPR.registerCallbacks === 'functions') {\n                                        return window.SPR.registerCallbacks(), window.SPR.initRatingHandler(), window.SPR.initDomEls(), window.SPR.loadProducts(), window.SPR.loadBadges();\n                                    }\n\n                                }\n                            });\n                        } else {\n                            $block.addClass('ajax-loaded');\n\n                            if (layout == 'slider') {\n                                halo.productBlockSilder($block);\n                            }\n\n                            if (halo.checkNeedToConvertCurrency()) {\n                                Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                            };\n                        }\n                    }\n                })\n            }\n\n            this.productBlock = document.querySelectorAll('[data-product-block]');\n\n            const config = {\n                threshold: 0.1,\n            }\n\n            this.observer = new IntersectionObserver(handler, config);\n            this.productBlock.forEach(block => {\n                this.observer.observe(block);\n            });\n        },\n\n        handleResponse($res, productToShow, limit) {\n            $res = $res.splice(productToShow, limit);\n            return $res\n        },\n\n        loaderRecommendationsBlock: function(){\n            halo.buildRecommendationBlock();\n        },\n\n        scrollToReview: function() {\n            var $scope = $('.productView-tab');\n\n            if($scope.length){\n                $doc.on('click', '.productView-details .halo-productReview', (event)  => {\n                    event.preventDefault();\n\n                    $('body,html').animate({\n                        scrollTop: $scope.offset().top \n                    }, 1000);\n                    var activeTab = $scope.find('[href=\"#tab-review\"]');\n                    var activeTabCustom = $scope.find('[href=\"#tab-customer-reviews\"]');\n                    var activeTabMb = $scope.find('[href=\"#tab-review-mobile\"]');\n                    var activeTabCustomMb = $scope.find('[href=\"#tab-customer-reviews-mobile\"]');\n                    if (!activeTab.hasClass('is-open') || !activeTabMb.hasClass('is-open') || !activeTabCustom.hasClass('is-open') || !activeTabCustomMb.hasClass('is-open')) {\n                        activeTab[0]?.click();\n                        activeTabMb[0]?.click();\n                        activeTabCustom[0]?.click();\n                        activeTabCustomMb[0]?.click();\n                    }\n                })\n            }\n        },\n\n        headerMasonry: function(){\n            $('.menu-dropdown__wrapper [data-masonry]').masonry({\n              columnWidth: '.grid-sizer',\n              itemSelector: '[data-gridItem]'\n            });\n        },\n\n        initLiveChat: function () {\n            var $item_globe = $('.live-wrapper-icon');\n            $item_globe.on('click', function (e) {\n                $(this).parent().toggleClass('live_help--active');          \n            });\n\n            $body.on('click', function (e) {\n                if(($('.live_help').hasClass('live_help--active')) && ($(event.target).closest('.live_help').length === 0)){\n                    e.preventDefault();\n                    $('.live_help').removeClass('live_help--active');\n                }\n            });\n        },\n\n        initHeader: function() {\n            const headerAll = document.querySelectorAll('[class*=\"section-header\"]')\n            if (headerAll) {\n                let index = headerAll.length + 20;\n                headerAll.forEach((element) => {\n                    if (element.classList.contains('section-header-mobile')) return;\n                    element.setAttribute('data-index', index);\n                    element.style.zIndex = index;\n                    index--\n                })\n\n                const headerBasicTransparent = document.querySelector('.header-basic--transparent')\n                if (headerBasicTransparent && document.body.classList.contains('template-index')) {\n                    const height = headerBasicTransparent.offsetHeight,\n                        navTransparent = document.querySelector('.header-navigation[class*=\"--transparent\"]')\n                    if (navTransparent) {\n                        navTransparent.style.top = `${height}px`\n                        navTransparent.classList.add('has-top')\n                    }\n                }\n            }\n        },\n\n        headerLanguageCurrency: function() {\n            if (!document.querySelector('.header-language_currency')) return;\n            const header = document.querySelectorAll('[class*=\"section-header-\"]')\n\n            document.addEventListener('click', (event) => {\n                const $target = event.target;\n                const $headerLanguageCurrency = $target.closest('.header-language_currency');\n                const languageCurrency = $headerLanguageCurrency?.querySelector('.top-language-currency');\n                const dropdownCurrency = $headerLanguageCurrency?.querySelector('.dropdown-currency');\n                const dropdownLanguage = $headerLanguageCurrency?.querySelector('.dropdown-language');\n\n                if ($target.matches('.header-language_currency') || $target.closest('.header-language_currency')) {\n                    if ($target.matches('.icon-languageCurrency') || $target.closest('.icon-languageCurrency')) {\n                        languageCurrency?.classList.toggle('show')\n                    }\n                    else if (($target.matches('.top-language-currency') || $target.closest('.top-language-currency')) && !document.querySelector('.icon-languageCurrency')) {\n                        languageCurrency?.classList.toggle('show')\n                    }\n\n                    if ($target.matches('.halo-top-currency') || $target.closest('.halo-top-currency')) {\n                        dropdownLanguage?.classList.remove('show')\n                        dropdownCurrency?.classList.toggle('show')\n                    }\n                    \n                    if ($target.matches('.halo-top-language') || $target.closest('.halo-top-language')) {\n                        dropdownCurrency?.classList.remove('show')\n                        dropdownLanguage?.classList.toggle('show')\n                    }\n\n                    if ($target.matches('.dropdown-menu .dropdown-item')) {\n                        dropdownCurrency?.classList.remove('show')\n                        dropdownLanguage?.classList.remove('show')\n                    }\n                }\n                else {\n                    header.forEach(element => {\n                        element.querySelector('.top-language-currency')?.classList.remove('show')\n                        element.querySelector('.dropdown-currency')?.classList.remove('show')\n                        element.querySelector('.dropdown-language')?.classList.remove('show')\n                    })\n                }\n            })\n        },\n\n        headerSidebarSearch: function() {\n            var headerSearchPC = $('.header-top .header__search .search_details'),\n                headerSearchMB = $('#search-form-mobile .halo-sidebar-wrapper .search_details'),\n                headerwraperSearchPC = $('.header-top .header__search'),\n                headerwraperSearchMB = $('#search-form-mobile .halo-sidebar-wrapper'),\n                searchDetails = $('.search_details').not('#bc-header .search_details'),\n                predictiveSearchPC =  $('.header-top .header__search predictive-search'),\n                predictiveSearchMB = $('#search-form-mobile .halo-sidebar-wrapper predictive-search');\n \n             if (predictiveSearchPC.length === 0) predictiveSearchPC =  $('.header-top .header__search .search_details');\n             if (predictiveSearchMB.length === 0) predictiveSearchMB =  $('#search-form-mobile .halo-sidebar-wrapper .search_details');\n            if (window.innerWidth < 1025) {\n                if($('.header').hasClass('header-01')){\n                    predictiveSearchPC.appendTo(headerwraperSearchMB);\n                }\n                searchDetails.attr('open','true');\n                $('[data-search-mobile]').on('click', (event) => {\n                    event.preventDefault();\n                    $('body').addClass('open_search_mobile');\n                });\n                $('[data-search-close-sidebar], .background-overlay').on('click', (event) => {\n                    event.preventDefault();\n                    $('body').removeClass('open_search_mobile');\n                });\n            }else{\n                if($('.header').hasClass('header-01')){\n                    predictiveSearchMB.appendTo(headerwraperSearchPC);\n                }\n                searchDetails.removeAttr('open');\n\n                $('.search-modal__close-button').on('click', (event) => {\n                    searchDetails.removeAttr('open');\n                    $('body').removeClass('open_search_menu');\n                });\n\n                // Click Search Icon On Header Nav And Sticky Menu\n                $('[data-search-menu]').on('click', (event) => {\n                    event.preventDefault();\n                    $('body').addClass('open_search_menu');\n                });\n            }\n        },\n\n        headerStickySearchForm: function() {\n            var iconSearchSlt = '[data-search-sticky-form]';\n            var iconSearchMenu = '[data-search-menu-sticky-form] .icon-search';\n            var iconSearchMenuCustom = '[data-search-menu-sticky-form] .icon-search-custom';\n\n            if ($(window).width() > 1025) {\n                $(document).off('click.toggleSearch', iconSearchSlt).on('click.toggleSearch', iconSearchSlt, function(event) {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    $('body').addClass('sticky-search-open');\n                    $('.search_details').not('#bc-header .search_details').attr('open','true');\n                });\n\n                $(document).off('click.hideSearch').on('click.hideSearch', function(event) {\n                    var formSearch = $('.search-modal__form'),\n                        quickSearch = $('.quickSearchResultsWrap');\n                    if ($('body').hasClass('sticky-search-open') && !formSearch.has(event.target).length && !quickSearch.has(event.target).length) {\n                        $('body').removeClass('sticky-search-open');\n                        $('[class*=\"section-header-\"]').removeClass('sticky-search-menu-open');\n                        $('.search_details').not('#bc-header .search_details').removeAttr('open');\n                    }\n                });\n\n                // Click Search Icon On Header Nav And Sticky Menu\n                $(document).off('click.toggleSearch', iconSearchMenu).on('click.toggleSearch', iconSearchMenu, function(event) {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    $(event.target).closest('[class*=\"section-header-\"]').addClass('sticky-search-menu-open');\n                    $(event.target).closest('.section-header-navigation').css('z-index', '101');\n                    $('.search_details').not('#bc-header .search_details').attr('open','true');\n                });\n\n                // Click Search Icon On Header Hamburger - Search Dropdown Style Layout Custom\n                $(document).off('click.toggleSearch', iconSearchMenuCustom).on('click.toggleSearch', iconSearchMenuCustom, function(event) {\n                    $(event.target).closest('[class*=\"section-header-\"]').addClass('sticky-search-menu-custom-open');\n                });\n\n                $(document).off('click.hideSearchSticky').on('click.hideSearchSticky', function(event) {\n                    var formSearch = $('.header-navigation .search-modal__form'),\n                        quickSearch = $('.header-navigation .quickSearchResultsWrap');\n                    if ($('[class*=\"section-header-\"]').hasClass('sticky-search-menu-open') && !formSearch.has(event.target).length && !quickSearch.has(event.target).length) {\n                        const header = $(iconSearchMenu).closest('.section-header-navigation');\n                        const index = header.data('index');\n\n                        $('[class*=\"section-header-\"]').removeClass('sticky-search-menu-open');\n                        \n                        header.css('z-index', index);\n                        $('.header-navigation .search_details').removeAttr('open');\n                        if(quickSearch.hasClass('is-show')) {\n                            quickSearch.removeClass('is-show').addClass('hidden')\n                        }\n                    }\n                    if (($(event.target).closest('.search-modal__content').length === 0)){\n                        $('body').removeClass('open_search_menu');\n                        $('[class*=\"section-header-\"]').removeClass('sticky-search-menu-custom-open');\n                    }\n                });\n            }\n        },\n\n        menuSidebarMobile: function() {\n            var buttonIconOpen = $('.mobileMenu-toggle'),\n                buttonClose = $('.halo-sidebar-close, .background-overlay');\n\n            buttonIconOpen.off('click.toggleCurrencyLanguage').on('click.toggleCurrencyLanguage', (event) =>{\n                event.preventDefault();\n                $body.addClass('menu_open');\n                    if(window.mobile_menu == 'default'){\n                        if(!$('#navigation-mobile .site-nav-mobile.nav .header__inline-menu').length){\n                            $('.header .header__inline-menu').appendTo('#navigation-mobile .site-nav-mobile.nav');\n                        }\n                    }\n                    if(!$('#navigation-mobile .site-nav-mobile.nav-account .free-shipping-text').length){\n                        $('.header-top--wrapper .header-top--right .free-shipping-text').appendTo('#navigation-mobile .site-nav-mobile.nav-account .wrapper-links');\n                    }\n                    if(!$('#navigation-mobile .site-nav-mobile.nav-account .customer-service-text').length){\n                        $('.header-top--wrapper .header-top--right .customer-service-text').appendTo('#navigation-mobile .site-nav-mobile.nav-account .wrapper-links');\n                    }\n                    if(!$('#navigation-mobile .site-nav-mobile.nav-account .header__location').length){\n                        $('.header-top--wrapper .header-top--right .header__location').appendTo('#navigation-mobile .site-nav-mobile.nav-account .wrapper-links');\n                    }\n                    if(!$('#navigation-mobile .top-language-currency').length){\n                        if($('.header').hasClass('header-03')){\n                            $('.header .header-bottom-right .top-language-currency').appendTo('#navigation-mobile .site-nav-mobile.nav-currency-language');\n                        }else if($('.header').hasClass('header-05')){\n                            $('.header .header-top--left .top-language-currency').appendTo('#navigation-mobile .site-nav-mobile.nav-currency-language');\n                        }else{\n                            $('.header .header-language_currency .top-language-currency').appendTo('#navigation-mobile .site-nav-mobile.nav-currency-language');\n                        }\n                    }\n                    halo.productMenuSlider();\n            });\n\n            buttonClose.off('click.toggleCloseCurrencyLanguage').on('click.toggleCloseCurrencyLanguage', () =>{\n                $body.removeClass('menu_open');\n                $('#navigation-mobile').off('transitionend.toggleCloseMenu').on('transitionend.toggleCloseMenu', () => {\n                    if (!$body.hasClass('menu_open')) {\n\n                        if(!$('.header .header__inline-menu').length){\n                            if($('.header').hasClass('header-03') || $('.header').hasClass('header-04') || $('.header').hasClass('header-07') || $('.header').hasClass('header-08')){\n                                $('#navigation-mobile .site-nav-mobile.nav .header__inline-menu').appendTo('.header .header-bottom--wrapper .header-bottom-left');\n                            }else{\n                                $('#navigation-mobile .site-nav-mobile.nav .header__inline-menu').appendTo('.header .header-bottom--wrapper');\n                            }\n                        }\n                        if(!$('.header-top--wrapper .header-top--right .free-shipping-text').length){\n                            if(!$('.header-04').hasClass('style_2')){\n                                $('#navigation-mobile .site-nav-mobile.nav-account .free-shipping-text').insertBefore('.header-top--wrapper .header-top--right .header__group');\n                            }\n                        }\n                        if(!$('.header-top--wrapper .header-top--right .header__location').length){\n                            $('#navigation-mobile .site-nav-mobile.nav-account .header__location').insertBefore('.header-top--wrapper .header-top--right .header__group');\n                        }\n                        if(!$('.header-top--wrapper .header-top--right .customer-service-text').length){\n                            if($('.header').hasClass('header-03')){\n                                $('#navigation-mobile .site-nav-mobile.nav-account .customer-service-text').insertBefore('.header-top--wrapper .header-top--right .header__group .header__icon--wishlist');\n                            }else{\n                                $('#navigation-mobile .site-nav-mobile.nav-account .customer-service-text').insertBefore('.header-top--wrapper .header-top--right .top-language-currency');\n                            }\n                        }\n                        if(!$('.header-language_currency .top-language-currency').length){\n                            if($('.header').hasClass('header-03')){\n                                $('#navigation-mobile .site-nav-mobile .top-language-currency').appendTo('.header .header-bottom--wrapper .header-bottom-right .header-language_currency');\n                            }else if($('.header').hasClass('header-04')){\n                                $('#navigation-mobile .site-nav-mobile .top-language-currency').appendTo('.header .header-bottom--wrapper .header-bottom-right .header-language_currency');\n                            }else if($('.header').hasClass('header-05')){\n                                $('#navigation-mobile .site-nav-mobile .top-language-currency').appendTo('.header .header-top--wrapper .header-top--left .header-language_currency');\n                            }else{\n                                $('#navigation-mobile .site-nav-mobile .top-language-currency').insertBefore('.header .header-language_currency .header__search');\n                            }\n                        }\n                    }\n                })\n                    \n            });\n\n            $doc.on('click', '.halo-sidebar-close', function (e) {\n                e.preventDefault();\n                e.stopPropagation();\n                $body.removeClass('menu_open');\n            });\n        },\n\n        menuSidebarMobileToggle: function() {\n            $body.on('click', '.site-nav-mobile .list-menu .menu_mobile_link', function (e) {\n                if(!e.currentTarget.classList.contains('list-menu__item--end')){\n                    e.preventDefault();\n                    e.stopPropagation();\n                    var $target = $(this);\n                    var $parent = $target.parent();\n                    var $menuDislosure1 = $target.parent().find('ul.list-menu--disclosure-1');\n\n                    $parent.removeClass('is-hidden').addClass('is-open').removeClass('d-none');\n                    $menuDislosure1.off('transitionend.toggleMenuLink1').on('transitionend.toggleMenuLink1', () => {\n                        if ($parent.hasClass('is-open') && !$parent.hasClass('is-hidden') && !$parent.hasClass('d-none')) {\n                            // $parent.addClass('d-none')\n                            $parent.siblings().removeClass('is-open').addClass('is-hidden').removeClass('d-none');\n                        }\n                    })\n\n                    // $target.parent().siblings().removeClass('is-open').addClass('is-hidden');\n                    // $target.parent().removeClass('is-hidden').addClass('is-open');\n                }\n            });\n\n            $body.on('click', '.site-nav-mobile .list-menu .menu_mobile_link_2', function (e) {\n                e.preventDefault();\n                e.stopPropagation();\n                var $target = $(this);\n                var $target = $(this);\n                var $parent = $target.parent().parent();\n                var $menuDislosure2 = $target.parent().find('ul.list-menu--disclosure-2');\n                var $parentToScroll = $target.parent().parent().parent().parent().parent().parent();\n\n                $parent.removeClass('is-hidden').addClass('is-open').removeClass('d-none');\n                $menuDislosure2.off('transitionend.toggleMenuLink2').on('transitionend.toggleMenuLink2', () => {\n                    if ($parent.hasClass('is-open') && !$parent.hasClass('is-hidden') && !$parent.hasClass('d-none')) {\n                        $parent.addClass('d-none')\n                        $parent.siblings().removeClass('is-open').addClass('is-hidden').removeClass('d-none');\n                        $parentToScroll.animate({\n                            scrollTop: 0\n                        }, 0);\n                    }\n                })\n\n                // if($('.header').hasClass('header-04') || $('.header').hasClass('header-01') || $('.header').hasClass('header-02')){\n                    // $target.parent().parent().siblings().removeClass('is-open').addClass('is-hidden');\n                    // $target.parent().parent().removeClass('is-hidden').addClass('is-open');\n                    // $target.parent().parent().parent().parent().parent().parent().animate({\n                    //     scrollTop: 0\n                    // }, 0);\n                // } else{\n                //     $target.parents('.site-nav').siblings().removeClass('is-open').addClass('is-hidden');\n                //     $target.parents('.site-nav').removeClass('is-hidden').addClass('is-open');\n                //     $target.parents('.menu-dropdown__wrapper').animate({\n                //         scrollTop: 0\n                //     }, 0);\n                // }\n\n                if($('.menu-dropdown').hasClass('megamenu_style_4') || $('.menu-dropdown').hasClass('megamenu_style_1')){\n                    $target.parents('.menu-dropdown').animate({\n                        scrollTop: 0\n                    }, 0);\n                }\n\n                $target.parents('.menu-dropdown').addClass('is-overflow');\n            });\n\n            $body.on('click', '.nav-title-mobile', function (e) {\n                e.preventDefault();\n                e.stopPropagation();\n                var $target = $(this),\n                    $parentLv1 = $target.parent().parent().parent().parent('.is-open'),\n                    $parentLv2 = $target.parent().parent().parent('.is-open'),\n                    $parentLv3 = $target.parent().parent('.is-open');\n\n                $parentLv1.siblings().removeClass('is-hidden');\n                $parentLv1.removeClass('is-open').removeClass('d-none');\n                $parentLv2.siblings().removeClass('is-hidden');\n                $parentLv2.removeClass('is-open').removeClass('d-none');\n                $parentLv3.siblings().removeClass('is-hidden');\n                $parentLv3.removeClass('is-open').removeClass('d-none');\n                $('.menu-dropdown').removeClass('is-overflow');\n            });\n\n            if(window.mobile_menu != 'default'){\n                $doc.on('click', '[data-mobile-menu-tab]', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    var tabItem = event.currentTarget.closest('li'),\n                        tabTarget = event.currentTarget.dataset.target;\n\n                    if(!tabItem.classList.contains('is-active')){\n\n                        document.querySelector('[data-navigation-tab-mobile]').querySelectorAll('li').forEach((element) =>{\n                            if(element != tabItem){\n                                element.classList.remove('is-active');\n                            } else {\n                                element.classList.add('is-active');\n\n                                document.querySelectorAll('[id^=\"MenuMobileListSection-\"]').forEach((tab) =>{\n                                    if(tab.getAttribute('id') == tabTarget) {\n                                        tab.classList.remove('is-hidden');\n                                        tab.classList.add('is-visible');\n                                    } else {\n                                        tab.classList.remove('is-visible');\n                                        tab.classList.add('is-hidden');\n                                    }\n                                });\n                            }\n                        });\n                    }\n                });\n            }\n        },\n\n        setCookie(cname, cvalue, exdays){\n            const d = new Date();\n            d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));\n            const expires = 'expires=' + d.toUTCString();\n            document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n        },\n\n        initMultiTab: function() {\n            let designMode;\n            document.body.matches('.shopify-design-mode') ? designMode = true : designMode = false;\n            \n            if($('[data-menu-tab]').length > 0){\n                $doc.on('click', '[data-menu-tab] li', (event) => {\n                    var active = $(event.currentTarget).data('load-page'),\n                        href= $(event.currentTarget).attr('href');\n\n                    $.cookie('page-url', active, {\n                        expires: 1,\n                        path: '/'\n                    });\n                });\n\n                var canonical = $('[canonical-shop-url]').attr('canonical-shop-url'),\n                    pageUrl = $.cookie('page-url'),\n                    menuTabItem,\n                    logoTabItem,\n                    menuItem;\n\n                if ((window.location.pathname.indexOf('/pages/') !== -1) && window.page_active && (window.page_active != pageUrl))  {\n                    this.setCookie('page-url', window.page_active, 1);\n                    pageUrl = window.page_active;\n                }\n                \n                if(pageUrl != null){\n                    menuTabItem = $(`[data-load-page=\"${pageUrl}\"]`);\n                    logoTabItem = $(`[data-load-logo-page=\"${pageUrl}\"]`);\n                    menuItem = $(`[data-load-menu-page=\"${pageUrl}\"]`);\n                } else{\n                    menuTabItem = $('[data-load-page].is-active');\n                    logoTabItem = $('[data-load-logo-page].first');\n                    menuItem = $('[data-load-menu-page].is-active');\n                }\n\n                var menuTab = menuTabItem.closest('[data-menu-tab]');\n              \n                menuTab.find('[data-load-page]').not(menuTabItem).removeClass('is-active');\n                logoTabItem.siblings().removeClass('is-active');\n                menuItem.siblings().removeClass('is-active');\n                if(pageUrl != '') {\n                  logoTabItem.addClass('is-active');\n                  menuTabItem.addClass('is-active');\n                  menuItem.addClass('is-active');\n                } else {\n                  $('[data-load-page]:nth-child(1)').addClass('is-active');\n                  $('[data-load-logo-page]:nth-child(1)').addClass('is-active');\n                  $('[data-load-menu-page]:nth-child(1)').addClass('is-active');\n                }\n\n                const header = menuTabItem.closest('.header');\n                if (header && window.innerWidth < 1025) {\n                    const logoMobile = $('.header-mobile .header__heading-link');\n                    const logDesktop = header.find('.header__heading-link.is-active');\n                    \n                    if (logDesktop.data('logo-mobile') == undefined) {\n                      logoMobile.find('img').addClass('logo-show');\n                      return;\n                    } else {\n                      logoMobile.html(`<img src=\"${logDesktop.data('logo-mobile')}\" alt=\"${logDesktop.data('logo-mobile-alt')}\" style=\"max-width: ${logoMobile.data('logo-width')}px; height: auto\"/>`);\n                      logoMobile.find('img').addClass('logo-show');\n                    }\n                }\n\n                var active = $('[data-menu-tab] li.is-active').data('load-page'),\n                    check = false,\n                    url = window.routes.root + `/search?type=product&q=${active}&view=ajax_mega_menu`;\n              \n                if($body.hasClass('template-index')){\n                    if ($win.width() < 1025) {\n                        if(window.mobile_menu == 'default'){\n                            window.addEventListener('load', () => {\n                                if (designMode) {\n                                    if (check == false) {\n                                        check = true;\n                                        halo.initMobileMenuDefault(url)\n                                    }\n                                }\n                                else {\n                                    document.body.addEventListener('click', () => {\n                                        if (check == false) {\n                                            check = true;\n                                            halo.initMobileMenuDefault(url)\n                                        }\n                                    }, false)\n                                }\n                            }, false)\n                        } else {\n                            window.addEventListener('load', () => {\n                                if (designMode) {\n                                    if (check == false) {\n                                        check = true;\n                                        halo.initMultiTabMobile()\n                                    }\n                                }\n                                else {\n                                    document.body.addEventListener('click', () => {\n                                        if (check == false) {\n                                            check = true;\n                                            halo.initMultiTabMobile()\n                                        }\n                                    }, false)\n                                }\n                            }, false)\n                        }\n                    }\n                } else {\n                    if ($win.width() < 1025) {\n                        if(window.mobile_menu == 'default'){\n                            window.addEventListener('load', () => {\n                                if (designMode) {\n                                    if (check == false) {\n                                        check = true;\n                                        halo.initMobileMenuDefault(url)\n                                    }\n                                }\n                                else {\n                                    document.body.addEventListener('click', () => {\n                                        if (check == false) {\n                                            check = true;\n                                            halo.initMobileMenuDefault(url)\n                                        }\n                                    }, false)\n                                }\n                             }, false)\n                        } else {\n                            window.addEventListener('load', () => {\n                                if (designMode) {\n                                    if (check == false) {\n                                        check = true;\n                                        halo.initMultiTabMobile()\n                                    }\n                                }\n                                else {\n                                    document.body.addEventListener('click', () => {\n                                        if (check == false) {\n                                            check = true;\n                                            halo.initMultiTabMobile()\n                                        }\n                                    }, false)\n                                }\n                            }, false)\n                        }\n                    }\n                }\n            } else {\n                var check = false,\n                    url = window.routes.root + '/search?view=ajax_mega_menu';\n\n                if ($win.width() < 1025) {\n                    if (window.mobile_menu == \"default\") {\n                        if (designMode) {\n                            if (check == false) {\n                                check = true;\n                                halo.initMobileMenuDefault(url)\n                            }\n                        }\n                        else {\n                            document.body.addEventListener(\"click\",() => {\n                                if (check == false) {\n                                    check = true;\n                                    halo.initMobileMenuDefault(url)\n                                }\n                            }, false)\n                        }\n                    } else {\n                        window.addEventListener(\"load\",() => {\n                            if (designMode) {\n                                if (check == false) {\n                                    check = true;\n                                    halo.initMultiTabMobile()\n                                }\n                            }\n                            else {\n                                document.body.addEventListener(\"click\",() => {\n                                    if (check == false) {\n                                        check = true;\n                                        halo.initMultiTabMobile()\n                                    }\n                                }, false)\n                            }\n                        }, false)\n                    }\n                }\n            }\n        },\n\n        initMobileMenuDefault: function(url) {\n            const menuMobile = $('[data-navigation-mobile]');\n            const nav = $('#HeaderNavigation [data-navigation]');\n            const style = nav.attr('style') != undefined ? nav.attr('style') : nav.closest('#HeaderNavigation').attr('style');\n            menuMobile.append(`<nav class=\"header__inline-menu\" data-navigation role=\"navigation\" style=\"${style != undefined ? style : ''}\">${nav.html() != undefined ? nav.html() : ''}</nav>`);\n\n            const topLanCur = $('.top-language-currency');\n            const lanCurMobile = $('#navigation-mobile .nav-currency-language');\n            if (lanCurMobile.text().trim() == '' && topLanCur.length > 0) lanCurMobile.append(`<div class=\"top-language-currency\">${topLanCur.html()}</div>`)\n        },\n\n        initMultiTabMobile: function() {\n            if ($win.width() < 1025) {\n                if(window.mobile_menu == 'custom'){\n                    var chk = false,\n                        menuElement = $('[data-section-type=\"menu\"]'),\n                        menuMobile = $('[data-navigation-mobile]'),\n                        menuTabMobile = $('[data-navigation-tab-mobile]');\n\n                        document.body.addEventListener('click', () => {\n                            if (chk == false) {\n                                chk = true;\n                                const content = document.createElement('div');\n                                const tab = document.createElement('ul');\n                                \n                                Object.assign(tab, {\n                                    className: 'menu-tab list-unstyled'\n                                });\n                                \n                                tab.setAttribute('role', 'menu');\n                                \n                                menuElement.each((index, element) => {\n                                    var currentMenu = element.querySelector('template').content.firstElementChild.cloneNode(true);\n                                    \n                                    if(index == 0){\n                                        currentMenu.classList.add('is-visible'); \n                                    } else {\n                                        currentMenu.classList.add('is-hidden');\n                                    }\n                                    \n                                    content.appendChild(currentMenu);\n                                });\n\n                                content.querySelectorAll('[id^=\"MenuMobileListSection-\"]').forEach((element, index) => {\n                                    var tabTitle = element.dataset.heading,\n                                        tabId = element.getAttribute('id'),\n                                        tabElement = document.createElement('li');\n\n                                    Object.assign(tabElement, {\n                                        className: 'item'\n                                    });\n\n                                    tabElement.setAttribute('role', 'menuitem');\n\n                                    if (index == 0) {\n                                        tabElement.classList.add('is-active');\n                                    }\n\n                                    tabElement.innerHTML = `<a class=\"link\" href=\"#\" data-mobile-menu-tab data-target=\"${tabId}\">${tabTitle}</a>`;\n\n                                    tab.appendChild(tabElement);\n                                });\n\n                                menuTabMobile.html(tab);\n                                menuMobile.html(content.innerHTML);\n                            }\n                        }, false);\n                }\n            }\n        },\n\n        initMenu: function(url) {\n            if(!$('.header').hasClass('header-04')){\n                fetch(url)\n                    .then(response => response.text())\n                    .then(text => {\n                        const html = document.createElement('div');\n                        html.innerHTML = text;\n                        const navigation = html.querySelector('#HeaderNavigation');\n                        if (navigation && navigation.innerHTML.trim().length) {\n                            document.querySelector('#HeaderNavigation').innerHTML = navigation.innerHTML;\n                        }\n                    })\n                    .catch(e => {\n                        console.error(e);\n                    });\n            }\n        },\n        \n        clickedActiveProductTabs: function() {\n            const handler = (entries, observer) => {\n                entries.forEach(entry => {\n                    if (entry.isIntersecting) {\n                        const $block = $(entry.target);\n                        if ($block.hasClass('ajax-loaded')) return;\n\n                        var listTabs = $block.find('.list-product-tabs'),\n                            tabLink = listTabs.find('[data-product-tabTop]'),\n                            tabContent = $block.find('[data-product-TabContent]'),\n                            limit = $block.data('limit');\n\n                        var linkActive = listTabs.find('.tab-links.active'),\n                            activeTab = $block.find('.product-tabs-content .tab-content.active');\n                            \n                        if (!$block.hasClass('ajax-loaded')) {\n                            halo.doAjaxProductTabs(\n                                linkActive.data('href'), \n                                activeTab.find('.loading'), \n                                activeTab.find('.products-load'), \n                                $block.attr('sectionid'), \n                                limit,\n                                $block\n                            );\n                        }\n                        \n                        tabLink.off('click').on('click', function (e) {\n                            e.preventDefault();\n                            e.stopPropagation();\n\n                            if (!$(this).hasClass('active')) {\n                                const curTab = $(this),\n                                    curTabContent = $(curTab.data('target'));\n\n                                tabLink.removeClass('active');\n                                tabContent.removeClass('active');\n\n                                if (!curTabContent.hasClass('loaded')) halo.doAjaxProductTabs(curTab.data('href'), curTabContent.find('.loading'), curTabContent.find('.products-load'), $block.attr('sectionid'), limit);\n                                \n                                curTab.addClass('active');\n                                curTabContent.addClass('active');\n                                curTabContent.find('.slick-slider').slick('refresh');\n                            };\n                        });\n                    }\n                })\n            }\n\n            this.productBlock = document.querySelectorAll('[data-product-tab-block]');\n\n            const config = {\n                threshold: 0.1,\n            }\n\n            this.observer = new IntersectionObserver(handler, config);\n            this.productBlock.forEach(block => {\n                this.observer.observe(block);\n            });\n        },\n\n        doAjaxProductTabs: function (handle, loadingElm, curTabContent, sectionId, limit, self) {\n            $.ajax({\n                type: \"get\",\n                url: handle,\n                data: {\n                    constraint: `sectionId=${handle}+limit=${limit}`\n                },\n\n                beforeSend: function () {\n                    if (self != undefined) self.addClass('ajax-loaded');\n                },\n\n                success: function (data) {\n                    curTabContent.parent().addClass('loaded');\n                    if (handle == '?view=ajax_product_block') return;\n                    \n                    if ($(data).text().trim() === '') {\n                        noProduct(curTabContent);\n                    }\n                    else {\n                        const res = halo.handleResponse($(data), 0, limit);\n                        curTabContent.html(res);\n\n                        if(window.wishlist.show){\n                            halo.setLocalStorageProductForWishlist();\n                        }\n\n                        if (halo.checkNeedToConvertCurrency()) {\n                            Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                        };\n                    }\n                },\n                complete: function () {\n                    if (curTabContent.hasClass('products-carousel')) {\n                        halo.productBlockSilder(curTabContent.parent());\n                    }\n                    else if (curTabContent.hasClass('products-cursor') && curTabContent.data('enable-hover') === 'true') {\n                        halo.productBlockScroller(curTabContent);\n                    }\n\n                    if (window.review.show && $('.shopify-product-reviews-badge').length > 0 && window.SPR != null && typeof window.SPR.registerCallbacks === 'functions') {\n                        return window.SPR.registerCallbacks(), window.SPR.initRatingHandler(), window.SPR.initDomEls(), window.SPR.loadProducts(), window.SPR.loadBadges();\n                    }\n                },\n                error: function (xhr, text) {\n                    noProduct(curTabContent);\n                }\n            });\n            \n            const noProduct = (curTabContent) => {\n                curTabContent.html(`<p class=\"loading center\">Sorry, there are no products in this collection</p>`);\n            }\n        },\n        lookbookCarousel: function() {\n            var lookbookCarousel = $('.lookbook-carousel'),\n                itemToShow = lookbookCarousel.data('item-to-show'),\n                itemDots = lookbookCarousel.data('item-dots'),\n                itemDotsMb = lookbookCarousel.data('item-dots-mb'),\n                itemArrows = lookbookCarousel.data('item-arrows'),\n                itemArrowsMb = lookbookCarousel.data('item-arrows-mb');\n\n            if(lookbookCarousel.length > 0) {\n                if(lookbookCarousel.not('.slick-initialized')) {\n                    lookbookCarousel.slick({\n                        mobileFirst: true,\n                        adaptiveHeight: true,\n                        vertical: false,\n                        infinite: true,\n                        slidesToShow: itemToShow,\n                        slidesToScroll: itemToShow,\n                        arrows: itemArrowsMb,\n                        dots: itemDotsMb,\n                        autoplay: false,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: \n                        [\n                            {\n                                breakpoint: 1024,\n                                settings: {\n                                    arrows: itemArrows,\n                                    dots: itemDots\n                                }\n                            }\n                        ]\n                    });\n                }\n            }\n\n            if (lookbookCarousel.hasClass('enable_counter_number')) {\n                var slickNext = lookbookCarousel.find('.slick-next');\n                lookbookCarousel.closest('.special-banner__item--lookbook_banner').find('.products-counter-number').appendTo(slickNext);\n                lookbookCarousel.on('afterChange', (event) => {\n                    var slickIndex = lookbookCarousel.find('.slick-current').data('slick-index');\n                    lookbookCarousel.find(\"#count-image\").text(slickIndex + 1);\n                });\n            }\n        },\n        productBlockSilder: function(wrapper) {\n            var productGrid = wrapper.find('.products-carousel'),\n                itemToShow = productGrid.data('item-to-show'),\n                itemDots = productGrid.data('item-dots'),\n                itemDotsMb = productGrid.data('item-dots-mb'),\n                itemArrows = productGrid.data('item-arrows'),\n                itemArrowsMb = productGrid.data('item-arrows-mb'),\n                isProductCard06 = document.body.classList.contains('product-card-layout-06');\n\n            if(productGrid.length > 0) {\n                if(productGrid.hasClass('slick-initialized')) return;\n                if(productGrid.not('.slick-initialized')) {\n                    if (isProductCard06) {\n                        productGrid.on('init', () => {\n                            const selectOptionsHeight = productGrid.find('.product .card-action').eq(0).height();\n                            productGrid.find('.slick-list').css('padding-bottom', selectOptionsHeight + 'px');\n                            productGrid.attr('data-slider-padding-bottom', selectOptionsHeight)\n                        })\n                    }\n\n                    if (productGrid.hasClass('enable_progress_bar')) {\n                        var progressBar = wrapper.find('.scrollbar-thumb');\n                        productGrid.on('init', (event, slick) => {\n                            var percent = ((slick.currentSlide / (slick.slideCount - 1)) * 100) + '%';\n                            progressBar.css('--percent', percent);\n                        });\n                    }\n                  \n                    productGrid.slick({\n                        mobileFirst: true,\n                        adaptiveHeight: true,\n                        vertical: false,\n                        infinite: true,\n                        slidesToShow: 1,\n                        slidesToScroll: 1,\n                        arrows: itemArrowsMb,\n                        dots: itemDotsMb,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: \n                        [\n                            {\n                                breakpoint: 1599,\n                                settings: {\n                                    arrows: itemArrows,\n                                    dots: itemDots,\n                                    get slidesToShow() {\n                                        if(itemToShow !== undefined && itemToShow !== null && itemToShow !== ''){\n                                            return this.slidesToShow = itemToShow;\n                                        } else {\n                                            return this.slidesToShow = 1;\n                                        }\n                                    },\n                                    get slidesToScroll() {\n                                        if(itemToShow !== undefined && itemToShow !== null && itemToShow !== '' && itemToShow !== 3.5 && itemToShow !== 4.5 && itemToShow !== 5.5){\n                                            return this.slidesToScroll = itemToShow;\n                                        } else {\n                                            return this.slidesToScroll = 1;\n                                        }\n                                    },\n                                    get initialSlide() {\n                                        if(itemToShow == 3.5 || itemToShow == 4.5 || itemToShow == 5.5) {\n                                            return this.initialSlide = 0.5;\n                                        } else {\n                                            return this.initialSlide = 1;\n                                        }\n                                    }\n                                }\n                            },\n                            {\n                                breakpoint: 1024,\n                                settings: {\n                                    arrows: itemArrows,\n                                    dots: itemDots,\n                                    get slidesToShow() {\n                                        if(itemToShow !== undefined && itemToShow !== null && itemToShow !== ''){\n                                            if(itemToShow == 5 || itemToShow == 6){\n                                                return this.slidesToShow = itemToShow - 1;\n                                            } else {\n                                                if (productGrid.parents('.collection-column-2').length){\n                                                    return this.slidesToShow = 2;\n                                                } else{\n                                                    return this.slidesToShow = itemToShow;\n                                                }\n                                               \n                                            }\n                                        } else {\n                                            return this.slidesToShow = 1;\n                                        }\n                                    },\n                                    get slidesToScroll() {\n                                        if(itemToShow !== undefined && itemToShow !== null && itemToShow !== '' && itemToShow !== 3.5 && itemToShow !== 4.5 && itemToShow !== 5.5){\n                                            if(itemToShow == 5 || itemToShow == 6){\n                                                return this.slidesToScroll = itemToShow - 1;\n                                            } else {\n                                                if (productGrid.parents('.collection-column-2').length){\n                                                    return this.slidesToScroll = 2;\n                                                } else{\n                                                    return this.slidesToScroll = itemToShow;\n                                                }\n                                               \n                                            }\n                                        } else {\n                                            return this.slidesToScroll = 1;\n                                        }\n                                    },\n                                    get initialSlide() {\n                                        if(itemToShow == 3.5 || itemToShow == 4.5 || itemToShow == 5.5) {\n                                            return this.initialSlide = 0.5;\n                                        } else {\n                                            return this.initialSlide = 1;\n                                        }\n                                    }\n                                }\n                            },\n                            {\n                                breakpoint: 991,\n                                settings: {\n                                    arrows: itemArrowsMb,\n                                    dots: itemDotsMb,\n                                    get slidesToShow(){\n                                        if (productGrid.hasClass('has__banner_tab') || productGrid.parents('.product-block-has__banner').length){\n                                            if (productGrid.parents('.product-block-has__banner').length && productGrid.parents('.product-block-has__banner').data('width-banner') > 40) {\n                                                return this.slidesToShow = 2;\n                                            }\n                                            else {\n                                                return this.slidesToShow = 3;\n                                            }\n                                        }\n                                        else{\n                                            if (productGrid.parents('.collection-column-2').length){\n                                                return this.slidesToShow = 2;\n                                            }\n                                            else if (itemToShow == 1) {\n                                                return this.slidesToShow = itemToShow;\n                                            }\n                                            else{\n                                                return this.slidesToShow = 4;\n                                            }\n                                        }\n                                    },\n                                    get slidesToScroll(){\n                                        if (productGrid.hasClass('has__banner_tab') || productGrid.parents('.product-block-has__banner').length){\n                                            if (productGrid.parents('.product-block-has__banner').length && productGrid.parents('.product-block-has__banner').data('width-banner') > 40) {\n                                                return this.slidesToScroll = 2;\n                                            }\n                                            else {\n                                                return this.slidesToScroll = 3;\n                                            }\n                                        }\n                                        else{\n                                            if (productGrid.parents('.collection-column-2').length){\n                                                return this.slidesToScroll = 2;\n                                            }\n                                            else if (itemToShow == 1) {\n                                                return this.slidesToScroll = itemToShow;\n                                            }\n                                            else{\n                                                return this.slidesToScroll = 4;\n                                            }\n                                        }\n                                    },\n                                    get initialSlide() {\n                                        if(itemToShow == 3.5 || itemToShow == 4.5 || itemToShow == 5.5) {\n                                            return this.initialSlide = 0.5;\n                                        } else {\n                                            return this.initialSlide = 1;\n                                        }\n                                    }\n                                }\n                            },\n                            {\n                                breakpoint: 767,\n                                arrows: itemArrowsMb,\n                                dots: itemDotsMb,\n                                settings: {\n                                    get slidesToShow(){\n                                        if (productGrid.hasClass('has__banner_tab') || productGrid.parents('.product-block-has__banner').length){\n                                            return this.slidesToShow = 2;\n                                        }\n                                        else if (itemToShow == 1) {\n                                            return this.slidesToShow = itemToShow;\n                                        }\n                                        else{\n                                            return this.slidesToShow = 3;\n                                        }\n                                    },\n                                    get slidesToScroll(){\n                                        if (productGrid.hasClass('has__banner_tab') || productGrid.parents('.product-block-has__banner').length){\n                                            return this.slidesToScroll = 2;\n                                        }\n                                        else if (itemToShow == 1) {\n                                            return this.slidesToScroll = itemToShow;\n                                        }\n                                        else{\n                                            return this.slidesToScroll = 3;\n                                        }\n                                    },\n                                    get initialSlide() {\n                                        if(itemToShow == 3.5 || itemToShow == 4.5 || itemToShow == 5.5) {\n                                            return this.initialSlide = 0.5;\n                                        } else {\n                                            return this.initialSlide = 1;\n                                        }\n                                    }\n                                }\n                            },\n                            {\n                                breakpoint: 320,\n                                arrows: itemArrowsMb,\n                                dots: itemDotsMb,\n                                settings: {\n                                    get slidesToShow(){\n                                        if (itemToShow == 1) {\n                                            if (productGrid.hasClass('special-banner__products--slider') || productGrid.hasClass('special-banner__products--grid')) {\n                                                return this.slidesToShow = 2;\n                                            } else {\n                                                return this.slidesToShow = itemToShow;\n                                            }\n                                        }\n                                        else {\n                                            return this.slidesToShow = 2;\n                                        }\n\n                                    },\n                                    get slidesToScroll(){\n                                        if (itemToShow == 1) {\n                                            return this.slidesToScroll = itemToShow;\n                                        }\n                                        else {\n                                            return this.slidesToScroll = 2;\n                                        }\n                                    }\n                                }\n                            }\n                        ]\n                    });\n\n                    if (productGrid.hasClass('enable_progress_bar')) {\n                        productGrid.on('afterChange', (event, slick, nextSlide) => {\n                            var percent = ((nextSlide / (slick.slideCount - 1)) * 100) + '%';\n                            progressBar.css('--percent', percent);\n                        });\n                    }\n                    if (productGrid.hasClass('enable_counter_number')) {\n                        var slickNext = productGrid.find('.slick-next');\n                        productGrid.closest('.halo-block, .special-banner__product').find('.products-counter-number').appendTo(slickNext);\n                        productGrid.on('afterChange', (event) => {\n                            var slickIndex = productGrid.find('.slick-current').data('slick-index');\n                            productGrid.find(\"#count-image\").text(slickIndex + 1);\n                        });\n                    }\n                }\n            }\n        },\n\n        productBlockInfiniteScroll: function() {\n            var productBlock = $('[data-product-block], [data-product-tab-block]');\n\n            productBlock.each((index, element) => {\n                var $block = $(element),\n                    showMore = $block.find('[data-product-infinite]');\n            \n                if (showMore.length > 0) {\n                    showMore.find('.button').on('click', (event) => {\n                        var showMoreButton = $(event.target);\n\n                        if (!showMoreButton.hasClass('view-all')) {\n                            event.preventDefault();\n                            event.stopPropagation();\n\n                            // var text = window.button_load_more.loading;\n\n                            showMoreButton.addClass('is-loading');\n                            // showMoreButton.text(text);\n\n                            var url = showMoreButton.attr('data-collection'),\n                                limit = showMoreButton.attr('data-limit'),\n                                swipe = showMoreButton.attr('data-swipe'),\n                                total = showMoreButton.attr('data-total'),\n                                image_ratio = showMoreButton.attr('data-image-ratio'),\n                                sectionId = showMoreButton.attr('sectionId'),\n                                page = parseInt(showMoreButton.attr('data-page'));\n\n                            halo.doProductBlockInfiniteScroll(url, total, limit, swipe, image_ratio, sectionId, page, showMoreButton, $block);\n                        } else {\n                            window.location = showMoreButton.data('href');\n                        }\n                    });\n                }\n            });\n        },\n\n        doProductBlockInfiniteScroll: function(url, total, limit, swipe, image_ratio, sectionId, page, showMoreButton, $block){\n            $.ajax({\n                type: 'get',\n                url: window.routes.root + '/collections/' + url,\n                cache: false,\n                data: {\n                    view: 'ajax_product_block',\n                    constraint: 'limit=' + limit + '+page=' + page + '+sectionId=' + sectionId + '+imageRatio=' + image_ratio + '+swipe=' + swipe\n                },\n                beforeSend: function () {\n                    // halo.showLoading();\n                },\n                success: function (data) {\n                    const $productGrid = showMoreButton.closest('.tab-content').length ? showMoreButton.closest('.tab-content').find('.products-grid') : showMoreButton.closest('.halo-block-content').find('.products-grid');\n                    let length = $productGrid.find('.product').length;\n                    const res = halo.handleResponse($(data), length, $productGrid.data('products-to-show'));\n                    $productGrid.append(res);\n\n                    if(length + res.length < $(data).length) {\n                        var text = window.button_load_more.default;\n\n                        showMoreButton.removeClass('is-loading');\n                        showMoreButton.attr('data-page', page + 1);\n                        showMoreButton.find('span').text(text);\n                    } else {\n                        if (Number(total) > $(data).length && $(data).length <= length + res.length) {\n                            var text = window.button_load_more.view_all;\n\n                            showMoreButton.find('span').text(text);\n                            showMoreButton.removeClass('is-loading');\n                            showMoreButton.attr('data-href', window.routes.root + '/collections/' + url).addClass('view-all');\n                        } else {\n                            var text = window.button_load_more.no_more;\n\n                            showMoreButton.find('span').text(text);\n                            showMoreButton.removeClass('is-loading');\n                            showMoreButton.attr('disabled', 'disabled');\n                        }\n                    }\n                },\n                complete: function () {\n                    // halo.hideLoading();\n                    if (halo.checkNeedToConvertCurrency()) {\n                        Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                    };\n\n                    if (window.review.show && $('.shopify-product-reviews-badge').length > 0 && window.SPR != null && typeof window.SPR.registerCallbacks === 'functions') {\n                        return window.SPR.registerCallbacks(), window.SPR.initRatingHandler(), window.SPR.initDomEls(), window.SPR.loadProducts(), window.SPR.loadBadges();\n                    }\n                }\n            });\n        },\n\n        productMenuSlider: function(){\n            var productGrid = $('.megamenu_style_5');\n            if(productGrid.length > 0) {\n                productGrid.each((index, el) => {\n                    let _self = $(el).find('.products-carousel'),\n                        _dataRows = _self.data('row');\n                    if(_self.not('.slick-initialized')) {\n                        _self.slick({\n                            mobileFirst: true,\n                            adaptiveHeight: true,\n                            vertical: false,\n                            infinite: false,\n                            slidesToShow: 2,\n                            slidesToScroll: 1,\n                            arrows: false,\n                            dots: true,\n                            rtl: window.rtl_slick,\n                            responsive: \n                            [\n                                {\n                                    breakpoint: 1024,\n                                    settings: {\n                                        slidesToShow: 3,\n                                        slidesToScroll: 1,\n                                    }\n                                },\n                                {\n                                    breakpoint: 1500,\n                                    settings: {\n                                        slidesToShow: _dataRows,\n                                        slidesToScroll: 1,\n                                        dots: false\n                                    }\n                                }\n                            ]\n                        });\n                    }\n                })\n            }\n        },\n\n        buildRecommendationBlock: function(){\n            if (document.querySelector('[data-recommendations-block]') == null) return;\n\n            var $this = document.querySelector('[data-recommendations-block]'),\n                layout = $this.dataset.layout;\n                swipe = $this.dataset.swipe;\n\n            const config = {\n                threshold: 0.25,\n            }\n\n            const handleIntersection = (entries, observer) => {\n                const recommendationsContainer = $this.querySelector('.wrapper-container');\n                if (!entries[0].isIntersecting) return;\n                if ($this.innerHTML.trim() != '' && !recommendationsContainer.classList.contains('product-recommendations-loading') && !recommendationsContainer.classList.contains('has-product')) return;\n                recommendationsContainer.classList.add('has-product');\n\n                fetch($this.dataset.url)\n                .then(response => response.text())\n                .then(text => {\n                    const html = document.createElement('div');\n                    html.innerHTML = text;\n                    const recommendations = html.querySelector('[data-recommendations-block]');\n                    if (recommendations && recommendations.innerHTML.trim().length) {\n                        $this.innerHTML = recommendations.innerHTML;\n\n                        var productItems = $($this).find('.product-item')\n                        var firstProductData = productItems.eq(0).data('json-product')\n                        if (!firstProductData) return $($this).remove();\n\n                        if (layout == 'slider') {\n                            halo.productBlockSilder($($this));\n                        } else if (layout == 'scroll') {\n                            const enableHover = $($this).find('[data-enable-hover]').attr('data-enable-hover')\n                            const wrapper = $this.closest('.products-flex');\n\n                            if (enableHover === 'true' && wrapper.clientWidth < wrapper.scrollWidth) {\n                                halo.productBlockScroller($($this));\n                            }\n                        }\n\n                        var productItems = $($this).find('.product-item')\n                        productItems.each(async (index, rawProduct) => {\n                            var product = $(rawProduct);\n                            var productId = product.data('product-id');\n                            var productJson = product.data('json-product');\n                            var handle = productJson.handle\n                            \n                            await  $.ajax({\n                                type: 'get',\n                                url: window.routes.root + '/products/' + handle + '?view=ajax_variant_quantity',\n                                beforeSend: function () {},\n                                success: function (data) {\n                                    const element = new DOMParser().parseFromString(data, 'text/html')\n                                    if (element.querySelector(`[data-quantity-product-id=\"${productId}\"]`)) {\n                                        const quantityInfo = JSON.parse(element.querySelector(`[data-quantity-product-id=\"${productId}\"]`).innerHTML)\n                                        window[`quick_view_inven_array_${productId}`] = quantityInfo\n                                    }\n                                },      \n                                error: function (xhr, text) {\n                                    halo.showWarning($.parseJSON(xhr.responseText).description);\n                                },\n                                complete: function () {}\n                            });\n                        }) \n\n                        const loadingImages = $this.querySelectorAll('.media--loading-effect img');\n                        this.observeImageLazyloaded(loadingImages);\n\n                        if(window.compare.show){\n                            var $compareLink = $('[data-compare-link]');\n\n                            halo.setLocalStorageProductForCompare($compareLink);\n                        }\n\n                        if(window.wishlist.show){\n                            halo.setLocalStorageProductForWishlist();\n                        }\n\n                        if (window.review.show && $('.shopify-product-reviews-badge').length > 0 && window.SPR != null && typeof window.SPR.registerCallbacks === 'functions') {\n                            return window.SPR.registerCallbacks(), window.SPR.initRatingHandler(), window.SPR.initDomEls(), window.SPR.loadProducts(), window.SPR.loadBadges();\n                        }\n\n                        this.calculateTranslateYHeight()\n                    }\n                })\n                .catch(e => {\n                    console.error(e);\n                });\n            }\n\n            new IntersectionObserver(handleIntersection.bind($this), ({}, config)).observe($this);\n        },\n\n        initVideoPopup: function (){\n            if ($(\".video-open-popup\").length) {\n            } else {return}\n            $('.video-open-popup .video-button').off('click').on('click',function(){\n                let video_type = $(this).attr('data-type'),\n                    video_src = $(this).attr('data-src'),\n                    aspect_ratio = $(this).attr('aspect_ratio'),\n                    modal = $('[data-popup-video]');\n\n                const $content = `<div class=\"fluid-width-video-wrapper\" style=\"padding-top: ${aspect_ratio}\">\n                                    ${video_type == 'youtube' ? \n                                        `<iframe\n                                            id=\"player\"\n                                            type=\"text/html\"\n                                            width=\"100%\"\n                                            frameborder=\"0\"\n                                            webkitAllowFullScreen\n                                            mozallowfullscreen\n                                            allowFullScreen\n                                            src=\"https://www.youtube.com/embed/${video_src}?autoplay=1&mute=1\">\n                                        </iframe>`\n                                        :\n                                        `<iframe \n                                            src=\"https://player.vimeo.com/video/${video_src}?autoplay=1&mute=1\" \n                                            class=\"js-vimeo\" \n                                            allow=\"autoplay; \n                                            encrypted-media\" \n                                            webkitallowfullscreen \n                                            mozallowfullscreen \n                                            allowfullscreen\">\n                                        </iframe>`\n                                    }\n                                </div>`;\n                modal.find('.halo-popup-content').html($content);\n                $body.addClass('video-show');\n            });\n\n            $('[data-popup-video], [data-popup-video] .halo-popup-close, .background-overlay').on('click', function (e) {\n                // e.preventDefault();\n                // e.stopPropagation();\n                let modalContent = $('[data-popup-video] .halo-popup-content');\n                if (!modalContent.is(e.target) && !modalContent.has(e.target).length) {\n                    $body.removeClass('video-show');\n                    $('[data-popup-video] iframe').remove();\n                };\n            });\n        },\n\n        swapHoverVideoProductCard: function () {\n            if (window.innerWidth > 1200) {\n                $('.product-item .card').mouseenter(function(){\n                    var chil = $(this).find('video');\n                    var _chil = $(this).find('video').get(0);\n                    if (chil.length > 0) {\n                        _chil.play();\n                    }\n                });\n                $('.product-item .card').mouseleave(function(){\n                    var chil = $(this).find('video');\n                    var _chil = $(this).find('video').get(0);\n                    if (chil.length > 0) {\n                        _chil.pause();\n                    }\n                })\n            }\n        },\n\n        initGlobalCheckbox: function() {\n            $doc.on('change', '.global-checkbox--input', (event) => {\n                var targetId = event.target.getAttribute('data-target');\n\n                if(event.target.checked){\n                    $(targetId).attr('disabled', false);\n                } else{\n                    $(targetId).attr('disabled', true);\n                }\n            });\n\n            $doc.on('click', '[data-term-condition]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n                $body.addClass('term-condition-show');\n            });  \n             $doc.on('click', '[data-close-term-condition-popup]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n                $body.removeClass('term-condition-show');\n            });\n            $doc.on('click', '[data-term-delivery-condition]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n                $body.addClass('term-delivery-condition-show');\n            });\n               $doc.on('click', '[data-close-term-delivery-condition-popup]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n                $body.removeClass('term-delivery-condition-show');\n            });\n            $doc.on('click', (event) => {\n                setTimeout(() => {\n                    if ($body.hasClass('cart-sidebar-show')) {\n                        if (($(event.target).closest('[data-term-condition-popup]').length === 0)){\n                            $body.removeClass('term-condition-show');\n                        }\n                    }\n                    if ($body.hasClass('term-condition-show')) {\n                        if ($(event.target).closest('[data-term-condition-popup]').length === 0){\n                            $body.removeClass('term-condition-show');\n                        }\n                    }\n                   \n                }, 10);\n            });\n            $doc.on('click', (event) => {\n                setTimeout(() => {\n                    if ($body.hasClass('cart-sidebar-show')) {\n                        if (($(event.target).closest('[data-term-delivery-condition-popup]').length === 0)){\n                            $body.removeClass('term-delivery-condition-show');\n                        }\n                    }\n                    if ($body.hasClass('term-delivery-condition-show')) {\n                        if ($(event.target).closest('[data-term-delivery-condition-popup]').length === 0){\n                            $body.removeClass('term-delivery-condition-show');\n                        }\n                    }\n                }, 10);\n            });\n        },\n        \n        initColorSwatch: function() {\n            $doc.ready(function() {\n                $('.card .swatch-label.is-active').trigger('click');\n            });\n            \n            $doc.on('click', '.card .swatch-label', (event) => {\n                var $target = $(event.currentTarget),\n                    title = $target.attr('title').replace(/^\\s+|\\s+$/g, ''),\n                    product = $target.closest('.product-item'),\n                    productJson = product.data('json-product'),\n                    productTitle = product.find('.card-title'),\n                    productAction = product.find('[data-btn-addtocart]'),\n                    variantId = $target.data('variant-id'),\n                    productHref = product.find('a').attr('href'),\n                    oneOption = $target.data('with-one-option'),\n                    newImage = $target.data('variant-img'),\n                    mediaList = []; \n\n                $target.parents('.swatch').find('.swatch-label').removeClass('is-active');\n                $target.addClass('is-active');\n                \n                if(productTitle.hasClass('card-title-change')){\n                    if($body.hasClass('style_2_text_color_varriant')){\n                        productTitle.find('[data-change-title]').text(title);\n                    }else{\n                        productTitle.find('[data-change-title]').text(' - ' + title);\n                    }\n                } else {\n                    if($body.hasClass('style_2_text_color_varriant')){\n                        productTitle.addClass('card-title-change').append('<span data-change-title>' + title + '</span>');\n                    }else{\n                        productTitle.addClass('card-title-change').append('<span data-change-title> - ' + title + '</span>');\n                    }\n                }\n\n                const selectedVariant = productJson.variants.find(variant => variant.id === variantId)\n\n                if (selectedVariant.compare_at_price > selectedVariant.price) {\n                    product.find('.price').addClass('price--on-sale');\n                    product.find('.price__sale .price-item--regular').html(Shopify.formatMoney(selectedVariant.compare_at_price, window.money_format));\n                    product.find('.price__sale .price-item--sale').html(Shopify.formatMoney(selectedVariant.price, window.money_format));\n                    const labelSale = `-${Math.round((selectedVariant.compare_at_price - selectedVariant.price) * 100 / selectedVariant.compare_at_price)}%`;\n                    product.find('.price__label_sale .label_sale').html(labelSale);\n                } else {\n                    product.find('.price__regular .price-item').html(Shopify.formatMoney(selectedVariant.price, window.money_format));\n\n                    if (selectedVariant.compare_at_price == null) {\n                        product.find('.price').removeClass('price--on-sale');\n                        product.find('.price__sale .price-item--regular').html('');\n                    }\n                }\n  \n                product.find('a:not(.single-action):not(.number-showmore)').attr('href', productHref.split('?variant=')[0]+'?variant='+ variantId);\n\n                if (oneOption != undefined) {\n                    var quantity = $target.data('quantity');\n\n                    product.find('[name=\"id\"]').val(oneOption);\n  \n                    if (quantity > 0) {\n                        if(window.notify_me.show){\n                            productAction\n                                .removeClass('is-notify-me')\n                                .addClass('is-visible');\n                        } else {\n                            productAction\n                                .removeClass('is-soldout')\n                                .addClass('is-visible');\n                        }\n                    } else {\n                       if(window.notify_me.show){\n                            productAction\n                                .removeClass('is-visible')\n                                .addClass('is-notify-me');\n                        } else {\n                            productAction\n                                .removeClass('is-visible')\n                                .addClass('is-soldout');\n                        }\n                    }\n\n                    if(productAction.hasClass('is-soldout') || productAction.hasClass('is-notify-me')){\n                        if(productAction.hasClass('is-notify-me')){\n                            productAction.text(window.notify_me.button);\n                        } else {\n                            productAction\n                                .text(window.variantStrings.soldOut)\n                                .prop('disabled', true);\n                        }\n                    } else {\n                        productAction\n                            .text(window.variantStrings.addToCart)\n                            .prop('disabled', false);\n                    }\n                } else {\n                    if (productJson != undefined) {\n                        if(window.quick_shop.show){\n                            halo.checkStatusSwatchQuickShop(product, productJson);\n                        }\n                    }\n\n                    product.find('.swatch-element[data-value=\"' + title + '\"]').find('.single-label').trigger('click');\n                }\n\n                if (productJson.media != undefined) {\n                    var mediaList = productJson.media.filter((index, element) => {\n                        return element.alt === title;\n                    });\n                }\n\n                if (mediaList.length > 0) {\n                    if (mediaList.length > 1) {\n                        var length = 2;\n                    } else {\n                        var length = mediaList.length;\n                    }\n                    \n                    for (var i = 0; i < length; i++) {\n                        product.find('.card-media img:eq('+ i +')').attr('srcset', mediaList[i].src);\n                    }\n                } else {\n                    if (newImage) {\n                        product.find('.card-media img:nth-child(1)').attr('srcset', newImage);\n                    }\n                }\n  \n                // halo.checkPreOrderOfVariant(selectedVariant, productAction, productJson)\n                if (halo.checkNeedToConvertCurrency()) {\n                    Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                }\n            });\n              \n            $doc.on('click', '.item-swatch-more .number-showmore', (event) => {\n                if ($(event.target).closest('.swatch').hasClass('show--more')) {\n                    $(event.target).closest('.swatch').removeClass('show--more');\n                    $(event.target).find('span:eq(0)').text('+');\n                } else {\n                    $(event.target).closest('.swatch').addClass('show--more');\n                    $(event.target).find('span:eq(0)').text('-'); \n                }\n            })\n        },\n\n        checkPreOrderOfVariant: function(selectedVariant, productAction, productJson) {\n            // Check if variant is allowed to sale when out of stock\n            const variantId = selectedVariant.id\n            const updatePreOrderText = (productAction, selectedVariant, inventoryQuantity) => {\n                const product = productAction.parents('.product-item');\n                const hasQuickShopPanel = product.find('[data-quickshop-popup]').length > 0;\n\n                if (selectedVariant.inventory_management == null) {\n                    productAction\n                        .text(hasQuickShopPanel ? window.variantStrings.add : window.variantStrings.addToCart)\n                        .prop('disabled', false)\n                        .addClass('button--pre-untrack')\n                }\n                else if (selectedVariant.available && inventoryQuantity <=0 ) {\n                    productAction\n                        .text(window.variantStrings.preOrder)\n                        .prop('disabled', false)\n                        .addClass('button--pre-untrack')\n                } else {\n                    productAction.removeClass('button--pre-untrack');\n                    if (inventoryQuantity > 0) {\n                        if(window.notify_me.show){\n                            productAction\n                                .removeClass('is-notify-me')\n                                .addClass('is-visible')\n                        } else {\n                            productAction\n                                .removeClass('is-soldout')\n                                .addClass('is-visible')\n                        }\n                    } else {\n                      \n                       if(window.notify_me.show){\n                            productAction\n                                .removeClass('is-visible')\n                                .addClass('is-notify-me')\n                                .prop('disabled', false);\n                        } else {\n                            productAction\n                                .removeClass('is-visible')\n                                .addClass('is-soldout').prop('disabled', true);\n                        }\n                    }\n\n                    if(productAction.hasClass('is-soldout') || productAction.hasClass('is-notify-me')){\n                        if(productAction.hasClass('is-notify-me')){\n\n                            productAction.text(window.notify_me.button).prop('disabled', false).removeClass('btn-unavailable');;\n                        } else {\n                            productAction\n                                .text(window.variantStrings.soldOut)\n                                .prop('disabled', true);\n                        }\n                    } else {\n                        productAction\n                            .text(hasQuickShopPanel ? window.variantStrings.add : window.variantStrings.addToCart)\n                            .prop('disabled', false);\n                    }\n                }\n            }\n    \n            const variantsQuantityInvenText = `quick_view_inven_array_${productJson.id}`\n            var arrayInVarName = variantsQuantityInvenText,\n                inven_array = window[arrayInVarName]; \n            \n            if(inven_array != undefined) {\n                var inven_num = inven_array[variantId],\n                    inventoryQuantity = parseInt(inven_num);\n                    updatePreOrderText(productAction, selectedVariant, inventoryQuantity)\n            } else {\n                $.ajax({\n                    type: 'get',\n                    url: window.routes.root + '/products/' + productJson.handle + '?view=ajax_quick_shop_data',\n                    beforeSend: function () {},\n                    success: function (data) {\n                        window[variantsQuantityInvenText] = JSON.parse(data.split('=')[1])\n                        var inven_num = window[variantsQuantityInvenText][variantId],\n                            inventoryQuantity = parseInt(inven_num);\n                        updatePreOrderText(productAction, selectedVariant, inventoryQuantity)   \n                    },      \n                    error: function (xhr, text) {\n                        halo.showWarning($.parseJSON(xhr.responseText).description);\n                    },\n                    complete: function () {\n                        \n                    }\n                });\n            }\n        },\n\n        initQuickShop: function() {\n            if(window.quick_shop.show) {\n                $doc.on('click', '[data-quickshop-popup]', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    \n                    var $target = $(event.target),\n                        product = $target.parents('.product-item'),\n                        productJson = product.data('json-product'),\n                        variantPopup = product.find('.variants-popup');\n                        \n                    const $quickView = document.querySelector('.halo-quick-view-popup');\n                    if (!document.body.matches('.qv-loaded', '.qs3-loaded') && $quickView) {\n                        halo.buildStyleSheet($quickView.dataset.urlStyleProduct, $quickView);\n                        document.body.classList.add('qs3-loaded');\n                    }\n\n                    if(!product.hasClass('quickshop-popup-show')){\n                        $('.product-item').removeClass('quickshop-popup-show');\n\n                        if ($body.hasClass('quick_shop_option_2')) {\n                            var height = product.find('.card-media').outerHeight(true);\n                            var variantsArray = variantPopup.find('.variants')\n\n                            if ($body.hasClass('product-card-layout-02')){\n                                if ($win.width() > 1024) {\n                                    variantsArray.css('max-height', (height - 114) + 'px');\n                                    variantsArray.css('min-height', (height - 114) + 'px');\n                                } else {\n                                    variantsArray.css('max-height', (height - 70) + 'px');\n                                    variantsArray.css('min-height', (height - 70) + 'px');\n                                } \n                            } else if ($body.hasClass('product-card-layout-04')){\n                                if ($win.width() > 1024) {\n                                    variantsArray.css('max-height', (height - 116) + 'px');\n                                    variantsArray.css('min-height', (height - 116) + 'px');\n                                } else {\n                                    variantsArray.css('max-height', (height - 70) + 'px');\n                                    variantsArray.css('min-height', (height - 70) + 'px');\n                                } \n                            } else {\n                                if ($win.width() > 1024) {\n                                    variantsArray.css('max-height', (height - 74) + 'px');\n                                    variantsArray.css('min-height', (height - 74) + 'px');\n                                } else {\n                                    variantsArray.css('max-height', (height - 20) + 'px');\n                                    variantsArray.css('min-height', (height - 20) + 'px');\n                                } \n                            }\n\n                            if (variantsArray[0].scrollHeight > variantsArray[0].clientHeight) {\n                                variantsArray.addClass('scrollable')\n                            }\n\n                            if (!$('.productListing').hasClass('productList')){\n                                halo.appendProductQuickShopOption2(product);\n                            }\n                        } else if ($body.hasClass('quick_shop_option_3')) {\n                            const handle = $target.data('product-handle');\n                            if (!$('.productListing').hasClass('productList')){\n                                halo.updateContentQuickshopOption3(handle);\n                            }\n                            \n                            $doc.on('click', '[data-close-quick-shop-popup]', (event) => {\n                                event.preventDefault();\n                                event.stopPropagation();\n                \n                                $body.removeClass('quickshop-popup-show');\n                            });\n                            \n                            $doc.off('click.quickShopOverlay').on('click.quickShopOverlay', (event) => {\n                                if ($body.hasClass('quickshop-popup-show') && $(event.target).is('.background-overlay')) {\n                                    $body.removeClass('quickshop-popup-show');\n                                }\n                            })\n                        } \n\n                        if (!$body.hasClass('quick_shop_option_3')) {\n                            if ($win.width() < 767) {\n                                if ($('.productListing').hasClass('productList')) {\n                                    halo.appendToListViewModal(product)\n                                } else {\n                                    product.addClass('quickshop-popup-show');\n                                }\n                            } else {\n                                product.addClass('quickshop-popup-show');\n                            }\n                        } else {\n                            if ($('.productListing').hasClass('productList')){\n                                if ($win.width() < 767) {\n                                    halo.appendToListViewModal(product)\n                                } else {\n                                    product.addClass('quickshop-popup-show');\n                                }\n                            }\n                        }\n                        \n                        product.find('.swatch-label.is-active').trigger('click');\n                        halo.checkStatusSwatchQuickShop(product, productJson);\n                        \n                        if($body.hasClass('quick_shop_option_2') || ($('productListing').hasClass('productList') && !$('.card-swatch').hasClass('quick_shop_type_3'))){\n                            if ($win.width() < 767) {\n                                if (!$('.productListing').hasClass('productList')){\n                                    var quickshopVariantPopup = $('#halo-card-mobile-popup .variants-popup');\n                                    quickshopVariantPopup.find('.selector-wrapper').each((index, element) => {\n                                        $(element).find('.swatch-element:not(.soldout):not(.unavailable)').eq('0').find('.single-label').trigger('click');\n                                    });\n                                } else {\n                                    variantPopup.find('.selector-wrapper').each((index, element) => {\n                                        $(element).find('.swatch-element:not(.soldout):not(.unavailable)').eq('0').find('.single-label').trigger('click');\n                                    });\n                                }\n                            } else {\n                                variantPopup.find('.selector-wrapper').each((index, element) => {\n                                    $(element).find('.swatch-element:not(.soldout):not(.unavailable)').eq('0').find('.single-label').trigger('click');\n                                });\n                            }\n                            if (!$('.productListing').hasClass('productList')){\n                                $body.addClass('quick_shop_popup_mobile');\n                            }\n                        } else {\n                            variantPopup.find('.selector-wrapper:not(.option-color)').each((index, element) => {\n                                $(element).find('.swatch-element:not(.soldout):not(.unavailable)').eq('0').find('.single-label').trigger('click');\n                            });\n                        }\n                    } else {\n                        halo.initAddToCartQuickShop($target, variantPopup);\n                    }\n\n                    if (halo.checkNeedToConvertCurrency()) {\n                        Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                    }\n                });\n\n                $doc.on('click', '[data-cancel-quickshop-popup]', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    var $target = $(event.currentTarget),\n                        product = $target.parents('.product-item'),\n                        quickshopMobilePopup = $doc.find('#halo-card-mobile-popup');\n\n                    product.removeClass('quickshop-popup-show');\n                    var productQuickshopShown = $doc.find('.quickshop-popup-show')\n                    productQuickshopShown.removeClass('quickshop-popup-show');\n                    $body.removeClass('quickshop-list-view-show');\n                     \n                    if($body.hasClass('quick_shop_option_2')){\n                        $body.removeClass('quick_shop_popup_mobile');\n                        quickshopMobilePopup.removeClass('show');\n                    }\n                });\n\n                $doc.on('click', (event) => {\n                    if ($(event.target).closest('[data-quickshop-popup]').length === 0 && $(event.target).closest('.variants-popup').length === 0 && $(event.target).closest('.card-swatch').length === 0 && $(event.target).closest('[data-warning-popup]').length === 0) {\n                        $('.product-item').removeClass('quickshop-popup-show');\n                        if($body.hasClass('quick_shop_option_2')){\n                            $body.removeClass('quick_shop_popup_mobile');\n                        }\n                    }\n                });\n\n                halo.changeSwatchQuickShop();\n            }\n        },\n  \n        appendToListViewModal: function(product)  {\n            const quickshopMobilePopup = $doc.find('#list-view-popup');\n            const quickshopForm = product.clone();\n            quickshopMobilePopup.find('.halo-popup-content').empty();\n            quickshopMobilePopup.find('.halo-popup-content').append(quickshopForm);\n\n            const form = quickshopMobilePopup.find('[data-quickshop] .card-information .variants-popup form').eq('0');\n            const mobilePopupId = form.attr('id') + '-mobile';\n            const optionInputs = form.find('.single-option');\n            const optionLabels = form.find('.single-label');\n            const cardInfoWrapper = quickshopMobilePopup.find('.card-product')\n            const variantsPopup = quickshopMobilePopup.find('.variants-popup')\n            const submitBtn = quickshopMobilePopup.find('[data-btn-addtocart]')\n            variantsPopup.removeClass(\"card-list__hidden\")\n            let clicked = {\n                selected1: false,\n                selected2: false,\n                selected3: false\n            } \n\n            form.attr('id', mobilePopupId);\n            submitBtn.attr('data-form-id', submitBtn.attr('data-form-id') + '-mobile')\n\n            optionInputs.each((index, optionInput) => {\n                $(optionInput).attr('id', $(optionInput).attr('id') + '-mobile');\n                $(optionInput).attr('name', $(optionInput).attr('name') + '-mobile');\n            })\n\n            optionLabels.each((index, optionLabel) => {\n                $(optionLabel).attr('for', $(optionLabel).attr('for') + '-mobile');\n\n                const swatchWrapper = $(optionLabel).closest('.selector-wrapper')\n                const swatchElement = $(optionLabel).closest('.swatch-element')\n                if (!swatchElement.hasClass('available')) return \n                \n                if (swatchWrapper.hasClass('selector-wrapper-1') && !clicked.selected1) {\n                    clicked.selected1 = true\n                    $(optionLabel).trigger('click')\n                } else if (swatchWrapper.hasClass('selector-wrapper-2') && !clicked.selected2) {\n                    clicked.selected2 = true \n                    $(optionLabel).trigger('click')\n                } else if (swatchWrapper.hasClass('selector-wrapper-3') && !clicked.selected3) {\n                    clicked.selected3 = true\n                    $(optionLabel).trigger('click')\n                }\n            })\n\n            $body.addClass('quickshop-list-view-show');\n\n            $('.background-overlay').off('click.closeListViewModal').on('click.closeListViewModal', () => {\n                $body.removeClass('quickshop-list-view-show');\n            })\n        },\n\n        changeSwatchQuickShop: function () {\n            $doc.on('change', '[data-quickshop] .single-option', (event) => {\n                \n                var $target = $(event.target),\n                    product = $target.parents('.product-item'),\n                    productJson = product.data('json-product'),\n                    productAction = product.find('[data-btn-addtocart]'),\n                    variantList,\n                    optionColor = product.find('.option-color').data('option-position'),\n                    optionIndex = $target.closest('[data-option-index]').data('option-index'),\n                    swatch = product.find('.swatch-element'),\n                    thisVal = $target.val(),\n                    selectedVariant,\n                    productInput = product.find('[name=id]'),\n                    selectedOption1 = product.find('.selector-wrapper-1').find('input:checked').val(),\n                    selectedOption2 = product.find('.selector-wrapper-2').find('input:checked').val(),\n                    selectedOption3 = product.find('.selector-wrapper-3').find('input:checked').val();\n\n                if ($body.hasClass('quick_shop_option_2') && $('.productListing').hasClass('productList')) {\n                    selectedOption1 = product.find('.selector-wrapper-1').eq('1').find('input:checked').val();\n                } else {\n                    if ($('.productListing').hasClass('productList') && $win.width() < 767) {\n                        selectedOption1 = product.find('.selector-wrapper-1').eq('1').find('input:checked').val();\n                        selectedOption2 = product.find('[data-option-index=\"1\"]').eq('1').find('input:checked').val();\n                    } else {\n                        selectedOption1 = product.find('.selector-wrapper-1').eq('0').find('input:checked').val();\n                    }\n                }\n\n                if (productJson != undefined) {\n                    variantList = productJson.variants;\n                }\n\n                swatch.removeClass('soldout');\n                swatch.find('input[type=\"radio\"]').prop('disabled', false);\n\n                switch (optionIndex) {\n                    case 0:\n                        var availableVariants = variantList.find((variant) => {\n                            if (optionColor == 1) {\n                                return variant.option2 == thisVal && variant.option1 == selectedOption2;\n                            } else {\n                                if (optionColor == 2) {\n                                    return variant.option3 == thisVal && variant.option1 == selectedOption2;\n                                } else {\n                                    return variant.option1 == thisVal && variant.option2 == selectedOption2;\n                                }\n                            }\n                        });\n\n                        if(availableVariants != undefined){\n                            selectedVariant =  availableVariants;\n                        } else{\n                            var altAvailableVariants = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == thisVal;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == thisVal;\n                                    } else {\n                                        return variant.option1 == thisVal;\n                                    }\n                                }\n                            });\n\n                            selectedVariant =  altAvailableVariants;\n                        }\n\n                        break;\n                    case 1:\n                        var availableVariants = variantList.find((variant) => {\n                            if (optionColor == 1) {\n                                return variant.option2 == selectedOption1 && variant.option1 == thisVal && variant.option3 == selectedOption2;\n                            } else {\n                                if (optionColor == 2) {\n                                    return variant.option3 == selectedOption1 && variant.option1 == thisVal && variant.option2 == selectedOption2;\n                                } else {\n                                    return variant.option1 == selectedOption1 && variant.option2 == thisVal && variant.option3 == selectedOption2;\n                                }\n                            }\n                        });\n\n                        if(availableVariants != undefined){\n                            selectedVariant =  availableVariants;\n                        } else {\n                            var altAvailableVariants = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == selectedOption1 && variant.option1 == thisVal;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == selectedOption1 && variant.option1 == thisVal;\n                                    } else {\n                                        return variant.option1 == selectedOption1 && variant.option2 == thisVal;\n                                    }\n                                }\n                            });\n\n                            selectedVariant =  altAvailableVariants;\n                        }\n\n                        break;\n                    case 2:\n                        var availableVariants = variantList.find((variant) => {\n                            if (optionColor == 1) {\n                                return variant.option2 == selectedOption1 && variant.option1 == selectedOption2 && variant.option3 == thisVal;\n                            } else {\n                                if (optionColor == 2) {\n                                    return variant.option3 == selectedOption1 && variant.option1 == selectedOption2 && variant.option2 == thisVal;\n                                } else {\n                                    return variant.option1 == selectedOption1 && variant.option2 == selectedOption2 && variant.option3 == thisVal;\n                                }\n                            }\n                        });\n\n                        if(availableVariants != undefined){\n                            selectedVariant =  availableVariants;\n                        }\n\n                        break;\n                }\n                            \n                if (selectedVariant == undefined) {\n                    return;\n                }\n                \n                productInput.val(selectedVariant.id);\n                var value = $target.val();\n               \n\n                \n                $target.parents('.selector-wrapper').find('.form-label span').text(value);\n                if (selectedVariant.available) {\n                    product.find('[data-btn-addtocart]').removeClass('btn-unavailable');\n                    product.find('[data-quickshop] quickshop-update-quantity').removeClass('disabled');\n                    product.find('[data-btn-addtocart]').attr('data-available', 'true')\n                      \n                } else {\n                    product.find('[data-btn-addtocart]').addClass('btn-unavailable');\n                    product.find('[data-quickshop] quickshop-update-quantity').addClass('disabled');\n                    product.find('[data-btn-addtocart]').attr('data-available', 'false')\n                }\n\n                if (halo.checkNeedToConvertCurrency()) {\n                    Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                };\n\n                if (!$body.hasClass('quick_shop_option_2') && !$body.hasClass('quick_shop_option_3') && $win.width() < 767) {\n                    \n                } \n\n                halo.checkStatusSwatchQuickShop(product, productJson);\n                halo.checkPreOrderOfVariant(selectedVariant, productAction, productJson);\n            });\n        },\n\n        checkStatusSwatchQuickShop: function(product, productJson){\n            var variantPopup = product.find('.card-variant'),\n                variantList,\n                productOption = product.find('[data-option-index]'),\n                optionColor = product.find('.option-color').data('option-position'),\n                selectedOption1 = product.find('[data-option-index=\"0\"]').find('input:checked').val(),\n                selectedOption2 = product.find('[data-option-index=\"1\"]').find('input:checked').val(),\n                selectedOption3 = product.find('[data-option-index=\"2\"]').find('input:checked').val(),\n                productId = product.data('product-id');\n\n            \n            if ($body.hasClass('quick_shop_option_2')) {\n                var height = product.find('.card-media').outerHeight(true);\n                if (selectedOption3 != undefined) {\n                    if ($body.hasClass('product-card-layout-01')) {\n                        if (height < 310) {\n                            $('[data-quickshop]').addClass('active_option_3');\n                        } else {\n                            $('[data-quickshop]').removeClass('active_option_3');\n                        }  \n                    } else {\n                        if (height < 370) {\n                            $('[data-quickshop]').addClass('active_option_3');\n                        } else {\n                            $('[data-quickshop]').removeClass('active_option_3');\n                        } \n                    }\n                } else {\n                    if ($win.width() > 1024) {\n                        if ($body.hasClass('product-card-layout-05')) {\n                            if (height < 350 && selectedOption2 != undefined) {\n                                $('[data-quickshop]').addClass('active_option_3');\n                            } else {\n                                $('[data-quickshop]').removeClass('active_option_3');\n                            }    \n                        } else if ($body.hasClass('product-card-layout-01')) {\n                            if (height < 310 && selectedOption2 != undefined) {\n                                $('[data-quickshop]').addClass('active_option_3');\n                            } else {\n                                $('[data-quickshop]').removeClass('active_option_3');\n                            }  \n                        }else {\n                            if (height < 370 && selectedOption2 != undefined) {\n                                $('[data-quickshop]').addClass('active_option_3');\n                            } else {\n                                $('[data-quickshop]').removeClass('active_option_3');\n                            }   \n                        }\n                    } else {\n                        if ($body.hasClass('product-card-layout-01')) {\n                            if (height < 310) {\n                                if (selectedOption1 != undefined || selectedOption2 != undefined) {\n                                    $('[data-quickshop]').removeClass('active_option_3');\n                                } else {\n                                    $('[data-quickshop]').addClass('active_option_3');\n                                }\n                            } else {\n                                $('[data-quickshop]').removeClass('active_option_3');\n                            }   \n                        } else {\n                            if (height < 370) {\n                                if (selectedOption1 != undefined || selectedOption2 != undefined) {\n                                    $('[data-quickshop]').removeClass('active_option_3');\n                                } else {\n                                    $('[data-quickshop]').addClass('active_option_3');\n                                }\n                            } else {\n                                $('[data-quickshop]').removeClass('active_option_3');\n                            }   \n                        }\n                    }\n                }\n            }\n\n            if ($body.hasClass('quick_shop_option_2') && $('.productListing').hasClass('productList')) {\n                selectedOption1 = product.find('[data-option-index=\"0\"]').eq('1').find('input:checked').val();\n            } else {\n                if ($('.productListing').hasClass('productList') && $win.width() < 767) {\n                    selectedOption1 = product.find('[data-option-index=\"0\"]').eq('1').find('input:checked').val();\n                    selectedOption2 = product.find('[data-option-index=\"1\"]').eq('1').find('input:checked').val();\n                } else {\n                    selectedOption1 = product.find('[data-option-index=\"0\"]').eq('0').find('input:checked').val();\n                }\n            }\n            \n            if (productJson != undefined) {\n                variantList = productJson.variants;\n            }\n\n            productOption.each((index, element) => {\n                var optionIndex = $(element).data('option-index'),\n                    swatch = $(element).find('.swatch-element');\n\n                switch (optionIndex) {\n                    case 0: \n                        swatch.each((idx, elt) => {\n                            var item = $(elt),\n                                swatchVal = item.data('value');\n\n                            var optionSoldout = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == swatchVal && variant.available;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == swatchVal && variant.available;\n                                    } else {\n                                        return variant.option1 == swatchVal && variant.available;\n                                    }\n                                }\n                            });\n\n                            var optionUnavailable = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == swatchVal;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == swatchVal;\n                                    } else {\n                                        return variant.option1 == swatchVal;\n                                    }\n                                }\n                            });\n\n                            if(optionSoldout == undefined){\n                                if (optionUnavailable == undefined) {\n                                    item.removeClass('soldout available').addClass('unavailable');\n                                    item.find('input[type=\"radio\"]').prop('checked', false);\n                                } else {\n                                    item\n                                        .removeClass('unavailable available')\n                                        .addClass('soldout')\n                                        .find('.single-action')\n                                        .attr('data-variant-id', optionUnavailable.title);\n                                    item.find('input[type=\"radio\"]').prop('disabled', false);\n                                }\n                            } else {\n                                item.removeClass('soldout unavailable').addClass('available');\n                                item.find('input[type=\"radio\"]').prop('disabled', false);\n                            }\n                        });\n\n                        break;\n                    case 1:\n                        swatch.each((idx, elt) => {\n                            var item = $(elt),\n                                swatchVal = item.data('value');\n\n                            var optionSoldout = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == selectedOption1 && variant.option1 == swatchVal && variant.available;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == selectedOption1 && variant.option1 == swatchVal && variant.available;\n                                    } else {\n                                        return variant.option1 == selectedOption1 && variant.option2 == swatchVal && variant.available;\n                                    }\n                                }\n                            });\n\n                            var optionUnavailable = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == selectedOption1 && variant.option1 == swatchVal;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == selectedOption1 && variant.option1 == swatchVal;\n                                    } else {\n                                        // CHECK: find the error and value of selectedOption1 \n                                        return variant.option1 == selectedOption1 && variant.option2 == swatchVal;\n                                    }\n                                }\n                            });\n\n                            if(optionSoldout == undefined){\n                                if (optionUnavailable == undefined) {\n                                    item.removeClass('soldout available').addClass('unavailable');\n                                    item.find('input[type=\"radio\"]').prop('checked', false);\n                                } else {\n                                    item\n                                        .removeClass('unavailable available')\n                                        .addClass('soldout')\n                                        .find('.single-action-selector')\n                                        .attr('data-variant-id', optionUnavailable.title);\n                                    item.find('input[type=\"radio\"]').prop('disabled', false);\n                                }\n                            } else {\n                                item.removeClass('soldout unavailable').addClass('available');\n                                item.find('input[type=\"radio\"]').prop('disabled', false);\n                            }\n                            \n                        });\n                        break;\n                    case 2:\n                        swatch.each((idx, elt) => {\n                            var item = $(elt),\n                                swatchVal = item.data('value');\n\n                            var optionSoldout = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == selectedOption1 && variant.option1 == selectedOption2 && variant.option3 == swatchVal && variant.available;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == selectedOption1 && variant.option1 == selectedOption2 && variant.option2 == swatchVal && variant.available;\n                                    } else {\n                                        return variant.option1 == selectedOption1 && variant.option2 == selectedOption2 && variant.option3 == swatchVal && variant.available;\n                                    }\n                                }\n                            });\n\n                            var optionUnavailable = variantList.find((variant) => {\n                                if (optionColor == 1) {\n                                    return variant.option2 == selectedOption1 && variant.option1 == selectedOption2 && variant.option3 == swatchVal;\n                                } else {\n                                    if (optionColor == 2) {\n                                        return variant.option3 == selectedOption1 && variant.option1 == selectedOption2 && variant.option2 == swatchVal;\n                                    } else {\n                                        return variant.option1 == selectedOption1 && variant.option2 == selectedOption2 && variant.option3 == swatchVal;\n                                    }\n                                }\n                            });\n\n                            if(optionSoldout == undefined){\n                                if (optionUnavailable == undefined) {\n                                    item.removeClass('soldout available').addClass('unavailable');\n                                    item.find('input[type=\"radio\"]').prop('checked', false);\n                                } else {\n                                    item\n                                        .removeClass('unavailable available')\n                                        .addClass('soldout')\n                                        .find('.single-action-selector')\n                                        .attr('data-variant-id', optionUnavailable.title);\n                                    item.find('input[type=\"radio\"]').prop('disabled', false);\n                                }\n                            } else {\n                                item.removeClass('unavailable soldout').addClass('available');\n                                item.find('input[type=\"radio\"]').prop('disabled', false);\n                            }\n                        });\n\n                        break;  \n                }\n            });\n\n            variantPopup.find('.selector-wrapper:not(.option-color)').each((index, element) => {\n                var item = $(element);\n\n                if (item.find('.swatch-element').find('input:checked').length < 1) {\n                    if (item.find('.swatch-element.available').length > 0) {\n                        item.find('.swatch-element.available').eq('0').find('.single-label').trigger('click');\n                    } else {\n                        item.find('.swatch-element.soldout').eq('0').find('.single-label').trigger('click');\n                    }\n                }\n            });\n\n  \n            if ($body.hasClass('quick_shop_option_2')) {\n                var variantId = product.find('[data-quickshop]').eq(1).find('[name=\"id\"]').val();\n                var arrayInVarName = `quick_view_inven_array_${productId}`,\n                    inven_array = window[arrayInVarName]; \n                  \n                if(inven_array != undefined) {\n                    var inven_num = inven_array[variantId],\n                        inventoryQuantity = parseInt(inven_num),\n                        quantityInput = product.find('input[name=\"quantity\"]').eq(0);\n                    \n                    quantityInput.attr('data-inventory-quantity', inventoryQuantity);\n                    if (quantityInput.val() > inventoryQuantity) {\n                        if (inventoryQuantity > 0) {\n                            quantityInput.val(inventoryQuantity)\n                        } else {\n                            quantityInput.val(1)\n                        }\n                    }\n                }\n            }\n        },\n        \n        initAddToCartQuickShop: function($target, popup){\n            var variantId = popup.find('[name=\"id\"]').val(),\n                qty = 1;\n\n            halo.actionAddToCart($target, variantId, qty);\n            \n        },\n\n        initAddToCart: function() {\n            $doc.off('click.addToCart').on('click.addToCart', '[data-btn-addtocart]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var $target = $(event.target),\n                    product = $target.parents('.product-item'),\n                    MobilePopup_Option_2 = $doc.find('#halo-card-mobile-popup'),\n                    ProductQuickShopShown_Option_2 = $doc.find('.quickshop-popup-show');\n\n                if($target.closest('product-form').length > 0){\n                    var productForm = $target.closest('form');\n                    \n                    halo.actionAddToCart2($target, productForm);\n                } else {\n                    if(!$target.hasClass('is-notify-me') && !$target.hasClass('is-soldout')){\n                        var form = $target.parents('form'),\n                            variantId = form.find('[name=\"id\"]').val(),\n                            qty = form.find('[name=\"quantity\"]').val(),\n                            input = form.find('[name=\"quantity\"]').eq(0);\n                        if(qty == undefined){\n                            qty = 1;\n                        }\n                          \n                        halo.actionAddToCart($target, variantId, qty, input);\n                    \n                    } else if($target.hasClass('is-notify-me')){\n                        halo.notifyInStockPopup($target);\n                    }\n                }\n            });\n            \n            $doc.on('click', '[data-close-add-to-cart-popup]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.removeClass('add-to-cart-show');\n            });\n\n\n            $doc.on('click', (event) => {\n                if($body.hasClass('add-to-cart-show')){\n                    if (($(event.target).closest('[data-add-to-cart-popup]').length === 0)) {\n                        $body.removeClass('add-to-cart-show');\n                    }\n                }\n            });\n        },\n\n        actionAddToCart: function($target, variantId, qty, input){\n            var originalMessage = window.variantStrings.submit,\n                waitMessage = window.variantStrings.addingToCart,\n                successMessage = window.variantStrings.addedToCart;\n            \n            if($target.hasClass('button-text-change')){\n                originalMessage = $target.text();\n            }\n\n            $target.addClass('is-loading');\n\n            if($body.hasClass('quick-view-show')){\n                Shopify.addItem(variantId, qty, $target, () => {\n                    // $target.text(successMessage);\n                    if (window.after_add_to_cart.type == 'cart') {\n                        halo.redirectTo(window.routes.cart);\n                    } else {\n                        Shopify.getCart((cartTotal) => {\n                            $body.addClass('cart-sidebar-show');\n                            halo.updateSidebarCart(cartTotal);\n                            $body.find('[data-cart-count]').text(cartTotal.item_count);\n                            $target.removeClass('is-loading');\n                        });\n                    }\n                }, input);\n            } else if($body.hasClass('template-cart')) {\n                Shopify.addItem(variantId, qty, $target, () => {\n                    // $target.text(successMessage);\n                    halo.redirectTo(window.routes.cart);\n                }, input);           \n            } else {\n                Shopify.addItem(variantId, qty, $target, () => {\n                    // $target.text(successMessage);\n                    $target.removeClass('is-loading');\n                    if ($body.hasClass('quickshop-popup-show') && $body.hasClass('quick_shop_option_3')) {\n                        $body.removeClass('quickshop-popup-show');\n                        \n                        $('.quickshop-popup-show').removeClass('quickshop-popup-show');\n                    }\n\n                    if ($body.hasClass('quickshop-list-view-show')) {\n                        $body.removeClass('quickshop-list-view-show')\n                    }\n\n                    if ($body.hasClass('show-mobile-options')) {\n                        $body.removeClass('show-mobile-options');\n                        $('.background-overlay').addClass('hold');\n                    }\n\n                    if ($body.hasClass('quick_shop_popup_mobile') && $body.hasClass('quick_shop_option_2')) {\n                        // setTimeout(() => {\n                            $body.removeClass('quick_shop_popup_mobile');\n                            $doc.find('#halo-card-mobile-popup').removeClass('show');\n                            $doc.find('.quickshop-popup-show').each((index, popup) => {\n                                $(popup).removeClass('quickshop-popup-show');\n                            })\n                        // }, 200);\n                    }\n\n                    switch (window.after_add_to_cart.type) {\n                        case 'cart':\n                            halo.redirectTo(window.routes.cart);\n\n                            break;\n                        case 'quick_cart':\n                            if(window.quick_cart.show){\n                                Shopify.getCart((cart) => {\n                                    if( window.quick_cart.type == 'popup'){\n                                        // $body.addClass('cart-modal-show');\n                                        // halo.updateDropdownCart(cart);\n                                    } else {\n                                        $body.addClass('cart-sidebar-show');\n                                        halo.updateSidebarCart(cart);\n                                    }\n\n                                    $target.removeClass('is-loading');\n                                    $('.background-overlay').removeClass('hold');\n                                });\n                            } else {\n                                halo.redirectTo(window.routes.cart);\n                            }\n\n                            break;\n                        case 'popup_cart_1':\n                            Shopify.getCart((cart) => {\n                                halo.updatePopupCart(cart, 1, variantId);\n                                halo.updateSidebarCart(cart);\n                                $body.addClass('add-to-cart-show');\n                                $target.removeClass('is-loading');\n                                $('.background-overlay').removeClass('hold');\n                            });\n\n                            break;\n                    }\n                }, input);\n            }\n        },\n\n        actionAddToCart2: function($target, productForm) {\n            const config = fetchConfig('javascript');\n            var originalMessage = window.variantStrings.submit,\n                waitMessage = window.variantStrings.addingToCart,\n                successMessage = window.variantStrings.addedToCart;\n            \n            if($target.hasClass('button-text-change')){\n                originalMessage = $target.text();\n            }\n\n            $target.addClass('is-loading');\n\n            let addToCartForm = document.querySelector('[data-type=\"add-to-cart-form\"]');\n            let formData = new FormData(addToCartForm);\n\n            const properties = document.querySelectorAll('input[name^=\"properties\"]')\n\n            properties.forEach(property => {\n              if (property.value == null) return;\n                if (property.type == 'file') {\n                  formData.append(property.name, property.files[0])\n                } else {\n                  formData.append(property.name, property.value)\n                }\n            })\n\n            const enoughInStock = halo.checkSufficientStock(productForm);\n            if (!enoughInStock && $body.hasClass('quickshop-popup-show')) {\n                alert(window.cartStrings.addProductOutQuantity);\n                $target.removeClass('is-loading');\n                return \n            }\n\n            const addItemToCart = (variantId) => {\n                fetch(window.Shopify.routes.root + 'cart/add.js', {\n                    method: 'POST',\n                    body: formData\n                })\n                .then(response => {\n                    return response.json();\n                })\n                .catch((error) => {\n                    console.error('Error:', error);\n                })\n                .finally(() => {\n                    if ($body.hasClass('quickshop-popup-show')) {\n                        $body.removeClass('quickshop-popup-show');\n                    }\n    \n                    if($body.hasClass('quick-view-show')){\n                        if (window.after_add_to_cart.type == 'cart') {\n                            halo.redirectTo(window.routes.cart);\n                        } else {\n                            Shopify.getCart((cartTotal) => {\n                                $body.find('[data-cart-count]').text(cartTotal.item_count);\n                                $target.removeClass('is-loading');\n                            });\n                        }\n                    } else {\n                        switch (window.after_add_to_cart.type) {\n                            case 'cart':\n                                halo.redirectTo(window.routes.cart);\n                            \n                                break;\n                            case 'quick_cart':\n                                if(window.quick_cart.show){\n                                    Shopify.getCart((cart) => {\n                                        if( window.quick_cart.type == 'popup'){\n                                            // $body.addClass('cart-modal-show');\n                                            // halo.updateDropdownCart(cart);\n                                        } else {\n                                            $body.addClass('cart-sidebar-show');\n                                            halo.updateSidebarCart(cart);\n                                        }\n                                        \n                                        $target.removeClass('is-loading');\n                                    });\n                                } else {\n                                    halo.redirectTo(window.routes.cart);\n                                }\n                                \n                                break;\n                            case 'popup_cart_1':\n                                Shopify.getCart((cart) => {\n                                    halo.updatePopupCart(cart, 1, variantId);\n                                    halo.updateSidebarCart(cart);\n                                    $body.addClass('add-to-cart-show');\n                                    $target.removeClass('is-loading');\n                                });\n    \n                                break;\n                        }\n                    }\n                });\n            }\n\n            fetch(window.Shopify.routes.root + 'cart.js', {\n                method: 'GET',\n            })\n            .then(response => {\n                return response.json();\n            }).then(response => { \n                const variantId = parseInt($(addToCartForm).serialize().split('id=')[1])\n                const item = response.items.find(item => item.variant_id == variantId)\n                const currentQuantity = item?.quantity \n                const currentProductId = item?.product_id\n                const moreQuantity = parseInt(productForm.find('[data-inventory-quantity]').val()) \n                const maxQuantity = parseInt(productForm.find('[data-inventory-quantity]').data('inventory-quantity'))\n                const saleOutStock = document.getElementById('product-add-to-cart').dataset.available === 'true' | false\n\n                if (!currentQuantity || !maxQuantity || saleOutStock) return addItemToCart(variantId)\n                var arrayInVarName = `selling_array_${currentProductId}`,\n                arrayAvailableVarName = `product_available_array_${currentProductId}`\n                itemInArray = window[arrayInVarName],\n                itemAvailableArray = window[arrayAvailableVarName],\n                itemStatus = itemInArray[variantId],\n                itemAvailable = itemAvailableArray[variantId];\n                if(itemStatus == 'deny' && itemAvailable == 'false') {\n                  if (currentQuantity + moreQuantity > maxQuantity)  {\n                      const remainingQuantity = maxQuantity - currentQuantity \n                      throw new Error(`You ${remainingQuantity > 0 ? `can only add ${remainingQuantity}` : 'cannot add'} more of the items into the cart`)\n                  } else {\n                      addItemToCart(variantId);\n                  }\n                } else {\n                  addItemToCart(variantId);\n                }\n            }).catch(err => {\n                this.showWarning(err)\n            }).finally(() => {\n                $target.removeClass('is-loading');\n            })\n        },\n\n        checkSufficientStock: function(productForm) {\n            const maxValidQuantity = productForm.find('[data-inventory-quantity]').data('inventory-quantity')\n            const inputQuantity = parseInt(productForm.find('[data-inventory-quantity]').val())\n            \n            return maxValidQuantity >= inputQuantity\n        },  \n\n        updateContentQuickshopOption3: function(handle){\n            var quickShopPopup = $('#halo-quickshop-popup-option-3'),\n                quickShopPopupContent = quickShopPopup.find('.halo-popup-content');\n\n            $.ajax({\n                type: 'get',\n                url: window.routes.root + '/products/' + handle + '?view=ajax_quick_shop',\n                beforeSend: function () {\n                    $('[data-quick-view-popup] .halo-popup-content').empty()\n                },\n                success: function (data) {\n                    quickShopPopupContent.html(data);       \n                },\n                error: function (xhr, text) {\n                    // alert($.parseJSON(xhr.responseText).description);\n                    halo.showWarning($.parseJSON(xhr.responseText).description);\n                },\n                complete: function () {\n                    var $scope = quickShopPopup.find('.quickshop');\n                    \n                    halo.productImageGallery($scope);\n                    setTimeout(() => {\n                        $body.addClass('quickshop-popup-show');\n                    }, 150)\n                }\n            });\n        },\n        \n        appendProductQuickShopOption2: function(product) {\n            //  Append Product Popup Quick Shop 2 Show Mobile\n            if (window.innerWidth <= 767) {\n                var quickshopMobilePopup = $doc.find('#halo-card-mobile-popup');\n                var quickshopForm = product.clone();\n                quickshopMobilePopup.find('.halo-popup-content').empty();\n                quickshopForm.find('.card-product__group').remove();\n                quickshopMobilePopup.find('.halo-popup-content').append(quickshopForm);\n\n                var form = quickshopMobilePopup.find('[data-quickshop] form').eq('0');\n                var mobilePopupId = form.attr('id') + 'mobile';\n                form.attr('id', mobilePopupId);\n                var optionInputs = form.find('.single-option');\n                var optionLabels = form.find('.single-label');\n\n                optionInputs.each((index, optionInput) => {\n                    $(optionInput).attr('id', $(optionInput).attr('id') + '-mobile');\n                })\n                \n                optionLabels.each((index, optionLabel) => {\n                    $(optionLabel).attr('for', $(optionLabel).attr('for') + '-mobile');\n                })\n\n                quickshopMobilePopup.addClass('show');\n\n                $doc.on('click', (e) => {\n                    var $target = $(e.target)\n                    if ($target.hasClass('background-overlay')) {\n                        quickshopMobilePopup.removeClass('show');\n                        $body.removeClass('quick_shop_popup_mobile');\n                        product.removeClass('quickshop-popup-show');\n                    }\n                })\n            } \n        },\n\n        isRunningInIframe: function() {\n            try {\n                return window.self !== window.top;\n            } catch (e) {\n                return true;\n            }\n        },\n\n        redirectTo: function(url){\n            if (halo.isRunningInIframe() && !window.iframeSdk) {\n                window.top.location = url;\n            } else {\n                window.location = url;\n            }\n        },\n\n        initQuickCart: function() {\n            if(window.quick_cart.show){\n                if(window.quick_cart.type == 'popup'){\n                    // halo.initDropdownCart();\n                } else {\n                    halo.initSidebarCart();\n                }\n            }\n\n            halo.initEventQuickCart();\n        },\n\n        initEventQuickCart: function(){\n            halo.removeItemQuickCart();\n            halo.updateQuantityItemQuickCart();\n            halo.editQuickCart();\n        },\n\n        productCollectionCartSlider: function(){\n            var productCart = $('[data-product-collection-cart]');\n\n            productCart.each((index, element) => {\n                var self = $(element),\n                    productGrid = self.find('.products-carousel'),\n                    itemDots = productGrid.data('item-dots'),\n                    itemArrows = productGrid.data('item-arrows');\n\n                if(productGrid.length > 0){\n                    if(!productGrid.hasClass('slick-initialized')){\n                        productGrid.slick({\n                            mobileFirst: true,\n                            adaptiveHeight: false,\n                            infinite: false,\n                            vertical: false,\n                            slidesToShow: 1.4,\n                            slidesToScroll: 1,\n                            dots: true,\n                            arrows: false,\n                            nextArrow: window.arrows.icon_next,\n                            prevArrow: window.arrows.icon_prev,\n                            rtl: window.rtl_slick,\n                            responsive: [\n                            {\n                                breakpoint: 786,\n                                settings: {\n                                    dots: itemDots,\n                                    arrows: itemArrows\n                                }\n                            }]\n                        });\n                    }\n                }\n            });\n        },\n\n        updatePopupCart: function(cart, layout, variantId) {\n            var item = cart.items.filter(item => item.id == variantId)[0],\n                popup = $('[data-add-to-cart-popup]'),\n                product = popup.find('.product-added'),\n                productTitle = product.find('.product-title'),\n                productImage = product.find('.product-image'),\n                title = item.title || item.product_title,\n                image = item.featured_image,\n                img = '<img src=\"'+ image.url +'\" alt=\"'+ image.alt +'\" title=\"'+ image.alt +'\"/>';\n\n            productImage.attr('href', item.url).html(img);\n\n            productTitle\n                .find('.title')\n                .attr('href', item.url)\n                .empty()\n                .append(title);\n\n            Shopify.getCart((cartTotal) => {\n                $body.find('[data-cart-count]').text(cartTotal.item_count);\n            });\n        },\n\n        initSidebarCart: function() {\n            var cartIcon = $('[data-cart-sidebar]');\n            let checkInitSideBarCart = true;\n            cartIcon.on('click', () => {\n                if (!checkInitSideBarCart) return\n                checkInitSideBarCart = false\n                Shopify.getCart((cart) => {\n                    halo.updateSidebarCart(cart);\n                })\n            })\n            if ($body.hasClass('template-cart')) {\n                cartIcon.on('click', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    $('html, body').animate({\n                        scrollTop: 0\n                    }, 700);\n                });\n            } else {\n                cartIcon.on('click', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    \n                    $body.addClass('cart-sidebar-show');\n                });\n            }\n\n            $doc.on('click', '[data-close-cart-sidebar]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                if ($body.hasClass('cart-sidebar-show')) {\n                    $body.removeClass('cart-sidebar-show');\n                }\n            });\n\n            $body.on('click', '.background-overlay', (event) => {\n                if ($body.hasClass('cart-sidebar-show') && !$body.hasClass('edit-cart-show') && !$body.hasClass('term-condition-show')&& !$body.hasClass('term-delivery-condition-show') && !$body.hasClass('has-warning')) {\n                    if (($(event.target).closest('#halo-cart-sidebar').length === 0) && \n                        ($(event.target).closest('[data-cart-sidebar]').length === 0) && \n                        ($(event.target).closest('[data-edit-cart-popup]').length === 0) && \n                        ($(event.target).closest('[data-warning-popup]').length === 0) && \n                        ($(event.target).closest('[data-term-delivery-condition-popup]').length === 0) && \n                        ($(event.target).closest('[data-term-condition-popup]').length === 0)){\n                        $body.removeClass('cart-sidebar-show');\n                    }\n                }\n            })\n        },\n\n        updateSidebarCart: function(cart) {\n            if(!$.isEmptyObject(cart)){\n                const $cartDropdown = $('#halo-cart-sidebar .halo-sidebar-wrapper .previewCart-wrapper');\n                const $cartLoading = '<div class=\"loading-overlay loading-overlay--custom\">\\\n                        <div class=\"loading-overlay__spinner\">\\\n                            <svg aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" class=\"spinner\" viewBox=\"0 0 66 66\" xmlns=\"http://www.w3.org/2000/svg\">\\\n                                <circle class=\"path\" fill=\"none\" stroke-width=\"6\" cx=\"33\" cy=\"33\" r=\"30\"></circle>\\\n                            </svg>\\\n                        </div>\\\n                    </div>';\n                const loadingClass = 'is-loading';\n\n                $cartDropdown\n                    .addClass(loadingClass)\n                    .prepend($cartLoading);\n\n                $.ajax({\n                    type: 'GET',\n                    url: window.routes.root + '/cart?view=ajax_side_cart',\n                    cache: false,\n                    success: function (data) {\n                        var response = $(data);\n\n                        $cartDropdown\n                            .removeClass(loadingClass)\n                            .html(response);\n\n                        halo.dispatchChangeForShippingMessage();\n                    },\n                    error: function (xhr, text) {\n                        halo.showWarning($.parseJSON(xhr.responseText).description);\n                    },\n                    complete: function () {\n                        $body.find('[data-cart-count]').text(cart.item_count);\n                        halo.productCollectionCartSlider();\n                        halo.updateGiftWrapper();\n                        if (halo.checkNeedToConvertCurrency()) {\n                          Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                        };\n                        document.dispatchEvent(new CustomEvent('cart-update', { detail: cart }));\n                    }\n                });\n            }\n        },\n\n        dispatchChangeForShippingMessage: function() {\n            document.querySelectorAll('[data-free-shipping-wrapper]').forEach(freeShippingWrapper => {\n                const changeEvent = new Event('change', { bubbles: true })\n                freeShippingWrapper.dispatchEvent(changeEvent);\n            })\n        },\n\n        updateGiftWrapper: function() {\n            let debounce \n            $('#gift-wrapping').off('click').on('click', (event) => {\n                event.stopPropagation()\n                event.preventDefault()\n                const $target = $(event.currentTarget);\n                clearTimeout(debounce)\n                debounce = setTimeout(() => {\n                    const variantId = event.target.dataset.giftId;\n                    Shopify.addItem(variantId, 1, $target, () => {\n                        Shopify.getCart((cart) => {\n                            halo.updateSidebarCart(cart);\n                        });\n                    }); \n                }, 250)\n            });\n\n            $('#cart-gift-wrapping').off('click').on('click', (event) => {\n                event.stopPropagation()\n                event.preventDefault()\n\n                var $target = $(event.currentTarget),\n                    text = $target.attr('data-adding-text');\n                $target.text(text);\n\n                clearTimeout(debounce)\n                debounce = setTimeout(() => {\n                    const variantId = event.target.dataset.giftId;\n                    Shopify.addItem(variantId, 1, $target, () => {\n                        Shopify.getCart((cart) => {\n                            halo.updateCart(cart)\n                        });\n                    }); \n                }, 250)\n            });\n        },\n\n        removeItemQuickCart: function () {\n            $doc.on('click', '[data-cart-remove]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var $target = $(event.currentTarget),\n                    productId = $target.attr('data-cart-remove-id'),\n                    text = $('#cart-gift-wrapping').attr('data-add-text'),\n                    productLine = $target.data('line');\n\n                $('#cart-gift-wrapping').text(text);\n\n                Shopify.removeItem(productLine, (cart) => {\n                    if($body.hasClass('template-cart')){\n                        halo.updateCart(cart);\n                    } else if($body.hasClass('cart-modal-show')){\n                        // halo.updateDropdownCart(cart);\n                    } else if($body.hasClass('cart-sidebar-show')) {\n                        halo.updateSidebarCart(cart);\n                    }\n                });\n            });\n        },\n\n        updateCart: function(cart){\n            if(!$.isEmptyObject(cart)){\n                const $sectionId = $('#main-cart-items').data('id');\n                const $cart = $('[data-cart]')\n                const $cartContent = $cart.find('[data-cart-content]');\n                const $cartTotals = $cart.find('[data-cart-total]');\n                const $cartLoading = '<div class=\"loading-overlay loading-overlay--custom\">\\\n                        <div class=\"loading-overlay__spinner\">\\\n                            <svg aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" class=\"spinner\" viewBox=\"0 0 66 66\" xmlns=\"http://www.w3.org/2000/svg\">\\\n                                <circle class=\"path\" fill=\"none\" stroke-width=\"6\" cx=\"33\" cy=\"33\" r=\"30\"></circle>\\\n                            </svg>\\\n                        </div>\\\n                    </div>';\n                const loadingClass = 'is-loading';\n\n                $cart\n                    .addClass(loadingClass)\n                    .prepend($cartLoading);\n\n                $.ajax({\n                    type: 'GET',\n                    url: `/cart?section_id=${$sectionId}`,\n                    cache: false,\n                    success: function (data) {\n                        var jsPreventedData = data.replaceAll('cart-coupon-discount', 'div');\n                        var response = $(jsPreventedData);\n\n                        $cart.removeClass(loadingClass);\n                        $cart.find('.loading-overlay').remove();\n\n                        if(cart.item_count > 0){\n                            var contentCart =  response.find('[data-cart-content] .cart').html(),\n                                subTotal = response.find('[data-cart-total] .cart-total-subtotal').html(),\n                                grandTotal = response.find('[data-cart-total] .cart-total-grandtotal').html(),\n                                savings = response.find('[data-cart-total] .cart-total-savings').html();\n\n                            $cartContent.find('.cart').html(contentCart);\n                            $cartTotals.find('.cart-total-subtotal').html(subTotal);\n                            $cartTotals.find('.cart-total-grandtotal').html(grandTotal);\n                            $cartTotals.find('.cart-total-savings').html(savings);\n\n                            if(response.find('.haloCalculatorShipping').length > 0){\n                                var calculatorShipping = response.find('.haloCalculatorShipping');\n\n                                $cart.find('.haloCalculatorShipping').replaceWith(calculatorShipping);\n                            }\n                        } else {\n                            var contentCart =  response.find('#main-cart-items').html(),\n                                headerCart =  response.find('.page-header').html();\n                                cartCountdownText1 = response.find('.cart-countdown').data('coundown-text-empty-1');\n                                cartCountdownText2 = response.find('.cart-countdown').data('coundown-text-empty-2');\n                                cartCountdownProductUrl = response.find('.cart-countdown').data('coundown-prd-empty-url');\n                                cartCountdownProductTitle = response.find('.cart-countdown').data('coundown-prd-empty-title');\n                            var cartCountdownHtml = cartCountdownText1 + ' <a href=\"'+ cartCountdownProductUrl +'\" class=\"cart-countdown-product link-effect p-relative\"><span class=\"text\">'+ cartCountdownProductTitle +'</span></a> ' + cartCountdownText2;\n\n                            $('#main-cart-items').html(contentCart);\n                            $('.page-header').html(headerCart);\n                            $('.cart-countdown .text-wrap').html(cartCountdownHtml);\n                        }\n                    },\n                    error: function (xhr, text) {\n                        halo.showWarning($.parseJSON(xhr.responseText).description);\n                    },\n                    complete: function () {\n                        $body.find('[data-cart-count]').text(cart.item_count);\n                        halo.dispatchChangeForShippingMessage();\n                        if (halo.checkNeedToConvertCurrency()) {\n                            Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                        }\n                        if ($body.hasClass('template-cart')) {\n                            const giftWrapping = document.getElementById('cart-gift-wrapping')\n                            const isChecked = giftWrapping?.dataset.isChecked\n                            const variantId = giftWrapping?.dataset.giftId\n                            if (isChecked === 'true') {\n                                $('#is-a-gift').hide()\n                                const giftCardRemoveButton = document.querySelector(`[data-cart-remove-id=\"${variantId}\"]`)\n                                const giftCardQuantityInput = document.querySelector(`[data-cart-quantity-id=\"${variantId}\"]`)\n\n                                giftCardRemoveButton?.addEventListener('click', () => {\n                                    giftWrapping.dataset.isChecked = 'false'\n                                })\n\n                                giftCardQuantityInput?.addEventListener('change', (e) => {\n                                    const value = Number(e.target.value)\n                                    if (value  <= 0) {\n                                        giftWrapping.dataset.isChecked = 'false'\n                                    }\n                                })\n                            } else {\n                                $('#is-a-gift').show()\n                            }\n                        }\n                        \n                        document.dispatchEvent(new CustomEvent('cart-update', { detail: cart }));\n                    }\n                });\n            }\n        },\n\n        updateQuantityItemQuickCart: function(){\n            $doc.on('change', '[data-cart-quantity]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var $target = $(event.currentTarget),\n                    productId = $target.attr('data-cart-quantity-id'),\n                    productLine = $target.data('line'),\n                    quantity = parseInt($target.val()),\n                    stock = parseInt($target.data('inventory-quantity'));\n                let enoughInStock = true;\n               \n                if (stock < quantity && stock > 0) {\n                  var arrayInVarName = `cart_selling_array_${event.currentTarget.closest('cart-update-quantity').dataset.product}`,\n                    itemInArray = window[arrayInVarName],\n                    itemStatus = itemInArray[event.currentTarget.closest('cart-update-quantity').dataset.variant];\n                  if(itemStatus == 'deny') {\n                    quantity = stock;\n                    enoughInStock = false;\n                  }\n                }\n\n                Shopify.changeItem(productLine, quantity, (cart) => {\n                    if($body.hasClass('template-cart')){\n                        halo.updateCart(cart);\n                    } else if($body.hasClass('cart-modal-show')){\n                        // halo.updateDropdownCart(cart);\n                    } else if($body.hasClass('cart-sidebar-show')) {\n                        halo.updateSidebarCart(cart);\n                    }\n                    if (!enoughInStock) halo.showWarning(`${ window.cartStrings.addProductOutQuantity.replace('[maxQuantity]', quantity) }`)\n                });\n            });\n        },\n\n        editQuickCart: function() {\n            let checkLoadEC = true; \n\n            $doc.on('click', '[data-open-edit-cart]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var $target = $(event.currentTarget),\n                    url = $target.data('edit-cart-url'),\n                    itemId = $target.data('edit-cart-id'),\n                    itemLine = $target.data('line'),\n                    quantity = $target.data('edit-cart-quantity'),\n                    option = $target.parents('.previewCartItem').find('previewCartItem-variant').text();\n\n                const modal = $('[data-edit-cart-popup]'),\n                    modalContent = modal.find('.halo-popup-content');\n\n                if (checkLoadEC) {\n                    checkLoadEC = false;\n                    const $editCart = document.querySelector('.halo-edit-cart-popup');\n                    const urlStyleEC = $editCart.dataset.urlStyleEditCart;\n                    const urlScriptEC = $editCart.dataset.urlScriptEditCart;\n    \n                    halo.buildStyleSheet(urlStyleEC, $editCart);\n                    halo.buildScript(urlScriptEC);\n                }\n\n                $.ajax({\n                    type: 'get',\n                    url: url,\n                    cache: false,\n                    dataType: 'html',\n                    beforeSend: function() {\n                        if($body.hasClass('template-cart')){\n                            // halo.showLoading();\n                        }\n                    },\n                    success: function(data) {\n                        modalContent.html(data);\n                        modalContent\n                            .find('[data-template-cart-edit]')\n                            .attr({\n                                'data-cart-update-id': itemId,\n                                'data-line': itemLine\n                            });\n\n                        var productItem = modalContent.find('.product-edit-item');\n                        productItem.find('input[name=\"quantity\"]').val(quantity);\n                    },\n                    error: function(xhr, text) {\n                        // alert($.parseJSON(xhr.responseText).description);\n                        halo.showWarning($.parseJSON(xhr.responseText).description);\n                        if($body.hasClass('template-cart')){\n                            // halo.hideLoading();\n                        }\n                    },\n                    complete: function () {\n                        $body.addClass('edit-cart-show');\n\n                        if($body.hasClass('template-cart')){\n                            // halo.hideLoading();\n                        }\n\n                        if (halo.checkNeedToConvertCurrency()) {\n                            Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                        };\n\n                    }\n                });\n            });\n\n            $doc.on('click', '[data-close-edit-cart]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.removeClass('edit-cart-show');\n            });\n\n            $doc.on('click', (event) => {\n                if ($body.hasClass('edit-cart-show')) {\n                    if (($(event.target).closest('[data-edit-cart-popup]').length === 0) && ($(event.target).closest('[data-open-edit-cart]').length === 0)){\n                        $body.removeClass('edit-cart-show');\n                    }\n                }\n            });\n\n            halo.addMoreItemEditCart();\n            halo.addAllItemCartEdit();\n        },\n\n        addMoreItemEditCart: function(){\n            $doc.on('click', '[data-edit-cart-add-more]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var itemWrapper = $('[data-template-cart-edit]'),\n                    currentItem = $(event.target).parents('.product-edit-item'),\n                    count = parseInt(itemWrapper.attr('data-count')),\n                    cloneProduct = currentItem.clone().removeClass('product-edit-itemFirst');\n                    cloneProductId = cloneProduct.attr('id') + count;\n\n                cloneProduct.attr('id', cloneProductId);\n\n                console.log(cloneProductId)\n\n                halo.updateClonedProductAttributes(cloneProduct, count);\n\n                cloneProduct.insertAfter(currentItem);\n\n                count = count + 1;\n                itemWrapper.attr('data-count', count);\n            });\n\n            $doc.on('click', '[data-edit-cart-remove]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var currentItem = $(event.target).parents('.product-edit-item');\n\n                currentItem.remove();\n            });\n        },\n\n        updateClonedProductAttributes: function(product, count){\n            var form = $('.shopify-product-form', product),\n                formId = form.attr('id'),\n                newFormId = formId + count;\n\n            form.attr('id', newFormId);\n\n            $('.product-form__radio', product).each((index, element) => {\n                var formInput = $(element),\n                    formLabel = formInput.next(),\n                    id = formLabel.attr('for'),\n                    newId = id + count,\n                    formInputName = formInput.attr('name');\n\n                formLabel.attr('for', newId);\n\n                formInput.attr({\n                    id: newId,\n                    name: formInputName + count\n                });\n            });\n        },\n\n        addAllItemCartEdit: function() {\n            $doc.on('click', '#add-all-to-cart', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var $target = $(event.currentTarget),\n                    cartEdit = $('[data-template-cart-edit]'),\n                    product = cartEdit.find('.product-edit-item.isChecked'),\n                    productId = cartEdit.attr('data-cart-update-id');\n                    productLine = cartEdit.data('line');\n\n                if(product.length > 0){\n                    $target.addClass('is-loading');\n\n                    Shopify.removeItem(productLine, (cart) => {\n                        if(!$.isEmptyObject(cart)) {\n                            var productHandleQueue = [];\n\n                            var ajax_caller = function(data) {\n                                return $.ajax(data);\n                            }\n\n                            product.each((index, element) => {\n                                var item = $(element),\n                                    variantId = item.find('input[name=\"id\"]').val(),\n                                    qty = parseInt(item.find('input[name=\"quantity\"]').val());\n\n                                productHandleQueue.push(ajax_caller({\n                                    type: 'post',\n                                    url: window.routes.root + '/cart/add.js',\n                                    data: 'quantity=' + qty + '&id=' + variantId,\n                                    dataType: 'json',\n                                    async: false\n                                }));\n                            });\n\n                            if(productHandleQueue.length > 0) {\n                                $.when.apply($, productHandleQueue).done((event) => {\n                                    setTimeout(function(){ \n                                        $target.removeClass('is-loading');\n                                    }, 1000);\n\n                                    Shopify.getCart((cart) => {\n                                        $body.removeClass('edit-cart-show');\n\n                                        if($body.hasClass('template-cart')){\n                                            halo.updateCart(cart);\n                                        } else if($body.hasClass('cart-modal-show')){\n                                            // halo.updateDropdownCart(cart);\n                                        } else if($body.hasClass('cart-sidebar-show')) {\n                                            halo.updateSidebarCart(cart);\n                                        }\n                                    });\n                                });\n                            }\n                        }\n                    });\n                } else {\n                    alert(window.variantStrings.addToCart_message);\n                }\n            });\n        },\n\n        initNotifyInStock: function() {\n            $doc.on('click', '[data-open-notify-popup]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var $target = $(event.currentTarget);\n\n                halo.notifyInStockPopup($target);\n            });\n\n            $doc.on('click', '[data-close-notify-popup]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.removeClass('notify-me-show');\n                setTimeout(() => {\n                    $('.halo-notify-popup .form-field').removeClass('hidden')\n                    $('.halo-notify-popup .form-message').addClass('hidden')\n                }, 700)\n            });\n\n            $doc.on('click', (event) => {\n                if($body.hasClass('notify-me-show')){\n                    if (($(event.target).closest('[data-open-notify-popup]').length === 0) && ($(event.target).closest('[data-notify-popup]').length === 0)){\n                        $body.removeClass('notify-me-show');\n                        setTimeout(() => {\n                            $('.halo-notify-popup .form-field').removeClass('hidden')\n                            $('.halo-notify-popup .form-message').addClass('hidden')\n                        }, 700)\n                    }\n                }\n            });\n        },\n\n        notifyInStockPopup: function($target){\n            var variant,\n                product = $target.parents('.product-item'),\n                title = product.find('.card-title').data('product-title'),\n                link = window.location.host + product.find('.card-title').data('product-url'),\n                popup = $('[data-notify-popup]');\n\n            if($target.hasClass('is-notify-me')){\n                variant = product.find('.card-swatch .swatch-label.is-active').attr('title');\n            } else {\n                variant = $target.data('variant-id');\n            }\n\n            popup.find('.halo-notify-product-title').val($.trim(title));\n            popup.find('.halo-notify-product-link').val(link);\n\n            if(variant){\n                popup.find('.halo-notify-product-variant').val(variant);\n            }\n            $body.addClass('notify-me-show');\n        },\n\n        initAskAnExpert: function(){\n            $doc.on('click', '[data-open-ask-an-expert]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var askAnExpert = $('[data-ask-an-expert-popup]'),\n                    modalContent = askAnExpert.find('.halo-popup-content'),\n                    url;\n\n                if($body.hasClass('template-product')){\n                    var handle = $('.productView').data('product-handle');\n\n                    url = window.routes.root + '/products/' + handle + '?view=ajax_ask_an_expert';\n                } else if($body.hasClass('quick-view-show')){\n                    var handle = $('.halo-quickView').data('product-quickview-handle');\n\n                    url = window.routes.root + '/products/' + handle + '?view=ajax_ask_an_expert';\n                } else {\n                    url = window.routes.root + '/search?view=ajax_ask_an_expert';\n                }\n\n                $.ajax({\n                    type: 'get',\n                    url: url,\n                    beforeSend: function () {\n                        modalContent.empty();\n                    },\n                    success: function (data) {\n                        modalContent.html(data);\n                    },\n                    error: function (xhr, text) {\n                        alert($.parseJSON(xhr.responseText).description);\n                    },\n                    complete: function () {\n                        $body.addClass('ask-an-expert-show');\n                    }\n                });\n            });\n\n            $doc.on('click', '[data-close-ask-an-expert]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.removeClass('ask-an-expert-show');\n                if($body.hasClass('recently-popup-mb-show')){\n                    $body.removeClass('recently-popup-mb-show');\n                }\n            });\n\n            $doc.on('click', (event) => {\n                if($body.hasClass('ask-an-expert-show')){\n                    if (($(event.target).closest('[data-open-ask-an-expert]').length === 0) && ($(event.target).closest('#halo-ask-an-expert-popup').length === 0)){\n                        $body.removeClass('ask-an-expert-show');\n                    }\n                }\n            });\n        },\n\n        resetForm: function(form){\n            $('.form-field', form).removeClass('form-field--success form-field--error');\n            $('input[type=email], input[type=text], textarea', form).val('');\n        },\n\n        formMessage: function() {\n            const error = window.location.href.indexOf('form_type=contact') > -1;\n\n            if (window.location.href.indexOf('contact_posted=true') > -1 || error) {\n                const formMessage = $(`[data-form-message=\"${$.cookie('contact_form')}\"]`);\n                let delay = 400;\n                \n                if ($body.hasClass('template-product')) delay = 1600;\n    \n                switch(formMessage.data('form-message')) {\n                    case 'ask':\n                        setTimeout(() => {$body.addClass('ask-an-expert-show')}, delay)\n                        this.changeStateforContactForm(formMessage, error)\n                        $('.halo-notify-popup .form-message').addClass('hidden')\n                        break;\n                    case 'contact':\n                        formMessage.removeClass('hidden')\n                        this.changeStateforContactForm(formMessage, error)\n                        $('.halo-notify-popup .form-message').addClass('hidden')\n                        break;\n                    case 'notifyMe':\n                        $('.halo-notify-popup .form-field').addClass('hidden')\n                        setTimeout(() => {$body.addClass('notify-me-show')}, delay)\n                        this.changeStateforContactForm(formMessage, error)\n                        break;\n                }\n            }\n\n            $(document).on('click', '[data-button-message]', (event) => {\n                $.cookie('contact_form', $(event.target).data('button-message'), {\n                    expires: 1,\n                    path: '/',\n                });\n            })\n        },\n\n        changeStateforContactForm(formMessage, error) {\n            window.history.pushState('object', document.title, location.href.split('?')[0])\n            if (error) {$('.newsletter-form__message--error').addClass('hidden'); $('html, body').animate({scrollTop: formMessage.offset().top - window.innerHeight/2}, 700)}\n        },\n\n        initCompareProduct: function() {\n            var $compareLink = $('[data-compare-link]');\n\n            if(window.compare.show){\n                halo.setLocalStorageProductForCompare($compareLink);\n                halo.setAddorRemoveProductForCompare($compareLink);\n                halo.setProductForCompare();\n\n                $doc.on('click', '[data-close-compare-product-popup]', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    $body.removeClass('compare-product-show');\n                });\n\n                $doc.on('click', (event) => {\n                    if($body.hasClass('compare-product-show')){\n                        if (($(event.target).closest('[data-compare-link]').length === 0) && ($(event.target).closest('[data-compare-product-popup]').length === 0)){\n                            $body.removeClass('compare-product-show');\n                        }\n                    }\n                });\n            }\n        },\n\n        setLocalStorageProductForCompare: function($link) {\n            var count = JSON.parse(localStorage.getItem('compareItem')),\n                items = $('[data-product-compare-handle]');\n\n            if(count !== null){ \n                if(items.length > 0) {\n                    items.each((index, element) => {\n                        var item = $(element),\n                            handle = item.data('product-compare-handle');\n\n                        if(count.indexOf(handle) >= 0) {\n                            item.find('.compare-icon').addClass('is-checked');\n                            item.find('.text').text(window.compare.added);\n                            item.find('input').prop('checked', true);\n                        } else {\n                            item.find('.compare-icon').removeClass('is-checked');\n                            item.find('.text').text(window.compare.add);\n                            item.find('input').prop('checked', false);\n                        }\n                    });\n\n                    halo.updateCounterCompare($link);\n                }\n            }\n        },\n\n        setAddorRemoveProductForCompare: function($link) {\n            $doc.on('change', '[data-product-compare] input', (event) => {\n                var $this = $(event.currentTarget),\n                    item = $this.parents('.card-compare'),\n                    handle = $this.val(),\n                    count = JSON.parse(localStorage.getItem('compareItem'));\n\n                count = halo.uniqueArray(count);\n\n                if(event.currentTarget.checked) {\n                    item.find('.compare-icon').addClass('is-checked');\n                    item.find('.text').text(window.compare.added);\n                    item.find('input').prop('checked', true);\n                    halo.incrementCounterCompare(count, handle, $link);\n                } else {\n                    item.find('.compare-icon').removeClass('is-checked');\n                    item.find('.text').text(window.compare.add);\n                    item.find('input').prop('checked', false);\n                    halo.decrementCounterCompare(count, handle, $link);\n                }\n            });\n        },\n\n        setProductForCompare: function() {\n            $doc.on('click', '[data-compare-link]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var list = JSON.parse(localStorage.getItem('compareItem'));\n\n                if (list.length <= 1) {\n                    alert(window.compare.message);\n\n                    return false;\n                } else {\n                    halo.updateContentCompareProduct(list, 0);\n                }\n            });\n\n            $doc.on('click', '[data-compare-remove]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var id = $(event.currentTarget).data('compare-item'),\n                    compareTable = $('[data-compare-product-popup] .compareTable'),\n                    item = compareTable.find('.compareTable-row[data-product-compare-id=\"'+ id +'\"]'),\n                    handle = item.data('compare-product-handle');\n\n                if(compareTable.find('tbody .compareTable-row').length == 1){\n                    // alert(window.compare.message);\n                    item.remove();\n                    var count = JSON.parse(localStorage.getItem('compareItem')),\n                        index = count.indexOf(handle),\n                        $compareLink = $('[data-compare-link]');\n\n                    if (index > -1) {\n                        count.splice(index, 1);\n                        count = halo.uniqueArray(count);\n                        localStorage.setItem('compareItem', JSON.stringify(count));\n\n                        halo.setLocalStorageProductForCompare($compareLink);\n                        halo.updateCounterCompare($compareLink);\n                    }\n\n                    $body.removeClass('compare-product-show');\n                } else {\n                    item.remove();\n                    \n                    var count = JSON.parse(localStorage.getItem('compareItem')),\n                        index = count.indexOf(handle),\n                        $compareLink = $('[data-compare-link]');\n\n                    if (index > -1) {\n                        count.splice(index, 1);\n                        count = halo.uniqueArray(count);\n                        localStorage.setItem('compareItem', JSON.stringify(count));\n\n                        halo.setLocalStorageProductForCompare($compareLink);\n                        halo.updateCounterCompare($compareLink);\n                    }\n                }\n            });\n        },\n\n        updateCounterCompare: function($link) {\n            var count = JSON.parse(localStorage.getItem('compareItem'));\n\n            if (count.length > 1) {\n                $link.parent().addClass('is-show');\n                $link.find('span.countPill').html(count.length);\n            } else {\n                $link.parent().removeClass('is-show');\n            }\n        },\n\n        uniqueArray: function(list) {\n            var result = [];\n\n            $.each(list, function(index, element) {\n                if ($.inArray(element, result) == -1) {\n                    result.push(element);\n                }\n            });\n\n            return result;\n        },\n\n        incrementCounterCompare: function(count, item, $link){\n            const index = count.indexOf(item);\n\n            count.push(item);\n            count = halo.uniqueArray(count);\n\n            localStorage.setItem('compareItem', JSON.stringify(count));\n\n            halo.updateCounterCompare($link);\n        },\n\n        decrementCounterCompare: function(count, item, $link){\n            const index = count.indexOf(item);\n\n            if (index > -1) {\n                count.splice(index, 1);\n                count = halo.uniqueArray(count);\n                localStorage.setItem('compareItem', JSON.stringify(count));\n\n                halo.updateCounterCompare($link);\n            }\n        },\n\n        updateContentCompareProduct: function(list, count){\n            const compareTable = $('[data-compare-product-popup] .compareTable'),\n                url = window.routes.root + '/products/' + list[count] + '?view=ajax_product_card_compare';\n\n            if (count == 0) compareTable.find('tbody').empty();\n\n            if (list.length > count) {\n                $.ajax({\n                    type: 'get',\n                    url: url,\n                    cache: false,\n                    success: function (data) {\n                        compareTable.find('tbody').append(data);\n                        count++;\n                        halo.updateContentCompareProduct(list, count);\n                    }\n                });\n            } else {\n                $body.addClass('compare-product-show');\n            }\n        },\n\n        initProductView: function($scope){\n            halo.productImageGallery($scope);\n            halo.productLastSoldOut($scope);\n            halo.productCustomerViewing($scope);\n            halo.productCountdown($scope);\n            halo.productSizeChart($scope);\n            halo.productCustomCursor($scope);\n            halo.productVideoGallery($scope);\n            halo.initVariantImageGroup($scope, window.variant_image_group);\n        },\n\n        initQuickView: function(){\n            let checkLoadQV = true;\n\n            $doc.on('click', '[data-open-quick-view-popup]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                if (checkLoadQV) {\n                    checkLoadQV = false;\n                    const $quickView = document.querySelector('.halo-quick-view-popup');\n                    const urlStyleProduct = $quickView.dataset.urlStyleProduct;\n                    const urlStyleQV = $quickView.dataset.urlStyleQuickView;\n                    const urlVariantsQV = $quickView.dataset.urlVariantsQuickView;\n                    const urlSortable = 'https://cdn.jsdelivr.net/npm/sortablejs@latest/Sortable.min.js';\n\n                    if (!document.body.matches('.qs3-loaded')) halo.buildStyleSheet(urlStyleProduct, $quickView);\n                    halo.buildStyleSheet(urlStyleQV, $quickView);\n                    halo.buildScript(urlVariantsQV);\n                    document.body.classList.add('qv-loaded');\n                    if (!document.body.matches('.sortable-loader')) {\n                        document.body.classList.add('sortable-loader');\n                        halo.buildScript(urlSortable);\n                    }\n                }\n\n                var handle = $(event.currentTarget).data('product-handle');\n\n                halo.updateContentQuickView(handle);\n            });\n\n            $doc.on('click', '[data-close-quick-view-popup]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.removeClass('quick-view-show');\n            });\n            \n            $('.background-overlay').off('click.closeQuickView').on('click.closeQuickView', e => {\n                if ($body.hasClass('quick-view-show') &&\n                       !$body.hasClass('cart-sidebar-show') && \n                       !$body.hasClass('ask-an-expert-show') && \n                       !$body.hasClass('size-chart-show') && \n                       !$body.hasClass('compare-color-show') && \n                       !$body.hasClass('term-condition-show') &&\n                       !$body.hasClass('term-delivery-condition-show')\n                   ) {\n                    $body.removeClass('quick-view-show');\n                }\n            });\n        },\n\n        updateContentQuickView: function(handle){\n            var popup = $('[data-quick-view-popup]'),\n                popupContent = popup.find('.halo-popup-content');\n\n            $.ajax({\n                type: 'get',\n                url: window.routes.root + '/products/' + handle + '?view=ajax_quick_view',\n                beforeSend: function () {\n                    popupContent.empty();\n                    $('#halo-quickshop-popup-option-3').find('.halo-popup-content').empty()\n                },\n                success: function (data) {\n                    popupContent.html(data);\n                },\n                error: function (xhr, text) {\n                    alert($.parseJSON(xhr.responseText).description);\n                },\n                complete: function () {\n                    var $scope = popup.find('.quickView');\n                    const items = $('.halo-popup-content .halo-compare-color-popup li.item'),\n                        tableList = $('.halo-popup-content .halo-compare-color-popup #sortTableList'),\n                        compareColorPopup = $('.halo-popup-content .halo-compare-color-popup'),\n                        sizeChartPopup = $('.halo-popup-content .halo-size-chart-popup');\n                    \n                    halo.productImageGallery($scope);\n                    halo.productLastSoldOut($scope);\n                    halo.productCustomerViewing($scope);\n                    halo.productCountdown($scope);\n                    halo.productSizeChart($scope);\n                    halo.setProductForWishlist(handle);\n                    halo.initVariantImageGroup($scope, window.variant_image_group_quick_view);\n\n                    $body.addClass('quick-view-show');\n\n                    if (window.Shopify && Shopify.PaymentButton) {\n                        Shopify.PaymentButton.init();\n                    }\n\n                    tableList.attr('id', 'quickViewSortTableList');\n\n                    items.each((index, element) => {\n                        const itemInput = $(element).find('.swatch-compare-color-option'),\n                            itemLabel = $(element).find('.swatch-compare-color-label'),\n                            itemId = itemInput.attr('id');\n\n                        itemInput\n                            .attr('id', `quickView-${itemId}`)\n                            .attr('name', `quickView-${itemId}`);\n                        itemLabel.attr('for', `quickView-${itemId}`);\n                    });\n\n                    compareColorPopup.attr('id', 'quickView-halo-compare-color-popup');\n                    sizeChartPopup.attr('id', 'quickView-halo-size-chart-popup');\n\n                    if ($('.halo-productView .addthis_inline_share_toolbox').length) {\n                        var html = $('.halo-productView .addthis_inline_share_toolbox').html();\n\n                        $('.halo-popup-content .share-button__button').click(function(){\n                            $('.halo-popup-content .addthis_inline_share_toolbox').append(html);\n                        });\n                    }\n\n                    const thisSortTable = document.getElementById('quickViewSortTableList');\n                    const thisImageList = $('.halo-popup-content .halo-compareColors-image');\n\n                    if (window.innerWidth >= 1025 && thisSortTable) {\n                        new Sortable(thisSortTable, {\n                            animation: 150\n                        });\n                    } else {\n                        onRemoveHandlerQuickView();\n                    }\n\n                    function onRemoveHandlerQuickView(){\n                        thisImageList.on('click', '.item', (event) => {\n                            event.preventDefault();\n\n                            var $target = event.currentTarget,\n                                itemId = $target.classList[1].replace('item-', ''),\n                                optionId = `swatch-compare-color-${itemId}`,\n                                item = $(document.getElementById(optionId));\n\n                            item.trigger('click');\n                        });\n                    }\n\n                    if (window.review.show_quick_view && $('.shopify-product-reviews-badge').length > 0 && window.SPR != null && typeof window.SPR.registerCallbacks === 'functions') {\n                        return window.SPR.registerCallbacks(), window.SPR.initRatingHandler(), window.SPR.initDomEls(), window.SPR.loadProducts(), window.SPR.loadBadges();\n                    }\n                }\n            });\n        },\n\n        productImageGallery: function($scope) {\n            var sliderNav = $scope.find('.productView-nav'),\n                sliderFor = $scope.find('.productView-for:not(\".mobile\")'),\n                sliderForMobile = $scope.find('.productView-for.mobile');\n\n            if(!sliderFor.hasClass('slick-initialized') && !sliderNav.hasClass('slick-initialized')) {\n                const navArrowsDesk = sliderNav.data('arrows-desk'),\n                    navArrowsMobi = sliderNav.data('arrows-mobi'),\n                    navCounterMobi = sliderNav.data('counter-mobi'),\n                    navMediaCount = sliderNav.data('media-count'),\n                    thumbnailToShow = parseInt(sliderFor.data('max-thumbnail-to-show'));\n                \n                let checkNav, checkFor, navSlideCount;\n\n                var appendTimeout;\n\n                sliderNav.hasClass('productView-nav-gallery') ? navSlideCount = Math.round(navMediaCount / 2) : navSlideCount = navMediaCount;\n                sliderNav.hasClass('productView-horizontal-tabs') && navMediaCount == 2 ? navSlideCount = 1 : navSlideCount = navMediaCount;\n                const slickCounter = `<div class=\"slick-counter\">\n                    <span class=\"slick-counter--current\">1</span>\n                    <span aria-hidden=\"true\">/</span>\n                    <span class=\"slick-counter--total\">`+navSlideCount+`</span>\n                </div>`\n\n                sliderNav.on('init', () => {\n                    if (window.innerWidth < 768 && navCounterMobi) {\n                        if(variant_image_group == 'false'){\n                            clearTimeout(appendTimeout);\n                            appendTimeout = setTimeout(() => {\n                                sliderNav.append(slickCounter);\n                            }, 1000)\n    \n                            sliderNav.on('reInit afterChange', function (event, slick, currentSlide, nextSlide) {\n                                var i = (currentSlide ? currentSlide : 0) + 1;\n                                sliderNav.find('.slick-counter--current').text(i);\n                            });\n                        }\n                    }\n                });\n\n                sliderNav.on('reInit', () => {\n                    clearTimeout(appendTimeout);\n                    appendTimeout = setTimeout(() => {\n                        sliderNav.append(slickCounter);\n                    }, 1000)\n                });\n\n                if (sliderNav.closest('.productView').is('.layout-4')) {\n                    checkFor = false;\n                }\n                else {\n                    checkFor = sliderFor;\n                }\n\n                if(sliderNav.hasClass('productView-nav-gallery')) {\n                    var sliderNav2 = $scope.find('.productView-nav.productView-nav-gallery'),\n                        length = sliderNav2.data('media-count'),\n                        show = 2,\n                        rows = 2;\n\n                    if (length == 1) {\n                      show = 1;\n                      rows = 1;\n                    }\n                    if (length == 2) {\n                      show = 2;\n                      rows = 1;\n                    }  \n\n                    sliderNav2.slick({\n                        dots: true,\n                        rows: rows,\n                        arrows: navArrowsDesk,\n                        infinite: true,\n                        slidesPerRow: 1,\n                        slidesToShow: show,\n                        focusOnSelect: false,\n                        asNavFor: checkFor,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: [\n                            {\n                                breakpoint: 767,\n                                settings: {\n                                    arrows: navArrowsMobi\n                                }\n                            }\n                        ]\n                    });\n                } else if(sliderNav.hasClass('productView-horizontal-tabs')) {\n                    var sliderNav2 = $scope.find('.productView-nav.productView-horizontal-tabs'),\n                        show = 2,\n                        rows = 1;\n\n                    sliderNav2.slick({\n                        dots: true,\n                        rows: rows,\n                        arrows: navArrowsDesk,\n                        infinite: true,\n                        slidesPerRow: 1,\n                        slidesToShow: show,\n                        focusOnSelect: false,\n                        asNavFor: checkFor,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: [\n                            {\n                                breakpoint: 767,\n                                settings: {\n                                    arrows: navArrowsMobi\n                                }\n                            }\n                        ]\n                    });\n                } else {\n                    if (!sliderNav.is('.style-2, .style-3') || window.innerWidth < 768) {\n                        sliderNav.slick({\n                            fade: true,\n                            dots: false,\n                            arrows: navArrowsDesk,\n                            infinite: true,\n                            slidesToShow: 1,\n                            slidesToScroll: 1,\n                            asNavFor: checkFor,\n                            nextArrow: window.arrows.icon_next,\n                            prevArrow: window.arrows.icon_prev,\n                            rtl: window.rtl_slick,\n                            responsive: [\n                                {\n                                    breakpoint: 768,\n                                    settings: {\n                                        arrows: navArrowsMobi\n                                    }\n                                }\n                            ]\n                        }); \n                        checkNav = sliderNav;\n                    }\n                    else {\n                        checkNav = false;\n                    }\n                }\n\n                if($scope.hasClass('layout-1') || $scope.hasClass('layout-2')){\n                    sliderFor.on('init',(event, slick) => {\n                        sliderFor.find('.animated-loading').removeClass('animated-loading');\n                    });\n\n                    sliderFor.slick({\n                        slidesToShow: thumbnailToShow,\n                        slidesToScroll: 1,\n                        asNavFor: checkNav,\n                        arrows: true,\n                        dots: false,\n                        draggable: false,\n                        adaptiveHeight: false,\n                        focusOnSelect: true,\n                        vertical: true,\n                        verticalSwiping: true,\n                        infinite: true,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        responsive: [\n                            {\n                                breakpoint: 1600,\n                                settings: {\n                                    slidesToShow: thumbnailToShow > 3 ? thumbnailToShow - 1 : thumbnailToShow,\n                                    slidesToScroll: 1\n                                }\n                            },\n                            {\n                                breakpoint: 1280,\n                                settings: {\n                                    vertical: false,\n                                    verticalSwiping: false,\n                                    rtl: window.rtl_slick,\n                                }\n                            },\n                            {\n                                breakpoint: 767,\n                                settings: {\n                                    slidesToShow: 3,\n                                    slidesToScroll: 1,\n                                    vertical: false,\n                                    verticalSwiping: false,\n                                    rtl: window.rtl_slick,\n                                }\n                            }\n                        ]\n                    });\n                } else if($scope.hasClass('layout-3')){\n                    sliderFor.on('init',(event, slick) => {\n                        sliderFor.find('.animated-loading').removeClass('animated-loading');\n                    });\n\n                    sliderFor.slick({\n                        slidesToShow: thumbnailToShow,\n                        slidesToScroll: 1,\n                        asNavFor: checkNav,\n                        arrows: true,\n                        dots: false,\n                        focusOnSelect: true,\n                        infinite: true,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: [\n                            {\n                                breakpoint: 1600,\n                                settings: {\n                                    slidesToShow: thumbnailToShow > 3 ? thumbnailToShow - 1 : thumbnailToShow,\n                                    slidesToScroll: 1\n                                }\n                            },\n                            {\n                                breakpoint: 767,\n                                settings: {\n                                    slidesToShow: 3,\n                                    slidesToScroll: 1\n                                }\n                            }\n                        ]\n                    });\n                }\n\n                sliderForMobile.on('init',(event, slick) => {\n                    sliderForMobile.find('.animated-loading').removeClass('animated-loading');\n                });\n\n                sliderForMobile.slick({\n                    slidesToShow:  parseInt(sliderForMobile.data('max-thumbnail-to-show')),\n                    slidesToScroll: 1,\n                    asNavFor: checkNav,\n                    arrows: true,\n                    dots: false,\n                    draggable: false,\n                    adaptiveHeight: false,\n                    focusOnSelect: true,\n                    vertical: true,\n                    verticalSwiping: true,\n                    infinite: true,\n                    nextArrow: window.arrows.icon_next,\n                    prevArrow: window.arrows.icon_prev,\n                    rtl: window.rtl_slick,\n                    responsive: [\n                        {\n                            breakpoint: 1600,\n                            settings: {\n                                slidesToShow: thumbnailToShow > 3 ? thumbnailToShow - 1 : thumbnailToShow,\n                                slidesToScroll: 1\n                            }\n                        },\n                        {\n                            breakpoint: 1280,\n                            settings: {\n                                vertical: false,\n                                verticalSwiping: false\n                            }\n                        },\n                        {\n                            breakpoint: 767,\n                            settings: {\n                                slidesToShow: 2.2,\n                                slidesToScroll: 1,\n                                vertical: false,\n                                verticalSwiping: false\n                            }\n                        }\n                    ]\n                });\n                    \n                if($scope.hasClass('layout-1') || $scope.hasClass('layout-2')){\n                    var height_for = sliderFor.outerHeight(),\n                    height_nav = sliderNav.outerHeight(),\n                    pos = (height_nav - height_for)/2,\n                    pos_disable = pos + 80;\n\n                    if ($win.width() > 1279) {\n                        if (sliderFor.find('.slick-arrow').length > 0) {\n                            sliderFor.parent().addClass('arrows-visible');\n                            sliderFor.parent().css('top', pos);\n                        } else {\n                            sliderFor.parent().addClass('arrows-disable');\n                            sliderFor.parent().css('top', pos_disable);\n                        }\n                    } else {\n                        if (sliderFor.find('.slick-arrow').length > 0) {\n                            sliderFor.parent().css('top', 'unset');\n                        } else {\n                            sliderFor.parent().css('top', pos_disable);\n                        }\n                    }\n                }\n\n                if (sliderNav.find('[data-youtube]').length > 0) {\n                    if (typeof window.onYouTubeIframeAPIReady === 'undefined') {\n                        window.onYouTubeIframeAPIReady = halo.initYoutubeCarousel.bind(window, sliderNav);\n\n                        const tag = document.createElement('script');\n                        tag.src = 'https://www.youtube.com/player_api';\n                        const firstScriptTag = document.getElementsByTagName('script')[0];\n                        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n                    } else {\n                        halo.initYoutubeCarousel(sliderNav);\n                    }\n                }\n\n                if (sliderNav.find('[data-vimeo]').length > 0) {\n                    sliderNav.on('beforeChange', (event, slick) => {\n                        var currentSlide,\n                            player,\n                            command;\n\n                        currentSlide = $(slick.$slider).find('.slick-current');\n                        player = currentSlide.find('iframe').get(0);\n\n                        command = {\n                            'method': 'pause',\n                            'value': 'true'\n                        };\n\n                        if (player != undefined) {\n                            player.contentWindow.postMessage(JSON.stringify(command), '*');\n                        }\n                    });\n\n                    sliderNav.on('afterChange', (event, slick) => {\n                        var currentSlide,\n                            player,\n                            command;\n\n                        currentSlide = $(slick.$slider).find('.slick-current');\n                        player = currentSlide.find('iframe').get(0);\n\n                        command = {\n                            'method': 'play',\n                            'value': 'true'\n                        };\n\n                        if (player != undefined) {\n                            player.contentWindow.postMessage(JSON.stringify(command), '*');\n                        }\n                    });\n                }\n\n                if (sliderNav.find('[data-mp4]').length > 0) {\n                    sliderNav.on('beforeChange', (event, slick) => {\n                        var currentSlide,\n                            player;\n\n                        currentSlide = $(slick.$slider).find('.slick-current');\n                        player = currentSlide.find('video').get(0);\n\n                        if (player != undefined) {\n                            player.pause();\n                        }\n                    });\n\n                    sliderNav.on('afterChange', (event, slick) => {\n                        var currentSlide,\n                            player;\n\n                        currentSlide = $(slick.$slider).find('.slick-current');\n                        player = currentSlide.find('video').get(0);\n\n                        if (player != undefined) {\n                            player.play();\n                        }\n                    });\n                }\n            }\n\n            var productFancybox = $scope.find('[data-fancybox]');\n\n            if(productFancybox.length > 0){\n                productFancybox.fancybox({\n                    buttons: [\n                        \"zoom\",\n                        \"share\",\n                        \"slideShow\",\n                        \"fullScreen\",\n                        //\"download\",\n                        \"thumbs\",\n                        \"close\"\n                    ],\n                    loop : true,\n                    thumbs : {\n                        autoStart : true,\n                    }\n                });\n            }\n\n            if($body.hasClass('template-product')) {\n                if ($scope.closest('.quickView').length) return;\n                var productZoom = $scope.find('[data-zoom-image]');\n\n                if ($win.width() > 1024) {\n                    productZoom.each((index, element) => {\n                        var $this = $(element);\n                        \n                        if ($win.width() > 1024) {\n                            $this.zoom({ url: $this.attr('data-zoom-image'), touch: false });\n                        } else {\n                            $this.trigger('zoom.destroy');\n                        }\n                    });\n                }\n            }\n\n            $win.on('resize', () => {\n                if($scope.hasClass('layout-1') || $scope.hasClass('layout-2')){\n                    if ($win.width() > 1279) {\n                        setTimeout(() => {\n                            if (sliderFor.find('.slick-arrow').length > 0) {\n                                var height_for = sliderFor.outerHeight(),\n                                    height_nav = sliderNav.outerHeight(),\n                                    pos = (height_nav - height_for)/2;\n\n                                sliderFor.parent().addClass('arrows-visible');\n                                sliderFor.parent().css('top', pos);\n                            } else {\n                                sliderFor.parent().addClass('arrows-disable');\n                            }\n                        }, 200);\n                    } else {\n                        setTimeout(() => {\n                            if (sliderFor.find('.slick-arrow').length > 0) {\n                                sliderFor.parent().css('top', 'unset');\n                            }\n                        }, 200);\n                    }\n                }\n            });\n        },\n\n        productVideoGallery: function($scope) {\n            const videoThumbnail = $scope.find('[data-video-thumbnail]'),\n                videoThumbnailLen = videoThumbnail.length,\n                productVideoLen = $('.productView-video').length;\n\n            if (videoThumbnailLen) {\n                const $imageWrapper = $scope.find('.productView-image-wrapper'),\n                    videoModal = $('[data-popup-video]'),\n                    sliderNav = $scope.find('.productView-nav');\n                let offsetTop = $imageWrapper.offset().top + $imageWrapper.outerHeight();\n\n                if (productVideoLen) {\n                    $body.addClass('has-product-video');\n                }\n                \n                $win.on('scroll', (event) => {\n                    const $targetCur = $(event.currentTarget),\n                        thisVideo = $scope.find('.slick-current .productView-video'),\n                        videoType = thisVideo.data('type'),\n                        videoUrl = thisVideo.data('video-url');\n\n                    if (videoUrl != undefined) {\n                        if ($targetCur.scrollTop() > offsetTop) {\n                            if (!videoModal.is('.is-show')) {\n                                const player = sliderNav.find('.slick-slide.slick-active').data('youtube-player'),\n                                    dataTime = parseInt(player.getCurrentTime()),\n                                    videoContent = `<div class=\"fluid-width-video-wrapper\" style=\"padding-top: 56.24999999999999%\">\n                                                    ${videoType == 'youtube' ? \n                                                        `<iframe\n                                                            id=\"player\"\n                                                            type=\"text/html\"\n                                                            width=\"100%\"\n                                                            frameborder=\"0\"\n                                                            webkitAllowFullScreen\n                                                            mozallowfullscreen\n                                                            allowFullScreen\n                                                            src=\"https://www.youtube.com/embed/${videoUrl}?autoplay=1&mute=1&start=${dataTime}\">\n                                                        </iframe>`\n                                                        :\n                                                        `<iframe \n                                                            src=\"https://player.vimeo.com/video/${videoUrl}?autoplay=1&mute=1\" \n                                                            class=\"js-vimeo\" \n                                                            allow=\"autoplay; \n                                                            encrypted-media\" \n                                                            webkitallowfullscreen \n                                                            mozallowfullscreen \n                                                            allowfullscreen\">\n                                                        </iframe>`\n                                                    }\n                                                </div>`;\n                                videoModal.addClass('is-show');\n                                videoModal.find('.halo-popup-content').html(videoContent);\n                                $body.addClass('video-show product-video-show');\n                                player.pauseVideo();\n                            }\n                        } else {\n                            const player = sliderNav.find('.slick-slide.slick-active').data('youtube-player');\n                            videoModal.removeClass('is-show');\n                            videoModal.find('.halo-popup-content').empty();\n                            $body.removeClass('video-show product-video-show');\n                            player.playVideo();\n                        }\n                    }\n                });\n            }\n        },\n\n        initVariantImageGroup: function($scope, enable = false) {\n            if(enable){\n                var inputChecked = $scope.find('[data-filter]:checked'),\n                    sliderFor = $scope.find('.productView-for'),\n                    sliderNav = $scope.find('.productView-nav');    \n\n                if(inputChecked.length > 0){\n                    var className = inputChecked.data('filter');\n\n                    if(className !== undefined) {\n                        sliderNav.slick('slickUnfilter');\n                        sliderFor.slick('slickUnfilter');\n\n                        if(sliderNav.find(className).length && sliderFor.find(className).length) {\n                            sliderNav.slick('slickFilter', className).slick('refresh');\n                            sliderFor.slick('slickFilter', className).slick('refresh');\n                        }\n                    }\n                }\n\n                $doc.on('change', 'input[data-filter]', (event) => {\n                    var className = $(event.currentTarget).data('filter');\n\n                    sliderNav.find('.slick-counter').remove();\n                    sliderNav.slick('slickUnfilter');\n                    sliderFor.slick('slickUnfilter');\n\n                    if(className !== undefined) {\n\n                        if(sliderNav.find(className).length && sliderFor.find(className).length) {\n                            sliderNav.slick('slickFilter', className).slick('refresh');\n                            sliderFor.slick('slickFilter', className).slick('refresh');\n                        }\n                    }\n                });\n            }\n        },\n\n        initYoutubeCarousel: function(slider) {\n            slider.each((index, slick) => {\n                const $slick = $(slick);\n\n                if ($slick.find('[data-youtube]').length > 0) {\n                    $slick.addClass('slick-slider--video');\n\n                    halo.initYoutubeCarouselEvent(slick);\n                }\n            });\n        },\n\n        initYoutubeCarouselEvent: function(slick){\n            var $slick = $(slick),\n                $videos = $slick.find('[data-youtube]');\n\n            bindEvents(slick);\n\n            function bindEvents() {\n                if ($slick.hasClass('slick-initialized')) {\n                    onSlickImageInit($slick, $videos);\n                }\n\n                $doc.on('init', $slick, onSlickImageInit);\n                $doc.on('beforeChange', $slick, onSlickImageBeforeChange);\n                $doc.on('afterChange', $slick, onSlickImageAfterChange);\n            }\n\n            function onPlayerReady(event) {\n                $(event.target.getIframe()).closest('.slick-slide').data('youtube-player', event.target);\n\n                setTimeout(function(){\n                    if ($(event.target.getIframe()).closest('.slick-slide').hasClass('slick-active')) {\n                        $slick.slick('slickPause');\n                        event.target.playVideo();\n                    }\n                }, 200);\n            }\n\n            function onPlayerStateChange(event) {\n                if (event.data === YT.PlayerState.PLAYING) {\n                    $slick.slick('slickPause');\n                }\n\n                if (event.data === YT.PlayerState.ENDED) {\n                    $slick.slick('slickNext');\n                }\n            }\n\n            function onSlickImageInit() {\n                $videos.each((j, vid) => {\n                    const $vid = $(vid);\n                    const id = `youtube_player_${Math.floor(Math.random() * 100)}`;\n\n                    $vid.attr('id', id);\n\n                    const player = new YT.Player(id, {\n                        host: 'http://www.youtube.com',\n                        videoId: $vid.data('youtube'),\n                        wmode: 'transparent',\n                        playerVars: {\n                            autoplay: 0,\n                            controls: 0,\n                            disablekb: 1,\n                            enablejsapi: 1,\n                            fs: 0,\n                            rel: 0,\n                            showinfo: 0,\n                            iv_load_policy: 3,\n                            modestbranding: 1,\n                            wmode: 'transparent',\n                        },\n                        events: {\n                            onReady: onPlayerReady,\n                            onStateChange: onPlayerStateChange,\n                        },\n                    });\n                });\n            }\n\n            function onSlickImageBeforeChange(){\n                const player = $slick.find('.slick-slide.slick-active').data('youtube-player');\n\n                if (player) {\n                    player.stopVideo();\n                    $slick.removeClass('slick-slider--playvideo');\n                }\n            }\n\n            function onSlickImageAfterChange(){\n                const player = $slick.find('.slick-slide.slick-active').data('youtube-player');\n\n                if (player) {\n                    $slick.slick('slickPause');\n                    $slick.addClass('slick-slider--playvideo');\n                    player.playVideo();\n                }\n            }\n        },\n\n        productSizeChart: function($scope){\n            window.sizeChart = function() {\n                var sizeChartBtn =  $scope.find('[data-open-size-chart-popup]');\n\n                sizeChartBtn.on('click', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    document.body.classList.add('size-chart-show');\n                    if (document.body.classList.contains('quick-view-show')) {\n                        $('.halo-popup-content .halo-size-chart-popup').addClass('is-show');\n                    }\n                    else {\n                        $('#MainContent .halo-size-chart-popup').addClass('is-show');\n                    }\n                });\n\n                $doc.on('click', '[data-close-size-chart-popup]', () => {\n                    $body.removeClass('size-chart-show');\n                    $('.halo-size-chart-popup').removeClass('is-show');\n                });\n\n                $doc.on('click', (event) => {\n                    if ($body.hasClass('size-chart-show')) {\n                        if (($(event.target).closest('[data-open-size-chart-popup]').length === 0) && ($(event.target).closest('[data-size-chart-popup]').length === 0)) {\n                            $body.removeClass('size-chart-show');\n                        }\n                    }\n                });\n            };\n\n            var quickViewShow = document.body.classList.contains('quick-view-show'),\n                productSizeChart = $('.halo-productView .productView-sizeChart').length;\n\n            if (document.body.classList.contains('template-product')) {\n                if (!quickViewShow && productSizeChart) {\n                    window.sizeChart();\n                } else if (quickViewShow && productSizeChart === 0) {\n                    window.sizeChart();\n                }\n            } else {\n                window.sizeChart();\n            }\n        },\n\n        productLastSoldOut: function($scope) {\n            var wrapper = $scope.find('[data-sold-out-product]');\n\n            if (wrapper.length > 0) {\n                var numbersProductList = wrapper.data('item').toString().split(','),\n                    numbersProductItem = Math.floor(Math.random() * numbersProductList.length),\n                    numbersHoursList = wrapper.data('hours').toString().split(','),\n                    numbersHoursItem = Math.floor(Math.random() * numbersHoursList.length);\n\n                wrapper.find('[data-sold-out-number]').text(numbersProductList[numbersProductItem]);\n                wrapper.find('[data-sold-out-hours]').text(numbersHoursList[numbersHoursItem]);\n                wrapper.show();\n            }\n        },\n\n        productCustomerViewing: function($scope) {\n            var wrapper = $scope.find('[data-customer-view]');\n\n            if (wrapper.length > 0) {\n                var numbersViewer = wrapper.data('customer-view'),\n                    numbersViewerList =  JSON.parse('[' + numbersViewer + ']'),\n                    numbersViewerTime = wrapper.data('customer-view-time'),\n                    timeViewer =  parseInt(numbersViewerTime) * 1000;\n                \n                setInterval(function() {\n                    var numbersViewerItem = (Math.floor(Math.random() * numbersViewerList.length));\n\n                    wrapper.find('.text').text(window.customer_view.text.replace('[number]', numbersViewerList[numbersViewerItem]));\n                }, timeViewer);\n            }\n        },\n\n        productCountdown: function($scope){\n            var wrapper = $scope.find('[data-countdown-id]'),\n                countDown = wrapper.data('countdown'),\n                countDownDate = new Date(countDown).getTime(),\n                countDownText = window.countdown.text;\n\n            if(wrapper.length > 0) {\n                var countdownfunction = setInterval(function() {\n                    var now = new Date().getTime(),\n                        distance = countDownDate - now;\n\n                    if (distance < 0) {\n                        clearInterval(countdownfunction);\n                        wrapper.remove();\n                    } else {\n                        var days = Math.floor(distance / (1000 * 60 * 60 * 24)),\n                            hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),\n                            minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)),\n                            seconds = Math.floor((distance % (1000 * 60)) / 1000),\n                            strCountDown;\n\n                        if (wrapper.is('.style-2, .style-3')) {\n                            strCountDown = '<span class=\"text\"><span>'+ countDownText +'</span></span><span class=\"num\">'+days+'<span>'+ window.countdown.day_2 +'</span></span>\\\n                                <span class=\"num\">'+hours+'<span>'+ window.countdown.hour_2 +'</span></span>\\\n                                <span class=\"num\">'+minutes+'<span>'+ window.countdown.min_2 +'</span></span>\\\n                                <span class=\"num\">'+seconds+'<span>'+ window.countdown.sec_2 +'</span></span>';\n                        }\n                        else {\n                            strCountDown = '<span class=\"text\"><span>'+ countDownText +'</span></span><span class=\"num\">'+days+'<span>'+ window.countdown.day +'</span></span>\\\n                                <span class=\"num\">'+hours+'<span>'+ window.countdown.hour +'</span></span>\\\n                                <span class=\"num\">'+minutes+'<span>'+ window.countdown.min +'</span></span>\\\n                                <span class=\"num\">'+seconds+'<span>'+ window.countdown.sec +'</span></span>';\n                        }\n\n                        wrapper.html(strCountDown);\n                        wrapper.addClass('show');\n                    }\n                }, 1000);\n            }\n        },\n\n        productCustomCursor: function($scope){\n            if ($('.cursor-wrapper').length == 0) return;\n            const { Back } = window;\n\n            this.cursorWrapper = document.querySelector(\".cursor-wrapper\");\n            this.innerCursor = document.querySelector(\".custom-cursor__inner\");\n            this.outerCursor = document.querySelector(\".custom-cursor__outer\");\n\n            this.cursorWrapperBox = this.cursorWrapper.getBoundingClientRect();\n            this.innerCursorBox = this.innerCursor.getBoundingClientRect();\n            this.outerCursorBox = this.outerCursor.getBoundingClientRect();\n\n            document.addEventListener(\"mousemove\", e => {\n                this.clientX = e.clientX;\n                this.clientY = e.clientY;\n            });\n\n            const render = () => {\n                TweenMax.set(this.cursorWrapper, {\n                    x: this.clientX,\n                    y: this.clientY\n                });\n                requestAnimationFrame(render);\n            };\n            requestAnimationFrame(render);\n\n            this.fullCursorSize = 60;\n            this.enlargeCursorTween = TweenMax.to(this.outerCursor, 0.3, {\n                width: this.fullCursorSize,\n                height: this.fullCursorSize,\n                ease: this.easing,\n                paused: true\n            });\n\n            const handleMouseEnter = () => {\n                this.enlargeCursorTween.play();\n                $('.cursor-wrapper').addClass('handleMouseEnter').removeClass('handleMouseLeave');\n            };\n\n            const handleMouseLeave = () => {\n                this.enlargeCursorTween.reverse();\n                $('.cursor-wrapper').addClass('handleMouseLeave').removeClass('handleMouseEnter');\n            };\n\n            const gridItems = document.querySelectorAll(\".productView-image\");\n            gridItems.forEach(el => {\n                if (el?.querySelector('.productView-video')) return;\n                el.addEventListener(\"mouseenter\", handleMouseEnter);\n                el.addEventListener(\"mouseleave\", handleMouseLeave);\n            });\n\n            this.bumpCursorTween = TweenMax.to(this.outerCursor, 0.1, {\n                scale: 0.7,\n                paused: true,\n                onComplete: () => {\n                    TweenMax.to(this.outerCursor, 0.2, {\n                        scale: 1,\n                        ease: this.easing\n                    });\n                }\n            });\n\n            $(document).on('mouseover', '[data-cursor-image]', (event) => {\n                var $target = $(event.currentTarget),\n                    imagesInView = new Array();\n\n                imagesInView.push($target.attr('data-index'));\n                $(\"#count-image\").text(imagesInView[0]);\n            });\n\n            $.fn.isInViewport = function(excludePartials) {\n                var elementTop = $(this).offset().top;\n                var elementBottom = elementTop + $(this).height();\n\n                var viewportTop = $(document).scrollTop();\n                var viewportBottom = viewportTop + $(window).height();\n\n                if (excludePartials) {\n                    var bottomVisible = (elementBottom - viewportTop) / $(this).height();\n                    var isInView = elementBottom > viewportTop && elementTop < viewportBottom;\n\n                    return isInView && bottomVisible > 0.5;\n                }\n\n                return elementBottom > viewportTop && elementTop < viewportBottom;\n            };\n\n            \n            if ($('.product-full-width').length > 0 || $('.product-full-width-2').length > 0) {\n                $(window).on('resize scroll', function() {\n                    var imagesInView = new Array();\n                    $('.productView-image').each(function() {\n                        if ($(this).isInViewport(true)) {\n                            imagesInView.push($(this).attr('data-index'));\n                            $(\"#count-image\").text(imagesInView[0]);\n                        }\n                    });\n                });\n            }\n        },\n\n        initWishlist: function() {\n            if(window.wishlist.show){\n                halo.setLocalStorageProductForWishlist();\n\n                $doc.on('click', '[data-wishlist]', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    if (!$(event.currentTarget).hasClass('is-in-grid')) {\n                        $('[data-wishlist-items-display]').removeClass('is-loaded');\n                    }\n\n                    var $target = $(event.currentTarget),\n                        id = $target.data('product-id'),\n                        handle = $target.data('wishlist-handle'),\n                        wishlistList = localStorage.getItem('wishlistItem') ? JSON.parse(localStorage.getItem('wishlistItem')) : [];\n                        index = wishlistList.indexOf(handle),\n                        wishlistContainer = $('[data-wishlist-container]');\n                        wishlistLayout = wishlistContainer.attr('data-wishlist-layout');\n\n                    if(!$target.hasClass('wishlist-added')){\n                        $target\n                            .addClass('wishlist-added')\n                            .find('.text')\n                            .text(window.wishlist.added);\n\n                        if(wishlistContainer.length > 0) {\n                            const addEvent = new CustomEvent('addwishlistitem', { detail: { handle } , bubbles: true });\n                            document.dispatchEvent(addEvent);\n                        }\n\n                        wishlistList.push(handle);\n                        localStorage.setItem('wishlistItem', JSON.stringify(wishlistList));\n                        \n                        const updateWishlistMailEvent = new CustomEvent('updatewishlistmail', { bubbles: true });\n                        document.dispatchEvent(updateWishlistMailEvent); \n                    } else {\n                        $target\n                            .removeClass('wishlist-added')\n                            .find('.text')\n                            .text(window.wishlist.add);\n                        if(wishlistContainer.length > 0) {\n                            if($('[data-wishlist-added=\"wishlist-'+ id +'\"]').length > 0) {\n                                $('[data-wishlist-added=\"wishlist-'+ id +'\"]').remove();\n                                const icon = $(`[data-wishlist][data-product-id=${id}]`);\n                                const productCard = icon.closest('.product');\n                                productCard.remove();\n                            }           \n                        }\n\n                        wishlistList.splice(index, 1);\n                        localStorage.setItem('wishlistItem', JSON.stringify(wishlistList));\n\n                        const updatePaginationEvent = new CustomEvent('updatepagination', { bubbles: true })\n                        document.dispatchEvent(updatePaginationEvent);\n                        \n                        if(wishlistContainer.length > 0) {\n                            wishlistList = localStorage.getItem('wishlistItem') ? JSON.parse(localStorage.getItem('wishlistItem')) : [];\n\n                            if (wishlistList.length > 0) {\n                                const updateWishlistMailEvent = new Event('updatewishlistmail', { bubbles: true })\n                                document.dispatchEvent(updateWishlistMailEvent);\n                            } else {\n                                $('[data-wishlist-container]')\n                                    .addClass('is-empty')\n                                    .html(`\\\n                                    <div class=\"wishlist-content-empty text-center\">\\\n                                        <span class=\"wishlist-content-text\">${window.wishlist.empty}</span>\\\n                                        <div class=\"wishlist-content-actions\">\\\n                                            <a class=\"button button-2 button-continue\" href=\"${window.routes.collection_all}\">\\\n                                                ${window.wishlist.continue_shopping}\\\n                                            </a>\\\n                                        </div>\\\n                                    </div>\\\n                                `);\n\n                                $('[data-wishlist-footer]').hide();\n                            }   \n                        }\n                    }\n                    $('[data-wishlist-count]').text(wishlistList.length);\n                    halo.setProductForWishlist(handle);\n                })\n            }\n        },\n\n        calculateCard06Padding() {\n            if (!$body.hasClass('product-card-layout-06')) return \n\n            const cardAction = document.querySelector('.card .card-action.card-grid__hidden');\n            cardAction.classList.remove('card-grid__hidden');\n            const padding = cardAction.scrollHeight;\n\n            document.querySelector('[data-wishlist-items-grid-display]').style.setProperty('--card-06-padding', padding + 'px');\n            cardAction.classList.add('card-grid__hidden');\n        },\n\n        setProductForWishlist: function(handle){\n            var wishlistList = JSON.parse(localStorage.getItem('wishlistItem')),\n                item = $('[data-wishlist-handle=\"'+ handle +'\"]'),\n                index = wishlistList?.indexOf(handle);\n\n            if (index == null || wishlistList == null) return;\n            \n            if(index >= 0) {\n                item\n                    .addClass('wishlist-added')\n                    .find('.text')\n                    .text(window.wishlist.added)\n            } else {\n                item\n                    .removeClass('wishlist-added')\n                    .find('.text')\n                    .text(window.wishlist.add);\n            }\n        },\n\n        setLocalStorageProductForWishlist: function() {\n            var wishlistList = localStorage.getItem('wishlistItem') ? JSON.parse(localStorage.getItem('wishlistItem')) : [];\n            localStorage.setItem('wishlistItem', JSON.stringify(wishlistList));\n\n            if (wishlistList.length > 0) {\n                wishlistList = JSON.parse(localStorage.getItem('wishlistItem'));\n                \n                wishlistList.forEach((handle) => {\n                    halo.setProductForWishlist(handle);\n                });\n            }\n            $('[data-wishlist-count]').text(wishlistList.length);\n        },\n\n        initCountdown: function () {\n          var countdownAnnouncementElm = $('[data-countdown-announcement]'),\n              countdownElm = $('[data-countdown]').not('[data-countdown-id]');\n\n            if (countdownAnnouncementElm.length) {\n                countdownAnnouncementElm.each(function () {\n                    var self = $(this),\n                        countdownAnnouncement = self.data('countdown-value'),\n                        countdownAnnouncementDate = new Date(countdownAnnouncement).getTime();\n\n                    var countdownAnnouncementFunction = setInterval(function() {\n                        var now = new Date().getTime(),\n                            distance = countdownAnnouncementDate - now;\n\n                        if (distance < 0) {\n                            clearInterval(countdownAnnouncementFunction);\n                            if (self.hasClass('hide--countdown')) {\n                                self.remove();\n                            }\n                            else {\n                                const thisItem = self.parents('.announcement-bar__message'),\n                                    thisBar = self.parents('[data-announcement-bar]');\n                                thisBar.is('.slick-initialized') ? thisBar.slick('slickRemove', thisItem.data('slick-index')) : thisItem.remove();\n                            }\n                        } else {\n                             var days = Math.floor(distance / (1000 * 60 * 60 * 24)),\n                                hours = `0${Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))}`.slice(-2),\n                                minutes = `0${Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60))}`.slice(-2),\n                                seconds = `0${Math.floor((distance % (1000 * 60)) / 1000)}`.slice(-2),\n                                strCountDown = '';\n                            \n                            strCountDown = '<div class=\"clock-item\"><span class=\"num\">'+days+'</span><span class=\"text\">'+ window.countdown.days +'</span></div>\\\n                                            <div class=\"clock-item\"><span class=\"num\">'+hours+'</span><span class=\"text\">'+ window.countdown.hours +'</span></div>\\\n                                            <div class=\"clock-item\"><span class=\"num\">'+minutes+'</span><span class=\"text\">'+ window.countdown.mins +'</span></div>\\\n                                            <div class=\"clock-item\"><span class=\"num\">'+seconds+'</span><span class=\"text\">'+ window.countdown.secs +'</span></div>';\n                          \n                            self.html(strCountDown);\n                        }\n                    }, 1000);\n                });\n            }\n\n            if (countdownElm.length) {\n                countdownElm.each(function () {\n                    var self = $(this),\n                        countDown = self.data('countdown-value'),\n                        countDownDate = new Date(countDown).getTime();\n                        \n                    var countdownfunction = setInterval(function() {\n                        var now = new Date().getTime(),\n                            distance = countDownDate - now;\n\n                        if (distance < 0) {\n                            clearInterval(countdownfunction);\n                            if (self.hasClass('hide--countdown')) {\n                                self.remove();\n                            }\n                            else {\n                                self.parents('.shopify-section').remove();\n                            }\n                        } else {\n                            var days = Math.floor(distance / (1000 * 60 * 60 * 24)),\n                                hours = `0${Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))}`.slice(-2),\n                                minutes = `0${Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60))}`.slice(-2),\n                                seconds = `0${Math.floor((distance % (1000 * 60)) / 1000)}`.slice(-2),\n                                strCountDown = '';\n                            if (self.hasClass('product-countdown-block')) {\n                                if($('.halo-block-header').hasClass('countdown_style_2')){\n                                    strCountDown = '<div class=\"clock-item\"><span class=\"num\">'+days+ window.countdown.d +'</span><span class=\"icon\">:</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+hours+ window.countdown.h +'</span><span class=\"icon\">:</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+minutes+ window.countdown.m +'</span><span class=\"icon\">:</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+seconds+ window.countdown.s +'</span><span class=\"icon\"></span></div>';\n                                } else{\n                                    strCountDown = `<div class=\"clock-item\"><span class=\"num\">${days}d&nbsp;</span></div>\n                                    <div class=\"clock-item\"><span class=\"num\">${hours}:</span></div>\n                                    <div class=\"clock-item\"><span class=\"num\">${minutes}:</span></div>\n                                    <div class=\"clock-item\"><span class=\"num\">${seconds}</span></div>`;\n                                }\n                            } else {\n                                strCountDown = '<div class=\"clock-item\"><span class=\"num\">'+days+'</span><span class=\"text\">'+ window.countdown.days +'</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+hours+'</span><span class=\"text\">'+ window.countdown.hours +'</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+minutes+'</span><span class=\"text\">'+ window.countdown.mins +'</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+seconds+'</span><span class=\"text\">'+ window.countdown.secs +'</span></div>';\n                            }\n                            self.html(strCountDown);\n                        }\n                    }, 1000);\n                });\n            }\n        },\n\n        collectionCountdown: function () {\n            var countdownElm = $('[data-collection-countdown]');\n\n            if (countdownElm.length) {\n                countdownElm.each(function () {\n                    var self = $(this);\n\n                    var countDownCollection = (self) => {\n                        var countDown = self.data('collection-countdown-value'),\n                            countDownDate = new Date(countDown).getTime(),\n                            countDownText = window.countdown.text,\n                            now = new Date().getTime(),\n                            distance = countDownDate - now;\n\n                        if (distance < 0) {\n                            clearInterval(countDownCollection);\n                            if (self.hasClass('hide--countdown')) {\n                                self.remove();\n                            }\n                        } else {\n                            var days = Math.floor(distance / (1000 * 60 * 60 * 24)),\n                                hours = `0${Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))}`.slice(-2),\n                                minutes = `0${Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60))}`.slice(-2),\n                                seconds = `0${Math.floor((distance % (1000 * 60)) / 1000)}`.slice(-2),\n                                strCountDown = '';\n                            if (self.hasClass('collection-countdown')) {\n                                strCountDown = '<div class=\"clock-item\"><span class=\"num\">'+days+'</span><span class=\"text\">'+ window.countdown.days +'</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+hours+'</span><span class=\"text\">'+ window.countdown.hours +'</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+minutes+'</span><span class=\"text\">'+ window.countdown.mins +'</span></div>\\\n                                                <div class=\"clock-item\"><span class=\"num\">'+seconds+'</span><span class=\"text\">'+ window.countdown.secs +'</span></div>';\n                            }\n                            self.html(strCountDown);\n                        }\n                    }\n\n                    setInterval(() =>{\n                        countDownCollection(self)\n                    }, 1000);\n                });\n            }\n        },\n\n        handleScrollDown: function() {\n            var iconSrollDownSlt = '[data-scroll-down]',\n                iconSrollDown = $(iconSrollDownSlt);\n\n            if (iconSrollDownSlt.length) {\n                iconSrollDown.each(function() {\n                    var self = $(this);\n                    var target = self.closest('.shopify-section').next('.shopify-section').attr('id');\n\n                    self.attr('href', '#'+ target +'');\n\n                    iconSrollDown.on('click', function(e) {\n                        e.preventDefault();\n                        var scroll = $(this.getAttribute('href'));\n\n                        if (scroll.length) {\n                            $('html, body').stop().animate({\n                                scrollTop: scroll.offset().top\n                            }, 400);\n                        };\n                    });\n                });\n            }\n        },\n\n        toggleSidebarMobile: function() {\n            $doc.on('click', '[data-sidebar]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.addClass('open-mobile-sidebar');\n              \n            });\n\n            $doc.on('click', '[data-close-sidebar]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                $body.removeClass('open-mobile-sidebar');\n            });\n\n            $doc.on('click', (event) => {\n                if($body.hasClass('open-mobile-sidebar')){\n                    if (($(event.target).closest('[data-sidebar]').length === 0) && ($(event.target).closest('#halo-sidebar').length === 0)) {\n                        $body.removeClass('open-mobile-sidebar');\n                    }\n                }\n            });\n        },\n\n        initBlogMasonry: function() {\n            const $blogMasonry = $('.blog-layout-masonry .blog-block-item');\n            const isRTL = $body.hasClass('layout_rtl');\n\n            $blogMasonry.masonry({\n                columnWidth: '.blog-grid-sizer',\n                itemSelector: '[data-masonry-item]',\n                isRTL: isRTL,\n                originLeft: !isRTL\n            });\n        },\n\n        articleGallery: function() {\n            const $gallery = $('.articleGallery-block'),\n                $gallerySlider = $('.articleGallery-slider'),\n                galleryLength = $gallery.length,\n                col = $gallerySlider.data('col');\n\n            if (galleryLength > 0 && $gallerySlider.not('.slick-initialized')) {\n                $gallerySlider.slick({\n                    slidesToShow: 1,\n                    slidesToScroll: 1,\n                    dots: true,\n                    arrows: true,\n                    infinite: false,\n                    mobileFirst: true,\n                    focusOnSelect: false,\n                    nextArrow: window.arrows.icon_next,\n                    prevArrow: window.arrows.icon_prev,\n                    rtl: window.rtl_slick,\n                    responsive: [\n                        {\n                            breakpoint: 767,\n                            settings: {\n                                slidesToShow: col,\n                                slidesToScroll: col\n                            }\n                        },\n                        {\n                            breakpoint: 319,\n                            settings: {\n                                slidesToShow: 2,\n                                slidesToScroll: 2\n                            }\n                        }\n                    ]\n                });\n            }\n        },\n\n        initCollapseSidebarBlock: function (){\n            $doc.on('click', '.sidebarBlock-headingWrapper .sidebarBlock-heading', (event) => {\n                var $target = $(event.currentTarget),\n                    $blockCollapse = $target.parent().siblings(),\n                    $sidebarBlock = $target.parents('.sidebarBlock');\n\n                if($target.hasClass('is-clicked')){\n                    $target.removeClass('is-clicked');\n                    $blockCollapse.slideUp('slow');\n                } else {\n                    $target.addClass('is-clicked');\n                    $blockCollapse.slideDown('slow');\n\n                    if ($sidebarBlock.hasClass('sidebar-product')) {\n                        $sidebarBlock.find('.products-carousel').slick('refresh');\n                    }\n                }\n            });\n        },\n\n        initCategoryActive: function(){\n            if ($('.all-categories-list').length > 0) {\n                $doc.on('click', '.all-categories-list .icon-dropdown', (event) => {\n                    var $target = $(event.currentTarget).parent();\n\n                    $target.siblings().removeClass('is-clicked current-cate');\n                    $target.toggleClass('is-clicked');\n                    $target.siblings().find('> .dropdown-category-list').slideUp('slow');\n                    $target.find('> .dropdown-category-list').slideToggle('slow');\n                });\n\n                $('.all-categories-list li').each((index, element) =>{\n                    if ($(element).hasClass('current-cate')) {\n                        $(element).find('> .dropdown-category-list').slideToggle('slow');\n                    }\n                });\n            }\n        },\n\n        productBlockSilderSidebar: function() {\n            var productGrid = $('[data-product-slider-sidebar]'),\n                itemToShow = productGrid.data('item-to-show'),\n                itemDots = productGrid.data('item-dots'),\n                itemArrows = productGrid.data('item-arrows');\n\n            if(productGrid.length > 0) {\n                if(productGrid.not('.slick-initialized')) {\n                    productGrid.slick({\n                        mobileFirst: true,\n                        adaptiveHeight: true,\n                        vertical: false,\n                        infinite: false,\n                        slidesToShow: itemToShow,\n                        slidesToScroll: 1,\n                        arrows: itemArrows,\n                        dots: itemDots,\n                        autoplay: true,\n                        autoplaySpeed: 2000,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                    });\n\n                  \n                }\n            }\n        },\n\n        productBlockSilderArticle: function() {\n            var productGrid = $('[data-product-slider-article]'),\n                itemToShow = productGrid.data('item-to-show'),\n                itemDots = productGrid.data('item-dots'),\n                itemArrows = productGrid.data('item-arrows');\n\n            if(productGrid.length > 0) {\n                if(productGrid.not('.slick-initialized')) {\n                    productGrid.slick({\n                        adaptiveHeight: true,\n                        vertical: false,\n                        infinite: false,\n                        slidesToShow: itemToShow,\n                        slidesToScroll: 1,\n                        arrows: itemArrows,\n                        dots: itemDots,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: [{\n                                breakpoint: 992,\n                                settings: {\n                                    slidesToShow: 3,\n                                    slidesToScroll: 1,\n                                }\n                            },\n                            {\n                                breakpoint: 551,\n                                settings: {\n                                    slidesToShow: 2,\n                                    slidesToScroll: 1,\n                                }\n                            }\n                        ]\n                    });\n                }\n            }\n        },\n\n        articleGallery: function() {\n            const $gallery = $('.articleGallery-block'),\n                $gallerySlider = $('.articleGallery-slider'),\n                galleryLength = $gallery.length,\n                col = $gallerySlider.data('col');\n\n            if (galleryLength > 0 && $gallerySlider.not('.slick-initialized')) {\n                $gallerySlider.slick({\n                    slidesToShow: 1,\n                    slidesToScroll: 1,\n                    dots: true,\n                    arrows: true,\n                    infinite: false,\n                    mobileFirst: true,\n                    focusOnSelect: false,\n                    nextArrow: window.arrows.icon_next,\n                    prevArrow: window.arrows.icon_prev,\n                    rtl: window.rtl_slick,\n                    responsive: [\n                        {\n                            breakpoint: 767,\n                            settings: {\n                                slidesToShow: col,\n                                slidesToScroll: col\n                            }\n                        },\n                        {\n                            breakpoint: 319,\n                            settings: {\n                                slidesToShow: 2,\n                                slidesToScroll: 2\n                            }\n                        }\n                    ]\n                });\n            }\n        },\n\n        initInfiniteScrolling: function(){\n            if ($('.pagination-infinite'.length > 0)) {\n                $win.on('scroll load', () => {\n                    var currentScroll = $win.scrollTop(),\n                        pageInfinite = $('.pagination-infinite'),\n                        linkInfinite = pageInfinite.find('[data-infinite-scrolling]'),\n                        position; \n\n                    if(linkInfinite.length > 0 && !linkInfinite.hasClass('is-loading')){\n                        position = pageInfinite.offset().top - 500;\n                        \n                        if (currentScroll > position) {\n                            var url = linkInfinite.attr('href');\n\n                            halo.doAjaxInfiniteScrollingGetContent(url, linkInfinite);\n                        }\n                    }\n                });\n            }\n\n            $doc.on('click', '[data-infinite-scrolling]', (event) => {\n                var linkInfinite = $(event.currentTarget),\n                    url = linkInfinite.attr('href');\n\n                event.preventDefault();\n                event.stopPropagation();\n\n                halo.doAjaxInfiniteScrollingGetContent(url, linkInfinite);\n            });\n        },\n\n        doAjaxInfiniteScrollingGetContent: function(url, link){\n            $.ajax({\n                type: 'GET',\n                url: url,\n                beforeSend: function () {\n                    link.text(link.attr('data-loading-more'));\n                    link.addClass('is-loading');\n                    // document.getElementById('CollectionProductGrid').querySelector('.collection').classList.add('is-loading');\n                    // $body.addClass('has-halo-loader');\n                },\n                success: function (data) {\n                    halo.ajaxInfiniteScrollingMapData(data);\n                },\n                error: function (xhr, text) {\n                    alert($.parseJSON(xhr.responseText).description);\n                },\n                complete: function () {\n                    link.text(link.attr('data-load-more'));\n                    link.removeClass('is-loading');\n                    // document.getElementById('CollectionProductGrid').querySelector('.collection').classList.remove('is-loading');\n                    // $body.removeClass('has-halo-loader');\n                    if (document.querySelector('.collection-masonry')) {\n                        resizeAllGridItems();\n                    }\n                }\n            });\n        },\n\n        ajaxInfiniteScrollingMapData: function(data){\n            var currentTemplate = $('#CollectionProductGrid'),\n                currentProductListing = currentTemplate.find('.productListing'),\n                currentPagination = currentTemplate.find('.pagination'),\n                newTemplate = $(data).find('#CollectionProductGrid'),\n                newProductListing = newTemplate.find('.productListing'),\n                newPagination = newTemplate.find('.pagination'),\n                newProductItem = newProductListing.children('.product');\n                \n            if (newProductItem.length > 0) {\n                currentProductListing.append(newProductItem);\n                currentPagination.replaceWith(newPagination);\n\n                $('[data-total-start]').text(1);\n\n                if(window.compare.show){\n                    var $compareLink = $('[data-compare-link]');\n                    halo.setLocalStorageProductForCompare($compareLink);\n                }\n\n                if(window.wishlist.show){\n                    halo.setLocalStorageProductForWishlist();\n                }\n\n                if (halo.checkNeedToConvertCurrency()) {\n                    Currency.convertAll(window.shop_currency, $('#currencies .active').attr('data-currency'), 'span.money', 'money_format');\n                }\n            }\n        },\n\n        initQuickShopProductList: function() {\n            $doc.on('click', '[data-open-quickshop-popup-list]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var handle = $(event.currentTarget).data('product-handle'),\n                    product = $(event.currentTarget).closest('.card');\n\n                if(!product.hasClass('quick-shop-show')){\n                    halo.updateContentQuickShop(product, handle);\n                }\n            });\n\n            $doc.on('click', '[data-close-quickshop-popup-list]', (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n\n                var product = $(event.currentTarget).closest('.card');\n\n                product.removeClass('quick-shop-show');\n                product.find('.card-popup-content').empty();\n            });\n\n            $doc.on('click', (event) => {\n                if($('.card').hasClass('quick-shop-show')){\n                    if (($(event.target).closest('[data-open-quickshop-popup-list]').length === 0) && ($(event.target).closest('.card-popup').length === 0)){\n                        $('.card').removeClass('quick-shop-show');\n                        $('.card').find('.card-popup-content').empty();\n                    }\n                }\n            });\n        },\n\n        updateContentQuickShop: function(product, handle) {\n            var popup = product.find('.card-popup'),\n                popupContent = popup.find('.card-popup-content');\n\n            $.ajax({\n                type: 'get',\n                url: window.routes.root + '/products/' + handle + '?view=ajax_quick_shop',\n                beforeSend: function () {\n                    $('.card').removeClass('quick-shop-show');\n                },\n                success: function (data) {\n                    popupContent.append(data);\n                },\n                error: function (xhr, text) {\n                    alert($.parseJSON(xhr.responseText).description);\n                },\n                complete: function () {\n                    product.addClass('quick-shop-show');\n                }\n            });\n        },\n\n        toggleVariantsForExpressOrder: function () {\n            var toggleVariant = '[data-toggle-variant]';\n\n            $(document).on('click', toggleVariant, function (e) {\n                e.preventDefault();\n                e.stopPropagation();\n\n                var self = $(this),\n                    curVariants = self.data('target');\n\n                if(self.hasClass('show-options-btn')) {\n                    self.text(window.inventory_text.hide_options);\n                    $(curVariants).slideDown(700, function () {\n                        self.addClass('hide-options-btn').removeClass('show-options-btn');\n                    });\n                }\n                else {\n                    self.text(window.inventory_text.show_options);\n                    $(curVariants).slideUp(700, function () {\n                        self.addClass('show-options-btn').removeClass('hide-options-btn');\n                    });\n                };\n            })\n        },\n\n        initExpressOrderAddToCart: function() {\n            var addToCartSlt = '[data-express-addtocart]';\n\n            $(document).off('click.addToCartExpress', addToCartSlt).on('click.addToCartExpress', addToCartSlt, function (e) {\n                e.preventDefault();\n\n                var self = $(this);\n\n                if (self.attr('disabled') != 'disabled') {\n                    var productItem = self.closest('.product-item');\n\n                    if(productItem.length == 0) {\n                        productItem = self.closest('.col-options');\n                    }\n\n                    var form = productItem.find('form');\n                    var variant_id = form.find('select[name=id]').val();\n\n                    if (!variant_id) {\n                        variant_id = form.find('input[name=id]').val();\n                    };\n\n                    var quantityElm = productItem.find('input[name=quantity]');\n\n                    if(quantityElm.length == 0) {\n                        quantityElm = productItem.siblings('.col-qtt').find('input[name=quantity]');\n                    }\n\n                    var quantity = quantityElm.val();\n                    if (!quantity) {\n                        quantity = 1;\n                    };\n\n                    if(parseInt(quantity) !== 0) {\n                        if (window.ajax_cart == 'none') {\n                            form.submit();\n                        } else {\n                            halo.expressAjaxAddToCart(variant_id, quantity, self, form);\n                            form.next('.feedback-text').show();\n                        }\n                    }\n                    else {\n                        form.next('.feedback-text').text('Quantity cannot be blank').show();\n                    }\n                }\n                return false;\n            });\n        },\n\n        expressAjaxAddToCart: function(variant_id, quantity, cartBtn, form) {\n            $.ajax({\n                type: \"post\",\n                url: \"/cart/add.js\",\n                data: 'quantity=' + quantity + '&id=' + variant_id,\n                dataType: 'json',\n\n                beforeSend: function() {\n                    window.setTimeout(function() {\n                        cartBtn.text(window.inventory_text.adding +\"...\");\n                    }, 100);\n                },\n\n                success: function(msg) {\n                    window.setTimeout(function() {\n                        cartBtn.text(window.inventory_text.thank_you);\n                        cartBtn.addClass('add_more');\n                        form.next('.feedback-text').text(window.inventory_text.cart_feedback).addClass('is-added');\n                    }, 600);\n                    window.setTimeout(function() {\n                        cartBtn.text(window.inventory_text.add_more + \"...\");\n                    }, 1000);\n\n                    switch (window.after_add_to_cart.type) {\n                        case 'cart':\n                            halo.redirectTo(window.routes.cart);\n\n                            break;\n                        case 'quick_cart':\n                            if(window.quick_cart.show){\n                                Shopify.getCart((cart) => {\n                                    if( window.quick_cart.type == 'popup'){\n                                        // $body.addClass('cart-modal-show');\n                                        // halo.updateDropdownCart(cart);\n                                    } else {\n                                        $body.addClass('cart-sidebar-show');\n                                        halo.updateSidebarCart(cart);\n                                    }\n                                });\n                            } else {\n                                halo.redirectTo(window.routes.cart);\n                            }\n\n                            break;\n                        case 'popup_cart_1':\n                            Shopify.getCart((cart) => {\n                                halo.updatePopupCart(cart, 1, variant_id);\n                                halo.updateSidebarCart(cart);\n                                $body.addClass('add-to-cart-show');\n                            });\n\n                            break;\n                    }\n                },\n\n                error: function(xhr, text) {\n                    alert($.parseJSON(xhr.responseText).description);\n                    window.setTimeout(function() {\n                        cartBtn.text(window.inventory_text.add_to_cart);\n                    }, 400);\n                }\n            });\n        },\n\n        initProductBundle: function() {\n            var productBundle = $('[data-product-bundle]'),\n                bundleList = productBundle.find('[data-bundle-slider]'),\n                dots = bundleList.data('dots'),\n                arrows = bundleList.data('arrows');\n\n            if(bundleList.length > 0){\n                if(!bundleList.hasClass('slick-initialized')){\n                    bundleList.slick({\n                        dots: true,\n                        arrows: arrows,\n                        slidesToShow: 2,\n                        slidesToScroll: 1,\n                        mobileFirst: true,\n                        infinite: false,\n                        nextArrow: window.arrows.icon_next,\n                        prevArrow: window.arrows.icon_prev,\n                        rtl: window.rtl_slick,\n                        responsive: [\n                            {\n                                breakpoint: 1200,\n                                settings: {\n                                    slidesToShow: 4,\n                                    slidesToScroll: 1,\n                                    dots: dots\n                                }\n                            },\n                            {\n                                breakpoint: 551,\n                                settings: {\n                                    slidesToShow: 3,\n                                    slidesToScroll: 1,\n                                    dots: dots\n                                }\n                            }\n                        ]\n                    });\n\n                    productBundle.find('.bundle-product-wrapper').removeClass('has-halo-block-loader');\n\n                    bundleList.on('afterChange', function(){\n                        bundleList.find('.bundle-product-item').removeClass('is-open');\n                    });\n                }\n            }\n        },\n\n        initProductReviewSection: function() {\n            $doc.ready(() => {\n                setTimeout(() => {\n                    const $reviewTabContent = $('.productView-review .spr-content'),\n                        $thisReviewSection = $('.shopify-app-block .spr-content');\n        \n                    if ($reviewTabContent && $thisReviewSection) {\n                        const reviewContent = $reviewTabContent.html();\n                        $thisReviewSection.html(reviewContent);\n                    }\n                }, 1000);\n            });\n        },\n\n        initDynamicBrowserTabTitle: function() {\n            if(window.dynamic_browser_title.show){\n                var pageTitleContent = document.title,\n                    newPageTitleContent = window.dynamic_browser_title.text;\n\n                window.onblur = function () {\n                    document.title = window.dynamic_browser_title.text;\n                }\n\n                window.onfocus = function () {\n                    document.title = pageTitleContent;\n                }\n            }\n        },\n\n        initWarningPopup: function() {\n            this.warningPopup = document.querySelector('[data-warning-popup]');\n            this.warningPopupContent = this.warningPopup.querySelector('[data-halo-warning-content]');\n            this.warningPopupCloseButton = this.warningPopup.querySelector('[data-close-warning-popup]');\n            this.warningPopupCloseButton.addEventListener('click', () => {\n                document.body.classList.remove('has-warning');\n            })\n            \n            this.warningTime = 3000\n            this.warningTimeout = undefined;\n\n            window.warningTimeout = this.warningTimeout;\n        },  \n\n        showWarning: function(content, time = this.warningTime) {\n            if (this.warningTimeout) {\n                clearTimeout(this.warningTimeout);\n            }\n\n            this.warningPopupContent.textContent = content;\n            document.body.classList.add('has-warning');\n            \n            if (time) {\n                this.warningTimeout = setTimeout(() => {\n                    document.body.classList.remove('has-warning');\n                }, time);\n            }\n        },\n\n        backgroundOverlayHoverEffect: function() {\n            const backgroundOverlay = document.querySelector('.background-overlay')\n            const backgroundCursorWrapper = backgroundOverlay.firstChild\n\n            const enlargeCursor = () => {\n                backgroundCursorWrapper.classList.add('enlarge-cursor')\n            }\n\n            const dwindleCursor = () => {\n                backgroundCursorWrapper.classList.remove('enlarge-cursor')\n            }\n\n            const setCursorPosition = (clientX, clientY) => {\n                requestAnimationFrame(() => {\n                    backgroundCursorWrapper.style.setProperty('--translate-y', clientY)\n                    backgroundCursorWrapper.style.setProperty('--translate-x', clientX)\n                })\n            }\n\n            const handleMouseMove = (e) => {\n                setCursorPosition(e.clientX, e.clientY)                \n            }\n\n            const handleMouseEnter = (e) => {\n                setCursorPosition(e.clientX, e.clientY)\n                enlargeCursor()\n            }\n            \n            const handleMouseLeave = e => {\n                setCursorPosition(e.clientX, e.clientY)\n                backgroundCursorWrapper.removeEventListener('mousemove', handleMouseMove)\n                dwindleCursor()\n            }\n\n            backgroundOverlay.addEventListener('mouseenter', handleMouseEnter)\n            backgroundOverlay.addEventListener('mouseleave', handleMouseLeave)\n            backgroundOverlay.addEventListener('mousemove', handleMouseMove)\n            backgroundOverlay.addEventListener('click', dwindleCursor)\n        },\n        backgroundOverlayHoverEffect1: function() {\n            const backgroundOverlay = document.querySelector('.background-overlay1')\n            if (!backgroundOverlay) return;\n          \n            const backgroundCursorWrapper = backgroundOverlay.firstChild\n\n            const enlargeCursor = () => {\n                backgroundCursorWrapper.classList.add('enlarge-cursor')\n            }\n\n            const dwindleCursor = () => {\n                backgroundCursorWrapper.classList.remove('enlarge-cursor')\n            }\n\n            const setCursorPosition = (clientX, clientY) => {\n                requestAnimationFrame(() => {\n                    backgroundCursorWrapper.style.setProperty('--translate-y', clientY)\n                    backgroundCursorWrapper.style.setProperty('--translate-x', clientX)\n                })\n            }\n\n            const handleMouseMove = (e) => {\n                setCursorPosition(e.clientX, e.clientY)                \n            }\n\n            const handleMouseEnter = (e) => {\n                setCursorPosition(e.clientX, e.clientY)\n                enlargeCursor()\n            }\n            \n            const handleMouseLeave = e => {\n                setCursorPosition(e.clientX, e.clientY)\n                backgroundCursorWrapper.removeEventListener('mousemove', handleMouseMove)\n                dwindleCursor()\n            }\n\n            backgroundOverlay.addEventListener('mouseenter', handleMouseEnter)\n            backgroundOverlay.addEventListener('mouseleave', handleMouseLeave)\n            backgroundOverlay.addEventListener('mousemove', handleMouseMove)\n            backgroundOverlay.addEventListener('click', dwindleCursor)\n        },\n\n        productBlockScroller: function (wrapper) {\n            const { Back } = window;\n            const easingEffect = Back.easeInOut.config(1.7);\n\n            let cursorWrapper = wrapper.get(0)?.querySelector('.products-cursor');\n\n            if(!cursorWrapper) return;\n\n            let innerCursor = cursorWrapper.querySelector('.products-cursor__inner'),\n                imageCursor = cursorWrapper.querySelector('.products-cursor__image'),\n                iconCursor = cursorWrapper.querySelector('.products-cursor__icon'),\n                itemTween = wrapper.get(0)?.querySelectorAll('.halo-block-content.is-scroll, .products-load.is-scroll'),\n                itemNotTween = wrapper.get(0)?.querySelectorAll('.card-product__group, .card-action, .card-title, .card-swatch, .variants-popup, .card-compare, .card-quickview, .card-wishlist, .list-product-tabs'),\n                clientX,\n                clientY,\n                scrollerBox,\n                cursorSide = null,\n                cursorInsideSwiper = false;\n\n            document.addEventListener('mousemove', (event) => {\n                clientX = event.clientX;\n                clientY = event.clientY;\n                docClientX = event.clientX;\n                docClientY = event.clientY;\n            });\n\n            const render = () => {\n                TweenMax.set(cursorWrapper, {\n                    x: clientX,\n                    y: clientY\n                });\n                \n                requestAnimationFrame(render);\n            };\n\n            requestAnimationFrame(render);\n\n            const wrapTween = TweenMax.to([cursorWrapper] , 0.1, {\n                scale: 2.5,\n                opacity: 1,\n                backgroundColor: 'rgba(42,104,118,1)',\n                ease: easingEffect,\n                paused: true\n            });\n\n            const elementTween = TweenMax.to([imageCursor, iconCursor] , 0.1, {\n                opacity: 1,\n                ease: easingEffect,\n                paused: true\n            });\n\n            const handleMouseEnter = (event) => {\n                wrapTween.play();\n                elementTween.play();\n                cursorWrapper.classList.add('handleMouseEnter');\n                cursorWrapper.classList.remove('handleMouseLeave');\n            };\n\n            const handleMouseLeave = (event) => {\n                wrapTween.reverse();\n                elementTween.reverse();\n                cursorWrapper.classList.add('handleMouseLeave');\n                cursorWrapper.classList.remove('handleMouseEnter');\n            };\n\n            itemTween.forEach(element => {\n                element.addEventListener('mouseenter', handleMouseEnter);\n                element.addEventListener('mouseleave', handleMouseLeave);\n            });\n\n            itemNotTween.forEach(element => {\n                element.addEventListener('mouseenter', handleMouseLeave);\n                element.addEventListener('mouseleave', handleMouseEnter);\n            });\n        },\n\n        productCustomInformation() {\n            const $customInfo = $('[data-custom-information]');\n            const $thisPopup = $('#halo-product-custom-information');\n            \n            $customInfo.on('click', (event) => {\n                const $this = $(event.currentTarget);\n                const title = $this.find('.title')[0].innerText;\n                const thisContent = $this.find('.product-customInformation__popup').html();\n\n                if (thisContent === \"\" || thisContent == null) return;\n                $thisPopup.addClass('is-show');\n                $thisPopup.find('.halo-popup-title').text(title);\n                $thisPopup.find('.halo-popup-content').html(thisContent);\n                $body.addClass('is-custom-information');\n            });\n\n            $doc.on('click', '[data-close-custom-information]', () => {\n                $body.removeClass('is-custom-information');\n                $thisPopup.removeClass('is-show');\n            });\n\n            $doc.on('click', (event) => {\n                if ($body.hasClass('is-custom-information')) {\n                    if (($(event.target).closest('#halo-product-custom-information').length === 0) && ($(event.target).closest('[data-custom-information]').length === 0)) {\n                        $body.removeClass('is-custom-information');\n                    }\n                }\n            });\n        },\n\n        initLazyloadObserver(loadingImages, productGrid) {\n            const setLazyLoaded = (target) => {\n                const card = target.closest('.card')\n                card.classList.add('ajax-loaded')\n            }\n\n            this.lazyloadedObserver = new MutationObserver((mutationList, observer) => {\n                mutationList.forEach((mutation) => {\n                    if (mutation.type == 'attributes') {\n                        if (!mutation.target.classList.contains('lazyloaded')) return \n                        setLazyLoaded(mutation.target)\n                    }\n                })\n            }) \n            \n            const parentObserver = new MutationObserver((mutationlist) => {\n                mutationlist.forEach((mutation) => {\n                    if (mutation.type == 'childList') {\n                        const addedLoadingImages = [...mutation.addedNodes].map(node => node.querySelector('.media--loading-effect img'))\n                        addedLoadingImages.forEach(image => {\n                            this.lazyloadedObserver.observe(image, { childList: true, attributes: true })\n                        })    \n                    }\n                })\n            }) \n\n            if (productGrid) parentObserver.observe(productGrid, { subtree: false, childList: true });\n            if (loadingImages.length > 0) loadingImages.forEach(image => {\n                if (image.classList.contains('lazyloaded')) {\n                    setLazyLoaded(image)\n                } else {\n                    this.lazyloadedObserver.observe(image, { childList: true, attributes: true })\n                }\n            })\n        },\n\n        observeImageLazyloaded(images) {\n            images.forEach(image => {\n                this.lazyloadedObserver.observe(image, { childList: true, attributes: true })\n            })\n        },\n\n        iconZoomClickMobile() {\n            const iconZoom = $('.productView-iconZoom');\n            iconZoom.on('click', (event) => {\n                document.querySelector('.productView-image .productView-img-container .media').click();\n            });\n        },\n\n        calculateTranslateYHeight() {\n            const cardActions = document.querySelectorAll('.card .card-action:not(.variants-popup-form)');\n            let heighest = 0;\n          \n            if (!cardActions.length) return;\n            cardActions.forEach(cardAction => {\n              cardAction.classList.add('temporary-show');\n            \n              const height = cardAction.clientHeight ;\n              if (height > heighest) heighest = height;\n  \n              cardAction.classList.remove('temporary-show');\n            })\n            document.body.style.setProperty('--translate-y-height', heighest * -1 + 'px');\n        },\n\n        checkScrollLayoutForRecenlyViewed() {\n            const RecentlyViewedSection = document.getElementById('recently-viewed-products-list-2');\n\n            if (RecentlyViewedSection && RecentlyViewedSection.classList.contains('products-flex')) {\n                const RecentlyViewedObserver = new MutationObserver((mutationList, observer) => {\n                    const mutationRecentlyViewed = mutationList[0];\n\n                    if (mutationRecentlyViewed.type == 'attributes' \n                        && mutationRecentlyViewed.target.classList.contains('recently-viewed-loaded')) {\n                        const enableHover = $(mutationRecentlyViewed.target.closest('[data-recently-viewed-block]')).find('[data-enable-hover]').attr('data-enable-hover')\n                        if (enableHover === 'true' && (RecentlyViewedSection.clientWidth < RecentlyViewedSection.scrollWidth)) {\n                            halo.productBlockScroller($(mutationRecentlyViewed.target.closest('[data-recently-viewed-block]')));\n                        }\n\n                        observer.disconnect();\n                    }\n                })\n\n                RecentlyViewedObserver.observe(RecentlyViewedSection, { attributes: true });\n            }\n        },\n      \n        clickIconScrollSection() {\n            if (!document.querySelector('.arrow-icon-scroll')) return;\n            let isScrollingDown = 'next';\n            const sections = document.querySelectorAll('.wrapper-body .shopify-section'),\n              sectionsLength = sections.length,\n              sectionFirstHeight = sections[0]?.getBoundingClientRect().height || 0,\n              sectionEndHeight = sections[sectionsLength - 1]?.getBoundingClientRect().height || 0,\n              footerHeight = document.querySelectorAll('.shopify-section-group-footer-group')[0]?.getBoundingClientRect().height || 0;\n\n              if (window.pageYOffset + sectionEndHeight >= document.documentElement.scrollHeight - footerHeight) loadRotateArrow('prev');\n            \n              $(window).scroll(function() {\n                  if (window.pageYOffset + sectionEndHeight >= document.documentElement.scrollHeight - footerHeight) loadRotateArrow('prev');\n                  else if (window.pageYOffset <= sectionFirstHeight/2) loadRotateArrow('next');\n              });\n            \n              $doc.on('click', '.arrow-icon-scroll', (event) => {\n                  let checkScroll = true;\n                  const headerHeight = window.innerWidth > 1024 ? document.querySelectorAll('sticky-header')[0]?.getBoundingClientRect().height : document.querySelector('sticky-header-mobile')?.getBoundingClientRect().height || 0,\n                    footerTop = document.querySelectorAll('.shopify-section-group-footer-group')[0]?.getBoundingClientRect().top || -1;\n                \n                  sections.forEach((element, index) => {\n                      if (!checkScroll) return;\n                      const thisTop = element.getBoundingClientRect().top;\n                    \n                      if (thisTop >= 0) {\n                          checkScroll = false;\n                        \n                          if (isScrollingDown == 'next') {\n                              if (element.nextElementSibling != null) scrollToSection(element.nextElementSibling.offsetTop - headerHeight);\n                              sectionsLength == index + 2 || element.nextElementSibling == null ? loadRotateArrow('prev') : loadRotateArrow('next');\n                          }\n                          else {\n                              if (element.previousElementSibling != null) scrollToSection(element.previousElementSibling.offsetTop - headerHeight);\n                              index == 1 || element.previousElementSibling == null ? loadRotateArrow('next') : loadRotateArrow('prev');\n                          }\n                      }\n                      else if (footerTop >= 0) scrollToSection(sections[sectionsLength - 1].offsetTop - headerHeight);\n                  });\n              });\n            \n              function scrollToSection(scope, rotate) {\n                  window.scrollTo({top: scope, behavior: \"smooth\"});\n              }\n  \n              function loadRotateArrow(rotate) {\n                  isScrollingDown = rotate;\n                  rotate == 'next' ? document.querySelector('.arrow-icon-scroll').classList.remove('rotate') : document.querySelector('.arrow-icon-scroll').classList.add('rotate');\n              }\n        },\n\n        specialBanner() {\n            const banners = document.querySelectorAll('[sticky-special-banner]'),\n              wdWidth = window.innerWidth,\n              wdHeight = window.innerHeight,\n              headerHeight = wdWidth > 1024 ? document.querySelectorAll('sticky-header')[0]?.getBoundingClientRect().height : document.querySelector('sticky-header-mobile')?.getBoundingClientRect().height || 0;\n          \n            if (banners) {\n                banners.forEach(element => {\n                    const banner = element.querySelector('.special-banner__img_box'),\n                      bannerWrap = element.querySelector('.special-banner__img'),  \n                      wrapperHeight = element.closest('.special-banner__wrapper').getBoundingClientRect().height,\n                      bannerHeight = bannerWrap.getBoundingClientRect().height;\n                  \n                    let top = headerHeight || 0;\n                    if (wdWidth >= 1200) {\n                        if (wrapperHeight > bannerHeight) {\n                            if (wdHeight > bannerHeight) top = (wdHeight - bannerHeight)/2;\n                            calculateSticky(banner, top);\n                        }\n                    }\n                    else if (wdWidth >= 768 && wdWidth < 1200) {\n                        if (wrapperHeight > bannerHeight) {\n                            calculateSticky(banner, top);\n                        }\n                    }\n                    else {\n                        element.classList.remove('is-sticky');\n                        element.style.top = ``;\n                    }\n                });\n            }\n\n            function calculateSticky(banner, top) {\n                banner.classList.add('is-sticky');\n                banner.style.top = `${top}px`;\n            }\n        },\n\n        specialBannerSlider() {\n            const productGrid = $('.special-banner__products--grid'),\n              wdWidth = window.innerWidth;\n          \n            if (productGrid) {\n                productGrid.each(function(index, element) {\n                    const $this = $(element),\n                      $block = $this.closest('.special-banner__product');\n                    \n                    if (!$block.hasClass('ajax-loaded')) return;\n                    \n                    if (wdWidth < 1200) {\n                        if (!$this.hasClass('slick-initialized')) {\n                            $this.addClass('products-carousel');\n                            specialProductSlider($block);\n                        }\n                    }\n                    else {\n                        if ($this.hasClass('slick-initialized')) {\n                            $this.slick('unslick');\n                            $this.removeClass('products-carousel');\n                        }\n                    }\n                })\n            }\n\n            function specialProductSlider(wrapper) {\n                let productGrid = wrapper.find('.products-carousel'),\n                    itemToShow = productGrid.data('item-to-show'),\n                    itemDots = productGrid.data('item-dots'),\n                    itemDotsMb = productGrid.data('item-dots-mb'),\n                    itemArrows = productGrid.data('item-arrows'),\n                    itemArrowsMb = productGrid.data('item-arrows-mb');\n    \n                productGrid.slick({\n                    mobileFirst: true,\n                    adaptiveHeight: true,\n                    infinite: true,\n                    slidesToShow: 2,\n                    slidesToScroll: 2,\n                    arrows: itemArrowsMb,\n                    dots: itemDotsMb,\n                    nextArrow: window.arrows.icon_next,\n                    prevArrow: window.arrows.icon_prev,\n                    rtl: window.rtl_slick,\n                    responsive: \n                    [\n                        {\n                            breakpoint: 767,\n                            settings: {\n                                arrows: itemArrows,\n                                dots: itemDots,\n                                slidesToShow: itemToShow,\n                                slidesToScroll: itemToShow,\n                            }\n                        }\n                    ]\n                });\n            }\n        }\n    }\n})(jQuery);"],
  "mappings": "CAAC,SAAU,EAAG,CACV,IAAI,MAAQ,EAAE,MAAM,EAChB,KAAO,EAAE,QAAQ,EACjB,MAAQ,EAAE,MAAM,EAChB,KAAO,EAAE,MAAM,EAEnB,KAAK,MAAM,IAAM,CACb,KAAK,UAAU,IAAM,CACjB,KAAK,cAAgB,EACzB,CAAC,EAED,KAAK,SAAS,IAAM,CAChB,KAAK,cAAgB,EACzB,CAAC,EAED,KAAK,MAAM,CACf,CAAC,EAED,OAAO,OAAS,UAAW,CACvB,KAAK,KAAK,CACd,EAEA,IAAI,KAAO,CACP,YAAa,KACb,cAAe,GAEf,MAAO,UAAW,CACd,KAAK,aAAa,EAClB,KAAK,mBAAmB,EAEpB,UAAU,UAAU,MAAM,cAAc,GAAK,CAAE,UAAU,UAAU,MAAM,QAAQ,EACjF,SAAS,KAAK,UAAU,IAAI,QAAQ,EAEpC,SAAS,KAAK,UAAU,IAAI,QAAQ,EAG1B,mBAAmB,KAAK,UAAU,SAAS,GAAK,CAAC,OAAO,UAC3D,SAAS,KAAK,UAAU,IAAI,KAAK,EAEzC,MAAM,SAAS,kBAAkB,IAChC,KAAK,2BAA2B,EAChC,KAAK,eAAe,GAGrB,EAAE,0BAA0B,EAAE,QAC7B,KAAK,yBAAyB,EAG9B,MAAM,SAAS,wBAAwB,GACvC,KAAK,0BAA0B,EAGnC,OAAO,gBAAkB,CACrB,kCAAmC,KAAK,kCACxC,2BAA4B,KAAK,2BACjC,mBAAoB,KAAK,mBACzB,qBAAsB,KAAK,qBAC3B,0BAA2B,KAAK,yBACpC,CACJ,EAEA,KAAM,UAAY,CACd,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,YAAY,EAEb,EAAE,oBAAoB,EAAE,QACxB,KAAK,iBAAiB,GAItB,OAAO,WAAW,MAAQ,OAAO,WAAW,UAC5C,KAAK,cAAc,EAInB,OAAO,WAAa,OACpB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAIjC,MAAM,cAAgB,SAAS,iBAAiB,4BAA4B,EACtE,YAAc,SAAS,eAAe,8BAA8B,GAEtE,cAAc,OAAS,GAAK,cAC5B,KAAK,qBAAqB,cAAe,WAAW,EAGrD,MAAM,SAAS,mBAAmB,IACjC,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,GAGnC,OAAO,WAAa,MACpB,KAAK,kBAAkB,EAGxB,MAAM,SAAS,eAAe,GAC7B,KAAK,kBAAkB,EAGxB,MAAM,SAAS,kBAAkB,IAChC,KAAK,gBAAgB,EAAE,mBAAmB,CAAC,EAC3C,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,IAG1B,MAAM,SAAS,eAAe,GAAK,MAAM,SAAS,kBAAkB,KACnE,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,GAGhC,MAAM,SAAS,kBAAkB,GAChC,KAAK,eAAe,GAGrB,MAAM,SAAS,qBAAqB,GAAK,MAAM,SAAS,iBAAiB,KACxE,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,GAG/B,MAAM,SAAS,2BAA2B,IACzC,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,GAEhC,MAAM,SAAS,qBAAqB,GAAK,EAAE,2BAA2B,EAAE,SACvE,KAAK,8BAA8B,EACnC,KAAK,0BAA0B,GAGnC,KAAK,kCAAkC,EAEvC,IAAI,gBACJ,OAAO,WAAa,KAAO,gBAAkB,GAAO,gBAAkB,GAEtE,KAAK,GAAG,SAAU,IAAM,CACpB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACrB,OAAO,WAAa,KACpB,SAAS,KAAK,UAAU,OAAO,WAAW,EACnC,kBACP,gBAAkB,GAClB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,mBAAmB,EAEhC,CAAC,CACL,EAEA,2BAA4B,UAAY,CACpC,OAAQ,OAAO,0BAA4B,OAAO,SAAY,KAAe,SAAS,iBAAmB,cAAiB,OAAO,kBACrI,EAEA,aAAc,UAAW,CACrB,IAAI,KAAO,UAAU,CACjB,IAAI,OAAS,EAAE,sBAAsB,EAEjC,OAAO,OAAS,GAChB,OAAO,KAAK,CAACA,OAAO,UAAY,CAC5B,IAAI,MAAQ,EAAE,OAAO,EACjB,KAAO,MAAM,KAAK,eAAe,EACjC,IAAM,QAAQ,sBAAsB,EAAE,IAErC,MAAM,SAAS,SAAS,GACrB,IAAM,OAAO,YAAc,MAC3B,KAAK,YAAY,IAAI,EACrB,EAAE,wBAA0B,KAAO,IAAI,EAAE,SAAS,SAAS,EAGvE,CAAC,CAET,EAEA,KAAK,EACL,OAAO,iBAAiB,SAAU,IAAI,CAC1C,EAEA,YAAa,SAAS,KAAM,CACxB,IAAI,WAAa,SAAS,cAAc,QAAQ,EAChD,WAAW,IAAM,KACjB,SAAS,KAAK,YAAY,UAAU,CACxC,EAEA,gBAAiB,SAAS,KAAM,MAAO,CACnC,GAAI,MAAQ,GAAI,OAChB,MAAM,eAAiB,SAAS,cAAc,MAAM,EACpD,eAAe,IAAM,aACrB,eAAe,KAAO,WACtB,eAAe,KAAO,KACtB,MAAM,WAAW,aAAa,eAAgB,KAAK,CACvD,EAEA,mBAAoB,UAAW,CAC3B,IAAI,cAAgB,GAEpB,KAAK,UAAU,IAAM,CACjB,cAAgB,EACpB,CAAC,EAED,KAAK,SAAS,IAAM,CAChB,cAAgB,EACpB,CAAC,EAED,MAAM,QAAU,CAAC,QAAS,WAAa,CACnC,QAAQ,QAAQ,OAAS,CACrB,GAAI,MAAM,eAAgB,CACtB,MAAM,OAAS,EAAE,MAAM,MAAM,EAC7B,GAAI,OAAO,SAAS,aAAa,EAAG,OAEpC,IAAI,IAAM,OAAO,KAAK,YAAY,EAC9B,OAAS,OAAO,KAAK,QAAQ,EAC7B,MAAQ,OAAO,KAAK,OAAO,EAC3B,YAAc,OAAO,KAAK,aAAa,EACvCC,OAAQ,OAAO,KAAK,OAAO,EAC3B,UAAY,OAAO,KAAK,WAAW,EACnC,aAAe,OAAO,KAAK,cAAc,EAE1C,KAAO,MAAQ,KAAO,KACrB,EAAE,KAAK,CACH,KAAM,MACN,IAAK,OAAO,OAAO,KAAO,gBAAkB,IAC5C,MAAO,GACP,KAAM,CACF,KAAM,qBACN,WAAY,SAAW,MAAQ,WAAa,OAAS,cAAgB,UAAY,eAAiB,YAAc,UAAYA,OAAQ,iBAAmB,YAC3J,EACA,WAAY,UAAY,CACpB,OAAO,SAAS,aAAa,CACjC,EACA,QAAS,SAAU,KAAM,CACrB,GAAI,KAAO,GAAI,CACX,MAAM,IAAM,KAAK,eAAe,EAAE,IAAI,EAAG,EAAG,KAAK,EAC7C,QAAU,OACV,OAAO,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAC/B,QAAU,SACjB,OAAO,KAAK,oBAAoB,EAAE,KAAK,GAAG,EACnC,QAAU,UACjB,OAAO,KAAK,gBAAgB,EAAE,KAAK,GAAG,CAE9C,CACJ,EACA,SAAU,UAAY,CAiBlB,GAhBI,QAAU,UACV,KAAK,mBAAmB,MAAM,EAG9B,QAAU,UACU,OAAO,KAAK,qBAAqB,EAAE,KAAK,mBAAmB,IAC3D,QAChB,KAAK,qBAAqB,MAAM,EAIpC,OAAO,SAAS,yBAAyB,GAAK,QAAU,QAAU,OAAO,WAAa,OACtF,OAAO,KAAK,iCAAiC,EAAE,SAAS,mBAAmB,EAC3E,KAAK,mBAAmB,MAAM,GAG/B,OAAO,QAAQ,KAAK,CACnB,IAAI,aAAe,EAAE,qBAAqB,EAE1C,KAAK,iCAAiC,YAAY,CACtD,CAYA,GAVA,KAAK,0BAA0B,EAE5B,OAAO,SAAS,MACf,KAAK,kCAAkC,EAGvC,KAAK,2BAA2B,GAChC,SAAS,WAAW,OAAO,cAAe,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAG,aAAc,cAAc,EAGtH,OAAO,OAAO,MAAQ,EAAE,gCAAgC,EAAE,OAAS,GAAK,OAAO,KAAO,MAAQ,OAAO,OAAO,IAAI,mBAAsB,YACtI,OAAO,OAAO,IAAI,kBAAkB,EAAG,OAAO,IAAI,kBAAkB,EAAG,OAAO,IAAI,WAAW,EAAG,OAAO,IAAI,aAAa,EAAG,OAAO,IAAI,WAAW,CAGzJ,CACJ,CAAC,GAED,OAAO,SAAS,aAAa,EAEzB,QAAU,UACV,KAAK,mBAAmB,MAAM,EAG9B,KAAK,2BAA2B,GAChC,SAAS,WAAW,OAAO,cAAe,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAG,aAAc,cAAc,EAGlI,CACJ,CAAC,CACL,EAEA,KAAK,aAAe,SAAS,iBAAiB,sBAAsB,EAEpE,MAAM,OAAS,CACX,UAAW,EACf,EAEA,KAAK,SAAW,IAAI,qBAAqB,QAAS,MAAM,EACxD,KAAK,aAAa,QAAQ,OAAS,CAC/B,KAAK,SAAS,QAAQ,KAAK,CAC/B,CAAC,CACL,EAEA,eAAe,KAAM,cAAe,MAAO,CACvC,YAAO,KAAK,OAAO,cAAe,KAAK,EAChC,IACX,EAEA,2BAA4B,UAAU,CAClC,KAAK,yBAAyB,CAClC,EAEA,eAAgB,UAAW,CACvB,IAAI,OAAS,EAAE,kBAAkB,EAE9B,OAAO,QACN,KAAK,GAAG,QAAS,2CAA6CC,QAAW,CACrEA,OAAM,eAAe,EAErB,EAAE,WAAW,EAAE,QAAQ,CACnB,UAAW,OAAO,OAAO,EAAE,GAC/B,EAAG,GAAI,EACP,IAAI,UAAY,OAAO,KAAK,sBAAsB,EAC9C,gBAAkB,OAAO,KAAK,gCAAgC,EAC9D,YAAc,OAAO,KAAK,6BAA6B,EACvD,kBAAoB,OAAO,KAAK,uCAAuC,GACvE,CAAC,UAAU,SAAS,SAAS,GAAK,CAAC,YAAY,SAAS,SAAS,GAAK,CAAC,gBAAgB,SAAS,SAAS,GAAK,CAAC,kBAAkB,SAAS,SAAS,KACnJ,UAAU,CAAC,GAAG,MAAM,EACpB,YAAY,CAAC,GAAG,MAAM,EACtB,gBAAgB,CAAC,GAAG,MAAM,EAC1B,kBAAkB,CAAC,GAAG,MAAM,EAEpC,CAAC,CAET,EAEA,cAAe,UAAU,CACrB,EAAE,wCAAwC,EAAE,QAAQ,CAClD,YAAa,cACb,aAAc,iBAChB,CAAC,CACL,EAEA,aAAc,UAAY,CACtB,IAAI,YAAc,EAAE,oBAAoB,EACxC,YAAY,GAAG,QAAS,SAAU,EAAG,CACjC,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,mBAAmB,CACpD,CAAC,EAED,MAAM,GAAG,QAAS,SAAU,EAAG,CACvB,EAAE,YAAY,EAAE,SAAS,mBAAmB,GAAO,EAAE,MAAM,MAAM,EAAE,QAAQ,YAAY,EAAE,SAAW,IACpG,EAAE,eAAe,EACjB,EAAE,YAAY,EAAE,YAAY,mBAAmB,EAEvD,CAAC,CACL,EAEA,WAAY,UAAW,CACnB,MAAM,UAAY,SAAS,iBAAiB,2BAA2B,EACvE,GAAI,UAAW,CACX,IAAIF,OAAQ,UAAU,OAAS,GAC/B,UAAU,QAAS,SAAY,CACvB,QAAQ,UAAU,SAAS,uBAAuB,IACtD,QAAQ,aAAa,aAAcA,MAAK,EACxC,QAAQ,MAAM,OAASA,OACvBA,SACJ,CAAC,EAED,MAAM,uBAAyB,SAAS,cAAc,4BAA4B,EAClF,GAAI,wBAA0B,SAAS,KAAK,UAAU,SAAS,gBAAgB,EAAG,CAC9E,MAAM,OAAS,uBAAuB,aAClC,eAAiB,SAAS,cAAc,4CAA4C,EACpF,iBACA,eAAe,MAAM,IAAM,GAAG,MAAM,KACpC,eAAe,UAAU,IAAI,SAAS,EAE9C,CACJ,CACJ,EAEA,uBAAwB,UAAW,CAC/B,GAAI,CAAC,SAAS,cAAc,2BAA2B,EAAG,OAC1D,MAAM,OAAS,SAAS,iBAAiB,4BAA4B,EAErE,SAAS,iBAAiB,QAAUE,QAAU,CAC1C,MAAM,QAAUA,OAAM,OAChB,wBAA0B,QAAQ,QAAQ,2BAA2B,EACrE,iBAAmB,yBAAyB,cAAc,wBAAwB,EAClF,iBAAmB,yBAAyB,cAAc,oBAAoB,EAC9E,iBAAmB,yBAAyB,cAAc,oBAAoB,EAEhF,QAAQ,QAAQ,2BAA2B,GAAK,QAAQ,QAAQ,2BAA2B,IACvF,QAAQ,QAAQ,wBAAwB,GAAK,QAAQ,QAAQ,wBAAwB,IAG/E,QAAQ,QAAQ,wBAAwB,GAAK,QAAQ,QAAQ,wBAAwB,IAAM,CAAC,SAAS,cAAc,wBAAwB,IACjJ,kBAAkB,UAAU,OAAO,MAAM,GAGzC,QAAQ,QAAQ,oBAAoB,GAAK,QAAQ,QAAQ,oBAAoB,KAC7E,kBAAkB,UAAU,OAAO,MAAM,EACzC,kBAAkB,UAAU,OAAO,MAAM,IAGzC,QAAQ,QAAQ,oBAAoB,GAAK,QAAQ,QAAQ,oBAAoB,KAC7E,kBAAkB,UAAU,OAAO,MAAM,EACzC,kBAAkB,UAAU,OAAO,MAAM,GAGzC,QAAQ,QAAQ,+BAA+B,IAC/C,kBAAkB,UAAU,OAAO,MAAM,EACzC,kBAAkB,UAAU,OAAO,MAAM,IAI7C,OAAO,QAAQ,SAAW,CACtB,QAAQ,cAAc,wBAAwB,GAAG,UAAU,OAAO,MAAM,EACxE,QAAQ,cAAc,oBAAoB,GAAG,UAAU,OAAO,MAAM,EACpE,QAAQ,cAAc,oBAAoB,GAAG,UAAU,OAAO,MAAM,CACxE,CAAC,CAET,CAAC,CACL,EAEA,oBAAqB,UAAW,CAC5B,IAAI,eAAiB,EAAE,6CAA6C,EAChE,eAAiB,EAAE,2DAA2D,EAC9E,qBAAuB,EAAE,6BAA6B,EACtD,qBAAuB,EAAE,2CAA2C,EACpE,cAAgB,EAAE,iBAAiB,EAAE,IAAI,4BAA4B,EACrE,mBAAsB,EAAE,+CAA+C,EACvE,mBAAqB,EAAE,6DAA6D,EAEnF,mBAAmB,SAAW,IAAG,mBAAsB,EAAE,6CAA6C,GACtG,mBAAmB,SAAW,IAAG,mBAAsB,EAAE,2DAA2D,GACrH,OAAO,WAAa,MACjB,EAAE,SAAS,EAAE,SAAS,WAAW,GAChC,mBAAmB,SAAS,oBAAoB,EAEpD,cAAc,KAAK,OAAO,MAAM,EAChC,EAAE,sBAAsB,EAAE,GAAG,QAAUA,QAAU,CAC7CA,OAAM,eAAe,EACrB,EAAE,MAAM,EAAE,SAAS,oBAAoB,CAC3C,CAAC,EACD,EAAE,kDAAkD,EAAE,GAAG,QAAUA,QAAU,CACzEA,OAAM,eAAe,EACrB,EAAE,MAAM,EAAE,YAAY,oBAAoB,CAC9C,CAAC,IAEE,EAAE,SAAS,EAAE,SAAS,WAAW,GAChC,mBAAmB,SAAS,oBAAoB,EAEpD,cAAc,WAAW,MAAM,EAE/B,EAAE,6BAA6B,EAAE,GAAG,QAAUA,QAAU,CACpD,cAAc,WAAW,MAAM,EAC/B,EAAE,MAAM,EAAE,YAAY,kBAAkB,CAC5C,CAAC,EAGD,EAAE,oBAAoB,EAAE,GAAG,QAAUA,QAAU,CAC3CA,OAAM,eAAe,EACrB,EAAE,MAAM,EAAE,SAAS,kBAAkB,CACzC,CAAC,EAET,EAEA,uBAAwB,UAAW,CAC/B,IAAI,cAAgB,4BAChB,eAAiB,8CACjB,qBAAuB,qDAEvB,EAAE,MAAM,EAAE,MAAM,EAAI,OACpB,EAAE,QAAQ,EAAE,IAAI,qBAAsB,aAAa,EAAE,GAAG,qBAAsB,cAAe,SAASA,OAAO,CACzGA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EACtB,EAAE,MAAM,EAAE,SAAS,oBAAoB,EACvC,EAAE,iBAAiB,EAAE,IAAI,4BAA4B,EAAE,KAAK,OAAO,MAAM,CAC7E,CAAC,EAED,EAAE,QAAQ,EAAE,IAAI,kBAAkB,EAAE,GAAG,mBAAoB,SAASA,OAAO,CACvE,IAAI,WAAa,EAAE,qBAAqB,EACpC,YAAc,EAAE,yBAAyB,EACzC,EAAE,MAAM,EAAE,SAAS,oBAAoB,GAAK,CAAC,WAAW,IAAIA,OAAM,MAAM,EAAE,QAAU,CAAC,YAAY,IAAIA,OAAM,MAAM,EAAE,SACnH,EAAE,MAAM,EAAE,YAAY,oBAAoB,EAC1C,EAAE,4BAA4B,EAAE,YAAY,yBAAyB,EACrE,EAAE,iBAAiB,EAAE,IAAI,4BAA4B,EAAE,WAAW,MAAM,EAEhF,CAAC,EAGD,EAAE,QAAQ,EAAE,IAAI,qBAAsB,cAAc,EAAE,GAAG,qBAAsB,eAAgB,SAASA,OAAO,CAC3GA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EACtB,EAAEA,OAAM,MAAM,EAAE,QAAQ,4BAA4B,EAAE,SAAS,yBAAyB,EACxF,EAAEA,OAAM,MAAM,EAAE,QAAQ,4BAA4B,EAAE,IAAI,UAAW,KAAK,EAC1E,EAAE,iBAAiB,EAAE,IAAI,4BAA4B,EAAE,KAAK,OAAO,MAAM,CAC7E,CAAC,EAGD,EAAE,QAAQ,EAAE,IAAI,qBAAsB,oBAAoB,EAAE,GAAG,qBAAsB,qBAAsB,SAASA,OAAO,CACvH,EAAEA,OAAM,MAAM,EAAE,QAAQ,4BAA4B,EAAE,SAAS,gCAAgC,CACnG,CAAC,EAED,EAAE,QAAQ,EAAE,IAAI,wBAAwB,EAAE,GAAG,yBAA0B,SAASA,OAAO,CACnF,IAAI,WAAa,EAAE,wCAAwC,EACvD,YAAc,EAAE,4CAA4C,EAChE,GAAI,EAAE,4BAA4B,EAAE,SAAS,yBAAyB,GAAK,CAAC,WAAW,IAAIA,OAAM,MAAM,EAAE,QAAU,CAAC,YAAY,IAAIA,OAAM,MAAM,EAAE,OAAQ,CACtJ,MAAM,OAAS,EAAE,cAAc,EAAE,QAAQ,4BAA4B,EAC/DF,OAAQ,OAAO,KAAK,OAAO,EAEjC,EAAE,4BAA4B,EAAE,YAAY,yBAAyB,EAErE,OAAO,IAAI,UAAWA,MAAK,EAC3B,EAAE,oCAAoC,EAAE,WAAW,MAAM,EACtD,YAAY,SAAS,SAAS,GAC7B,YAAY,YAAY,SAAS,EAAE,SAAS,QAAQ,CAE5D,CACK,EAAEE,OAAM,MAAM,EAAE,QAAQ,wBAAwB,EAAE,SAAW,IAC9D,EAAE,MAAM,EAAE,YAAY,kBAAkB,EACxC,EAAE,4BAA4B,EAAE,YAAY,gCAAgC,EAEpF,CAAC,EAET,EAEA,kBAAmB,UAAW,CAC1B,IAAI,eAAiB,EAAE,oBAAoB,EACvC,YAAc,EAAE,0CAA0C,EAE9D,eAAe,IAAI,8BAA8B,EAAE,GAAG,+BAAiCA,QAAS,CAC5FA,OAAM,eAAe,EACrB,MAAM,SAAS,WAAW,EACnB,OAAO,aAAe,YACjB,EAAE,8DAA8D,EAAE,QAClE,EAAE,8BAA8B,EAAE,SAAS,yCAAyC,GAGxF,EAAE,qEAAqE,EAAE,QACzE,EAAE,6DAA6D,EAAE,SAAS,gEAAgE,EAE1I,EAAE,wEAAwE,EAAE,QAC5E,EAAE,gEAAgE,EAAE,SAAS,gEAAgE,EAE7I,EAAE,mEAAmE,EAAE,QACvE,EAAE,2DAA2D,EAAE,SAAS,gEAAgE,EAExI,EAAE,2CAA2C,EAAE,SAC5C,EAAE,SAAS,EAAE,SAAS,WAAW,EAChC,EAAE,qDAAqD,EAAE,SAAS,2DAA2D,EACxH,EAAE,SAAS,EAAE,SAAS,WAAW,EACtC,EAAE,kDAAkD,EAAE,SAAS,2DAA2D,EAE1H,EAAE,0DAA0D,EAAE,SAAS,2DAA2D,GAG1I,KAAK,kBAAkB,CAC/B,CAAC,EAED,YAAY,IAAI,mCAAmC,EAAE,GAAG,oCAAqC,IAAK,CAC9F,MAAM,YAAY,WAAW,EAC7B,EAAE,oBAAoB,EAAE,IAAI,+BAA+B,EAAE,GAAG,gCAAiC,IAAM,CAC9F,MAAM,SAAS,WAAW,IAEvB,EAAE,8BAA8B,EAAE,SAC/B,EAAE,SAAS,EAAE,SAAS,WAAW,GAAK,EAAE,SAAS,EAAE,SAAS,WAAW,GAAK,EAAE,SAAS,EAAE,SAAS,WAAW,GAAK,EAAE,SAAS,EAAE,SAAS,WAAW,EAClJ,EAAE,8DAA8D,EAAE,SAAS,qDAAqD,EAEhI,EAAE,8DAA8D,EAAE,SAAS,iCAAiC,GAGhH,EAAE,6DAA6D,EAAE,QAC7D,EAAE,YAAY,EAAE,SAAS,SAAS,GAClC,EAAE,qEAAqE,EAAE,aAAa,wDAAwD,EAGlJ,EAAE,2DAA2D,EAAE,QAC/D,EAAE,mEAAmE,EAAE,aAAa,wDAAwD,EAE5I,EAAE,gEAAgE,EAAE,SACjE,EAAE,SAAS,EAAE,SAAS,WAAW,EAChC,EAAE,wEAAwE,EAAE,aAAa,gFAAgF,EAEzK,EAAE,wEAAwE,EAAE,aAAa,gEAAgE,GAG7J,EAAE,kDAAkD,EAAE,SACnD,EAAE,SAAS,EAAE,SAAS,WAAW,GAE3B,EAAE,SAAS,EAAE,SAAS,WAAW,EADtC,EAAE,4DAA4D,EAAE,SAAS,gFAAgF,EAGpJ,EAAE,SAAS,EAAE,SAAS,WAAW,EACtC,EAAE,4DAA4D,EAAE,SAAS,0EAA0E,EAEnJ,EAAE,4DAA4D,EAAE,aAAa,mDAAmD,GAIhJ,CAAC,CAEL,CAAC,EAED,KAAK,GAAG,QAAS,sBAAuB,SAAU,EAAG,CACjD,EAAE,eAAe,EACjB,EAAE,gBAAgB,EAClB,MAAM,YAAY,WAAW,CACjC,CAAC,CACL,EAEA,wBAAyB,UAAW,CAChC,MAAM,GAAG,QAAS,gDAAiD,SAAU,EAAG,CAC5E,GAAG,CAAC,EAAE,cAAc,UAAU,SAAS,sBAAsB,EAAE,CAC3D,EAAE,eAAe,EACjB,EAAE,gBAAgB,EAClB,IAAI,QAAU,EAAE,IAAI,EAChB,QAAU,QAAQ,OAAO,EACzB,gBAAkB,QAAQ,OAAO,EAAE,KAAK,4BAA4B,EAExE,QAAQ,YAAY,WAAW,EAAE,SAAS,SAAS,EAAE,YAAY,QAAQ,EACzE,gBAAgB,IAAI,+BAA+B,EAAE,GAAG,gCAAiC,IAAM,CACvF,QAAQ,SAAS,SAAS,GAAK,CAAC,QAAQ,SAAS,WAAW,GAAK,CAAC,QAAQ,SAAS,QAAQ,GAE3F,QAAQ,SAAS,EAAE,YAAY,SAAS,EAAE,SAAS,WAAW,EAAE,YAAY,QAAQ,CAE5F,CAAC,CAIL,CACJ,CAAC,EAED,MAAM,GAAG,QAAS,kDAAmD,SAAU,EAAG,CAC9E,EAAE,eAAe,EACjB,EAAE,gBAAgB,EAClB,IAAI,QAAU,EAAE,IAAI,EAChB,QAAU,EAAE,IAAI,EAChB,QAAU,QAAQ,OAAO,EAAE,OAAO,EAClC,gBAAkB,QAAQ,OAAO,EAAE,KAAK,4BAA4B,EACpE,gBAAkB,QAAQ,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAElF,QAAQ,YAAY,WAAW,EAAE,SAAS,SAAS,EAAE,YAAY,QAAQ,EACzE,gBAAgB,IAAI,+BAA+B,EAAE,GAAG,gCAAiC,IAAM,CACvF,QAAQ,SAAS,SAAS,GAAK,CAAC,QAAQ,SAAS,WAAW,GAAK,CAAC,QAAQ,SAAS,QAAQ,IAC3F,QAAQ,SAAS,QAAQ,EACzB,QAAQ,SAAS,EAAE,YAAY,SAAS,EAAE,SAAS,WAAW,EAAE,YAAY,QAAQ,EACpF,gBAAgB,QAAQ,CACpB,UAAW,CACf,EAAG,CAAC,EAEZ,CAAC,GAgBE,EAAE,gBAAgB,EAAE,SAAS,kBAAkB,GAAK,EAAE,gBAAgB,EAAE,SAAS,kBAAkB,IAClG,QAAQ,QAAQ,gBAAgB,EAAE,QAAQ,CACtC,UAAW,CACf,EAAG,CAAC,EAGR,QAAQ,QAAQ,gBAAgB,EAAE,SAAS,aAAa,CAC5D,CAAC,EAED,MAAM,GAAG,QAAS,oBAAqB,SAAU,EAAG,CAChD,EAAE,eAAe,EACjB,EAAE,gBAAgB,EAClB,IAAI,QAAU,EAAE,IAAI,EAChB,WAAa,QAAQ,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,UAAU,EACjE,WAAa,QAAQ,OAAO,EAAE,OAAO,EAAE,OAAO,UAAU,EACxD,WAAa,QAAQ,OAAO,EAAE,OAAO,UAAU,EAEnD,WAAW,SAAS,EAAE,YAAY,WAAW,EAC7C,WAAW,YAAY,SAAS,EAAE,YAAY,QAAQ,EACtD,WAAW,SAAS,EAAE,YAAY,WAAW,EAC7C,WAAW,YAAY,SAAS,EAAE,YAAY,QAAQ,EACtD,WAAW,SAAS,EAAE,YAAY,WAAW,EAC7C,WAAW,YAAY,SAAS,EAAE,YAAY,QAAQ,EACtD,EAAE,gBAAgB,EAAE,YAAY,aAAa,CACjD,CAAC,EAEE,OAAO,aAAe,WACrB,KAAK,GAAG,QAAS,yBAA2BA,QAAU,CAClDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,QAAUA,OAAM,cAAc,QAAQ,IAAI,EAC1C,UAAYA,OAAM,cAAc,QAAQ,OAExC,QAAQ,UAAU,SAAS,WAAW,GAEtC,SAAS,cAAc,8BAA8B,EAAE,iBAAiB,IAAI,EAAE,QAAS,SAAW,CAC3F,SAAW,QACV,QAAQ,UAAU,OAAO,WAAW,GAEpC,QAAQ,UAAU,IAAI,WAAW,EAEjC,SAAS,iBAAiB,gCAAgC,EAAE,QAAS,KAAO,CACrE,IAAI,aAAa,IAAI,GAAK,WACzB,IAAI,UAAU,OAAO,WAAW,EAChC,IAAI,UAAU,IAAI,YAAY,IAE9B,IAAI,UAAU,OAAO,YAAY,EACjC,IAAI,UAAU,IAAI,WAAW,EAErC,CAAC,EAET,CAAC,CAET,CAAC,CAET,EAEA,UAAU,MAAO,OAAQ,OAAO,CAC5B,MAAM,EAAI,IAAI,KACd,EAAE,QAAQ,EAAE,QAAQ,EAAK,OAAS,GAAK,GAAK,GAAK,GAAK,EACtD,MAAM,QAAU,WAAa,EAAE,YAAY,EAC3C,SAAS,OAAS,MAAQ,IAAM,OAAS,IAAM,QAAU,SAC7D,EAEA,aAAc,UAAW,CACrB,IAAI,WAGJ,GAFA,SAAS,KAAK,QAAQ,sBAAsB,EAAI,WAAa,GAAO,WAAa,GAE9E,EAAE,iBAAiB,EAAE,OAAS,EAAE,CAC/B,KAAK,GAAG,QAAS,qBAAuBA,QAAU,CAC9C,IAAIC,QAAS,EAAED,OAAM,aAAa,EAAE,KAAK,WAAW,EAChD,KAAM,EAAEA,OAAM,aAAa,EAAE,KAAK,MAAM,EAE5C,EAAE,OAAO,WAAYC,QAAQ,CACzB,QAAS,EACT,KAAM,GACV,CAAC,CACL,CAAC,EAED,IAAI,UAAY,EAAE,sBAAsB,EAAE,KAAK,oBAAoB,EAC/D,QAAU,EAAE,OAAO,UAAU,EAC7B,YACA,YACA,SAEC,OAAO,SAAS,SAAS,QAAQ,SAAS,IAAM,IAAO,OAAO,aAAgB,OAAO,aAAe,UACrG,KAAK,UAAU,WAAY,OAAO,YAAa,CAAC,EAChD,QAAU,OAAO,aAGlB,SAAW,MACV,YAAc,EAAE,oBAAoB,OAAO,IAAI,EAC/C,YAAc,EAAE,yBAAyB,OAAO,IAAI,EACpD,SAAW,EAAE,yBAAyB,OAAO,IAAI,IAEjD,YAAc,EAAE,4BAA4B,EAC5C,YAAc,EAAE,6BAA6B,EAC7C,SAAW,EAAE,iCAAiC,GAGlD,IAAI,QAAU,YAAY,QAAQ,iBAAiB,EAEnD,QAAQ,KAAK,kBAAkB,EAAE,IAAI,WAAW,EAAE,YAAY,WAAW,EACzE,YAAY,SAAS,EAAE,YAAY,WAAW,EAC9C,SAAS,SAAS,EAAE,YAAY,WAAW,EACxC,SAAW,IACZ,YAAY,SAAS,WAAW,EAChC,YAAY,SAAS,WAAW,EAChC,SAAS,SAAS,WAAW,IAE7B,EAAE,+BAA+B,EAAE,SAAS,WAAW,EACvD,EAAE,oCAAoC,EAAE,SAAS,WAAW,EAC5D,EAAE,oCAAoC,EAAE,SAAS,WAAW,GAG9D,MAAM,OAAS,YAAY,QAAQ,SAAS,EAC5C,GAAI,QAAU,OAAO,WAAa,KAAM,CACpC,MAAM,WAAa,EAAE,sCAAsC,EACrD,WAAa,OAAO,KAAK,iCAAiC,EAEhE,GAAI,WAAW,KAAK,aAAa,GAAK,KAAW,CAC/C,WAAW,KAAK,KAAK,EAAE,SAAS,WAAW,EAC3C,MACF,MACE,WAAW,KAAK,aAAa,WAAW,KAAK,aAAa,CAAC,UAAU,WAAW,KAAK,iBAAiB,CAAC,uBAAuB,WAAW,KAAK,YAAY,CAAC,qBAAqB,EAChL,WAAW,KAAK,KAAK,EAAE,SAAS,WAAW,CAEjD,CAEA,IAAI,OAAS,EAAE,8BAA8B,EAAE,KAAK,WAAW,EAC3D,MAAQ,GACR,IAAM,OAAO,OAAO,KAAO,0BAA0B,MAAM,uBAE5D,MAAM,SAAS,gBAAgB,EAC1B,KAAK,MAAM,EAAI,OACZ,OAAO,aAAe,UACrB,OAAO,iBAAiB,OAAQ,IAAM,CAC9B,WACI,OAAS,KACT,MAAQ,GACR,KAAK,sBAAsB,GAAG,GAIlC,SAAS,KAAK,iBAAiB,QAAS,IAAM,CACtC,OAAS,KACT,MAAQ,GACR,KAAK,sBAAsB,GAAG,EAEtC,EAAG,EAAK,CAEhB,EAAG,EAAK,EAER,OAAO,iBAAiB,OAAQ,IAAM,CAC9B,WACI,OAAS,KACT,MAAQ,GACR,KAAK,mBAAmB,GAI5B,SAAS,KAAK,iBAAiB,QAAS,IAAM,CACtC,OAAS,KACT,MAAQ,GACR,KAAK,mBAAmB,EAEhC,EAAG,EAAK,CAEhB,EAAG,EAAK,GAIZ,KAAK,MAAM,EAAI,OACZ,OAAO,aAAe,UACrB,OAAO,iBAAiB,OAAQ,IAAM,CAC9B,WACI,OAAS,KACT,MAAQ,GACR,KAAK,sBAAsB,GAAG,GAIlC,SAAS,KAAK,iBAAiB,QAAS,IAAM,CACtC,OAAS,KACT,MAAQ,GACR,KAAK,sBAAsB,GAAG,EAEtC,EAAG,EAAK,CAEf,EAAG,EAAK,EAET,OAAO,iBAAiB,OAAQ,IAAM,CAC9B,WACI,OAAS,KACT,MAAQ,GACR,KAAK,mBAAmB,GAI5B,SAAS,KAAK,iBAAiB,QAAS,IAAM,CACtC,OAAS,KACT,MAAQ,GACR,KAAK,mBAAmB,EAEhC,EAAG,EAAK,CAEhB,EAAG,EAAK,EAIxB,KAAO,CACH,IAAI,MAAQ,GACR,IAAM,OAAO,OAAO,KAAO,8BAE3B,KAAK,MAAM,EAAI,OACX,OAAO,aAAe,UAClB,WACI,OAAS,KACT,MAAQ,GACR,KAAK,sBAAsB,GAAG,GAIlC,SAAS,KAAK,iBAAiB,QAAQ,IAAM,CACrC,OAAS,KACT,MAAQ,GACR,KAAK,sBAAsB,GAAG,EAEtC,EAAG,EAAK,EAGZ,OAAO,iBAAiB,OAAO,IAAM,CAC7B,WACI,OAAS,KACT,MAAQ,GACR,KAAK,mBAAmB,GAI5B,SAAS,KAAK,iBAAiB,QAAQ,IAAM,CACrC,OAAS,KACT,MAAQ,GACR,KAAK,mBAAmB,EAEhC,EAAG,EAAK,CAEhB,EAAG,EAAK,EAGpB,CACJ,EAEA,sBAAuB,SAAS,IAAK,CACjC,MAAM,WAAa,EAAE,0BAA0B,EACzC,IAAM,EAAE,qCAAqC,EAC7C,MAAQ,IAAI,KAAK,OAAO,GAAK,KAAY,IAAI,KAAK,OAAO,EAAI,IAAI,QAAQ,mBAAmB,EAAE,KAAK,OAAO,EAChH,WAAW,OAAO,6EAA6E,OAA6B,EAAE,KAAK,IAAI,KAAK,GAAK,KAAY,IAAI,KAAK,EAAI,EAAE,QAAQ,EAEpL,MAAM,UAAY,EAAE,wBAAwB,EACtC,aAAe,EAAE,2CAA2C,EAC9D,aAAa,KAAK,EAAE,KAAK,GAAK,IAAM,UAAU,OAAS,GAAG,aAAa,OAAO,sCAAsC,UAAU,KAAK,CAAC,QAAQ,CACpJ,EAEA,mBAAoB,UAAW,CAC3B,GAAI,KAAK,MAAM,EAAI,MACZ,OAAO,aAAe,SAAS,CAC9B,IAAI,IAAM,GACN,YAAc,EAAE,4BAA4B,EAC5C,WAAa,EAAE,0BAA0B,EACzC,cAAgB,EAAE,8BAA8B,EAEhD,SAAS,KAAK,iBAAiB,QAAS,IAAM,CAC1C,GAAI,KAAO,GAAO,CACd,IAAM,GACN,MAAM,QAAU,SAAS,cAAc,KAAK,EACtC,IAAM,SAAS,cAAc,IAAI,EAEvC,OAAO,OAAO,IAAK,CACf,UAAW,wBACf,CAAC,EAED,IAAI,aAAa,OAAQ,MAAM,EAE/B,YAAY,KAAK,CAACH,OAAO,UAAY,CACjC,IAAI,YAAc,QAAQ,cAAc,UAAU,EAAE,QAAQ,kBAAkB,UAAU,EAAI,EAEzFA,QAAS,EACR,YAAY,UAAU,IAAI,YAAY,EAEtC,YAAY,UAAU,IAAI,WAAW,EAGzC,QAAQ,YAAY,WAAW,CACnC,CAAC,EAED,QAAQ,iBAAiB,gCAAgC,EAAE,QAAQ,CAAC,QAASA,SAAU,CACnF,IAAI,SAAW,QAAQ,QAAQ,QAC3B,MAAQ,QAAQ,aAAa,IAAI,EACjC,WAAa,SAAS,cAAc,IAAI,EAE5C,OAAO,OAAO,WAAY,CACtB,UAAW,MACf,CAAC,EAED,WAAW,aAAa,OAAQ,UAAU,EAEtCA,QAAS,GACT,WAAW,UAAU,IAAI,WAAW,EAGxC,WAAW,UAAY,8DAA8D,KAAK,KAAK,QAAQ,OAEvG,IAAI,YAAY,UAAU,CAC9B,CAAC,EAED,cAAc,KAAK,GAAG,EACtB,WAAW,KAAK,QAAQ,SAAS,CACrC,CACJ,EAAG,EAAK,CAChB,CAER,EAEA,SAAU,SAAS,IAAK,CAChB,EAAE,SAAS,EAAE,SAAS,WAAW,GACjC,MAAM,GAAG,EACJ,KAAK,UAAY,SAAS,KAAK,CAAC,EAChC,KAAK,MAAQ,CACV,MAAM,KAAO,SAAS,cAAc,KAAK,EACzC,KAAK,UAAY,KACjB,MAAM,WAAa,KAAK,cAAc,mBAAmB,EACrD,YAAc,WAAW,UAAU,KAAK,EAAE,SAC1C,SAAS,cAAc,mBAAmB,EAAE,UAAY,WAAW,UAE3E,CAAC,EACA,MAAM,GAAK,CACR,QAAQ,MAAM,CAAC,CACnB,CAAC,CAEb,EAEA,yBAA0B,UAAW,CACjC,MAAM,QAAU,CAAC,QAAS,WAAa,CACnC,QAAQ,QAAQ,OAAS,CACrB,GAAI,MAAM,eAAgB,CACtB,MAAM,OAAS,EAAE,MAAM,MAAM,EAC7B,GAAI,OAAO,SAAS,aAAa,EAAG,OAEpC,IAAI,SAAW,OAAO,KAAK,oBAAoB,EAC3C,QAAU,SAAS,KAAK,uBAAuB,EAC/C,WAAa,OAAO,KAAK,2BAA2B,EACpD,MAAQ,OAAO,KAAK,OAAO,EAE3B,WAAa,SAAS,KAAK,mBAAmB,EAC9C,UAAY,OAAO,KAAK,2CAA2C,EAElE,OAAO,SAAS,aAAa,GAC9B,KAAK,kBACD,WAAW,KAAK,MAAM,EACtB,UAAU,KAAK,UAAU,EACzB,UAAU,KAAK,gBAAgB,EAC/B,OAAO,KAAK,WAAW,EACvB,MACA,MACJ,EAGJ,QAAQ,IAAI,OAAO,EAAE,GAAG,QAAS,SAAU,EAAG,CAI1C,GAHA,EAAE,eAAe,EACjB,EAAE,gBAAgB,EAEd,CAAC,EAAE,IAAI,EAAE,SAAS,QAAQ,EAAG,CAC7B,MAAM,OAAS,EAAE,IAAI,EACjB,cAAgB,EAAE,OAAO,KAAK,QAAQ,CAAC,EAE3C,QAAQ,YAAY,QAAQ,EAC5B,WAAW,YAAY,QAAQ,EAE1B,cAAc,SAAS,QAAQ,GAAG,KAAK,kBAAkB,OAAO,KAAK,MAAM,EAAG,cAAc,KAAK,UAAU,EAAG,cAAc,KAAK,gBAAgB,EAAG,OAAO,KAAK,WAAW,EAAG,KAAK,EAExL,OAAO,SAAS,QAAQ,EACxB,cAAc,SAAS,QAAQ,EAC/B,cAAc,KAAK,eAAe,EAAE,MAAM,SAAS,CACvD,CACJ,CAAC,CACL,CACJ,CAAC,CACL,EAEA,KAAK,aAAe,SAAS,iBAAiB,0BAA0B,EAExE,MAAM,OAAS,CACX,UAAW,EACf,EAEA,KAAK,SAAW,IAAI,qBAAqB,QAAS,MAAM,EACxD,KAAK,aAAa,QAAQ,OAAS,CAC/B,KAAK,SAAS,QAAQ,KAAK,CAC/B,CAAC,CACL,EAEA,kBAAmB,SAAU,OAAQ,WAAY,cAAe,UAAW,MAAO,KAAM,CACpF,EAAE,KAAK,CACH,KAAM,MACN,IAAK,OACL,KAAM,CACF,WAAY,aAAa,MAAM,UAAU,KAAK,EAClD,EAEA,WAAY,UAAY,CACG,MAAK,SAAS,aAAa,CACtD,EAEA,QAAS,SAAU,KAAM,CAErB,GADA,cAAc,OAAO,EAAE,SAAS,QAAQ,EACpC,QAAU,2BAEd,GAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAAM,GAC1B,UAAU,aAAa,MAEtB,CACD,MAAM,IAAM,KAAK,eAAe,EAAE,IAAI,EAAG,EAAG,KAAK,EACjD,cAAc,KAAK,GAAG,EAEnB,OAAO,SAAS,MACf,KAAK,kCAAkC,EAGvC,KAAK,2BAA2B,GAChC,SAAS,WAAW,OAAO,cAAe,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAG,aAAc,cAAc,CAE9H,CACJ,EACA,SAAU,UAAY,CAQlB,GAPI,cAAc,SAAS,mBAAmB,EAC1C,KAAK,mBAAmB,cAAc,OAAO,CAAC,EAEzC,cAAc,SAAS,iBAAiB,GAAK,cAAc,KAAK,cAAc,IAAM,QACzF,KAAK,qBAAqB,aAAa,EAGvC,OAAO,OAAO,MAAQ,EAAE,gCAAgC,EAAE,OAAS,GAAK,OAAO,KAAO,MAAQ,OAAO,OAAO,IAAI,mBAAsB,YACtI,OAAO,OAAO,IAAI,kBAAkB,EAAG,OAAO,IAAI,kBAAkB,EAAG,OAAO,IAAI,WAAW,EAAG,OAAO,IAAI,aAAa,EAAG,OAAO,IAAI,WAAW,CAEzJ,EACA,MAAO,SAAU,IAAK,KAAM,CACxB,UAAU,aAAa,CAC3B,CACJ,CAAC,EAED,MAAM,UAAaI,gBAAkB,CACjCA,eAAc,KAAK,+EAA+E,CACtG,CACJ,EACA,iBAAkB,UAAW,CACzB,IAAI,iBAAmB,EAAE,oBAAoB,EACzC,WAAa,iBAAiB,KAAK,cAAc,EACjD,SAAW,iBAAiB,KAAK,WAAW,EAC5C,WAAa,iBAAiB,KAAK,cAAc,EACjD,WAAa,iBAAiB,KAAK,aAAa,EAChD,aAAe,iBAAiB,KAAK,gBAAgB,EA+BzD,GA7BG,iBAAiB,OAAS,GACtB,iBAAiB,IAAI,oBAAoB,GACxC,iBAAiB,MAAM,CACnB,YAAa,GACb,eAAgB,GAChB,SAAU,GACV,SAAU,GACV,aAAc,WACd,eAAgB,WAChB,OAAQ,aACR,KAAM,WACN,SAAU,GACV,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,UACZ,WACA,CACI,CACI,WAAY,KACZ,SAAU,CACN,OAAQ,WACR,KAAM,QACV,CACJ,CACJ,CACJ,CAAC,EAIL,iBAAiB,SAAS,uBAAuB,EAAG,CACpD,IAAI,UAAY,iBAAiB,KAAK,aAAa,EACnD,iBAAiB,QAAQ,wCAAwC,EAAE,KAAK,0BAA0B,EAAE,SAAS,SAAS,EACtH,iBAAiB,GAAG,cAAgBF,QAAU,CAC1C,IAAI,WAAa,iBAAiB,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAC3E,iBAAiB,KAAK,cAAc,EAAE,KAAK,WAAa,CAAC,CAC7D,CAAC,CACL,CACJ,EACA,mBAAoB,SAAS,QAAS,CAClC,IAAI,YAAc,QAAQ,KAAK,oBAAoB,EAC/C,WAAa,YAAY,KAAK,cAAc,EAC5C,SAAW,YAAY,KAAK,WAAW,EACvC,WAAa,YAAY,KAAK,cAAc,EAC5C,WAAa,YAAY,KAAK,aAAa,EAC3C,aAAe,YAAY,KAAK,gBAAgB,EAChD,gBAAkB,SAAS,KAAK,UAAU,SAAS,wBAAwB,EAE/E,GAAG,YAAY,OAAS,EAAG,CACvB,GAAG,YAAY,SAAS,mBAAmB,EAAG,OAC9C,GAAG,YAAY,IAAI,oBAAoB,EAAG,CAStC,GARI,iBACA,YAAY,GAAG,OAAQ,IAAM,CACzB,MAAM,oBAAsB,YAAY,KAAK,uBAAuB,EAAE,GAAG,CAAC,EAAE,OAAO,EACnF,YAAY,KAAK,aAAa,EAAE,IAAI,iBAAkB,oBAAsB,IAAI,EAChF,YAAY,KAAK,6BAA8B,mBAAmB,CACtE,CAAC,EAGD,YAAY,SAAS,qBAAqB,EAAG,CAC7C,IAAI,YAAc,QAAQ,KAAK,kBAAkB,EACjD,YAAY,GAAG,OAAQ,CAACA,OAAO,QAAU,CACrC,IAAI,QAAY,MAAM,cAAgB,MAAM,WAAa,GAAM,IAAO,IACtE,YAAY,IAAI,YAAa,OAAO,CACxC,CAAC,CACL,CA2NA,GAzNA,YAAY,MAAM,CACd,YAAa,GACb,eAAgB,GAChB,SAAU,GACV,SAAU,GACV,aAAc,EACd,eAAgB,EAChB,OAAQ,aACR,KAAM,WACN,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,UACZ,WACA,CACI,CACI,WAAY,KACZ,SAAU,CACN,OAAQ,WACR,KAAM,SACN,IAAI,cAAe,CACf,OAA+B,YAAe,MAAQ,aAAe,GAC1D,KAAK,aAAe,WAEpB,KAAK,aAAe,CAEnC,EACA,IAAI,gBAAiB,CACjB,OAA+B,YAAe,MAAQ,aAAe,IAAM,aAAe,KAAO,aAAe,KAAO,aAAe,IAC3H,KAAK,eAAiB,WAEtB,KAAK,eAAiB,CAErC,EACA,IAAI,cAAe,CACf,OAAG,YAAc,KAAO,YAAc,KAAO,YAAc,IAChD,KAAK,aAAe,GAEpB,KAAK,aAAe,CAEnC,CACJ,CACJ,EACA,CACI,WAAY,KACZ,SAAU,CACN,OAAQ,WACR,KAAM,SACN,IAAI,cAAe,CACf,OAA+B,YAAe,MAAQ,aAAe,GAC9D,YAAc,GAAK,YAAc,EACzB,KAAK,aAAe,WAAa,EAEpC,YAAY,QAAQ,sBAAsB,EAAE,OACrC,KAAK,aAAe,EAEpB,KAAK,aAAe,WAK5B,KAAK,aAAe,CAEnC,EACA,IAAI,gBAAiB,CACjB,OAA+B,YAAe,MAAQ,aAAe,IAAM,aAAe,KAAO,aAAe,KAAO,aAAe,IAC/H,YAAc,GAAK,YAAc,EACzB,KAAK,eAAiB,WAAa,EAEtC,YAAY,QAAQ,sBAAsB,EAAE,OACrC,KAAK,eAAiB,EAEtB,KAAK,eAAiB,WAK9B,KAAK,eAAiB,CAErC,EACA,IAAI,cAAe,CACf,OAAG,YAAc,KAAO,YAAc,KAAO,YAAc,IAChD,KAAK,aAAe,GAEpB,KAAK,aAAe,CAEnC,CACJ,CACJ,EACA,CACI,WAAY,IACZ,SAAU,CACN,OAAQ,aACR,KAAM,WACN,IAAI,cAAc,CACd,OAAI,YAAY,SAAS,iBAAiB,GAAK,YAAY,QAAQ,4BAA4B,EAAE,OACzF,YAAY,QAAQ,4BAA4B,EAAE,QAAU,YAAY,QAAQ,4BAA4B,EAAE,KAAK,cAAc,EAAI,GAC9H,KAAK,aAAe,EAGpB,KAAK,aAAe,EAI3B,YAAY,QAAQ,sBAAsB,EAAE,OACrC,KAAK,aAAe,EAEtB,YAAc,EACZ,KAAK,aAAe,WAGpB,KAAK,aAAe,CAGvC,EACA,IAAI,gBAAgB,CAChB,OAAI,YAAY,SAAS,iBAAiB,GAAK,YAAY,QAAQ,4BAA4B,EAAE,OACzF,YAAY,QAAQ,4BAA4B,EAAE,QAAU,YAAY,QAAQ,4BAA4B,EAAE,KAAK,cAAc,EAAI,GAC9H,KAAK,eAAiB,EAGtB,KAAK,eAAiB,EAI7B,YAAY,QAAQ,sBAAsB,EAAE,OACrC,KAAK,eAAiB,EAExB,YAAc,EACZ,KAAK,eAAiB,WAGtB,KAAK,eAAiB,CAGzC,EACA,IAAI,cAAe,CACf,OAAG,YAAc,KAAO,YAAc,KAAO,YAAc,IAChD,KAAK,aAAe,GAEpB,KAAK,aAAe,CAEnC,CACJ,CACJ,EACA,CACI,WAAY,IACZ,OAAQ,aACR,KAAM,WACN,SAAU,CACN,IAAI,cAAc,CACd,OAAI,YAAY,SAAS,iBAAiB,GAAK,YAAY,QAAQ,4BAA4B,EAAE,OACtF,KAAK,aAAe,EAEtB,YAAc,EACZ,KAAK,aAAe,WAGpB,KAAK,aAAe,CAEnC,EACA,IAAI,gBAAgB,CAChB,OAAI,YAAY,SAAS,iBAAiB,GAAK,YAAY,QAAQ,4BAA4B,EAAE,OACtF,KAAK,eAAiB,EAExB,YAAc,EACZ,KAAK,eAAiB,WAGtB,KAAK,eAAiB,CAErC,EACA,IAAI,cAAe,CACf,OAAG,YAAc,KAAO,YAAc,KAAO,YAAc,IAChD,KAAK,aAAe,GAEpB,KAAK,aAAe,CAEnC,CACJ,CACJ,EACA,CACI,WAAY,IACZ,OAAQ,aACR,KAAM,WACN,SAAU,CACN,IAAI,cAAc,CACd,OAAI,YAAc,EACV,YAAY,SAAS,kCAAkC,GAAK,YAAY,SAAS,gCAAgC,EAC1G,KAAK,aAAe,EAEpB,KAAK,aAAe,WAIxB,KAAK,aAAe,CAGnC,EACA,IAAI,gBAAgB,CAChB,OAAI,YAAc,EACP,KAAK,eAAiB,WAGtB,KAAK,eAAiB,CAErC,CACJ,CACJ,CACJ,CACJ,CAAC,EAEG,YAAY,SAAS,qBAAqB,GAC1C,YAAY,GAAG,cAAe,CAACA,OAAO,MAAO,YAAc,CACvD,IAAI,QAAY,WAAa,MAAM,WAAa,GAAM,IAAO,IAC7D,YAAY,IAAI,YAAa,OAAO,CACxC,CAAC,EAED,YAAY,SAAS,uBAAuB,EAAG,CAC/C,IAAI,UAAY,YAAY,KAAK,aAAa,EAC9C,YAAY,QAAQ,uCAAuC,EAAE,KAAK,0BAA0B,EAAE,SAAS,SAAS,EAChH,YAAY,GAAG,cAAgBA,QAAU,CACrC,IAAI,WAAa,YAAY,KAAK,gBAAgB,EAAE,KAAK,aAAa,EACtE,YAAY,KAAK,cAAc,EAAE,KAAK,WAAa,CAAC,CACxD,CAAC,CACL,CACJ,CACJ,CACJ,EAEA,2BAA4B,UAAW,CACnC,IAAI,aAAe,EAAE,gDAAgD,EAErE,aAAa,KAAK,CAACF,OAAO,UAAY,CAClC,IAAI,OAAS,EAAE,OAAO,EAClB,SAAW,OAAO,KAAK,yBAAyB,EAEhD,SAAS,OAAS,GAClB,SAAS,KAAK,SAAS,EAAE,GAAG,QAAUE,QAAU,CAC5C,IAAI,eAAiB,EAAEA,OAAM,MAAM,EAEnC,GAAK,eAAe,SAAS,UAAU,EAmBnC,OAAO,SAAW,eAAe,KAAK,MAAM,MAnBN,CACtCA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAItB,eAAe,SAAS,YAAY,EAGpC,IAAI,IAAM,eAAe,KAAK,iBAAiB,EAC3C,MAAQ,eAAe,KAAK,YAAY,EACxCD,OAAQ,eAAe,KAAK,YAAY,EACxC,MAAQ,eAAe,KAAK,YAAY,EACxC,YAAc,eAAe,KAAK,kBAAkB,EACpD,UAAY,eAAe,KAAK,WAAW,EAC3C,KAAO,SAAS,eAAe,KAAK,WAAW,CAAC,EAEpD,KAAK,6BAA6B,IAAK,MAAO,MAAOA,OAAO,YAAa,UAAW,KAAM,eAAgB,MAAM,CACpH,CAGJ,CAAC,CAET,CAAC,CACL,EAEA,6BAA8B,SAAS,IAAK,MAAO,MAAOA,OAAO,YAAa,UAAW,KAAM,eAAgB,OAAO,CAClH,EAAE,KAAK,CACH,KAAM,MACN,IAAK,OAAO,OAAO,KAAO,gBAAkB,IAC5C,MAAO,GACP,KAAM,CACF,KAAM,qBACN,WAAY,SAAW,MAAQ,SAAW,KAAO,cAAgB,UAAY,eAAiB,YAAc,UAAYA,MAC5H,EACA,WAAY,UAAY,CAExB,EACA,QAAS,SAAU,KAAM,CACrB,MAAM,aAAe,eAAe,QAAQ,cAAc,EAAE,OAAS,eAAe,QAAQ,cAAc,EAAE,KAAK,gBAAgB,EAAI,eAAe,QAAQ,qBAAqB,EAAE,KAAK,gBAAgB,EACxM,IAAI,OAAS,aAAa,KAAK,UAAU,EAAE,OAC3C,MAAM,IAAM,KAAK,eAAe,EAAE,IAAI,EAAG,OAAQ,aAAa,KAAK,kBAAkB,CAAC,EAGtF,GAFA,aAAa,OAAO,GAAG,EAEpB,OAAS,IAAI,OAAS,EAAE,IAAI,EAAE,OAAQ,CACrC,IAAI,KAAO,OAAO,iBAAiB,QAEnC,eAAe,YAAY,YAAY,EACvC,eAAe,KAAK,YAAa,KAAO,CAAC,EACzC,eAAe,KAAK,MAAM,EAAE,KAAK,IAAI,CACzC,SACQ,OAAO,KAAK,EAAI,EAAE,IAAI,EAAE,QAAU,EAAE,IAAI,EAAE,QAAU,OAAS,IAAI,OAAQ,CACzE,IAAI,KAAO,OAAO,iBAAiB,SAEnC,eAAe,KAAK,MAAM,EAAE,KAAK,IAAI,EACrC,eAAe,YAAY,YAAY,EACvC,eAAe,KAAK,YAAa,OAAO,OAAO,KAAO,gBAAkB,GAAG,EAAE,SAAS,UAAU,CACpG,KAAO,CACH,IAAI,KAAO,OAAO,iBAAiB,QAEnC,eAAe,KAAK,MAAM,EAAE,KAAK,IAAI,EACrC,eAAe,YAAY,YAAY,EACvC,eAAe,KAAK,WAAY,UAAU,CAC9C,CAER,EACA,SAAU,UAAY,CAMlB,GAJI,KAAK,2BAA2B,GAChC,SAAS,WAAW,OAAO,cAAe,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAG,aAAc,cAAc,EAGtH,OAAO,OAAO,MAAQ,EAAE,gCAAgC,EAAE,OAAS,GAAK,OAAO,KAAO,MAAQ,OAAO,OAAO,IAAI,mBAAsB,YACtI,OAAO,OAAO,IAAI,kBAAkB,EAAG,OAAO,IAAI,kBAAkB,EAAG,OAAO,IAAI,WAAW,EAAG,OAAO,IAAI,aAAa,EAAG,OAAO,IAAI,WAAW,CAEzJ,CACJ,CAAC,CACL,EAEA,kBAAmB,UAAU,CACzB,IAAI,YAAc,EAAE,mBAAmB,EACpC,YAAY,OAAS,GACpB,YAAY,KAAK,CAACD,OAAO,KAAO,CAC5B,IAAI,MAAQ,EAAE,EAAE,EAAE,KAAK,oBAAoB,EACvC,UAAY,MAAM,KAAK,KAAK,EAC7B,MAAM,IAAI,oBAAoB,GAC7B,MAAM,MAAM,CACR,YAAa,GACb,eAAgB,GAChB,SAAU,GACV,SAAU,GACV,aAAc,EACd,eAAgB,EAChB,OAAQ,GACR,KAAM,GACN,IAAK,OAAO,UACZ,WACA,CACI,CACI,WAAY,KACZ,SAAU,CACN,aAAc,EACd,eAAgB,CACpB,CACJ,EACA,CACI,WAAY,KACZ,SAAU,CACN,aAAc,UACd,eAAgB,EAChB,KAAM,EACV,CACJ,CACJ,CACJ,CAAC,CAET,CAAC,CAET,EAEA,yBAA0B,UAAU,CAChC,GAAI,SAAS,cAAc,8BAA8B,GAAK,KAAM,OAEpE,IAAI,MAAQ,SAAS,cAAc,8BAA8B,EAC7D,OAAS,MAAM,QAAQ,OACvB,MAAQ,MAAM,QAAQ,MAE1B,MAAM,OAAS,CACX,UAAW,GACf,EAEM,mBAAqB,CAAC,QAAS,WAAa,CAC9C,MAAM,yBAA2B,MAAM,cAAc,oBAAoB,EACpE,QAAQ,CAAC,EAAE,iBACZ,MAAM,UAAU,KAAK,GAAK,IAAM,CAAC,yBAAyB,UAAU,SAAS,iCAAiC,GAAK,CAAC,yBAAyB,UAAU,SAAS,aAAa,IACjL,yBAAyB,UAAU,IAAI,aAAa,EAEpD,MAAM,MAAM,QAAQ,GAAG,EACtB,KAAK,UAAY,SAAS,KAAK,CAAC,EAChC,KAAK,MAAQ,CACV,MAAM,KAAO,SAAS,cAAc,KAAK,EACzC,KAAK,UAAY,KACjB,MAAM,gBAAkB,KAAK,cAAc,8BAA8B,EACzE,GAAI,iBAAmB,gBAAgB,UAAU,KAAK,EAAE,OAAQ,CAC5D,MAAM,UAAY,gBAAgB,UAElC,IAAI,aAAe,EAAE,KAAK,EAAE,KAAK,eAAe,EAC5C,iBAAmB,aAAa,GAAG,CAAC,EAAE,KAAK,cAAc,EAC7D,GAAI,CAAC,iBAAkB,OAAO,EAAE,KAAK,EAAE,OAAO,EAE9C,GAAI,QAAU,SACV,KAAK,mBAAmB,EAAE,KAAK,CAAC,UACzB,QAAU,SAAU,CAC3B,MAAM,YAAc,EAAE,KAAK,EAAE,KAAK,qBAAqB,EAAE,KAAK,mBAAmB,EAC3E,QAAU,MAAM,QAAQ,gBAAgB,EAE1C,cAAgB,QAAU,QAAQ,YAAc,QAAQ,aACxD,KAAK,qBAAqB,EAAE,KAAK,CAAC,CAE1C,CAEA,IAAI,aAAe,EAAE,KAAK,EAAE,KAAK,eAAe,EAChD,aAAa,KAAK,MAAOA,OAAO,aAAe,CAC3C,IAAI,QAAU,EAAE,UAAU,EACtB,UAAY,QAAQ,KAAK,YAAY,EACrC,YAAc,QAAQ,KAAK,cAAc,EACzC,OAAS,YAAY,OAEzB,MAAO,EAAE,KAAK,CACV,KAAM,MACN,IAAK,OAAO,OAAO,KAAO,aAAe,OAAS,8BAClD,WAAY,UAAY,CAAC,EACzB,QAAS,SAAU,KAAM,CACrB,MAAM,QAAU,IAAI,UAAU,EAAE,gBAAgB,KAAM,WAAW,EACjE,GAAI,QAAQ,cAAc,8BAA8B,SAAS,IAAI,EAAG,CACpE,MAAM,aAAe,KAAK,MAAM,QAAQ,cAAc,8BAA8B,SAAS,IAAI,EAAE,SAAS,EAC5G,OAAO,0BAA0B,SAAS,EAAE,EAAI,YACpD,CACJ,EACA,MAAO,SAAU,IAAKK,MAAM,CACxB,KAAK,YAAY,EAAE,UAAU,IAAI,YAAY,EAAE,WAAW,CAC9D,EACA,SAAU,UAAY,CAAC,CAC3B,CAAC,CACL,CAAC,EAED,MAAM,cAAgB,MAAM,iBAAiB,4BAA4B,EAGzE,GAFA,KAAK,uBAAuB,aAAa,EAEtC,OAAO,QAAQ,KAAK,CACnB,IAAI,aAAe,EAAE,qBAAqB,EAE1C,KAAK,iCAAiC,YAAY,CACtD,CAMA,GAJG,OAAO,SAAS,MACf,KAAK,kCAAkC,EAGvC,OAAO,OAAO,MAAQ,EAAE,gCAAgC,EAAE,OAAS,GAAK,OAAO,KAAO,MAAQ,OAAO,OAAO,IAAI,mBAAsB,YACtI,OAAO,OAAO,IAAI,kBAAkB,EAAG,OAAO,IAAI,kBAAkB,EAAG,OAAO,IAAI,WAAW,EAAG,OAAO,IAAI,aAAa,EAAG,OAAO,IAAI,WAAW,EAGrJ,KAAK,0BAA0B,CACnC,CACJ,CAAC,EACA,MAAM,GAAK,CACR,QAAQ,MAAM,CAAC,CACnB,CAAC,GACL,EAEA,IAAI,qBAAqB,mBAAmB,KAAK,KAAK,EAAQ,MAAO,EAAE,QAAQ,KAAK,CACxF,EAEA,eAAgB,UAAW,CACnB,EAAE,mBAAmB,EAAE,SAE3B,EAAE,iCAAiC,EAAE,IAAI,OAAO,EAAE,GAAG,QAAQ,UAAU,CACnE,IAAI,WAAa,EAAE,IAAI,EAAE,KAAK,WAAW,EACrC,UAAY,EAAE,IAAI,EAAE,KAAK,UAAU,EACnC,aAAe,EAAE,IAAI,EAAE,KAAK,cAAc,EAC1C,MAAQ,EAAE,oBAAoB,EAElC,MAAM,SAAW,8DAA8D,YAAY;AAAA,sCACrE,YAAc,UACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iFAQyC,SAAS;AAAA,mDAGlD;AAAA,kFAC0C,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kDAQvD;AAAA,wCAEpB,MAAM,KAAK,qBAAqB,EAAE,KAAK,QAAQ,EAC/C,MAAM,SAAS,YAAY,CAC/B,CAAC,EAED,EAAE,+EAA+E,EAAE,GAAG,QAAS,SAAU,EAAG,CAGxG,IAAI,aAAe,EAAE,wCAAwC,EACzD,CAAC,aAAa,GAAG,EAAE,MAAM,GAAK,CAAC,aAAa,IAAI,EAAE,MAAM,EAAE,SAC1D,MAAM,YAAY,YAAY,EAC9B,EAAE,2BAA2B,EAAE,OAAO,EAE9C,CAAC,EACL,EAEA,0BAA2B,UAAY,CAC/B,OAAO,WAAa,OACpB,EAAE,qBAAqB,EAAE,WAAW,UAAU,CAC1C,IAAI,KAAO,EAAE,IAAI,EAAE,KAAK,OAAO,EAC3B,MAAQ,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,IAAI,CAAC,EACnC,KAAK,OAAS,GACd,MAAM,KAAK,CAEnB,CAAC,EACD,EAAE,qBAAqB,EAAE,WAAW,UAAU,CAC1C,IAAI,KAAO,EAAE,IAAI,EAAE,KAAK,OAAO,EAC3B,MAAQ,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,IAAI,CAAC,EACnC,KAAK,OAAS,GACd,MAAM,MAAM,CAEpB,CAAC,EAET,EAEA,mBAAoB,UAAW,CAC3B,KAAK,GAAG,SAAU,0BAA4BH,QAAU,CACpD,IAAI,SAAWA,OAAM,OAAO,aAAa,aAAa,EAEnDA,OAAM,OAAO,QACZ,EAAE,QAAQ,EAAE,KAAK,WAAY,EAAK,EAElC,EAAE,QAAQ,EAAE,KAAK,WAAY,EAAI,CAEzC,CAAC,EAED,KAAK,GAAG,QAAS,wBAA0BA,QAAU,CACjDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EACtB,MAAM,SAAS,qBAAqB,CACxC,CAAC,EACA,KAAK,GAAG,QAAS,oCAAsCA,QAAU,CAC9DA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EACtB,MAAM,YAAY,qBAAqB,CAC3C,CAAC,EACD,KAAK,GAAG,QAAS,iCAAmCA,QAAU,CAC1DA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EACtB,MAAM,SAAS,8BAA8B,CACjD,CAAC,EACE,KAAK,GAAG,QAAS,6CAA+CA,QAAU,CACzEA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EACtB,MAAM,YAAY,8BAA8B,CACpD,CAAC,EACD,KAAK,GAAG,QAAUA,QAAU,CACxB,WAAW,IAAM,CACT,MAAM,SAAS,mBAAmB,GAC7B,EAAEA,OAAM,MAAM,EAAE,QAAQ,6BAA6B,EAAE,SAAW,GACnE,MAAM,YAAY,qBAAqB,EAG3C,MAAM,SAAS,qBAAqB,GAChC,EAAEA,OAAM,MAAM,EAAE,QAAQ,6BAA6B,EAAE,SAAW,GAClE,MAAM,YAAY,qBAAqB,CAInD,EAAG,EAAE,CACT,CAAC,EACD,KAAK,GAAG,QAAUA,QAAU,CACxB,WAAW,IAAM,CACT,MAAM,SAAS,mBAAmB,GAC7B,EAAEA,OAAM,MAAM,EAAE,QAAQ,sCAAsC,EAAE,SAAW,GAC5E,MAAM,YAAY,8BAA8B,EAGpD,MAAM,SAAS,8BAA8B,GACzC,EAAEA,OAAM,MAAM,EAAE,QAAQ,sCAAsC,EAAE,SAAW,GAC3E,MAAM,YAAY,8BAA8B,CAG5D,EAAG,EAAE,CACT,CAAC,CACL,EAEA,gBAAiB,UAAW,CACxB,KAAK,MAAM,UAAW,CAClB,EAAE,+BAA+B,EAAE,QAAQ,OAAO,CACtD,CAAC,EAED,KAAK,GAAG,QAAS,sBAAwBA,QAAU,CAC/C,IAAI,QAAU,EAAEA,OAAM,aAAa,EAC/B,MAAQ,QAAQ,KAAK,OAAO,EAAE,QAAQ,aAAc,EAAE,EACtD,QAAU,QAAQ,QAAQ,eAAe,EACzC,YAAc,QAAQ,KAAK,cAAc,EACzC,aAAe,QAAQ,KAAK,aAAa,EACzC,cAAgB,QAAQ,KAAK,sBAAsB,EACnD,UAAY,QAAQ,KAAK,YAAY,EACrC,YAAc,QAAQ,KAAK,GAAG,EAAE,KAAK,MAAM,EAC3C,UAAY,QAAQ,KAAK,iBAAiB,EAC1C,SAAW,QAAQ,KAAK,aAAa,EACrC,UAAY,CAAC,EAEjB,QAAQ,QAAQ,SAAS,EAAE,KAAK,eAAe,EAAE,YAAY,WAAW,EACxE,QAAQ,SAAS,WAAW,EAEzB,aAAa,SAAS,mBAAmB,EACrC,MAAM,SAAS,6BAA6B,EAC3C,aAAa,KAAK,qBAAqB,EAAE,KAAK,KAAK,EAEnD,aAAa,KAAK,qBAAqB,EAAE,KAAK,MAAQ,KAAK,EAG5D,MAAM,SAAS,6BAA6B,EAC3C,aAAa,SAAS,mBAAmB,EAAE,OAAO,2BAA6B,MAAQ,SAAS,EAEhG,aAAa,SAAS,mBAAmB,EAAE,OAAO,8BAAgC,MAAQ,SAAS,EAI3G,MAAM,gBAAkB,YAAY,SAAS,KAAK,SAAW,QAAQ,KAAO,SAAS,EAErF,GAAI,gBAAgB,iBAAmB,gBAAgB,MAAO,CAC1D,QAAQ,KAAK,QAAQ,EAAE,SAAS,gBAAgB,EAChD,QAAQ,KAAK,mCAAmC,EAAE,KAAK,QAAQ,YAAY,gBAAgB,iBAAkB,OAAO,YAAY,CAAC,EACjI,QAAQ,KAAK,gCAAgC,EAAE,KAAK,QAAQ,YAAY,gBAAgB,MAAO,OAAO,YAAY,CAAC,EACnH,MAAM,UAAY,IAAI,KAAK,OAAO,gBAAgB,iBAAmB,gBAAgB,OAAS,IAAM,gBAAgB,gBAAgB,CAAC,IACrI,QAAQ,KAAK,gCAAgC,EAAE,KAAK,SAAS,CACjE,MACI,QAAQ,KAAK,6BAA6B,EAAE,KAAK,QAAQ,YAAY,gBAAgB,MAAO,OAAO,YAAY,CAAC,EAE5G,gBAAgB,kBAAoB,OACpC,QAAQ,KAAK,QAAQ,EAAE,YAAY,gBAAgB,EACnD,QAAQ,KAAK,mCAAmC,EAAE,KAAK,EAAE,GAMjE,GAFA,QAAQ,KAAK,6CAA6C,EAAE,KAAK,OAAQ,YAAY,MAAM,WAAW,EAAE,CAAC,EAAE,YAAa,SAAS,EAE7H,WAAa,KAAW,CACxB,IAAI,SAAW,QAAQ,KAAK,UAAU,EAEtC,QAAQ,KAAK,aAAa,EAAE,IAAI,SAAS,EAErC,SAAW,EACR,OAAO,UAAU,KAChB,cACK,YAAY,cAAc,EAC1B,SAAS,YAAY,EAE1B,cACK,YAAY,YAAY,EACxB,SAAS,YAAY,EAG5B,OAAO,UAAU,KACf,cACK,YAAY,YAAY,EACxB,SAAS,cAAc,EAE5B,cACK,YAAY,YAAY,EACxB,SAAS,YAAY,EAI/B,cAAc,SAAS,YAAY,GAAK,cAAc,SAAS,cAAc,EACzE,cAAc,SAAS,cAAc,EACpC,cAAc,KAAK,OAAO,UAAU,MAAM,EAE1C,cACK,KAAK,OAAO,eAAe,OAAO,EAClC,KAAK,WAAY,EAAI,EAG9B,cACK,KAAK,OAAO,eAAe,SAAS,EACpC,KAAK,WAAY,EAAK,CAEnC,MACQ,aAAe,MACZ,OAAO,WAAW,MACjB,KAAK,2BAA2B,QAAS,WAAW,EAI5D,QAAQ,KAAK,+BAAiC,MAAQ,IAAI,EAAE,KAAK,eAAe,EAAE,QAAQ,OAAO,EAGrG,GAAI,YAAY,OAAS,KACrB,IAAI,UAAY,YAAY,MAAM,OAAO,CAACF,OAAO,UACtC,QAAQ,MAAQ,KAC1B,EAGL,GAAI,UAAU,OAAS,EAAG,CACtB,GAAI,UAAU,OAAS,EACnB,IAAI,OAAS,MAEb,KAAI,OAAS,UAAU,OAG3B,QAAS,EAAI,EAAG,EAAI,OAAQ,IACxB,QAAQ,KAAK,sBAAuB,EAAG,GAAG,EAAE,KAAK,SAAU,UAAU,CAAC,EAAE,GAAG,CAEnF,MACQ,UACA,QAAQ,KAAK,8BAA8B,EAAE,KAAK,SAAU,QAAQ,EAKxE,KAAK,2BAA2B,GAChC,SAAS,WAAW,OAAO,cAAe,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAG,aAAc,cAAc,CAE9H,CAAC,EAED,KAAK,GAAG,QAAS,qCAAuCE,QAAU,CAC1D,EAAEA,OAAM,MAAM,EAAE,QAAQ,SAAS,EAAE,SAAS,YAAY,GACxD,EAAEA,OAAM,MAAM,EAAE,QAAQ,SAAS,EAAE,YAAY,YAAY,EAC3D,EAAEA,OAAM,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,GAAG,IAE3C,EAAEA,OAAM,MAAM,EAAE,QAAQ,SAAS,EAAE,SAAS,YAAY,EACxD,EAAEA,OAAM,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,GAAG,EAEnD,CAAC,CACL,EAEA,uBAAwB,SAAS,gBAAiB,cAAe,YAAa,CAE1E,MAAM,UAAY,gBAAgB,GAC5B,mBAAqB,CAACI,eAAeC,iBAAiBC,qBAAsB,CAE9E,MAAM,kBADUF,eAAc,QAAQ,eAAe,EACnB,KAAK,wBAAwB,EAAE,OAAS,EAEtEC,iBAAgB,sBAAwB,KACxCD,eACK,KAAK,kBAAoB,OAAO,eAAe,IAAM,OAAO,eAAe,SAAS,EACpF,KAAK,WAAY,EAAK,EACtB,SAAS,qBAAqB,EAE9BC,iBAAgB,WAAaC,oBAAoB,EACtDF,eACK,KAAK,OAAO,eAAe,QAAQ,EACnC,KAAK,WAAY,EAAK,EACtB,SAAS,qBAAqB,GAEnCA,eAAc,YAAY,qBAAqB,EAC3CE,mBAAoB,EACjB,OAAO,UAAU,KAChBF,eACK,YAAY,cAAc,EAC1B,SAAS,YAAY,EAE1BA,eACK,YAAY,YAAY,EACxB,SAAS,YAAY,EAI5B,OAAO,UAAU,KACfA,eACK,YAAY,YAAY,EACxB,SAAS,cAAc,EACvB,KAAK,WAAY,EAAK,EAE3BA,eACK,YAAY,YAAY,EACxB,SAAS,YAAY,EAAE,KAAK,WAAY,EAAI,EAItDA,eAAc,SAAS,YAAY,GAAKA,eAAc,SAAS,cAAc,EACzEA,eAAc,SAAS,cAAc,EAEpCA,eAAc,KAAK,OAAO,UAAU,MAAM,EAAE,KAAK,WAAY,EAAK,EAAE,YAAY,iBAAiB,EAEjGA,eACK,KAAK,OAAO,eAAe,OAAO,EAClC,KAAK,WAAY,EAAI,EAG9BA,eACK,KAAK,kBAAoB,OAAO,eAAe,IAAM,OAAO,eAAe,SAAS,EACpF,KAAK,WAAY,EAAK,EAGvC,EAEM,0BAA4B,0BAA0B,YAAY,EAAE,GAC1E,IAAI,eAAiB,0BACjB,YAAc,OAAO,cAAc,EAEvC,GAAG,aAAe,KAAW,CACzB,IAAI,UAAY,YAAY,SAAS,EACjC,kBAAoB,SAAS,SAAS,EACtC,mBAAmB,cAAe,gBAAiB,iBAAiB,CAC5E,MACI,EAAE,KAAK,CACH,KAAM,MACN,IAAK,OAAO,OAAO,KAAO,aAAe,YAAY,OAAS,6BAC9D,WAAY,UAAY,CAAC,EACzB,QAAS,SAAU,KAAM,CACrB,OAAO,yBAAyB,EAAI,KAAK,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC,EACjE,IAAIG,WAAY,OAAO,yBAAyB,EAAE,SAAS,EACvDD,mBAAoB,SAASC,UAAS,EAC1C,mBAAmB,cAAe,gBAAiBD,kBAAiB,CACxE,EACA,MAAO,SAAU,IAAK,KAAM,CACxB,KAAK,YAAY,EAAE,UAAU,IAAI,YAAY,EAAE,WAAW,CAC9D,EACA,SAAU,UAAY,CAEtB,CACJ,CAAC,CAET,EAEA,cAAe,UAAW,CACnB,OAAO,WAAW,OACjB,KAAK,GAAG,QAAS,yBAA2BN,QAAU,CAClDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,QAAU,EAAEA,OAAM,MAAM,EACxB,QAAU,QAAQ,QAAQ,eAAe,EACzC,YAAc,QAAQ,KAAK,cAAc,EACzC,aAAe,QAAQ,KAAK,iBAAiB,EAEjD,MAAM,WAAa,SAAS,cAAc,wBAAwB,EAMlE,GALI,CAAC,SAAS,KAAK,QAAQ,aAAc,aAAa,GAAK,aACvD,KAAK,gBAAgB,WAAW,QAAQ,gBAAiB,UAAU,EACnE,SAAS,KAAK,UAAU,IAAI,YAAY,GAGxC,QAAQ,SAAS,sBAAsB,EA6GvC,KAAK,uBAAuB,QAAS,YAAY,MA7GR,CAGzC,GAFA,EAAE,eAAe,EAAE,YAAY,sBAAsB,EAEjD,MAAM,SAAS,qBAAqB,EAAG,CACvC,IAAI,OAAS,QAAQ,KAAK,aAAa,EAAE,YAAY,EAAI,EACrD,cAAgB,aAAa,KAAK,WAAW,EAE7C,MAAM,SAAS,wBAAwB,EACnC,KAAK,MAAM,EAAI,MACf,cAAc,IAAI,aAAe,OAAS,IAAO,IAAI,EACrD,cAAc,IAAI,aAAe,OAAS,IAAO,IAAI,IAErD,cAAc,IAAI,aAAe,OAAS,GAAM,IAAI,EACpD,cAAc,IAAI,aAAe,OAAS,GAAM,IAAI,GAEjD,MAAM,SAAS,wBAAwB,EAC1C,KAAK,MAAM,EAAI,MACf,cAAc,IAAI,aAAe,OAAS,IAAO,IAAI,EACrD,cAAc,IAAI,aAAe,OAAS,IAAO,IAAI,IAErD,cAAc,IAAI,aAAe,OAAS,GAAM,IAAI,EACpD,cAAc,IAAI,aAAe,OAAS,GAAM,IAAI,GAGpD,KAAK,MAAM,EAAI,MACf,cAAc,IAAI,aAAe,OAAS,GAAM,IAAI,EACpD,cAAc,IAAI,aAAe,OAAS,GAAM,IAAI,IAEpD,cAAc,IAAI,aAAe,OAAS,GAAM,IAAI,EACpD,cAAc,IAAI,aAAe,OAAS,GAAM,IAAI,GAIxD,cAAc,CAAC,EAAE,aAAe,cAAc,CAAC,EAAE,cACjD,cAAc,SAAS,YAAY,EAGlC,EAAE,iBAAiB,EAAE,SAAS,aAAa,GAC5C,KAAK,8BAA8B,OAAO,CAElD,SAAW,MAAM,SAAS,qBAAqB,EAAG,CAC9C,MAAM,OAAS,QAAQ,KAAK,gBAAgB,EACvC,EAAE,iBAAiB,EAAE,SAAS,aAAa,GAC5C,KAAK,8BAA8B,MAAM,EAG7C,KAAK,GAAG,QAAS,gCAAkCA,QAAU,CACzDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,MAAM,YAAY,sBAAsB,CAC5C,CAAC,EAED,KAAK,IAAI,wBAAwB,EAAE,GAAG,yBAA2BA,QAAU,CACnE,MAAM,SAAS,sBAAsB,GAAK,EAAEA,OAAM,MAAM,EAAE,GAAG,qBAAqB,GAClF,MAAM,YAAY,sBAAsB,CAEhD,CAAC,CACL,CAyBA,GAvBK,MAAM,SAAS,qBAAqB,EAWjC,EAAE,iBAAiB,EAAE,SAAS,aAAa,IACvC,KAAK,MAAM,EAAI,IACf,KAAK,sBAAsB,OAAO,EAElC,QAAQ,SAAS,sBAAsB,GAd3C,KAAK,MAAM,EAAI,KACX,EAAE,iBAAiB,EAAE,SAAS,aAAa,EAC3C,KAAK,sBAAsB,OAAO,EAKtC,QAAQ,SAAS,sBAAsB,EAY/C,QAAQ,KAAK,yBAAyB,EAAE,QAAQ,OAAO,EACvD,KAAK,2BAA2B,QAAS,WAAW,EAEjD,MAAM,SAAS,qBAAqB,GAAM,EAAE,gBAAgB,EAAE,SAAS,aAAa,GAAK,CAAC,EAAE,cAAc,EAAE,SAAS,mBAAmB,EAAG,CAC1I,GAAI,KAAK,MAAM,EAAI,IACf,GAAK,EAAE,iBAAiB,EAAE,SAAS,aAAa,EAM5C,aAAa,KAAK,mBAAmB,EAAE,KAAK,CAACF,OAAO,UAAY,CAC5D,EAAE,OAAO,EAAE,KAAK,iDAAiD,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,QAAQ,OAAO,CACpH,CAAC,MAR6C,CAC9C,IAAI,sBAAwB,EAAE,yCAAyC,EACvE,sBAAsB,KAAK,mBAAmB,EAAE,KAAK,CAACA,OAAO,UAAY,CACrE,EAAE,OAAO,EAAE,KAAK,iDAAiD,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,QAAQ,OAAO,CACpH,CAAC,CACL,MAMA,aAAa,KAAK,mBAAmB,EAAE,KAAK,CAACA,OAAO,UAAY,CAC5D,EAAE,OAAO,EAAE,KAAK,iDAAiD,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,QAAQ,OAAO,CACpH,CAAC,EAEA,EAAE,iBAAiB,EAAE,SAAS,aAAa,GAC5C,MAAM,SAAS,yBAAyB,CAEhD,MACI,aAAa,KAAK,sCAAsC,EAAE,KAAK,CAACA,OAAO,UAAY,CAC/E,EAAE,OAAO,EAAE,KAAK,iDAAiD,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,QAAQ,OAAO,CACpH,CAAC,CAET,CAII,KAAK,2BAA2B,GAChC,SAAS,WAAW,OAAO,cAAe,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAG,aAAc,cAAc,CAE9H,CAAC,EAED,KAAK,GAAG,QAAS,gCAAkCE,QAAU,CACzDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,QAAU,EAAEA,OAAM,aAAa,EAC/B,QAAU,QAAQ,QAAQ,eAAe,EACzC,qBAAuB,KAAK,KAAK,yBAAyB,EAE9D,QAAQ,YAAY,sBAAsB,EAC1C,IAAI,sBAAwB,KAAK,KAAK,uBAAuB,EAC7D,sBAAsB,YAAY,sBAAsB,EACxD,MAAM,YAAY,0BAA0B,EAEzC,MAAM,SAAS,qBAAqB,IACnC,MAAM,YAAY,yBAAyB,EAC3C,qBAAqB,YAAY,MAAM,EAE/C,CAAC,EAED,KAAK,GAAG,QAAUA,QAAU,CACpB,EAAEA,OAAM,MAAM,EAAE,QAAQ,wBAAwB,EAAE,SAAW,GAAK,EAAEA,OAAM,MAAM,EAAE,QAAQ,iBAAiB,EAAE,SAAW,GAAK,EAAEA,OAAM,MAAM,EAAE,QAAQ,cAAc,EAAE,SAAW,GAAK,EAAEA,OAAM,MAAM,EAAE,QAAQ,sBAAsB,EAAE,SAAW,IAChP,EAAE,eAAe,EAAE,YAAY,sBAAsB,EAClD,MAAM,SAAS,qBAAqB,GACnC,MAAM,YAAY,yBAAyB,EAGvD,CAAC,EAED,KAAK,sBAAsB,EAEnC,EAEA,sBAAuB,SAAS,QAAU,CACtC,MAAM,qBAAuB,KAAK,KAAK,kBAAkB,EACnD,cAAgB,QAAQ,MAAM,EACpC,qBAAqB,KAAK,qBAAqB,EAAE,MAAM,EACvD,qBAAqB,KAAK,qBAAqB,EAAE,OAAO,aAAa,EAErE,MAAM,KAAO,qBAAqB,KAAK,yDAAyD,EAAE,GAAG,GAAG,EAClG,cAAgB,KAAK,KAAK,IAAI,EAAI,UAClC,aAAe,KAAK,KAAK,gBAAgB,EACzC,aAAe,KAAK,KAAK,eAAe,EACxC,gBAAkB,qBAAqB,KAAK,eAAe,EAC3D,cAAgB,qBAAqB,KAAK,iBAAiB,EAC3D,UAAY,qBAAqB,KAAK,sBAAsB,EAClE,cAAc,YAAY,mBAAmB,EAC7C,IAAI,QAAU,CACV,UAAW,GACX,UAAW,GACX,UAAW,EACf,EAEA,KAAK,KAAK,KAAM,aAAa,EAC7B,UAAU,KAAK,eAAgB,UAAU,KAAK,cAAc,EAAI,SAAS,EAEzE,aAAa,KAAK,CAACF,OAAO,cAAgB,CACtC,EAAE,WAAW,EAAE,KAAK,KAAM,EAAE,WAAW,EAAE,KAAK,IAAI,EAAI,SAAS,EAC/D,EAAE,WAAW,EAAE,KAAK,OAAQ,EAAE,WAAW,EAAE,KAAK,MAAM,EAAI,SAAS,CACvE,CAAC,EAED,aAAa,KAAK,CAACA,OAAO,cAAgB,CACtC,EAAE,WAAW,EAAE,KAAK,MAAO,EAAE,WAAW,EAAE,KAAK,KAAK,EAAI,SAAS,EAEjE,MAAM,cAAgB,EAAE,WAAW,EAAE,QAAQ,mBAAmB,EAC1C,EAAE,WAAW,EAAE,QAAQ,iBAAiB,EAC3C,SAAS,WAAW,IAEnC,cAAc,SAAS,oBAAoB,GAAK,CAAC,QAAQ,WACzD,QAAQ,UAAY,GACpB,EAAE,WAAW,EAAE,QAAQ,OAAO,GACvB,cAAc,SAAS,oBAAoB,GAAK,CAAC,QAAQ,WAChE,QAAQ,UAAY,GACpB,EAAE,WAAW,EAAE,QAAQ,OAAO,GACvB,cAAc,SAAS,oBAAoB,GAAK,CAAC,QAAQ,YAChE,QAAQ,UAAY,GACpB,EAAE,WAAW,EAAE,QAAQ,OAAO,GAEtC,CAAC,EAED,MAAM,SAAS,0BAA0B,EAEzC,EAAE,qBAAqB,EAAE,IAAI,0BAA0B,EAAE,GAAG,2BAA4B,IAAM,CAC1F,MAAM,YAAY,0BAA0B,CAChD,CAAC,CACL,EAEA,sBAAuB,UAAY,CAC/B,KAAK,GAAG,SAAU,kCAAoCE,QAAU,CAE5D,IAAI,QAAU,EAAEA,OAAM,MAAM,EACxB,QAAU,QAAQ,QAAQ,eAAe,EACzC,YAAc,QAAQ,KAAK,cAAc,EACzC,cAAgB,QAAQ,KAAK,sBAAsB,EACnD,YACA,YAAc,QAAQ,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAClE,YAAc,QAAQ,QAAQ,qBAAqB,EAAE,KAAK,cAAc,EACxE,OAAS,QAAQ,KAAK,iBAAiB,EACvC,QAAU,QAAQ,IAAI,EACtB,gBACA,aAAe,QAAQ,KAAK,WAAW,EACvC,gBAAkB,QAAQ,KAAK,qBAAqB,EAAE,KAAK,eAAe,EAAE,IAAI,EAChF,gBAAkB,QAAQ,KAAK,qBAAqB,EAAE,KAAK,eAAe,EAAE,IAAI,EAChF,gBAAkB,QAAQ,KAAK,qBAAqB,EAAE,KAAK,eAAe,EAAE,IAAI,EAoBpF,OAlBI,MAAM,SAAS,qBAAqB,GAAK,EAAE,iBAAiB,EAAE,SAAS,aAAa,EACpF,gBAAkB,QAAQ,KAAK,qBAAqB,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,IAAI,EAEpF,EAAE,iBAAiB,EAAE,SAAS,aAAa,GAAK,KAAK,MAAM,EAAI,KAC/D,gBAAkB,QAAQ,KAAK,qBAAqB,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,IAAI,EACxF,gBAAkB,QAAQ,KAAK,yBAAyB,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,IAAI,GAE5F,gBAAkB,QAAQ,KAAK,qBAAqB,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,IAAI,EAI5F,aAAe,OACf,YAAc,YAAY,UAG9B,OAAO,YAAY,SAAS,EAC5B,OAAO,KAAK,qBAAqB,EAAE,KAAK,WAAY,EAAK,EAEjD,YAAa,CACjB,IAAK,GACD,IAAI,kBAAoB,YAAY,KAAM,SAClC,aAAe,EACR,QAAQ,SAAW,SAAW,QAAQ,SAAW,gBAEpD,aAAe,EACR,QAAQ,SAAW,SAAW,QAAQ,SAAW,gBAEjD,QAAQ,SAAW,SAAW,QAAQ,SAAW,eAGnE,EAED,GAAG,mBAAqB,KACpB,gBAAmB,sBACjB,CACF,IAAI,qBAAuB,YAAY,KAAM,SACrC,aAAe,EACR,QAAQ,SAAW,QAEtB,aAAe,EACR,QAAQ,SAAW,QAEnB,QAAQ,SAAW,OAGrC,EAED,gBAAmB,oBACvB,CAEA,MACJ,IAAK,GACD,IAAI,kBAAoB,YAAY,KAAM,SAClC,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,SAAW,QAAQ,SAAW,gBAE1F,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,SAAW,QAAQ,SAAW,gBAEvF,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,SAAW,QAAQ,SAAW,eAGzG,EAED,GAAG,mBAAqB,KACpB,gBAAmB,sBAChB,CACH,IAAI,qBAAuB,YAAY,KAAM,SACrC,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,QAE5D,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,QAEzD,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,OAG3E,EAED,gBAAmB,oBACvB,CAEA,MACJ,IAAK,GACD,IAAI,kBAAoB,YAAY,KAAM,SAClC,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,QAElG,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,QAE/F,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,OAGjH,EAEE,mBAAqB,OACpB,gBAAmB,mBAGvB,KACR,CAEA,GAAI,iBAAmB,KAIvB,cAAa,IAAI,gBAAgB,EAAE,EACnC,IAAI,MAAQ,QAAQ,IAAI,EAIxB,QAAQ,QAAQ,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,KAAK,EACpE,gBAAgB,WAChB,QAAQ,KAAK,sBAAsB,EAAE,YAAY,iBAAiB,EAClE,QAAQ,KAAK,4CAA4C,EAAE,YAAY,UAAU,EACjF,QAAQ,KAAK,sBAAsB,EAAE,KAAK,iBAAkB,MAAM,IAGlE,QAAQ,KAAK,sBAAsB,EAAE,SAAS,iBAAiB,EAC/D,QAAQ,KAAK,4CAA4C,EAAE,SAAS,UAAU,EAC9E,QAAQ,KAAK,sBAAsB,EAAE,KAAK,iBAAkB,OAAO,GAGnE,KAAK,2BAA2B,GAChC,SAAS,WAAW,OAAO,cAAe,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAG,aAAc,cAAc,EAGtH,CAAC,MAAM,SAAS,qBAAqB,GAAK,CAAC,MAAM,SAAS,qBAAqB,GAAK,KAAK,MAAM,EAAI,IAIvG,KAAK,2BAA2B,QAAS,WAAW,EACpD,KAAK,uBAAuB,gBAAiB,cAAe,WAAW,EAC3E,CAAC,CACL,EAEA,2BAA4B,SAAS,QAAS,YAAY,CACtD,IAAI,aAAe,QAAQ,KAAK,eAAe,EAC3C,YACA,cAAgB,QAAQ,KAAK,qBAAqB,EAClD,YAAc,QAAQ,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAClE,gBAAkB,QAAQ,KAAK,yBAAyB,EAAE,KAAK,eAAe,EAAE,IAAI,EACpF,gBAAkB,QAAQ,KAAK,yBAAyB,EAAE,KAAK,eAAe,EAAE,IAAI,EACpF,gBAAkB,QAAQ,KAAK,yBAAyB,EAAE,KAAK,eAAe,EAAE,IAAI,EACpF,UAAY,QAAQ,KAAK,YAAY,EAGzC,GAAI,MAAM,SAAS,qBAAqB,EAAG,CACvC,IAAI,OAAS,QAAQ,KAAK,aAAa,EAAE,YAAY,EAAI,EACrD,iBAAmB,KACf,MAAM,SAAS,wBAAwB,EACnC,OAAS,IACT,EAAE,kBAAkB,EAAE,SAAS,iBAAiB,EAEhD,EAAE,kBAAkB,EAAE,YAAY,iBAAiB,EAGnD,OAAS,IACT,EAAE,kBAAkB,EAAE,SAAS,iBAAiB,EAEhD,EAAE,kBAAkB,EAAE,YAAY,iBAAiB,EAIvD,KAAK,MAAM,EAAI,KACX,MAAM,SAAS,wBAAwB,EACnC,OAAS,KAAO,iBAAmB,KACnC,EAAE,kBAAkB,EAAE,SAAS,iBAAiB,EAEhD,EAAE,kBAAkB,EAAE,YAAY,iBAAiB,EAEhD,MAAM,SAAS,wBAAwB,EAC1C,OAAS,KAAO,iBAAmB,KACnC,EAAE,kBAAkB,EAAE,SAAS,iBAAiB,EAEhD,EAAE,kBAAkB,EAAE,YAAY,iBAAiB,EAGnD,OAAS,KAAO,iBAAmB,KACnC,EAAE,kBAAkB,EAAE,SAAS,iBAAiB,EAEhD,EAAE,kBAAkB,EAAE,YAAY,iBAAiB,EAIvD,MAAM,SAAS,wBAAwB,EACnC,OAAS,IACL,iBAAmB,MAAa,iBAAmB,KACnD,EAAE,kBAAkB,EAAE,YAAY,iBAAiB,EAEnD,EAAE,kBAAkB,EAAE,SAAS,iBAAiB,EAGpD,EAAE,kBAAkB,EAAE,YAAY,iBAAiB,EAGnD,OAAS,IACL,iBAAmB,MAAa,iBAAmB,KACnD,EAAE,kBAAkB,EAAE,YAAY,iBAAiB,EAEnD,EAAE,kBAAkB,EAAE,SAAS,iBAAiB,EAGpD,EAAE,kBAAkB,EAAE,YAAY,iBAAiB,CAKvE,CAuLA,GArLI,MAAM,SAAS,qBAAqB,GAAK,EAAE,iBAAiB,EAAE,SAAS,aAAa,EACpF,gBAAkB,QAAQ,KAAK,yBAAyB,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,IAAI,EAExF,EAAE,iBAAiB,EAAE,SAAS,aAAa,GAAK,KAAK,MAAM,EAAI,KAC/D,gBAAkB,QAAQ,KAAK,yBAAyB,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,IAAI,EAC5F,gBAAkB,QAAQ,KAAK,yBAAyB,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,IAAI,GAE5F,gBAAkB,QAAQ,KAAK,yBAAyB,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,IAAI,EAIhG,aAAe,OACf,YAAc,YAAY,UAG9B,cAAc,KAAK,CAACF,OAAO,UAAY,CACnC,IAAI,YAAc,EAAE,OAAO,EAAE,KAAK,cAAc,EAC5C,OAAS,EAAE,OAAO,EAAE,KAAK,iBAAiB,EAE9C,OAAQ,YAAa,CACjB,IAAK,GACD,OAAO,KAAK,CAAC,IAAK,MAAQ,CACtB,IAAI,KAAO,EAAE,GAAG,EACZ,UAAY,KAAK,KAAK,OAAO,EAE7B,cAAgB,YAAY,KAAM,SAC9B,aAAe,EACR,QAAQ,SAAW,WAAa,QAAQ,UAE3C,aAAe,EACR,QAAQ,SAAW,WAAa,QAAQ,UAExC,QAAQ,SAAW,WAAa,QAAQ,SAG1D,EAEG,kBAAoB,YAAY,KAAM,SAClC,aAAe,EACR,QAAQ,SAAW,UAEtB,aAAe,EACR,QAAQ,SAAW,UAEnB,QAAQ,SAAW,SAGrC,EAEE,eAAiB,KACZ,mBAAqB,MACrB,KAAK,YAAY,mBAAmB,EAAE,SAAS,aAAa,EAC5D,KAAK,KAAK,qBAAqB,EAAE,KAAK,UAAW,EAAK,IAEtD,KACK,YAAY,uBAAuB,EACnC,SAAS,SAAS,EAClB,KAAK,gBAAgB,EACrB,KAAK,kBAAmB,kBAAkB,KAAK,EACpD,KAAK,KAAK,qBAAqB,EAAE,KAAK,WAAY,EAAK,IAG3D,KAAK,YAAY,qBAAqB,EAAE,SAAS,WAAW,EAC5D,KAAK,KAAK,qBAAqB,EAAE,KAAK,WAAY,EAAK,EAE/D,CAAC,EAED,MACJ,IAAK,GACD,OAAO,KAAK,CAAC,IAAK,MAAQ,CACtB,IAAI,KAAO,EAAE,GAAG,EACZ,UAAY,KAAK,KAAK,OAAO,EAE7B,cAAgB,YAAY,KAAM,SAC9B,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,WAAa,QAAQ,UAEjF,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,WAAa,QAAQ,UAE9E,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,WAAa,QAAQ,SAGhG,EAEG,kBAAoB,YAAY,KAAM,SAClC,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,UAE5D,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,UAGzD,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,SAG3E,EAEE,eAAiB,KACZ,mBAAqB,MACrB,KAAK,YAAY,mBAAmB,EAAE,SAAS,aAAa,EAC5D,KAAK,KAAK,qBAAqB,EAAE,KAAK,UAAW,EAAK,IAEtD,KACK,YAAY,uBAAuB,EACnC,SAAS,SAAS,EAClB,KAAK,yBAAyB,EAC9B,KAAK,kBAAmB,kBAAkB,KAAK,EACpD,KAAK,KAAK,qBAAqB,EAAE,KAAK,WAAY,EAAK,IAG3D,KAAK,YAAY,qBAAqB,EAAE,SAAS,WAAW,EAC5D,KAAK,KAAK,qBAAqB,EAAE,KAAK,WAAY,EAAK,EAG/D,CAAC,EACD,MACJ,IAAK,GACD,OAAO,KAAK,CAAC,IAAK,MAAQ,CACtB,IAAI,KAAO,EAAE,GAAG,EACZ,UAAY,KAAK,KAAK,OAAO,EAE7B,cAAgB,YAAY,KAAM,SAC9B,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,WAAa,QAAQ,UAEvH,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,WAAa,QAAQ,UAEpH,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,WAAa,QAAQ,SAGtI,EAEG,kBAAoB,YAAY,KAAM,SAClC,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,UAElG,aAAe,EACR,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,UAE/F,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,iBAAmB,QAAQ,SAAW,SAGjH,EAEE,eAAiB,KACZ,mBAAqB,MACrB,KAAK,YAAY,mBAAmB,EAAE,SAAS,aAAa,EAC5D,KAAK,KAAK,qBAAqB,EAAE,KAAK,UAAW,EAAK,IAEtD,KACK,YAAY,uBAAuB,EACnC,SAAS,SAAS,EAClB,KAAK,yBAAyB,EAC9B,KAAK,kBAAmB,kBAAkB,KAAK,EACpD,KAAK,KAAK,qBAAqB,EAAE,KAAK,WAAY,EAAK,IAG3D,KAAK,YAAY,qBAAqB,EAAE,SAAS,WAAW,EAC5D,KAAK,KAAK,qBAAqB,EAAE,KAAK,WAAY,EAAK,EAE/D,CAAC,EAED,KACR,CACJ,CAAC,EAED,aAAa,KAAK,sCAAsC,EAAE,KAAK,CAACA,OAAO,UAAY,CAC/E,IAAI,KAAO,EAAE,OAAO,EAEhB,KAAK,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,OAAS,IACxD,KAAK,KAAK,2BAA2B,EAAE,OAAS,EAChD,KAAK,KAAK,2BAA2B,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,QAAQ,OAAO,EAEpF,KAAK,KAAK,yBAAyB,EAAE,GAAG,GAAG,EAAE,KAAK,eAAe,EAAE,QAAQ,OAAO,EAG9F,CAAC,EAGG,MAAM,SAAS,qBAAqB,EAAG,CACvC,IAAI,UAAY,QAAQ,KAAK,kBAAkB,EAAE,GAAG,CAAC,EAAE,KAAK,aAAa,EAAE,IAAI,EAC3E,eAAiB,0BAA0B,SAAS,GACpD,YAAc,OAAO,cAAc,EAEvC,GAAG,aAAe,KAAW,CACzB,IAAI,UAAY,YAAY,SAAS,EACjC,kBAAoB,SAAS,SAAS,EACtC,cAAgB,QAAQ,KAAK,wBAAwB,EAAE,GAAG,CAAC,EAE/D,cAAc,KAAK,0BAA2B,iBAAiB,EAC3D,cAAc,IAAI,EAAI,oBAClB,kBAAoB,EACpB,cAAc,IAAI,iBAAiB,EAEnC,cAAc,IAAI,CAAC,EAG/B,CACJ,CACJ,EAEA,uBAAwB,SAAS,QAAS,MAAM,CAC5C,IAAI,UAAY,MAAM,KAAK,aAAa,EAAE,IAAI,EAC1C,IAAM,EAEV,KAAK,gBAAgB,QAAS,UAAW,GAAG,CAEhD,EAEA,cAAe,UAAW,CACtB,KAAK,IAAI,iBAAiB,EAAE,GAAG,kBAAmB,uBAAyBE,QAAU,CACjFA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,QAAU,EAAEA,OAAM,MAAM,EACxB,QAAU,QAAQ,QAAQ,eAAe,EACzC,qBAAuB,KAAK,KAAK,yBAAyB,EAC1D,+BAAiC,KAAK,KAAK,uBAAuB,EAEtE,GAAG,QAAQ,QAAQ,cAAc,EAAE,OAAS,EAAE,CAC1C,IAAI,YAAc,QAAQ,QAAQ,MAAM,EAExC,KAAK,iBAAiB,QAAS,WAAW,CAC9C,SACO,CAAC,QAAQ,SAAS,cAAc,GAAK,CAAC,QAAQ,SAAS,YAAY,EAAE,CACpE,IAAI,KAAO,QAAQ,QAAQ,MAAM,EAC7B,UAAY,KAAK,KAAK,aAAa,EAAE,IAAI,EACzC,IAAM,KAAK,KAAK,mBAAmB,EAAE,IAAI,EACzC,MAAQ,KAAK,KAAK,mBAAmB,EAAE,GAAG,CAAC,EAC5C,KAAO,OACN,IAAM,GAGV,KAAK,gBAAgB,QAAS,UAAW,IAAK,KAAK,CAEvD,MAAU,QAAQ,SAAS,cAAc,GACrC,KAAK,mBAAmB,OAAO,CAG3C,CAAC,EAED,KAAK,GAAG,QAAS,iCAAmCA,QAAU,CAC1DA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,MAAM,YAAY,kBAAkB,CACxC,CAAC,EAGD,KAAK,GAAG,QAAUA,QAAU,CACrB,MAAM,SAAS,kBAAkB,GAC3B,EAAEA,OAAM,MAAM,EAAE,QAAQ,0BAA0B,EAAE,SAAW,GAChE,MAAM,YAAY,kBAAkB,CAGhD,CAAC,CACL,EAEA,gBAAiB,SAAS,QAAS,UAAW,IAAK,MAAM,CACrD,IAAI,gBAAkB,OAAO,eAAe,OACxC,YAAc,OAAO,eAAe,aACpC,eAAiB,OAAO,eAAe,YAExC,QAAQ,SAAS,oBAAoB,IACpC,gBAAkB,QAAQ,KAAK,GAGnC,QAAQ,SAAS,YAAY,EAE1B,MAAM,SAAS,iBAAiB,EAC/B,QAAQ,QAAQ,UAAW,IAAK,QAAS,IAAM,CAEvC,OAAO,kBAAkB,MAAQ,OACjC,KAAK,WAAW,OAAO,OAAO,IAAI,EAElC,QAAQ,QAAS,WAAc,CAC3B,MAAM,SAAS,mBAAmB,EAClC,KAAK,kBAAkB,SAAS,EAChC,MAAM,KAAK,mBAAmB,EAAE,KAAK,UAAU,UAAU,EACzD,QAAQ,YAAY,YAAY,CACpC,CAAC,CAET,EAAG,KAAK,EACF,MAAM,SAAS,eAAe,EACpC,QAAQ,QAAQ,UAAW,IAAK,QAAS,IAAM,CAE3C,KAAK,WAAW,OAAO,OAAO,IAAI,CACtC,EAAG,KAAK,EAER,QAAQ,QAAQ,UAAW,IAAK,QAAS,IAAM,CA4B3C,OA1BA,QAAQ,YAAY,YAAY,EAC5B,MAAM,SAAS,sBAAsB,GAAK,MAAM,SAAS,qBAAqB,IAC9E,MAAM,YAAY,sBAAsB,EAExC,EAAE,uBAAuB,EAAE,YAAY,sBAAsB,GAG7D,MAAM,SAAS,0BAA0B,GACzC,MAAM,YAAY,0BAA0B,EAG5C,MAAM,SAAS,qBAAqB,IACpC,MAAM,YAAY,qBAAqB,EACvC,EAAE,qBAAqB,EAAE,SAAS,MAAM,GAGxC,MAAM,SAAS,yBAAyB,GAAK,MAAM,SAAS,qBAAqB,IAE7E,MAAM,YAAY,yBAAyB,EAC3C,KAAK,KAAK,yBAAyB,EAAE,YAAY,MAAM,EACvD,KAAK,KAAK,uBAAuB,EAAE,KAAK,CAACF,OAAO,QAAU,CACtD,EAAE,KAAK,EAAE,YAAY,sBAAsB,CAC/C,CAAC,GAID,OAAO,kBAAkB,KAAM,CACnC,IAAK,OACD,KAAK,WAAW,OAAO,OAAO,IAAI,EAElC,MACJ,IAAK,aACE,OAAO,WAAW,KACjB,QAAQ,QAAS,MAAS,CAClB,OAAO,WAAW,MAAQ,UAI1B,MAAM,SAAS,mBAAmB,EAClC,KAAK,kBAAkB,IAAI,GAG/B,QAAQ,YAAY,YAAY,EAChC,EAAE,qBAAqB,EAAE,YAAY,MAAM,CAC/C,CAAC,EAED,KAAK,WAAW,OAAO,OAAO,IAAI,EAGtC,MACJ,IAAK,eACD,QAAQ,QAAS,MAAS,CACtB,KAAK,gBAAgB,KAAM,EAAG,SAAS,EACvC,KAAK,kBAAkB,IAAI,EAC3B,MAAM,SAAS,kBAAkB,EACjC,QAAQ,YAAY,YAAY,EAChC,EAAE,qBAAqB,EAAE,YAAY,MAAM,CAC/C,CAAC,EAED,KACR,CACJ,EAAG,KAAK,CAEhB,EAEA,iBAAkB,SAAS,QAAS,YAAa,CAC7C,MAAM,OAAS,YAAY,YAAY,EACvC,IAAI,gBAAkB,OAAO,eAAe,OACxC,YAAc,OAAO,eAAe,aACpC,eAAiB,OAAO,eAAe,YAExC,QAAQ,SAAS,oBAAoB,IACpC,gBAAkB,QAAQ,KAAK,GAGnC,QAAQ,SAAS,YAAY,EAE7B,IAAI,cAAgB,SAAS,cAAc,gCAAgC,EACvE,SAAW,IAAI,SAAS,aAAa,EAczC,GAZmB,SAAS,iBAAiB,2BAA2B,EAE7D,QAAQ,UAAY,CACzB,SAAS,OAAS,OAChB,SAAS,MAAQ,OACnB,SAAS,OAAO,SAAS,KAAM,SAAS,MAAM,CAAC,CAAC,EAEhD,SAAS,OAAO,SAAS,KAAM,SAAS,KAAK,EAEnD,CAAC,EAGG,CADkB,KAAK,qBAAqB,WAAW,GACrC,MAAM,SAAS,sBAAsB,EAAG,CAC1D,MAAM,OAAO,YAAY,qBAAqB,EAC9C,QAAQ,YAAY,YAAY,EAChC,MACJ,CAEA,MAAM,cAAiB,WAAc,CACjC,MAAM,OAAO,QAAQ,OAAO,KAAO,cAAe,CAC9C,OAAQ,OACR,KAAM,QACV,CAAC,EACA,KAAK,UACK,SAAS,KAAK,CACxB,EACA,MAAO,OAAU,CACd,QAAQ,MAAM,SAAU,KAAK,CACjC,CAAC,EACA,QAAQ,IAAM,CAKX,GAJI,MAAM,SAAS,sBAAsB,GACrC,MAAM,YAAY,sBAAsB,EAGzC,MAAM,SAAS,iBAAiB,EAC3B,OAAO,kBAAkB,MAAQ,OACjC,KAAK,WAAW,OAAO,OAAO,IAAI,EAElC,QAAQ,QAAS,WAAc,CAC3B,MAAM,KAAK,mBAAmB,EAAE,KAAK,UAAU,UAAU,EACzD,QAAQ,YAAY,YAAY,CACpC,CAAC,MAGL,QAAQ,OAAO,kBAAkB,KAAM,CACnC,IAAK,OACD,KAAK,WAAW,OAAO,OAAO,IAAI,EAElC,MACJ,IAAK,aACE,OAAO,WAAW,KACjB,QAAQ,QAAS,MAAS,CAClB,OAAO,WAAW,MAAQ,UAI1B,MAAM,SAAS,mBAAmB,EAClC,KAAK,kBAAkB,IAAI,GAG/B,QAAQ,YAAY,YAAY,CACpC,CAAC,EAED,KAAK,WAAW,OAAO,OAAO,IAAI,EAGtC,MACJ,IAAK,eACD,QAAQ,QAAS,MAAS,CACtB,KAAK,gBAAgB,KAAM,EAAG,SAAS,EACvC,KAAK,kBAAkB,IAAI,EAC3B,MAAM,SAAS,kBAAkB,EACjC,QAAQ,YAAY,YAAY,CACpC,CAAC,EAED,KACR,CAER,CAAC,CACL,EAEA,MAAM,OAAO,QAAQ,OAAO,KAAO,UAAW,CAC1C,OAAQ,KACZ,CAAC,EACA,KAAK,UACK,SAAS,KAAK,CACxB,EAAE,KAAK,UAAY,CAChB,MAAM,UAAY,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC,EACjE,KAAO,SAAS,MAAM,KAAKU,OAAQA,MAAK,YAAc,SAAS,EAC/D,gBAAkB,MAAM,SACxB,iBAAmB,MAAM,WACzB,aAAe,SAAS,YAAY,KAAK,2BAA2B,EAAE,IAAI,CAAC,EAC3E,YAAc,SAAS,YAAY,KAAK,2BAA2B,EAAE,KAAK,oBAAoB,CAAC,EAC/F,aAAe,SAAS,eAAe,qBAAqB,EAAE,QAAQ,YAAc,OAAS,GAEnG,GAAI,CAAC,iBAAmB,CAAC,aAAe,aAAc,OAAO,cAAc,SAAS,EACpF,IAAI,eAAiB,iBAAiB,gBAAgB,GACtD,sBAAwB,2BAA2B,gBAAgB,GAKnE,GAJA,YAAc,OAAO,cAAc,EACnC,mBAAqB,OAAO,qBAAqB,EACjD,WAAa,YAAY,SAAS,EAClC,cAAgB,mBAAmB,SAAS,EACzC,YAAc,QAAU,eAAiB,QAC1C,GAAI,gBAAkB,aAAe,YAAc,CAC/C,MAAM,kBAAoB,YAAc,gBACxC,MAAM,IAAI,MAAM,OAAO,kBAAoB,EAAI,gBAAgB,iBAAiB,GAAK,YAAY,kCAAkC,CACvI,MACI,cAAc,SAAS,OAG3B,cAAc,SAAS,CAE7B,CAAC,EAAE,MAAM,KAAO,CACZ,KAAK,YAAY,GAAG,CACxB,CAAC,EAAE,QAAQ,IAAM,CACb,QAAQ,YAAY,YAAY,CACpC,CAAC,CACL,EAEA,qBAAsB,SAAS,YAAa,CACxC,MAAM,iBAAmB,YAAY,KAAK,2BAA2B,EAAE,KAAK,oBAAoB,EAC1F,cAAgB,SAAS,YAAY,KAAK,2BAA2B,EAAE,IAAI,CAAC,EAElF,OAAO,kBAAoB,aAC/B,EAEA,8BAA+B,SAAS,OAAO,CAC3C,IAAI,eAAiB,EAAE,gCAAgC,EACnD,sBAAwB,eAAe,KAAK,qBAAqB,EAErE,EAAE,KAAK,CACH,KAAM,MACN,IAAK,OAAO,OAAO,KAAO,aAAe,OAAS,wBAClD,WAAY,UAAY,CACpB,EAAE,6CAA6C,EAAE,MAAM,CAC3D,EACA,QAAS,SAAU,KAAM,CACrB,sBAAsB,KAAK,IAAI,CACnC,EACA,MAAO,SAAU,IAAK,KAAM,CAExB,KAAK,YAAY,EAAE,UAAU,IAAI,YAAY,EAAE,WAAW,CAC9D,EACA,SAAU,UAAY,CAClB,IAAI,OAAS,eAAe,KAAK,YAAY,EAE7C,KAAK,oBAAoB,MAAM,EAC/B,WAAW,IAAM,CACb,MAAM,SAAS,sBAAsB,CACzC,EAAG,GAAG,CACV,CACJ,CAAC,CACL,EAEA,8BAA+B,SAAS,QAAS,CAE7C,GAAI,OAAO,YAAc,IAAK,CAC1B,IAAI,qBAAuB,KAAK,KAAK,yBAAyB,EAC1D,cAAgB,QAAQ,MAAM,EAClC,qBAAqB,KAAK,qBAAqB,EAAE,MAAM,EACvD,cAAc,KAAK,sBAAsB,EAAE,OAAO,EAClD,qBAAqB,KAAK,qBAAqB,EAAE,OAAO,aAAa,EAErE,IAAI,KAAO,qBAAqB,KAAK,uBAAuB,EAAE,GAAG,GAAG,EAChE,cAAgB,KAAK,KAAK,IAAI,EAAI,SACtC,KAAK,KAAK,KAAM,aAAa,EAC7B,IAAI,aAAe,KAAK,KAAK,gBAAgB,EACzC,aAAe,KAAK,KAAK,eAAe,EAE5C,aAAa,KAAK,CAACV,OAAO,cAAgB,CACtC,EAAE,WAAW,EAAE,KAAK,KAAM,EAAE,WAAW,EAAE,KAAK,IAAI,EAAI,SAAS,CACnE,CAAC,EAED,aAAa,KAAK,CAACA,OAAO,cAAgB,CACtC,EAAE,WAAW,EAAE,KAAK,MAAO,EAAE,WAAW,EAAE,KAAK,KAAK,EAAI,SAAS,CACrE,CAAC,EAED,qBAAqB,SAAS,MAAM,EAEpC,KAAK,GAAG,QAAU,GAAM,CACpB,IAAI,QAAU,EAAE,EAAE,MAAM,EACpB,QAAQ,SAAS,oBAAoB,IACrC,qBAAqB,YAAY,MAAM,EACvC,MAAM,YAAY,yBAAyB,EAC3C,QAAQ,YAAY,sBAAsB,EAElD,CAAC,CACL,CACJ,EAEA,kBAAmB,UAAW,CAC1B,GAAI,CACA,OAAO,OAAO,OAAS,OAAO,GAClC,MAAY,CACR,MAAO,EACX,CACJ,EAEA,WAAY,SAAS,IAAI,CACjB,KAAK,kBAAkB,GAAK,CAAC,OAAO,UACpC,OAAO,IAAI,SAAW,IAEtB,OAAO,SAAW,GAE1B,EAEA,cAAe,UAAW,CACnB,OAAO,WAAW,OACd,OAAO,WAAW,MAAQ,SAGzB,KAAK,gBAAgB,GAI7B,KAAK,mBAAmB,CAC5B,EAEA,mBAAoB,UAAU,CAC1B,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,cAAc,CACvB,EAEA,4BAA6B,UAAU,CACnC,IAAI,YAAc,EAAE,gCAAgC,EAEpD,YAAY,KAAK,CAACA,OAAO,UAAY,CACjC,IAAI,KAAO,EAAE,OAAO,EAChB,YAAc,KAAK,KAAK,oBAAoB,EAC5C,SAAW,YAAY,KAAK,WAAW,EACvC,WAAa,YAAY,KAAK,aAAa,EAE5C,YAAY,OAAS,IAChB,YAAY,SAAS,mBAAmB,GACxC,YAAY,MAAM,CACd,YAAa,GACb,eAAgB,GAChB,SAAU,GACV,SAAU,GACV,aAAc,IACd,eAAgB,EAChB,KAAM,GACN,OAAQ,GACR,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,UACZ,WAAY,CACZ,CACI,WAAY,IACZ,SAAU,CACN,KAAM,SACN,OAAQ,UACZ,CACJ,CAAC,CACL,CAAC,EAGb,CAAC,CACL,EAEA,gBAAiB,SAAS,KAAM,OAAQ,UAAW,CAC/C,IAAI,KAAO,KAAK,MAAM,OAAOU,OAAQA,MAAK,IAAM,SAAS,EAAE,CAAC,EACxD,MAAQ,EAAE,0BAA0B,EACpC,QAAU,MAAM,KAAK,gBAAgB,EACrC,aAAe,QAAQ,KAAK,gBAAgB,EAC5C,aAAe,QAAQ,KAAK,gBAAgB,EAC5C,MAAQ,KAAK,OAAS,KAAK,cAC3B,MAAQ,KAAK,eACb,IAAM,aAAc,MAAM,IAAK,UAAW,MAAM,IAAK,YAAa,MAAM,IAAK,MAEjF,aAAa,KAAK,OAAQ,KAAK,GAAG,EAAE,KAAK,GAAG,EAE5C,aACK,KAAK,QAAQ,EACb,KAAK,OAAQ,KAAK,GAAG,EACrB,MAAM,EACN,OAAO,KAAK,EAEjB,QAAQ,QAAS,WAAc,CAC3B,MAAM,KAAK,mBAAmB,EAAE,KAAK,UAAU,UAAU,CAC7D,CAAC,CACL,EAEA,gBAAiB,UAAW,CACxB,IAAI,SAAW,EAAE,qBAAqB,EACtC,IAAI,qBAAuB,GAC3B,SAAS,GAAG,QAAS,IAAM,CAClB,uBACL,qBAAuB,GACvB,QAAQ,QAAS,MAAS,CACtB,KAAK,kBAAkB,IAAI,CAC/B,CAAC,EACL,CAAC,EACG,MAAM,SAAS,eAAe,EAC9B,SAAS,GAAG,QAAUR,QAAU,CAC5BA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,EAAE,YAAY,EAAE,QAAQ,CACpB,UAAW,CACf,EAAG,GAAG,CACV,CAAC,EAED,SAAS,GAAG,QAAUA,QAAU,CAC5BA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,MAAM,SAAS,mBAAmB,CACtC,CAAC,EAGL,KAAK,GAAG,QAAS,4BAA8BA,QAAU,CACrDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAElB,MAAM,SAAS,mBAAmB,GAClC,MAAM,YAAY,mBAAmB,CAE7C,CAAC,EAED,MAAM,GAAG,QAAS,sBAAwBA,QAAU,CAC5C,MAAM,SAAS,mBAAmB,GAAK,CAAC,MAAM,SAAS,gBAAgB,GAAK,CAAC,MAAM,SAAS,qBAAqB,GAAI,CAAC,MAAM,SAAS,8BAA8B,GAAK,CAAC,MAAM,SAAS,aAAa,GAChM,EAAEA,OAAM,MAAM,EAAE,QAAQ,oBAAoB,EAAE,SAAW,GACzD,EAAEA,OAAM,MAAM,EAAE,QAAQ,qBAAqB,EAAE,SAAW,GAC1D,EAAEA,OAAM,MAAM,EAAE,QAAQ,wBAAwB,EAAE,SAAW,GAC7D,EAAEA,OAAM,MAAM,EAAE,QAAQ,sBAAsB,EAAE,SAAW,GAC3D,EAAEA,OAAM,MAAM,EAAE,QAAQ,sCAAsC,EAAE,SAAW,GAC3E,EAAEA,OAAM,MAAM,EAAE,QAAQ,6BAA6B,EAAE,SAAW,GACnE,MAAM,YAAY,mBAAmB,CAGjD,CAAC,CACL,EAEA,kBAAmB,SAAS,KAAM,CAC9B,GAAG,CAAC,EAAE,cAAc,IAAI,EAAE,CACtB,MAAM,cAAgB,EAAE,+DAA+D,EACjF,aAAe,meAOf,aAAe,aAErB,cACK,SAAS,YAAY,EACrB,QAAQ,YAAY,EAEzB,EAAE,KAAK,CACH,KAAM,MACN,IAAK,OAAO,OAAO,KAAO,4BAC1B,MAAO,GACP,QAAS,SAAU,KAAM,CACrB,IAAI,SAAW,EAAE,IAAI,EAErB,cACK,YAAY,YAAY,EACxB,KAAK,QAAQ,EAElB,KAAK,iCAAiC,CAC1C,EACA,MAAO,SAAU,IAAK,KAAM,CACxB,KAAK,YAAY,EAAE,UAAU,IAAI,YAAY,EAAE,WAAW,CAC9D,EACA,SAAU,UAAY,CAClB,MAAM,KAAK,mBAAmB,EAAE,KAAK,KAAK,UAAU,EACpD,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EACnB,KAAK,2BAA2B,GAClC,SAAS,WAAW,OAAO,cAAe,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAG,aAAc,cAAc,EAExH,SAAS,cAAc,IAAI,YAAY,cAAe,CAAE,OAAQ,IAAK,CAAC,CAAC,CAC3E,CACJ,CAAC,CACL,CACJ,EAEA,iCAAkC,UAAW,CACzC,SAAS,iBAAiB,8BAA8B,EAAE,QAAQ,qBAAuB,CACrF,MAAM,YAAc,IAAI,MAAM,SAAU,CAAE,QAAS,EAAK,CAAC,EACzD,oBAAoB,cAAc,WAAW,CACjD,CAAC,CACL,EAEA,kBAAmB,UAAW,CAC1B,IAAI,SACJ,EAAE,gBAAgB,EAAE,IAAI,OAAO,EAAE,GAAG,QAAUA,QAAU,CACpDA,OAAM,gBAAgB,EACtBA,OAAM,eAAe,EACrB,MAAM,QAAU,EAAEA,OAAM,aAAa,EACrC,aAAa,QAAQ,EACrB,SAAW,WAAW,IAAM,CACxB,MAAM,UAAYA,OAAM,OAAO,QAAQ,OACvC,QAAQ,QAAQ,UAAW,EAAG,QAAS,IAAM,CACzC,QAAQ,QAAS,MAAS,CACtB,KAAK,kBAAkB,IAAI,CAC/B,CAAC,CACL,CAAC,CACL,EAAG,GAAG,CACV,CAAC,EAED,EAAE,qBAAqB,EAAE,IAAI,OAAO,EAAE,GAAG,QAAUA,QAAU,CACzDA,OAAM,gBAAgB,EACtBA,OAAM,eAAe,EAErB,IAAI,QAAU,EAAEA,OAAM,aAAa,EAC/B,KAAO,QAAQ,KAAK,kBAAkB,EAC1C,QAAQ,KAAK,IAAI,EAEjB,aAAa,QAAQ,EACrB,SAAW,WAAW,IAAM,CACxB,MAAM,UAAYA,OAAM,OAAO,QAAQ,OACvC,QAAQ,QAAQ,UAAW,EAAG,QAAS,IAAM,CACzC,QAAQ,QAAS,MAAS,CACtB,KAAK,WAAW,IAAI,CACxB,CAAC,CACL,CAAC,CACL,EAAG,GAAG,CACV,CAAC,CACL,EAEA,oBAAqB,UAAY,CAC7B,KAAK,GAAG,QAAS,qBAAuBA,QAAU,CAC9CA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,QAAU,EAAEA,OAAM,aAAa,EAC/B,UAAY,QAAQ,KAAK,qBAAqB,EAC9C,KAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EACpDS,aAAc,QAAQ,KAAK,MAAM,EAErC,EAAE,qBAAqB,EAAE,KAAK,IAAI,EAElC,QAAQ,WAAWA,aAAc,MAAS,CACnC,MAAM,SAAS,eAAe,EAC7B,KAAK,WAAW,IAAI,EACd,MAAM,SAAS,iBAAiB,GAEhC,MAAM,SAAS,mBAAmB,GACxC,KAAK,kBAAkB,IAAI,CAEnC,CAAC,CACL,CAAC,CACL,EAEA,WAAY,SAAS,KAAK,CACtB,GAAG,CAAC,EAAE,cAAc,IAAI,EAAE,CACtB,MAAM,WAAa,EAAE,kBAAkB,EAAE,KAAK,IAAI,EAC5C,MAAQ,EAAE,aAAa,EACvB,aAAe,MAAM,KAAK,qBAAqB,EAC/C,YAAc,MAAM,KAAK,mBAAmB,EAC5C,aAAe,meAOf,aAAe,aAErB,MACK,SAAS,YAAY,EACrB,QAAQ,YAAY,EAEzB,EAAE,KAAK,CACH,KAAM,MACN,IAAK,oBAAoB,UAAU,GACnC,MAAO,GACP,QAAS,SAAU,KAAM,CACrB,IAAI,gBAAkB,KAAK,WAAW,uBAAwB,KAAK,EAC/D,SAAW,EAAE,eAAe,EAKhC,GAHA,MAAM,YAAY,YAAY,EAC9B,MAAM,KAAK,kBAAkB,EAAE,OAAO,EAEnC,KAAK,WAAa,EAAE,CACnB,IAAI,YAAe,SAAS,KAAK,2BAA2B,EAAE,KAAK,EAC/D,SAAW,SAAS,KAAK,wCAAwC,EAAE,KAAK,EACxE,WAAa,SAAS,KAAK,0CAA0C,EAAE,KAAK,EAC5E,QAAU,SAAS,KAAK,uCAAuC,EAAE,KAAK,EAO1E,GALA,aAAa,KAAK,OAAO,EAAE,KAAK,WAAW,EAC3C,YAAY,KAAK,sBAAsB,EAAE,KAAK,QAAQ,EACtD,YAAY,KAAK,wBAAwB,EAAE,KAAK,UAAU,EAC1D,YAAY,KAAK,qBAAqB,EAAE,KAAK,OAAO,EAEjD,SAAS,KAAK,yBAAyB,EAAE,OAAS,EAAE,CACnD,IAAI,mBAAqB,SAAS,KAAK,yBAAyB,EAEhE,MAAM,KAAK,yBAAyB,EAAE,YAAY,kBAAkB,CACxE,CACJ,KAAO,CACH,IAAI,YAAe,SAAS,KAAK,kBAAkB,EAAE,KAAK,EACtD,WAAc,SAAS,KAAK,cAAc,EAAE,KAAK,EACjD,mBAAqB,SAAS,KAAK,iBAAiB,EAAE,KAAK,uBAAuB,EAClF,mBAAqB,SAAS,KAAK,iBAAiB,EAAE,KAAK,uBAAuB,EAClF,wBAA0B,SAAS,KAAK,iBAAiB,EAAE,KAAK,wBAAwB,EACxF,0BAA4B,SAAS,KAAK,iBAAiB,EAAE,KAAK,0BAA0B,EAChG,IAAI,kBAAoB,mBAAqB,aAAc,wBAAyB,8EAA+E,0BAA2B,eAAiB,mBAE/M,EAAE,kBAAkB,EAAE,KAAK,WAAW,EACtC,EAAE,cAAc,EAAE,KAAK,UAAU,EACjC,EAAE,4BAA4B,EAAE,KAAK,iBAAiB,CAC1D,CACJ,EACA,MAAO,SAAU,IAAK,KAAM,CACxB,KAAK,YAAY,EAAE,UAAU,IAAI,YAAY,EAAE,WAAW,CAC9D,EACA,SAAU,UAAY,CAMlB,GALA,MAAM,KAAK,mBAAmB,EAAE,KAAK,KAAK,UAAU,EACpD,KAAK,iCAAiC,EAClC,KAAK,2BAA2B,GAChC,SAAS,WAAW,OAAO,cAAe,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAG,aAAc,cAAc,EAEtH,MAAM,SAAS,eAAe,EAAG,CACjC,MAAM,aAAe,SAAS,eAAe,oBAAoB,EAC3D,UAAY,cAAc,QAAQ,UAClC,UAAY,cAAc,QAAQ,OACxC,GAAI,YAAc,OAAQ,CACtB,EAAE,YAAY,EAAE,KAAK,EACrB,MAAM,qBAAuB,SAAS,cAAc,yBAAyB,SAAS,IAAI,EACpF,sBAAwB,SAAS,cAAc,2BAA2B,SAAS,IAAI,EAE7F,sBAAsB,iBAAiB,QAAS,IAAM,CAClD,aAAa,QAAQ,UAAY,OACrC,CAAC,EAED,uBAAuB,iBAAiB,SAAW,GAAM,CACvC,OAAO,EAAE,OAAO,KAAK,GACrB,IACV,aAAa,QAAQ,UAAY,QAEzC,CAAC,CACL,MACI,EAAE,YAAY,EAAE,KAAK,CAE7B,CAEA,SAAS,cAAc,IAAI,YAAY,cAAe,CAAE,OAAQ,IAAK,CAAC,CAAC,CAC3E,CACJ,CAAC,CACL,CACJ,EAEA,4BAA6B,UAAU,CACnC,KAAK,GAAG,SAAU,uBAAyBT,QAAU,CACjDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,QAAU,EAAEA,OAAM,aAAa,EAC/B,UAAY,QAAQ,KAAK,uBAAuB,EAChDS,aAAc,QAAQ,KAAK,MAAM,EACjC,SAAW,SAAS,QAAQ,IAAI,CAAC,EACjC,MAAQ,SAAS,QAAQ,KAAK,oBAAoB,CAAC,EACvD,IAAI,cAAgB,GAEpB,GAAI,MAAQ,UAAY,MAAQ,EAAG,CACjC,IAAI,eAAiB,sBAAsBT,OAAM,cAAc,QAAQ,sBAAsB,EAAE,QAAQ,OAAO,GAC5GU,aAAc,OAAO,cAAc,EACnCC,YAAaD,aAAYV,OAAM,cAAc,QAAQ,sBAAsB,EAAE,QAAQ,OAAO,EAC3FW,aAAc,SACf,SAAW,MACX,cAAgB,GAEpB,CAEA,QAAQ,WAAWF,aAAa,SAAW,MAAS,CAC7C,MAAM,SAAS,eAAe,EAC7B,KAAK,WAAW,IAAI,EACd,MAAM,SAAS,iBAAiB,GAEhC,MAAM,SAAS,mBAAmB,GACxC,KAAK,kBAAkB,IAAI,EAE1B,eAAe,KAAK,YAAY,GAAI,OAAO,YAAY,sBAAsB,QAAQ,gBAAiB,QAAQ,CAAE,EAAE,CAC3H,CAAC,CACL,CAAC,CACL,EAEA,cAAe,UAAW,CACtB,IAAI,YAAc,GAElB,KAAK,GAAG,QAAS,wBAA0BT,QAAU,CACjDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,QAAU,EAAEA,OAAM,aAAa,EAC/B,IAAM,QAAQ,KAAK,eAAe,EAClC,OAAS,QAAQ,KAAK,cAAc,EACpC,SAAW,QAAQ,KAAK,MAAM,EAC9B,SAAW,QAAQ,KAAK,oBAAoB,EAC5C,OAAS,QAAQ,QAAQ,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,KAAK,EAEtF,MAAM,MAAQ,EAAE,wBAAwB,EACpC,aAAe,MAAM,KAAK,qBAAqB,EAEnD,GAAI,YAAa,CACb,YAAc,GACd,MAAM,UAAY,SAAS,cAAc,uBAAuB,EAC1D,WAAa,UAAU,QAAQ,iBAC/B,YAAc,UAAU,QAAQ,kBAEtC,KAAK,gBAAgB,WAAY,SAAS,EAC1C,KAAK,YAAY,WAAW,CAChC,CAEA,EAAE,KAAK,CACH,KAAM,MACN,IACA,MAAO,GACP,SAAU,OACV,WAAY,UAAW,CAChB,MAAM,SAAS,eAAe,CAGrC,EACA,QAAS,SAAS,KAAM,CACpB,aAAa,KAAK,IAAI,EACtB,aACK,KAAK,2BAA2B,EAChC,KAAK,CACF,sBAAuB,OACvB,YAAa,QACjB,CAAC,EAEL,IAAI,YAAc,aAAa,KAAK,oBAAoB,EACxD,YAAY,KAAK,wBAAwB,EAAE,IAAI,QAAQ,CAC3D,EACA,MAAO,SAAS,IAAK,KAAM,CAEvB,KAAK,YAAY,EAAE,UAAU,IAAI,YAAY,EAAE,WAAW,EACvD,MAAM,SAAS,eAAe,CAGrC,EACA,SAAU,UAAY,CAClB,MAAM,SAAS,gBAAgB,EAE5B,MAAM,SAAS,eAAe,EAI7B,KAAK,2BAA2B,GAChC,SAAS,WAAW,OAAO,cAAe,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAG,aAAc,cAAc,CAG9H,CACJ,CAAC,CACL,CAAC,EAED,KAAK,GAAG,QAAS,yBAA2BA,QAAU,CAClDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,MAAM,YAAY,gBAAgB,CACtC,CAAC,EAED,KAAK,GAAG,QAAUA,QAAU,CACpB,MAAM,SAAS,gBAAgB,GAC1B,EAAEA,OAAM,MAAM,EAAE,QAAQ,wBAAwB,EAAE,SAAW,GAAO,EAAEA,OAAM,MAAM,EAAE,QAAQ,uBAAuB,EAAE,SAAW,GACjI,MAAM,YAAY,gBAAgB,CAG9C,CAAC,EAED,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,CAC5B,EAEA,oBAAqB,UAAU,CAC3B,KAAK,GAAG,QAAS,4BAA8BA,QAAU,CACrDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,YAAc,EAAE,2BAA2B,EAC3C,YAAc,EAAEA,OAAM,MAAM,EAAE,QAAQ,oBAAoB,EAC1D,MAAQ,SAAS,YAAY,KAAK,YAAY,CAAC,EAC/C,aAAe,YAAY,MAAM,EAAE,YAAY,wBAAwB,EACvE,eAAiB,aAAa,KAAK,IAAI,EAAI,MAE/C,aAAa,KAAK,KAAM,cAAc,EAEtC,QAAQ,IAAI,cAAc,EAE1B,KAAK,8BAA8B,aAAc,KAAK,EAEtD,aAAa,YAAY,WAAW,EAEpC,MAAQ,MAAQ,EAChB,YAAY,KAAK,aAAc,KAAK,CACxC,CAAC,EAED,KAAK,GAAG,QAAS,0BAA4BA,QAAU,CACnDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,YAAc,EAAEA,OAAM,MAAM,EAAE,QAAQ,oBAAoB,EAE9D,YAAY,OAAO,CACvB,CAAC,CACL,EAEA,8BAA+B,SAAS,QAAS,MAAM,CACnD,IAAI,KAAO,EAAE,wBAAyB,OAAO,EACzC,OAAS,KAAK,KAAK,IAAI,EACvB,UAAY,OAAS,MAEzB,KAAK,KAAK,KAAM,SAAS,EAEzB,EAAE,uBAAwB,OAAO,EAAE,KAAK,CAACF,OAAO,UAAY,CACxD,IAAI,UAAY,EAAE,OAAO,EACrB,UAAY,UAAU,KAAK,EAC3B,GAAK,UAAU,KAAK,KAAK,EACzB,MAAQ,GAAK,MACb,cAAgB,UAAU,KAAK,MAAM,EAEzC,UAAU,KAAK,MAAO,KAAK,EAE3B,UAAU,KAAK,CACX,GAAI,MACJ,KAAM,cAAgB,KAC1B,CAAC,CACL,CAAC,CACL,EAEA,mBAAoB,UAAW,CAC3B,KAAK,GAAG,QAAS,mBAAqBE,QAAU,CAC5CA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,QAAU,EAAEA,OAAM,aAAa,EAC/B,SAAW,EAAE,2BAA2B,EACxC,QAAU,SAAS,KAAK,8BAA8B,EACtD,UAAY,SAAS,KAAK,qBAAqB,EAC/C,YAAc,SAAS,KAAK,MAAM,EAEnC,QAAQ,OAAS,GAChB,QAAQ,SAAS,YAAY,EAE7B,QAAQ,WAAW,YAAc,MAAS,CACtC,GAAG,CAAC,EAAE,cAAc,IAAI,EAAG,CACvB,IAAI,mBAAqB,CAAC,EAEtB,YAAc,SAAS,KAAM,CAC7B,OAAO,EAAE,KAAK,IAAI,CACtB,EAEA,QAAQ,KAAK,CAACF,OAAO,UAAY,CAC7B,IAAI,KAAO,EAAE,OAAO,EAChB,UAAY,KAAK,KAAK,kBAAkB,EAAE,IAAI,EAC9C,IAAM,SAAS,KAAK,KAAK,wBAAwB,EAAE,IAAI,CAAC,EAE5D,mBAAmB,KAAK,YAAY,CAChC,KAAM,OACN,IAAK,OAAO,OAAO,KAAO,eAC1B,KAAM,YAAc,IAAM,OAAS,UACnC,SAAU,OACV,MAAO,EACX,CAAC,CAAC,CACN,CAAC,EAEE,mBAAmB,OAAS,GAC3B,EAAE,KAAK,MAAM,EAAG,kBAAkB,EAAE,KAAME,QAAU,CAChD,WAAW,UAAU,CACjB,QAAQ,YAAY,YAAY,CACpC,EAAG,GAAI,EAEP,QAAQ,QAASY,OAAS,CACtB,MAAM,YAAY,gBAAgB,EAE/B,MAAM,SAAS,eAAe,EAC7B,KAAK,WAAWA,KAAI,EACd,MAAM,SAAS,iBAAiB,GAEhC,MAAM,SAAS,mBAAmB,GACxC,KAAK,kBAAkBA,KAAI,CAEnC,CAAC,CACL,CAAC,CAET,CACJ,CAAC,GAED,MAAM,OAAO,eAAe,iBAAiB,CAErD,CAAC,CACL,EAEA,kBAAmB,UAAW,CAC1B,KAAK,GAAG,QAAS,2BAA6BZ,QAAU,CACpDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,QAAU,EAAEA,OAAM,aAAa,EAEnC,KAAK,mBAAmB,OAAO,CACnC,CAAC,EAED,KAAK,GAAG,QAAS,4BAA8BA,QAAU,CACrDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,MAAM,YAAY,gBAAgB,EAClC,WAAW,IAAM,CACb,EAAE,gCAAgC,EAAE,YAAY,QAAQ,EACxD,EAAE,kCAAkC,EAAE,SAAS,QAAQ,CAC3D,EAAG,GAAG,CACV,CAAC,EAED,KAAK,GAAG,QAAUA,QAAU,CACrB,MAAM,SAAS,gBAAgB,GACzB,EAAEA,OAAM,MAAM,EAAE,QAAQ,0BAA0B,EAAE,SAAW,GAAO,EAAEA,OAAM,MAAM,EAAE,QAAQ,qBAAqB,EAAE,SAAW,IACjI,MAAM,YAAY,gBAAgB,EAClC,WAAW,IAAM,CACb,EAAE,gCAAgC,EAAE,YAAY,QAAQ,EACxD,EAAE,kCAAkC,EAAE,SAAS,QAAQ,CAC3D,EAAG,GAAG,EAGlB,CAAC,CACL,EAEA,mBAAoB,SAAS,QAAQ,CACjC,IAAI,QACA,QAAU,QAAQ,QAAQ,eAAe,EACzC,MAAQ,QAAQ,KAAK,aAAa,EAAE,KAAK,eAAe,EACxD,KAAO,OAAO,SAAS,KAAO,QAAQ,KAAK,aAAa,EAAE,KAAK,aAAa,EAC5E,MAAQ,EAAE,qBAAqB,EAEhC,QAAQ,SAAS,cAAc,EAC9B,QAAU,QAAQ,KAAK,sCAAsC,EAAE,KAAK,OAAO,EAE3E,QAAU,QAAQ,KAAK,YAAY,EAGvC,MAAM,KAAK,4BAA4B,EAAE,IAAI,EAAE,KAAK,KAAK,CAAC,EAC1D,MAAM,KAAK,2BAA2B,EAAE,IAAI,IAAI,EAE7C,SACC,MAAM,KAAK,8BAA8B,EAAE,IAAI,OAAO,EAE1D,MAAM,SAAS,gBAAgB,CACnC,EAEA,gBAAiB,UAAU,CACvB,KAAK,GAAG,QAAS,4BAA8BA,QAAU,CACrDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,YAAc,EAAE,4BAA4B,EAC5C,aAAe,YAAY,KAAK,qBAAqB,EACrD,IAEJ,GAAG,MAAM,SAAS,kBAAkB,EAAE,CAClC,IAAI,OAAS,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAEpD,IAAM,OAAO,OAAO,KAAO,aAAe,OAAS,0BACvD,SAAU,MAAM,SAAS,iBAAiB,EAAE,CACxC,IAAI,OAAS,EAAE,iBAAiB,EAAE,KAAK,0BAA0B,EAEjE,IAAM,OAAO,OAAO,KAAO,aAAe,OAAS,0BACvD,MACI,IAAM,OAAO,OAAO,KAAO,kCAG/B,EAAE,KAAK,CACH,KAAM,MACN,IACA,WAAY,UAAY,CACpB,aAAa,MAAM,CACvB,EACA,QAAS,SAAU,KAAM,CACrB,aAAa,KAAK,IAAI,CAC1B,EACA,MAAO,SAAU,IAAK,KAAM,CACxB,MAAM,EAAE,UAAU,IAAI,YAAY,EAAE,WAAW,CACnD,EACA,SAAU,UAAY,CAClB,MAAM,SAAS,oBAAoB,CACvC,CACJ,CAAC,CACL,CAAC,EAED,KAAK,GAAG,QAAS,6BAA+BA,QAAU,CACtDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,MAAM,YAAY,oBAAoB,EACnC,MAAM,SAAS,wBAAwB,GACtC,MAAM,YAAY,wBAAwB,CAElD,CAAC,EAED,KAAK,GAAG,QAAUA,QAAU,CACrB,MAAM,SAAS,oBAAoB,GAC7B,EAAEA,OAAM,MAAM,EAAE,QAAQ,2BAA2B,EAAE,SAAW,GAAO,EAAEA,OAAM,MAAM,EAAE,QAAQ,2BAA2B,EAAE,SAAW,GACxI,MAAM,YAAY,oBAAoB,CAGlD,CAAC,CACL,EAEA,UAAW,SAAS,KAAK,CACrB,EAAE,cAAe,IAAI,EAAE,YAAY,uCAAuC,EAC1E,EAAE,gDAAiD,IAAI,EAAE,IAAI,EAAE,CACnE,EAEA,YAAa,UAAW,CACpB,MAAM,MAAQ,OAAO,SAAS,KAAK,QAAQ,mBAAmB,EAAI,GAElE,GAAI,OAAO,SAAS,KAAK,QAAQ,qBAAqB,EAAI,IAAM,MAAO,CACnE,MAAM,YAAc,EAAE,uBAAuB,EAAE,OAAO,cAAc,CAAC,IAAI,EACzE,IAAI,MAAQ,IAIZ,OAFI,MAAM,SAAS,kBAAkB,IAAG,MAAQ,MAEzC,YAAY,KAAK,cAAc,EAAG,CACrC,IAAK,MACD,WAAW,IAAM,CAAC,MAAM,SAAS,oBAAoB,CAAC,EAAG,KAAK,EAC9D,KAAK,0BAA0B,YAAa,KAAK,EACjD,EAAE,kCAAkC,EAAE,SAAS,QAAQ,EACvD,MACJ,IAAK,UACD,YAAY,YAAY,QAAQ,EAChC,KAAK,0BAA0B,YAAa,KAAK,EACjD,EAAE,kCAAkC,EAAE,SAAS,QAAQ,EACvD,MACJ,IAAK,WACD,EAAE,gCAAgC,EAAE,SAAS,QAAQ,EACrD,WAAW,IAAM,CAAC,MAAM,SAAS,gBAAgB,CAAC,EAAG,KAAK,EAC1D,KAAK,0BAA0B,YAAa,KAAK,EACjD,KACR,CACJ,CAEA,EAAE,QAAQ,EAAE,GAAG,QAAS,wBAA0BA,QAAU,CACxD,EAAE,OAAO,eAAgB,EAAEA,OAAM,MAAM,EAAE,KAAK,gBAAgB,EAAG,CAC7D,QAAS,EACT,KAAM,GACV,CAAC,CACL,CAAC,CACL,EAEA,0BAA0B,YAAa,MAAO,CAC1C,OAAO,QAAQ,UAAU,SAAU,SAAS,MAAO,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC,EAC1E,QAAQ,EAAE,kCAAkC,EAAE,SAAS,QAAQ,EAAG,EAAE,YAAY,EAAE,QAAQ,CAAC,UAAW,YAAY,OAAO,EAAE,IAAM,OAAO,YAAY,CAAC,EAAG,GAAG,EACnK,EAEA,mBAAoB,UAAW,CAC3B,IAAI,aAAe,EAAE,qBAAqB,EAEvC,OAAO,QAAQ,OACd,KAAK,iCAAiC,YAAY,EAClD,KAAK,gCAAgC,YAAY,EACjD,KAAK,qBAAqB,EAE1B,KAAK,GAAG,QAAS,qCAAuCA,QAAU,CAC9DA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,MAAM,YAAY,sBAAsB,CAC5C,CAAC,EAED,KAAK,GAAG,QAAUA,QAAU,CACrB,MAAM,SAAS,sBAAsB,GAC/B,EAAEA,OAAM,MAAM,EAAE,QAAQ,qBAAqB,EAAE,SAAW,GAAO,EAAEA,OAAM,MAAM,EAAE,QAAQ,8BAA8B,EAAE,SAAW,GACrI,MAAM,YAAY,sBAAsB,CAGpD,CAAC,EAET,EAEA,iCAAkC,SAAS,MAAO,CAC9C,IAAI,MAAQ,KAAK,MAAM,aAAa,QAAQ,aAAa,CAAC,EACtD,MAAQ,EAAE,+BAA+B,EAE1C,QAAU,MACN,MAAM,OAAS,IACd,MAAM,KAAK,CAACF,OAAO,UAAY,CAC3B,IAAI,KAAO,EAAE,OAAO,EAChB,OAAS,KAAK,KAAK,wBAAwB,EAE5C,MAAM,QAAQ,MAAM,GAAK,GACxB,KAAK,KAAK,eAAe,EAAE,SAAS,YAAY,EAChD,KAAK,KAAK,OAAO,EAAE,KAAK,OAAO,QAAQ,KAAK,EAC5C,KAAK,KAAK,OAAO,EAAE,KAAK,UAAW,EAAI,IAEvC,KAAK,KAAK,eAAe,EAAE,YAAY,YAAY,EACnD,KAAK,KAAK,OAAO,EAAE,KAAK,OAAO,QAAQ,GAAG,EAC1C,KAAK,KAAK,OAAO,EAAE,KAAK,UAAW,EAAK,EAEhD,CAAC,EAED,KAAK,qBAAqB,KAAK,EAG3C,EAEA,gCAAiC,SAAS,MAAO,CAC7C,KAAK,GAAG,SAAU,+BAAiCE,QAAU,CACzD,IAAI,MAAQ,EAAEA,OAAM,aAAa,EAC7B,KAAO,MAAM,QAAQ,eAAe,EACpC,OAAS,MAAM,IAAI,EACnB,MAAQ,KAAK,MAAM,aAAa,QAAQ,aAAa,CAAC,EAE1D,MAAQ,KAAK,YAAY,KAAK,EAE3BA,OAAM,cAAc,SACnB,KAAK,KAAK,eAAe,EAAE,SAAS,YAAY,EAChD,KAAK,KAAK,OAAO,EAAE,KAAK,OAAO,QAAQ,KAAK,EAC5C,KAAK,KAAK,OAAO,EAAE,KAAK,UAAW,EAAI,EACvC,KAAK,wBAAwB,MAAO,OAAQ,KAAK,IAEjD,KAAK,KAAK,eAAe,EAAE,YAAY,YAAY,EACnD,KAAK,KAAK,OAAO,EAAE,KAAK,OAAO,QAAQ,GAAG,EAC1C,KAAK,KAAK,OAAO,EAAE,KAAK,UAAW,EAAK,EACxC,KAAK,wBAAwB,MAAO,OAAQ,KAAK,EAEzD,CAAC,CACL,EAEA,qBAAsB,UAAW,CAC7B,KAAK,GAAG,QAAS,sBAAwBA,QAAU,CAC/CA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,KAAO,KAAK,MAAM,aAAa,QAAQ,aAAa,CAAC,EAEzD,GAAI,KAAK,QAAU,EACf,aAAM,OAAO,QAAQ,OAAO,EAErB,GAEP,KAAK,4BAA4B,KAAM,CAAC,CAEhD,CAAC,EAED,KAAK,GAAG,QAAS,wBAA0BA,QAAU,CACjDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,GAAK,EAAEA,OAAM,aAAa,EAAE,KAAK,cAAc,EAC/C,aAAe,EAAE,4CAA4C,EAC7D,KAAO,aAAa,KAAK,8CAA+C,GAAI,IAAI,EAChF,OAAS,KAAK,KAAK,wBAAwB,EAE/C,GAAG,aAAa,KAAK,yBAAyB,EAAE,QAAU,EAAE,CAExD,KAAK,OAAO,EACZ,IAAI,MAAQ,KAAK,MAAM,aAAa,QAAQ,aAAa,CAAC,EACtDF,OAAQ,MAAM,QAAQ,MAAM,EAC5B,aAAe,EAAE,qBAAqB,EAEtCA,OAAQ,KACR,MAAM,OAAOA,OAAO,CAAC,EACrB,MAAQ,KAAK,YAAY,KAAK,EAC9B,aAAa,QAAQ,cAAe,KAAK,UAAU,KAAK,CAAC,EAEzD,KAAK,iCAAiC,YAAY,EAClD,KAAK,qBAAqB,YAAY,GAG1C,MAAM,YAAY,sBAAsB,CAC5C,KAAO,CACH,KAAK,OAAO,EAEZ,IAAI,MAAQ,KAAK,MAAM,aAAa,QAAQ,aAAa,CAAC,EACtDA,OAAQ,MAAM,QAAQ,MAAM,EAC5B,aAAe,EAAE,qBAAqB,EAEtCA,OAAQ,KACR,MAAM,OAAOA,OAAO,CAAC,EACrB,MAAQ,KAAK,YAAY,KAAK,EAC9B,aAAa,QAAQ,cAAe,KAAK,UAAU,KAAK,CAAC,EAEzD,KAAK,iCAAiC,YAAY,EAClD,KAAK,qBAAqB,YAAY,EAE9C,CACJ,CAAC,CACL,EAEA,qBAAsB,SAAS,MAAO,CAClC,IAAI,MAAQ,KAAK,MAAM,aAAa,QAAQ,aAAa,CAAC,EAEtD,MAAM,OAAS,GACf,MAAM,OAAO,EAAE,SAAS,SAAS,EACjC,MAAM,KAAK,gBAAgB,EAAE,KAAK,MAAM,MAAM,GAE9C,MAAM,OAAO,EAAE,YAAY,SAAS,CAE5C,EAEA,YAAa,SAAS,KAAM,CACxB,IAAI,OAAS,CAAC,EAEd,SAAE,KAAK,KAAM,SAASA,OAAO,QAAS,CAC9B,EAAE,QAAQ,QAAS,MAAM,GAAK,IAC9B,OAAO,KAAK,OAAO,CAE3B,CAAC,EAEM,MACX,EAEA,wBAAyB,SAAS,MAAO,KAAM,MAAM,CACjD,MAAMA,OAAQ,MAAM,QAAQ,IAAI,EAEhC,MAAM,KAAK,IAAI,EACf,MAAQ,KAAK,YAAY,KAAK,EAE9B,aAAa,QAAQ,cAAe,KAAK,UAAU,KAAK,CAAC,EAEzD,KAAK,qBAAqB,KAAK,CACnC,EAEA,wBAAyB,SAAS,MAAO,KAAM,MAAM,CACjD,MAAMA,OAAQ,MAAM,QAAQ,IAAI,EAE5BA,OAAQ,KACR,MAAM,OAAOA,OAAO,CAAC,EACrB,MAAQ,KAAK,YAAY,KAAK,EAC9B,aAAa,QAAQ,cAAe,KAAK,UAAU,KAAK,CAAC,EAEzD,KAAK,qBAAqB,KAAK,EAEvC,EAEA,4BAA6B,SAAS,KAAM,MAAM,CAC9C,MAAM,aAAe,EAAE,4CAA4C,EAC/D,IAAM,OAAO,OAAO,KAAO,aAAe,KAAK,KAAK,EAAI,kCAExD,OAAS,GAAG,aAAa,KAAK,OAAO,EAAE,MAAM,EAE7C,KAAK,OAAS,MACd,EAAE,KAAK,CACH,KAAM,MACN,IACA,MAAO,GACP,QAAS,SAAU,KAAM,CACrB,aAAa,KAAK,OAAO,EAAE,OAAO,IAAI,EACtC,QACA,KAAK,4BAA4B,KAAM,KAAK,CAChD,CACJ,CAAC,EAED,MAAM,SAAS,sBAAsB,CAE7C,EAEA,gBAAiB,SAAS,OAAO,CAC7B,KAAK,oBAAoB,MAAM,EAC/B,KAAK,mBAAmB,MAAM,EAC9B,KAAK,uBAAuB,MAAM,EAClC,KAAK,iBAAiB,MAAM,EAC5B,KAAK,iBAAiB,MAAM,EAC5B,KAAK,oBAAoB,MAAM,EAC/B,KAAK,oBAAoB,MAAM,EAC/B,KAAK,sBAAsB,OAAQ,OAAO,mBAAmB,CACjE,EAEA,cAAe,UAAU,CACrB,IAAI,YAAc,GAElB,KAAK,GAAG,QAAS,+BAAiCE,QAAU,CAIxD,GAHAA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAElB,YAAa,CACb,YAAc,GACd,MAAM,WAAa,SAAS,cAAc,wBAAwB,EAC5D,gBAAkB,WAAW,QAAQ,gBACrC,WAAa,WAAW,QAAQ,kBAChC,cAAgB,WAAW,QAAQ,qBACnC,YAAc,iEAEf,SAAS,KAAK,QAAQ,aAAa,GAAG,KAAK,gBAAgB,gBAAiB,UAAU,EAC3F,KAAK,gBAAgB,WAAY,UAAU,EAC3C,KAAK,YAAY,aAAa,EAC9B,SAAS,KAAK,UAAU,IAAI,WAAW,EAClC,SAAS,KAAK,QAAQ,kBAAkB,IACzC,SAAS,KAAK,UAAU,IAAI,iBAAiB,EAC7C,KAAK,YAAY,WAAW,EAEpC,CAEA,IAAI,OAAS,EAAEA,OAAM,aAAa,EAAE,KAAK,gBAAgB,EAEzD,KAAK,uBAAuB,MAAM,CACtC,CAAC,EAED,KAAK,GAAG,QAAS,gCAAkCA,QAAU,CACzDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,MAAM,YAAY,iBAAiB,CACvC,CAAC,EAED,EAAE,qBAAqB,EAAE,IAAI,sBAAsB,EAAE,GAAG,uBAAwB,GAAK,CAC7E,MAAM,SAAS,iBAAiB,GAC7B,CAAC,MAAM,SAAS,mBAAmB,GACnC,CAAC,MAAM,SAAS,oBAAoB,GACpC,CAAC,MAAM,SAAS,iBAAiB,GACjC,CAAC,MAAM,SAAS,oBAAoB,GACpC,CAAC,MAAM,SAAS,qBAAqB,GACrC,CAAC,MAAM,SAAS,8BAA8B,GAEjD,MAAM,YAAY,iBAAiB,CAE3C,CAAC,CACL,EAEA,uBAAwB,SAAS,OAAO,CACpC,IAAI,MAAQ,EAAE,yBAAyB,EACnC,aAAe,MAAM,KAAK,qBAAqB,EAEnD,EAAE,KAAK,CACH,KAAM,MACN,IAAK,OAAO,OAAO,KAAO,aAAe,OAAS,wBAClD,WAAY,UAAY,CACpB,aAAa,MAAM,EACnB,EAAE,gCAAgC,EAAE,KAAK,qBAAqB,EAAE,MAAM,CAC1E,EACA,QAAS,SAAU,KAAM,CACrB,aAAa,KAAK,IAAI,CAC1B,EACA,MAAO,SAAU,IAAK,KAAM,CACxB,MAAM,EAAE,UAAU,IAAI,YAAY,EAAE,WAAW,CACnD,EACA,SAAU,UAAY,CAClB,IAAI,OAAS,MAAM,KAAK,YAAY,EACpC,MAAM,MAAQ,EAAE,uDAAuD,EACnE,UAAY,EAAE,8DAA8D,EAC5E,kBAAoB,EAAE,+CAA+C,EACrE,eAAiB,EAAE,4CAA4C,EAgCnE,GA9BA,KAAK,oBAAoB,MAAM,EAC/B,KAAK,mBAAmB,MAAM,EAC9B,KAAK,uBAAuB,MAAM,EAClC,KAAK,iBAAiB,MAAM,EAC5B,KAAK,iBAAiB,MAAM,EAC5B,KAAK,sBAAsB,MAAM,EACjC,KAAK,sBAAsB,OAAQ,OAAO,8BAA8B,EAExE,MAAM,SAAS,iBAAiB,EAE5B,OAAO,SAAW,QAAQ,eAC1B,QAAQ,cAAc,KAAK,EAG/B,UAAU,KAAK,KAAM,wBAAwB,EAE7C,MAAM,KAAK,CAACF,OAAO,UAAY,CAC3B,MAAM,UAAY,EAAE,OAAO,EAAE,KAAK,8BAA8B,EAC5D,UAAY,EAAE,OAAO,EAAE,KAAK,6BAA6B,EACzD,OAAS,UAAU,KAAK,IAAI,EAEhC,UACK,KAAK,KAAM,aAAa,MAAM,EAAE,EAChC,KAAK,OAAQ,aAAa,MAAM,EAAE,EACvC,UAAU,KAAK,MAAO,aAAa,MAAM,EAAE,CAC/C,CAAC,EAED,kBAAkB,KAAK,KAAM,oCAAoC,EACjE,eAAe,KAAK,KAAM,iCAAiC,EAEvD,EAAE,iDAAiD,EAAE,OAAQ,CAC7D,IAAI,KAAO,EAAE,iDAAiD,EAAE,KAAK,EAErE,EAAE,2CAA2C,EAAE,MAAM,UAAU,CAC3D,EAAE,mDAAmD,EAAE,OAAO,IAAI,CACtE,CAAC,CACL,CAEA,MAAM,cAAgB,SAAS,eAAe,wBAAwB,EAChE,cAAgB,EAAE,+CAA+C,EAEnE,OAAO,YAAc,MAAQ,cAC7B,IAAI,SAAS,cAAe,CACxB,UAAW,GACf,CAAC,EAED,yBAAyB,EAG7B,SAAS,0BAA0B,CAC/B,cAAc,GAAG,QAAS,QAAUE,QAAU,CAC1CA,OAAM,eAAe,EAErB,IAAI,QAAUA,OAAM,cAChB,OAAS,QAAQ,UAAU,CAAC,EAAE,QAAQ,QAAS,EAAE,EACjD,SAAW,wBAAwB,MAAM,GACzC,KAAO,EAAE,SAAS,eAAe,QAAQ,CAAC,EAE9C,KAAK,QAAQ,OAAO,CACxB,CAAC,CACL,CAEA,GAAI,OAAO,OAAO,iBAAmB,EAAE,gCAAgC,EAAE,OAAS,GAAK,OAAO,KAAO,MAAQ,OAAO,OAAO,IAAI,mBAAsB,YACjJ,OAAO,OAAO,IAAI,kBAAkB,EAAG,OAAO,IAAI,kBAAkB,EAAG,OAAO,IAAI,WAAW,EAAG,OAAO,IAAI,aAAa,EAAG,OAAO,IAAI,WAAW,CAEzJ,CACJ,CAAC,CACL,EAEA,oBAAqB,SAAS,OAAQ,CAClC,IAAI,UAAY,OAAO,KAAK,kBAAkB,EAC1C,UAAY,OAAO,KAAK,iCAAiC,EACzD,gBAAkB,OAAO,KAAK,yBAAyB,EAE3D,GAAG,CAAC,UAAU,SAAS,mBAAmB,GAAK,CAAC,UAAU,SAAS,mBAAmB,EAAG,CACrF,MAAM,cAAgB,UAAU,KAAK,aAAa,EAC9C,cAAgB,UAAU,KAAK,aAAa,EAC5C,eAAiB,UAAU,KAAK,cAAc,EAC9C,cAAgB,UAAU,KAAK,aAAa,EAC5C,gBAAkB,SAAS,UAAU,KAAK,uBAAuB,CAAC,EAEtE,IAAI,SAAU,SAAU,cAExB,IAAI,cAEJ,UAAU,SAAS,yBAAyB,EAAI,cAAgB,KAAK,MAAM,cAAgB,CAAC,EAAI,cAAgB,cAChH,UAAU,SAAS,6BAA6B,GAAK,eAAiB,EAAI,cAAgB,EAAI,cAAgB,cAC9G,MAAM,aAAe;AAAA;AAAA;AAAA,yDAGoB,cAAc;AAAA,wBAiCvD,GA9BA,UAAU,GAAG,OAAQ,IAAM,CACnB,OAAO,WAAa,KAAO,gBACxB,qBAAuB,UACtB,aAAa,aAAa,EAC1B,cAAgB,WAAW,IAAM,CAC7B,UAAU,OAAO,YAAY,CACjC,EAAG,GAAI,EAEP,UAAU,GAAG,qBAAsB,SAAUA,OAAO,MAAO,aAAc,UAAW,CAChF,IAAI,GAAK,cAA8B,GAAK,EAC5C,UAAU,KAAK,yBAAyB,EAAE,KAAK,CAAC,CACpD,CAAC,EAGb,CAAC,EAED,UAAU,GAAG,SAAU,IAAM,CACzB,aAAa,aAAa,EAC1B,cAAgB,WAAW,IAAM,CAC7B,UAAU,OAAO,YAAY,CACjC,EAAG,GAAI,CACX,CAAC,EAEG,UAAU,QAAQ,cAAc,EAAE,GAAG,WAAW,EAChD,SAAW,GAGX,SAAW,UAGZ,UAAU,SAAS,yBAAyB,EAAG,CAC9C,IAAI,WAAa,OAAO,KAAK,0CAA0C,EACnE,OAAS,WAAW,KAAK,aAAa,EACtC,KAAO,EACP,KAAO,EAEP,QAAU,IACZ,KAAO,EACP,KAAO,GAEL,QAAU,IACZ,KAAO,EACP,KAAO,GAGT,WAAW,MAAM,CACb,KAAM,GACN,KACA,OAAQ,cACR,SAAU,GACV,aAAc,EACd,aAAc,KACd,cAAe,GACf,SAAU,SACV,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,UACZ,WAAY,CACR,CACI,WAAY,IACZ,SAAU,CACN,OAAQ,aACZ,CACJ,CACJ,CACJ,CAAC,CACL,SAAU,UAAU,SAAS,6BAA6B,EAAG,CACzD,IAAI,WAAa,OAAO,KAAK,8CAA8C,EACvE,KAAO,EACP,KAAO,EAEX,WAAW,MAAM,CACb,KAAM,GACN,KACA,OAAQ,cACR,SAAU,GACV,aAAc,EACd,aAAc,KACd,cAAe,GACf,SAAU,SACV,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,UACZ,WAAY,CACR,CACI,WAAY,IACZ,SAAU,CACN,OAAQ,aACZ,CACJ,CACJ,CACJ,CAAC,CACL,KACQ,CAAC,UAAU,GAAG,oBAAoB,GAAK,OAAO,WAAa,KAC3D,UAAU,MAAM,CACZ,KAAM,GACN,KAAM,GACN,OAAQ,cACR,SAAU,GACV,aAAc,EACd,eAAgB,EAChB,SAAU,SACV,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,UACZ,WAAY,CACR,CACI,WAAY,IACZ,SAAU,CACN,OAAQ,aACZ,CACJ,CACJ,CACJ,CAAC,EACD,SAAW,WAGX,SAAW,GAoInB,GAhIG,OAAO,SAAS,UAAU,GAAK,OAAO,SAAS,UAAU,GACxD,UAAU,GAAG,OAAO,CAACA,OAAO,QAAU,CAClC,UAAU,KAAK,mBAAmB,EAAE,YAAY,kBAAkB,CACtE,CAAC,EAED,UAAU,MAAM,CACZ,aAAc,gBACd,eAAgB,EAChB,SAAU,SACV,OAAQ,GACR,KAAM,GACN,UAAW,GACX,eAAgB,GAChB,cAAe,GACf,SAAU,GACV,gBAAiB,GACjB,SAAU,GACV,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,WAAY,CACR,CACI,WAAY,KACZ,SAAU,CACN,aAAc,gBAAkB,EAAI,gBAAkB,EAAI,gBAC1D,eAAgB,CACpB,CACJ,EACA,CACI,WAAY,KACZ,SAAU,CACN,SAAU,GACV,gBAAiB,GACjB,IAAK,OAAO,SAChB,CACJ,EACA,CACI,WAAY,IACZ,SAAU,CACN,aAAc,EACd,eAAgB,EAChB,SAAU,GACV,gBAAiB,GACjB,IAAK,OAAO,SAChB,CACJ,CACJ,CACJ,CAAC,GACK,OAAO,SAAS,UAAU,IAChC,UAAU,GAAG,OAAO,CAACA,OAAO,QAAU,CAClC,UAAU,KAAK,mBAAmB,EAAE,YAAY,kBAAkB,CACtE,CAAC,EAED,UAAU,MAAM,CACZ,aAAc,gBACd,eAAgB,EAChB,SAAU,SACV,OAAQ,GACR,KAAM,GACN,cAAe,GACf,SAAU,GACV,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,UACZ,WAAY,CACR,CACI,WAAY,KACZ,SAAU,CACN,aAAc,gBAAkB,EAAI,gBAAkB,EAAI,gBAC1D,eAAgB,CACpB,CACJ,EACA,CACI,WAAY,IACZ,SAAU,CACN,aAAc,EACd,eAAgB,CACpB,CACJ,CACJ,CACJ,CAAC,GAGL,gBAAgB,GAAG,OAAO,CAACA,OAAO,QAAU,CACxC,gBAAgB,KAAK,mBAAmB,EAAE,YAAY,kBAAkB,CAC5E,CAAC,EAED,gBAAgB,MAAM,CAClB,aAAe,SAAS,gBAAgB,KAAK,uBAAuB,CAAC,EACrE,eAAgB,EAChB,SAAU,SACV,OAAQ,GACR,KAAM,GACN,UAAW,GACX,eAAgB,GAChB,cAAe,GACf,SAAU,GACV,gBAAiB,GACjB,SAAU,GACV,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,UACZ,WAAY,CACR,CACI,WAAY,KACZ,SAAU,CACN,aAAc,gBAAkB,EAAI,gBAAkB,EAAI,gBAC1D,eAAgB,CACpB,CACJ,EACA,CACI,WAAY,KACZ,SAAU,CACN,SAAU,GACV,gBAAiB,EACrB,CACJ,EACA,CACI,WAAY,IACZ,SAAU,CACN,aAAc,IACd,eAAgB,EAChB,SAAU,GACV,gBAAiB,EACrB,CACJ,CACJ,CACJ,CAAC,EAEE,OAAO,SAAS,UAAU,GAAK,OAAO,SAAS,UAAU,EAAE,CAC1D,IAAI,WAAa,UAAU,YAAY,EACvC,WAAa,UAAU,YAAY,EACnC,KAAO,WAAa,YAAY,EAChC,YAAc,IAAM,GAEhB,KAAK,MAAM,EAAI,KACX,UAAU,KAAK,cAAc,EAAE,OAAS,GACxC,UAAU,OAAO,EAAE,SAAS,gBAAgB,EAC5C,UAAU,OAAO,EAAE,IAAI,MAAO,GAAG,IAEjC,UAAU,OAAO,EAAE,SAAS,gBAAgB,EAC5C,UAAU,OAAO,EAAE,IAAI,MAAO,WAAW,GAGzC,UAAU,KAAK,cAAc,EAAE,OAAS,EACxC,UAAU,OAAO,EAAE,IAAI,MAAO,OAAO,EAErC,UAAU,OAAO,EAAE,IAAI,MAAO,WAAW,CAGrD,CAEA,GAAI,UAAU,KAAK,gBAAgB,EAAE,OAAS,EAC1C,GAAI,OAAO,OAAO,wBAA4B,IAAa,CACvD,OAAO,wBAA0B,KAAK,oBAAoB,KAAK,OAAQ,SAAS,EAEhF,MAAM,IAAM,SAAS,cAAc,QAAQ,EAC3C,IAAI,IAAM,qCACV,MAAM,eAAiB,SAAS,qBAAqB,QAAQ,EAAE,CAAC,EAChE,eAAe,WAAW,aAAa,IAAK,cAAc,CAC9D,MACI,KAAK,oBAAoB,SAAS,EAItC,UAAU,KAAK,cAAc,EAAE,OAAS,IACxC,UAAU,GAAG,eAAgB,CAACA,OAAO,QAAU,CAC3C,IAAI,aACA,OACA,QAEJ,aAAe,EAAE,MAAM,OAAO,EAAE,KAAK,gBAAgB,EACrD,OAAS,aAAa,KAAK,QAAQ,EAAE,IAAI,CAAC,EAE1C,QAAU,CACN,OAAU,QACV,MAAS,MACb,EAGI,QAAO,cAAc,YAAY,KAAK,UAAU,OAAO,EAAG,GAAG,CAErE,CAAC,EAED,UAAU,GAAG,cAAe,CAACA,OAAO,QAAU,CAC1C,IAAI,aACA,OACA,QAEJ,aAAe,EAAE,MAAM,OAAO,EAAE,KAAK,gBAAgB,EACrD,OAAS,aAAa,KAAK,QAAQ,EAAE,IAAI,CAAC,EAE1C,QAAU,CACN,OAAU,OACV,MAAS,MACb,EAGI,QAAO,cAAc,YAAY,KAAK,UAAU,OAAO,EAAG,GAAG,CAErE,CAAC,GAGD,UAAU,KAAK,YAAY,EAAE,OAAS,IACtC,UAAU,GAAG,eAAgB,CAACA,OAAO,QAAU,CAC3C,IAAI,aACA,OAEJ,aAAe,EAAE,MAAM,OAAO,EAAE,KAAK,gBAAgB,EACrD,OAAS,aAAa,KAAK,OAAO,EAAE,IAAI,CAAC,EAGrC,QAAO,MAAM,CAErB,CAAC,EAED,UAAU,GAAG,cAAe,CAACA,OAAO,QAAU,CAC1C,IAAI,aACA,OAEJ,aAAe,EAAE,MAAM,OAAO,EAAE,KAAK,gBAAgB,EACrD,OAAS,aAAa,KAAK,OAAO,EAAE,IAAI,CAAC,EAGrC,QAAO,KAAK,CAEpB,CAAC,EAET,CAEA,IAAI,gBAAkB,OAAO,KAAK,iBAAiB,EAoBnD,GAlBG,gBAAgB,OAAS,GACxB,gBAAgB,SAAS,CACrB,QAAS,CACL,OACA,QACA,YACA,aAEA,SACA,OACJ,EACA,KAAO,GACP,OAAS,CACL,UAAY,EAChB,CACJ,CAAC,EAGF,MAAM,SAAS,kBAAkB,EAAG,CACnC,GAAI,OAAO,QAAQ,YAAY,EAAE,OAAQ,OACzC,IAAI,YAAc,OAAO,KAAK,mBAAmB,EAE7C,KAAK,MAAM,EAAI,MACf,YAAY,KAAK,CAACF,OAAO,UAAY,CACjC,IAAI,MAAQ,EAAE,OAAO,EAEjB,KAAK,MAAM,EAAI,KACf,MAAM,KAAK,CAAE,IAAK,MAAM,KAAK,iBAAiB,EAAG,MAAO,EAAM,CAAC,EAE/D,MAAM,QAAQ,cAAc,CAEpC,CAAC,CAET,CAEA,KAAK,GAAG,SAAU,IAAM,EACjB,OAAO,SAAS,UAAU,GAAK,OAAO,SAAS,UAAU,KACpD,KAAK,MAAM,EAAI,KACf,WAAW,IAAM,CACb,GAAI,UAAU,KAAK,cAAc,EAAE,OAAS,EAAG,CAC3C,IAAIe,YAAa,UAAU,YAAY,EACnCC,YAAa,UAAU,YAAY,EACnCC,MAAOD,YAAaD,aAAY,EAEpC,UAAU,OAAO,EAAE,SAAS,gBAAgB,EAC5C,UAAU,OAAO,EAAE,IAAI,MAAOE,IAAG,CACrC,MACI,UAAU,OAAO,EAAE,SAAS,gBAAgB,CAEpD,EAAG,GAAG,EAEN,WAAW,IAAM,CACT,UAAU,KAAK,cAAc,EAAE,OAAS,GACxC,UAAU,OAAO,EAAE,IAAI,MAAO,OAAO,CAE7C,EAAG,GAAG,EAGlB,CAAC,CACL,EAEA,oBAAqB,SAAS,OAAQ,CAClC,MAAM,eAAiB,OAAO,KAAK,wBAAwB,EACvD,kBAAoB,eAAe,OACnC,gBAAkB,EAAE,oBAAoB,EAAE,OAE9C,GAAI,kBAAmB,CACnB,MAAM,cAAgB,OAAO,KAAK,4BAA4B,EAC1D,WAAa,EAAE,oBAAoB,EACnC,UAAY,OAAO,KAAK,kBAAkB,EAC9C,IAAI,UAAY,cAAc,OAAO,EAAE,IAAM,cAAc,YAAY,EAEnE,iBACA,MAAM,SAAS,mBAAmB,EAGtC,KAAK,GAAG,SAAWf,QAAU,CACzB,MAAM,WAAa,EAAEA,OAAM,aAAa,EACpC,UAAY,OAAO,KAAK,mCAAmC,EAC3D,UAAY,UAAU,KAAK,MAAM,EACjC,SAAW,UAAU,KAAK,WAAW,EAEzC,GAAI,UAAY,KACZ,GAAI,WAAW,UAAU,EAAI,WACzB,GAAI,CAAC,WAAW,GAAG,UAAU,EAAG,CAC5B,MAAM,OAAS,UAAU,KAAK,2BAA2B,EAAE,KAAK,gBAAgB,EAC5E,SAAW,SAAS,OAAO,eAAe,CAAC,EAC3C,aAAe;AAAA,sDACG,WAAa,UACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iGAQyC,QAAQ,4BAA4B,QAAQ;AAAA,mEAGrF;AAAA,kGAC0C,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEAQtD;AAAA,wDAEpB,WAAW,SAAS,SAAS,EAC7B,WAAW,KAAK,qBAAqB,EAAE,KAAK,YAAY,EACxD,MAAM,SAAS,+BAA+B,EAC9C,OAAO,WAAW,CACtB,MACG,CACH,MAAM,OAAS,UAAU,KAAK,2BAA2B,EAAE,KAAK,gBAAgB,EAChF,WAAW,YAAY,SAAS,EAChC,WAAW,KAAK,qBAAqB,EAAE,MAAM,EAC7C,MAAM,YAAY,+BAA+B,EACjD,OAAO,UAAU,CACrB,CAER,CAAC,CACL,CACJ,EAEA,sBAAuB,SAAS,OAAQ,OAAS,GAAO,CACpD,GAAG,OAAO,CACN,IAAI,aAAe,OAAO,KAAK,uBAAuB,EAClD,UAAY,OAAO,KAAK,kBAAkB,EAC1C,UAAY,OAAO,KAAK,kBAAkB,EAE9C,GAAG,aAAa,OAAS,EAAE,CACvB,IAAI,UAAY,aAAa,KAAK,QAAQ,EAEvC,YAAc,SACb,UAAU,MAAM,eAAe,EAC/B,UAAU,MAAM,eAAe,EAE5B,UAAU,KAAK,SAAS,EAAE,QAAU,UAAU,KAAK,SAAS,EAAE,SAC7D,UAAU,MAAM,cAAe,SAAS,EAAE,MAAM,SAAS,EACzD,UAAU,MAAM,cAAe,SAAS,EAAE,MAAM,SAAS,GAGrE,CAEA,KAAK,GAAG,SAAU,qBAAuBA,QAAU,CAC/C,IAAIgB,WAAY,EAAEhB,OAAM,aAAa,EAAE,KAAK,QAAQ,EAEpD,UAAU,KAAK,gBAAgB,EAAE,OAAO,EACxC,UAAU,MAAM,eAAe,EAC/B,UAAU,MAAM,eAAe,EAE5BgB,aAAc,QAEV,UAAU,KAAKA,UAAS,EAAE,QAAU,UAAU,KAAKA,UAAS,EAAE,SAC7D,UAAU,MAAM,cAAeA,UAAS,EAAE,MAAM,SAAS,EACzD,UAAU,MAAM,cAAeA,UAAS,EAAE,MAAM,SAAS,EAGrE,CAAC,CACL,CACJ,EAEA,oBAAqB,SAAS,OAAQ,CAClC,OAAO,KAAK,CAAClB,OAAO,QAAU,CAC1B,MAAM,OAAS,EAAE,KAAK,EAElB,OAAO,KAAK,gBAAgB,EAAE,OAAS,IACvC,OAAO,SAAS,qBAAqB,EAErC,KAAK,yBAAyB,KAAK,EAE3C,CAAC,CACL,EAEA,yBAA0B,SAAS,MAAM,CACrC,IAAI,OAAS,EAAE,KAAK,EAChB,QAAU,OAAO,KAAK,gBAAgB,EAE1C,WAAW,KAAK,EAEhB,SAAS,YAAa,CACd,OAAO,SAAS,mBAAmB,GACnC,iBAAiB,OAAQ,OAAO,EAGpC,KAAK,GAAG,OAAQ,OAAQ,gBAAgB,EACxC,KAAK,GAAG,eAAgB,OAAQ,wBAAwB,EACxD,KAAK,GAAG,cAAe,OAAQ,uBAAuB,CAC1D,CAEA,SAAS,cAAcE,OAAO,CAC1B,EAAEA,OAAM,OAAO,UAAU,CAAC,EAAE,QAAQ,cAAc,EAAE,KAAK,iBAAkBA,OAAM,MAAM,EAEvF,WAAW,UAAU,CACb,EAAEA,OAAM,OAAO,UAAU,CAAC,EAAE,QAAQ,cAAc,EAAE,SAAS,cAAc,IAC3E,OAAO,MAAM,YAAY,EACzBA,OAAM,OAAO,UAAU,EAE/B,EAAG,GAAG,CACV,CAEA,SAAS,oBAAoBA,OAAO,CAC5BA,OAAM,OAAS,GAAG,YAAY,SAC9B,OAAO,MAAM,YAAY,EAGzBA,OAAM,OAAS,GAAG,YAAY,OAC9B,OAAO,MAAM,WAAW,CAEhC,CAEA,SAAS,kBAAmB,CACxB,QAAQ,KAAK,CAAC,EAAG,MAAQ,CACrB,MAAM,KAAO,EAAE,GAAG,EACZ,GAAK,kBAAkB,KAAK,MAAM,KAAK,OAAO,EAAI,GAAG,CAAC,GAE5D,KAAK,KAAK,KAAM,EAAE,EAElB,MAAM,OAAS,IAAI,GAAG,OAAO,GAAI,CAC7B,KAAM,yBACN,QAAS,KAAK,KAAK,SAAS,EAC5B,MAAO,cACP,WAAY,CACR,SAAU,EACV,SAAU,EACV,UAAW,EACX,YAAa,EACb,GAAI,EACJ,IAAK,EACL,SAAU,EACV,eAAgB,EAChB,eAAgB,EAChB,MAAO,aACX,EACA,OAAQ,CACJ,QAAS,cACT,cAAe,mBACnB,CACJ,CAAC,CACL,CAAC,CACL,CAEA,SAAS,0BAA0B,CAC/B,MAAM,OAAS,OAAO,KAAK,2BAA2B,EAAE,KAAK,gBAAgB,EAEzE,SACA,OAAO,UAAU,EACjB,OAAO,YAAY,yBAAyB,EAEpD,CAEA,SAAS,yBAAyB,CAC9B,MAAM,OAAS,OAAO,KAAK,2BAA2B,EAAE,KAAK,gBAAgB,EAEzE,SACA,OAAO,MAAM,YAAY,EACzB,OAAO,SAAS,yBAAyB,EACzC,OAAO,UAAU,EAEzB,CACJ,EAEA,iBAAkB,SAAS,OAAO,CAC9B,OAAO,UAAY,UAAW,CAC1B,IAAI,aAAgB,OAAO,KAAK,8BAA8B,EAE9D,aAAa,GAAG,QAAUA,QAAU,CAChCA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,SAAS,KAAK,UAAU,IAAI,iBAAiB,EACzC,SAAS,KAAK,UAAU,SAAS,iBAAiB,EAClD,EAAE,4CAA4C,EAAE,SAAS,SAAS,EAGlE,EAAE,qCAAqC,EAAE,SAAS,SAAS,CAEnE,CAAC,EAED,KAAK,GAAG,QAAS,gCAAiC,IAAM,CACpD,MAAM,YAAY,iBAAiB,EACnC,EAAE,wBAAwB,EAAE,YAAY,SAAS,CACrD,CAAC,EAED,KAAK,GAAG,QAAUA,QAAU,CACpB,MAAM,SAAS,iBAAiB,GAC3B,EAAEA,OAAM,MAAM,EAAE,QAAQ,8BAA8B,EAAE,SAAW,GAAO,EAAEA,OAAM,MAAM,EAAE,QAAQ,yBAAyB,EAAE,SAAW,GACzI,MAAM,YAAY,iBAAiB,CAG/C,CAAC,CACL,EAEA,IAAI,cAAgB,SAAS,KAAK,UAAU,SAAS,iBAAiB,EAClE,iBAAmB,EAAE,0CAA0C,EAAE,OAEjE,SAAS,KAAK,UAAU,SAAS,kBAAkB,GAC/C,CAAC,eAAiB,kBAEX,eAAiB,mBAAqB,IAC7C,OAAO,UAAU,EAGrB,OAAO,UAAU,CAEzB,EAEA,mBAAoB,SAAS,OAAQ,CACjC,IAAI,QAAU,OAAO,KAAK,yBAAyB,EAEnD,GAAI,QAAQ,OAAS,EAAG,CACpB,IAAI,mBAAqB,QAAQ,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,EAC9D,mBAAqB,KAAK,MAAM,KAAK,OAAO,EAAI,mBAAmB,MAAM,EACzE,iBAAmB,QAAQ,KAAK,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,EAC7D,iBAAmB,KAAK,MAAM,KAAK,OAAO,EAAI,iBAAiB,MAAM,EAEzE,QAAQ,KAAK,wBAAwB,EAAE,KAAK,mBAAmB,kBAAkB,CAAC,EAClF,QAAQ,KAAK,uBAAuB,EAAE,KAAK,iBAAiB,gBAAgB,CAAC,EAC7E,QAAQ,KAAK,CACjB,CACJ,EAEA,uBAAwB,SAAS,OAAQ,CACrC,IAAI,QAAU,OAAO,KAAK,sBAAsB,EAEhD,GAAI,QAAQ,OAAS,EAAG,CACpB,IAAI,cAAgB,QAAQ,KAAK,eAAe,EAC5C,kBAAqB,KAAK,MAAM,IAAM,cAAgB,GAAG,EACzD,kBAAoB,QAAQ,KAAK,oBAAoB,EACrD,WAAc,SAAS,iBAAiB,EAAI,IAEhD,YAAY,UAAW,CACnB,IAAI,kBAAqB,KAAK,MAAM,KAAK,OAAO,EAAI,kBAAkB,MAAM,EAE5E,QAAQ,KAAK,OAAO,EAAE,KAAK,OAAO,cAAc,KAAK,QAAQ,WAAY,kBAAkB,iBAAiB,CAAC,CAAC,CAClH,EAAG,UAAU,CACjB,CACJ,EAEA,iBAAkB,SAAS,OAAO,CAC9B,IAAI,QAAU,OAAO,KAAK,qBAAqB,EAC3C,UAAY,QAAQ,KAAK,WAAW,EACpC,cAAgB,IAAI,KAAK,SAAS,EAAE,QAAQ,EAC5C,cAAgB,OAAO,UAAU,KAErC,GAAG,QAAQ,OAAS,EAChB,IAAI,kBAAoB,YAAY,UAAW,CAC3C,IAAI,IAAM,IAAI,KAAK,EAAE,QAAQ,EACzB,SAAW,cAAgB,IAE/B,GAAI,SAAW,EACX,cAAc,iBAAiB,EAC/B,QAAQ,OAAO,MACZ,CACH,IAAI,KAAO,KAAK,MAAM,SAAY,KAAoB,EAClD,MAAQ,KAAK,MAAO,UAAY,IAAO,GAAK,GAAK,KAAQ,IAAO,GAAK,GAAG,EACxE,QAAU,KAAK,MAAO,UAAY,IAAO,GAAK,KAAQ,IAAO,GAAG,EAChE,QAAU,KAAK,MAAO,UAAY,IAAO,IAAO,GAAI,EACpD,aAEA,QAAQ,GAAG,oBAAoB,EAC/B,aAAe,4BAA6B,cAAe,mCAAmC,KAAK,SAAU,OAAO,UAAU,MAAO,mEAC7G,MAAM,SAAU,OAAO,UAAU,OAAQ,mEACzC,QAAQ,SAAU,OAAO,UAAU,MAAO,mEAC1C,QAAQ,SAAU,OAAO,UAAU,MAAO,iBAGlE,aAAe,4BAA6B,cAAe,mCAAmC,KAAK,SAAU,OAAO,UAAU,IAAK,mEAC3G,MAAM,SAAU,OAAO,UAAU,KAAM,mEACvC,QAAQ,SAAU,OAAO,UAAU,IAAK,mEACxC,QAAQ,SAAU,OAAO,UAAU,IAAK,iBAGpE,QAAQ,KAAK,YAAY,EACzB,QAAQ,SAAS,MAAM,CAC3B,CACJ,EAAG,GAAI,CAEf,EAEA,oBAAqB,SAAS,OAAO,CACjC,GAAI,EAAE,iBAAiB,EAAE,QAAU,EAAG,OACtC,KAAM,CAAE,IAAK,EAAI,OAEjB,KAAK,cAAgB,SAAS,cAAc,iBAAiB,EAC7D,KAAK,YAAc,SAAS,cAAc,uBAAuB,EACjE,KAAK,YAAc,SAAS,cAAc,uBAAuB,EAEjE,KAAK,iBAAmB,KAAK,cAAc,sBAAsB,EACjE,KAAK,eAAiB,KAAK,YAAY,sBAAsB,EAC7D,KAAK,eAAiB,KAAK,YAAY,sBAAsB,EAE7D,SAAS,iBAAiB,YAAa,GAAK,CACxC,KAAK,QAAU,EAAE,QACjB,KAAK,QAAU,EAAE,OACrB,CAAC,EAED,MAAM,OAAS,IAAM,CACjB,SAAS,IAAI,KAAK,cAAe,CAC7B,EAAG,KAAK,QACR,EAAG,KAAK,OACZ,CAAC,EACD,sBAAsB,MAAM,CAChC,EACA,sBAAsB,MAAM,EAE5B,KAAK,eAAiB,GACtB,KAAK,mBAAqB,SAAS,GAAG,KAAK,YAAa,GAAK,CACzD,MAAO,KAAK,eACZ,OAAQ,KAAK,eACb,KAAM,KAAK,OACX,OAAQ,EACZ,CAAC,EAED,MAAM,iBAAmB,IAAM,CAC3B,KAAK,mBAAmB,KAAK,EAC7B,EAAE,iBAAiB,EAAE,SAAS,kBAAkB,EAAE,YAAY,kBAAkB,CACpF,EAEM,iBAAmB,IAAM,CAC3B,KAAK,mBAAmB,QAAQ,EAChC,EAAE,iBAAiB,EAAE,SAAS,kBAAkB,EAAE,YAAY,kBAAkB,CACpF,EAEkB,SAAS,iBAAiB,oBAAoB,EACtD,QAAQ,IAAM,CAChB,IAAI,cAAc,oBAAoB,IAC1C,GAAG,iBAAiB,aAAc,gBAAgB,EAClD,GAAG,iBAAiB,aAAc,gBAAgB,EACtD,CAAC,EAED,KAAK,gBAAkB,SAAS,GAAG,KAAK,YAAa,GAAK,CACtD,MAAO,GACP,OAAQ,GACR,WAAY,IAAM,CACd,SAAS,GAAG,KAAK,YAAa,GAAK,CAC/B,MAAO,EACP,KAAM,KAAK,MACf,CAAC,CACL,CACJ,CAAC,EAED,EAAE,QAAQ,EAAE,GAAG,YAAa,sBAAwBA,QAAU,CAC1D,IAAI,QAAU,EAAEA,OAAM,aAAa,EAC/B,aAAe,IAAI,MAEvB,aAAa,KAAK,QAAQ,KAAK,YAAY,CAAC,EAC5C,EAAE,cAAc,EAAE,KAAK,aAAa,CAAC,CAAC,CAC1C,CAAC,EAED,EAAE,GAAG,aAAe,SAAS,gBAAiB,CAC1C,IAAI,WAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAC9B,cAAgB,WAAa,EAAE,IAAI,EAAE,OAAO,EAE5C,YAAc,EAAE,QAAQ,EAAE,UAAU,EACpC,eAAiB,YAAc,EAAE,MAAM,EAAE,OAAO,EAEpD,GAAI,gBAAiB,CACjB,IAAI,eAAiB,cAAgB,aAAe,EAAE,IAAI,EAAE,OAAO,EAC/D,SAAW,cAAgB,aAAe,WAAa,eAE3D,OAAO,UAAY,cAAgB,EACvC,CAEA,OAAO,cAAgB,aAAe,WAAa,cACvD,GAGI,EAAE,qBAAqB,EAAE,OAAS,GAAK,EAAE,uBAAuB,EAAE,OAAS,IAC3E,EAAE,MAAM,EAAE,GAAG,gBAAiB,UAAW,CACrC,IAAI,aAAe,IAAI,MACvB,EAAE,oBAAoB,EAAE,KAAK,UAAW,CAChC,EAAE,IAAI,EAAE,aAAa,EAAI,IACzB,aAAa,KAAK,EAAE,IAAI,EAAE,KAAK,YAAY,CAAC,EAC5C,EAAE,cAAc,EAAE,KAAK,aAAa,CAAC,CAAC,EAE9C,CAAC,CACL,CAAC,CAET,EAEA,aAAc,UAAW,CAClB,OAAO,SAAS,OACf,KAAK,kCAAkC,EAEvC,KAAK,GAAG,QAAS,kBAAoBA,QAAU,CAC3CA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEjB,EAAEA,OAAM,aAAa,EAAE,SAAS,YAAY,GAC7C,EAAE,+BAA+B,EAAE,YAAY,WAAW,EAG9D,IAAI,QAAU,EAAEA,OAAM,aAAa,EAC/B,GAAK,QAAQ,KAAK,YAAY,EAC9B,OAAS,QAAQ,KAAK,iBAAiB,EACvC,aAAe,aAAa,QAAQ,cAAc,EAAI,KAAK,MAAM,aAAa,QAAQ,cAAc,CAAC,EAAI,CAAC,EAK9G,GAJI,MAAQ,aAAa,QAAQ,MAAM,EACnC,kBAAoB,EAAE,2BAA2B,EACjD,eAAiB,kBAAkB,KAAK,sBAAsB,EAE9D,QAAQ,SAAS,gBAAgB,EAgB9B,CACH,QACK,YAAY,gBAAgB,EAC5B,KAAK,OAAO,EACZ,KAAK,OAAO,SAAS,GAAG,EAC1B,kBAAkB,OAAS,GACvB,EAAE,kCAAmC,GAAI,IAAI,EAAE,OAAS,IACvD,EAAE,kCAAmC,GAAI,IAAI,EAAE,OAAO,EACzC,EAAE,mCAAmC,EAAE,GAAG,EAC9B,QAAQ,UAAU,EAC/B,OAAO,GAI3B,aAAa,OAAO,MAAO,CAAC,EAC5B,aAAa,QAAQ,eAAgB,KAAK,UAAU,YAAY,CAAC,EAEjE,MAAM,sBAAwB,IAAI,YAAY,mBAAoB,CAAE,QAAS,EAAK,CAAC,EAGnF,GAFA,SAAS,cAAc,qBAAqB,EAEzC,kBAAkB,OAAS,EAG1B,GAFA,aAAe,aAAa,QAAQ,cAAc,EAAI,KAAK,MAAM,aAAa,QAAQ,cAAc,CAAC,EAAI,CAAC,EAEtG,aAAa,OAAS,EAAG,CACzB,MAAM,wBAA0B,IAAI,MAAM,qBAAsB,CAAE,QAAS,EAAK,CAAC,EACjF,SAAS,cAAc,uBAAuB,CAClD,MACI,EAAE,2BAA2B,EACxB,SAAS,UAAU,EACnB,KAAK,mKAEoC,OAAO,SAAS,KAAK,qLAEJ,OAAO,OAAO,cAAc,qDACzE,OAAO,SAAS,iBAAiB,0KAIlD,EAED,EAAE,wBAAwB,EAAE,KAAK,CAG7C,KA3DuC,CAMnC,GALA,QACK,SAAS,gBAAgB,EACzB,KAAK,OAAO,EACZ,KAAK,OAAO,SAAS,KAAK,EAE5B,kBAAkB,OAAS,EAAG,CAC7B,MAAM,SAAW,IAAI,YAAY,kBAAmB,CAAE,OAAQ,CAAE,MAAO,EAAI,QAAS,EAAK,CAAC,EAC1F,SAAS,cAAc,QAAQ,CACnC,CAEA,aAAa,KAAK,MAAM,EACxB,aAAa,QAAQ,eAAgB,KAAK,UAAU,YAAY,CAAC,EAEjE,MAAM,wBAA0B,IAAI,YAAY,qBAAsB,CAAE,QAAS,EAAK,CAAC,EACvF,SAAS,cAAc,uBAAuB,CAClD,CA4CA,EAAE,uBAAuB,EAAE,KAAK,aAAa,MAAM,EACnD,KAAK,sBAAsB,MAAM,CACrC,CAAC,EAET,EAEA,wBAAyB,CACrB,GAAI,CAAC,MAAM,SAAS,wBAAwB,EAAG,OAE/C,MAAM,WAAa,SAAS,cAAc,sCAAsC,EAChF,WAAW,UAAU,OAAO,mBAAmB,EAC/C,MAAM,QAAU,WAAW,aAE3B,SAAS,cAAc,oCAAoC,EAAE,MAAM,YAAY,oBAAqB,QAAU,IAAI,EAClH,WAAW,UAAU,IAAI,mBAAmB,CAChD,EAEA,sBAAuB,SAAS,OAAO,CACnC,IAAI,aAAe,KAAK,MAAM,aAAa,QAAQ,cAAc,CAAC,EAC9D,KAAO,EAAE,0BAA2B,OAAQ,IAAI,EAChDF,OAAQ,cAAc,QAAQ,MAAM,EAEpCA,QAAS,MAAQ,cAAgB,OAElCA,QAAS,EACR,KACK,SAAS,gBAAgB,EACzB,KAAK,OAAO,EACZ,KAAK,OAAO,SAAS,KAAK,EAE/B,KACK,YAAY,gBAAgB,EAC5B,KAAK,OAAO,EACZ,KAAK,OAAO,SAAS,GAAG,EAErC,EAEA,kCAAmC,UAAW,CAC1C,IAAI,aAAe,aAAa,QAAQ,cAAc,EAAI,KAAK,MAAM,aAAa,QAAQ,cAAc,CAAC,EAAI,CAAC,EAC9G,aAAa,QAAQ,eAAgB,KAAK,UAAU,YAAY,CAAC,EAE7D,aAAa,OAAS,IACtB,aAAe,KAAK,MAAM,aAAa,QAAQ,cAAc,CAAC,EAE9D,aAAa,QAAS,QAAW,CAC7B,KAAK,sBAAsB,MAAM,CACrC,CAAC,GAEL,EAAE,uBAAuB,EAAE,KAAK,aAAa,MAAM,CACvD,EAEA,cAAe,UAAY,CACzB,IAAI,yBAA2B,EAAE,+BAA+B,EAC5D,aAAe,EAAE,kBAAkB,EAAE,IAAI,qBAAqB,EAE5D,yBAAyB,QACzB,yBAAyB,KAAK,UAAY,CACtC,IAAI,KAAO,EAAE,IAAI,EACb,sBAAwB,KAAK,KAAK,iBAAiB,EACnD,0BAA4B,IAAI,KAAK,qBAAqB,EAAE,QAAQ,EAEpE,8BAAgC,YAAY,UAAW,CACvD,IAAI,IAAM,IAAI,KAAK,EAAE,QAAQ,EACzB,SAAW,0BAA4B,IAE3C,GAAI,SAAW,EAEX,GADA,cAAc,6BAA6B,EACvC,KAAK,SAAS,iBAAiB,EAC/B,KAAK,OAAO,MAEX,CACD,MAAM,SAAW,KAAK,QAAQ,4BAA4B,EACtD,QAAU,KAAK,QAAQ,yBAAyB,EACpD,QAAQ,GAAG,oBAAoB,EAAI,QAAQ,MAAM,cAAe,SAAS,KAAK,aAAa,CAAC,EAAI,SAAS,OAAO,CACpH,KACG,CACF,IAAI,KAAO,KAAK,MAAM,SAAY,KAAoB,EACnD,MAAQ,IAAI,KAAK,MAAO,UAAY,IAAO,GAAK,GAAK,KAAQ,IAAO,GAAK,GAAG,CAAC,GAAG,MAAM,EAAE,EACxF,QAAU,IAAI,KAAK,MAAO,UAAY,IAAO,GAAK,KAAQ,IAAO,GAAG,CAAC,GAAG,MAAM,EAAE,EAChF,QAAU,IAAI,KAAK,MAAO,UAAY,IAAO,IAAO,GAAI,CAAC,GAAG,MAAM,EAAE,EACpE,aAAe,GAEnB,aAAe,6CAA6C,KAAK,6BAA8B,OAAO,UAAU,KAAM,sGAC1D,MAAM,6BAA8B,OAAO,UAAU,MAAO,sGAC5D,QAAQ,6BAA8B,OAAO,UAAU,KAAM,sGAC7D,QAAQ,6BAA8B,OAAO,UAAU,KAAM,gBAEzH,KAAK,KAAK,YAAY,CAC1B,CACJ,EAAG,GAAI,CACX,CAAC,EAGD,aAAa,QACb,aAAa,KAAK,UAAY,CAC1B,IAAI,KAAO,EAAE,IAAI,EACb,UAAY,KAAK,KAAK,iBAAiB,EACvC,cAAgB,IAAI,KAAK,SAAS,EAAE,QAAQ,EAE5C,kBAAoB,YAAY,UAAW,CAC3C,IAAI,IAAM,IAAI,KAAK,EAAE,QAAQ,EACzB,SAAW,cAAgB,IAE/B,GAAI,SAAW,EACX,cAAc,iBAAiB,EAC3B,KAAK,SAAS,iBAAiB,EAC/B,KAAK,OAAO,EAGZ,KAAK,QAAQ,kBAAkB,EAAE,OAAO,MAEzC,CACH,IAAI,KAAO,KAAK,MAAM,SAAY,KAAoB,EAClD,MAAQ,IAAI,KAAK,MAAO,UAAY,IAAO,GAAK,GAAK,KAAQ,IAAO,GAAK,GAAG,CAAC,GAAG,MAAM,EAAE,EACxF,QAAU,IAAI,KAAK,MAAO,UAAY,IAAO,GAAK,KAAQ,IAAO,GAAG,CAAC,GAAG,MAAM,EAAE,EAChF,QAAU,IAAI,KAAK,MAAO,UAAY,IAAO,IAAO,GAAI,CAAC,GAAG,MAAM,EAAE,EACpE,aAAe,GACf,KAAK,SAAS,yBAAyB,EACpC,EAAE,oBAAoB,EAAE,SAAS,mBAAmB,EACnD,aAAe,6CAA6C,KAAM,OAAO,UAAU,EAAG,qIAC9B,MAAO,OAAO,UAAU,EAAG,qIAC3B,QAAS,OAAO,UAAU,EAAG,qIAC7B,QAAS,OAAO,UAAU,EAAG,0CAErF,aAAe,6CAA6C,IAAI;AAAA,gFACpB,KAAK;AAAA,gFACL,OAAO;AAAA,gFACP,OAAO,gBAGvD,aAAe,6CAA6C,KAAK,6BAA8B,OAAO,UAAU,KAAM,0GAC1D,MAAM,6BAA8B,OAAO,UAAU,MAAO,0GAC5D,QAAQ,6BAA8B,OAAO,UAAU,KAAM,0GAC7D,QAAQ,6BAA8B,OAAO,UAAU,KAAM,gBAE7H,KAAK,KAAK,YAAY,CAC1B,CACJ,EAAG,GAAI,CACX,CAAC,CAET,EAEA,oBAAqB,UAAY,CAC7B,IAAI,aAAe,EAAE,6BAA6B,EAE9C,aAAa,QACb,aAAa,KAAK,UAAY,CAC1B,IAAI,KAAO,EAAE,IAAI,EAEb,oBAAuBmB,OAAS,CAChC,IAAI,UAAYA,MAAK,KAAK,4BAA4B,EAClD,cAAgB,IAAI,KAAK,SAAS,EAAE,QAAQ,EAC5C,cAAgB,OAAO,UAAU,KACjC,IAAM,IAAI,KAAK,EAAE,QAAQ,EACzB,SAAW,cAAgB,IAE/B,GAAI,SAAW,EACX,cAAc,mBAAmB,EAC7BA,MAAK,SAAS,iBAAiB,GAC/BA,MAAK,OAAO,MAEb,CACH,IAAI,KAAO,KAAK,MAAM,SAAY,KAAoB,EAClD,MAAQ,IAAI,KAAK,MAAO,UAAY,IAAO,GAAK,GAAK,KAAQ,IAAO,GAAK,GAAG,CAAC,GAAG,MAAM,EAAE,EACxF,QAAU,IAAI,KAAK,MAAO,UAAY,IAAO,GAAK,KAAQ,IAAO,GAAG,CAAC,GAAG,MAAM,EAAE,EAChF,QAAU,IAAI,KAAK,MAAO,UAAY,IAAO,IAAO,GAAI,CAAC,GAAG,MAAM,EAAE,EACpE,aAAe,GACfA,MAAK,SAAS,sBAAsB,IACpC,aAAe,6CAA6C,KAAK,6BAA8B,OAAO,UAAU,KAAM,0GAC1D,MAAM,6BAA8B,OAAO,UAAU,MAAO,0GAC5D,QAAQ,6BAA8B,OAAO,UAAU,KAAM,0GAC7D,QAAQ,6BAA8B,OAAO,UAAU,KAAM,iBAE7HA,MAAK,KAAK,YAAY,CAC1B,CACJ,EAEA,YAAY,IAAK,CACb,oBAAoB,IAAI,CAC5B,EAAG,GAAI,CACX,CAAC,CAET,EAEA,iBAAkB,UAAW,CACzB,IAAI,iBAAmB,qBACnB,cAAgB,EAAE,gBAAgB,EAElC,iBAAiB,QACjB,cAAc,KAAK,UAAW,CAC1B,IAAI,KAAO,EAAE,IAAI,EACb,OAAS,KAAK,QAAQ,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,KAAK,IAAI,EAEhF,KAAK,KAAK,OAAQ,IAAK,MAAU,EAEjC,cAAc,GAAG,QAAS,SAAS,EAAG,CAClC,EAAE,eAAe,EACjB,IAAI,OAAS,EAAE,KAAK,aAAa,MAAM,CAAC,EAEpC,OAAO,QACP,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAC3B,UAAW,OAAO,OAAO,EAAE,GAC/B,EAAG,GAAG,CAEd,CAAC,CACL,CAAC,CAET,EAEA,oBAAqB,UAAW,CAC5B,KAAK,GAAG,QAAS,iBAAmBjB,QAAU,CAC1CA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,MAAM,SAAS,qBAAqB,CAExC,CAAC,EAED,KAAK,GAAG,QAAS,uBAAyBA,QAAU,CAChDA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,MAAM,YAAY,qBAAqB,CAC3C,CAAC,EAED,KAAK,GAAG,QAAUA,QAAU,CACrB,MAAM,SAAS,qBAAqB,GAC9B,EAAEA,OAAM,MAAM,EAAE,QAAQ,gBAAgB,EAAE,SAAW,GAAO,EAAEA,OAAM,MAAM,EAAE,QAAQ,eAAe,EAAE,SAAW,GACjH,MAAM,YAAY,qBAAqB,CAGnD,CAAC,CACL,EAEA,gBAAiB,UAAW,CACxB,MAAM,aAAe,EAAE,uCAAuC,EACxD,MAAQ,MAAM,SAAS,YAAY,EAEzC,aAAa,QAAQ,CACjB,YAAa,mBACb,aAAc,sBACd,MACA,WAAY,CAAC,KACjB,CAAC,CACL,EAEA,eAAgB,UAAW,CACvB,MAAM,SAAW,EAAE,uBAAuB,EACtC,eAAiB,EAAE,wBAAwB,EAC3C,cAAgB,SAAS,OACzB,IAAM,eAAe,KAAK,KAAK,EAE/B,cAAgB,GAAK,eAAe,IAAI,oBAAoB,GAC5D,eAAe,MAAM,CACjB,aAAc,EACd,eAAgB,EAChB,KAAM,GACN,OAAQ,GACR,SAAU,GACV,YAAa,GACb,cAAe,GACf,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,UACZ,WAAY,CACR,CACI,WAAY,IACZ,SAAU,CACN,aAAc,IACd,eAAgB,GACpB,CACJ,EACA,CACI,WAAY,IACZ,SAAU,CACN,aAAc,EACd,eAAgB,CACpB,CACJ,CACJ,CACJ,CAAC,CAET,EAEA,yBAA0B,UAAW,CACjC,KAAK,GAAG,QAAS,qDAAuDA,QAAU,CAC9E,IAAI,QAAU,EAAEA,OAAM,aAAa,EAC/B,eAAiB,QAAQ,OAAO,EAAE,SAAS,EAC3C,cAAgB,QAAQ,QAAQ,eAAe,EAEhD,QAAQ,SAAS,YAAY,GAC5B,QAAQ,YAAY,YAAY,EAChC,eAAe,QAAQ,MAAM,IAE7B,QAAQ,SAAS,YAAY,EAC7B,eAAe,UAAU,MAAM,EAE3B,cAAc,SAAS,iBAAiB,GACxC,cAAc,KAAK,oBAAoB,EAAE,MAAM,SAAS,EAGpE,CAAC,CACL,EAEA,mBAAoB,UAAU,CACtB,EAAE,sBAAsB,EAAE,OAAS,IACnC,KAAK,GAAG,QAAS,sCAAwCA,QAAU,CAC/D,IAAI,QAAU,EAAEA,OAAM,aAAa,EAAE,OAAO,EAE5C,QAAQ,SAAS,EAAE,YAAY,yBAAyB,EACxD,QAAQ,YAAY,YAAY,EAChC,QAAQ,SAAS,EAAE,KAAK,2BAA2B,EAAE,QAAQ,MAAM,EACnE,QAAQ,KAAK,2BAA2B,EAAE,YAAY,MAAM,CAChE,CAAC,EAED,EAAE,yBAAyB,EAAE,KAAK,CAACF,OAAO,UAAW,CAC7C,EAAE,OAAO,EAAE,SAAS,cAAc,GAClC,EAAE,OAAO,EAAE,KAAK,2BAA2B,EAAE,YAAY,MAAM,CAEvE,CAAC,EAET,EAEA,0BAA2B,UAAW,CAClC,IAAI,YAAc,EAAE,+BAA+B,EAC/C,WAAa,YAAY,KAAK,cAAc,EAC5C,SAAW,YAAY,KAAK,WAAW,EACvC,WAAa,YAAY,KAAK,aAAa,EAE5C,YAAY,OAAS,GACjB,YAAY,IAAI,oBAAoB,GACnC,YAAY,MAAM,CACd,YAAa,GACb,eAAgB,GAChB,SAAU,GACV,SAAU,GACV,aAAc,WACd,eAAgB,EAChB,OAAQ,WACR,KAAM,SACN,SAAU,GACV,cAAe,IACf,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,SAChB,CAAC,CAKb,EAEA,0BAA2B,UAAW,CAClC,IAAI,YAAc,EAAE,+BAA+B,EAC/C,WAAa,YAAY,KAAK,cAAc,EAC5C,SAAW,YAAY,KAAK,WAAW,EACvC,WAAa,YAAY,KAAK,aAAa,EAE5C,YAAY,OAAS,GACjB,YAAY,IAAI,oBAAoB,GACnC,YAAY,MAAM,CACd,eAAgB,GAChB,SAAU,GACV,SAAU,GACV,aAAc,WACd,eAAgB,EAChB,OAAQ,WACR,KAAM,SACN,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,UACZ,WAAY,CAAC,CACL,WAAY,IACZ,SAAU,CACN,aAAc,EACd,eAAgB,CACpB,CACJ,EACA,CACI,WAAY,IACZ,SAAU,CACN,aAAc,EACd,eAAgB,CACpB,CACJ,CACJ,CACJ,CAAC,CAGb,EAEA,eAAgB,UAAW,CACvB,MAAM,SAAW,EAAE,uBAAuB,EACtC,eAAiB,EAAE,wBAAwB,EAC3C,cAAgB,SAAS,OACzB,IAAM,eAAe,KAAK,KAAK,EAE/B,cAAgB,GAAK,eAAe,IAAI,oBAAoB,GAC5D,eAAe,MAAM,CACjB,aAAc,EACd,eAAgB,EAChB,KAAM,GACN,OAAQ,GACR,SAAU,GACV,YAAa,GACb,cAAe,GACf,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,UACZ,WAAY,CACR,CACI,WAAY,IACZ,SAAU,CACN,aAAc,IACd,eAAgB,GACpB,CACJ,EACA,CACI,WAAY,IACZ,SAAU,CACN,aAAc,EACd,eAAgB,CACpB,CACJ,CACJ,CACJ,CAAC,CAET,EAEA,sBAAuB,UAAU,CACzB,EAAE,EAAiC,GACnC,KAAK,GAAG,cAAe,IAAM,CACzB,IAAI,cAAgB,KAAK,UAAU,EAC/B,aAAe,EAAE,sBAAsB,EACvC,aAAe,aAAa,KAAK,2BAA2B,EAC5D,SAEJ,GAAG,aAAa,OAAS,GAAK,CAAC,aAAa,SAAS,YAAY,IAC7D,SAAW,aAAa,OAAO,EAAE,IAAM,IAEnC,cAAgB,UAAU,CAC1B,IAAI,IAAM,aAAa,KAAK,MAAM,EAElC,KAAK,kCAAkC,IAAK,YAAY,CAC5D,CAER,CAAC,EAGL,KAAK,GAAG,QAAS,4BAA8BE,QAAU,CACrD,IAAI,aAAe,EAAEA,OAAM,aAAa,EACpC,IAAM,aAAa,KAAK,MAAM,EAElCA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,KAAK,kCAAkC,IAAK,YAAY,CAC5D,CAAC,CACL,EAEA,kCAAmC,SAAS,IAAK,KAAK,CAClD,EAAE,KAAK,CACH,KAAM,MACN,IACA,WAAY,UAAY,CACpB,KAAK,KAAK,KAAK,KAAK,mBAAmB,CAAC,EACxC,KAAK,SAAS,YAAY,CAG9B,EACA,QAAS,SAAU,KAAM,CACrB,KAAK,6BAA6B,IAAI,CAC1C,EACA,MAAO,SAAU,IAAK,KAAM,CACxB,MAAM,EAAE,UAAU,IAAI,YAAY,EAAE,WAAW,CACnD,EACA,SAAU,UAAY,CAClB,KAAK,KAAK,KAAK,KAAK,gBAAgB,CAAC,EACrC,KAAK,YAAY,YAAY,EAGzB,SAAS,cAAc,qBAAqB,GAC5C,mBAAmB,CAE3B,CACJ,CAAC,CACL,EAEA,6BAA8B,SAAS,KAAK,CACxC,IAAI,gBAAkB,EAAE,wBAAwB,EAC5C,sBAAwB,gBAAgB,KAAK,iBAAiB,EAC9D,kBAAoB,gBAAgB,KAAK,aAAa,EACtD,YAAc,EAAE,IAAI,EAAE,KAAK,wBAAwB,EACnD,kBAAoB,YAAY,KAAK,iBAAiB,EACtD,cAAgB,YAAY,KAAK,aAAa,EAC9C,eAAiB,kBAAkB,SAAS,UAAU,EAE1D,GAAI,eAAe,OAAS,EAAG,CAM3B,GALA,sBAAsB,OAAO,cAAc,EAC3C,kBAAkB,YAAY,aAAa,EAE3C,EAAE,oBAAoB,EAAE,KAAK,CAAC,EAE3B,OAAO,QAAQ,KAAK,CACnB,IAAI,aAAe,EAAE,qBAAqB,EAC1C,KAAK,iCAAiC,YAAY,CACtD,CAEG,OAAO,SAAS,MACf,KAAK,kCAAkC,EAGvC,KAAK,2BAA2B,GAChC,SAAS,WAAW,OAAO,cAAe,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAG,aAAc,cAAc,CAE9H,CACJ,EAEA,yBAA0B,UAAW,CACjC,KAAK,GAAG,QAAS,mCAAqCA,QAAU,CAC5DA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,OAAS,EAAEA,OAAM,aAAa,EAAE,KAAK,gBAAgB,EACrD,QAAU,EAAEA,OAAM,aAAa,EAAE,QAAQ,OAAO,EAEhD,QAAQ,SAAS,iBAAiB,GAClC,KAAK,uBAAuB,QAAS,MAAM,CAEnD,CAAC,EAED,KAAK,GAAG,QAAS,oCAAsCA,QAAU,CAC7DA,OAAM,eAAe,EACrBA,OAAM,gBAAgB,EAEtB,IAAI,QAAU,EAAEA,OAAM,aAAa,EAAE,QAAQ,OAAO,EAEpD,QAAQ,YAAY,iBAAiB,EACrC,QAAQ,KAAK,qBAAqB,EAAE,MAAM,CAC9C,CAAC,EAED,KAAK,GAAG,QAAUA,QAAU,CACrB,EAAE,OAAO,EAAE,SAAS,iBAAiB,GAC/B,EAAEA,OAAM,MAAM,EAAE,QAAQ,kCAAkC,EAAE,SAAW,GAAO,EAAEA,OAAM,MAAM,EAAE,QAAQ,aAAa,EAAE,SAAW,IACjI,EAAE,OAAO,EAAE,YAAY,iBAAiB,EACxC,EAAE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,EAGzD,CAAC,CACL,EAEA,uBAAwB,SAAS,QAAS,OAAQ,CAC9C,IAAI,MAAQ,QAAQ,KAAK,aAAa,EAClC,aAAe,MAAM,KAAK,qBAAqB,EAEnD,EAAE,KAAK,CACH,KAAM,MACN,IAAK,OAAO,OAAO,KAAO,aAAe,OAAS,wBAClD,WAAY,UAAY,CACpB,EAAE,OAAO,EAAE,YAAY,iBAAiB,CAC5C,EACA,QAAS,SAAU,KAAM,CACrB,aAAa,OAAO,IAAI,CAC5B,EACA,MAAO,SAAU,IAAK,KAAM,CACxB,MAAM,EAAE,UAAU,IAAI,YAAY,EAAE,WAAW,CACnD,EACA,SAAU,UAAY,CAClB,QAAQ,SAAS,iBAAiB,CACtC,CACJ,CAAC,CACL,EAEA,8BAA+B,UAAY,CACvC,IAAI,cAAgB,wBAEpB,EAAE,QAAQ,EAAE,GAAG,QAAS,cAAe,SAAU,EAAG,CAChD,EAAE,eAAe,EACjB,EAAE,gBAAgB,EAElB,IAAI,KAAO,EAAE,IAAI,EACb,YAAc,KAAK,KAAK,QAAQ,EAEjC,KAAK,SAAS,kBAAkB,GAC/B,KAAK,KAAK,OAAO,eAAe,YAAY,EAC5C,EAAE,WAAW,EAAE,UAAU,IAAK,UAAY,CACtC,KAAK,SAAS,kBAAkB,EAAE,YAAY,kBAAkB,CACpE,CAAC,IAGD,KAAK,KAAK,OAAO,eAAe,YAAY,EAC5C,EAAE,WAAW,EAAE,QAAQ,IAAK,UAAY,CACpC,KAAK,SAAS,kBAAkB,EAAE,YAAY,kBAAkB,CACpE,CAAC,EAET,CAAC,CACL,EAEA,0BAA2B,UAAW,CAClC,IAAI,aAAe,2BAEnB,EAAE,QAAQ,EAAE,IAAI,yBAA0B,YAAY,EAAE,GAAG,yBAA0B,aAAc,SAAU,EAAG,CAC5G,EAAE,eAAe,EAEjB,IAAI,KAAO,EAAE,IAAI,EAEjB,GAAI,KAAK,KAAK,UAAU,GAAK,WAAY,CACrC,IAAI,YAAc,KAAK,QAAQ,eAAe,EAE3C,YAAY,QAAU,IACrB,YAAc,KAAK,QAAQ,cAAc,GAG7C,IAAI,KAAO,YAAY,KAAK,MAAM,EAC9B,WAAa,KAAK,KAAK,iBAAiB,EAAE,IAAI,EAE7C,aACD,WAAa,KAAK,KAAK,gBAAgB,EAAE,IAAI,GAGjD,IAAI,YAAc,YAAY,KAAK,sBAAsB,EAEtD,YAAY,QAAU,IACrB,YAAc,YAAY,SAAS,UAAU,EAAE,KAAK,sBAAsB,GAG9E,IAAI,SAAW,YAAY,IAAI,EAC1B,WACD,SAAW,GAGZ,SAAS,QAAQ,IAAM,EAClB,OAAO,WAAa,OACpB,KAAK,OAAO,GAEZ,KAAK,qBAAqB,WAAY,SAAU,KAAM,IAAI,EAC1D,KAAK,KAAK,gBAAgB,EAAE,KAAK,GAIrC,KAAK,KAAK,gBAAgB,EAAE,KAAK,0BAA0B,EAAE,KAAK,CAE1E,CACA,MAAO,EACX,CAAC,CACL,EAEA,qBAAsB,SAAS,WAAY,SAAU,QAAS,KAAM,CAChE,EAAE,KAAK,CACH,KAAM,OACN,IAAK,eACL,KAAM,YAAc,SAAW,OAAS,WACxC,SAAU,OAEV,WAAY,UAAW,CACnB,OAAO,WAAW,UAAW,CACzB,QAAQ,KAAK,OAAO,eAAe,OAAQ,KAAK,CACpD,EAAG,GAAG,CACV,EAEA,QAAS,SAAS,IAAK,CAUnB,OATA,OAAO,WAAW,UAAW,CACzB,QAAQ,KAAK,OAAO,eAAe,SAAS,EAC5C,QAAQ,SAAS,UAAU,EAC3B,KAAK,KAAK,gBAAgB,EAAE,KAAK,OAAO,eAAe,aAAa,EAAE,SAAS,UAAU,CAC7F,EAAG,GAAG,EACN,OAAO,WAAW,UAAW,CACzB,QAAQ,KAAK,OAAO,eAAe,SAAW,KAAK,CACvD,EAAG,GAAI,EAEC,OAAO,kBAAkB,KAAM,CACnC,IAAK,OACD,KAAK,WAAW,OAAO,OAAO,IAAI,EAElC,MACJ,IAAK,aACE,OAAO,WAAW,KACjB,QAAQ,QAAS,MAAS,CAClB,OAAO,WAAW,MAAQ,UAI1B,MAAM,SAAS,mBAAmB,EAClC,KAAK,kBAAkB,IAAI,EAEnC,CAAC,EAED,KAAK,WAAW,OAAO,OAAO,IAAI,EAGtC,MACJ,IAAK,eACD,QAAQ,QAAS,MAAS,CACtB,KAAK,gBAAgB,KAAM,EAAG,UAAU,EACxC,KAAK,kBAAkB,IAAI,EAC3B,MAAM,SAAS,kBAAkB,CACrC,CAAC,EAED,KACR,CACJ,EAEA,MAAO,SAAS,IAAK,KAAM,CACvB,MAAM,EAAE,UAAU,IAAI,YAAY,EAAE,WAAW,EAC/C,OAAO,WAAW,UAAW,CACzB,QAAQ,KAAK,OAAO,eAAe,WAAW,CAClD,EAAG,GAAG,CACV,CACJ,CAAC,CACL,EAEA,kBAAmB,UAAW,CAC1B,IAAI,cAAgB,EAAE,uBAAuB,EACzC,WAAa,cAAc,KAAK,sBAAsB,EACtD,KAAO,WAAW,KAAK,MAAM,EAC7B,OAAS,WAAW,KAAK,QAAQ,EAElC,WAAW,OAAS,IACf,WAAW,SAAS,mBAAmB,IACvC,WAAW,MAAM,CACb,KAAM,GACN,OACA,aAAc,EACd,eAAgB,EAChB,YAAa,GACb,SAAU,GACV,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,UACZ,WAAY,CACR,CACI,WAAY,KACZ,SAAU,CACN,aAAc,EACd,eAAgB,EAChB,IACJ,CACJ,EACA,CACI,WAAY,IACZ,SAAU,CACN,aAAc,EACd,eAAgB,EAChB,IACJ,CACJ,CACJ,CACJ,CAAC,EAED,cAAc,KAAK,yBAAyB,EAAE,YAAY,uBAAuB,EAEjF,WAAW,GAAG,cAAe,UAAU,CACnC,WAAW,KAAK,sBAAsB,EAAE,YAAY,SAAS,CACjE,CAAC,GAGb,EAEA,yBAA0B,UAAW,CACjC,KAAK,MAAM,IAAM,CACb,WAAW,IAAM,CACb,MAAM,kBAAoB,EAAE,kCAAkC,EAC1D,mBAAqB,EAAE,iCAAiC,EAE5D,GAAI,mBAAqB,mBAAoB,CACzC,MAAM,cAAgB,kBAAkB,KAAK,EAC7C,mBAAmB,KAAK,aAAa,CACzC,CACJ,EAAG,GAAI,CACX,CAAC,CACL,EAEA,2BAA4B,UAAW,CACnC,GAAG,OAAO,sBAAsB,KAAK,CACjC,IAAI,iBAAmB,SAAS,MAC5B,oBAAsB,OAAO,sBAAsB,KAEvD,OAAO,OAAS,UAAY,CACxB,SAAS,MAAQ,OAAO,sBAAsB,IAClD,EAEA,OAAO,QAAU,UAAY,CACzB,SAAS,MAAQ,gBACrB,CACJ,CACJ,EAEA,iBAAkB,UAAW,CACzB,KAAK,aAAe,SAAS,cAAc,sBAAsB,EACjE,KAAK,oBAAsB,KAAK,aAAa,cAAc,6BAA6B,EACxF,KAAK,wBAA0B,KAAK,aAAa,cAAc,4BAA4B,EAC3F,KAAK,wBAAwB,iBAAiB,QAAS,IAAM,CACzD,SAAS,KAAK,UAAU,OAAO,aAAa,CAChD,CAAC,EAED,KAAK,YAAc,IACnB,KAAK,eAAiB,OAEtB,OAAO,eAAiB,KAAK,cACjC,EAEA,YAAa,SAAS,QAAS,KAAO,KAAK,YAAa,CAChD,KAAK,gBACL,aAAa,KAAK,cAAc,EAGpC,KAAK,oBAAoB,YAAc,QACvC,SAAS,KAAK,UAAU,IAAI,aAAa,EAErC,OACA,KAAK,eAAiB,WAAW,IAAM,CACnC,SAAS,KAAK,UAAU,OAAO,aAAa,CAChD,EAAG,IAAI,EAEf,EAEA,6BAA8B,UAAW,CACrC,MAAM,kBAAoB,SAAS,cAAc,qBAAqB,EAChE,wBAA0B,kBAAkB,WAE5C,cAAgB,IAAM,CACxB,wBAAwB,UAAU,IAAI,gBAAgB,CAC1D,EAEM,cAAgB,IAAM,CACxB,wBAAwB,UAAU,OAAO,gBAAgB,CAC7D,EAEM,kBAAoB,CAAC,QAAS,UAAY,CAC5C,sBAAsB,IAAM,CACxB,wBAAwB,MAAM,YAAY,gBAAiB,OAAO,EAClE,wBAAwB,MAAM,YAAY,gBAAiB,OAAO,CACtE,CAAC,CACL,EAEM,gBAAmB,GAAM,CAC3B,kBAAkB,EAAE,QAAS,EAAE,OAAO,CAC1C,EAEM,iBAAoB,GAAM,CAC5B,kBAAkB,EAAE,QAAS,EAAE,OAAO,EACtC,cAAc,CAClB,EAEM,iBAAmB,GAAK,CAC1B,kBAAkB,EAAE,QAAS,EAAE,OAAO,EACtC,wBAAwB,oBAAoB,YAAa,eAAe,EACxE,cAAc,CAClB,EAEA,kBAAkB,iBAAiB,aAAc,gBAAgB,EACjE,kBAAkB,iBAAiB,aAAc,gBAAgB,EACjE,kBAAkB,iBAAiB,YAAa,eAAe,EAC/D,kBAAkB,iBAAiB,QAAS,aAAa,CAC7D,EACA,8BAA+B,UAAW,CACtC,MAAM,kBAAoB,SAAS,cAAc,sBAAsB,EACvE,GAAI,CAAC,kBAAmB,OAExB,MAAM,wBAA0B,kBAAkB,WAE5C,cAAgB,IAAM,CACxB,wBAAwB,UAAU,IAAI,gBAAgB,CAC1D,EAEM,cAAgB,IAAM,CACxB,wBAAwB,UAAU,OAAO,gBAAgB,CAC7D,EAEM,kBAAoB,CAAC,QAAS,UAAY,CAC5C,sBAAsB,IAAM,CACxB,wBAAwB,MAAM,YAAY,gBAAiB,OAAO,EAClE,wBAAwB,MAAM,YAAY,gBAAiB,OAAO,CACtE,CAAC,CACL,EAEM,gBAAmB,GAAM,CAC3B,kBAAkB,EAAE,QAAS,EAAE,OAAO,CAC1C,EAEM,iBAAoB,GAAM,CAC5B,kBAAkB,EAAE,QAAS,EAAE,OAAO,EACtC,cAAc,CAClB,EAEM,iBAAmB,GAAK,CAC1B,kBAAkB,EAAE,QAAS,EAAE,OAAO,EACtC,wBAAwB,oBAAoB,YAAa,eAAe,EACxE,cAAc,CAClB,EAEA,kBAAkB,iBAAiB,aAAc,gBAAgB,EACjE,kBAAkB,iBAAiB,aAAc,gBAAgB,EACjE,kBAAkB,iBAAiB,YAAa,eAAe,EAC/D,kBAAkB,iBAAiB,QAAS,aAAa,CAC7D,EAEA,qBAAsB,SAAU,QAAS,CACrC,KAAM,CAAE,IAAK,EAAI,OACX,aAAe,KAAK,UAAU,OAAO,GAAG,EAE9C,IAAI,cAAgB,QAAQ,IAAI,CAAC,GAAG,cAAc,kBAAkB,EAEpE,GAAG,CAAC,cAAe,OAEnB,IAAI,YAAc,cAAc,cAAc,yBAAyB,EACnE,YAAc,cAAc,cAAc,yBAAyB,EACnE,WAAa,cAAc,cAAc,wBAAwB,EACjE,UAAY,QAAQ,IAAI,CAAC,GAAG,iBAAiB,yDAAyD,EACtG,aAAe,QAAQ,IAAI,CAAC,GAAG,iBAAiB,oJAAoJ,EACpM,QACA,QACA,YACA,WAAa,KACb,mBAAqB,GAEzB,SAAS,iBAAiB,YAAcA,QAAU,CAC9C,QAAUA,OAAM,QAChB,QAAUA,OAAM,QAChB,WAAaA,OAAM,QACnB,WAAaA,OAAM,OACvB,CAAC,EAED,MAAM,OAAS,IAAM,CACjB,SAAS,IAAI,cAAe,CACxB,EAAG,QACH,EAAG,OACP,CAAC,EAED,sBAAsB,MAAM,CAChC,EAEA,sBAAsB,MAAM,EAE5B,MAAM,UAAY,SAAS,GAAG,CAAC,aAAa,EAAI,GAAK,CACjD,MAAO,IACP,QAAS,EACT,gBAAiB,qBACjB,KAAM,aACN,OAAQ,EACZ,CAAC,EAEK,aAAe,SAAS,GAAG,CAAC,YAAa,UAAU,EAAI,GAAK,CAC9D,QAAS,EACT,KAAM,aACN,OAAQ,EACZ,CAAC,EAEK,iBAAoBA,QAAU,CAChC,UAAU,KAAK,EACf,aAAa,KAAK,EAClB,cAAc,UAAU,IAAI,kBAAkB,EAC9C,cAAc,UAAU,OAAO,kBAAkB,CACrD,EAEM,iBAAoBA,QAAU,CAChC,UAAU,QAAQ,EAClB,aAAa,QAAQ,EACrB,cAAc,UAAU,IAAI,kBAAkB,EAC9C,cAAc,UAAU,OAAO,kBAAkB,CACrD,EAEA,UAAU,QAAQ,SAAW,CACzB,QAAQ,iBAAiB,aAAc,gBAAgB,EACvD,QAAQ,iBAAiB,aAAc,gBAAgB,CAC3D,CAAC,EAED,aAAa,QAAQ,SAAW,CAC5B,QAAQ,iBAAiB,aAAc,gBAAgB,EACvD,QAAQ,iBAAiB,aAAc,gBAAgB,CAC3D,CAAC,CACL,EAEA,0BAA2B,CACvB,MAAM,YAAc,EAAE,2BAA2B,EAC3C,WAAa,EAAE,kCAAkC,EAEvD,YAAY,GAAG,QAAUA,QAAU,CAC/B,MAAM,MAAQ,EAAEA,OAAM,aAAa,EAC7B,MAAQ,MAAM,KAAK,QAAQ,EAAE,CAAC,EAAE,UAChC,YAAc,MAAM,KAAK,mCAAmC,EAAE,KAAK,EAErE,cAAgB,IAAM,aAAe,OACzC,WAAW,SAAS,SAAS,EAC7B,WAAW,KAAK,mBAAmB,EAAE,KAAK,KAAK,EAC/C,WAAW,KAAK,qBAAqB,EAAE,KAAK,WAAW,EACvD,MAAM,SAAS,uBAAuB,EAC1C,CAAC,EAED,KAAK,GAAG,QAAS,kCAAmC,IAAM,CACtD,MAAM,YAAY,uBAAuB,EACzC,WAAW,YAAY,SAAS,CACpC,CAAC,EAED,KAAK,GAAG,QAAUA,QAAU,CACpB,MAAM,SAAS,uBAAuB,GACjC,EAAEA,OAAM,MAAM,EAAE,QAAQ,kCAAkC,EAAE,SAAW,GAAO,EAAEA,OAAM,MAAM,EAAE,QAAQ,2BAA2B,EAAE,SAAW,GAC/I,MAAM,YAAY,uBAAuB,CAGrD,CAAC,CACL,EAEA,qBAAqB,cAAe,YAAa,CAC7C,MAAM,cAAiB,QAAW,CACjB,OAAO,QAAQ,OAAO,EAC9B,UAAU,IAAI,aAAa,CACpC,EAEA,KAAK,mBAAqB,IAAI,iBAAiB,CAAC,aAAc,WAAa,CACvE,aAAa,QAAS,UAAa,CAC/B,GAAI,SAAS,MAAQ,aAAc,CAC/B,GAAI,CAAC,SAAS,OAAO,UAAU,SAAS,YAAY,EAAG,OACvD,cAAc,SAAS,MAAM,CACjC,CACJ,CAAC,CACL,CAAC,EAED,MAAM,eAAiB,IAAI,iBAAkB,cAAiB,CAC1D,aAAa,QAAS,UAAa,CAC3B,SAAS,MAAQ,aACU,CAAC,GAAG,SAAS,UAAU,EAAE,IAAI,MAAQ,KAAK,cAAc,4BAA4B,CAAC,EAC7F,QAAQ,OAAS,CAChC,KAAK,mBAAmB,QAAQ,MAAO,CAAE,UAAW,GAAM,WAAY,EAAK,CAAC,CAChF,CAAC,CAET,CAAC,CACL,CAAC,EAEG,aAAa,eAAe,QAAQ,YAAa,CAAE,QAAS,GAAO,UAAW,EAAK,CAAC,EACpF,cAAc,OAAS,GAAG,cAAc,QAAQ,OAAS,CACrD,MAAM,UAAU,SAAS,YAAY,EACrC,cAAc,KAAK,EAEnB,KAAK,mBAAmB,QAAQ,MAAO,CAAE,UAAW,GAAM,WAAY,EAAK,CAAC,CAEpF,CAAC,CACL,EAEA,uBAAuB,OAAQ,CAC3B,OAAO,QAAQ,OAAS,CACpB,KAAK,mBAAmB,QAAQ,MAAO,CAAE,UAAW,GAAM,WAAY,EAAK,CAAC,CAChF,CAAC,CACL,EAEA,qBAAsB,CACD,EAAE,uBAAuB,EACjC,GAAG,QAAUA,QAAU,CAC5B,SAAS,cAAc,sDAAsD,EAAE,MAAM,CACzF,CAAC,CACL,EAEA,2BAA4B,CACxB,MAAM,YAAc,SAAS,iBAAiB,8CAA8C,EAC5F,IAAI,SAAW,EAEV,YAAY,SACjB,YAAY,QAAQ,YAAc,CAChC,WAAW,UAAU,IAAI,gBAAgB,EAEzC,MAAM,OAAS,WAAW,aACtB,OAAS,WAAU,SAAW,QAElC,WAAW,UAAU,OAAO,gBAAgB,CAC9C,CAAC,EACD,SAAS,KAAK,MAAM,YAAY,uBAAwB,SAAW,GAAK,IAAI,EAChF,EAEA,mCAAoC,CAChC,MAAM,sBAAwB,SAAS,eAAe,iCAAiC,EAEnF,uBAAyB,sBAAsB,UAAU,SAAS,eAAe,GAClD,IAAI,iBAAiB,CAAC,aAAc,WAAa,CAC5E,MAAM,uBAAyB,aAAa,CAAC,EAEzC,uBAAuB,MAAQ,cAC5B,uBAAuB,OAAO,UAAU,SAAS,wBAAwB,IACxD,EAAE,uBAAuB,OAAO,QAAQ,8BAA8B,CAAC,EAAE,KAAK,qBAAqB,EAAE,KAAK,mBAAmB,IAC7H,QAAW,sBAAsB,YAAc,sBAAsB,aACrF,KAAK,qBAAqB,EAAE,uBAAuB,OAAO,QAAQ,8BAA8B,CAAC,CAAC,EAGtG,SAAS,WAAW,EAE5B,CAAC,EAEsB,QAAQ,sBAAuB,CAAE,WAAY,EAAK,CAAC,CAElF,EAEA,wBAAyB,CACrB,GAAI,CAAC,SAAS,cAAc,oBAAoB,EAAG,OACnD,IAAI,gBAAkB,OACtB,MAAM,SAAW,SAAS,iBAAiB,gCAAgC,EACzE,eAAiB,SAAS,OAC1B,mBAAqB,SAAS,CAAC,GAAG,sBAAsB,EAAE,QAAU,EACpE,iBAAmB,SAAS,eAAiB,CAAC,GAAG,sBAAsB,EAAE,QAAU,EACnF,aAAe,SAAS,iBAAiB,qCAAqC,EAAE,CAAC,GAAG,sBAAsB,EAAE,QAAU,EAElH,OAAO,YAAc,kBAAoB,SAAS,gBAAgB,aAAe,cAAc,gBAAgB,MAAM,EAEzH,EAAE,MAAM,EAAE,OAAO,UAAW,CACpB,OAAO,YAAc,kBAAoB,SAAS,gBAAgB,aAAe,aAAc,gBAAgB,MAAM,EAChH,OAAO,aAAe,mBAAmB,GAAG,gBAAgB,MAAM,CAC/E,CAAC,EAED,KAAK,GAAG,QAAS,qBAAuBA,QAAU,CAC9C,IAAI,YAAc,GAClB,MAAM,aAAe,OAAO,WAAa,KAAO,SAAS,iBAAiB,eAAe,EAAE,CAAC,GAAG,sBAAsB,EAAE,OAAS,SAAS,cAAc,sBAAsB,GAAG,sBAAsB,EAAE,QAAU,EAChN,UAAY,SAAS,iBAAiB,qCAAqC,EAAE,CAAC,GAAG,sBAAsB,EAAE,KAAO,GAElH,SAAS,QAAQ,CAAC,QAASF,SAAU,CACjC,GAAI,CAAC,YAAa,OACF,QAAQ,sBAAsB,EAAE,KAEjC,GACX,YAAc,GAEV,iBAAmB,QACf,QAAQ,oBAAsB,MAAM,gBAAgB,QAAQ,mBAAmB,UAAY,YAAY,EAC3G,gBAAkBA,OAAQ,GAAK,QAAQ,oBAAsB,KAAO,gBAAgB,MAAM,EAAI,gBAAgB,MAAM,IAGhH,QAAQ,wBAA0B,MAAM,gBAAgB,QAAQ,uBAAuB,UAAY,YAAY,EACnHA,QAAS,GAAK,QAAQ,wBAA0B,KAAO,gBAAgB,MAAM,EAAI,gBAAgB,MAAM,IAGtG,WAAa,GAAG,gBAAgB,SAAS,eAAiB,CAAC,EAAE,UAAY,YAAY,CAClG,CAAC,CACL,CAAC,EAED,SAAS,gBAAgB,MAAO,OAAQ,CACpC,OAAO,SAAS,CAAC,IAAK,MAAO,SAAU,QAAQ,CAAC,CACpD,CAEA,SAAS,gBAAgB,OAAQ,CAC7B,gBAAkB,OAClB,QAAU,OAAS,SAAS,cAAc,oBAAoB,EAAE,UAAU,OAAO,QAAQ,EAAI,SAAS,cAAc,oBAAoB,EAAE,UAAU,IAAI,QAAQ,CACpK,CACN,EAEA,eAAgB,CACZ,MAAM,QAAU,SAAS,iBAAiB,yBAAyB,EACjE,QAAU,OAAO,WACjB,SAAW,OAAO,YAClB,aAAe,QAAU,KAAO,SAAS,iBAAiB,eAAe,EAAE,CAAC,GAAG,sBAAsB,EAAE,OAAS,SAAS,cAAc,sBAAsB,GAAG,sBAAsB,EAAE,QAAU,EAEhM,SACA,QAAQ,QAAQ,SAAW,CACvB,MAAM,OAAS,QAAQ,cAAc,0BAA0B,EAC7D,WAAa,QAAQ,cAAc,sBAAsB,EACzD,cAAgB,QAAQ,QAAQ,0BAA0B,EAAE,sBAAsB,EAAE,OACpF,aAAe,WAAW,sBAAsB,EAAE,OAEpD,IAAI,IAAM,cAAgB,EACtB,SAAW,KACP,cAAgB,eACZ,SAAW,eAAc,KAAO,SAAW,cAAc,GAC7D,gBAAgB,OAAQ,GAAG,GAG1B,SAAW,KAAO,QAAU,KAC7B,cAAgB,cAChB,gBAAgB,OAAQ,GAAG,GAI/B,QAAQ,UAAU,OAAO,WAAW,EACpC,QAAQ,MAAM,IAAM,GAE5B,CAAC,EAGL,SAAS,gBAAgB,OAAQ,IAAK,CAClC,OAAO,UAAU,IAAI,WAAW,EAChC,OAAO,MAAM,IAAM,GAAG,GAAG,IAC7B,CACJ,EAEA,qBAAsB,CAClB,MAAM,YAAc,EAAE,iCAAiC,EACrD,QAAU,OAAO,WAEf,aACA,YAAY,KAAK,SAASA,OAAO,QAAS,CACtC,MAAM,MAAQ,EAAE,OAAO,EACrB,OAAS,MAAM,QAAQ,0BAA0B,EAE9C,OAAO,SAAS,aAAa,IAE9B,QAAU,KACL,MAAM,SAAS,mBAAmB,IACnC,MAAM,SAAS,mBAAmB,EAClC,qBAAqB,MAAM,GAI3B,MAAM,SAAS,mBAAmB,IAClC,MAAM,MAAM,SAAS,EACrB,MAAM,YAAY,mBAAmB,GAGjD,CAAC,EAGL,SAAS,qBAAqB,QAAS,CACnC,IAAIoB,aAAc,QAAQ,KAAK,oBAAoB,EAC/C,WAAaA,aAAY,KAAK,cAAc,EAC5C,SAAWA,aAAY,KAAK,WAAW,EACvC,WAAaA,aAAY,KAAK,cAAc,EAC5C,WAAaA,aAAY,KAAK,aAAa,EAC3C,aAAeA,aAAY,KAAK,gBAAgB,EAEpDA,aAAY,MAAM,CACd,YAAa,GACb,eAAgB,GAChB,SAAU,GACV,aAAc,EACd,eAAgB,EAChB,OAAQ,aACR,KAAM,WACN,UAAW,OAAO,OAAO,UACzB,UAAW,OAAO,OAAO,UACzB,IAAK,OAAO,UACZ,WACA,CACI,CACI,WAAY,IACZ,SAAU,CACN,OAAQ,WACR,KAAM,SACN,aAAc,WACd,eAAgB,UACpB,CACJ,CACJ,CACJ,CAAC,CACL,CACJ,CACJ,CACJ,GAAG,MAAM",
  "names": ["index", "swipe", "event", "active", "curTabContent", "text", "productAction", "selectedVariant", "inventoryQuantity", "inven_num", "item", "productLine", "itemInArray", "itemStatus", "cart", "height_for", "height_nav", "pos", "className", "self", "productGrid"]
}
