{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_bc/cartridge/client/default/js/accessibilityFocus.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/clientSideValidation.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/tencentCaptcha.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/helper.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/api.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/scrollAnimate.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/base.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/loader.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/productDetailNew.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/detailNew.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/util.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/socialList.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/modalUtilities.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/throttle.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/contactPdp.js","webpack:///(webpack)/buildin/global.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/wishlist.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/pdp/initPdpButton.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/pdp/pdpHelper.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/urlUtil.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","FOCUSABLE","focuseOnModal","selector","focusOnClose","selectorfadeOut","$","on","event","focusableNodes","find","toArray","filter","offsetParent","which","focusedItemIndex","indexOf","document","activeElement","shiftKey","length","focus","preventDefault","body","is","removeAttr","addClass","setTimeout","hasClass","removeClass","iterateFocusOnPage","focusOnFirstElement","each","this","trapFocus","element","trigger","disableBackgroundElements","attr","firstError","scrollAnimate","require","validateForm","config","arguments","undefined","valid","checkValidity","shouldValidate","stopPropagation","stopImmediatePropagation","errorFields","validity","parent","siblings","children","text","invalidateForm","formSubmit","currentError","concat","split","splice","join","push","$form","target","message","additionalData","type","category","country","val","validateFields","closest","clearForm","form","remove","e","setCustomValidity","validationMessage","patternMismatch","data","rangeOverflow","rangeUnderflow","tooLong","tooShort","valueMissing","typeMismatch","parents","eq","skipFocus","center","scrollableParent","invalid","submit","focusOut","validateContactUsPDPform","validateRequesSizePDPform","errorText","validateFindInStorePDPform","validatecontactOrderform","validateHelpWithSizeform","validateLoginOfCanvas","validateRepairFormMyAccount","validateGenericCusForm","validateRegistration","validateOverlayNewsletter","$scrollableParent","$lines","areLinesSelected","privacyGranted","$privacyField","isPrivacyConsentGranted","$errorMsg","fields","buttonClick","noOrientalCheck","validationMsg","test","validateRequestAppointmentform","currentTarget","validateAppointmentformUser","functions","validateContactUsform","el","_successCallback","_failCallback","_captchaID","tencetCaptchaCallback","res","ret","randstr","ticket","errorCode","showCaptcha","captchaID","success","fail","captchaAppID","TencentCaptcha","show","error","querySelector","script","setAttribute","getAttribute","verify","ajax","url","isAlreadyLoaded","initialize","$tencentCaptchaEl","promise","$captchaInput","resolve","reject","invalidateCaptcha","defaultStyle","color","shape","layout","label","tagline","getPaypalButtonStyle","button","JSON","parse","style","getUrlWithCsrfToken","$element","urlInstance","URL","searchParams","append","toString","loader","loaderInstance","showCartErrorHtml","window","scrollTo","createCartBillingFormData","fieldsData","$paypalButton","cartBillingFormData","FormData","cartBillingFields","entries","forEach","entry","_entry","_slicedToArray","field","_typeof","updateOrderData","paypalUrls","hide","location","href","placeOrderStage","err","responseText","errorMsg","transactionExpired","reload","getPurchaseUnits","getPurchaseUnit","then","_ref","purchase_units","getBillingAgreementToken","isCartFlow","createBillingAgreementToken","createBillingAgreementCall","billingToken","createBillingAgreement","contentType","stringify","getOrderDetailsCall","orderId","getOrderDetails","returnFromCart","processData","showCheckoutErrorHtml","textContent","display","finishLpmOrder","details","lpmName","paypalMethodId","getPaypalOrderId","helper","async","responseJSON","id","elementOrPosition","options","position","disableScroll","duration","delay","innerHeight","animate","scrollTop","complete","scrollToPosition","parseInt","jQuery","offset","top","scrollToElement","appendToUrl","getPidValue","getQuantitySelected","updateAttrs","attrs","$productContainer","msgs","attrsWithSwatches","values","attrValue","$attrValue","selected","assistiveSelectedText","images","swatch","resizedUrls","map","idx","$colorText","empty","sizeStartIndex","sizeEndIndex","partOne","substring","partTwo","eIndex","partTwoMod","finalUrl","selectable","processSwatchValues","attributeSelector","prop","numberofsizes","first","size","isOnlyOneLeft","online","hideNotifyMeProduct","processNonSwatchValues","updateVideo","htmlVideo","$videoContainerVertical","$videoContainerHorizontalDesktop","$videoContainerHorizontalMobile","ImageandVideoContainer","replaceWith","desktopVideo","mobileVideo","insertAfter","prepend","handleVariantResponse","response","imagesCanChange","product","variationAttributes","resources","imgs","buildSrcSet","imageSet","prevArrStartIndex","$imageContainer","getElementById","innerHTML","$imagesDivs","singleImage","$ResizedUrlsFirstSource","$ResizedUrlsSecondSource","$image","$picture","$sources","alt","cloneImage","clone","appendTo","imgLength","$imagesOld","j","oldimg","updateImages","large","hasHorizontalVideo","videoH","CLDvideoHURL","videoCloudinaryPdpHtml","hasVerticalVideo","videoV","CLDvideoVURL","price","html","availabilityValue","availabilityMessages","availability","messages","readyToOrder","info_selectforstock","updateAvailability","attributeSelect","selectedValueUrl","container","method","imgVal","enableDisclaimerShipment","pfas","Tag","toUpperCase","spinner","stop","getAddToCartUrl","miniCartReportingUrl","performAddToCartCall","addToCartUrl","pid","pidsObj","childProducts","quantity","onSuccess","onError","customFrom","masterPid","start","generalPid","totPid","skuMaster","productColor","posC","lastIndexOf","charAt","substr","selectorPrefix","isDesktop","addToCartLiveContent","urlAnalytics","dataType","minicartAnalytics","redirectUrl","colorAttribute","dat","sku","stickyBar","attributeSelectLook","colorSelect","productPid","action","SKU","toLowerCase","colorAttributeLook","selectAttribute","available","sizeCode","_idx","$el","performAddToCart","newStickyAddToCartButton","isMobile","isStickyTop","isMicroSticky","resData","reportingURL","performAddToCartLook","addToCart","containerElement","Constructor","containerEl","processInclude","_throttle","_stickyExpanded","_scrollDirection","_userTouching","_scrollAnimation","initPaypalButton","liveChatPositionStikyUpNewPDP","stikyHeight","height","css","bottom","right","isTablet","stickyUp","stickyScrolling","stickyPos","finalPosition","outerHeight","stickyCollapse","imageListHeight","headerHeight","stickyHeight","viewportHeight","setFocusOnFirstRelatives","makeAccessible","isOnLoading","selectedColorInSticky","selectedColor","accessibilityColorName","accessibilityColorValue","newAccessibleAriaLabel","ready","ua","head","history","scrollRestoration","addEventListener","targetId","ariaExpandedValue","targetElement","classList","add","toggleClass","index","width","navigator","userAgent","platform","maxTouchPoints","safari","isSafariBrowser","addToCartHeigth","paypal","getElementsByTagName","item","createElement","onload","src","cartSdkUrl","partnerAttributionId","appendChild","isPdpButtonEnabled","injectAjaxPaypalSDK","slick","infinite","autoplay","focusOnSelect","centerMode","autoplaySpeed","speed","slidesToScroll","slidesToShow","variableWidth","dots","arrow","prevArrow","nextArrow","responsive","breakpoint","settings","eventStart","startY","touches","clientY","eventMove","moveY","trailing","leading","one","overflow","offsetHeight","scrollHeight","documentElement","touchAction","off","removeData","header","sticky","stickyButtonHeight","stickyAddToCart","resume","resumeHeight","stickyTop","getBoundingClientRect","stickyAddToCartBottom","buttonType","_this","accessType","$addToCartButton","lastPosition","interval","setInterval","currentPosition","clearInterval","base","Modal","accessFocus","openFromBuyButton","footerElement","clientHeight","navigationCountry","MutationObserver","WebKitMutationObserver","mutations","className","includes","observe","subtree","attributes","fixLayoutForModalOpen","liveChatDisable","fixLayoutForModalOpenSize","fixLayoutForModalClose","loggedCustomerEmail","uploadFormRequestSize","liveChatEnable","fadeIn","fadeOut","visibility","liveChatPositionMove","topValue","liveChatElement","liveChatPositionReset","closeModal","modalTarget","dataset","closeSizeChartModal","openSizeChartModal","mod","totHeigth","eventCategory","eventAction","selectpicker","updateSizeListLook","checkSize","$size","$RequestSize","updateSizeList","recommendationSlider","arialabelPrev","arialabelNext","arrowNext","arrowPrev","slidesContainer","accessibility","dotsClass","appendDots","removeWishlistinRecommendation","uploadSuccesPage","$selector","succesPageHtml","updatePrice","loadVideo","$videoContainer","videoURL","zoomElement","zoomCounter","imageToZoom","fullResolution","sixeClass","fullResolutionSrcSet","srcset","$zoomedImage","outerContent","innerContent","scrollLeft","show3D","$wannaIframe","isMobileOrTablet","replace","URLSearchParams","search","set","newURL","pathname","pushState","eventLabel","extra","isInSticky","pdpMobileExpanded","modalOffsetTop","$liveChat","modal","onShow","onClose","open","close","analyticsOwn","openSizeSelector","performOpenSizeSelector","contains","dataLayer","openStickySelector","newAriaExpanded","isCurrentModalOpen","isSizeBtn","$modal","originalEvent","openStickySelectorLook","updateAttributesAndDetails","attributesHtml","requestSizeHtml","shortDescription","longDescription","showSpinner","updateAttribute","skuWColor","colorAttr","newPDP","queryString","completeUrl","querySelectorAll","video","endPoint","updateAddToCart","applePayButton","manageApplePayButtonApperance","closeSizeChart","sizeOverlay","mobile","initializeSize","autoSelectForOneSize","addToCartAutomatic","click","positionStickyElement","scrollTimer","closeAllOpenSubwindow","stickyTouched","not","clearTimeout","$sticky","visibleCheckElement","getElementsByClassName","isAddToCartVisible","stickyCanAppear","isFooterVisible","stickyIsOpen","chatBottom","$stickyOverlay","$stickyColor","has","setIdForModalDialogattributes","ariaDescribedBy","ariaLabelledby","$wishListMessage","newAriaDescribedByWish","newAriaLabelledbyWish","setNumberPageCarouselReccomandation","slideTosho","currentSlide","totalSlide","slideCount","loadRecommendations","openRequestSizeFromPlp","openRequestSize","overlay","urlGetParameter","strokeClose","ajaxData","ecomSize","sizehtml","$stickyModal","_this2","labels","innerText","_open","_previouslyFocussedElement","_config","removeEventListener","_onKeyDown","$grecaptcha","dispatchEvent","CustomEvent","detail","submitRequestSize","readyToSubmit","Deferred","trim","isSpam","done","serialize","sizeChart","buttonPressed","buttonID","$prodSizeChart","share","heightPage","heightSocialListLink","copyLink","fixStickybarHidingOnClick","_this3","now","Date","analyticsGoToDetail","iterator","constructor","include","keys","socialNetwork","socialAction","socialBaseLink","socialTarget","observer","attributeFilter","freeGlobal","freeSelf","self","root","Function","_defineProperties","configurable","writable","_toPropertyKey","toPrimitive","TypeError","String","Number","_toPrimitive","custom","a","_classCallCheck","_onKeyDownFn","assign","keyCode","_trapFocus","_registerEvents","apply","isObject","toNumber","nativeMax","Math","max","nativeMin","min","func","wait","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","args","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","global","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","valueOf","isBinary","slice","trimmedEndIndex","reTrimStart","string","reWhitespace","baseGetTag","isObjectLike","getRawTag","objectToString","symToStringTag","objectProto","nativeObjectToString","isOwn","tag","unmasked","debounce","updateSuccessPage","setButtonAttribute","$button","targets","$select","$dropdown","fixLayoutForModalBoutiqueOverlayClose","openContactUsModal","page","submitContactUsModal","productID","information","dimension23","dimension24","openFindInStoreModal","sizeText","preselectSize","selectedSize","sizes","parentElement","selectSizeFindInStore","searchFindInStore","modalClose","selectedCountry","countryCode","analyticsCallStore","productId","filterSize","boutiqueId","boutique","boutiqueName","analyticsBookAppointment","updateListOfStores","listOfStoresHtml","filterListOfStores","submitFindInStoreModal","selectedNation","selectedBoutique","openHelpWithSizeModal","submitHelpWithSizeModal","g","displayMessage","status","statusSuccessClass","statusErrorClass","messageModalDiv","colorId","msg","updateHeartIcon","fill","$heart","getSelectedVariantPid","addToWishlist","pidButton","variantPid","optionId","optionVal","checkProductInWishlist","updateWishlistButton","uuid","removeFromCartUrl","onClick","$btn","isStiky","$sizeBtn","createOrder","$bundleItem","items","$elOption","urlValue","selectedValueId","getOptions","addProductForPDPbtnFlow","cart","Error","pliUUID","actionUrls","removeProductLineItemUrl","onApprove","orderID","$defer","getCartPurchaseUnit","_ref2","parsedPurchaseUnit","amount","paypalOrderID","validateShipping","countryMatchError","billingStep","continueUrl","urlParams","ID","token","orderToken","encodeURIComponent","cartPage","onCancel","Buttons","render","replaceOrAddQueryParam","parameter","regex","RegExp","getQueryParams","qs","decodeURIComponent","params","newUrl"],"mappings":"aACE,IAAIA,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAIAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGAZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOArB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGAzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGAZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,I,+BChFrD,IAAMC,EAAY,wEA4ElBjC,EAAOD,QAAU,CACbmC,cA3EJ,SAAwBC,EAAUC,EAAcC,GAC5CC,EAAEH,GAAUI,GAAG,WAAW,SAASC,GAC/B,IAAIC,EAAiBH,EAAEH,GAAUO,KAAKT,GAAWU,UAAUC,QAAO,SAAClB,GAAQ,OAAOA,EAAEmB,YAAc,IAC5FrB,EAAMgB,EAAMM,MACZC,EAAmBN,EAAeO,QAAQC,SAASC,eACrDV,EAAMW,UAAiC,IAArBJ,IAClBN,EAAeA,EAAeW,OAAS,GAAGC,QAC1Cb,EAAMc,mBAELd,EAAMW,UAAYV,EAAeW,OAAS,GAAKL,IAAqBN,EAAeW,OAAS,GAAa,KAAR5B,IAClGiB,EAAe,GAAGY,QAClBb,EAAMc,kBAEE,KAAR9B,IAEIc,EAAEW,SAASM,MAAMC,GAAG,+CACpBlB,EAAEW,SAASM,MAAME,WAAW,6BAIhCnB,EAAED,GAAiBqB,SAAS,UAC5BC,YAAW,WACPrB,EAAEF,GAAciB,OACpB,GAAG,GACCf,EAAE,QAAQsB,SAAS,eAAetB,EAAE,QAAQuB,YAAY,cACxDvB,EAAE,QAAQsB,SAAS,WAAWtB,EAAE,QAAQuB,YAAY,UAEhE,GACJ,EAgDIC,mBA1CJ,WACIxB,EAAE,QAAQC,GAAG,WAAW,SAASC,GAC7B,IAAIC,EAAiBH,EAAE,QAAQI,KAAKT,GAAWU,UAAUC,QAAO,SAAClB,GAAQ,OAAOA,EAAEmB,YAAc,IAC1FrB,EAAMgB,EAAMM,MACZC,EAAmBN,EAAeO,QAAQC,SAASC,eACrDV,EAAMW,UAAiC,IAArBJ,IAClBN,EAAeA,EAAeW,OAAS,GAAGC,QAC1Cb,EAAMc,mBAELd,EAAMW,UAAYV,EAAeW,OAAS,GAAKL,IAAqBN,EAAeW,OAAS,GAAa,KAAR5B,IAClGiB,EAAe,GAAGY,QAClBb,EAAMc,iBAEd,GACJ,EA6BIS,oBA3BJ,SAA6B5B,GACzBG,EAAEH,GAAUO,KAAKT,GAAW+B,MAAK,WAC7B,QAAI1B,EAAE2B,MAAML,SAAS,YAGjBtB,EAAE2B,MAAMZ,SACD,EAEf,GACJ,EAmBIa,UAhDJ,SAAmBC,GACf7B,EAAE6B,GAASC,QAAQ,UACvB,EA+CIC,0BAlBJ,SAAmClC,GAE/BG,EAAEW,SAASM,MAAMe,KAAK,CAClB,cAAe,OACf,gBAAiB,SAGrBhC,EAAEH,GAAUmC,KAAK,CACb,cAAe,QACf,gBAAiB,SAEzB,E,kCC3EA,IAAIC,GAAa,EAEbC,EAAgBC,EAAQ,GAW5B,SAASC,EAAalC,GAAoB,IAAbmC,EAAMC,UAAAxB,OAAA,QAAAyB,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC/BE,GAAQ,EAEZ,GAAIb,KAAKc,gBAAkBd,KAAKc,gBAAiB,CAEvCJ,EAAOK,iBAAgBF,GAAQ,GACjCtC,IACAA,EAAMc,iBACNd,EAAMyC,kBACNzC,EAAM0C,4BAEVX,GAAa,EACb,IAAIY,EAAc,GAyClB,GAxCA7C,EAAE2B,MAAMvB,KAAK,sDAAsDsB,MAAK,WACpE,IAAIW,EAAOK,gBAAmBL,EAAOK,eAAef,MAGpD,GAAKA,KAAKmB,SAASN,MAoBXxC,EAAE2B,MAAML,SAAS,cACjBtB,EAAE2B,MAAMJ,YAAY,YAChBvB,EAAE2B,MAAML,SAAS,cACjBtB,EAAE2B,MAAMoB,SAASxB,YAAY,aAGjCvB,EAAE2B,MAAMT,GAAG,iBACXlB,EAAE2B,MAAMqB,SAAS,wBAAwB5B,SAAS,gBAC3CpB,EAAE2B,MAAMT,GAAG,SAClBlB,EAAE2B,MAAMqB,SAAS,wBAAwBC,SAAS,oBAAoBC,KAAK,IAE3ElD,EAAE2B,MAAMoB,SAASA,SAASC,SAAS,wBAAwBC,SAAS,oBAAoBC,KAAK,SAvBjG,GAPAV,GAAQ,EACJxC,EAAE2B,MAAMT,GAAG,kBACXlB,EAAE2B,MAAMqB,SAAS,wBAAwBzB,YAAY,gBAGzD4B,EAAexB,KAAMzB,EAAOmC,GAExBA,EAAOe,WACP,IAAK,IAAIlE,KAAOyC,KAAKmB,SACjB,GAAInB,KAAKmB,SAAS5D,GAAM,CACpB,IAAImE,EAAe,GAAHC,OAAM3B,KAAKzD,KAAKqF,MAAM,KAAKC,QAAQ,GAAGC,KAAK,KAAI,KAAAH,OAAIpE,IACxB,IAAvC2D,EAAYnC,QAAQ2C,IACpBR,EAAYa,KAAKL,EAEzB,CAmBhB,IAEIR,EAAY/B,OAAQ,CACpB,IAAI6C,EAAQ3D,EAAEE,EAAM0D,QACpB5D,EAAEW,UAAUmB,QAAQ,kBAAmB,CACnC+B,QAAShB,EAAYY,KAAK,MAC1BK,eAAgB,CACZC,KAAM,mBACNC,SAAUL,EAAM3B,KAAK,mBAAqB2B,EAAM3B,KAAK,QACrDiC,QAASjE,EAAE,kBAAkBkE,MAAMX,MAAM,KAAK,KAG1D,CACJ,CACA,OAAOf,CACX,CAWA,SAAS2B,EAAejE,EAAOmC,GAC3B,IAAIG,GAAQ,EAERtC,IACAA,EAAMc,iBACNd,EAAMyC,kBACNzC,EAAM0C,4BAEVX,GAAa,EACb,IAAIY,EAAc,GA4ClB,GA3CA7C,EAAE2B,MAAMD,MAAK,WACT,IAAIW,IAAUA,EAAOK,gBAAmBL,EAAOK,eAAef,MAG9D,GAAKA,KAAKmB,SAASN,MAqBXxC,EAAE2B,MAAML,SAAS,cACjBtB,EAAE2B,MAAMJ,YAAY,YAChBvB,EAAE2B,MAAML,SAAS,cACjBtB,EAAE2B,MAAMoB,SAASxB,YAAY,aAGjCvB,EAAE2B,MAAMT,GAAG,iBACXlB,EAAE2B,MAAMqB,SAAS,wBAAwB5B,SAAS,gBAC3CpB,EAAE2B,MAAMT,GAAG,SAClBlB,EAAE2B,MAAMqB,SAAS,wBAAwBC,SAAS,oBAAoBC,KAAK,IAE3ElD,EAAE2B,MAAMoB,SAASA,SAASC,SAAS,wBAAwBC,SAAS,oBAAoBC,KAAK,IAGjGlD,EAAE2B,MAAMyC,QAAQ,qBAAqBpC,KAAK,yBAA0B,aAnC9C,CAQtB,GAPAQ,GAAQ,EACJxC,EAAE2B,MAAMT,GAAG,kBACXlB,EAAE2B,MAAMqB,SAAS,wBAAwBzB,YAAY,gBAGzDvB,EAAE2B,MAAMG,QAAQ,UAAW,CAACgB,SAAUnB,KAAKmB,SAAUT,OAAQA,IAEzDA,EAAOe,WACP,IAAK,IAAIlE,KAAOyC,KAAKmB,SACjB,GAAInB,KAAKmB,SAAS5D,GAAM,CACpB,IAAImE,EAAe,GAAHC,OAAM3B,KAAKzD,KAAKqF,MAAM,KAAKC,QAAQ,GAAGC,KAAK,KAAI,KAAAH,OAAIpE,IACxB,IAAvC2D,EAAYnC,QAAQ2C,IACpBR,EAAYa,KAAKL,GAErB,KACJ,CAGRrD,EAAE2B,MAAMyC,QAAQ,qBAAqBpC,KAAK,yBAA0B,UACxE,CAiBJ,IAEIa,EAAY/B,OAAQ,CACpB,IAAI6C,EAAQ3D,EAAE2B,MAAMyC,QAAQ,QAC5BpE,EAAEW,UAAUmB,QAAQ,kBAAmB,CACnC+B,QAAShB,EAAYY,KAAK,MAC1BK,eAAgB,CACZC,KAAM,mBACNC,SAAUL,EAAM3B,KAAK,mBAAqB2B,EAAM3B,KAAK,QACrDiC,QAASjE,EAAE,kBAAkBkE,MAAMX,MAAM,KAAK,KAG1D,CAEA,OAAOf,CACX,CAOA,SAAS6B,EAAUC,GACftE,EAAEsE,GAAMlE,KAAK,sBAAsBmB,YAAY,YAC/CvB,EAAEsE,GAAMlE,KAAK,uBAAuBmB,YAAY,YAChDvB,EAAEsE,GAAMlE,KAAK,wBAAwB6C,SAAS,oBAAoBC,KAAK,IACvElD,EAAE,SAAUsE,GAAMC,QACtB,CACA,SAASpB,EAAgB9D,EAAQmF,GAAc,IAAXnC,EAAMC,UAAAxB,OAAA,QAAAyB,IAAAD,UAAA,GAAAA,UAAA,GAAC,CAAC,EAKxC,GAJIkC,GAAGA,EAAExD,iBACmC,WAAvChB,EAAEX,GAAQ2C,KAAK,qBAChB3C,EAAOoF,kBAAkB,KAExBpF,EAAOyD,SAASN,MAAO,CACxB,IAAIkC,EAAoBrF,EAAOqF,kBAC/B1E,EAAEX,GAAQ+B,SAAS,YACfpB,EAAEX,GAAQiC,SAAS,cACnBtB,EAAEX,GAAQ0D,SAAS3B,SAAS,YAE5B/B,EAAOyD,SAAS6B,iBAAmB3E,EAAEX,GAAQuF,KAAK,sBAClDF,EAAoB1E,EAAEX,GAAQuF,KAAK,qBAEI,UAAvC5E,EAAEX,GAAQ2C,KAAK,sBACf0C,EAAoB1E,EAAEX,GAAQuF,KAAK,oBAElCvF,EAAOyD,SAAS+B,eAAiBxF,EAAOyD,SAASgC,iBAC3C9E,EAAEX,GAAQuF,KAAK,iBACtBF,EAAoB1E,EAAEX,GAAQuF,KAAK,iBAElCvF,EAAOyD,SAASiC,SAAW1F,EAAOyD,SAASkC,WACrChF,EAAEX,GAAQuF,KAAK,iBACtBF,EAAoB1E,EAAEX,GAAQuF,KAAK,gBAEnCvF,EAAOyD,SAASmC,cAAgBjF,EAAEX,GAAQuF,KAAK,mBAC/CF,EAAoB1E,EAAEX,GAAQuF,KAAK,kBAEnCvF,EAAOyD,SAASoC,cAAgBlF,EAAEX,GAAQuF,KAAK,mBAC/CF,EAAoB1E,EAAEX,GAAQuF,KAAK,kBAEI,UAAvC5E,EAAEX,GAAQ2C,KAAK,sBACf0C,EAAoB1E,EAAEX,GAAQuF,KAAK,mBAEvC5E,EAAEX,GAAQ8F,QAAQ,kBAAkB/E,KAAK,wBAAwB6C,SAAS,oBACrEmC,GAAG,GAAGlC,KAAKwB,GAEhB1E,EAAE2B,MAAMyC,QAAQ,qBAAqBpC,KAAK,yBAA0B,IAEhEC,IACKI,EAAOgD,YACRnD,EAAclC,EAAEX,GAAS,CAACiG,QAAQ,EAAMC,iBAAkBlD,EAAOkD,oBAChEvF,EAAEX,IAAWW,EAAE,eAAee,SAEnCkB,GAAa,EAErB,CACJ,CACAvE,EAAOD,QAAU,CACb+H,QAAS,WACLxF,EAAEW,UAAUV,GAAG,UAAW,2BAA2B,SAAUuE,EAAGI,GAC9DzB,EAAexB,KAAM6C,EAAGI,EAAOA,EAAKvC,OAAS,KACjD,IACArC,EAAE,wBAAwBC,GAAG,SAAS,WAClCgC,GAAa,CACjB,GACJ,EAEAwD,OAAQ,WACJzF,EAAE,QAAQC,GAAG,UAAU,SAAUuE,GAC7B,OAAOpC,EAAatE,KAAK6D,KAAM6C,EAAG,CAACpB,YAAY,GACnD,GACJ,EAEAsC,SAAU,WACN1F,EAAE,kCAAkCC,GAAG,YAAY,SAAUC,GACrDF,EAAE2B,MAAML,SAAS,2BAETK,KAAKmB,SAASN,OAIlBxC,EAAE2B,MAAML,SAAS,aACjBtB,EAAE2B,MAAMJ,YAAY,YAEpBvB,EAAE2B,MAAMT,GAAG,SACXlB,EAAE2B,MAAMqB,SAAS,wBAAwBC,SAAS,oBAAoBC,KAAK,IAE3ElD,EAAE2B,MAAMoB,SAASA,SAASC,SAAS,wBAAwBC,SAAS,oBAAoBC,KAAK,MATjGlD,EAAE2B,MAAMG,QAAQ,UAAWH,KAAKmB,UAChCK,EAAexB,KAAMzB,IAW7B,IACAF,EAAEW,UAAUV,GAAG,oBAAqB,UAAU,SAAUC,GAC9CF,EAAE2B,MAAMuC,QAETvC,KAAKmB,SAASN,OAIXxC,EAAE2B,MAAML,SAAS,aACbtB,EAAE2B,MAAML,SAAS,eACjBtB,EAAE2B,MAAMoB,SAASxB,YAAY,YAC7BvB,EAAE2B,MAAMJ,YAAY,aAGhBvB,EAAE2B,MAAMoB,SAASA,SAASE,SAAS,wBAAwBA,SAAS,oBAAoBC,KAAK,IAAIpC,QAEzGd,EAAE2B,MAAMyC,QAAQ,kBAAkBhE,KAAK,yCAAyC8C,KAAK,MAXzFlD,EAAE2B,MAAMG,QAAQ,UAAWH,KAAKmB,UAChCK,EAAexB,KAAMzB,IAa7B,IACAF,EAAE,uBAAuBC,GAAG,gBAAgB,SAAUC,GAC7CyB,KAAKmB,SAASN,OAIXxC,EAAE2B,MAAML,SAAS,aACjBtB,EAAE2B,MAAMJ,YAAY,YAExBvB,EAAE2B,MAAMyC,QAAQ,WAAWpB,SAAS,wBAAwBC,SAAS,oBAAoBC,KAAK,MAN9FlD,EAAE2B,MAAMG,QAAQ,UAAWH,KAAKmB,UAChCK,EAAexB,KAAMzB,GAO7B,GACJ,EAEAyF,yBAA0B,WACtB3F,EAAEW,UAAUV,GAAG,QAAS,oBAAoB,SAASuE,GACjD,OAAOpC,EAAatE,KAAK6D,KAAK2C,KAAME,EACxC,GACJ,EACAoB,0BAA2B,WACvB5F,EAAEW,UAAUV,GAAG,QAAS,0BAA0B,SAASuE,GAOvD,MAN2D,KAAvDxE,EAAE2B,KAAK2C,MAAMlE,KAAK,2BAA2B8D,OAC7ClE,EAAE2B,KAAK2C,MAAMlE,KAAK,2BAA2BsB,MAAK,WAC9C,IAAImE,EAAY7F,EAAE2B,MAAMiD,KAAK,WAC7BjD,KAAK8C,kBAAkBoB,EAC3B,IAEGzD,EAAatE,KAAK6D,KAAK2C,KAAME,EACxC,GACJ,EACAsB,2BAA4B,WACxB9F,EAAEW,UAAUV,GAAG,QAAS,0BAA0B,SAASuE,GACvD,OAAOpC,EAAatE,KAAK6D,KAAK2C,KAAME,EACxC,GACJ,EACAuB,yBAA0B,WACtB/F,EAAEW,UAAUV,GAAG,QAAS,wBAAwB,SAASuE,GACrD,OAAOpC,EAAatE,KAAK6D,KAAK2C,KAAME,EACxC,GACJ,EACAwB,yBAA0B,WACtBhG,EAAEW,UAAUV,GAAG,QAAS,wBAAwB,SAASuE,GACrD,OAAOpC,EAAatE,KAAK6D,KAAK2C,KAAME,EACxC,GACJ,EACAyB,sBAAuB,WACnBjG,EAAEW,UAAUV,GAAG,QAAS,0CAA0C,SAASuE,GACvE,OAAOpC,EAAatE,KAAK6D,KAAK2C,KAAME,EACxC,GACJ,EACA0B,4BAA6B,WACzBlG,EAAEW,UAAUV,GAAG,QAAS,mDAAmD,SAASuE,GAChF,OAAOpC,EAAatE,KAAK6D,KAAK2C,KAAME,EACxC,GACJ,EACA2B,uBAAwB,WACpBnG,EAAEW,UAAUV,GAAG,QAAS,yBAAyB,SAASuE,GACtD,OAAOpC,EAAatE,KAAK6D,KAAK2C,KAAME,EACxC,GACJ,EACA4B,qBAAsB,WAClBpG,EAAEW,UAAUV,GAAG,QAAS,yCAAyC,SAASuE,GACtE,OAAOpC,EAAatE,KAAK6D,KAAK2C,KAAME,EACxC,IAEAxE,EAAEW,UAAUV,GAAG,QAAS,8CAA8C,SAASuE,GAC3E,OAAOpC,EAAatE,KAAK6D,KAAK2C,KAAME,EACxC,GACJ,EACA6B,0BAA2B,WAEvBrG,EAAEW,UAAUV,GAAG,QAAS,iEAAiE,WACrF,IAAI0D,EAAQ3D,EAAE2B,KAAK2C,MACnBtE,EAAE,oBAAqB2D,GAAOvC,SAAS,eAC3C,IAaApB,EAAEW,UAAUV,GAAG,QAAS,qDAAqD,SAASuE,GAClF,IAAIb,EAAQ3D,EAAE2B,KAAK2C,MACfgC,EAAoB3C,EAAMS,QAAQ,oBAOtC,GAJApE,EAAE,sCAAuC2D,GAAOvC,SAAS,iBACvCuC,EAAMrC,SAAS,qCAZZ,SAASqC,GAC9B,IAAI4C,EAASvG,EAAE,kCAAmC2D,GAClD,SAAW4C,EAAOzF,SAAUd,EAAE,uBAAwBuG,GAAQzF,OAClE,CAYwB0F,GAAoB,CACpC,IAAIC,EArBoB,SAAS9C,GACrC,IAAI+C,EAAgB1G,EAAE,oCAAqC2D,GAC3D,SAAW+C,EAAc5F,SAAU4F,EAAcxF,GAAG,YACxD,CAkB6ByF,CAAwBhD,GAC7C,IAAM8C,EAAgB,CAClBjC,EAAExD,iBACFwD,EAAE7B,kBACF6B,EAAE5B,2BACF,IAAIgE,EAAY5G,EAAE,oBAAqB2D,GAIvC,OAHAiD,EAAUrF,YAAY,gBACtBW,EAAc0E,EAAW,CAACrB,iBAAkBe,IAC5ClE,EAAatE,KAAK6D,KAAK2C,KAAME,EAAG,CAACe,iBAAkBe,KAC5C,CACX,CACJ,CAEA,OAAOlE,EAAatE,KAAK6D,KAAK2C,KAAME,EAAG,CAACe,iBAAkBe,GAC9D,GACJ,EACAnC,eAAgB,SAAU0C,EAAQxE,GAC9B,GAAIwE,EACA,OAAO1C,EAAerG,KAAK+I,EAAQ,KAAMxE,EAEjD,EAMAyE,YAAa,WACT9G,EAAE,yDAAyDC,GAAG,SAAS,WAEnEoE,EAAUrE,EAAE2B,MAAMwD,QAAQ,QAC9B,GACJ,EAEA4B,gBAAiB,WACb/G,EAAEW,UAAUV,GAAG,WAAY,mBAAmB,WAC1C,GAAsCsC,MAAlCvC,EAAE2B,MAAMiD,KAAK,kBAAgC,CAC7C,IAAIoC,EAAgBhH,EAAE2B,MAAMiD,KAAK,kBAE7BhG,EAAQoB,EAAE2B,MAAMuC,MAChB1B,EAFQ,yXAEMyE,KAAKrI,GACnBA,GAAmB,KAAVA,IACJ4D,EAQGxC,EAAE2B,MAAML,SAAS,cACjBtB,EAAE2B,MACGJ,YAAY,YACZyB,SAAS,wBAAwBC,SAAS,oBAC1CC,KAAK,IACVvB,KAAK8C,kBAAkB,IACvBzE,EAAE2B,MAAMK,KAAK,oBAAoB,KAbrChC,EAAE2B,MACGP,SAAS,YACT4B,SAAS,wBAAwBC,SAAS,oBAC1CC,KAAK8D,GACVrF,KAAK8C,kBAAkBuC,GACvBhH,EAAE2B,MAAMK,KAAK,oBAAoB,IAY7C,CACJ,GACJ,EACAkF,+BAAgC,WAC5BlH,EAAEW,UAAUV,GAAG,QAAS,+BAA+B,SAASuE,GAE5D,OADAA,EAAE2C,cAAgBnH,EAAE2B,MAAMyC,QAAQ,oBAC3BhC,EAAatE,KAAK6D,KAAK2C,KAAME,EACxC,GACJ,EAEA4C,4BAA6B,WACzBpH,EAAEW,UAAUV,GAAG,QAAS,kDAAkD,SAASuE,GAE/E,OADAA,EAAE2C,cAAgBnH,EAAE2B,MAAMyC,QAAQ,QAC3BhC,EAAatE,KAAK6D,KAAK2C,KAAME,EACxC,GACJ,EACA6C,UAAW,CACPjF,aAAc,SAAUkC,EAAMpE,GAC1BkC,EAAatE,KAAKkC,EAAEsE,GAAOpE,GAAS,KACxC,EACAoH,sBAAuB,WAKnB,OAAOlF,EAAatE,KAAKkC,EAAE,kBAAkBxB,IAAI,GAAkB,KAAM,CAACkE,eAJpD,SAAU6E,GAC5B,OAAkD,IAA3CvH,EAAEuH,GAAIpC,QAAQ,kBAAkBrE,MAC3C,GAGJ,EACAuD,UAAWA,G,8BCncnB,IAAImD,EACAC,EACAC,EAYJ,SAASC,EAAsBC,GACX,IAAZA,EAAIC,KAEJ7H,EAAE,yCAADsD,OAA0CoE,EAAU,uCAAsCxD,IAAI0D,EAAIE,SACnG9H,EAAE,yCAADsD,OAA0CoE,EAAU,sCAAqCxD,IAAI0D,EAAIG,QAE5FH,EAAII,UASFP,GAAeA,IARfD,GACAA,EAAiB,CACbM,QAASF,EAAIE,QACbC,OAAQH,EAAIG,UAQpBN,GAAeA,GAG3B,CAMA,SAASQ,IAA0B,IAAb5F,EAAMC,UAAAxB,OAAA,QAAAyB,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC7BoF,EAAarF,EAAO6F,UACpBV,EAAmBnF,EAAO8F,QAC1BV,EAAgBpF,EAAO+F,KAEvB,IACI,IAAIC,EAAerI,EAAE,2BAA2BkE,MAClC,IAAIoE,eAAeD,EAAcV,EAAuB,CAAC,GAC/DY,MACZ,CAAE,MAAOC,GAZJf,GAAeA,GAcpB,CACH,EAjDA,WAEI,IADuB9G,SAAS8H,cAAc,8BACtB,CACpB,IAAIC,EAAS/H,SAAS8H,cAAc,oCAChCC,GACAA,EAAOC,aAAa,MAAOD,EAAOE,aAAa,YAEvD,CACH,CARD,GAmDAlL,EAAOD,QAAU,CACboL,OAAQ,WACJ7I,EAAE8I,KAAK,CACH/E,KAAM,OACNgF,IAAK/I,EAAE,4CAA4CkE,MACnDU,KAAM,CACFkD,QAAS9H,EAAE,yCAADsD,OAA0CoE,EAAU,uCAAsCxD,MACpG6D,OAAS/H,EAAE,yCAADsD,OAA0CoE,EAAU,sCAAqCxD,OAEvGiE,QAAS,SAASvD,GACVA,EAAKuD,QACDX,GAAkBA,EAAiB5C,IAEnC6C,GAAeA,EAAc7C,GACjC5E,EAAE,yCAADsD,OAA0CoE,EAAU,sCAAqCxD,IAAI,IAEtG,EACAsE,MAAO,SAAS5D,GACR6C,GAAeA,EAAc7C,GACjC5E,EAAE,yCAADsD,OAA0CoE,EAAU,sCAAqCxD,IAAI,GAClG,GAER,EAKA8E,gBAAiB,WACb,OAAOhJ,EAAE,yBAAyBc,MACtC,EAOAmI,WAAY,SAASC,EAAmBC,GACpC,IAAIC,EAAgBpJ,EAAE,uCAAwCkJ,GAC1DE,EAActI,SAAYsI,EAAclF,MACxC+D,EAAY,CACRC,UAAWgB,EAAkBlH,KAAK,WAClCmG,QAAS,SAACvD,GAAI,OAAKuE,EAAQE,QAAQzE,EAAK,EACxCwD,KAAM,WAAF,OAAQe,EAAQG,QAAQ,IAGhCH,EAAQE,SAEhB,EAMAE,kBAAmB,SAASL,GACxBlJ,EAAE,uCAAwCkJ,GAAmBhF,IAAI,GACrE,E,kCChHJ,oHAAMsF,EAAe,CACjBC,MAAO,OACPC,MAAO,OACPC,OAAQ,WACRC,MAAO,SACPC,SAAS,GAQb,SAASC,EAAqBC,GAC1B,IACI,IAAM1H,EAAS0H,EAAOnB,aAAa,6BACnC,GAAIvG,EAEA,OADsB2H,KAAKC,MAAM5H,GACZ6H,KAE7B,CAAE,MAAO1B,GACL,MAAO,CACH0B,MAAOV,EAEf,CACJ,CA2BA,SAASW,EAAoBpB,GACzB,IArBIqB,EAqBEC,EAAc,IAAIC,IAAIvB,GAI5B,OAFAsB,EAAYE,aAAaC,OAAO,cAvB5BJ,EAAWzJ,SAAS8H,cAAc,yBAEH,KAAnB2B,EAASxL,MACdwL,EAASxL,OAGpBwL,EAAWzJ,SAAS8H,cAAc,mCAEsB,KAAxC2B,EAASxB,aAAa,cAC3BwB,EAASxB,aAAa,cAG1B,IAaAyB,EAAYI,UACvB,C,2vCC1DA,IAEIC,EAFiBvI,EAAQ,GAEhBwI,CADUhK,SAAS8H,cAAc,kBAO9C,SAASmC,EAAkB/G,GACvB7D,EAAE,iBAAiBoB,SAAS,YAC5BpB,EAAE,eAAewK,OAAO,+RAADlH,OAKbO,EAAO,qBAGjBgH,OAAOC,SAAS,EAAG,EACvB,CA+FA,SAASC,EAA0BC,EAAYC,GAC3C,IAAIC,EAAsB,IAAIC,SACzBF,IACDA,EAAgBtK,SAAS8H,cAAc,sBAAwB9H,SAAS8H,cAAc,kBAE1F,IAAI2C,EAAoBH,GAAiBjB,KAAKC,MAAMgB,EAAcrC,aAAa,oCAS/E,OAPAvK,OAAOgN,QAAQD,GAAmBE,SAAQ,SAAAC,GACtC,IAAAC,EAAAC,EAAqBF,EAAK,GAAnBrM,EAAGsM,EAAA,GAAEE,EAAKF,EAAA,GACI,WAAjBG,EAAOD,IACPR,EAAoBV,OAAOkB,EAAMxN,KAAM8M,GAAcA,EAAW9L,GAAO8L,EAAW9L,GAAOwM,EAAM9M,MAEvG,IAEOsM,CACX,CAgEAxN,EAAOD,QAAU,CACbmO,gBA5JJ,WAEI,OADAlB,EAAOnC,OACAvI,EAAE8I,KAAK,CACVC,IAAK8B,OAAOgB,WAAWD,gBAAkB,mBACzC7H,KAAM,QACNoE,QAAS,WACLuC,EAAOoB,OACPjB,OAAOkB,SAASC,KAAOnB,OAAOgB,WAAWI,eAC7C,EACAzD,MAAO,SAAC0D,GACJxB,EAAOoB,OACP,IAAItD,EAAQwB,KAAKC,MAAMiC,EAAIC,cAC3BvB,EAAkBpC,EAAM4D,UACpB5D,EAAM6D,oBACNN,SAASO,QAEjB,GAER,EA2IIC,iBApIJ,WACI,OAAOvM,EAAExB,IAAIqM,OAAOgB,WAAWW,iBAC1BC,MAAK,SAAAC,GAAiB,OAAAA,EAAdC,cAAmC,GACpD,EAkIIC,yBA1HJ,WAAsD,IAApBC,EAAUvK,UAAAxB,OAAA,QAAAyB,IAAAD,UAAA,IAAAA,UAAA,GACxC,OAAOtC,EAAExB,IAAIqM,OAAOgB,WAAWiB,4BAA8B,eAAHxJ,OAAkBuJ,IACvEJ,MAAK,SAAC7H,GAAI,OAAKA,CAAI,GAC5B,EAwHImI,2BA9GJ,SAAoCC,GAChC,OAAOhN,EAAE8I,KAAK,CACVC,IAAK8B,OAAOgB,WAAWoB,uBACvBlJ,KAAM,OACNmJ,YAAa,mBACbtI,KAAMoF,KAAKmD,UAAU,CAAEH,kBAE/B,EAwGII,oBAhGJ,SAA6BC,GACzB,OAAOrN,EAAExB,IAAIqM,OAAOgB,WAAWyB,gBAAkB,YAAHhK,OAAe+J,IACxDZ,MAAK,SAAC7H,GAAI,OAAKA,CAAI,GAC5B,EA8FI2I,eA/DJ,WACI7C,EAAOnC,OACP,IAAI2C,EAAsBH,IAE1B,OAAO/K,EAAE8I,KAAK,CACVC,IAAK8B,OAAOgB,WAAW0B,eACvBxJ,KAAM,OACNmJ,aAAa,EACbtI,KAAMsG,EACNsC,aAAa,EACbrF,QAAS,WACLuC,EAAOoB,OACPjB,OAAOkB,SAASC,KAAOnB,OAAOgB,WAAWI,eAC7C,EACAzD,MAAO,SAAU0D,GACbxB,EAAOoB,OACPlB,EAAkBsB,EAAIC,aAC1B,GAER,EA6CIvB,oBACA6C,sBA/KJ,SAA+B5J,GAC3BlD,SAAS8H,cAAc,uBAAuBiF,YAAc,GAC5D/M,SAAS8H,cAAc,kBAAkByB,MAAMyD,QAAU,QACzDhN,SAAS8H,cAAc,uBAAuB+B,OAAO3G,GACrDgH,OAAOC,SAAS,EAAG,EACvB,EA2KI8C,eAxCJ,SAAwBC,GACpB,IAAMC,EAAUnN,SAAS8H,cAAc,sBAAsB7J,MACvDmP,EAAiBpN,SAAS8H,cAAc,mBAAmB7J,MACjE,OAAOoB,EAAE8I,KAAK,CACVC,IAAK8B,OAAOgB,WAAW+B,eACvB7J,KAAM,OACNmJ,YAAa,mBACbtI,KAAMoF,KAAKmD,UAAU,CACjBU,UACAC,UACAC,oBAGZ,EA4BIhD,4BACAiD,iBAxBJ,WACI,IAAMC,EAAS9L,EAAQ,IASvB,OAPcnC,EAAE8I,KAAK,CACjBC,IAAKkF,EAAO9D,oBAAoBU,OAAOgB,WAAWmC,kBAClDjK,KAAM,MACNmJ,YAAa,mBACbgB,OAAO,IACRC,aAAaC,EAGpB,E,6BCjFA1Q,EAAOD,QAbP,SAAgB4Q,GAAiC,IAAdC,EAAOhM,UAAAxB,OAAA,QAAAyB,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC1C,GAAiC,iBAAtB+L,EAAgC,EA7C/C,SAA0BE,GAAwB,IAAdD,EAAOhM,UAAAxB,OAAA,QAAAyB,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACvCgD,EAA4DgJ,EAA5DhJ,OAAQkJ,EAAoDF,EAApDE,cAAeC,EAAqCH,EAArCG,SAAUC,EAA2BJ,EAA3BI,MAAOnJ,EAAoB+I,EAApB/I,iBAC7ClE,YAAW,WACFiE,IACAiJ,GAAY1D,OAAO8D,YAAc,GAGjCH,GACAxO,EAAE,QAAQoB,SAAS,uBAGjBmE,IACFA,EAAmBvF,EAAE,eAGzBA,EAAEuF,GAAkBqJ,QAChB,CAAEC,UAAWN,GAAY,GACzB,CACIE,SAAUA,GAAY,IACtBK,SAAU,WACFN,GACAnN,YAAW,WACPrB,EAAE,QAAQuB,YAAY,sBAC1B,GAAG,IAEX,GAGZ,GAAGmN,GAAS,EAChB,CAkBQK,CADeC,SAASX,GACGC,EAC/B,KAAO,CACH,IAAIzM,EAAUwM,GACRxM,aAAmBoN,SACrBpN,EAAU7B,EAAE6B,IAtGxB,SAAyBA,GAAuB,IAAdyM,EAAOhM,UAAAxB,OAAA,QAAAyB,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACpCgD,EAA2EgJ,EAA3EhJ,OAAQ4J,EAAmEZ,EAAnEY,OAAQnO,EAA2DuN,EAA3DvN,MAAOyN,EAAoDF,EAApDE,cAAeC,EAAqCH,EAArCG,SAAUC,EAA2BJ,EAA3BI,MAAOnJ,EAAoB+I,EAApB/I,iBAC5DlE,YAAW,WACP,GAAIQ,GAAWA,EAAQf,OAAQ,CACvBe,EAAQf,OAAS,IACjBe,EAAUA,EAAQuD,GAAG,IAEzB,IAAImJ,EAAW1M,EAAQqN,SAASC,KAAO,EACjCZ,IACFA,EAAW1M,EAAQkB,SAASjC,OAASe,EAAQkB,SAASmM,SAASC,IAAM,GAGrE7J,IACAiJ,GAAY1D,OAAO8D,YAAc,GAGjCO,IACAX,GAAsBW,GAGtBV,GACAxO,EAAE,QAAQoB,SAAS,uBAGjBmE,IACFA,EAAmBvF,EAAE,eAGzBA,EAAEuF,GAAkBqJ,QAChB,CAAEC,UAAWN,GACb,CACIE,SAAUA,GAAY,IACtBK,SAAU,WACNzN,YAAW,WACHN,GACAc,EAAQd,QAERyN,GACAxO,EAAE,QAAQuB,YAAY,sBAE9B,GAAG,IACP,GAGZ,MACIvB,EAAE,6BAA6BoF,GAAG,GAAGrE,OAE7C,GAAG2N,GAAS,EAChB,CAwDQU,CAAgBvN,EAASyM,EAC7B,CACJ,C,kCC3GA,IAAMe,EAAgBlN,EAAQ,GAAxBkN,YAON,SAASC,IAEL,OADUtP,EAAE,mBAAmB4E,KAAK,MAExC,CAMA,SAAS2K,IACL,MAAO,GACX,CAmKA,SAASC,EAAYC,EAAOC,EAAmBC,GAE3C,IAAIC,EAAoB,CAAC,SAEzBH,EAAMnE,SAAQ,SAAUtJ,GAChB4N,EAAkBlP,QAAQsB,EAAKoM,KAAO,EAvJlD,SAA6BpM,EAAM0N,EAAmBC,GAClD3N,EAAK6N,OAAOvE,SAAQ,SAAUwE,GAC1B,IAAIC,EAAaL,EAAkBtP,KAAK,eAAiB4B,EAAKoM,GAAK,wBAC/D0B,EAAUlR,MAAQ,MAEtB,GAAIkR,EAAUE,SAAU,CACpBD,EAAW3O,SAAS,aACpB2O,EAAW/M,SAAS,4BAA4BE,KAAKyM,EAAKM,uBAM1DjQ,EAAE,sBACGgC,KAAK,MAAO8N,EAAUI,OAAOC,OAAO,GAAGpH,KACvC/G,KAAK,SAAsB8N,EAAUI,OAAOC,OAAO,GAAGC,YANvCC,KAAI,SAACtH,EAAKuH,GACtB,OAAOvH,EAAM,IAAmB,KAAXuH,EAAM,GAAY,GAC3C,IAAG7M,KAAK,MAMZ,IAAI8M,EAAaR,EAAW9M,SAAS,kBACjCsN,GACAA,EAAWhP,YAAY,SAE/B,KAAO,CACHwO,EAAWxO,YAAY,aACvBwO,EAAW/M,SAAS,4BAA4BwN,QAChD,IAAID,EAAaR,EAAW9M,SAAS,kBACjCsN,GACAA,EAAWnP,SAAS,SAE5B,CAEA,GAAI0O,EAAU/G,IAAK,CAEf,IAAIA,EAAM+G,EAAU/G,IAChB0H,EAAiB1H,EAAIrI,QAAQ,UACjC,GAAI+P,EAAiB,EAAG,CACpB,IAAIC,EAAeD,EAAiB,EAChCE,EAAU5H,EAAI6H,UAAU,EAAGF,GAC3BG,EAAU9H,EAAI6H,UAAUF,GACxBI,EAASD,GAAWA,EAAQ/P,OAAS,EAAI+P,EAAQnQ,QAAQ,MAAQ,EACjEqQ,EAAa,GACbD,EAAS,IACTC,EAAaF,EAAQD,UAAUE,IAEnC,IAAIE,EAAWL,EAAUI,EACzBhB,EAAW/N,KAAK,WAAYgP,EAChC,MACIjB,EAAW/N,KAAK,WAAY8N,EAAU/G,IAE9C,MACIgH,EAAW5O,WAAW,YAI1B4O,EAAWxO,YAAY,2BAEvBwO,EAAW3O,SAAS0O,EAAUmB,WAAa,aAAe,eAE9D,GACJ,CA8FYC,CAAoBlP,EAAM0N,EAAmBC,GA7EzD,SAAgC3N,EAAM0N,GAClC,IAAIyB,EAAoB,eAAiBnP,EAAKoM,GAAK,KACnDpM,EAAK6N,OAAOvE,SAAQ,SAAUwE,GAC1B,IAAIC,EAAaL,EACZtP,KAAK+Q,EAAoB,sBAAwBrB,EAAUlR,MAAQ,MAUxE,GATAmR,EACKqB,KAAK,YAAY,GACjB7P,YAAY,aACZA,YAAY,mBAEZuO,EAAUmB,aACXlB,EAAWqB,KAAK,YAAY,GAC5BrB,EAAW3O,SAAS,oBAEpB0O,EAAUE,SAAU,CACpB,IAAIqB,EAAgBrR,EAAE,sBAAsB4E,KAAK,iBACjD,GAAIyM,GAA6C,IAA5BrC,SAASqC,IAAwBrR,EAAE,uBAAyBA,EAAE,sBAAsBiD,YAAcjD,EAAE,sBAAsBiD,WAAWqO,QAAS,CAC/JvB,EAAWnL,KAAK,QAASkL,EAAU/G,KACnCgH,EAAW3O,SAAS,aACpB,IAAImQ,EAAOvR,EAAE,4BAA4Bc,OAAS,EAC5Cd,EAAE,4BAA4BI,KAAK,kBAAkB8C,OACrDlD,EAAE,+BAA+BI,KAAK,kBAAkB8C,OAE9DlD,EAAE,yBAAyBoB,SAAS,UACpCpB,EAAE,0BAA0BuB,YAAY,UACxCvB,EAAE,0BAA0BkD,KAAKqO,GAEjCvR,EAAE,gCAAgCoB,SAAS,UAC3CpB,EAAE,iCAAiCuB,YAAY,UAC/CvB,EAAE,iCAAiCkD,KAAKqO,EAC5C,MACIxB,EAAW3O,SAAS,YAE5B,MACI2O,EAAWnL,KAAK,QAASkL,EAAU/G,KAEvCgH,EAAW3P,KAAK,4BAA4BgB,SAAS,UACrD2O,EAAWxO,YAAY,kBACvBwO,EAAW3O,SAAS,UACpB2O,EAAWhN,SAAS3C,KAAK,0BAA0BgB,SAAS,UAExD0O,EAAU0B,eACVzB,EAAW3P,KAAK,4BAA4BmB,YAAY,UAExDuO,EAAU2B,OACV1B,EAAWhN,OAAO,sBAAsBxB,YAAY,UAEpDwO,EAAWhN,OAAO,sBAAsB3B,SAAS,UAGhD0O,EAAUmB,aACXlB,EAAWxO,YAAY,UACvBwO,EAAW3O,SAAS,kBACpB2O,EAAWhN,SAAS3C,KAAK,0BAA0BmB,YAAY,UAC/DwO,EAAWhN,SAAS3C,KAAK,0BAA0B2C,SAASxB,YAAY,WAGxEuO,EAAU4B,qBACV3B,EAAWhN,SAAS3C,KAAK,0BAA0B2C,SAAS3B,SAAS,SAE7E,GACJ,CAkBYuQ,CAAuB3P,EAAM0N,EAErC,GACJ,CAuFA,SAASkC,EAAYlC,EAAmBmC,EAAWtD,GAC/C,IAAIuD,EAA0BpC,EAAkBtP,KAAK,kBAAkBA,KAAK,4CACxE2R,EAAmCrC,EAAkBtP,KAAK,qCAC1D4R,EAAkCtC,EAAkBtP,KAAK,oCACzD6R,EAAyBvC,EAAkBtP,KAAK,kBACpD,GAAI0R,EAAwBhR,OAAS,EACjC,GAAiB,aAAbyN,EACAuD,EAAwBI,YAAYL,OACjC,CACHnC,EAAkBtP,KAAK,oCAAoCmE,SAC3D,IAAI4N,EAAenS,EAAE6R,GAAWvR,OAAO,qCACnC8R,EAAcpS,EAAE6R,GAAWvR,OAAO,oCACtCN,EAAEiS,GAAwBzH,OAAO4H,GACjCpS,EAAEmS,GAAcE,YAAY,gBAChC,MACG,GAAIN,EAAiCjR,OAAS,GAAKkR,EAAgClR,OAAS,EAC/F,GAAiB,aAAbyN,EACAmB,EAAkBtP,KAAK,qCAAqCmE,SAC5DmL,EAAkBtP,KAAK,oCAAoCmE,SAC3DvE,EAAEiS,GAAwBK,QAAQT,OAC/B,CACCM,EAAenS,EAAE6R,GAAWvR,OAAO,qCACnC8R,EAAcpS,EAAE6R,GAAWvR,OAAO,oCACtCyR,EAAiCG,YAAYC,GAC7CH,EAAgCE,YAAYE,EAChD,MAEA,GAAiB,aAAb7D,EACAvO,EAAEiS,GAAwBK,QAAQT,OAC/B,CACCM,EAAenS,EAAE6R,GAAWvR,OAAO,qCACnC8R,EAAcpS,EAAE6R,GAAWvR,OAAO,oCACtCN,EAAEiS,GAAwBzH,OAAO4H,GACjCpS,EAAEmS,GAAcE,YAAY,gBAChC,CAER,CAmBA,SAASE,EAAsBC,EAAU9C,EAAmB+C,IACpDD,EAASE,QAAQC,qBACjBnD,EAAYgD,EAASE,QAAQC,oBAAqBjD,EAAmB8C,EAASI,WAG9EH,MAjHR,SAAsBI,EAAMnD,GAUxB,IATA,IAAMoD,EAAc,SAACC,EAAUC,GAC3B,OAAOD,EAAS1C,KAAI,SAACtH,EAAKuH,GACtB,OAAOvH,EAAM,IAAuC,KAA/BuH,EAAM,EAAI0C,GAA4B,GAC/D,IAAGvP,KAAK,IACZ,EACIwP,EAAkBvD,EAAkBtP,KAAK,kBAIpCzC,GADWgD,SAASuS,eAAe,kBAAkBC,UACjD,GAAGxV,EAAIkV,EAAK/R,OAAQnD,IAAK,CAClC,IAAIyV,EAAcH,EAAgB7S,KAAK,qBACnCiT,EAAcD,EAAY5U,IAAIb,GAC9B2V,EAA2BT,EAAKlV,GAAGyS,YAAa5M,OAAO,EAAG,GAC1D+P,EAA4BV,EAAKlV,GAAGyS,YACxC,GAAIiD,EAAa,CACb,IACIG,GADAC,EAAWzT,EAAEqT,GAAajT,KAAK,YACbA,KAAK,QACvBsT,EAAWD,EAASrT,KAAK,WACpBgF,GAAG,GAAGpD,KAAK,SAAU8Q,EAAYQ,EAAyB,IACnEI,EAAStO,GAAG,GAAGpD,KAAK,SAAU8Q,EAAYS,EAA0B,IACpEC,EAAOxR,KAAK,MAAO6Q,EAAKlV,GAAGoL,KAC3ByK,EAAOxR,KAAK,MAAO6Q,EAAKlV,GAAGgW,IAAM,gBAAkBhW,GAC/C6V,EAAOlS,SAAS,aAChBkS,EAAOjS,YAAY,WAE3B,KAAO,CACH,IAIIkS,EAEAC,EANAE,EAAaR,EAAY5U,IAAIb,EAAI,GACrCqC,EAAE4T,GAAYC,QAAQC,SAASb,GAE/BW,GADAR,EAAcH,EAAgB7S,KAAK,sBACV5B,IAAIb,GAEzB6V,GADAC,EAAWzT,EAAE4T,GAAYxT,KAAK,YACZA,KAAK,QACvBsT,EAAWD,EAASrT,KAAK,WACpBgF,GAAG,GAAGpD,KAAK,SAAU8Q,EAAYQ,EAAyB,IACnEI,EAAStO,GAAG,GAAGpD,KAAK,SAAU8Q,EAAYS,EAA0B,IACpEC,EAAOxR,KAAK,MAAO6Q,EAAKlV,GAAGoL,KAC3ByK,EAAOxR,KAAK,MAAO6Q,EAAKlV,GAAGgW,IAAM,gBAAkBhW,GAC/C6V,EAAOlS,SAAS,aAChBkS,EAAOjS,YAAY,WAE3B,CACJ,CACA,IAAIwS,EAAYd,EAAgB7S,KAAK,qBAAqBU,OAC1D,GAAI+R,EAAK/R,OAASiT,EAEd,IADA,IAAIC,EAAaf,EAAgB7S,KAAK,qBAC7B6T,EAAKF,EAAY,EAAIE,EAAKpB,EAAK/R,OAAS,EAAImT,IAAK,CACtD,IAAIC,EAASF,EAAWxV,IAAIyV,GAC5BjU,EAAEkU,GAAQ3P,QACd,CAER,CAiEQ4P,CADuB3B,EAASE,QAAQxC,OAAOkE,MAChB1E,GAC3B8C,EAASE,QAAQ2B,mBACb7B,EAASE,QAAQ4B,OAAOC,eAAiBvU,EAAE,iEAAiEgC,KAAK,QACjH4P,EAAYlC,EAAmB8C,EAASE,QAAQ8B,uBAAwB,cAErEhC,EAASE,QAAQ+B,iBACpBjC,EAASE,QAAQgC,OAAOC,eAAiB3U,EAAE,2CAA2CgC,KAAK,QAC3F4P,EAAYlC,EAAmB8C,EAASE,QAAQ8B,uBAAwB,aAG5E9E,EAAkBtP,KAAK,oCAAoCmE,SAC3DmL,EAAkBtP,KAAK,qCAAqCmE,SAC5DmL,EAAkBtP,KAAK,oCAAoCmE,YAK9CvE,EAAE,uBAAwB0P,GAAmB5O,OAC5Dd,EAAE,uBAAwB0P,GAC1B1P,EAAE,yBACOkS,YAAYM,EAASE,QAAQkC,MAAMC,MAjKtD,SAA4BrC,EAAU9C,GAElC,IAAIoF,EAAoB,GACpBC,EAAuBvC,EAASE,QAAQsC,aAAaC,SACpDzC,EAASE,QAAQwC,aAGlBH,EAAqBzJ,SAAQ,SAAUzH,GACnCiR,GAAqB,YAAcjR,EAAU,aACjD,IAJAiR,EAAoB,YAActC,EAASI,UAAUuC,oBAAsB,cAO/EnV,EAAE0P,GAAmB5N,QAAQ,6BAA8B,CACvD4Q,QAASF,EAASE,QAClBhD,kBAAmBA,EACnB7L,QAASiR,EACTlC,UAAWJ,EAASI,WAE5B,CAiJIwC,CAAmB5C,EAAU9C,GAG7B1P,EAAE,oFAAoF8B,QAAQ,0BAA2B,CACrH4Q,QAASF,EAASE,QAAShD,kBAAmBA,IAC/C5N,QAAQ,uBAAwB0Q,EAASE,QAChD,CASA,SAAS2C,EAAgBC,EAAkB5F,EAAmB+C,GACtD6C,IACAtV,EAAE,QAAQ8B,QAAQ,gCACd,CAAEiH,IAAKuM,EAAkBC,UAAW7F,IAExC1P,EAAE8I,KAAK,CACHC,IAAKuM,EACLE,OAAQ,MACRrN,QAAS,SAAUvD,GACf,GAAI6N,EAAiB,CACjB,IAAIgD,EAASzV,EAAE,gBAAgBkE,MACTwL,EAAkBtP,KAAK,kBAC7BA,KAAK,qBAAqBA,KAAK,kBAAkB4B,KAAK,SAAUyT,EACpF,CAGI7Q,EAAK8N,QAAQgD,0BAA4B1V,EAAE,2BAA2Bc,OACtEd,EAAE,2BAA2BuB,YAAY,UACjCvB,EAAE,2BAA2BsB,SAAS,WAC9CtB,EAAE,2BAA2BoB,SAAS,UAItCwD,EAAK8N,QAAQiD,MAAQ3V,EAAE,mBAAmBc,OAC1Cd,EAAE,mBAAmBuB,YAAY,UACzBvB,EAAE,mBAAmBsB,SAAS,WACtCtB,EAAE,mBAAmBoB,SAAS,UAI9BwD,EAAK8N,QAAQkD,KACb5V,EAAE,yBAA0B0P,GAAmBxM,KAAK0B,EAAK8N,QAAQkD,IAAIC,eACrE7V,EAAE,oBAAqB0P,GAAmB1N,KAAK,UAAU,KAEzDhC,EAAE,oBAAqB0P,GAAmB1N,KAAK,UAAU,GACzDhC,EAAE,yBAA0B0P,GAAmBxM,KAAK,KAExDqP,EAAsB3N,EAAM8K,EAAmB+C,GAC/CzS,EAAE,QAAQ8B,QAAQ,+BACd,CAAE8C,KAAMA,EAAM2Q,UAAW7F,IAC7B1P,EAAE8V,UAAUC,MAChB,EACAvN,MAAO,WACHxI,EAAE8V,UAAUC,MAChB,IAGZ,CA8EA,SAASC,IACL,OAAOhW,EAAE,oBAAoBkE,KACjC,CAOA,SAAS+R,EAAqBlN,GACtBA,GACA/I,EAAE8I,KAAK,CACHC,IAAKA,EACLyM,OAAQ,MACRrN,QAAS,WACL,EAEJK,MAAO,WACH,GAIhB,CAEA,SAAS0N,EAAqBC,EAAcC,EAAKC,EAASC,EAAeC,EAAUC,EAAWC,EAASC,GACnG,IAAI9R,EAAO,CACPwR,IAAKA,EACLC,QAASA,EACTC,cAAeA,EACfC,SAAUA,GAEVI,EAAY3W,EAAE,kBAAkBkE,MACpC,GAAIiS,EAAc,CACdnW,EAAE8V,UAAUc,QACZ5W,EAAE8I,KAAK,CACHC,IAAKoN,EACLX,OAAQ,OACR5Q,KAAMA,EACNuD,QAAS,SAAUvD,GAGf,GADA5E,EAAE8V,UAAUC,OACK,MAAbS,EAAmB,CAInB,IACIK,EADAC,EAASV,EAEb,GAAIxR,EAAKmS,UACLF,EAAajS,EAAKmS,eACf,GAAIJ,EACPE,EAAaF,OACV,GAAI/R,EAAKoS,aAAc,CAC1B,IAAIzT,EAAQuT,EAAOvT,MAAMqB,EAAKoS,cAC1BzT,IACAsT,EAAatT,EAAM,GAE3B,CACA,IAAMsT,EAAY,CACd,IAAII,EAAOH,EAAOI,YAAY,KACE,MAA5BJ,EAAOK,OAAOF,EAAO,KACrBA,GAAc,GAGdJ,GADU,IAAVI,EACaH,EAAOM,OAAO,EAAGH,GAEjBH,CAErB,CAGA,IAAIO,EAAiB,iFACjB3E,EAAU1S,EAAEqX,EAAiBR,GAC7B7W,EAAE,SAAS4E,KAAK,YAAgE,IAAnD5E,EAAE,SAAS4E,KAAK,UAAUlE,QAAQ,aAC3DgS,EAAQ5R,OAAS,IACjB4R,EAAU1S,EAAEA,EAAEqX,EAAiBR,EAAa,gBAAkBjS,EAAKoS,aAAe,MAAM,KAG5FtE,EAAQ5R,QAAU,IAClB4R,EAAU1S,EAAEqX,EAAiBP,IAE7BpE,EAAQ5R,QAAU,IAClB4R,EAAU1S,EAAEqX,EAAiBP,EAAOlG,UAAU,EAAGkG,EAAOhW,OAAS,KAEjE4R,EAAQ5R,QAAU,IAClB4R,EAAU1S,EAAEqX,EAAiBR,EAAa,MAG1CnE,EAAQ5R,OAAS,IAEb4R,EADA7H,OAAOyM,UACGtX,EAAE0S,EAAQ,IACP1S,EAAE0S,EAAQ,KAG3BgE,GACAhE,EAAQ1Q,KAAK,cAAe0U,GAGhC1W,EAAE,QAAQ8B,QAAQ,0BAA2B4Q,GAI7C1S,EAAE,wBAAwBkD,KAAK0B,EAAK2S,sBAEpCf,EAAU5R,EACd,CACJ,EACA4D,MAAO,WACHxI,EAAE8V,UAAUC,OACG,MAAXU,GACAA,GAER,IAGJ,IAAIe,EAAexX,EAAE,8BAA8BkE,MAInDsT,EAAenI,EAAYmI,EAHX,CACZpB,IAAKA,IAGTpW,EAAE8V,UAAUc,QACZ5W,EAAE8I,KAAK,CACHC,IAAKyO,EACLzT,KAAM,MACN0T,SAAU,OACVtP,QAAS,SAAUvD,GACf5E,EAAE,0BAA0BwK,OAAO5F,EAAK8S,mBACxC1X,EAAE8V,UAAUC,MAChB,EACAvN,MAAO,SAAU0D,GACTA,EAAIiC,aAAawJ,YACjB9M,OAAOkB,SAASC,KAAOE,EAAIiC,aAAawJ,YAExC3X,EAAE8V,UAAUC,MAEpB,GAER,CACJ,CAEArY,EAAOD,QAAU,CACb4X,gBAAiBA,EAEjBuC,eAAgB,WACZ5X,EAAEW,UAAUV,GAAG,QAAS,8CAA8C,SAAUuE,GAI5E,GAFAxE,EAAE,kCAAkCgC,KAAK,aAAchC,EAAE2B,MAAMK,KAAK,8BAEhEhC,EAAE2B,MAAML,SAAS,iCA7LjC,SAA6BgU,GACzB,GAAIA,EAAkB,CAClB,IAAIvM,EAAM/I,EAAE,+BAA+B4E,KAAK,QAEhD5E,EAAE8I,KAAK,CACHC,IAAKuM,EACLE,OAAQ,MACRrN,QAAS,SAAUvD,GACf,IACIiT,EAAM,CACNzB,IAFMxR,EAAK8N,QAAQoF,KAKvB9X,EAAE8I,KAAK,CACHC,IAAKA,EACLnE,KAAMiT,EACNrC,OAAQ,MACRrN,QAAS,SAAUqK,GACXA,EAASuF,WACT/X,EAAE,6BAA6B6U,KAAKrC,EAASuF,UAErD,EACAvP,MAAO,WACP,IAKJxI,EAAE8V,UAAUC,MAChB,EACAvN,MAAO,WACHxI,EAAE8V,UAAUC,MAChB,GAER,CACJ,CA2JgBiC,CAAoBhY,EAAE2B,MAAMK,KAAK,iBAC9B,CAGH,GAFAwC,EAAExD,iBACFhB,EAAEW,UAAUP,KAAK,4BAA4BmB,YAAY,YACrDvB,EAAE2B,MAAMK,KAAK,YACb,OAEJ,IAAI0N,EAAoB1P,EAAE2B,MAAMyC,QAAQ,aACnCsL,EAAkB5O,SACnB4O,EAAoB1P,EAAE2B,MAAMyC,QAAQ,oBAExCiR,EAAgBrV,EAAE2B,MAAMK,KAAK,YAAa0N,GAAmB,GAE7D1P,EAAE,yBAAyBuB,YAAY,UACvCvB,EAAE,0BAA0BoB,SAAS,UACrCpB,EAAE,0BAA0BkD,KAAK,IAEjClD,EAAE,gCAAgCuB,YAAY,UAC9CvB,EAAE,iCAAiCoB,SAAS,UAC5CpB,EAAE,iCAAiCkD,KAAK,IAExC,IAAI+U,EAAcjY,EAAE2B,MAAMiD,KAAK,cAC3BsT,EAAalY,EAAEW,UAAUP,KAAK,cAAc8D,MAC5CiU,EAASnY,EAAEW,UAAUP,KAAK,qBAAqBwE,KAAK,UAEpDwT,EAAMF,EAAaD,EADRjY,EAAEW,UAAUP,KAAK,6BAA6BwE,KAAK,cAElE5E,EAAEW,UAAUP,KAAK,qBAAqBwE,KAAK,aAAcuT,EAASC,EAAIC,cAC1E,CACJ,GACJ,EAEAC,mBAAoB,WAChBtY,EAAEW,UAAUV,GAAG,QAAS,2EAA2E,SAAUuE,GAIzG,GAHAqG,OAAOC,SAAS,EAAG,GACnBtG,EAAExD,kBAEEhB,EAAE2B,MAAMK,KAAK,YAAjB,CAGA,IAAI0N,EAAoB1P,EAAE2B,MAAMyC,QAAQ,aACnCsL,EAAkB5O,SACnB4O,EAAoB1P,EAAE2B,MAAMyC,QAAQ,oBAExCiR,EAAgBrV,EAAE2B,MAAMK,KAAK,YAAa0N,GAAmB,GAE7D1P,EAAE,yBAAyBuB,YAAY,UACvCvB,EAAE,0BAA0BoB,SAAS,UACrCpB,EAAE,0BAA0BkD,KAAK,IAEjClD,EAAE,gCAAgCuB,YAAY,UAC9CvB,EAAE,iCAAiCoB,SAAS,UAC5CpB,EAAE,iCAAiCkD,KAAK,IAExC,IAAI+U,EAAcjY,EAAE2B,MAAMiD,KAAK,cAC3BsT,EAAalY,EAAEW,UAAUP,KAAK,cAAc8D,MAC5CiU,EAASnY,EAAEW,UAAUP,KAAK,qBAAqBwE,KAAK,UAEpDwT,EAAMF,EAAaD,EADRjY,EAAEW,UAAUP,KAAK,6BAA6BwE,KAAK,cAElE5E,EAAEW,UAAUP,KAAK,qBAAqBwE,KAAK,aAAcuT,EAASC,EAAIC,cApBtE,CAqBJ,GACJ,EAEAE,gBAAiB,WACbvY,EAAEW,UAAUV,GAAG,QAAS,mBAAmB,SAAUuE,GACjDA,EAAExD,iBACF,IA1RqBsU,EA0RjB5F,EAAoB1P,EAAE2B,MAAMyC,QAAQ,aAIxC,GAHKsL,EAAkB5O,SACnB4O,EAAoB1P,EAAE2B,MAAMyC,QAAQ,oBAEpCpE,EAAE2B,MAAMyC,QAAQ,kCAAkC9C,SAAS,8BAA+B,EA9RzEgU,EA+ROtV,EAAEwE,EAAE2C,eAAevC,KAAK,WA7RxD5E,EAAE8I,KAAK,CACHC,IAAKuM,EACLE,OAAQ,MACRrN,QAAS,SAAUvD,GACf5E,EAAE,2BAA2B4E,KAAK,MAAOA,EAAK8N,QAAQtE,IACtDpO,EAAE,sBAAsB4E,KAAK,YAAcA,EAAK8N,QAAQwC,eAAiBtQ,EAAK8N,QAAQ8F,WAEtFxY,EAAE8V,UAAUC,OAEZ/V,EAAE,QAAQ8B,QAAQ,iCACtB,EACA0G,MAAO,WACHxI,EAAE8V,UAAUC,MAChB,IAiRI/V,EAAE,mBAAmBI,KAAK,sBAAsBmB,YAAY,aAC5DvB,EAAE,mBAAmBI,KAAK,mBAAmBmB,YAAY,aACzDvB,EAAE2B,MAAMP,SAAS,aACjBpB,EAAE2B,MAAMoB,SAAS3B,SAAS,aAC1B,IAAImQ,EAAOvR,EAAE2B,MAAMsB,SAAS,kBAAkBC,OAC1CuV,EAAWzY,EAAE2B,MAAMiD,KAAK,cAC5B5E,EAAE,qBAAqBkE,IAAIuU,GAC3BzY,EAAE,6BAA6BkE,IAAIuU,GACnCzY,EAAE,gCAAgCkE,IAAIuU,GAEtCzY,EAAE,yBAAyBoB,SAAS,UACpCpB,EAAE,0BAA0BuB,YAAY,UACxCvB,EAAE,0BAA0BkD,KAAKqO,GAEjCvR,EAAE,gCAAgCoB,SAAS,UAC3CpB,EAAE,iCAAiCuB,YAAY,UAC/CvB,EAAE,iCAAiCkD,KAAKqO,GACxCvR,EAAE,0BAA0B0B,MAAK,SAACgX,EAAMnR,GACpC,IAAIoR,EAAM3Y,EAAEuH,GACZoR,EAAIpX,YAAY,WAChBvB,EAAE2Y,EAAI/T,KAAK,WAAWrD,YAAY,UACtC,GAGJ,KAAO,CACH8T,EAAgBrV,EAAEwE,EAAE2C,eAAevC,KAAK,SAAU8K,GAAmB,GACrE,IAAI6B,EAAOvR,EAAE2B,MAAMsB,SAAS,kBAAkBC,OAC1CuV,EAAWzY,EAAE2B,MAAMiD,KAAK,cAC5B5E,EAAE,qBAAqBkE,IAAIuU,GAC3BzY,EAAE,6BAA6BkE,IAAIuU,GACnCzY,EAAE,gCAAgCkE,IAAIuU,GAEtCzY,EAAE,yBAAyBoB,SAAS,UACpCpB,EAAE,0BAA0BuB,YAAY,UACxCvB,EAAE,0BAA0BkD,KAAKqO,GAEjCvR,EAAE,gCAAgCoB,SAAS,UAC3CpB,EAAE,iCAAiCuB,YAAY,UAC/CvB,EAAE,iCAAiCkD,KAAKqO,GAExC,IAAI0G,EAAcjY,EAAEW,UAAUP,KAAK,8BAA8BwE,KAAK,cAClEsT,EAAalY,EAAEW,UAAUP,KAAK,cAAc8D,MAC5CiU,EAASnY,EAAEW,UAAUP,KAAK,qBAAqBwE,KAAK,UACpDwT,EAAMF,EAAaD,EAAcQ,EACrCzY,EAAEW,UAAUP,KAAK,qBAAqBwE,KAAK,aAAcuT,EAASC,EAAIC,cAC1E,CACJ,GACJ,EAEAO,iBAAkB,SAAUhV,GACxB,IAAIuS,EACAC,EACAC,EAEJrW,EAAE,QAAQ8B,QAAQ,0BAA2B8B,IAE7CwS,EAAM9G,EAAYtP,EAAE4D,OAEhBwS,EAAMpW,EAAE4D,GAAQgB,KAAK,QAEzBuR,EAAeH,IACf,IAAIM,EAAgB,GAChBC,GAA+BvW,EAAE4D,GAhwBlC,KAiwBCU,EAAO,CACP8R,IAAKA,EACLC,QAASA,EACTC,cAAeA,EACfC,SAAUA,GAEVsC,EAA2B,GAC/B,GAAIhO,OAAOiO,UAAY9Y,EAAE4D,GAAQQ,QAAQ,iBAAiBtD,OAAQ,CAC9D,IAAIiY,EAAc/Y,EAAE4D,GAAQQ,QAAQ,iBAAiB9C,SAAS,qBAC1DyX,IACAF,EAA2B,wBAE/B,IAAIG,EAAgBhZ,EAAE4D,GAAQtC,SAAS,wBACnC0X,IACAH,EAA2B,uBAC3B7Y,EAAE4D,GAAQrC,YAAY,yBAErByX,GAAkBD,IACnBF,EAA2B,oBAEnC,MACIA,EAA2B7Y,EAAE4D,GAAQ5B,KAAK,eAG9ChC,EAAE4D,GAAQ9B,QAAQ,0BAA2BwC,GAE7C4R,EAAqBC,EAAcC,EAAKC,EAASC,EAAeC,GAAU,SAAU0C,GAChFhD,EAAqBgD,EAAQC,cAC7BlZ,EAAE,QAAQ8B,QAAQ,yBAA0BmX,EAChD,IAAG,WACC,GACDJ,EACP,EAEAM,qBAAsB,SAASvV,GAC3B,IAEIyS,EADAD,EAAMpW,EAAE,2BAA2B4E,KAAK,OAIxC0R,EAAgB,GAQpBJ,EATeF,IASoBI,EAAKC,EAASC,EAPlC,GAO2D,SAAU2C,GAChFhD,EAAqBgD,EAAQC,cAC7BlZ,EAAE,QAAQ8B,QAAQ,yBAA0BmX,EAChD,IAAG,WACC,GACDjZ,EAAE4D,GAAQ5B,KAAK,eACtB,EAEAoX,UAAW,WACP,IAAIva,EAAI8C,KACR3B,EAAEW,UAAUV,GAAG,QAAS,iDAAiD,WACrE,GAAID,EAAE2B,MAAML,SAAS,8BAA+B,CAChD,IAEI+U,EADAD,EAAMpW,EAAE,2BAA2B4E,KAAK,OAIxC0R,EAAgB,GAQpBJ,EATeF,IASoBI,EAAKC,EAASC,EAPlC,GAO2D,SAAU2C,GAChFhD,EAAqBgD,EAAQC,cAC7BlZ,EAAE,QAAQ8B,QAAQ,yBAA0BmX,EAChD,IAAG,WACC,GACDjZ,EAAE4D,QAAQ5B,KAAK,eACtB,MACInD,EAAE+Z,iBAAiBjX,KAE3B,GACJ,EAEA2N,YAAaA,EACbC,oBAAqBA,EACrB0G,qBAAsBA,EACtBC,qBAAsBA,E,iBC12B1BxY,EAAOD,QAAU,SAAU4b,GACvB,SAASC,IACL3X,KAAK4X,YAAcF,CACvB,CAOA,OANAC,EAAY/Z,UAAUgJ,KAAO,WACzB5G,KAAK4X,YAAYrP,MAAMyD,QAAU,OACrC,EACA2L,EAAY/Z,UAAUuM,KAAO,WACzBnK,KAAK4X,YAAYrP,MAAMyD,QAAU,MACrC,EACO,IAAI2L,CACf,C,uPCkBA5b,EAAOD,QALP,SAAkBmB,GAChB,IAAImF,EAAI4H,EAAU/M,GAClB,OAAgB,MAATA,IAA0B,UAARmF,GAA4B,YAARA,EAC/C,C,mCC1BA,IAAIyV,EAAiBrX,EAAQ,GACzBsX,EAAYtX,EAAQ,IAEpBuX,GAAkB,EAClBC,EAAmB,KACnBC,GAAgB,EAChBC,GAAmB,EAEnBC,EAAmB3X,EAAQ,IAC/B,GAAIxB,SAAS8H,cAAc,sBAAuB,CAC9C,IAAMoD,EAAalL,SAAS8H,cAAc,sBAAsBG,aAAa,oBAC7EiC,OAAOgB,WAAa7B,KAAKC,MAAM4B,EACnC,CAkEA,SAASkO,IACL,IAAIC,EAAcha,EAAE,iBAAiBia,SACjCpP,OAAOiO,SACP9Y,EAAE,qDAAqDka,IAAI,CACvDC,OAAQ,QACRhL,IAAK,GACLiL,MAAO,UAEJvP,OAAOwP,SACdra,EAAE,qDAAqDka,IAAI,CACvDC,OAAQH,EAAc,GACtB7K,IAAK,GACLiL,MAAO,SASnB,CAEA,SAASE,IACLC,EACA,IAAIC,EAAYxa,EAAEW,UAAUP,KAAK,iBAAiB8O,SAASC,IAC3DnP,EAAEW,UAAUP,KAAK,oBAAoBgB,SAAS,oBAC9C,IACIqZ,EAAgBD,EADDxa,EAAEW,UAAUP,KAAK,qCAAqCsa,cAEzE1a,EAAE,gBAAgBka,IAAI,CAAE,cAAeO,EAAgB,OACvDpZ,YAAW,WACPrB,EAAEW,UAAUmB,QAAQ,oBACxB,GAAG,KACH9B,EAAEW,UAAUP,KAAK,iBAAiBgB,SAAS,qBAC3CsY,GAAkB,EAElB1Z,EAAE,cAAcka,IAAI,sBAAuB,WAE3Cla,EAAE,mDAAmD8B,QAAQ,SAnD7D9B,EAAE,qDAAqDka,IAAI,CACvDC,OAAQ,OACRhL,IAAK,GACLiL,MAAO,SAEPpa,EAAE,6BAA6Bc,OAAS,GACxCd,EAAE,qDAAqDka,IAAI,CACvDC,OAAQ,OACRhL,IAAK,KA+Cb,IAAIiH,EAAMpW,EAAE,mBAAmB4E,KAAK,OAOpC,OANA5E,EAAE,QAAQ8B,QAAQ,6BAA8B,CAC5C,MAAS,eACT,cAAiB,qBACjB,YAAe,OACf,WAAcsU,IAEXqE,CACX,CAEA,SAASE,IAoBL,GAnBAhB,EAAmB,KACnB3Z,EAAE,gBAAgBka,IAAI,CAAE,aAAc,KACtCla,EAAE,+BAA+Bka,IAAI,aAAc,IACnDla,EAAE,iBAAiBuB,YAAY,qBAC/BvB,EAAEW,UAAUkO,UAAU,GACtBxN,YAAW,WACPrB,EAAEW,UAAUmB,QAAQ,0BACxB,GAAG,KACH9B,EAAE,QAAQoB,SAAS,cAEnBpB,EAAE,0BAA0BuB,YAAY,gCACxCvB,EAAE,cAAcuB,YAAY,oBAC5BvB,EAAE,QAAQka,IAAI,sBAAuB,IACrCla,EAAE,0BAA0Bka,IAAI,aAAc,IAG9Cla,EAAE,mDAAmD8B,QAAQ,SAC7DiY,IAEIL,EAAiB,CAEjB,IAAItD,EAAMpW,EAAE,mBAAmB4E,KAAK,OACpC5E,EAAE,QAAQ8B,QAAQ,6BAA8B,CAC5C,MAAS,eACT,cAAiB,qBACjB,YAAe,QACf,WAAcsU,GAEtB,CACAsD,GAAkB,CACtB,CAEA,SAASkB,IACL,IAAIC,EAAe7a,EAAE,oBAAoB0a,cACrCI,EAAe9a,EAAE,0BAA0B0a,cAAgB1a,EAAE,wBAAwB0a,cACrFK,EAAiBlQ,OAAO8D,YAC5B,GAAI9D,OAAOiO,SAAU,CACjB,IAAI8B,EAAkBG,EAAiBD,EAAeD,EAAe,GACrE7a,EAAE,uCAAuCka,IAAI,SAAUU,EAAkB,KAC7E,CACJ,CAEA,SAASI,IACLhb,EAAEW,UAAUP,KAAK,0CAA0CkR,QAAQvQ,OACvE,CAGA,SAASka,EAAeC,EAAarZ,GAKjC,IAAIsZ,EAAwBnb,EAAE,kCAC9B,GAAIkb,EACA,IAAIE,EAAgBpb,EAAE,8CAClBqb,EAAyBD,EAAcxW,KAAK,uBAC5C0W,EAA0BF,EAAcxW,KAAK,cAE7C2W,EADeJ,EAAsBnZ,KAAK,cACF,IAAMqZ,EAAyB,IAAMC,OAE7ED,EAAyBxZ,EAAQ+C,KAAK,uBACtC0W,EAA0BzZ,EAAQ+C,KAAK,cAEvC2W,EADmBJ,EAAsBvW,KAAK,uBACF,IAAMyW,EAAyB,IAAMC,EAGzFH,EAAsBnZ,KAAK,aAAcuZ,EAC7C,CAEAvb,EAAEW,UAAU6a,OAAM,WAsId,IAnTMC,EAaFC,EACAhT,EAsSJ,GAtIA8Q,EAAerX,EAAQ,KACvBqX,EAAerX,EAAQ,MACvBqX,EAAerX,EAAQ,KACvBqX,EAAerX,EAAQ,KACvBqX,EAAerX,EAAQ,KACnB0I,OAAOiO,WAEP9Y,EAAE,cAAcoB,SAAS,oBAEzByJ,OAAO8Q,QAAQC,kBAAoB,SACnC/Q,OAAOgR,iBAAiB,gBAAgB,kBAAMhR,OAAOC,SAAS,EAAG,EAAE,IAGnE9K,EAAE,QAAQoB,SAAS,cAGnBC,WAAWuZ,EAAiB,MAIhCK,GAAe,EAAM,MAGrBjb,EAAE,uBAAuBC,GAAG,SAAS,WACjCgb,GAAe,EAAOjb,EAAE2B,MAC5B,IAEA3B,EAAE,2BAA2BC,GAAG,YAAY,SAASC,GACjD,GAAkB,UAAdA,EAAMhB,IAAiB,CAEzB,IAAM4c,EAAW9b,EAAE2B,MAAMK,KAAK,iBACxB+Z,EAAoB/b,EAAE2B,MAAMK,KAAK,iBAGjCga,EAAgBrb,SAASuS,eAAe4I,GAErB,SAAtBC,GACD/b,EAAE2B,MAAMK,KAAK,gBAAiB,SAC9BhC,EAAE2B,MAAMP,SAAS,aACjB4a,EAAcC,UAAU1X,OAAO,QAC/ByX,EAAcC,UAAUC,IAAI,cAE5Blc,EAAE2B,MAAMK,KAAK,gBAAiB,QAC9BhC,EAAE2B,MAAMwa,YAAY,aACpBH,EAAcC,UAAUC,IAAI,QAC5BF,EAAcC,UAAU1X,OAAO,YAEnC,CACJ,IAGAvE,EAAE,gBAAgBC,GAAG,WAAW,SAASuE,GACrC,GAAc,UAAVA,EAAEtF,IAGuB,SADCc,EAAE2B,MAAMK,KAAK,iBAEXhC,EAAE,uBACR0B,MAAK,SAAS0a,EAAOva,GACnC7B,EAAE6B,GAASG,KAAK,WAAY,KAChC,IAEwBhC,EAAE,uBACR0B,MAAK,SAAS0a,EAAOva,GACnC7B,EAAE6B,GAASG,KAAK,WAAY,IAChC,SAGJ,GAAIhC,EAAE6K,QAAQwR,SAAW,IAGrB,GAFA7X,EAAExD,iBAEEwD,EAAE3D,UAAsB,QAAV2D,EAAEtF,IAChBc,EAAE,kCAAkCe,aACjC,GAAc,QAAVyD,EAAEtF,IAAe,CAGH,SADFc,EAAE2B,MAAMK,KAAK,iBAG5BhC,EAAE,uBAAuBsR,QAAQvQ,QAG7Bf,EAAE,kCAAkCc,OAAS,EAC7Cd,EAAEW,UAAUP,KAAK,kCAAkCW,QAEnDia,GAGZ,CAGZ,IAIIhb,EAAE6K,QAAQwR,SAAW,MAGrBrc,EAAE,6BAA6BC,GAAG,WAAW,SAASuE,GAC9CA,EAAE3D,UAAsB,QAAV2D,EAAEtF,KAChBsF,EAAExD,iBACFhB,EAAEW,UAAUP,KAAK,6BAA6BW,SAC7B,QAAVyD,EAAEtF,MACTsF,EAAExD,iBACEhB,EAAE,oEAAoEc,OAAS,EAC/Ed,EAAEW,UAAUP,KAAK,kCAAkCW,QAEnDia,IAGZ,IAGAhb,EAAE,kCAAkCC,GAAG,kBAAkB,SAASuE,GAC1DA,EAAE3D,UAAsB,QAAV2D,EAAEtF,MAChBsF,EAAExD,iBACFhB,EAAE,mCAAmCe,QAE7C,IAGAf,EAAE,gCAAgCC,GAAG,WAAW,SAASuE,GACjDA,EAAE3D,UAAsB,QAAV2D,EAAEtF,KAChBsF,EAAExD,iBACFhB,EAAEW,UAAUP,KAAK,iCAAiCW,SACjC,QAAVyD,EAAEtF,MACTsF,EAAExD,iBACFga,IAER,OAM0B,QAnTxBS,EAAKa,UAAUC,UACjB,WAAWtV,KAAKwU,GACT,UACA,mBAAmBxU,KAAKwU,IAA+B,aAAvBa,UAAUE,UAA2BF,UAAUG,eAAiB,EAChG,MAEJ,aAnBX,WACI,IAAIC,GAAS,EACTjB,EAAKa,UAAUC,UAAUlE,cAQ7B,OAP8B,IAA1BoD,EAAG/a,QAAQ,YAEPgc,IADAjB,EAAG/a,QAAQ,WAAa,IAMzBgc,CACX,CAsTsBC,IAAqB9R,OAAOyM,WAAY,CACtD,IAAIsF,EAAkB5c,EAAEW,UAAUP,KAAK,4CAA4C6Z,SACnF,GAAIja,EAAEW,UAAUP,KAAK,0BAA0BwE,KAAK,cAAgBiG,OAAOgS,OAzS3EnB,EAAO/a,SAASmc,qBAAqB,QAAQC,KAAK,IAClDrU,EAAS/H,SAASqc,cAAc,WAC7BjZ,KAAO,kBACd2E,EAAOwF,OAAQ,EACfxF,EAAOuU,OAAS,WACZnD,EAAgB,SACpB,EACApR,EAAOwU,IAAMrS,OAAOgB,WAAWsR,WAC/BzU,EAAOC,aAAa,8BAA+BkC,OAAOgB,WAAWuR,sBACrE1B,EAAK2B,YAAY3U,GAmST1I,EAAEW,UAAUP,KAAK,4CAA4C8Z,IAAI,SAAU0C,EAAkB,MAC7F5c,EAAE,mBAAmBmF,QAAQ,sBAAsB5D,YAAY,cAC5D,CACH,IAAIwH,EAAM/I,EAAEW,UAAUP,KAAK,0BAA0BwE,KAAK,gBAC1D5E,EAAE8I,KAAK,CACHC,IAAKA,EACLyM,OAAQ,MACRrN,QAAS,SAAUvD,GACXA,EAAK0Y,sBAzS7B,SAA6BH,EAAYC,GACrC,IAAI1B,EAAO/a,SAASmc,qBAAqB,QAAQC,KAAK,GAClDrU,EAAS/H,SAASqc,cAAc,UACpCtU,EAAOwF,OAAQ,EACfxF,EAAO3E,KAAO,kBACd2E,EAAOuU,OAAS,WACZnD,EAAgB,SACpB,EACApR,EAAOwU,IAAMC,EACbzU,EAAOC,aAAa,8BAA+ByU,GACnD1B,EAAK2B,YAAY3U,EACrB,CA+RwB6U,CAAoB3Y,EAAKuY,WAAYvY,EAAKwY,sBAE1Cpd,EAAEW,UAAUP,KAAK,4CAA4C8Z,IAAI,SAAU0C,EAAkB,MAC7F5c,EAAE,mBAAmBmF,QAAQ,sBAAsB5D,YAAY,UAEvE,GAER,CACJ,CAmDA,GAhDIvB,EAAE,qBAAqBkB,GAAG,cAC1BlB,EAAE,qBAAqBmF,QAAQ,sBAAsB5D,YAAY,UAC3DsJ,OAAOyM,WACTtX,EAAE,2CAA2CoB,SAAS,WAK1DpB,EAAE,uDAAuDc,OAAS,GACmB,IAAjFd,EAAE,oEAAoEc,QACtEd,EAAE,uDAAuD0B,MAAK,WACpC1B,EAAE2B,MAER6b,MAAM,CAClBC,UAAU,EACVC,UAAU,EACVC,eAAe,EACfC,YAAY,EACZC,cAAe,IACfC,MAAO,IACPC,eAAgB,EAChBC,aAAc,EACdC,eAAe,EACfC,MAAM,EACNC,OAAO,EACPC,UAAW,wGACXC,UAAW,wGACXC,WAAY,CACR,CACIC,WAAY,QACZC,SAAU,CACNR,aAAc,KAGtB,CACIO,WAAY,OACZC,SAAU,CACNR,aAAc,MAKlC,IAGHnT,OAAOiO,UACR9Y,EAAEW,UAAUP,KAAK,qBAAqBmE,SAEtCsG,OAAOiO,SAAU,CAEjB9Y,EAAEW,UAAUV,GAAG,cAAc,SAAUwe,GACnC,IAAIC,EAASD,EAAWE,QAAQ,GAAGC,QACnC5e,EAAEW,UAAUV,GAAG,YAAawZ,GAAU,SAAUoF,GAC5CjF,GAAgB,EAChB,IAAIkF,EAAQD,EAAUF,QAAQ,GAAGC,QACbjF,EAAhBmF,EAAQJ,EAA2B,OAC9BI,EAAQJ,EAA2B,KACpB,KACxBA,EAASI,CAEb,GAAG,IAAK,CAAEC,UAAU,EAAOC,SAAS,KAEpChf,EAAEW,UAAUse,IAAI,YAAY,WACxBrF,GAAgB,CACpB,GACJ,IAGA5Z,EAAEW,UAAUV,GAAG,YAAa,kBAAkB,SAASuE,GACnDA,EAAE7B,kBACE+W,IACA/Y,SAASM,KAAKiJ,MAAMgV,SAAW,SAC/Blf,EAAE,yBAAyB4E,KAAK,WAAW,GAEnD,IAEA5E,EAAEW,UAAUV,GAAG,QAAS,0BAA0B,SAASuE,GACvDA,EAAE5B,2BACG5C,EAAE,iBAAiBsB,SAAS,sBAI7BtB,EAAE,0BAA0BgC,KAAK,gBAAiB,SAClD2Y,MAJA3a,EAAE,0BAA0BgC,KAAK,gBAAiB,QAClDsY,IAKR,IAGAta,EAAEW,UAAUV,GAAG,YAAa,iBAAkBwZ,GAAU,WAChDI,GAAyC,SAArBF,GACF3Z,EAAEW,UAAUP,KAAK,kBAAkB,GAAG+e,aACnCnf,EAAEW,UAAUP,KAAK,kBAAkB,GAAGyO,WACnC7O,EAAEW,UAAUP,KAAK,kBAAkB,GAAGgf,aACC,IAC/DvF,GAAmB,EACnBS,IAER,GAAG,MAGHta,EAAEW,UAAUV,GAAG,UAAU,WACfyZ,IACF/Y,SAAS0e,gBAAgBxQ,UAAY,EAAGlO,SAASM,KAAKiJ,MAAMoV,YAAc,OACzE3e,SAASM,KAAKiJ,MAAMoV,YAAc,GAC3C,IAGAtf,EAAEW,UAAUV,GAAG,cAAc,WACrByZ,IACI/Y,SAAS0e,gBAAgBxQ,UAAY,KACrC7O,EAAE,0BAA0Bka,IAAI,aAAc,QAC9CvZ,SAAS0e,gBAAgBvU,SAAS,EAAG,IACrC9K,EAAE,yBAAyB4E,KAAK,WAAW,IAG/C5E,EAAEW,UAAUV,GAAG,iCAAiC,WACxC2Z,GAAsC,OAArBD,GAA6BhZ,SAAS0e,gBAAgBxQ,UAAY,KACnFlO,SAASM,KAAKiJ,MAAMgV,SAAW,SAC/Bve,SAASM,KAAKiJ,MAAMoV,YAAc,OAClC3E,IAER,IAGA3a,EAAEW,UAAUse,IAAI,YAAY,WACxBjf,EAAEW,UAAU4e,IAAI,iCAChB5e,SAASM,KAAKiJ,MAAMgV,SAAW,GAC/Bve,SAASM,KAAKiJ,MAAMoV,YAAc,GAClCje,YAAW,WACPrB,EAAE,yBAAyBwf,WAAW,UAC1C,GAAG,IACP,IAER,IAGAxf,EAAEW,UAAUV,GAAG,qBAAqB,WAChCD,EAAE,QAAQuB,YAAY,cACtBsY,GAAmB,CACvB,IAGA7Z,EAAEW,UAAUV,GAAG,YAAa,wCAAyCwZ,GAAU,WAClD,SAArBE,GAAgCE,GAAqBH,IACrDG,GAAmB,EACnBS,IAER,GAAG,MAGH,IAAImF,EAASzf,EAAE,cAAc,GACzB0f,EAAS1f,EAAE,iBAAiB,GAC5B2f,EAAqB3f,EAAE,0BAA0Bia,SACjD2F,EAAkB5f,EAAE,wBAAwB,GAC5C6f,EAAS7f,EAAE,0BAA0B,GACrC8f,EAAe9f,EAAE6f,GAAQ5F,SAC7BF,IAEA/Z,EAAEW,UAAUV,GAAG,SAAUwZ,GAAU,WAC/B,IAAIoB,EAAe4E,EAAON,aACtBY,EAAYL,EAAOM,wBAAwB7Q,IAE/C,GAAIuK,GAAmBqG,EAAYN,EAAON,aAItCnf,EAAE6f,GAAQte,YAAY,qCAEnB,GAAImY,EAAiB,CAExB,IAAIuG,EAAwBL,EAAgBI,wBAAwB7F,OAE3C,SAArBR,EAEIsG,GAAyBpF,EAAe8E,GACxC3f,EAAE6f,GAAQze,SAAS,gCAEK,OAArBuY,GAEHsG,GAAyBpF,EAAe8E,EAAqBG,GAC7D9f,EAAE6f,GAAQte,YAAY,+BAGlC,CACJ,GAAG,KAEHvB,EAAEW,UAAUV,GAAG,QAAS,mEAAmE,WAAY,IAE/FigB,EAF+FC,EAAA,KAC/FC,EAAa,uBAEbpgB,EAAE2B,MAAMT,GAAG,mBAAqBgf,EAAa,SACxClgB,EAAE2B,MAAMT,GAAG,uBAAsBgf,EAAa,YACvDlgB,EAAE,oCAAoC4E,KAAK,iBAAkBsb,GAC7D,IAAIG,EAAmBrgB,EAAE,qCACzB,GAAIqgB,EAAiBzb,KAAK,YAAa,CACnC+U,EAAmB,KAGnB3Z,EAAEW,UAAUkO,UADQ,GAEpB7O,EAAE,0BAA0BuB,YAAY,gCACxC,IAAI+e,EAAetgB,EAAEW,UAAUkO,YAC3B0R,EAAWC,aAAY,WACvB,IAAIC,EAAkBzgB,EAAEW,UAAUkO,YALlB,IAMZ4R,GAAqCA,IAAoBH,GACzDI,cAAcH,GAEdlf,YAAW,WACHrB,EAAEmgB,GAAMjf,GAAG,+BACXmf,EAAiBve,QAAQ,QAAS,CAACse,eAEnCpgB,EAAE,2CAA2C8B,QAAQ,QAAS,CAACse,cAEvE,GAAG,MAEHE,EAAetgB,EAAEW,UAAUkO,WAEnC,GAAG,IACP,MAEQ7O,EAAE2B,MAAML,SAAS,+BACjB+e,EAAiBjf,SAAS,wBAE9Bif,EAAiBve,QAAQ,QAAS,CAACse,cAE3C,IAEApgB,EAAE,QAAQC,GAAG,gCAAgC,WAClBD,EAAE,qCACL4E,KAAK,aACtB5E,EAAE,0BAA0BI,KAAK,sCAAsC8Z,IAAI,iBAAkB,QAC7Fla,EAAE,0BAA0BI,KAAK,0CAA0CgB,SAAS,YAEpFpB,EAAE,0BAA0BI,KAAK,sCAAsC8Z,IAAI,iBAAkB,QAC7Fla,EAAE,0BAA0BI,KAAK,0CAA0CmB,YAAY,UAE/F,GACH,CACJ,G,mCCrlBA,IAAIof,EAAOxe,EAAQ,IACbye,EAAQze,EAAQ,GAClB0e,EAAc1e,EAAQ,IACtB2e,GAAoB,EAClBC,EAAgBpgB,SAASmc,qBAAqB,UAAU,GACxD/B,EAAiBpa,SAAS0e,gBAAgB2B,aAC1CC,EAAoBjhB,EAAE,SAASgC,KAAK,2BAE1C,GAA0B,OAAtBif,EACA,IAAI3Y,EAAiBnG,EAAQ,IAKlB,IAFQ0I,OAAOqW,kBAAoBrW,OAAOsW,yBAErB,SAASC,GACzC,IAAK,IAAIzjB,EAAI,EAAGA,EAAIyjB,EAAUtgB,OAAQnD,IAClC,GAAIyjB,EAAUzjB,GAAGiG,OAAOyd,UAAU5W,WAAW6W,SAAS,sBAC9CzW,OAAOiO,SAAU,CACjB,IAAIgC,EAAe9a,EAAE,0BAA0Bia,SAC/Cja,EAAE,qDAAqDka,IAAI,CACvDC,OAAQna,EAAEW,UAAUP,KAAK,WAAWU,OAAS,EAAI,QAAUga,EAAe,GAC1EV,MAAO,SAEPpa,EAAE,6BAA6Bc,OAAS,GACxCd,EAAE,qDAAqDka,IAAI,CACvDC,OAAQ,QAGpB,CAGZ,IACSoH,QAAQ5gB,SAAU,CACvB6gB,SAAS,EACTC,YAAY,IAoBhB,SAASC,IACLC,IACA3hB,EAAE,iBAAiBka,IAAI,UAAW,KACtC,CA4BA,SAAS0H,IACL5hB,EAAE,iBAAiBka,IAAI,UAAW,MAClCyH,GACJ,CAEA,SAASE,IACL7hB,EAAE,iBAAiBka,IAAI,UAAW,KAClCla,EAAE,mBAAmBuB,YAAY,WACjC,IAAIugB,EAAsB9hB,EAAE,yBAAyB4E,KAAK,YAClB,OAAxBkd,GAAwD,cAAxBA,GAE5Czd,EAAUrE,EAAE,iCAEhB+hB,IACAC,GACJ,CAEA,SAASD,IACL/hB,EAAE,gCAAgCiiB,SAClCjiB,EAAE,gCAAgCkiB,SACtC,CAEA,SAASF,IACLhiB,EAAE,qDAAqDka,IAAI,CACvDvM,QAAS,QACTwU,WAAY,WAEpB,CACA,SAASR,IACL3hB,EAAE,qDAAqDka,IAAI,CACvDvM,QAAS,OACTwU,WAAY,UAEpB,CAEA,SAASC,EAAqBjT,GAC1BnP,EAAE,qDAAqD0B,MAAK,WACxD,IAAI2gB,EAAWlT,EAAMnP,EAAE2B,MAAMsY,SAAW,GAExCja,EAAE2B,MAAMuY,IAAI,MAAOmI,EAAW,MAC1BA,EAFa,KAGbV,GAER,GACJ,CAEA,SAASW,IACL,OAAOtiB,EAAE,qDAAqDoF,GAAG,EACrE,CAEA,SAASmd,IACLviB,EAAE,qDAAqD0B,MAAK,WACpDC,KAAKuI,MAAMiF,MACXnP,EAAE2B,MAAMuY,IAAI,MAAO,IAEfla,EAAE2B,MAAMT,GAAG,YACX8gB,IAGZ,GACJ,CAEA,IAAMQ,EAAa,SAAC3gB,GAChB,IAAM4gB,EAAc5gB,EAAQ6gB,QAAQ9e,OACpC5D,EAAEyiB,GAAalhB,YAAY,WAAWge,IAAI,SAC1Cvf,EAAE6B,GAASN,YAAY,6BAA6BA,YAAY,WAChEygB,GACJ,EAEMW,EAAsB,WAEpB9X,OAAOiO,UACP9Y,EAAE,iBAAiBka,IAAI,UAAW,KAClCla,EAAE,mBAAmBuB,YAAY,WACjCygB,KAGe,SADFhiB,EAAE,wBAAwBkE,OAEnClE,EAAE,sBAAsBmc,YAAY,WACpCnc,EAAE,iBAAiBka,IAAI,UAAW,MAElCla,EAAE,QAAQoB,SAAS,cAG3B,IAAI0gB,EAAsB9hB,EAAE,yBAAyB4E,KAAK,YAClB,OAAxBkd,GAAwD,cAAxBA,GAE5Czd,EAAUrE,EAAE,iCAEhB+hB,GACJ,EACMa,EAAqB,WAEvB,GAAI/X,OAAOiO,SAAU,CACjB,IAAI+J,EAAM7iB,EAAE,8BAA8BI,KAAK,mDAE3C0iB,EADe,GAEnB,GAAI9iB,EAAE,uBAAuBc,OAAS,EAGlCgiB,GAFmB9iB,EAAE,uBAAuB+C,OAAO,OACnBkX,SAGpC4I,EAAI3I,IAAI,cAAe4I,EAAY,KACvC,KAAO,CAEY,SADF9iB,EAAE,wBAAwBkE,OAEnClE,EAAE,sBAAsBmc,YAAY,UAE5C,CACAnc,EAAE,iBAAiBka,IAAI,UAAW,MAGlCla,EAAEW,UAAUmB,QAAQ,6BAA8B,CAC9C5B,MAAO,YACP6iB,cAAe,aACfC,YAAa,QAErB,EAEA,SAAS3e,EAAUC,GACftE,EAAEsE,GAAMlE,KAAK,sBAAsBmB,YAAY,YAC/CvB,EAAEsE,GAAMlE,KAAK,wBAAwB6C,SAAS,oBAAoBC,KAAK,IACvElD,EAAEsE,GAAMlE,KAAK,sCAAsC8D,IAAI,IACvDlE,EAAEsE,GAAMlE,KAAK,qCAAqC8D,IAAI,IACtDlE,EAAEsE,GAAMlE,KAAK,kCAAkC8D,IAAI,IACnDlE,EAAE,yBAAyBijB,aAAa,MAAO,IAE/CjjB,EAAE,SAAUsE,GAAMC,QACtB,CAEA,SAAS2e,IACL,IAAIpL,EAAM9X,EAAEW,UAAUP,KAAK,2BAA2BwE,KAAK,OACvD6E,EAAQzJ,EAAEW,UAAUP,KAAK,2BAA2BwE,KAAK,SACzDmE,EAAM/I,EAAE,uCAAuC4E,KAAK,cACnD5E,EAAE,mBAAmBsB,SAAS,0BAC/BtB,EAAE8V,UAAUc,QACZ5W,EAAE8I,KAAK,CACHC,IAAKA,EACLyM,OAAQ,MACR5Q,KAAM,CACFkT,IAAKA,EACLrO,MAAOA,GAEXtB,QAAS,SAAUvD,GACf,IAAK,IAAIjH,EAAI,EAAGA,EAAIiH,EAAKue,UAAUriB,OAAQnD,IAAK,CAC5C,IAAI4J,EAAK3C,EAAKue,UAAUxlB,GACpBylB,EAAQpjB,EAAEW,UAAUP,KAAK,iBAAmBmH,EAAG3I,OAC/CykB,EAAerjB,EAAEW,UAAUP,KAAK,wBAA0BmH,EAAG3I,OAC7D2I,EAAG0J,YACHmS,EAAM7hB,YAAY,SAASA,YAAY,YAAYH,SAAS,UAC5DgiB,EAAM7hB,YAAY,mBAClB6hB,EAAMjiB,WAAW,YACjBiiB,EAAMrgB,SAASxB,YAAY,mBACvBgG,EAAGiK,eACH4R,EAAMhjB,KAAK,4BAA4BmB,YAAY,UAEvD8hB,EAAajiB,SAAS,UACtBiiB,EAAatgB,SAAS3B,SAAS,WACvBmG,EAAG0J,WAUJmS,EAAM9hB,SAAS,WAAaiG,EAAG0J,aACtC1J,EAAGiK,cAAgB4R,EAAMhjB,KAAK,4BAA4BmB,YAAY,UAAY6hB,EAAMhjB,KAAK,4BAA4BgB,SAAS,YAVlIgiB,EAAMphB,KAAK,YACXohB,EAAMhiB,SAAS,SAASA,SAAS,YAAYG,YAAY,UACzD6hB,EAAMhiB,SAAS,mBACfgiB,EAAMrgB,SAAS3B,SAAS,mBACxBgiB,EAAMhjB,KAAK,4BAA4BgB,SAAS,UAC3CmG,EAAGmK,sBACJ2R,EAAa9hB,YAAY,UACzB8hB,EAAatgB,SAASxB,YAAY,WAK9C,CACAvB,EAAE8V,UAAUC,MAChB,KAGR/V,EAAEW,UAAUP,KAAK,oCAAoCmB,YAAY,aACjEvB,EAAEW,UAAUP,KAAK,kCAAkC2C,SAAS3B,SAAS,YACzE,CAEA,SAASkiB,IACL,IAAIxL,EAAM9X,EAAE,mBAAmB4E,KAAK,OAChC6E,EAAQzJ,EAAE,8BAA8B4E,KAAK,cAC7CmE,EAAM/I,EAAE,uCAAuC4E,KAAK,cACnD5E,EAAE,mBAAmBsB,SAAS,0BAC/BtB,EAAE8V,UAAUc,QACZ5W,EAAE8I,KAAK,CACHC,IAAKA,EACLyM,OAAQ,MACR5Q,KAAM,CACFkT,IAAKA,EACLrO,MAAOA,GAEXtB,QAAS,SAAUvD,GACf,IAAK,IAAIjH,EAAI,EAAGA,EAAIiH,EAAKue,UAAUriB,OAAQnD,IAAK,CAC5C,IAAI4J,EAAK3C,EAAKue,UAAUxlB,GACpBylB,EAAQpjB,EAAE,iBAAmBuH,EAAG3I,OAChCykB,EAAerjB,EAAE,wBAA0BuH,EAAG3I,OAC9C2I,EAAG0J,YACHmS,EAAM7hB,YAAY,SAASA,YAAY,YAAYH,SAAS,UAC5DgiB,EAAM7hB,YAAY,mBAClB6hB,EAAMjiB,WAAW,YACjBiiB,EAAMrgB,SAASxB,YAAY,mBACvBgG,EAAGiK,eACH4R,EAAMhjB,KAAK,4BAA4BmB,YAAY,UAEvD8hB,EAAajiB,SAAS,UACtBiiB,EAAatgB,SAAS3B,SAAS,WACvBmG,EAAG0J,WAUJmS,EAAM9hB,SAAS,WAAaiG,EAAG0J,aACtC1J,EAAGiK,cAAgB4R,EAAMhjB,KAAK,4BAA4BmB,YAAY,UAAY6hB,EAAMhjB,KAAK,4BAA4BgB,SAAS,YAVlIgiB,EAAMphB,KAAK,YACXohB,EAAMhiB,SAAS,SAASA,SAAS,YAAYG,YAAY,UACzD6hB,EAAMhiB,SAAS,mBACfgiB,EAAMrgB,SAAS3B,SAAS,mBACxBgiB,EAAMhjB,KAAK,4BAA4BgB,SAAS,UAC3CmG,EAAGmK,sBACJ2R,EAAa9hB,YAAY,UACzB8hB,EAAatgB,SAASxB,YAAY,WAK9C,CACAvB,EAAE8V,UAAUC,MAChB,KAGR/V,EAAE,oCAAoCuB,YAAY,aAClDvB,EAAE,kCAAkC+C,SAAS3B,SAAS,YAC1D,CAiBA,SAASmiB,IACL,IAAIC,EAAgBxjB,EAAE,8BAA8B4E,KAAK,iBACrD6e,EAAgBzjB,EAAE,8BAA8B4E,KAAK,iBACrD8e,EAAY1jB,EAAE,8BAA8B4E,KAAK,WACjD+e,EAAY3jB,EAAE,8BAA8B4E,KAAK,WACjD5E,EAAE,8BAA8Bc,OAAS,GACkB,IAAvDd,EAAE,0CAA0Cc,QAC5Cd,EAAE,8BAA8B0B,MAAK,WACjC,IAAIkiB,EAAkB5jB,EAAE2B,MACpBqc,EAAe4F,EAAgBhf,KAAK,aAExCgf,EAAgBpG,MAAM,CAClBqG,eAAe,EACfpG,UAAU,EACVC,UAAU,EACVC,eAAe,EACfC,YAAY,EACZC,cAAe,IACfC,MAAO,IACPC,eAAgB,EAChBC,aAAcA,EACdC,eAAe,EACfC,MAAM,EACN4F,UAAW,kBACXC,WAAY/jB,EAAE,+BACdme,OAAO,EACPC,UAAW,8CAAgDoF,EAAgB,gFAAkFG,EAAY,0BACzKtF,UAAW,8CAAgDoF,EAAgB,gFAAkFC,EAAY,0BACzKpF,WAAY,CACR,CACIC,WAAY,QACZC,SAAU,CACNR,aAAc,EACdE,MAAM,EACNC,OAAO,IAGf,CACII,WAAY,OACZC,SAAU,CACNR,aAAc,EACdE,MAAM,EACNC,OAAO,MAK3B,GAGZ,CAGA,SAAS6F,IACLhkB,EAAE,0EAA0EuE,QAChF,CAIA,SAAS0f,EAAiBC,EAAWtf,GACjCsf,EAAU1T,QAAQqE,KAAKjQ,EAAKuf,eAChC,CAEAzmB,EAAOD,QAAU,CACb2mB,YAAa,WACT,IAAIhO,EAAMpW,EAAE,0BAA0BgC,KAAK,YAC3ChC,EAAEW,UAAUmB,QAAQ,uBAAwB,CAACsU,GACjD,EACAiO,UAAW,WACP,IAAIC,EAAkBtkB,EAAE,uBACxB,GAA+B,IAA3BskB,EAAgBxjB,OAApB,CAIA,IAAIiI,EAAMub,EAAgB1f,KAAK,aAC/B5E,EAAE8I,KAAK,CACHC,IAAKA,EACLZ,QAAS,SAAUvD,GACf5E,EAAE,oBAAoBgC,KAAK,MAAO4C,EAAK2f,SAC3C,GAPJ,CASJ,EACAC,YAAa,WACT,IAAIC,EAAc,EAClBzkB,EAAE,QAAQC,GAAG,QAAS,YAAY,SAAUuE,GACxC,IAAIkgB,EAAclgB,EAAE2C,cAChBwd,EAAiBD,EAAYxH,IAC7B0H,EAAY/Z,OAAOwR,MAAQ,IAAM,SAAW,SAC5CwI,EAAuB7kB,EAAE0kB,GAAatgB,QAAQ,qBAAqBhE,KAAK,kBAAoBwkB,GAAW,GAAGE,OAC1GC,EAAe/kB,EAAE,sBACrBA,EAAE8V,UAAUc,QACZ5W,EAAE,kBAAkBuB,YAAY,UAAUA,YAAY,aACtDwjB,EAAa3jB,SAAS,UACtB2jB,EAAa/iB,KAAK,MAAO2iB,GACzBI,EAAa/iB,KAAK,SAAU6iB,GAExBJ,EAAc,GACdzkB,EAAE,kBAAkBuB,YAAY,cAAcH,SAAS,aACvD2jB,EAAaxjB,YAAY,UACzBvB,EAAE,QAAQoB,SAAS,gBAEnBqjB,IACAM,EAAa9kB,GAAG,QAAQ,WACpBD,EAAE,kBAAkBoB,SAAS,aAC7BpB,EAAE8V,UAAUC,OACZgP,EAAaxjB,YAAY,UACzB,IAAIyjB,EAAehlB,EAAE,kBACjBilB,EAAejlB,EAAE,sBACrBA,EAAE,QAAQoB,SAAS,cACnB4jB,EAAaE,YAAYD,EAAa5I,QAAU2I,EAAa3I,SAAW,GACxE2I,EAAanW,WAAWoW,EAAahL,SAAW+K,EAAa/K,UAAY,EAC7E,IAER,IAEAja,EAAE,QAAQC,GAAG,QAAS,sBAAsB,WACxCD,EAAE,kBAAkBoB,SAAS,UAAUG,YAAY,aACnDvB,EAAE,QAAQuB,YAAY,aAC1B,IAGAvB,EAAE,QAAQC,GAAG,WAAY,YAAY,SAAUuE,GAC3C,GAAa,UAAVA,EAAEtF,IAAiB,CAClB,IAAIwlB,EAAclgB,EAAE2C,cAChBwd,EAAiBD,EAAYxH,IAC7B0H,EAAY/Z,OAAOwR,MAAQ,IAAM,SAAW,SAC5CwI,EAAuB7kB,EAAE0kB,GAAatgB,QAAQ,qBAAqBhE,KAAK,kBAAoBwkB,GAAW,GAAGE,OAC1GC,EAAe/kB,EAAE,sBACrBA,EAAE8V,UAAUc,QACZ5W,EAAE,kBAAkBuB,YAAY,UAAUA,YAAY,aACtDwjB,EAAa3jB,SAAS,UACtB2jB,EAAa/iB,KAAK,MAAO2iB,GACzBI,EAAa/iB,KAAK,SAAU6iB,GACxBJ,EAAc,GACdzkB,EAAE,kBAAkBuB,YAAY,cAAcH,SAAS,aACvD2jB,EAAaxjB,YAAY,UACzBvB,EAAE,QAAQoB,SAAS,gBAEnBqjB,IACAM,EAAa9kB,GAAG,QAAQ,WACpBD,EAAE,kBAAkBoB,SAAS,aAC7BpB,EAAE8V,UAAUC,OACZgP,EAAaxjB,YAAY,UACzB,IAAIyjB,EAAehlB,EAAE,kBACjBilB,EAAejlB,EAAE,sBACrBA,EAAE,QAAQoB,SAAS,cACnB4jB,EAAaE,YAAYD,EAAa5I,QAAU2I,EAAa3I,SAAW,GACxE2I,EAAanW,WAAWoW,EAAahL,SAAW+K,EAAa/K,UAAY,EAC7E,IAER,MACIja,EAAE,kBAAkBoB,SAAS,UAAUG,YAAY,aACnDvB,EAAE,QAAQuB,YAAY,aAE9B,IAEAvB,EAAE,QAAQC,GAAG,WAAY,YAAY,WACjCD,EAAE,kBAAkBoB,SAAS,UAAUG,YAAY,aACnDvB,EAAE,QAAQuB,YAAY,aAC1B,GACJ,EACA4jB,OAAQ,WACJnlB,EAAEW,UAAUV,GAAG,QAAS,uBAAuB,WAC3C,IAAImlB,EAAeplB,EAAE,kBACrB,IAAMolB,EAAapjB,KAAK,OAAQ,CAC5B,IAAIqjB,EAAmBxa,OAAOiO,UAAYjO,OAAOwP,SAC7CtR,EAAMqc,EAAapjB,KAAK,YAC5B+G,EAAMA,EAAIuc,QAAQ,oBAAqBD,EAAmB,SAAW,WACrED,EAAapjB,KAAK,MAAO+G,EAC7B,CAEA/I,EAAE,mBAAmBuB,YAAY,UACjCvB,EAAE,QAAQoB,SAAS,cAGnB,IAAImJ,EAAe,IAAIgb,gBAAgB1a,OAAOkB,SAASyZ,QACvDjb,EAAakb,IAAI,OAAQ,WACzB,IAAIC,EAAS,GAAHpiB,OAAMuH,OAAOkB,SAAS4Z,SAAQ,KAAAriB,OAAIiH,EAAaE,YACzDkR,QAAQiK,eAAUrjB,EAAW,GAAImjB,GAGjC1lB,EAAE6K,QAAQoU,IAAI,YAAY,WACtBjf,EAAE,mBAAmBoB,SAAS,UAC9BpB,EAAE,QAAQuB,YAAY,aAC1B,IAEA,IAAI6M,EAAKpO,EAAE,mBAAmB4E,KAAK,OACnC5E,EAAE,QAAQ8B,QAAQ,6BAA8B,CAC5C5B,MAAO,eACP6iB,cAAe,aACfC,YAAa,OACb6C,WAAYzX,EACZgS,WAAY,OAEpB,GACJ,EACAhH,UAAW,WACPpZ,EAAE,QAAQC,GAAG,QAAS,sBAAsB,SAAUuE,EAAGshB,GAErD,GADAthB,EAAE7B,kBACE3C,EAAE,gBAAgB4E,KAAK,YAAa,CACpC,IAAImhB,IAAe/lB,EAAEwE,EAAE2C,eAAe/C,QAAQ,cAActD,QAAU+J,OAAOiO,SAE7E,GADAgI,GAAoB,EAChBiF,EAAY,CAEZ/lB,EAAE,qBAAqB0B,MAAK,SAACgX,EAAMnR,GAC/B,IAAIoR,EAAM3Y,EAAEuH,GACZoR,EAAIpX,YAAY,WAChBvB,EAAE2Y,EAAI/T,KAAK,WAAWrD,YAAY,UACtC,IAEA,IAAMkhB,EAAcziB,EAAE,mBAAmB4E,KAAK,UAC9C5E,EAAE,mBAAmBmc,YAAY,WACjCnc,EAAEyiB,GAAatG,YAAY,WAE3B,IAAI6J,EAAoBnb,OAAOiO,UAAY9Y,EAAE,sBAAsBc,OAC/DmlB,EAAiBjmB,EAAEyiB,GAAavT,SAASC,IAC7C,GAAM6W,EAEC,CACH,IAAIE,EAAY5D,IAChB,GAAI4D,EAAUplB,OACWolB,EAAU,GAAGlG,wBAAwB7F,OACxCna,EAAEyiB,GAAa,GAAGzC,wBAAwB7F,QAExDiI,EAAqB6D,EAGjC,MAVI7D,EAAqB6D,GAWnBpb,OAAOiO,UACT6I,GAER,KAAO,CACH,IAAIc,EAAcziB,EAAE,kBAAkBoF,GAAG,GAAGR,KAAK,UAC7CuhB,EAAQ,IAAIvF,EAAM6B,EAAa,CAAE2D,OAAQxE,EAA2ByE,QAASxE,IACjFsE,EAAMG,OACNtmB,EAAE,QAAQif,IAAI,gCAAgC,WAC1CkH,EAAMI,OACV,IACAvmB,EAAE,0BAA0Bif,IAAI,SAAS,WAAQkH,EAAMI,OAAS,IAChEvmB,EAAE,yBAAyBif,IAAI,SAAS,WAAQkH,EAAMI,OAAS,GACnE,CACIvmB,EAAEwE,EAAE2C,eAAe7F,SAAS,8BAC5B4hB,IACGI,IAEP,IAAIlV,EAAKpO,EAAE,mBAAmBgC,KAAK,kBAC/ByH,EAAQzJ,EAAE,8BAA8B4E,KAAK,cAGjD,GAAIkhB,GAASA,EAAM1F,WAAW,CAC1B,IAAIA,EAAa0F,EAAM1F,WACvBpgB,EAAE,sBAAsB4E,KAAK,aAAcwb,EAC/C,KAAO,CACH,GAAIpgB,EAAE,wBAAwBc,OAC1B,GAAId,EAAE2B,MAAMwD,QAAQ,0BAA0BrE,OACtCsf,EAAa,yBAEbA,EAAa,WAElB,GAAIpgB,EAAE,sBAAsBc,OAC3Bsf,EAAa,4BAEbA,EAAa,oBAErBpgB,EAAE,sBAAsB4E,KAAK,aAAcwb,EAC/C,CACA,IAAIoG,EAAe,cACnBxmB,EAAE,iBAAiB4E,KAAK,iBAAkB4hB,GAC1CxmB,EAAE,QAAQ8B,QAAQ,6BAA8B,CAC5C5B,MAAO,eACP6iB,cAAe,gBACfC,YAAa,OACb6C,WAAYzX,EAAK3E,EACjByW,WAAYsG,EACZpG,WAAYA,GAEpB,MAII,GAHIpgB,EAAEwE,EAAE2C,eAAe7F,SAAS,8BAC5B4hB,IACGI,IACFtjB,EAAE,8CAA8CsB,SAAS,mBAIvD,CACH,IAAImhB,EAAcziB,EAAE,kBAAkBoF,GAAG,GAAGR,KAAK,UAC7CuhB,EAAQ,IAAIvF,EAAM6B,EAAa,CAAE2D,OAAQ1E,EAAuB2E,QAASxE,IAC7EsE,EAAMG,OACNtmB,EAAE,QAAQif,IAAI,gCAAgC,WAC1CkH,EAAMI,OACV,IACAvmB,EAAE,0BAA0Bif,IAAI,SAAS,WAAQkH,EAAMI,OAAS,IAChEvmB,EAAE,yBAAyBif,IAAI,SAAS,WAAQkH,EAAMI,OAAS,GACnE,MAZQvmB,EAAEwE,EAAE2C,eAAe7F,SAAS,8BAC5Bqf,EAAKxH,qBAAqBxX,MACvBgf,EAAK/H,iBAAiBjX,KAYzC,GACJ,EACA8kB,iBAAkB,WAAY,IAAAtG,EAAA,KACpBuG,EAA0B,SAACliB,GAC7BA,EAAE7B,kBACF,IAAI8f,EAAcje,EAAE2C,cAAcub,QAAQ9e,OACtCuiB,EAAQ,IAAIvF,EAAM6B,EAAa,CAAE2D,OAAQxE,EAA2ByE,QAASxE,IAEjFyB,IACA6C,EAAMG,OACNtmB,EAAE,QAAQif,IAAI,gCAAgC,WAC1CkH,EAAMI,OACV,IACAvmB,EAAE,0BAA0Bif,IAAI,SAAS,WAAQkH,EAAMI,OAAS,IAChEvmB,EAAE,yBAAyBif,IAAI,SAAS,WAAQkH,EAAMI,OAAS,GACnE,EAEAvmB,EAAE,QAAQC,GAAG,QAAS,mBAAmB,SAACuE,EAAGshB,GAQzC,GAPAhF,GAAoB,EACpB9gB,EAAE,+BAA+BkE,IAAI,SACrClE,EAAE,gCAAgCkE,IAAI,SACtCwiB,EAAwBliB,IAEPA,EAAE2C,cAAc8U,UAAU0K,SAAS,wBAEnC,CACb,IAAI7O,EAAM9X,EAAEwE,EAAE2C,eAAe/C,QAAQ,mBAAmBpC,KAAK,kBACzDyH,EAAQzJ,EAAE,8BAA8B4E,KAAK,cAC7C4hB,EAAexmB,EAAE,iBAAiB4E,KAAK,kBAM3C,GALK4hB,IACDA,EAAe,cACfxmB,EAAE,iBAAiB4E,KAAK,iBAAkB4hB,IAG1CxmB,EAAE,wBAAwBc,OAC1B,GAAId,EAAEmgB,GAAMhb,QAAQ,0BAA0BrE,OAC1C,IAAIsf,EAAa,yBAEbA,EAAa,WAElB,GAAIpgB,EAAE,sBAAsBc,OAC3Bsf,EAAa,4BAEbA,EAAa,oBAEhBpgB,EAAE,sBAAsB4E,KAAK,eAC9B5E,EAAE,sBAAsB4E,KAAK,aAAcwb,IAE3C0F,GAAS9lB,EAAE,sBAAsB4E,KAAK,iBACtCwb,EAAa0F,EAAOA,EAAM1F,WAAapgB,EAAE,sBAAsB4E,KAAK,eAExEgiB,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,gBACfC,YAAa,OACb6C,WAAY/N,EAAMrO,EAClByW,WAAYsG,EACZpG,WAAYA,GAEpB,CACJ,IACApgB,EAAE,QAAQC,GAAG,QAAS,iCAAiC,SAACuE,GACpD,IAAI4J,EAAKpO,EAAE,mBAAmBgC,KAAK,kBAC/ByH,EAAQzJ,EAAE,8BAA8B4E,KAAK,cACjDgiB,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,gBACfC,YAAa,OACb6C,WAAYzX,EAAK3E,EACjByW,WAAY,aAEhBlgB,EAAE,iBAAiB4E,KAAK,iBAAkB,YAC1C8hB,EAAwBliB,EAC5B,IACAxE,EAAE,QAAQC,GAAG,QAAS,gCAAgC,SAACuE,GACnD,IAAI4J,EAAKpO,EAAE,mBAAmBgC,KAAK,kBAC/ByH,EAAQzJ,EAAE,8BAA8B4E,KAAK,cACjDgiB,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,gBACfC,YAAa,OACb6C,WAAYzX,EAAK3E,EACjByW,WAAY,aAEhBlgB,EAAE,iBAAiB4E,KAAK,iBAAkB,YAE1C,IAAM6d,EAAcziB,EAAE,mBAAmB4E,KAAK,UAC9C5E,EAAE,mBAAmBmc,YAAY,WACjCnc,EAAEyiB,GAAatG,YAAY,WAC3B3X,EAAE7B,iBACN,IACA3C,EAAE,kCAAkCC,GAAG,SAAS,WAC5C,IAAImO,EAAKpO,EAAE,mBAAmBgC,KAAK,kBAC/ByH,EAAQzJ,EAAE,8BAA8B4E,KAAK,cAC7C4hB,EAAexmB,EAAE,iBAAiB4E,KAAK,kBAC3CgiB,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,gBACfC,YAAa,QACb6C,WAAYzX,EAAK3E,EACjByW,WAAYsG,IAEhBxmB,EAAE,iBAAiBwf,WAAW,iBAClC,GACJ,EACAqH,mBAAoB,WAEhB7mB,EAAE,QAAQC,GAAG,QAAS,qBAAqB,SAAUuE,EAAGshB,GAGpD,IAAI/b,EAAS/J,EAAE2B,MAAMvB,KAAK,kCAEtB0mB,EAA2C,SADrB/c,EAAO/H,KAAK,iBACmB,QAAU,OACnE+H,EAAO/H,KAAK,gBAAiB8kB,GAE7BhG,GAAoB,EACpB9gB,EAAE,+BAA+BkE,IAAI,SACrClE,EAAE,gCAAgCkE,IAAI,SACtCM,EAAE7B,kBACF,IAAIokB,EAAqB/mB,EAAEwE,EAAE2C,eAAe7F,SAAS,WAC/CylB,GACFzD,IAEJtjB,EAAE,qBAAqB0B,MAAK,SAACgX,EAAMnR,GAE/B,IAAIoR,EAAM3Y,EAAEuH,GACZoR,EAAIpX,YAAY,WAChBvB,EAAE2Y,EAAI/T,KAAK,WAAWrD,YAAY,WAClCygB,GACJ,IACAO,IAEA,IAAIyE,EAAYhnB,EAAEwE,EAAE2C,eAAe7F,SAAS,kBACxCwW,EAAM9X,EAAEwE,EAAE2C,eAAe/C,QAAQ,mBAAmBpC,KAAK,kBACzDyH,EAAQzJ,EAAE,8BAA8B4E,KAAK,cAC7C4hB,EAAexmB,EAAE,sBAAsB4E,KAAK,mBAAqB5E,EAAE,iBAAiB4E,KAAK,kBAE7F,GAAIkhB,GAASA,EAAM1F,WAAW,CAC1B,IAAIA,EAAa0F,EAAM1F,WACvBpgB,EAAE,sBAAsB4E,KAAK,aAAcwb,EAC/C,MAAO,GAAIpgB,EAAE,sBAAsB4E,KAAK,cACpCwb,EAAapgB,EAAE,sBAAsB4E,KAAK,kBACvC,CACH,GAAI5E,EAAE,wBAAwBc,OAC1B,GAAId,EAAE2B,MAAMwD,QAAQ,0BAA0BrE,OACtCsf,EAAa,yBAEbA,EAAa,WAElB,GAAIpgB,EAAE,sBAAsBc,OAC3Bsf,EAAa,4BAEbA,EAAa,oBAErBpgB,EAAE,sBAAsB4E,KAAK,aAAcwb,EAC/C,CAEA,GAAK2G,EAmCMC,IACPJ,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,gBACfC,YAAa,QACb6C,WAAY/N,EAAMrO,EAClByW,WAAYsG,EACZpG,WAAYA,IAEhBpgB,EAAE,sBAAsBwf,WAAW,kBACnCxf,EAAE,iBAAiBwf,WAAW,kBAC9Bxf,EAAE,sBAAsBwf,WAAW,mBA9Cd,CAGrB,IAAIyH,EAASjnB,EAAEwE,EAAE2C,eAAegV,YAAY,WAAWvX,KAAK,UAC5D5E,EAAEinB,GAAQ9K,YAAY,WAEtB,IAAI6J,EAAoBnb,OAAOiO,UAAY9Y,EAAE,sBAAsBc,OAC/DmlB,EAAiBjmB,EAAEinB,GAAQ/X,SAASC,IACxC,GAAM6W,EAEC,CACH,IAAIE,EAAY5D,IAChB,GAAI4D,EAAUplB,OACWolB,EAAU,GAAGlG,wBAAwB7F,OACxCna,EAAEinB,GAAQ,GAAGjH,wBAAwB7F,QAEnDiI,EAAqB6D,EAGjC,MAVI7D,EAAqB6D,GAYrBe,IACKR,QAAoCjkB,IAApBiC,EAAE0iB,gBACnBV,EAAe,cACfxmB,EAAE,sBAAsB4E,KAAK,iBAAkB4hB,IAEnDI,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,gBACfC,YAAa,OACb6C,WAAY/N,EAAMrO,EAClByW,WAAYsG,EACZpG,WAAYA,IAGxB,CAaJ,GACJ,EACA+G,uBAAwB,WAEpBnnB,EAAE,QAAQC,GAAG,QAAS,0BAA0B,SAAUuE,GACtDsc,GAAoB,EACpB9gB,EAAE,+BAA+BkE,IAAI,SACrClE,EAAE,gCAAgCkE,IAAI,SACtCM,EAAE7B,kBACFugB,IACIljB,EAAE,+DAA+Dc,OAAS,GACmB,IAAzFd,EAAE,4EAA4Ec,QAC9Ed,EAAE,+DAA+D0B,MAAK,WAC5C1B,EAAE2B,MACR6b,MAAM,CAClBC,UAAU,EACVC,UAAU,EACVC,eAAe,EACfC,YAAY,EACZC,cAAe,IACfC,MAAO,IACPC,eAAgB,EAChBC,aAAc,EACdC,eAAe,EACfC,MAAM,EACNC,OAAO,EACPC,UAAW,wGACXC,UAAW,wGACXC,WAAY,CACR,CACIC,WAAY,QACZC,SAAU,CACNR,aAAc,KAGtB,CACIO,WAAY,OACZC,SAAU,CACNR,aAAc,MAKlC,IAGR,IAAI+I,EAAqB/mB,EAAEwE,EAAE2C,eAAe7F,SAAS,WACrDtB,EAAE,0BAA0B0B,MAAK,SAACgX,EAAMnR,GAEpC,IAAIoR,EAAM3Y,EAAEuH,GACZoR,EAAIpX,YAAY,WAChBvB,EAAE2Y,EAAI/T,KAAK,WAAWrD,YAAY,WAClCygB,GACJ,IACA,IAAIgF,EAAYhnB,EAAEwE,EAAE2C,eAAe7F,SAAS,kBACxCwW,EAAM9X,EAAEwE,EAAE2C,eAAe/C,QAAQ,2BAA2BpC,KAAK,YACjEyH,EAAQzJ,EAAEwE,EAAE2C,eAAe/C,QAAQ,2BAA2BpC,KAAK,cACvE,GAAK+kB,GAgBE,GAAIC,EAAW,CACdR,EAAexmB,EAAE,sBAAsB4E,KAAK,kBAChDgiB,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,gBACfC,YAAa,QACb6C,WAAY/N,EAAMrO,EAClByW,WAAYsG,IAEhBxmB,EAAE,sBAAsBwf,WAAW,iBACvC,MA1ByB,CAGrB,IAAIyH,EAASjnB,EAAEwE,EAAE2C,eAAegV,YAAY,WAAWvX,KAAK,UAE5D,GADA5E,EAAEinB,GAAQ9K,YAAY,WAClB6K,EAAW,CACX,IAAIR,EAAe,cACnBxmB,EAAE,sBAAsB4E,KAAK,iBAAkB4hB,GAC/CI,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,gBACfC,YAAa,OACb6C,WAAY/N,EAAMrO,EAClByW,WAAYsG,GAEpB,CACJ,CAWJ,GACJ,EACAY,2BAA4B,WACxBpnB,EAAE,QAAQC,GAAG,wBAAwB,SAAUuE,EAAGI,GAC9C,IAAI8K,EAAoB1P,EAAE,6BAA+B4E,EAAKwJ,GAAK,MAClC,IAA7BsB,EAAkB5O,SAClB4O,EAAoB1P,EAAE,6BAA+BA,EAAE,4BAA4BkE,MAAQ,OAE/FwL,EAAkBtP,KAAK,+CAClBoQ,QACAqE,KAAKjQ,EAAKyiB,gBAEf3X,EAAkBtP,KAAK,+BAClBoQ,QACAqE,KAAKjQ,EAAK0iB,iBACftnB,EAAE,kCAAkCijB,eACpCjjB,EAAE,mCAAmCijB,eAEjCre,EAAK2iB,kBACL7X,EAAkBtP,KAAK,wCAClBmB,YAAY,kBACjBmO,EAAkBtP,KAAK,iDAClBoQ,QACAqE,KAAKjQ,EAAK2iB,mBAEf7X,EAAkBtP,KAAK,wCAClBgB,SAAS,kBAGdwD,EAAK4iB,iBACL9X,EAAkBtP,KAAK,oCAClBmB,YAAY,kBACjBmO,EAAkBtP,KAAK,6CAClBoQ,QACAqE,KAAKjQ,EAAK4iB,kBAEf9X,EAAkBtP,KAAK,oCAClBgB,SAAS,iBAEtB,GACJ,EACAqmB,YAAa,WACTznB,EAAE,QAAQC,GAAG,yDAAyD,WAClED,EAAE8V,UAAUc,OAChB,GACJ,EACA8Q,gBAAiB,WACb1nB,EAAE,QAAQC,GAAG,gCAAgC,SAAUuE,EAAGgO,GACtDxS,EAAE,mBAAmB4E,KAAK,MAAO4N,EAAS5N,KAAK8N,QAAQtE,IACvDpO,EAAE,oBAAoB4E,KAAK,MAAO4N,EAAS5N,KAAK8N,QAAQoF,KAGxD,IAFA,IAAI6P,EAAYnV,EAAS5N,KAAK8N,QAAQqE,UAClC6Q,EAAYpV,EAAS5N,KAAK8N,QAAQC,oBAAoB,GAAG9C,OACpDlS,EAAI,EAAGA,EAAIiqB,EAAU9mB,OAAQnD,IAC9BiqB,EAAUjqB,GAAGqS,WACb2X,GAAaC,EAAUjqB,GAAGyQ,IASlC,GANApO,EAAE,4BAA4BgC,KAAK,WAAY2lB,GAC/C3nB,EAAE,mBAAmBK,UAAUiL,QAAQkX,GACvCxiB,EAAE,qBAAqBK,UAAUiL,QAAQkX,GACzCD,IAGIzB,EAAmB,CACnB,IAAIT,EAAmBrgB,EAAE,qCACzB2gB,EAAK/H,iBAAiByH,EAC1B,CAQA,GAP+C,SAA3CrgB,EAAE,+BAA+BkE,OACjClE,EAAE,QAAQ8B,QAAQ,qCAItB9B,EAAE,QAAQ8B,QAAQ,iCAAkC,CAAE+lB,QAAQ,IAE1D7nB,EAAE,8BAA8Bc,OAAQ,CACxC,IAAIiI,EAAM/I,EAAE,uBAAuBkE,MAC/B4jB,EAAcjd,OAAOkB,SAASyZ,OAE9BuC,EAAchf,EAAM+e,GADM,IAAfA,EAAoB,QAAU,SACIH,EAEjD3nB,EAAE8I,KAAK,CACHC,IAAKgf,EACLvS,OAAQ,MACRrN,QAAS,SAAUvD,GACXA,IACA5E,EAAE,sDAAsDuE,SACxDvE,EAAE,8BAA8B6U,KAAKjQ,GAAMrD,YAAY,UACvDvB,EAAE,+BAA+BuB,YAAY,UAC7CgiB,IACAS,IAEArjB,SAASqnB,iBAAiB,mBAAmB1c,SAAQ,SAAA2c,GACjD,IAAIC,EAAWloB,EAAEioB,GAAO7iB,GAAG,GAAGpD,KAAK,kBAC9BkmB,IAGDloB,EAAEioB,GAAO3mB,SAAS,cAClB2mB,EAAMtf,aAAa,MAAOuf,GAE1BloB,EAAE8I,KAAK,CACHC,IAAKmf,EACL1S,OAAQ,MACRrN,QAAS,SAASvD,GACd5E,EAAEioB,GAAOjmB,KAAK,MAAO4C,EAAK2f,SAC9B,IAGZ,IAER,GAER,CACJ,GACJ,EACA4D,gBAAiB,WACbnoB,EAAE,QAAQC,GAAG,2BAA2B,SAAUuE,EAAGgO,GAEjDxS,EAAE,qBAAsBwS,EAAS9C,mBAAmB9K,KAAK,YACnD4N,EAASE,QAAQwC,eAAiB1C,EAASE,QAAQ8F,WAn+B/B,SAAChG,GACnC,GAAIA,EAASE,QAAQwC,aAAc,CAC/B,IAAIkT,EAAiBpoB,EAAE,oBAAqBwS,EAAS9C,mBACvB,IAA1B0Y,EAAetnB,QACfsnB,EAAepmB,KAAK,MAAOwQ,EAASE,QAAQtE,IAG5CpO,EAAE,QAAQkB,GAAG,gBACblB,EAAE,sBAAsBoB,SAAS,UACjCpB,EAAE,iBAAiBuB,YAAY,UAAU2Y,IAAI,UAAU,SAE/D,MACIla,EAAE,sBAAsBuB,YAAY,UACpCvB,EAAE,iBAAiBoB,SAAS,UAAU8Y,IAAI,UAAW,GAE7D,CAq9BYmO,CAA8B7V,EAClC,GACJ,EACA8V,eAAgB,WACZtoB,EAAEW,UAAUV,GAAG,QAAS,wBAAwB,WAC5C,IACIsoB,EACmBvoB,EAAE,wBAAwBkE,OAC7C2G,OAAOiO,SAEPyP,EAAc,qBAGdA,EAAc,gBAGb1d,OAAO2d,SAII,IAAI5H,EAAM2H,EAAa,CAAEnC,OAAQ1E,EAAuB2E,QAASxE,IACvEyE,OACNtmB,EAAE,oCAAoCmB,WAAW,UALrC,IAAIyf,EAAM2H,EAAa,CAAEnC,OAAQxD,EAAoByD,QAAS1D,IACpE4D,OAMd,GACJ,EACAkC,eAAgB,WACZzoB,EAAEW,UAAU6a,OAAM,YAzuB1B,WAEI,IAAInK,EAAgBrR,EAAE,sBAAsB4E,KAAK,iBACjD,GAAIyM,GAA6C,IAA5BrC,SAASqC,IACvBrR,EAAE,uBAAyBA,EAAE,sBAAsBiD,YAAcjD,EAAE,sBAAsBiD,WAAWqO,QACvG,GAAItR,EAAE,sBAAsBiD,WAAWqO,QAAQpQ,GAAG,aAAc,CAC5D,IAAIuX,EAAWzY,EAAE,sBAAsBiD,WAAWqO,QAAQ1M,KAAK,cAC/D5E,EAAE,6BAA6BkE,IAAIuU,EACvC,MACIzY,EAAE,sBAAsBiD,WAAWqO,QAAQxP,QAAQ,QAG/D,CA8tBY4mB,EACJ,GACJ,EACAC,mBAAoB,WAChB3oB,EAAEW,UAAUV,GAAG,gCAAgC,WAEhB,SADFD,EAAE,uBAAuBkE,QAE1C2G,OAAOiO,SACF9Y,EAAEA,EAAE,sBAAsB,IAAI4E,KAAK,cACpC5E,EAAEA,EAAE,sBAAsB,IAAIgC,KAAK,cAAe,aAClDhC,EAAEA,EAAE,sBAAsB,IAAI4oB,SAG7B5oB,EAAEA,EAAE,sBAAsB,IAAI4E,KAAK,cACpC5E,EAAEA,EAAE,sBAAsB,IAAIgC,KAAK,cAAe,aAClDhC,EAAEA,EAAE,sBAAsB,IAAI4oB,SAI9C,GACJ,EACAC,sBAAuB,WACnB,IAYIC,EAZEC,EAAwB,WAC1B,IAAIC,EAAgBhpB,EAAE,yBAAyB4E,KAAK,WACtC5E,EAAE,iDAAiDI,KAAK,qBAAqBC,UACnFiL,SAAQ,SAAC/D,GACPvH,EAAEA,EAAEuH,GAAI3C,KAAK,WAAWqkB,IAAI,2CAA2CnoB,QAAWkoB,IACpFhpB,EAAEuH,GAAIhG,YAAY,WAClBvB,EAAEA,EAAEuH,GAAI3C,KAAK,WAAWrD,YAAY,WAE5C,IAEAghB,GACJ,EAEAviB,EAAEW,UAAUV,GAAG,UAAU,WAMrB,GAHI6oB,GACAI,aAAaJ,IAEb9oB,EAAE,0BAA0BgC,KAAK,qBAArC,CAIA+mB,IACA,IAAII,EAAUnpB,EAAE,0BAA0BipB,IAAI,+BAC1CG,EAAsBzoB,SAAS0oB,uBAAuB,iBACtDC,GAAqB,EACrBF,EAAoBtoB,OAAS,IAC7BwoB,EAAqBF,GAAuBA,EAAoB,GAAGpJ,wBAAwB7F,OAAS,GAExG,IACIoP,EADAC,EAAkB7oB,SAASmc,qBAAqB,UAAU,GAAGkD,wBAAwB7Q,IAAM4L,EAE3F0O,EAAeN,EAAQ7nB,SAAS,WACpCioB,GAAmBD,IAAuBE,EAC1C,IAAItD,EAAYlmB,EAAE,qDACdupB,IAAoBE,IACpBX,EAAcznB,YAAW,WACrB8nB,EAAQ/nB,SAAS,WAAWG,YAAY,YAAY2Y,IAAI,UAAW,IACnE,IAAIwP,EAAa1a,SAASkX,EAAUhM,IAAI,WAGxCgM,EAAUhM,IAAI,SAAUY,GAA8B4O,EAAa,KAEvE,GAAG,OAEFH,GAAmBE,IAEpBzpB,EAAE,kCAAkCgC,KAAK,gBAAiB,SAC1DmnB,EAAQ5nB,YAAY,WAAWH,SAAS,YAAY8Y,IAAI,UAAW,QACnEgM,EAAUhM,IAAI,SAAU,IA3B5B,CA6BJ,IAEA,IAAMyP,EAAiB3pB,EAAE,kCACnB4pB,EAAe5pB,EAAE,oCAEvBA,EAAEW,UAAUioB,OAAM,SAAApkB,GACTmlB,EAAezoB,GAAGsD,EAAEZ,SACsB,IAAxC+lB,EAAeE,IAAIrlB,EAAEZ,QAAQ9C,QAC5B8oB,EAAa1oB,GAAGsD,EAAEZ,SACgB,IAAtCgmB,EAAaC,IAAIrlB,EAAEZ,QAAQ9C,SACvBd,EAAE,qBAAqBsB,SAAS,YAChC0gB,IAEJ+G,IAER,GACJ,EACAe,8BAA+B,WAC3B9pB,EAAEW,UAAU6a,OAAM,WAEd,IAAIuO,EAAkB/pB,EAAE,kCAAkCgC,KAAK,oBAC3DgoB,EAAiBhqB,EAAE,kCAAkCgC,KAAK,mBAC9DhC,EAAE,iDAAiDgC,KAAK,KAAMgoB,GAC9DhqB,EAAE,uDAAuDgC,KAAK,KAAM+nB,GAEpE,IAAIE,EAAmBjqB,EAAE,2DAErBkqB,EADsBD,EAAiBjoB,KAAK,oBACG,UAE/CmoB,EADqBF,EAAiBjoB,KAAK,mBACE,UACjDhC,EAAE,0EAA0EgC,KAAK,KAAMmoB,GACvFnqB,EAAE,uFAAuFgC,KAAK,KAAMkoB,GACpGD,EAAiBjoB,KAAK,mBAAoBkoB,GAC1CD,EAAiBjoB,KAAK,kBAAmBmoB,GAEzCnqB,EAAE,sDAAsDgC,KAAK,KAAM,oBACnEhC,EAAE,wDAAwDgC,KAAK,KAAM,mBACzE,GACJ,EACAooB,oCAAqC,WACjCpqB,EAAE,0CAA0CC,GAAG,eAAe,SAASC,EAAOsd,GAC1E,IAAI6M,EAAarqB,EAAE,0CAA0C4E,KAAK,aAC9D5E,EAAE6K,QAAQwR,QAAU,UAASgO,EAAa,GAC1CrqB,EAAE6K,QAAQwR,QAAU,SAAQgO,EAAa,GAC7C,IAEI7G,EAMAC,EARA6G,EAAe9M,EAAM8M,aAAe,EACpCC,EAAa/M,EAAMgN,YAAcH,EAAa,GAG9C7G,EADA8G,GAAgBC,GAAeD,EAAe,EAAK,EACnCtqB,EAAE,8BAA8B4E,KAAK,iBAAiB0gB,QAAQ,MAAOgF,EAAe,GAAGhF,QAAQ,MAAOiF,GAEtGvqB,EAAE,8BAA8B4E,KAAK,iBAAiB0gB,QAAQ,MAAOgF,GAAchF,QAAQ,MAAOiF,GAIlH9G,EADC6G,EAAe,GAAMC,EACNvqB,EAAE,8BAA8B4E,KAAK,iBAAiB0gB,QAAQ,MAAOgF,EAAe,GAAGhF,QAAQ,MAAOiF,GAEtGvqB,EAAE,8BAA8B4E,KAAK,iBAAiB0gB,QAAQ,MAAOgF,GAAchF,QAAQ,MAAOiF,GAEtHvqB,EAAE,+CAA+CgC,KAAK,aAAcwhB,GACpExjB,EAAE,+CAA+CgC,KAAK,aAAcyhB,GAEpEzjB,EAAE,gBAAgB0B,MAAK,WACa,SAAhC1B,EAAE2B,MAAMK,KAAK,eAA4BhC,EAAE2B,MAAMK,KAAK,WAAY,MAAQhC,EAAE2B,MAAMK,KAAK,WAAY,IACvG,GACJ,GACJ,EACAyoB,oBAAqB,WACjBzqB,EAAEW,UAAU6a,OAAM,WACd,GAAIxb,EAAE,mDAAmDc,QACH,IAA9Cd,EAAE,iCAAiCc,OAAc,CACjD,IAAIiI,EAAM/I,EAAE,uBAAuBkE,MAC/BkS,EAAMpW,EAAE,mBAAmB4E,KAAK,OAChCkjB,EAAcjd,OAAOkB,SAASyZ,OAE9BuC,EAAchf,EAAM+e,GADM,IAAfA,EAAoB,QAAU,SACI1R,EACjDpW,EAAE8I,KAAK,CACHC,IAAKgf,EACLvS,OAAQ,MACRrN,QAAS,SAAUvD,GACXA,IACA5E,EAAE,8BAA8B6U,KAAKjQ,GACrC5E,EAAE,+BAA+BuB,YAAY,UAC7CgiB,IACAS,IAEArjB,SAASqnB,iBAAiB,mBAAmB1c,SAAQ,SAAA2c,GACjD,IAAIC,EAAWloB,EAAEioB,GAAO7iB,GAAG,GAAGpD,KAAK,kBAC9BkmB,IAGDloB,EAAEioB,GAAO3mB,SAAS,cAClB2mB,EAAMtf,aAAa,MAAOuf,GAE1BloB,EAAE8I,KAAK,CACHC,IAAKmf,EACL1S,OAAQ,MACRrN,QAAS,SAASvD,GACd5E,EAAEioB,GAAOjmB,KAAK,MAAO4C,EAAK2f,SAC9B,IAGZ,IAER,GAER,CAER,GACJ,EACAmG,uBAAwB,WACpB1qB,EAAEW,UAAU6a,OAAM,WACd,IAAIjK,EAAOvR,EAAE,iCAAiC4E,KAAK,eAC/C2M,SAAmD,cAATA,GAC1CvR,EAAE,kCAAkCI,KAAK,0BAA0BsB,MAAK,WACpE,GAAI1B,EAAE2B,MAAMiD,KAAK,UAAY2M,EAEzB,OADAvR,EAAE2B,MAAMinB,SACD,CAEf,GAER,GACJ,EACA+B,gBAAiB,WACb3qB,EAAEW,UAAUV,GAAG,QAAS,0BAA0B,SAAUuE,GACxD,IAcIomB,EAdAC,EAAkB7qB,EAAE2B,MAAMiD,KAAK,aAC/BkmB,EAAc9qB,EAAEwE,EAAE2C,eAAevC,KAAK,eACtCuZ,EAAQne,EAAEwE,EAAE2C,eAAevC,KAAK,aAK9BmmB,EAAW,CACbxZ,KALOvR,EAAEwE,EAAE2C,eAAevC,KAAK,QAM/BomB,SALWrpB,KAAK+gB,QAAQuI,SAMxBnT,IALM9X,EAAE,mBAAmB4E,KAAK,OAMhC6E,MALQzJ,EAAE,8BAA8B4E,KAAK,eAO7ChB,EAASjC,KAAK+gB,QAAQ9e,OAEtBiH,OAAOiO,UACPlV,GAAkB,OAClBgnB,EAAU,wCAEVhnB,GAAkB,QAClBgnB,EAAU,wCAEd,IAAI7sB,EAAI,IAAI6iB,EAAMhd,EAAQ,CAAEwiB,OAAQ1E,EAAuB2E,QAASxE,IAChEqJ,EAAelrB,EAAE2B,MAAMyC,QAAQ,kCAC/B8mB,EAAapqB,OAAS,IACtBoqB,EAAa3pB,YAAY,WACzB2pB,EAAaloB,SAAS,iEAAiEzB,YAAY,YAG7E,OAAtB0f,GAA+B3Y,EAAeU,oBAC9C+hB,EAA6B,oBAAI,GAErC/qB,EAAE8V,UAAUc,QACZ5W,EAAE8I,KAAK,CACHC,IAAK8hB,EACLrV,OAAQ,OACR5Q,KAAMmmB,EACN5iB,QAAS,SAAUvD,GAAM,IAAAumB,EAAA,KACrBnrB,EAAE4qB,GAAS/V,KAAKjQ,GAChB5E,EAAE8V,UAAUC,OArtC5B/V,EAAE,iBAAiBijB,eACnBjjB,EAAE,iBAAiB0B,MAAK,WAIpB,IAAIkI,EAHJ5J,EAAE2B,MAAMuY,IAAI,CACRvM,QAAS,SAKT/D,EADAjI,KAAKypB,OAAOtqB,OAAS,EACba,KAAKypB,OAAO,GAAGC,UAEfrrB,EAAE2B,MAAMyC,QAAQ,kBAAkBhE,KAAK,aAAayU,OAElD7U,EAAE2B,MAAMqB,SAAS,UAKvBhB,KAAK,aAAc4H,GAE3B5J,EAAE2B,MAAMshB,aAAa,WAErBjjB,EAAE2B,MAAMoB,SAAS3C,KAAK,oBAAoBe,WAAW,OACzD,IAisCgBpD,EAAEuoB,OACEzb,OAAOiO,UACP9Y,EAAE,+CAA+CgC,KAAK,aAAc8oB,GAExE9qB,EAAE,kDAAkDif,IAAI,SAAS,WAC7DlhB,EAAEwoB,QACFvmB,EAAE,uBAAuBiD,WAAWjB,KAAK,aAAcmc,EAC3D,IACAne,EAAE,iDAAiDif,IAAI,SAAS,WAC5Djf,EAAEjC,EAAEooB,OAAO5kB,YAAY,WACvBvB,EAAEjC,EAAEooB,OAAO/kB,SAAS,UAAUY,KAAK,cAAe,QAClDjE,EAAEutB,OAAQ,EACVvtB,EAAEwtB,2BAA2BxqB,QACzBhD,EAAEytB,QAAQnF,SACVtoB,EAAEytB,QAAQnF,UAEdrmB,EAAE,QAAQuB,YAAY,cACtBZ,SAAS8qB,oBAAoB,UAAWN,EAAKO,WACjD,IACA1rB,EAAE,wCAAwCgC,KAAK,CAC3C,gBAAiB,OACjB,mBAAoB,2BAGxB,IAAI2pB,EAAc3rB,EAAE4qB,EAAU,iCAC1Be,EAAY7qB,QACZH,SAASM,KAAK2qB,cAAc,IAAIC,YAAY,kBAAmB,CAACC,OAAQH,IAEhF,GAER,GACJ,EACAI,kBAAmB,WACf/rB,EAAEW,UAAUV,GAAG,QAAS,0BAA0B,WAC9C,IAAM+rB,EAAgBhsB,EAAEisB,WACpBljB,EAAM/I,EAAE,0BAA0B4E,KAAK,UACvCN,EAAOtE,EAAEA,EAAE,gCAAgC,IAC3CuR,EAAOjN,EAAKlE,KAAK,kCAAkC8C,OAAOgpB,OAE1DtiB,EADY5J,EAAE,kBAAkBkE,MAAMgoB,OAASlsB,EAAE,sBAAsBkE,MAAMgoB,OACzD,MAAQ3a,EAChCjN,EAAKlE,KAAK,mBAAmB8D,IAAIqN,GACjC,IACI4a,EADgBnsB,EAAE,uBAAuBkE,MAClBpD,OAAS,EAEpC,GAA0B,OAAtBmgB,EAA4B,CAE5B,IAAI/X,EAAoBlJ,EAAE,gCAAiCsE,GAC3DgE,EAAeW,WAAWC,EAAmB8iB,EACjD,MACIA,EAAc3iB,UAGb8iB,GACDH,EAAcI,MAAK,WACf9nB,EAAKwR,UAAUc,QACf5W,EAAE8I,KAAK,CACHC,IAAKA,EACLyM,OAAQ,OACR5Q,KAAMN,EAAK+nB,YACXlkB,QAAS,SAAUvD,GACfN,EAAKwR,UAAUC,OACf/V,EAAE,gCAAgCkiB,UAClCliB,EAAE,gCAAgCiiB,SAClCgC,EAAiBjkB,EAAE,gCAAiC4E,IAEtB,IAA1BA,EAAK4N,SAASrK,QACdye,UAAUljB,KAAK,CACXxD,MAAO,cACP6iB,cAAe,eACfC,YAAa,YACb6C,WAAYjc,IAGhBgd,UAAUljB,KAAK,CACXxD,MAAO,cACP6iB,cAAe,eACfC,YAAa,cACb6C,WAAYjc,GAIxB,EACApB,MAAO,SAAU5D,GAEbgiB,UAAUljB,KAAK,CACXxD,MAAO,cACP6iB,cAAe,eACfC,YAAa,cACb6C,WAAYjc,IAGhBtF,EAAKwR,UAAUC,OACf/V,EAAE,gCAAgCkiB,UAClCliB,EAAE,gCAAgCiiB,SAClCgC,EAAiBjkB,EAAE,gCAAiC4E,EAAKuJ,aAC7D,GAER,GAER,GACJ,EAEAme,UAAW,WACPtsB,EAAE,QAAQC,GAAG,QAAS,uBAAuB,SAAUuE,GACnDA,EAAExD,iBACF,IAAIurB,EAAgBvsB,EAAE2B,MAClBoH,EAAMwjB,EAAc3nB,KAAK,QACzB4nB,EAAW7qB,KAAKyM,GAQpB,GAPApO,EAAE,oCAAoCka,IAAI,qBAAsB,WAC/C,qBAAbsS,GAAoC3hB,OAAOiO,SAG3C9Y,EAAE,wBAAwBkE,KAAI,GAF9BlE,EAAE,wBAAwBkE,KAAI,GAK9B2G,OAAOiO,SACP,IAAI2T,EAAiBzsB,EAAE,iCACnByiB,EAAc8J,EAAc3nB,KAAK,sBAEjC6nB,EAAiBzsB,EAAE,0BACnByiB,EAAc8J,EAAc3nB,KAAK,UAErC6nB,EAAevrB,GAAG,UAClBlB,EAAE8I,KAAK,CACHC,IAAKA,EACLhF,KAAM,MACN0T,SAAU,OACVtP,QAAS,SAAUvD,GACf6nB,EAAe5X,KAAKjQ,GAChBiG,OAAOiO,UACP9Y,EAAE,mBAAmBK,UAAUiL,QAAQkX,GAE3Che,EAAE7B,kBAEU,IAAIie,EAAM6B,EAAa,CAAE2D,OAAQxD,EAAoByD,QAAS1D,IACpE2D,MACV,IAGQ,IAAI1F,EAAM6B,EAAa,CAAE2D,OAAQxD,EAAoByD,QAAS1D,IACpE2D,MAEd,GACJ,EAGAoG,MAAO,WACH1sB,EAAEW,UAAUV,GAAG,QAAS,gCAAgC,SAAUuE,GAC9DxE,EAAE,8CAA8CiiB,SAChDjiB,EAAE2B,MAAMP,SAAS,+BACjByf,EAAYpf,oBAAoB,qBAChCof,EAAYjhB,cAAc,oBAAqB,yBAA0B,qBACzE4E,EAAE7B,iBACN,IAEA3C,EAAEW,UAAUV,GAAG,QAAS,uCAAuC,SAAUuE,GACrExE,EAAE,qBAAqBgC,KAAK,QAAQ,WAAaL,KAAKqK,KAAOrK,KAAKqK,KAAKsZ,QAAQ,uBAAwB,wBAA0B,IACjItlB,EAAE,QAAQka,IAAI,WAAY,UAC1Bla,EAAE,4BAA4Bka,IAAI,UAAW,SAC7Cla,EAAE,0BAA0Bka,IAAI,UAAW,QAE3C,IACI/K,EACA0L,EAAe7a,EAAE,UAAUia,SAC3B0S,EAAa3sB,EAAE6K,QAAQoP,SAC3B,GAAI0S,EAAa,IACbxd,EAAM0L,EALa,OAMhB,CACH,IAAI+R,EAAuB5sB,EAAE,mDAAmDia,SAGhF9K,EAAMwd,GAFmB3sB,EAAE,+CAA+Cia,SAC9B2S,GATzB,EAWvB,CACA5sB,EAAE,4BAA4Bka,IAAI,MAAO/K,GACzCnP,EAAE2B,MAAMP,SAAS,+BACjBoD,EAAE7B,kBACFgf,GACJ,IAGA3hB,EAAEW,UAAUV,GAAG,QAAS,kEAAkE,SAAUuE,GAChGxE,EAAE,4BAA4Bka,IAAI,UAAW,QAC7Cla,EAAE,0BAA0Bka,IAAI,UAAW,SAC3Cla,EAAE,uCAAuCuB,YAAY,+BACrD,IAAIsrB,EAAW7sB,EAAE,kBAAkB4E,KAAK,QACxC5E,EAAE,kBAAkBI,KAAK,mBAAmB8C,KAAK2pB,GACjD7sB,EAAE,QAAQka,IAAI,WAAY,WAC1B1V,EAAE7B,kBACFqf,GACJ,IAGAhiB,EAAEW,UAAUV,GAAG,QAAS,0CAA0C,SAAUuE,GACxExE,EAAE2B,MAAMyC,QAAQ,qBAAqB8d,UACrCliB,EAAE,gCAAgCuB,YAAY,+BAC9C,IAAIsrB,EAAW7sB,EAAE,kBAAkB4E,KAAK,QACxC5E,EAAE,kBAAkBI,KAAK,mBAAmB8C,KAAK2pB,GACjDroB,EAAE7B,kBAEF3C,EAAE,yBAAyBe,OAC/B,GACJ,EAEA+rB,0BAA2B,WAEvB9sB,EAAE,0BAA0BC,GAAG,SAAS,WAAa,IAAA8sB,EAAA,KAC7CC,EAAMC,KAAKD,MAAMviB,WACrBzK,EAAE2B,MAAMK,KAAK,oBAAqBgrB,GAClC,IAAI7D,EAAUnpB,EAAE,0BAA0BipB,IAAI,+BAC1CG,EAAsBzoB,SAAS0oB,uBAAuB,iBACtDC,GAAqB,EACrBF,EAAoBtoB,OAAS,IAC7BwoB,EAAqBF,GAAuBA,EAAoB,GAAGpJ,wBAAwB7F,OAAS,GAExG,IACIoP,EADAC,EAAkBzI,EAAcf,wBAAwB7Q,IAAM4L,EAE9D0O,EAAeN,EAAQ7nB,SAAS,WACpCioB,GAAmBD,IAAuBE,EAC1CnoB,YAAW,YACHrB,EAAE+sB,GAAM/qB,KAAK,uBAAyBgrB,GACtChtB,EAAE+sB,GAAM/qB,KAAK,oBAAqB,IAGlCunB,IAAoBE,KAENzpB,EAAE,0BAA0BI,KAAK,qBAAqBC,UAC5DiL,SAAQ,SAAC/D,GACbvH,EAAEuH,GAAIhG,YAAY,WAClBvB,EAAEA,EAAEuH,GAAI3C,KAAK,WAAWrD,YAAY,UACxC,IAEcvB,EAAE,0BAA0BipB,IAAI,+BACtC1nB,YAAY,WAAWH,SAAS,YAEhD,GAAG,IACP,GACJ,EAGA8rB,oBAAqB,WACjB,IAAI9W,EAAMpW,EAAEW,UAAUP,KAAK,WAAWwE,KAAK,OAC3C5E,EAAEW,UAAUV,GAAG,QAAS,mBAAmB,WACvC2mB,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,qBACfC,YAAa,MACb6C,WAAYzP,GAEpB,GACJ,E,6BC7gDS,SAAAzK,EAAAvN,GAAA,OAAAuN,EAAA,mBAAAjN,QAAA,iBAAAA,OAAAyuB,SAAA,SAAA/uB,GAAA,cAAAA,CAAA,WAAAA,GAAA,OAAAA,GAAA,mBAAAM,QAAAN,EAAAgvB,cAAA1uB,QAAAN,IAAAM,OAAAa,UAAA,gBAAAnB,CAAA,EAAAuN,EAAAvN,EAAA,CAEbV,EAAOD,QAAU,SAAU4vB,GACA,mBAAZA,EACPA,IAC0B,WAAnB1hB,EAAO0hB,IACdhvB,OAAOivB,KAAKD,GAAS/hB,SAAQ,SAAUpM,GACP,mBAAjBmuB,EAAQnuB,IACfmuB,EAAQnuB,IAEhB,GAER,C,8BCVAxB,EAAOD,QAAU,WAGjBuC,EAAEW,UAAUV,GAAG,QAAS,qDAAqD,SAAUuE,GACnFA,EAAExD,iBAEF,IAAIusB,EAAgBvtB,EAAE2B,MAAMiD,KAAK,MAC7B4oB,EAAe,GACfC,EAAiBztB,EAAE2B,MAAMiD,KAAK,aAElC,OAAQ2oB,GACR,IAAK,QACDC,EAAe,OACf,MAEJ,IAAK,YACDA,EAAe,MACf,MAEJ,QACIA,EAAe,QAInB,IAAIE,EAAeD,EAAe7c,UAAW6c,EAAe7c,UAAU,EAAG6c,EAAe3sB,QAAQJ,QAAQ,KAAO,EAAI+sB,EAAe3sB,QAE/Hd,EAAE2B,MAAMwD,QAAQ,gCAAgCrE,OAE/C8lB,UAAUljB,KAAK,CACX,MAAS,eACT,cAAiB,YACjB,YAAe,QACf,WAAc6pB,IAIlB3G,UAAUljB,KAAK,CACX,MAAS,SACT,cAAiB6pB,EACjB,aAAgBC,EAChB,aAAgBE,GAG5B,IAEA1tB,EAAEW,UAAU6a,OAAM,WACd,GAAIxb,EAAE,gCAAgCc,OAAO,CAEzC,IAAM6sB,EAAW,IAAIzM,kBAAiB,WAElC,IAAKlhB,EAAE,+BAA+Bc,OAAO,CACzC,IAAIyU,EAAYvV,EAAE,gCACd+I,EAAMwM,EAAU3Q,KAAK,OACZ2Q,EAAUtS,SAAS,OACzBjB,KAAK,MAAO+G,GACnBwM,EAAUnU,SAAS,8BACnBmU,EAAUhU,YAAY,8BAC1B,CACJ,IAEAosB,EAASpM,QAAQ5gB,SAAS8H,cAAc,qBAAsB,CAC1DgZ,YAAY,EACZmM,gBAAiB,CAAC,WAGtBD,EAASpM,QAAQ5gB,SAAS8H,cAAc,4BAA6B,CACjEgZ,YAAY,EACZmM,gBAAiB,CAAC,WAGtBD,EAASpM,QAAQ5gB,SAAS8H,cAAc,qBAAsB,CAC1DgZ,YAAY,EACZmM,gBAAiB,CAAC,UAE1B,CACJ,GAEA,C,2PC/EA,IAAIC,EAAa1rB,EAAQ,IAGrB2rB,EAA0B,WAAJ,oBAAJC,KAAI,YAAApiB,EAAJoiB,QAAoBA,MAAQA,KAAK1vB,SAAWA,QAAU0vB,KAGxEC,EAAOH,GAAcC,GAAYG,SAAS,cAATA,GAErCvwB,EAAOD,QAAUuwB,C,qBCRjB,IAGItvB,EAHOyD,EAAQ,IAGDzD,OAElBhB,EAAOD,QAAUiB,C,6BCLJ,SAAAiN,EAAAvN,GAAA,OAAAuN,EAAA,mBAAAjN,QAAA,iBAAAA,OAAAyuB,SAAA,SAAA/uB,GAAA,cAAAA,CAAA,WAAAA,GAAA,OAAAA,GAAA,mBAAAM,QAAAN,EAAAgvB,cAAA1uB,QAAAN,IAAAM,OAAAa,UAAA,gBAAAnB,CAAA,EAAAuN,EAAAvN,EAAA,UAAA8vB,EAAA1pB,EAAA/F,GAAA,QAAAI,EAAA,EAAAA,EAAAJ,EAAAqC,OAAAjC,IAAA,KAAAT,EAAAK,EAAAI,GAAAT,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAA+vB,cAAA,YAAA/vB,MAAAgwB,UAAA,GAAA/vB,OAAAC,eAAAkG,EAAA6pB,EAAAjwB,EAAAc,KAAAd,EAAA,WAAAiwB,EAAAxvB,GAAA,IAAAlB,EAAA,SAAAkB,EAAAJ,GAAA,aAAAkN,EAAA9M,OAAA,OAAAA,EAAA,IAAA2F,EAAA3F,EAAAH,OAAA4vB,aAAA,YAAA9pB,EAAA,KAAA7G,EAAA6G,EAAA1G,KAAAe,EAAAJ,GAAA,wBAAAkN,EAAAhO,GAAA,OAAAA,EAAA,UAAA4wB,UAAA,kEAAA9vB,EAAA+vB,OAAAC,QAAA5vB,EAAA,CAAA6vB,CAAA7vB,EAAA,0BAAA8M,EAAAhO,OAAA,GAEb,IAAMgC,EAAY,0DAElBjC,EAAOD,QAAO,WAQT,OAZQ+G,EAKT,SAAAoc,EAAa/e,EAASQ,GAAmB,IAAXssB,EAAMrsB,UAAAxB,OAAA,QAAAyB,IAAAD,UAAA,GAAAA,UAAA,GAAC,CAAC,GAL7B,SAAAssB,EAAAxvB,GAAA,KAAAwvB,aAAAxvB,GAAA,UAAAmvB,UAAA,qCAK8BM,CAAA,KAAAjO,GACnCjf,KAAKwkB,MAAQtkB,EACbF,KAAK+pB,WAAa/pB,KAAKmtB,aAAa3vB,KAAKwC,MACzCA,KAAK2pB,OAAQ,EACb3pB,KAAK4pB,2BAA6B,KAClC5pB,KAAK6pB,QAAUntB,OAAO0wB,OAAO,CAAE3I,OAAQ,KAAMC,QAAS,MAAQhkB,GAC9DV,KAAKgtB,OAASA,CAClB,EAZSlwB,EAYR,EAAAS,IAAA,aAAAN,MAED,SAAYsB,GACR,IAAIC,EAAiBH,EAAE2B,KAAKwkB,OAAO/lB,KAAKT,GAAWU,UAAUC,QAAO,SAAClB,GAAQ,OAAOA,EAAEmB,YAAc,IAC9FE,EAAmBN,EAAeO,QAAQC,SAASC,eACrDV,EAAMW,UAAiC,IAArBJ,IAClBN,EAAeA,EAAeW,OAAS,GAAGC,QAC1Cb,EAAMc,mBAELd,EAAMW,UAAYV,EAAeW,OAAS,GAAKL,IAAqBN,EAAeW,OAAS,IAC7FX,EAAe,GAAGY,QAClBb,EAAMc,iBAEd,GAAC,CAAA9B,IAAA,eAAAN,MAED,SAAasB,GACa,KAAlBA,EAAM8uB,QACNrtB,KAAK4kB,QACoB,IAAlBrmB,EAAM8uB,SACbrtB,KAAKstB,WAAW/uB,EAExB,GAAC,CAAAhB,IAAA,kBAAAN,MAED,WAAkB,IAAAuhB,EAAA,KAKdngB,EAAE2B,KAAKwkB,OAAOlH,IAAI,QAAS,YAJV,SAACza,GACdA,EAAE7B,kBACFwd,EAAKoG,OACT,EACiDpnB,KAAKwC,OACtDhB,SAASkb,iBAAiB,UAAWla,KAAK+pB,WAC9C,GAAC,CAAAxsB,IAAA,OAAAN,MAED,WACI+C,KAAK4pB,2BAA6B5qB,SAASC,cAC3C,IAAIqmB,EAASjnB,EAAE2B,KAAKwkB,OACpBnmB,EAAE,QAAQoB,SAAS,cACnB6lB,EAAO1lB,YAAY,UAAUS,KAAK,cAAe,SAMjDL,KAAKutB,kBAEL,IAAIrwB,EAAI8C,KACRN,YAAW,WACP4lB,EAAO7lB,SAAS,WARK6lB,EAAO7mB,KAAKT,GAAWU,UAAUC,QAAO,SAAClB,GAAQ,OAAOA,EAAEmB,YAAc,IAC9E,GAAGQ,QASdlC,EAAE2sB,QAAQpF,QACVvnB,EAAE2sB,QAAQpF,OAAO+I,MAAM,KAAMtwB,EAAEyD,UAEvC,GAAG,GAEHX,KAAK2pB,OAAQ,CACjB,GAAC,CAAApsB,IAAA,QAAAN,MAED,WAAQ,IAAAusB,EAAA,KACJ,GAAKxpB,KAAK2pB,OAGN3pB,KAAK4pB,2BAA4B,CACjC,IAAItE,EAASjnB,EAAE2B,KAAKwkB,OACpBc,EAAO1lB,YAAY,WACnB0lB,EAAOhI,IAAI,iBAAiB,WAClBgI,EAAO3lB,SAAS,aAClB2lB,EAAO7lB,SAAS,UAAUY,KAAK,cAAe,QAC9CmpB,EAAKG,OAAQ,EACPtrB,EAAEmrB,EAAKI,4BAA4BrqB,GAAG,WACxCiqB,EAAKI,2BAA2BxqB,QAG5C,IACIY,KAAK6pB,QAAQnF,SACb1kB,KAAK6pB,QAAQnF,QAAQ8I,MAAM,KAAM7sB,WAErCtC,EAAE,QAAQuB,YAAY,cACtBZ,SAAS8qB,oBAAoB,UAAW9pB,KAAK+pB,WACjD,CACJ,GAAC,CAAAxsB,IAAA,SAAAN,MAED,WACI,OAAO+C,KAAK2pB,KAChB,IA9FS7sB,GAAAyvB,EAAA1pB,EAAAjF,UAAAd,GAAAI,GAAAqvB,EAAA1pB,EAAA3F,GAAAR,OAAAC,eAAAkG,EAAA,aAAA4pB,UAAA,IAAA5pB,EAAA,IAAAA,EAAA/F,EAAAI,CA8FR,CA1FS,E,qBCJd,IAAIuwB,EAAWjtB,EAAQ,IACnB6qB,EAAM7qB,EAAQ,IACdktB,EAAWltB,EAAQ,IAMnBmtB,EAAYC,KAAKC,IACjBC,EAAYF,KAAKG,IAqLrBhyB,EAAOD,QA7HP,SAAkBkyB,EAAMC,EAAMthB,GAC5B,IAAIuhB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAiB,EACjBnR,GAAU,EACVoR,GAAS,EACTrR,GAAW,EAEf,GAAmB,mBAAR4Q,EACT,MAAM,IAAIpB,UAzEQ,uBAmFpB,SAAS8B,EAAWC,GAClB,IAAIC,EAAOV,EACPW,EAAUV,EAKd,OAHAD,EAAWC,OAAWvtB,EACtB4tB,EAAiBG,EACjBN,EAASL,EAAKR,MAAMqB,EAASD,EAE/B,CAqBA,SAASE,EAAaH,GACpB,IAAII,EAAoBJ,EAAOJ,EAM/B,YAAyB3tB,IAAjB2tB,GAA+BQ,GAAqBd,GACzDc,EAAoB,GAAON,GANJE,EAAOH,GAM8BJ,CACjE,CAEA,SAASY,IACP,IAAIL,EAAOtD,IACX,GAAIyD,EAAaH,GACf,OAAOM,EAAaN,GAGtBL,EAAU5uB,WAAWsvB,EA3BvB,SAAuBL,GACrB,IAEIO,EAAcjB,GAFMU,EAAOJ,GAI/B,OAAOE,EACHX,EAAUoB,EAAad,GAJDO,EAAOH,IAK7BU,CACN,CAmBqCC,CAAcR,GACnD,CAEA,SAASM,EAAaN,GAKpB,OAJAL,OAAU1tB,EAINwc,GAAY8Q,EACPQ,EAAWC,IAEpBT,EAAWC,OAAWvtB,EACfytB,EACT,CAcA,SAASe,IACP,IAAIT,EAAOtD,IACPgE,EAAaP,EAAaH,GAM9B,GAJAT,EAAWvtB,UACXwtB,EAAWnuB,KACXuuB,EAAeI,EAEXU,EAAY,CACd,QAAgBzuB,IAAZ0tB,EACF,OAzEN,SAAqBK,GAMnB,OAJAH,EAAiBG,EAEjBL,EAAU5uB,WAAWsvB,EAAcf,GAE5B5Q,EAAUqR,EAAWC,GAAQN,CACtC,CAkEaiB,CAAYf,GAErB,GAAIE,EAIF,OAFAlH,aAAa+G,GACbA,EAAU5uB,WAAWsvB,EAAcf,GAC5BS,EAAWH,EAEtB,CAIA,YAHgB3tB,IAAZ0tB,IACFA,EAAU5uB,WAAWsvB,EAAcf,IAE9BI,CACT,CAGA,OA3GAJ,EAAOP,EAASO,IAAS,EACrBR,EAAS9gB,KACX0Q,IAAY1Q,EAAQ0Q,QAEpB+Q,GADAK,EAAS,YAAa9hB,GACHghB,EAAUD,EAAS/gB,EAAQyhB,UAAY,EAAGH,GAAQG,EACrEhR,EAAW,aAAczQ,IAAYA,EAAQyQ,SAAWA,GAoG1DgS,EAAUG,OApCV,gBACkB3uB,IAAZ0tB,GACF/G,aAAa+G,GAEfE,EAAiB,EACjBN,EAAWK,EAAeJ,EAAWG,OAAU1tB,CACjD,EA+BAwuB,EAAUI,MA7BV,WACE,YAAmB5uB,IAAZ0tB,EAAwBD,EAASY,EAAa5D,IACvD,EA4BO+D,CACT,C,qBC5LA,IAAI/C,EAAO7rB,EAAQ,IAsBnBzE,EAAOD,QAJG,WACR,OAAOuwB,EAAKf,KAAKD,KACnB,C,wQCnBA,IAAIa,EAA8B,gBAAJ,IAANuD,EAAM,YAAAzlB,EAANylB,KAAsBA,GAAUA,EAAO/yB,SAAWA,QAAU+yB,EAEpF1zB,EAAOD,QAAUowB,C,uCCHjB,IAAIwD,EAAWlvB,EAAQ,IACnBitB,EAAWjtB,EAAQ,IACnBmvB,EAAWnvB,EAAQ,IAMnBovB,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAe1iB,SA8CnBtR,EAAOD,QArBP,SAAkBmB,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI0yB,EAAS1yB,GACX,OA1CM,IA4CR,GAAIwwB,EAASxwB,GAAQ,CACnB,IAAI+yB,EAAgC,mBAAjB/yB,EAAMgzB,QAAwBhzB,EAAMgzB,UAAYhzB,EACnEA,EAAQwwB,EAASuC,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAAT/yB,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQyyB,EAASzyB,GACjB,IAAIizB,EAAWL,EAAWvqB,KAAKrI,GAC/B,OAAQizB,GAAYJ,EAAUxqB,KAAKrI,GAC/B8yB,EAAa9yB,EAAMkzB,MAAM,GAAID,EAAW,EAAI,GAC3CN,EAAWtqB,KAAKrI,GAvDb,KAuD6BA,CACvC,C,qBC7DA,IAAImzB,EAAkB5vB,EAAQ,IAG1B6vB,EAAc,OAelBt0B,EAAOD,QANP,SAAkBw0B,GAChB,OAAOA,EACHA,EAAOH,MAAM,EAAGC,EAAgBE,GAAU,GAAG3M,QAAQ0M,EAAa,IAClEC,CACN,C,iBCfA,IAAIC,EAAe,KAiBnBx0B,EAAOD,QAPP,SAAyBw0B,GAGvB,IAFA,IAAI7V,EAAQ6V,EAAOnxB,OAEZsb,KAAW8V,EAAajrB,KAAKgrB,EAAO9a,OAAOiF,MAClD,OAAOA,CACT,C,2PChBA,IAAI+V,EAAahwB,EAAQ,IACrBiwB,EAAejwB,EAAQ,IA2B3BzE,EAAOD,QALP,SAAkBmB,GAChB,MAAuB,UAAhB+M,EAAO/M,IACXwzB,EAAaxzB,IArBF,mBAqBYuzB,EAAWvzB,EACvC,C,qBC1BA,IAAIF,EAASyD,EAAQ,IACjBkwB,EAAYlwB,EAAQ,IACpBmwB,EAAiBnwB,EAAQ,IAOzBowB,EAAiB7zB,EAASA,EAAOC,iBAAc4D,EAkBnD7E,EAAOD,QATP,SAAoBmB,GAClB,OAAa,MAATA,OACe2D,IAAV3D,EAdQ,qBADL,gBAiBJ2zB,GAAkBA,KAAkBl0B,OAAOO,GAC/CyzB,EAAUzzB,GACV0zB,EAAe1zB,EACrB,C,qBCzBA,IAAIF,EAASyD,EAAQ,IAGjBqwB,EAAcn0B,OAAOkB,UAGrBC,EAAiBgzB,EAAYhzB,eAO7BizB,EAAuBD,EAAY/nB,SAGnC8nB,EAAiB7zB,EAASA,EAAOC,iBAAc4D,EA6BnD7E,EAAOD,QApBP,SAAmBmB,GACjB,IAAI8zB,EAAQlzB,EAAe1B,KAAKc,EAAO2zB,GACnCI,EAAM/zB,EAAM2zB,GAEhB,IACE3zB,EAAM2zB,QAAkBhwB,EACxB,IAAIqwB,GAAW,CACjB,CAAE,MAAOpuB,GAAI,CAEb,IAAIwrB,EAASyC,EAAqB30B,KAAKc,GAQvC,OAPIg0B,IACEF,EACF9zB,EAAM2zB,GAAkBI,SAEjB/zB,EAAM2zB,IAGVvC,CACT,C,iBC1CA,IAOIyC,EAPcp0B,OAAOkB,UAOckL,SAavC/M,EAAOD,QAJP,SAAwBmB,GACtB,OAAO6zB,EAAqB30B,KAAKc,EACnC,C,uPCSAlB,EAAOD,QAJP,SAAsBmB,GACpB,OAAgB,MAATA,GAAiC,UAAhB+M,EAAO/M,EACjC,C,qBC1BA,IAAIi0B,EAAW1wB,EAAQ,IACnBitB,EAAWjtB,EAAQ,IAmEvBzE,EAAOD,QAlBP,SAAkBkyB,EAAMC,EAAMthB,GAC5B,IAAI0Q,GAAU,EACVD,GAAW,EAEf,GAAmB,mBAAR4Q,EACT,MAAM,IAAIpB,UAnDQ,uBAyDpB,OAJIa,EAAS9gB,KACX0Q,EAAU,YAAa1Q,IAAYA,EAAQ0Q,QAAUA,EACrDD,EAAW,aAAczQ,IAAYA,EAAQyQ,SAAWA,GAEnD8T,EAASlD,EAAMC,EAAM,CAC1B,QAAW5Q,EACX,QAAW4Q,EACX,SAAY7Q,GAEhB,C,kCCjEA,IAAM6B,EAAQze,EAAQ,GAChB8e,EAAoBjhB,EAAE,SAASgC,KAAK,2BAE1C,GAA0B,OAAtBif,EACA,IAAI3Y,EAAiBnG,EAAQ,IAGjC,SAAS2wB,EAAkB5O,EAAWtf,GAClCsf,EAAU1T,QAAQqE,KAAKjQ,EAAKuf,eAChC,CAIA,SAASnC,IACLhiB,EAAE,qDAAqDka,IAAI,CACvDvM,QAAS,QACTwU,WAAY,WAEpB,CAQA,SAAS4Q,IACL/yB,EAAE,iBAAiBijB,eACnBjjB,EAAE,iBAAiB0B,MAAK,WAIpB,IAAIkI,EAHJ5J,EAAE2B,MAAMuY,IAAI,CACRvM,QAAS,SAKT/D,EADAjI,KAAKypB,OAAOtqB,OAAS,EACba,KAAKypB,OAAO,GAAGC,UAEfrrB,EAAE2B,MAAMyC,QAAQ,kBAAkBhE,KAAK,aAAayU,OAEhE,IAAIme,EAAUhzB,EAAE2B,MAAMqB,SAAS,UAKfgwB,EAAQhwB,SAAS,kBAAkBC,SAAS,UAClDjB,KAAK,aAAc4H,GAC7BopB,EAAQhxB,KAAK,aAAc4H,GAC3BopB,EAAQhxB,KAAK,OAAQ,YAAYA,KAAK,wBAAyB,IAC/DhC,EAAE2B,MAAMshB,aAAa,WAErBjjB,EAAE2B,MAAMoB,SAAS3C,KAAK,oBAAoB4B,KAAK,WAAY,IAC/D,IACAhC,EAAE,yBAAyBmB,WAAW,yBAEtC,IAAI8xB,EAAUjzB,EAAE,0BAA0BgD,SAAS,kBAAkBC,SAAS,UAAU9B,WAAW,yBAAyB3C,MACxHy0B,GAEAA,EAAQ3nB,SAAQ,SAAS1H,GACN,IAAIsd,kBAAiB,SAASE,GACrCA,EAAUtgB,QACVd,EAAE4D,GAAQzC,WAAW,wBAI7B,IAMSogB,QAAQ3d,EALJ,CACT6d,YAAY,GAKpB,IAIJzhB,EAAEW,UAAUV,GAAG,UAAW,0BAA0B,SAACuE,GACjD,GAAc,QAAVA,EAAEtF,IAAN,CACA,IAAIg0B,EAAUlzB,EAAE,iBACZmzB,EAAYnzB,EAAE,oBACdkzB,EAAQlxB,KAAK,cAAgBmxB,EAAUnxB,KAAK,aAC5CkxB,EAAQlxB,KAAK,WAAY,IAJD,CAMhC,GACJ,CAEA,SAAS0f,IAjEL1hB,EAAE,qDAAqDka,IAAI,CACvDvM,QAAS,OACTwU,WAAY,WAiEhBniB,EAAE,yEAAyEka,IAAI,UAAW,KAC9F,CAEA,SAAS2H,IACL7hB,EAAE,yEAAyEka,IAAI,UAAW,KAC1F8H,GACJ,CAEA,SAASoR,IACLpzB,EAAE,yEAAyEka,IAAI,UAAW,KAC9F,CAEAxc,EAAOD,QAAU,CACb41B,mBAAoB,WAChBrzB,EAAEW,UAAUV,GAAG,QAAS,oBAAoB,WACxC,IAAIlC,EAAI,IAAI6iB,EAAM,oBAAqB,CAAEwF,OAAQ1E,EAAuB2E,QAASxE,IAC7E9Y,EAAM/I,EAAE,oBAAoB4E,KAAK,cAEjCmmB,EAAW,CAAEuI,KAAM,mBAEG,OAAtBrS,GAA+B3Y,EAAeU,oBAC9C+hB,EAA6B,oBAAI,GAGrC/qB,EAAE8I,KAAK,CACHC,IAAKA,EACLyM,OAAQ,OACR5Q,KAAMmmB,EACN5iB,QAAS,SAAUvD,GACf5E,EAAE,iCAAiC6U,KAAKjQ,GACxCmuB,IACA/yB,EAAE,wBAAwB0B,MAAK,YACM,IAA7B1B,EAAE2B,MAAMyP,KAAK,aAAyBpR,EAAE2B,MAAML,SAAS,oBACvDtB,EAAE,iBAAiBgD,WAAW5C,KAAK,8BAA8B8Z,IAAI,QAAS,UAEtF,IACAla,EAAE,eAAekE,IAAIlE,EAAE,oBAAoB4E,KAAK,QAChD,IAAI+mB,EAAc3rB,EAAE,kDAChB2rB,EAAY7qB,QACZH,SAASM,KAAK2qB,cAAc,IAAIC,YAAY,kBAAmB,CAACC,OAAQH,KAE5E5tB,EAAEuoB,MACN,GAER,GACJ,EAEAiN,qBAAsB,WAClBvzB,EAAEW,UAAUV,GAAG,QAAS,oBAAoB,WACxC,IAAI8I,EAAM/I,EAAE,wBAAwB4E,KAAK,UACrCN,EAAOtE,EAAE,gBACTwzB,EAAYxzB,EAAE,eAAekE,MAC7BuvB,EAAczzB,EAAE,iBAAiBkE,MAC/B8nB,EAAgBhsB,EAAEisB,WAExB,GAA0B,OAAtBhL,EAA4B,CAE5B,IAAI/X,EAAoBlJ,EAAE,gCAAiCsE,GAC3DgE,EAAeW,WAAWC,EAAmB8iB,EACjD,MACIA,EAAc3iB,UAGlB2iB,EAAcI,MAAK,WACf9nB,EAAKwR,UAAUc,QACf5W,EAAE8I,KAAK,CACHC,IAAKA,EACLyM,OAAQ,OACR5Q,KAAMN,EAAK+nB,YACXlkB,QAAS,SAAUvD,GACXA,EAAKuD,QAELye,UAAUljB,KAAK,CACXxD,MAAO,YACP6iB,cAAe,mBACfC,YAAa,YACb6C,WAAY,aAAe4N,EAC3BC,YAAaF,EACbG,YAAa,KAGjB/M,UAAUljB,KAAK,CACXxD,MAAO,YACP6iB,cAAe,mBACfC,YAAa,cACb6C,WAAY,aAAe4N,EAC3BC,YAAaF,EACbG,YAAa,KAGrBrvB,EAAKwR,UAAUC,OACf+c,EAAkB9yB,EAAE,gBAAiB4E,EAEzC,EACA4D,MAAO,SAAU5D,GACbN,EAAKwR,UAAUC,OACf+c,EAAkB9yB,EAAE,gBAAiB4E,EAAKuJ,cAE1CyY,UAAUljB,KAAK,CACXxD,MAAO,YACP6iB,cAAe,mBACfC,YAAa,cACb6C,WAAY,aAAe4N,EAC3BC,YAAaF,EACbG,YAAa,IAGrB,GAER,GACJ,GACJ,EACAC,qBAAsB,WAClB,IACIzN,EAAQ,IAAIvF,EADE,yBACiB,CAAEwF,OAAQ1E,EAAuB2E,QAASxE,IAC7E7hB,EAAEW,UAAUV,GAAG,QAAS,2BAA2B,WAC/C,IAAI8W,EAAY/W,EAAE2B,MAAMiD,KAAK,aACzB6E,EAAQzJ,EAAEW,UAAUP,KAAK,8BAA8BwE,KAAK,cAC5DivB,EAAW7zB,EAAE,0BAA0BsB,SAAS,UAAY,KAAOtB,EAAE,0BAA0BkD,OAC/F0G,EAAqB,OAAbiqB,EAAoB9c,EAAYtN,EAAQ,MAAQoqB,EAAW9c,EAAYtN,EACnF,GAAiB,OAAboqB,EAAmB,CACnB,IAAIC,EAAgB9zB,EAAEW,UAAUP,KAAK,yDAAyDwE,KAAK,cACnG5E,EAAE,6BAA6BkE,IAAI4vB,EACvC,CACA,IAAIC,EAAe/zB,EAAE,6BAA6BkE,MAClD,GAAqB,KAAjB6vB,EAAqB,CACrB/zB,EAAE,2BAA2B+C,OAAO,sBAAsBxB,YAAY,aAEtE,IADA,IAAIyyB,EAAQh0B,EAAE,2BACLrC,EAAI,EAAGA,EAAIq2B,EAAMlzB,OAAQnD,IAC1Bq2B,EAAMr2B,GAAG+kB,QAAQ5S,YAAcikB,GAC/BC,EAAMr2B,GAAGs2B,cAAchY,UAAUC,IAAI,aAG7Clc,EAAE,4BAA4B4oB,OAClC,MACIzC,EAAMG,OAELtmB,EAAE,yBAAyBsB,SAAS,WACrCtB,EAAE,yBAAyBoB,SAAS,UAExCpB,EAAE,QAAQ8B,QAAQ,6BAA8B,CAC5C5B,MAAO,eACP6iB,cAAe,gBACfC,YAAa,aACb6C,WAAYjc,GAEpB,IAEA5J,EAAEW,UAAUV,GAAG,QAAS,2BAA2B,WAC/CkmB,EAAMI,OAEV,GACJ,EAEA2N,sBAAuB,WACnBl0B,EAAEW,UAAUV,GAAG,QAAS,2BAA2B,WAC/C,IAAI8zB,EAAe/zB,EAAE2B,MAAMiD,KAAK,cAChC5E,EAAE,6BAA6BkE,IAAI6vB,GACnC/zB,EAAE,2BAA2B+C,OAAO,sBAAsBxB,YAAY,aACtEvB,EAAE2B,MAAMoB,OAAO,sBAAsB3B,SAAS,aAC1CpB,EAAE,yBAAyBsB,SAAS,WACpCtB,EAAE,yBAAyBoB,SAAS,UAExCpB,EAAE,4BAA4B4oB,OAClC,GACJ,EAEAuL,kBAAmB,WAEfn0B,EAAEW,UAAUV,GAAG,QAAS,4BAA4B,WAChD,GAAKD,EAAE,0BAA0BsB,SAAS,WAGtC8yB,EAAahB,OAFb,IAAIgB,EAAavS,EAIrB,IAAIsE,EAAQ,IAAIvF,EAPF,0BAOqB,CAAEwF,OAAQ1E,EAAuB2E,QAAS+N,IACzEL,EAAe/zB,EAAE,6BAA6BkE,MAClD,GAAoB,IAAhB6vB,EACA/zB,EAAE,yBAAyBuB,YAAY,cACpC,CACH,IAAIwV,EAAY/W,EAAE,4BAA4BgC,KAAK,kBAC/CyH,EAAQzJ,EAAEW,UAAUP,KAAK,8BAA8BwE,KAAK,cAC5DivB,EAAW7zB,EAAE,uDAAuDI,KAAK,kBAAkB8C,OAC3FmxB,GAAkB,EAC4B,IAA9Cr0B,EAAE,mCAAmCkE,QACrCmwB,EAAkBr0B,EAAE,mCAAmCkE,OAE3D,IAAI4T,EAAMf,EAAYtN,EAAQsqB,EAC1BnqB,EAAQmN,EAAYtN,EAAQ,MAAQoqB,EACpC9qB,EAAM/I,EAAE2B,MAAMiD,KAAK,OACvB5E,EAAE8V,UAAUc,QACZ5W,EAAE8I,KAAK,CACHC,IAAKA,EACLyM,OAAQ,OACR5Q,KAAM,CACFkT,IAAKA,EACLuc,gBAAiBA,GAErBlsB,QAAS,SAAUvD,GACf5E,EAAE,6BAA6B6U,KAAKjQ,GACpCmuB,IACA/yB,EAAE,+BAA+B0B,MAAK,YACD,IAA7B1B,EAAE2B,MAAMyP,KAAK,aAAyBpR,EAAE2B,MAAML,SAAS,oBACvDtB,EAAE,wBAAwBgD,WAAW5C,KAAK,8BAA8B8Z,IAAI,QAAS,UAE7F,IACAiM,EAAMG,OACNtmB,EAAE8V,UAAUC,MAChB,EACAvN,MAAO,WACHxI,EAAE8V,UAAUC,MAChB,IAEJ/V,EAAE,QAAQ8B,QAAQ,6BAA8B,CAC5C5B,MAAO,eACP6iB,cAAe,gBACfC,YAAa,gBACb6C,WAAYjc,GAEpB,CACA5J,EAAE,QAAQC,GAAG,QAAS,4BAA4B,SAASuE,GACvDA,EAAExD,iBACFmlB,EAAMI,OACV,GACJ,IAEAvmB,EAAEW,UAAUV,GAAG,SAAU,wBAAwB,WAC7CD,EAAE8V,UAAUc,QACZ,IAAI0d,EAAct0B,EAAE,wBAAwBkE,MAC5ClE,EAAE,mCAAmCkE,IAAIowB,GAGzC,IAEIxc,EAFY9X,EAAE,4BAA4BgC,KAAK,kBACvChC,EAAEW,UAAUP,KAAK,8BAA8BwE,KAAK,cAE5DmvB,EAAe/zB,EAAE,6BAA6BkE,MAE9C0F,EAAQkO,EAAM,MADH9X,EAAE,uDAAuDI,KAAK,kBAAkB8C,OAE/F4U,GAAYic,EACZ,IAAIhrB,EAAM/I,EAAE2B,MAAMiD,KAAK,OACvB5E,EAAE8I,KAAK,CACHC,IAAKA,EACLyM,OAAQ,OACR5Q,KAAM,CACFkT,IAAKA,EACLuc,gBAAiBC,GAErBnsB,QAAS,SAAUvD,GACf5E,EAAE,6BAA6B6U,KAAKjQ,GACpCmuB,IACA/yB,EAAE,+BAA+B0B,MAAK,YACD,IAA7B1B,EAAE2B,MAAMyP,KAAK,aAAyBpR,EAAE2B,MAAML,SAAS,oBACvDtB,EAAE,wBAAwBgD,WAAW5C,KAAK,8BAA8B8Z,IAAI,QAAS,UAE7F,IACAla,EAAE,wBAAwBijB,aAAa,WACvC2D,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,gBACfC,YAAa,iBACb6C,WAAYjc,IAEhB5J,EAAE8V,UAAUC,MAChB,EACAvN,MAAO,WACHxI,EAAE8V,UAAUC,MAChB,GAER,GAEJ,EAEAwe,mBAAoB,WAChBv0B,EAAEW,UAAUV,GAAG,QAAS,2BAA2B,WAC/C,IAAIu0B,EAAYx0B,EAAE2B,MAAMiD,KAAK,eACzB6vB,EAAaz0B,EAAE2B,MAAMiD,KAAK,gBAC1B8vB,EAAa10B,EAAE2B,MAAMiD,KAAK,kBAE1BgF,EAAQ4qB,EAAY,MAAQC,EAC5BE,EAFe30B,EAAE2B,MAAMiD,KAAK,oBAEF,MAAQ8vB,EACtC9N,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,gBACfC,YAAa,OACb6C,WAAYjc,EACZgrB,aAAcD,GAEtB,GACJ,EAEAE,yBAA0B,WACtB70B,EAAEW,UAAUV,GAAG,QAAS,qCAAqC,WACzD,IAAIu0B,EAAYx0B,EAAE2B,MAAMiD,KAAK,eACzB6vB,EAAaz0B,EAAE2B,MAAMiD,KAAK,gBAC1B8vB,EAAa10B,EAAE2B,MAAMiD,KAAK,kBAE1BgF,EAAQ4qB,EAAY,MAAQC,EAC5BE,EAFe30B,EAAE2B,MAAMiD,KAAK,oBAEF,MAAQ8vB,EACtC9N,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,gBACfC,YAAa,uBACb6C,WAAYjc,EACZgrB,aAAcD,IAElB/N,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,oBACfC,YAAa,mBACb6C,WAAYllB,SAASoL,SAASC,KAC9B4oB,aAAcD,GAEtB,GACJ,EAEAG,mBAAoB,WAChB90B,EAAEW,UAAUV,GAAG,SAAU,2BAA2B,WAChD,IAAI8I,EAAM/I,EAAE,yBAAyB4E,KAAK,cACtC0vB,EAAct0B,EAAE,2BAA2BkE,MAC/ClE,EAAE8V,UAAUc,QACZ5W,EAAE8I,KAAK,CACHC,IAAKA,EACLyM,OAAQ,MACR5Q,KAAM,CACF0vB,YAAaA,EACbhB,KAAM,mBAEVnrB,QAAS,SAAUvD,GACf5E,EAAE8V,UAAUC,OArZhC,SAA4BnR,GACxB5E,EAAE,yBAAyBwQ,QAAQqE,KAAKjQ,EAAKmwB,iBACjD,CAoZoBD,CAAmBlwB,GACnBmuB,IACA/yB,EAAE,2BAA2BiiB,QACjC,GAER,GACJ,EACA+S,mBAAoB,WAChBh1B,EAAEW,UAAUV,GAAG,SAAU,uBAAuB,WACxCD,EAAE,uBAAuBoR,KAAK,WAC9BpR,EAAE,gCAAgCgC,KAAK,QAAS,4BAC7ChC,EAAE,gCAAgCgC,KAAK,QAAS,iBAC3D,GACJ,EACAizB,uBAAwB,WACpBj1B,EAAEW,UAAUV,GAAG,QAAS,sBAAsB,WAC1C,IAAI8I,EAAM/I,EAAE,wBAAwB4E,KAAK,UACrCN,EAAOtE,EAAE,gBACTwzB,EAAYxzB,EAAE,iBAAiBkE,MAC/BgxB,EAAiBl1B,EAAE,qCAAqCkD,OACxDiyB,EAAmBn1B,EAAE,yBAAyBkE,MAClDixB,EAAmBD,EAAiB,IAAMC,EAAiB7P,QAAQ,KAAM,KACzEhhB,EAAKwR,UAAUc,QACf5W,EAAE8I,KAAK,CACHC,IAAKA,EACLyM,OAAQ,OACR5Q,KAAMN,EAAK+nB,YACXlkB,QAAS,SAAUvD,GACXA,EAAKuD,QAELye,UAAUljB,KAAK,CACXxD,MAAO,YACP6iB,cAAe,mBACfC,YAAa,YACb6C,WAAY,+BACZ6N,YAAaF,EACbG,YAAawB,IAGjBvO,UAAUljB,KAAK,CACXxD,MAAO,YACP6iB,cAAe,mBACfC,YAAa,cACb6C,WAAY,+BACZ6N,YAAaF,EACbG,YAAawB,IAGrB7wB,EAAKwR,UAAUC,OACf+c,EAAkB9yB,EAAE,gBAAiB4E,EACzC,EACA4D,MAAO,WAEHoe,UAAUljB,KAAK,CACXxD,MAAO,YACP6iB,cAAe,mBACfC,YAAa,cACb6C,WAAY,+BACZ6N,YAAaF,EACbG,YAAawB,GAGrB,GAER,GACJ,EACAC,sBAAuB,WACnBp1B,EAAEW,UAAUV,GAAG,QAAS,yBAAyB,WAC7C,IAMIlC,EANAgL,EAAM/I,EAAE2B,MAAMiD,KAAK,UACnB8a,GAAS,EACG,qBAAZ/d,KAAKyM,KACLsR,GAAS,GAKT3hB,EAAI,IAAI6iB,EAAM,yBADdlB,EACwC,CAAE0G,OAAQ1E,EAAuB2E,QAASxE,GAI1C,CAAEuE,OAAQ1E,EAAuB2E,QAASrE,IAGtF,IAAI+I,EAAW,CAAEuI,KAAM,oBAEG,OAAtBrS,GAA+B3Y,EAAeU,oBAC9C+hB,EAA6B,oBAAI,GAGrC/qB,EAAE8V,UAAUc,QACZ5W,EAAE8I,KAAK,CACHC,IAAKA,EACLyM,OAAQ,OACR5Q,KAAMmmB,EACN5iB,QAAS,SAAUvD,GACf5E,EAAE8V,UAAUC,OACZ/V,EAAE,oCAAoC6U,KAAKjQ,GAC3C5E,EAAE,2BAA2BkE,IAAIlE,EAAE,oBAAoB4E,KAAK,QAC5DmuB,IACA/yB,EAAE,oCAAoC0B,MAAK,YACN,IAA7B1B,EAAE2B,MAAMyP,KAAK,aAAyBpR,EAAE2B,MAAML,SAAS,oBACvDtB,EAAE,6BAA6BgD,WAAW5C,KAAK,8BAA8B8Z,IAAI,QAAS,UAElG,IACAla,EAAE,8CAA8CgC,KAAK,CACjD,gBAAiB,OACjB,mBAAoB,4BAExB,IAAI2pB,EAAc3rB,EAAE,iEAChB2rB,EAAY7qB,QACZH,SAASM,KAAK2qB,cAAc,IAAIC,YAAY,kBAAmB,CAACC,OAAQH,KAE5E5tB,EAAEuoB,MACN,EACA9d,MAAO,WACHxI,EAAE8V,UAAUC,MAChB,GAER,GACJ,EAEAsf,wBAAyB,WACrBr1B,EAAEW,UAAUV,GAAG,QAAS,wBAAwB,WAC5C,IAAI8I,EAAM/I,EAAE,wBAAwB4E,KAAK,UACrCN,EAAOtE,EAAE,sBACTwzB,EAAYxzB,EAAE,2BAA2BkE,MAG7C,KAFoBlE,EAAE,uBAAuBkE,MAClBpD,OAAS,GACvB,CACT,IAAMkrB,EAAgBhsB,EAAEisB,WACxB,GAA0B,OAAtBhL,EAA4B,CAE5B,IAAI/X,EAAoBlJ,EAAE,gCAAiCsE,GAC3DgE,EAAeW,WAAWC,EAAmB8iB,EACjD,MACIA,EAAc3iB,UAGlB2iB,EAAcI,MAAK,WACf9nB,EAAKwR,UAAUc,QACf5W,EAAE8I,KAAK,CACHC,IAAKA,EACLyM,OAAQ,OACR5Q,KAAMN,EAAK+nB,YACXlkB,QAAS,SAAUvD,GACXA,EAAKuD,QAELye,UAAUljB,KAAK,CACXxD,MAAO,YACP6iB,cAAe,mBACfC,YAAa,YACb6C,WAAY,iBACZ6N,YAAaF,EACbG,YAAa,KAGjB/M,UAAUljB,KAAK,CACXxD,MAAO,YACP6iB,cAAe,mBACfC,YAAa,cACb6C,WAAY,iBACZ6N,YAAaF,EACbG,YAAa,KAGrBrvB,EAAKwR,UAAUC,OACf+c,EAAkB9yB,EAAE,sBAAuB4E,EAC/C,EACA4D,MAAO,SAAU5D,GACbN,EAAKwR,UAAUC,OACf+c,EAAkB9yB,EAAE,sBAAuB4E,EAAKuJ,cAChDyY,UAAUljB,KAAK,CACXxD,MAAO,YACP6iB,cAAe,mBACfC,YAAa,cACb6C,WAAY,iBACZ6N,YAAaF,EACbG,YAAa,IAErB,GAER,GACJ,CACJ,GACJ,E,sPCzlBJ,IAAI2B,EAGJA,EAAK,WACJ,OAAO3zB,IACR,CAFK,GAIL,IAEC2zB,EAAIA,GAAK,IAAIrH,SAAS,cAAb,EACV,CAAE,MAAOzpB,GAEc,gCAAXqG,OAAM,YAAAc,EAANd,WAAqByqB,EAAIzqB,OACrC,CAMAnN,EAAOD,QAAU63B,C,kCClBjB,IAAI1U,EAAQze,EAAQ,GAOpB,SAASozB,EAAe3wB,GACpB,IAEI4wB,EAFEC,EAAqB,gBACrBC,EAAmB,eAGrBF,EADA5wB,EAAKuD,QACIstB,EAEAC,EAGb,IAAIC,EAAkB,yBAAyBryB,OAAOsB,EAAKgxB,SAC3D51B,EAAE21B,GAAiBv1B,KAAK,+BACnBmB,YAAYk0B,GAAoBl0B,YAAYm0B,GAC5Ct0B,SAASo0B,GAAQ3gB,KAAKjQ,EAAKixB,KAEhC,IAAIpT,EAAcziB,EAAE21B,GAChBxP,EAAQ,IAAIvF,EAAM6B,GACtBziB,EAAE,kCAAkCuI,OACpCvI,EAAE21B,GAAiBptB,OACnB4d,EAAMG,OAENjlB,YAAW,WACPrB,EAAE,qCAAqC8B,QAAQ,QACnD,GAAG,IACP,CAMA,SAASg0B,EAAgBC,GACrB,IAAIC,EAASh2B,EAAE,uBACX+1B,GACAC,EAAO51B,KAAK,WAAWgB,SAAS,WAAW8Y,IAAI,UAAW,QAC1D8b,EAAO51B,KAAK,SAASmB,YAAY,WAAW2Y,IAAI,UAAW,MAG3D8b,EAAO51B,KAAK,SAASgB,SAAS,WAAW8Y,IAAI,UAAW,QACxD8b,EAAO51B,KAAK,WAAWmB,YAAY,WAAW2Y,IAAI,UAAW,IAErE,CAQA,SAAS+b,IACL,IAAI7f,EACepW,EAAE,6BAA6B4E,KAAK,cAI/CwR,EADApW,EAAE,sBAAsBc,OAClBd,EAAE,sBAAsB4E,KAAK,OAE7B5E,EAAE,mBAAmB4E,KAAK,OAMpCwR,EAFgBpW,EAAE,cAAckE,MACXlE,EAAE,8BAA8BgC,KAAK,mBAG9D,OAAOoU,CACX,CAEA1Y,EAAOD,QAAU,CACby4B,cAAe,WACXl2B,EAAEW,UAAUV,GAAG,QAAS,uBAAuB,SAAUuE,GACrDA,EAAExD,iBACWhB,EAAE2B,MAAf,IACIoH,EAAM/I,EAAE2B,MAAMiD,KAAK,QACnBwR,EAAMpW,EAAE,cAAckE,MACtBiyB,EAAYn2B,EAAE2B,MAAMiD,KAAK,OACzB6E,EAAQzJ,EAAE2B,MAAMiD,KAAK,SACrBgxB,EAAU51B,EAAE,8BAA8B4E,KAAK,cAE/CwxB,EAAaH,IACjB,GAAIG,EACAhgB,EAAMggB,MACH,CACH,IAAI7kB,EAAOvR,EAAE,gCAAgCkE,MAEhC,MAATuF,GAA0BlH,MAATkH,IACjB2M,EAAMA,EAAI9S,OAAOmG,IAGN,MAAXmsB,GAAoBxf,EAAIkL,SAASsU,KACjCxf,EAAMA,EAAI9S,OAAOsyB,IAGT,MAARrkB,GAAwBhP,MAARgP,GAA6B,IAARA,EACrC6E,EAAMA,EAAI9S,OAAOiO,GAEb4kB,EAAU7U,SAASlL,KACnBA,EAAM+f,EAGlB,CAIKptB,GAAQqN,GAAQwf,IAIrB51B,EAAE8V,UAAUc,QACZ5W,EAAE2B,MAAMK,KAAK,YAAY,GACzBhC,EAAE8I,KAAK,CACHC,IAAKA,EACLhF,KAAM,OACN0T,SAAU,OACV7S,KAAM,CACFwR,IAAKA,EACLwf,QAASA,EACTS,SAfO,KAgBPC,UAfQ,MAiBZnuB,QAAS,SAAUvD,GACf5E,EAAE8V,UAAUC,OACZwf,EAAe3wB,GAEfkxB,GAAgB,GAChB91B,EAAE,QAAQ8B,QAAQ,2BAElB8kB,UAAUljB,KAAK,CACXxD,MAAO,WACP6iB,cAAe,YACfC,YAAa,MACb6C,WAAYzP,GAGpB,EACA5N,MAAO,SAAU0D,GACblM,EAAE8V,UAAUC,OACZwf,EAAerpB,GACflM,EAAE,QAAQ8B,QAAQ,0BACtB,IAER,GACJ,EAEA0gB,WAAY,WACRxiB,EAAEW,UAAUV,GAAG,QAAS,qCAAqC,WACzD,IAAIwiB,EAAcziB,EAAE2B,MAAMoB,SAASA,SAC/BojB,EAAQ,IAAIvF,EAAM6B,GAEtBziB,EAAE,kCAAkC8L,OACpC2W,EAAY3W,OACZqa,EAAMI,QACFvmB,EAAE,QAAQsB,SAAS,eAAetB,EAAE,QAAQuB,YAAY,cAC5DvB,EAAE,uBAAuBmB,WAAW,WACxC,GACJ,EAEAo1B,uBAAwB,WAEpB,IAAIngB,EAAM6f,IAGVj2B,EAAE8I,KAAK,CACHC,IAAK/I,EAAE,+BAA+BkE,MACtCH,KAAM,MACNa,KAAO,CACHwR,IAAKA,GAETqB,SAAU,OACVtP,QAAS,SAASP,GACRA,EAAIY,OACNstB,EAAgBluB,EAAIooB,OAE5B,GAER,EAMAwG,qBAAsB,WAClB,IAAIzI,EAAOpsB,KACX3B,EAAE,QAAQC,GAAG,kCAAkC,WAC3C8tB,EAAKwI,wBACT,GACJ,E,yDChLAngB,EACAqgB,EACAC,E,QARIrnB,EAAgBlN,EAAQ,GAAxBkN,YAKJ3E,EAFiBvI,EAAQ,GAEhBwI,CADUhK,SAAS8H,cAAc,kBAiC9C,SAASkuB,IACL,IAAIC,EAAO52B,EAAEW,UAAUP,KAAK,sBACxBy2B,EAAU72B,EAAEW,SAASC,eAAewD,QAAQ,gCAAgCtD,OAAS,EACrFsf,EA3BApgB,EAAE,wBAAwBc,OACtBd,EAAEW,SAASC,eAAeuE,QAAQ,0BAA0BrE,OAC/C,oBAEA,MAEVd,EAAE,sBAAsBc,OAC3Bd,EAAE,iCAAiCc,OACtB,uBAEA,uBAGJ,oBAiBjB,GAAI81B,EAAKhyB,KAAK,YAAa,CACvB,GAAI5E,EAAE,QAAQsB,SAAS,cAAgBu1B,EAAS,CAC5C72B,EAAE,sBAAsB4E,KAAK,iBAAkB,UAC/C,IAAIkyB,EAAW92B,EAAE,2BACX82B,EAASh2B,SAAQg2B,EAAW92B,EAAE,mBAAmBoF,GAAG,IAC1D0xB,EAASh1B,QAAQ,QAAS,CAACse,eAC3BpgB,EAAE,gCAAgCkE,IAAI,OAC1C,MACIlE,EAAE,iBAAiB4E,KAAK,iBAAkB,UAC1C5E,EAAE,kBAAkB4oB,QACpB5oB,EAAE,gCAAgCkE,IAAI,QAE1C,OAAO,CACX,CACI0iB,UAAUljB,KAAK,CACXxD,MAAO,eACP6iB,cAAe,WACfC,YAAa,OACb6C,WAAY,iBACZzF,WAAYA,GAGxB,CAOA,SAAS2W,IACLrsB,EAAOnC,OACP,IAAIX,EChFR,WACI,IAAIovB,EAAch3B,EAAE,gBAuBhBoW,EAAMpW,EAAE,uCAAuC4E,KAAK,OAEpD8K,EADO1P,EAAE,sBACgBoE,QAAQ,mBAEjCE,EAAO,CACP8R,IAAKA,EAELG,SAAU,GAGd,GAAKygB,EAAYl2B,OAEV,CACH,IAAIm2B,EAAQD,EAAY3mB,KAAI,WACxB,MAAO,CACH+F,IAAKpW,EAAE2B,MAAMvB,KAAK,eAAe8C,OACjCqT,SAAUvH,SAAShP,EAAE2B,MAAMvB,KAAK,kBAAkBwE,KAAK,YAAa,IAE5E,IACAN,EAAKgS,cAAgBtM,KAAKmD,UAAU8pB,EAAM52B,UAC9C,MATIiE,EAAKgK,QA5BT,SAAoBoB,GAChB,IAAIpB,EAAUoB,EACTtP,KAAK,mBACLiQ,KAAI,WACD,IAAI6mB,EAAYl3B,EAAE2B,MAAMvB,KAAK,mBACzB+2B,EAAWD,EAAUhzB,MACrBkzB,EAAkBF,EAAU92B,KAAK,iBAAmB+2B,EAAW,MAC9DvyB,KAAK,YACV,MAAO,CACHyxB,SAAUr2B,EAAE2B,MAAMiD,KAAK,aACvBwyB,gBAAiBA,EAEzB,IAAG/2B,UAEP,OAAO2J,KAAKmD,UAAUmB,EAC1B,CAamB+oB,CAAW3nB,GAU9B,IAAI8C,EAAWxS,EAAE8I,KAAK,CAClBC,IAAK/I,EAAE,oBAAoBkE,MAC3BsR,OAAQ,OACRtH,OAAO,EACPtJ,KAAMN,IACP6J,aAEH,OADAqE,EAAS4D,IAAMA,EACR5D,CACX,CD2Bc8kB,GAEV,IAAI1vB,EAAI2vB,KAMJ,MADA7sB,EAAOoB,OACD,IAAI0rB,MAAM5vB,EAAI/D,SAAW,gBAGnC,OARI4yB,EAAO7uB,EAAI6vB,QACXf,EAAoB9uB,EAAI2vB,KAAKG,WAAWC,yBACxCvhB,EAAMxO,EAAIwO,IAMPpI,4BACX,CAOA,SAAS4pB,EAASlrB,GAAc,IAAXmrB,EAAOnrB,EAAPmrB,QAEbC,EAAS93B,EAAEisB,WACfjsB,EAAExB,IAAIqM,OAAOgB,WAAWksB,qBACnBtrB,MAAK,SAAAurB,GAA8B,IAC5BC,EADwBD,EAAdrrB,eAC0B,GACY,IAAhD3C,KAAKC,MAAMguB,EAAmBC,OAAOt5B,QACrCgM,4BAAkB,2CAClBktB,EAAOxuB,UAEPwuB,EAAOzuB,SAEf,IACCjB,MAAK,WACF0vB,EAAOxuB,QACX,IAGJ,IAAI4B,EAAsBH,oCAA0B,CAChDotB,cAAeN,GAChBl3B,SAAS8H,cAAc,kCAE1BqvB,EAAO1L,MAAK,WACRpsB,EAAE8I,KAAK,CACH/E,KAAM,OACNgF,IAAK8B,OAAOgB,WAAW0B,eACvBL,aAAa,EACbtI,KAAMsG,EACNsC,aAAa,EACbrF,QAAS,WACLuC,EAAOoB,OACP9L,EAAE8V,UAAUc,QAGZ5W,EAAE8I,KAAK,CACH/E,KAAM,MACNgF,IAAK8B,OAAOgB,WAAWusB,iBACvBjwB,QAAS,SAACvD,GACFA,EAAK4D,OAAS5D,EAAKyzB,kBACnBxtB,OAAOkB,SAASC,KAAOpH,EAAK+S,YAG5B3X,EAAE8I,KAAK,CACH/E,KAAM,MACNgF,IAAK8B,OAAOgB,WAAWysB,YACvBnwB,QAAS,SAACvD,GACN,IAAI2zB,EAAc3zB,EAAK2zB,YACnBC,EAAY,CACZC,GAAI7zB,EAAKizB,QACTa,MAAO9zB,EAAK+zB,YAGhBJ,KAA8C,IAA9BA,EAAY73B,QAAQ,KAAc,IAAM,KACpDrC,OAAOivB,KAAKkL,GAAWnoB,KAAI,SAAUnR,GACjC,OAAOA,EAAM,IAAM05B,mBAAmBJ,EAAUt5B,GACpD,IAAGuE,KAAK,KAGZoH,OAAOkB,SAASC,KAAOusB,CAC3B,EACA/vB,MAAO,WACHxI,EAAE8V,UAAUC,MAEhB,GAIZ,EACAvN,MAAO,WACHxI,EAAE8V,UAAUC,MAEhB,GAER,EACAvN,MAAO,WACHkC,EAAOoB,OACPjB,OAAOkB,SAASC,KAAOnB,OAAOgB,WAAWgtB,QAC7C,GAER,GACJ,CAMA,SAASC,IACL,IAAIN,EAAY,CACZpiB,IAAKA,EACLqgB,KAAMA,GAGVz2B,EAAE8I,KAAK,CACHC,IAAKsG,EAAYqnB,EAAmB8B,GACpCz0B,KAAM,MACN0T,SAAU,OACVtP,QAAS,WACLnI,EAAE8V,UAAUC,MAChB,EACAvN,MAAO,WACHxI,EAAE8V,UAAUC,MAChB,IAEJrL,EAAOoB,MACX,CAMA,SAAS2K,IACL,GAAIL,EAAK,CACL,IACIoiB,EAAY,CACZpiB,IAFYA,EAGZqgB,KAAMA,GAGVz2B,EAAE8I,KAAK,CACHC,IAAKsG,EAAYqnB,EAAmB8B,GACpCz0B,KAAM,MACN0T,SAAU,OACVtP,QAAS,WACLnI,EAAE8V,UAAUC,MAChB,EACAvN,MAAO,WACHxI,EAAE8V,UAAUC,MAChB,GAER,CACArL,EAAOoB,MACX,CAkCegO,UA7Bf,WAOI9Z,EAAEW,UAAUP,KAAK,sDAAsDgB,SAAS,wBAChFpB,EAAEW,UAAUP,KAAK,4DAA4DgB,SAAS,oBACtFpB,EAAEW,UAAUP,KAAK,mEAAmEgB,SAAS,oBAC7FsJ,EAAOnC,OACPvI,EAAEW,UAAUP,KAAK,sBAAsBsB,MAAK,WACxCmJ,OAAOgS,OAAOkc,QAAQ,CAClBpC,UACAI,cACAa,YACAkB,WACAriB,UACAvM,MAAOJ,+BAAqBnJ,SAAS8H,cAAc,oCACpDuwB,OAAOr3B,MACL8K,MAAK,WACF/B,EAAOoB,MACX,GACR,IACA9L,EAAE,QAAQC,GAAG,sCAAsC,WAC/CD,EAAE,kCAAkC4oB,OACxC,GACJ,C,6BEtOAlrB,EAAOD,QAAU,CACbw7B,uBArBJ,SAAiClwB,EAAKmwB,EAAWt6B,GAC7C,IAAIu6B,EAAQ,IAAIC,OAAOF,EAAY,UAC/B31B,EAAQwF,EAAIxF,MAAM41B,GACtB,OAAI51B,EAAMzC,OAAS,EACRyC,EAAM,IAAMwF,EAAIrI,QAAQ,MAAQ,EAAI,GAAK,KAAOw4B,EAAY,IAAMt6B,EAAQ2E,EAAM,GAEhFwF,GAAOA,EAAIrI,QAAQ,MAAQ,EAAI,IAAM,KAAOw4B,EAAY,IAAMt6B,CAE7E,EAcIy6B,eAZJ,WAGI,IAFA,IAAItwB,EAAMpI,SAASoL,SAASC,KACxBstB,EAAKvwB,EAAI6H,UAAU7H,EAAIrI,QAAQ,KAAO,GAAG6C,MAAM,KAC1C5F,EAAI,EAAGqyB,EAAS,CAAC,EAAGryB,EAAI27B,EAAGx4B,OAAQnD,IACxC27B,EAAG37B,GAAK27B,EAAG37B,GAAG4F,MAAM,KACpBysB,EAAOsJ,EAAG37B,GAAG,IAAM47B,mBAAmBD,EAAG37B,GAAG,IAEhD,OAAOqyB,CACX,EAKI3gB,YAhCJ,SAAqBtG,EAAKywB,GACtB,IAAIC,EAAS1wB,EAKb,OAJA0wB,KAAoC,IAAzBA,EAAO/4B,QAAQ,KAAc,IAAM,KAAOrC,OAAOivB,KAAKkM,GAAQnpB,KAAI,SAAUnR,GACnF,OAAOA,EAAM,IAAM05B,mBAAmBY,EAAOt6B,GACjD,IAAGuE,KAAK,IAGZ,E","file":"productDetailNew.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 285);\n","'use strict';\n\nconst FOCUSABLE = 'button:not(:disabled):not([aria-hidden]),a[href],input,[tabindex=\"0\"]';\n\nfunction focuseOnModal (selector, focusOnClose, selectorfadeOut) {\n $(selector).on('keydown', function(event) {\n let focusableNodes = $(selector).find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n const key = event.which;\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1 && key !== 13) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n if (key === 27) { // close popUp on ESC\n // re-activate background elements if previously disabled\n if ($(document.body).is('[aria-hidden=\"true\"][aria-disabled=\"true\"]')) {\n $(document.body).removeAttr('aria-hidden aria-disabled');\n }\n\n // $(selectorfadeOut).fadeOut();\n $(selectorfadeOut).addClass('d-none');\n setTimeout(function() {\n $(focusOnClose).focus();\n }, 0);\n if ($('body').hasClass('cc-blocked')) $('body').removeClass('cc-blocked');\n if ($('body').hasClass('veiled')) $('body').removeClass('veiled');\n }\n });\n};\n\nfunction trapFocus(element) {\n $(element).trigger('keydown');\n}\n\nfunction iterateFocusOnPage() {\n $('body').on('keydown', function(event) {\n let focusableNodes = $('body').find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n const key = event.which;\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1 && key !== 13) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n });\n};\n\nfunction focusOnFirstElement(selector) {\n $(selector).find(FOCUSABLE).each(function() {\n if ($(this).hasClass('d-none')) {\n return true;\n } else {\n $(this).focus();\n return false;\n }\n });\n};\n\nfunction disableBackgroundElements(selector) {\n // accessibility: disable everything on page except the modal content\n $(document.body).attr({\n 'aria-hidden': 'true',\n 'aria-disabled': 'true'\n });\n\n $(selector).attr({\n 'aria-hidden': 'false',\n 'aria-disabled': 'false'\n });\n};\n\nmodule.exports = {\n focuseOnModal: focuseOnModal,\n iterateFocusOnPage: iterateFocusOnPage,\n focusOnFirstElement: focusOnFirstElement,\n trapFocus: trapFocus,\n disableBackgroundElements: disableBackgroundElements\n};\n","'use strict';\nvar firstError = true;\n\nvar scrollAnimate = require('../components/scrollAnimate');\n\n/**\n * Validate whole form. Requires `this` to be set to form object\n * @param {jQuery.event} event - Event to be canceled if form is invalid.\n * @param {{\n* shouldValidate: function,\n* formSubmit: boolean\n* }} config - Optional configuration data\n * @returns {boolean} - Flag to indicate if form is valid\n */\nfunction validateForm(event, config = {}) {\n var valid = true;\n\n if (this.checkValidity && !this.checkValidity()) {\n // safari\n if (! config.shouldValidate) valid = false;\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n firstError = true;\n var errorFields = [];\n $(this).find('input, select, textarea:not(.g-recaptcha-response)').each(function () {\n if (config.shouldValidate && !config.shouldValidate(this)) {\n return;\n }\n if (!this.validity.valid) {\n valid = false;\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').removeClass('cc-invisible');\n }\n\n invalidateForm(this, event, config);\n\n if (config.formSubmit) {\n for (let key in this.validity) {\n if (this.validity[key]) {\n var currentError = `${this.name.split('_').splice(-2).join('_')} ${key}`;\n if (errorFields.indexOf(currentError) === -1) {\n errorFields.push(currentError);\n }\n }\n }\n }\n\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n if ($(this).hasClass('cc-select')) {\n $(this).parent().removeClass('cc-error');\n }\n }\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').addClass('cc-invisible');\n } else if ($(this).is('input')) {\n $(this).siblings('.cc-feedback-message').children('.cc-text-message').text('');\n } else {\n $(this).parent().parent().siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n }\n });\n\n if (errorFields.length) {\n var $form = $(event.target);\n $(document).trigger('sendCustomError', {\n message: errorFields.join(', '),\n additionalData: {\n type: 'validation-error',\n category: $form.attr('data-form-name') || $form.attr('name'),\n country: $('#currentLocale').val().split('_')[1]\n }\n });\n }\n }\n return valid;\n}\n\n/**\n * Validate form fields\n * @param {jQuery.event} event - Event to be canceled if form is invalid.\n * @param {{\n * shouldValidate: function,\n * formSubmit: boolean\n * }} config - Optional configuration data\n * @returns {boolean} - Flag to indicate if form is valid\n */\nfunction validateFields(event, config) {\n var valid = true;\n\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n firstError = true;\n var errorFields = [];\n $(this).each(function () {\n if (config && config.shouldValidate && !config.shouldValidate(this)) {\n return;\n }\n if (!this.validity.valid) {\n valid = false;\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').removeClass('cc-invisible');\n }\n // invalidation also for captcha field\n $(this).trigger('invalid', {validity: this.validity, config: config});\n\n if (config.formSubmit) {\n for (let key in this.validity) {\n if (this.validity[key]) {\n var currentError = `${this.name.split('_').splice(-2).join('_')} ${key}`;\n if (errorFields.indexOf(currentError) === -1) {\n errorFields.push(currentError);\n }\n break;\n }\n }\n }\n $(this).closest('.cc-content-input').attr('data-validation-result', 'invalid');\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n if ($(this).hasClass('cc-select')) {\n $(this).parent().removeClass('cc-error');\n }\n }\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').addClass('cc-invisible');\n } else if ($(this).is('input')) {\n $(this).siblings('.cc-feedback-message').children('.cc-text-message').text('');\n } else {\n $(this).parent().parent().siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n\n $(this).closest('.cc-content-input').attr('data-validation-result', 'valid');\n }\n });\n\n if (errorFields.length) {\n var $form = $(this).closest('form');\n $(document).trigger('sendCustomError', {\n message: errorFields.join(', '),\n additionalData: {\n type: 'validation-error',\n category: $form.attr('data-form-name') || $form.attr('name'),\n country: $('#currentLocale').val().split('_')[1]\n }\n });\n }\n\n return valid;\n}\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {element} form - Form to be cleared\n * @returns {void}\n */\nfunction clearForm(form) {\n $(form).find('.cc-input.cc-error').removeClass('cc-error');\n $(form).find('.cc-select.cc-error').removeClass('cc-error');\n $(form).find('.cc-feedback-message').children('.cc-text-message').text('');\n $('.alert', form).remove();\n}\nfunction invalidateForm (object, e, config={}) {\n if (e) e.preventDefault();\n if (!$(object).attr('data-no-oriental') === 'false') {\n object.setCustomValidity('');\n }\n if (!object.validity.valid) {\n var validationMessage = object.validationMessage;\n $(object).addClass('cc-error');\n if ($(object).hasClass('cc-select')) {\n $(object).parent().addClass('cc-error');\n }\n if (object.validity.patternMismatch && $(object).data('pattern-mismatch')) {\n validationMessage = $(object).data('pattern-mismatch');\n }\n if ($(object).attr('data-no-oriental') === 'false') {\n validationMessage = $(object).data('oriental-error');\n }\n if ((object.validity.rangeOverflow || object.validity.rangeUnderflow)\n && $(object).data('range-error')) {\n validationMessage = $(object).data('range-error');\n }\n if ((object.validity.tooLong || object.validity.tooShort)\n && $(object).data('range-error')) {\n validationMessage = $(object).data('range-error');\n }\n if (object.validity.valueMissing && $(object).data('missing-error')) {\n validationMessage = $(object).data('missing-error');\n }\n if (object.validity.typeMismatch && $(object).data('type-mismatch')) {\n validationMessage = $(object).data('type-mismatch');\n }\n if ($(object).attr('data-no-oriental') === 'false') {\n validationMessage = $(object).data('oriental-error');\n }\n $(object).parents('.cc-form-group').find('.cc-feedback-message').children('.cc-text-message')\n .eq(0).text(validationMessage);\n\n $(this).closest('.cc-content-input').attr('data-validation-result', '');\n \n if (firstError) {\n if (!config.skipFocus) {\n scrollAnimate($(object), {center: true, scrollableParent: config.scrollableParent});\n ($(object) || $('.logo-home')).focus();\n }\n firstError = false;\n }\n }\n}\nmodule.exports = {\n invalid: function () {\n $(document).on('invalid', 'form input, form select', function (e, data) {\n invalidateForm(this, e, data ? data.config : null);\n });\n $('.cc-next-step-button').on('click', function() {\n firstError = true;\n });\n },\n\n submit: function () {\n $('form').on('submit', function (e) {\n return validateForm.call(this, e, {formSubmit: true});\n });\n },\n\n focusOut: function () {\n $('form input:not(.js-datepicker)').on('focusout', function (event) {\n if ($(this).hasClass('js-prevent-validation')) {\n return;\n } else if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n invalidateForm(this, event);\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n }\n if ($(this).is('input')) {\n $(this).siblings('.cc-feedback-message').children('.cc-text-message').text('');\n } else {\n $(this).parent().parent().siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n }\n });\n $(document).on('changed.bs.select', 'select', function (event) {\n if (! $(this).val()) return;\n\n if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n invalidateForm(this, event);\n } else {\n if ($(this).hasClass('cc-error')) {\n if ($(this).hasClass('cc-select')) {\n $(this).parent().removeClass('cc-error');\n $(this).removeClass('cc-error');\n }\n }\n var found = $(this).parent().parent().children('.cc-feedback-message').children('.cc-text-message').text('').length;\n if (! found) {\n $(this).closest('.cc-form-group').find('.cc-feedback-message .cc-text-message').text('');\n }\n }\n });\n $('input[type=\"radio\"]').on('click change', function (event) {\n if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n invalidateForm(this, event);\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n }\n $(this).closest('.d-flex').siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n });\n },\n\n validateContactUsPDPform: function() {\n $(document).on('click', '#submitContactUs', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateRequesSizePDPform: function() {\n $(document).on('click', '.js-requestsize-button', function(e) {\n if ($(this.form).find('select#requestSize-size').val() === '') {\n $(this.form).find('select#requestSize-size').each(function () {\n var errorText = $(this).data('noitems');\n this.setCustomValidity(errorText);\n });\n }\n return validateForm.call(this.form, e);\n });\n },\n validateFindInStorePDPform: function() {\n $(document).on('click', '.js-submit-findInStore', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validatecontactOrderform: function() {\n $(document).on('click', '.js-submit-orderInfo', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateHelpWithSizeform: function() {\n $(document).on('click', '#helpWithSize-submit', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateLoginOfCanvas: function() {\n $(document).on('click', 'form#loginOfCanvas .js-login-offcanvas', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateRepairFormMyAccount: function() {\n $(document).on('click', 'form#repairForm-MyAccount .js-submit-repairForm', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateGenericCusForm: function() {\n $(document).on('click', '.js-genericCus-submit', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateRegistration: function() {\n $(document).on('click', 'form.registration button[type=submit]', function(e) {\n return validateForm.call(this.form, e);\n });\n\n $(document).on('click', 'form.registrationemail button[type=submit]', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateOverlayNewsletter: function() {\n // clear privacy consent error message when needed\n $(document).on('click', '.js-form-overlay-newsletter .js-privacyShopping[value=\"true\"]', function() {\n var $form = $(this.form);\n $('.js-privacy-error', $form).addClass('cc-invisible');\n });\n\n const isPrivacyConsentGranted = function($form) {\n var $privacyField = $('.js-privacyShopping[value=\"true\"]', $form);\n return !! ($privacyField.length && $privacyField.is(':checked'));\n }\n\n const areLinesSelected = function($form) {\n var $lines = $('.cc-newsletter-form-preferences', $form);\n return !! ($lines.length && $('.cc-checkbox:checked', $lines).length);\n }\n\n\n $(document).on('click', '.js-form-overlay-newsletter button[type=\"submit\"]', function(e){\n var $form = $(this.form);\n var $scrollableParent = $form.closest('.cc-overlay-info');\n\n // clear backend error messages\n $('.js-backend-errors .cc-text-message', $form).addClass('cc-invisible');\n var isFirstStep = $form.hasClass('js-form-overlay-newsletter-step1'); // this class is added only to image-two-steps modal\n\n // check privacy consent only if lines are selected ( only on second step with image-two-steps modal )\n if (!isFirstStep && areLinesSelected()) {\n var privacyGranted = isPrivacyConsentGranted($form);\n if (! privacyGranted) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n var $errorMsg = $('.js-privacy-error', $form);\n $errorMsg.removeClass('cc-invisible');\n scrollAnimate($errorMsg, {scrollableParent: $scrollableParent});\n validateForm.call(this.form, e, {scrollableParent: $scrollableParent})\n return false;\n }\n }\n\n return validateForm.call(this.form, e, {scrollableParent: $scrollableParent});\n });\n },\n validateFields: function (fields, config) {\n if (fields) {\n return validateFields.call(fields, null, config);\n }\n },\n // validateResetPwdOfCanvas: function() {\n // $(document).on('click', 'form.cc-resetpwd-form-offCanvas .js-resetPwd-request', function(e) {\n // return validateForm.call(this.form, e);\n // });\n // },\n buttonClick: function () {\n $('form button[type=\"submit\"], form input[type=\"submit\"]').on('click', function () {\n // clear all errors when trying to submit the form\n clearForm($(this).parents('form'));\n });\n },\n\n noOrientalCheck: function () {\n $(document).on('focusout', '.js-no-oriental', function () {\n if ($(this).data('oriental-error') != undefined) {\n var validationMsg = $(this).data('oriental-error');\n var regex = /^[a-zA-Z0-9 -_\\/(){}|\"!? ’'‘ÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ]+$/;\n var value = $(this).val();\n var valid = regex.test(value);\n if (value && value !== '') {\n if (!valid) {\n $(this)\n .addClass('cc-error')\n .siblings('.cc-feedback-message').children('.cc-text-message')\n .text(validationMsg);\n this.setCustomValidity(validationMsg);\n $(this).attr('data-no-oriental', false);\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this)\n .removeClass('cc-error')\n .siblings('.cc-feedback-message').children('.cc-text-message')\n .text('');\n this.setCustomValidity(\"\");\n $(this).attr('data-no-oriental', true);\n }\n }\n }\n }\n });\n },\n validateRequestAppointmentform: function() {\n $(document).on('click', 'form #js-submit-Appointment', function(e) {\n e.currentTarget = $(this).closest('form#appointment');\n return validateForm.call(this.form, e);\n });\n },\n\n validateAppointmentformUser: function() {\n $(document).on('click', '.js-update-customerForm form .js-validate-form', function(e) {\n e.currentTarget = $(this).closest('form');\n return validateForm.call(this.form, e);\n });\n },\n functions: {\n validateForm: function (form, event) {\n validateForm.call($(form), event || null);\n },\n validateContactUsform: function() {\n var hasClassVisible = function (el) {\n return $(el).parents('.cc-no-visible').length === 0;\n }\n \n return validateForm.call($('form#contactUs').get(0), /* event = */ null, {shouldValidate: hasClassVisible});\n },\n clearForm: clearForm\n }\n};\n","'use strict';\n\nvar _successCallback;\nvar _failCallback;\nvar _captchaID;\n\n(function(){\n var scriptToBeLoaded = document.querySelector('#tencentCaptchaScript[src]');\n if (! scriptToBeLoaded) {\n var script = document.querySelector('#tencentCaptchaScript:not([src])');\n if (script) {\n script.setAttribute('src', script.getAttribute('data-src'));\n }\n }\n})();\n\nfunction tencetCaptchaCallback(res) {\n if (res.ret === 0) {\n // successful verification\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_randstr\"]`).val(res.randstr);\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val(res.ticket);\n \n if (! res.errorCode) {\n if (_successCallback) {\n _successCallback({\n randstr: res.randstr,\n ticket: res.ticket\n });\n }\n \n } else { // error\n if (_failCallback) _failCallback();\n }\n } else {\n if (_failCallback) _failCallback();\n // console.log('errorCode:', res.errorCode, 'errorMessage:', res.errorMessage);\n }\n}\n\nfunction tencetCaptchaLoadingErrCallback(error) {\n if (_failCallback) _failCallback();\n}\n\nfunction showCaptcha (config = {}) {\n _captchaID = config.captchaID;\n _successCallback = config.success;\n _failCallback = config.fail;\n\n try {\n var captchaAppID = $('.js-tencentCaptchaAppID').val();\n var captcha = new TencentCaptcha(captchaAppID, tencetCaptchaCallback, {});\n captcha.show();\n } catch (error) {\n tencetCaptchaLoadingErrCallback(error);\n }\n}\n\nmodule.exports = {\n verify: function() {\n $.ajax({\n type: 'POST',\n url: $('input[name=\"tencent-captcha-verify-url\"]').val(),\n data: {\n randstr: $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_randstr\"]`).val(),\n ticket: $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val(),\n },\n success: function(data) {\n if (data.success) {\n if (_successCallback) _successCallback(data);\n } else {\n if (_failCallback) _failCallback(data);\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val('');\n }\n },\n error: function(data) {\n if (_failCallback) _failCallback(data);\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val('');\n }\n });\n },\n\n /**\n * Check if the Tencent captcha script has already been loaded into the HTML.\n */\n isAlreadyLoaded: function() {\n return $('#tencentCaptchaScript').length;\n },\n\n /**\n * Show the Tencent captcha popup\n * @param {JQuery} $tencentCaptchaEl \n * @param {Promise} promise \n */\n initialize: function($tencentCaptchaEl, promise) {\n var $captchaInput = $('input[name=\"tencent_captcha_ticket\"]', $tencentCaptchaEl);\n if ($captchaInput.length && ! $captchaInput.val()) {\n showCaptcha({\n captchaID: $tencentCaptchaEl.attr('data-id'),\n success: (data) => promise.resolve(data),\n fail: () => promise.reject()\n });\n } else {\n promise.resolve();\n }\n },\n\n /**\n * Invalidate the captcha element\n * @param {JQuery} $tencentCaptchaEl \n */\n invalidateCaptcha: function($tencentCaptchaEl) {\n $('input[name=\"tencent_captcha_ticket\"]', $tencentCaptchaEl).val('');\n }\n}\n","const defaultStyle = {\n color: 'gold',\n shape: 'rect',\n layout: 'vertical',\n label: 'paypal',\n tagline: false\n};\n\n/**\n * Gets paypal button styles\n * @param {Element} button - button element\n * @returns {Object} with button styles or if error appears with default styles\n */\nfunction getPaypalButtonStyle(button) {\n try {\n const config = button.getAttribute('data-paypal-button-config');\n if (config) {\n const buttonConfigs = JSON.parse(config);\n return buttonConfigs.style;\n }\n } catch (error) {\n return {\n style: defaultStyle\n };\n }\n}\n\n/**\n * Get CSRF Token\n * @returns {string} - csrf token value\n */\nfunction getCsrfToken() {\n let $element = document.querySelector('[name=\"csrf_token\"]');\n\n if ($element && $element.value !== '') {\n return $element.value;\n }\n\n $element = document.querySelector('[data-tokenname=\"csrf_token\"]');\n\n if ($element && $element.getAttribute('data-token') !== '') {\n return $element.getAttribute('data-token');\n }\n\n return '';\n}\n\n/**\n * Add csrf token param to url\n * @param {string} url - source url\n * @returns {string} - url with csrf_token param\n */\nfunction getUrlWithCsrfToken(url) {\n const urlInstance = new URL(url);\n\n urlInstance.searchParams.append('csrf_token', getCsrfToken());\n\n return urlInstance.toString();\n}\n\nexport {\n getPaypalButtonStyle,\n getUrlWithCsrfToken\n};\n","var loaderInstance = require('./loader');\nvar $loaderContainer = document.querySelector('.paypalLoader');\nvar loader = loaderInstance($loaderContainer);\n/**\n * Appends error message on cart page\n *\n * @param {string} message error message\n */\nfunction showCartErrorHtml(message) {\n $('.checkout-btn').addClass('disabled');\n $('.cart-error').append(\n `
\n \n ${message}\n
`\n );\n window.scrollTo(0, 0);\n}\n\n/**\n * Appends error message on billing checkout page\n *\n * @param {string} message error message\n */\nfunction showCheckoutErrorHtml(message) {\n document.querySelector('.error-message-text').textContent = '';\n document.querySelector('.error-message').style.display = 'block';\n document.querySelector('.error-message-text').append(message);\n window.scrollTo(0, 0);\n}\n\n/**\n * Updates information about an order\n *\n * @returns {Object} Call handling result\n */\nfunction updateOrderData() {\n loader.show();\n return $.ajax({\n url: window.paypalUrls.updateOrderData + '?isCartFlow=true',\n type: 'PATCH',\n success: () => {\n loader.hide();\n window.location.href = window.paypalUrls.placeOrderStage;\n },\n error: (err) => {\n loader.hide();\n var error = JSON.parse(err.responseText);\n showCartErrorHtml(error.errorMsg);\n if (error.transactionExpired) {\n location.reload();\n }\n }\n });\n}\n\n/**\n * Gets purchase units\n *\n * @returns {Object} with purchase units data\n */\nfunction getPurchaseUnits() {\n return $.get(window.paypalUrls.getPurchaseUnit)\n .then(({ purchase_units }) => purchase_units);\n}\n\n/**\n * Gets Billing Agreement Token\n *\n * @param {boolean} isCartFlow - billing agreement flow from cart\n * @returns {string} billingToken - returns a JSON response that includes token, an approval URL\n */\nfunction getBillingAgreementToken(isCartFlow = false) {\n return $.get(window.paypalUrls.createBillingAgreementToken + `?isCartFlow=${isCartFlow}`)\n .then((data) => data);\n}\n\n/**\n * Gets Billing Agreement\n * After buyer approval, you use a billing agreement token to create the agreement.\n *\n * @param {string} billingToken - billing agreement token\n * @returns {Object} JSON response body that includes the billing agreement ID,\n * the state of the agreement, which is ACTIVE, and information about the payer\n */\nfunction createBillingAgreementCall(billingToken) {\n return $.ajax({\n url: window.paypalUrls.createBillingAgreement,\n type: 'POST',\n contentType: 'application/json',\n data: JSON.stringify({ billingToken })\n });\n}\n\n/**\n * Gets Order Details\n *\n * @param {string} orderId - billing agreement token\n * @returns {Object} JSON response body that includes payer email\n */\nfunction getOrderDetailsCall(orderId) {\n return $.get(window.paypalUrls.getOrderDetails + `?orderId=${orderId}`)\n .then((data) => data);\n}\n\n/**\n * Create billing formData from fields data\n *\n * @param {Object} fieldsData - fields data values\n * @param {Elemtn} $paypalButton - paypal button selector\n * @returns {Object} cart billing form data\n */\nfunction createCartBillingFormData(fieldsData, $paypalButton) {\n var cartBillingFormData = new FormData();\n if (!$paypalButton) {\n $paypalButton = document.querySelector('#paypal_pdp_image') || document.querySelector('#paypal_image');\n }\n var cartBillingFields = $paypalButton && JSON.parse($paypalButton.getAttribute('data-paypal-billing-form-fields'));\n\n Object.entries(cartBillingFields).forEach(entry => {\n const [key, field] = entry;\n if (typeof field === 'object') {\n cartBillingFormData.append(field.name, fieldsData && fieldsData[key] ? fieldsData[key] : field.value);\n }\n });\n\n return cartBillingFormData;\n}\n\n/**\n * Calls to returnFromCart endpoint, redirects to place order stage or shows error if it exists\n *\n * @returns {Object} Call handling result\n */\nfunction returnFromCart() {\n loader.show();\n let cartBillingFormData = createCartBillingFormData();\n\n return $.ajax({\n url: window.paypalUrls.returnFromCart,\n type: 'POST',\n contentType: false,\n data: cartBillingFormData,\n processData: false,\n success: () => {\n loader.hide();\n window.location.href = window.paypalUrls.placeOrderStage;\n },\n error: function (err) {\n loader.hide();\n showCartErrorHtml(err.responseText);\n }\n });\n}\n\n/**\n * Call finishLpmOrder endpoint\n * @param {Object} details billing address details\n * @returns {Promise} ajax call\n */\nfunction finishLpmOrder(details) {\n const lpmName = document.querySelector('#usedPaymentMethod').value;\n const paypalMethodId = document.querySelector('#paypalMethodId').value;\n return $.ajax({\n url: window.paypalUrls.finishLpmOrder,\n type: 'POST',\n contentType: 'application/json',\n data: JSON.stringify({\n details,\n lpmName,\n paypalMethodId\n })\n });\n}\n\n/**\n * @returns {string} paypal order id\n */\nfunction getPaypalOrderId() {\n const helper = require('./helper');\n\n var orderId = $.ajax({\n url: helper.getUrlWithCsrfToken(window.paypalUrls.getPaypalOrderId),\n type: 'GET',\n contentType: 'application/json',\n async: false\n }).responseJSON.id;\n\n return orderId;\n}\n\nmodule.exports = {\n updateOrderData,\n getPurchaseUnits,\n getBillingAgreementToken,\n createBillingAgreementCall,\n getOrderDetailsCall,\n returnFromCart,\n showCartErrorHtml,\n showCheckoutErrorHtml,\n finishLpmOrder,\n createCartBillingFormData,\n getPaypalOrderId\n};\n","'use strict';\n\nfunction scrollToElement(element, options = {}) {\n var {center, offset, focus, disableScroll, duration, delay, scrollableParent} = options;\n setTimeout(() => {\n if (element && element.length) {\n if (element.length > 1) {\n element = element.eq(0);\n }\n var position = element.offset().top || 0;\n if (! position) {\n position = element.parent().length ? element.parent().offset().top : 0\n }\n\n if (center) {\n position -= window.innerHeight / 2;\n }\n\n if (offset) {\n position = position * offset;\n }\n \n if (disableScroll) {\n $('body').addClass('prevent-user-scroll');\n }\n\n if (! scrollableParent) {\n scrollableParent = $('html, body');\n }\n\n $(scrollableParent).animate(\n { scrollTop: position },\n {\n duration: duration || 500,\n complete: () => {\n setTimeout(() => {\n if (focus) {\n element.focus();\n }\n if (disableScroll) {\n $('body').removeClass('prevent-user-scroll');\n }\n }, 500);\n }\n }\n );\n } else {\n $('.logo-home, .cc-logo-link').eq(0).focus();\n }\n }, delay || 0);\n}\n\n\nfunction scrollToPosition(position, options = {}) {\n var {center, disableScroll, duration, delay, scrollableParent} = options;\n setTimeout(() => {\n if (center) {\n position -= window.innerHeight / 2;\n }\n\n if (disableScroll) {\n $('body').addClass('prevent-user-scroll');\n }\n\n if (! scrollableParent) {\n scrollableParent = $('html, body');\n }\n\n $(scrollableParent).animate(\n { scrollTop: position || 0 },\n {\n duration: duration || 500,\n complete: () => {\n if (disableScroll) {\n setTimeout(() => {\n $('body').removeClass('prevent-user-scroll'); \n }, 500);\n }\n }\n }\n );\n }, delay || 0);\n}\n\n/**\n * Scrolls smoothly to an element or a position\n * @param {JQuery | number} elementOrPosition jquery element or position\n * @param {{\n* center: boolean,\n* offset: number,\n* focus: boolean,\n* disableScroll: boolean,\n* duration: number,\n* delay: number,\n* scrollableParent: JQuery\n* }} options\n*/\nfunction scroll(elementOrPosition, options = {}) {\n if (typeof elementOrPosition === 'number') {\n var position = parseInt(elementOrPosition);\n scrollToPosition(position, options);\n } else {\n var element = elementOrPosition;\n if (! element instanceof jQuery) {\n element = $(element);\n }\n scrollToElement(element, options);\n }\n}\n\nmodule.exports = scroll;","'use strict';\nvar { appendToUrl } = require('../common/urlUtil');\n\n/**\n * Retrieves the relevant pid value\n * @param {jquery} $el - DOM container for a given add to cart button\n * @return {string} - value to be used when adding product to cart\n */\nfunction getPidValue($el) {\n let pid = $('.product-detail').data('pid');\n return pid;\n}\n\n/**\n * Retrieves the quantity that should be added to the cart. As per design, it is always 1\n * @return {string} - 1\n */\nfunction getQuantitySelected() {\n return '1';\n}\n\n/**\n * Process the attribute values for an attribute that has image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {boolean} attr.values.selected - Flag as to whether the attribute is currently selected\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.selectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction processSwatchValues(attr, $productContainer, msgs) {\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer.find('[data-attr=\"' + attr.id + '\"] [data-attr-value=\"' +\n attrValue.value + '\"]');\n\n if (attrValue.selected) {\n $attrValue.addClass('cc-active');\n $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText);\n const buildSrcSet = (imageSet) => {\n return imageSet.map((url, idx) => {\n return url + ' ' + ((idx + 1) * 100) + 'w';\n }).join(',');\n };\n $('.js-selected-color')\n .attr('src', attrValue.images.swatch[0].url)\n .attr('srcset', buildSrcSet(attrValue.images.swatch[0].resizedUrls));\n\n let $colorText = $attrValue.children('.js-color-text');\n if ($colorText) {\n $colorText.removeClass('hidden');\n }\n } else {\n $attrValue.removeClass('cc-active');\n $attrValue.siblings('.selected-assistive-text').empty();\n let $colorText = $attrValue.children('.js-color-text');\n if ($colorText) {\n $colorText.addClass('hidden');\n }\n }\n\n if (attrValue.url) {\n // Gets the part of the size for remove it (inbetween the 'size=' and the next '&'\n var url = attrValue.url;\n var sizeStartIndex = url.indexOf('_size=');\n if (sizeStartIndex > 0) {\n var sizeEndIndex = sizeStartIndex + 6;\n var partOne = url.substring(0, sizeEndIndex);\n var partTwo = url.substring(sizeEndIndex);\n var eIndex = partTwo && partTwo.length > 0 ? partTwo.indexOf('&') : -1;\n var partTwoMod = '';\n if (eIndex > 0) {\n partTwoMod = partTwo.substring(eIndex);\n }\n var finalUrl = partOne + partTwoMod;\n $attrValue.attr('data-url', finalUrl);\n } else {\n $attrValue.attr('data-url', attrValue.url);\n }\n } else {\n $attrValue.removeAttr('data-url');\n }\n\n // Disable if not selectable\n $attrValue.removeClass('selectable unselectable');\n\n $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable');\n // $attrValue.prop('disabled', !attrValue.selectable);\n });\n}\n\n/**\n * Process attribute values associated with an attribute that does not have image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.selected - Flag as to whether an attribute is currently selected\n * @param {boolean} attr.values.isOnlyOneLeft - Flag as to whether an attribute has limited availability\n * @param {boolean} attr.values.selectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction processNonSwatchValues(attr, $productContainer) {\n let attributeSelector = '[data-attr=\"' + attr.id + '\"]';\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer\n .find(attributeSelector + ' [data-attr-value=\"' + attrValue.value + '\"]');\n $attrValue\n .prop('disabled', false)\n .removeClass('cc-active')\n .removeClass('cc-request-size');\n\n if (!attrValue.selectable) {\n $attrValue.prop('disabled', true);\n $attrValue.addClass('cc-request-size');\n }\n if (attrValue.selected) {\n var numberofsizes = $('.js-size-container').data('numberofsizes');\n if (numberofsizes && parseInt(numberofsizes) === 1 && $('.js-size-container') && $('.js-size-container').children() && $('.js-size-container').children().first()) {\n $attrValue.data('value', attrValue.url);\n $attrValue.addClass('cc-active');\n let size = $('.cc-prod-functional-info').length > 0\n ? $('.cc-prod-functional-info').find('.js-size-value').text()\n : $('.cc-pdp__content-attributes').find('.js-size-value').text();\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n } else {\n $attrValue.addClass('cc-active');\n }\n } else {\n $attrValue.data('value', attrValue.url);\n }\n $attrValue.find('.js-limited-availability').addClass('hidden');\n $attrValue.removeClass('col-6 col-md-8');\n $attrValue.addClass('col-12');\n $attrValue.parent().find('.js-check-availability').addClass('hidden');\n\n if (attrValue.isOnlyOneLeft) {\n $attrValue.find('.js-limited-availability').removeClass('hidden');\n }\n if (attrValue.online) {\n $attrValue.parent('.cc-size-container').removeClass('hidden');\n } else {\n $attrValue.parent('.cc-size-container').addClass('hidden');\n }\n\n if (!attrValue.selectable) {\n $attrValue.removeClass('col-12');\n $attrValue.addClass('col-6 col-md-8');\n $attrValue.parent().find('.js-check-availability').removeClass('hidden');\n $attrValue.parent().find('.js-check-availability').parent().removeClass('hidden');\n }\n\n if (attrValue.hideNotifyMeProduct) {\n $attrValue.parent().find('.js-check-availability').parent().addClass('hidden');\n }\n });\n}\n\n/**\n * Routes the handling of attribute processing depending on whether the attribute has image\n * swatches or not\n *\n * @param {Object[]} attrs - Attribute\n * @param {jQuery} $productContainer - DOM element for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction updateAttrs(attrs, $productContainer, msgs) {\n // Currently, the only attribute type that has image swatches is Color.\n var attrsWithSwatches = ['color'];\n\n attrs.forEach(function (attr) {\n if (attrsWithSwatches.indexOf(attr.id) > -1) {\n processSwatchValues(attr, $productContainer, msgs);\n } else {\n processNonSwatchValues(attr, $productContainer);\n }\n });\n}\n\n/**\n * Updates the availability status in the Product Detail Page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateAvailability(response, $productContainer) {\n // TODO: rivedere il comportamento\n var availabilityValue = '';\n var availabilityMessages = response.product.availability.messages;\n if (!response.product.readyToOrder) {\n availabilityValue = '
  • ' + response.resources.info_selectforstock + '
  • ';\n } else {\n availabilityMessages.forEach(function (message) {\n availabilityValue += '
  • ' + message + '
  • ';\n });\n }\n\n $($productContainer).trigger('product:updateAvailability', {\n product: response.product,\n $productContainer: $productContainer,\n message: availabilityValue,\n resources: response.resources\n });\n}\n\n/**\n * Updates the images shown in page from response containing images.\n * @param {Object[]} imgs - Array of large product images,along with related information\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateImages(imgs, $productContainer) {\n const buildSrcSet = (imageSet, prevArrStartIndex) => {\n return imageSet.map((url, idx) => {\n return url + ' ' + ((idx + 1 + prevArrStartIndex) * 200) + 'w';\n }).join(',');\n };\n let $imageContainer = $productContainer.find('.js-image-list');\n\n // Read the template for the images shown in the list\n const imgTemplate = document.getElementById('image-template').innerHTML;\n for (var i = 0; i < imgs.length; i++) {\n var $imagesDivs = $imageContainer.find('.cc-content-image');\n var singleImage = $imagesDivs.get(i);\n var $ResizedUrlsFirstSource = (imgs[i].resizedUrls).splice(0, 3);\n var $ResizedUrlsSecondSource = (imgs[i].resizedUrls);\n if (singleImage) {\n var $picture = $(singleImage).find('picture');\n var $image = $picture.find('img');\n var $sources = $picture.find('source');\n $sources.eq(0).attr('srcset', buildSrcSet($ResizedUrlsFirstSource, 0));\n $sources.eq(1).attr('srcset', buildSrcSet($ResizedUrlsSecondSource, 3));\n $image.attr('src', imgs[i].url);\n $image.attr('alt', imgs[i].alt + 'image number ' + i + '');\n if ($image.hasClass('lazyload')) {\n $image.removeClass('lazyload');\n }\n } else {\n var cloneImage = $imagesDivs.get(i - 1);\n $(cloneImage).clone().appendTo($imageContainer);\n $imagesDivs = $imageContainer.find('.cc-content-image');\n cloneImage = $imagesDivs.get(i);\n var $picture = $(cloneImage).find('picture');\n var $image = $picture.find('img');\n var $sources = $picture.find('source');\n $sources.eq(0).attr('srcset', buildSrcSet($ResizedUrlsFirstSource, 0));\n $sources.eq(1).attr('srcset', buildSrcSet($ResizedUrlsSecondSource, 3));\n $image.attr('src', imgs[i].url);\n $image.attr('alt', imgs[i].alt + 'image number ' + i + '');\n if ($image.hasClass('lazyload')) {\n $image.removeClass('lazyload');\n }\n }\n }\n var imgLength = $imageContainer.find('.cc-content-image').length;\n if (imgs.length < imgLength) {\n var $imagesOld = $imageContainer.find('.cc-content-image');\n for (var j = (imgLength - 1); j > (imgs.length - 1); j--) {\n var oldimg = $imagesOld.get(j);\n $(oldimg).remove();\n }\n }\n}\n\nfunction updateVideo($productContainer, htmlVideo, position) {\n let $videoContainerVertical = $productContainer.find('.js-image-list').find('.cc-content-video:not(\".cc-only-mobile\")');\n let $videoContainerHorizontalDesktop = $productContainer.find('.cc-pdp__video-horizontal-desktop');\n let $videoContainerHorizontalMobile = $productContainer.find('.cc-content-video.cc-only-mobile');\n var ImageandVideoContainer = $productContainer.find('.js-image-list');\n if ($videoContainerVertical.length > 0) {\n if (position === 'vertical') {\n $videoContainerVertical.replaceWith(htmlVideo);\n } else {\n $productContainer.find('.js-image-list .cc-content-video').remove();\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $(ImageandVideoContainer).append(mobileVideo);\n $(desktopVideo).insertAfter('.cc-pdp__info');\n }\n } else if ($videoContainerHorizontalDesktop.length > 0 || $videoContainerHorizontalMobile.length > 0) {\n if (position === 'vertical') {\n $productContainer.find('.cc-pdp__video-horizontal-desktop').remove();\n $productContainer.find('.cc-content-video.cc-only-mobile').remove();\n $(ImageandVideoContainer).prepend(htmlVideo);\n } else {\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $videoContainerHorizontalDesktop.replaceWith(desktopVideo);\n $videoContainerHorizontalMobile.replaceWith(mobileVideo);\n }\n } else {\n if (position === 'vertical') {\n $(ImageandVideoContainer).prepend(htmlVideo);\n } else {\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $(ImageandVideoContainer).append(mobileVideo);\n $(desktopVideo).insertAfter('.cc-pdp__info');\n }\n }\n}\n\n/**\n * Parses JSON from Ajax call made whenever an attribute value is [de]selected\n * @param {Object} response - response from Ajax call\n * @param {Object} response.product - Product object\n * @param {Object} response.product.price - Price object related to the product\n * @param {Object} response.product.price.html - HTML rendering of the price object\n * @param {string} response.product.id - Product ID\n * @param {Object[]} response.product.variationAttributes - Product attributes\n * @param {Object} response.product.images - Product images\n * @param {Object[]} response.product.images.large - Product images in large format\n * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required\n * attributes have been selected. Used partially to\n * determine whether the Add to Cart button can be enabled\n * @param {Object} response.resources - Translation object\n * @param {boolean} imagesCanChange - if the images can change\n * @param {jQuery} $productContainer - DOM element for a given product.\n **/\nfunction handleVariantResponse(response, $productContainer, imagesCanChange) {\n if (response.product.variationAttributes) {\n updateAttrs(response.product.variationAttributes, $productContainer, response.resources);\n }\n\n if (imagesCanChange) {\n // Update primary images\n var primaryImageUrls = response.product.images.large;\n updateImages(primaryImageUrls, $productContainer);\n if (response.product.hasHorizontalVideo) {\n if (response.product.videoH.CLDvideoHURL !== $('.cc-pdp__video-horizontal-desktop .cc-video-hotizontal source').attr('src')) {\n updateVideo($productContainer, response.product.videoCloudinaryPdpHtml, 'horizontal');\n }\n } else if (response.product.hasVerticalVideo) {\n if (response.product.videoV.CLDvideoVURL !== $('.js-image-list .cc-content-video source').attr('src')) {\n updateVideo($productContainer, response.product.videoCloudinaryPdpHtml, 'vertical');\n }\n } else {\n $productContainer.find('.js-image-list .cc-content-video').remove();\n $productContainer.find('.cc-pdp__video-horizontal-desktop').remove();\n $productContainer.find('.cc-content-video.cc-only-mobile').remove();\n }\n }\n\n // Update pricing\n var $priceSelector = $('.js-prices .js-price', $productContainer).length\n ? $('.js-prices .js-price', $productContainer)\n : $('.js-prices .js-price');\n $priceSelector.replaceWith(response.product.price.html);\n\n updateAvailability(response, $productContainer);\n\n // Enable \"Add to Cart\" button if all required attributes have been selected\n $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {\n product: response.product, $productContainer: $productContainer\n }).trigger('product:statusUpdate', response.product);\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelect(selectedValueUrl, $productContainer, imagesCanChange) {\n if (selectedValueUrl) {\n $('body').trigger('product:beforeAttributeSelect',\n { url: selectedValueUrl, container: $productContainer });\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n if (imagesCanChange) {\n var imgVal = $('#js-pv-image').val();\n let $imageContainer = $productContainer.find('.js-image-list');\n $imageContainer.find('.cc-content-image').find('picture source').attr('srcset', imgVal);\n }\n\n // cites on variation group, checking cites value on color selection\n if (data.product.enableDisclaimerShipment && $('.js-disclaimer-shipment').length) {\n $('.js-disclaimer-shipment').removeClass('d-none');\n } else if (!$('.js-disclaimer-shipment').hasClass('d-none')) {\n $('.js-disclaimer-shipment').addClass('d-none');\n }\n\n // pfas on variation group/variant\n if (data.product.pfas && $('.js-banner-pfas').length) {\n $('.js-banner-pfas').removeClass('d-none');\n } else if (!$('.js-banner-pfas').hasClass('d-none')) {\n $('.js-banner-pfas').addClass('d-none');\n }\n\n // data tags\n if (data.product.Tag) {\n $('.js-tag-container span', $productContainer).text(data.product.Tag.toUpperCase());\n $('.js-tag-container', $productContainer).attr('hidden', false);\n } else {\n $('.js-tag-container', $productContainer).attr('hidden', true);\n $('.js-tag-container span', $productContainer).text('');\n }\n handleVariantResponse(data, $productContainer, imagesCanChange);\n $('body').trigger('product:afterAttributeSelect',\n { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelectSizeLook(selectedValueUrl, $productContainer, imagesCanChange) {\n if (selectedValueUrl) {\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n $('.js-product-detail-look').data('pid', data.product.id);\n $('button.add-to-cart').data('disabled', (!data.product.readyToOrder || !data.product.available));\n\n $.spinner().stop();\n // trigger wishlist update\n $('body').trigger('wishlist:productVariantChanged');\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelectLook(selectedValueUrl) {\n if (selectedValueUrl) {\n var url = $('.js-select-single-tile-look').data('href');\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n var pid = data.product.sku;\n var dat = {\n pid: pid\n };\n\n $.ajax({\n url: url,\n data: dat,\n method: 'GET',\n success: function (response) {\n if (response.stickyBar) {\n $('.js-sticky-look-container').html(response.stickyBar);\n }\n },\n error: function(err) {\n }\n });\n // handleVariantResponse(data, $productContainer, imagesCanChange);\n // $('body').trigger('product:afterAttributeSelect',\n // { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @return {string} - The provided URL to use when adding a product to the cart\n */\nfunction getAddToCartUrl() {\n return $('.add-to-cart-url').val();\n}\n\n/**\n * Makes a call to the server to report the event of adding an item to the cart\n *\n * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false\n */\nfunction miniCartReportingUrl(url) {\n if (url) {\n $.ajax({\n url: url,\n method: 'GET',\n success: function () {\n // reporting urls hit on the server\n },\n error: function () {\n // no reporting urls hit on the server\n }\n });\n }\n}\n\nfunction performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, onSuccess, onError, customFrom) {\n var data = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n var masterPid = $('.js-master-pid').val();\n if (addToCartUrl) {\n $.spinner().start();\n $.ajax({\n url: addToCartUrl,\n method: 'POST',\n data: data,\n success: function (data) {\n // handlePostCartAdd(data);\n $.spinner().stop();\n if (onSuccess != null) {\n // analytics\n\n // get product by pid\n var totPid = pid;\n var generalPid;\n if (data.skuMaster) {\n generalPid = data.skuMaster;\n } else if (masterPid) {\n generalPid = masterPid;\n } else if (data.productColor) {\n var split = totPid.split(data.productColor);\n if (split) {\n generalPid = split[0];\n }\n }\n if (! generalPid) {\n var posC = totPid.lastIndexOf('C');\n if (totPid.charAt(posC - 1) === 'C') {\n posC = posC - 1;\n }\n if (posC !== -1) {\n generalPid = totPid.substr(0, posC);\n } else {\n generalPid = totPid;\n }\n }\n\n // get product -> js-analytics-impressions-product-initialized prevent minicart elements to be selected\n var selectorPrefix = '.js-analytics-impressions-product-initialized.js-analytics-click-product-info-';\n var product = $(selectorPrefix + generalPid);\n if ($('.page').data('action') && $('.page').data('action').indexOf('Wishlist') !== -1) {\n if (product.length > 1) {\n product = $($(selectorPrefix + generalPid + '[data-color=\"' + data.productColor + '\"]')[0]);\n }\n }\n if (product.length <= 0) {\n product = $(selectorPrefix + totPid);\n }\n if (product.length <= 0) {\n product = $(selectorPrefix + totPid.substring(0, totPid.length - 2));\n }\n if (product.length <= 0) {\n product = $(selectorPrefix + generalPid + 'C'); // pid concatenazione\n }\n\n if (product.length > 1) {\n if (window.isDesktop) {\n product = $(product[0]);\n } else product = $(product[1]);\n }\n\n if (customFrom) {\n product.attr('data-sticky', customFrom);\n }\n\n $('body').trigger('analytics:pushAddToCart', product);\n\n // END\n // update live content\n $('.js-mini-cart-update').text(data.addToCartLiveContent);\n\n onSuccess(data);\n }\n },\n error: function () {\n $.spinner().stop();\n if (onError != null) {\n onError();\n }\n }\n });\n\n var urlAnalytics = $('.add-to-minicart-analytics').val();\n var urlParams = {\n pid: pid\n };\n urlAnalytics = appendToUrl(urlAnalytics, urlParams);\n $.spinner().start();\n $.ajax({\n url: urlAnalytics,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n $('.js-minicart-analytics').append(data.minicartAnalytics);\n $.spinner().stop();\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n $.spinner().stop();\n }\n }\n });\n }\n}\n\nmodule.exports = {\n attributeSelect: attributeSelect,\n\n colorAttribute: function () {\n $(document).on('click', '[data-attr=\"color\"] button.js-color-choice', function (e) {\n // When the user clicks on one color inside the stickybar selection, change the aria-label of the selected color.\n $('.cc-content-thumb-color-sticky').attr(\"aria-label\", $(this).attr(\"data-accessibility-change\"));\n\n if ($(this).hasClass('js-color-choiche-sticky-look')) {\n attributeSelectLook($(this).attr('data-url'));\n } else {\n e.preventDefault();\n $(document).find('.js-image-list .cc-image').removeClass('lazyload');\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect($(this).attr('data-url'), $productContainer, true);\n // Reset size on PDP selector\n $('#js-size-text-default').removeClass('hidden');\n $('#js-size-text-selected').addClass('hidden');\n $('#js-size-text-selected').text('');\n // Reset size on PDP sticky selector\n $('#js-sticky-size-text-default').removeClass('hidden');\n $('#js-sticky-size-text-selected').addClass('hidden');\n $('#js-sticky-size-text-selected').text('');\n // 4Gift action url after size select\n var colorSelect = $(this).data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var sizeCode = $(document).find('.js-select-size.cc-active').data('attr-value');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n }\n });\n },\n\n colorAttributeLook: function () {\n $(document).on('click', '[data-attr=\"color\"] button.js-color-choice.js-color-choiche-sticky-look', function (e) {\n window.scrollTo(0, 0);\n e.preventDefault();\n\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect($(this).attr('data-url'), $productContainer, true);\n // Reset size on PDP selector\n $('#js-size-text-default').removeClass('hidden');\n $('#js-size-text-selected').addClass('hidden');\n $('#js-size-text-selected').text('');\n // Reset size on PDP sticky selector\n $('#js-sticky-size-text-default').removeClass('hidden');\n $('#js-sticky-size-text-selected').addClass('hidden');\n $('#js-sticky-size-text-selected').text('');\n // 4Gift action url after size select\n var colorSelect = $(this).data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var sizeCode = $(document).find('.js-select-size.cc-active').data('attr-value');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n });\n },\n\n selectAttribute: function () {\n $(document).on('click', '.js-select-size', function (e) {\n e.preventDefault();\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n if ($(this).closest('.cc-content-size-choice-sticky').hasClass('js-select-size-sticky-look')) {\n attributeSelectSizeLook($(e.currentTarget).data('value'), $productContainer, false);\n $('.js-upload-size').find('.js-size-container').removeClass('cc-active');\n $('.js-upload-size').find('.js-select-size').removeClass('cc-active');\n $(this).addClass('cc-active');\n $(this).parent().addClass('cc-active');\n let size = $(this).children('.js-size-value').text();\n let sizeCode = $(this).data('attr-value');\n $('#js-selected-size').val(sizeCode);\n $('#js-selected-size-to-find').val(sizeCode);\n $('.js-selected-size-socialList').val(sizeCode);\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n $('.js-sticky-choice-look').each((_idx, el) => {\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n });\n // $productContainer = $(e.currentTarget).closest('.js-sticky-look-container');\n // attributeSelectSizeLook($(e.currentTarget).data('value'), $productContainer, false);\n } else {\n attributeSelect($(e.currentTarget).data('value'), $productContainer, false);\n let size = $(this).children('.js-size-value').text();\n let sizeCode = $(this).data('attr-value');\n $('#js-selected-size').val(sizeCode);\n $('#js-selected-size-to-find').val(sizeCode);\n $('.js-selected-size-socialList').val(sizeCode);\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n // 4Gift action url after size select\n var colorSelect = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n }\n });\n },\n\n performAddToCart: function (target) {\n var addToCartUrl;\n var pid;\n var pidsObj;\n\n $('body').trigger('product:beforeAddToCart', target);\n\n pid = getPidValue($(target));\n if (!pid) {\n pid = $(target).data('pid');\n };\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = getQuantitySelected($(target));\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n var newStickyAddToCartButton = '';\n if (window.isMobile && $(target).closest('.cc-pdp__info').length) {\n var isStickyTop = $(target).closest('.cc-pdp__info').hasClass('cc-pdp__info--top');\n if (isStickyTop) {\n newStickyAddToCartButton = 'sticky_bar_top_macro';\n }\n var isMicroSticky = $(target).hasClass('js-went-micro-button');\n if (isMicroSticky) {\n newStickyAddToCartButton = 'sticky_bar_top_micro';\n $(target).removeClass('js-went-micro-button');\n }\n if (!isMicroSticky && !isStickyTop) {\n newStickyAddToCartButton = 'sticky_bar_bottom';\n }\n } else {\n newStickyAddToCartButton = $(target).attr('data-sticky');\n }\n\n $(target).trigger('updateAddToCartFormData', form);\n\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, newStickyAddToCartButton);\n },\n\n performAddToCartLook: function(target) {\n var addToCartUrl;\n var pid = $('.js-product-detail-look').data('pid');\n var pidsObj;\n\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = 1;\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, $(target).attr('data-sticky'));\n },\n\n addToCart: function () {\n var t = this;\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () {\n if ($(this).hasClass('js-add-to-cart-sticky-look')) {\n var addToCartUrl;\n var pid = $('.js-product-detail-look').data('pid');\n var pidsObj;\n\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = 1;\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, $(target).attr('data-sticky'));\n } else {\n t.performAddToCart(this);\n }\n });\n },\n\n getPidValue: getPidValue,\n getQuantitySelected: getQuantitySelected,\n miniCartReportingUrl: miniCartReportingUrl,\n performAddToCartCall: performAddToCartCall\n};\n","/* eslint-disable require-jsdoc */\nmodule.exports = function (containerElement) {\n function Constructor() {\n this.containerEl = containerElement;\n }\n Constructor.prototype.show = function () {\n this.containerEl.style.display = 'block';\n };\n Constructor.prototype.hide = function () {\n this.containerEl.style.display = 'none';\n };\n return new Constructor();\n};\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","'use strict';\n\nvar processInclude = require('./util');\nvar _throttle = require('lodash/throttle');\nvar stickyScrolling = false;\nvar _stickyExpanded = false;\nvar _scrollDirection = null;\nvar _userTouching = false;\nvar _scrollAnimation = false;\n\nvar initPaypalButton = require('/cartridges/custom_paypal/cartridge/client/default/js/pdp/initPdpButton');\nif (document.querySelector('.js_paypal-content')) {\n const paypalUrls = document.querySelector('.js_paypal-content').getAttribute('data-paypal-urls');\n window.paypalUrls = JSON.parse(paypalUrls);\n}\n/* detect if device is iOS for disable paypal Button in pdp */\nfunction isSafariBrowser() {\n var safari = false;\n var ua = navigator.userAgent.toLowerCase();\n if (ua.indexOf('safari') !== -1) {\n if (ua.indexOf('chrome') > -1) {\n safari = false;\n } else {\n safari = true;\n }\n }\n return safari;\n}\nconst getMobileOS = () => {\n const ua = navigator.userAgent;\n if (/android/i.test(ua)) {\n return 'Android';\n } else if (/iPad|iPhone|iPod/.test(ua) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) {\n return 'iOS';\n }\n return 'Other';\n};\n\n/**\n * Injects SDK into page for cart/minicart\n*/\nfunction injectPaypalSDK() {\n var head = document.getElementsByTagName('head').item(0);\n var script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.onload = function () {\n initPaypalButton.default();\n };\n script.src = window.paypalUrls.cartSdkUrl;\n script.setAttribute('data-partner-attribution-id', window.paypalUrls.partnerAttributionId);\n head.appendChild(script);\n}\nfunction injectAjaxPaypalSDK(cartSdkUrl, partnerAttributionId) {\n var head = document.getElementsByTagName('head').item(0);\n var script = document.createElement('script');\n script.async = true;\n script.type = 'text/javascript';\n script.onload = function () {\n initPaypalButton.default();\n };\n script.src = cartSdkUrl;\n script.setAttribute('data-partner-attribution-id', partnerAttributionId);\n head.appendChild(script);\n}\n\nfunction liveChatPositionStikyDownNewPDP() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: '16px',\n top: '',\n right: '16px'\n });\n if ($('.cc-pd.cc-pd-cta-anchored').length > 0) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: '60px',\n top: ''\n });\n }\n};\n\nfunction liveChatPositionStikyUpNewPDP() {\n var stikyHeight = $('.cc-pdp__info').height();\n if (window.isMobile) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: '192px',\n top: '',\n right: '16px'\n });\n } else if (window.isTablet) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight + 46,\n top: '',\n right: '30px'\n });\n } else {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight + 46,\n top: '',\n right: '30px'\n });\n }\n};\n\nfunction stickyUp (scrolling) {\n stickyScrolling = true;\n var stickyPos = $(document).find('.cc-pdp__info').offset().top;\n $(document).find('header.js-header').addClass('cc-header-sticky');\n let headerHeight = $(document).find('header.js-header.cc-header-sticky').outerHeight();\n var finalPosition = stickyPos - headerHeight;\n $('.cc-pdp__wrp').css({ 'margin-top': -finalPosition + 'px' });\n setTimeout(() => {\n $(document).trigger('stickyup-finished');\n }, 500);\n $(document).find('.cc-pdp__info').addClass('cc-pdp__info--top');\n _stickyExpanded = true;\n stickyScrolling = false;\n $('html, body').css('overscroll-behavior', 'contain');\n // close open modals\n $('.cc-pdp__stickymobile .js-sticky-choice.cc-open').trigger('click');\n liveChatPositionStikyDownNewPDP();\n\n // analytics\n var pid = $('.product-detail').data('pid');\n $('body').trigger('analytics:dataLayerPushObj', {\n 'event': 'custom_event',\n 'eventCategory': 'Product Detail Box',\n 'eventAction': 'open',\n 'eventLabel': pid\n });\n return finalPosition;\n}\n\nfunction stickyCollapse () {\n _scrollDirection = null;\n $('.cc-pdp__wrp').css({ 'margin-top': '' });\n $('.js-product-recommendations').css('margin-top', '');\n $('.cc-pdp__info').removeClass('cc-pdp__info--top');\n $(document).scrollTop(0);\n setTimeout(() => {\n $(document).trigger('stickycollapse-finished');\n }, 500);\n $('body').addClass('cc-blocked');\n // hide resume if showing\n $('.cc-pdp__resume-mobile').removeClass('cc-pdp__resume-mobile--fixed');\n $('.js-header').removeClass('cc-header-sticky');\n $('body').css('overscroll-behavior', '');\n $('.cc-pdp__content-title').css('margin-top', '');\n\n // close open modals\n $('.cc-pdp__stickymobile .js-sticky-choice.cc-open').trigger('click');\n liveChatPositionStikyUpNewPDP();\n\n if (_stickyExpanded) {\n // analytics\n var pid = $('.product-detail').data('pid');\n $('body').trigger('analytics:dataLayerPushObj', {\n 'event': 'custom_event',\n 'eventCategory': 'Product Detail Box',\n 'eventAction': 'close',\n 'eventLabel': pid\n });\n }\n _stickyExpanded = false;\n}\n\nfunction imageListHeight () {\n let headerHeight = $('header.js-header').outerHeight();\n let stickyHeight = $('.cc-pdp__info__btn-top').outerHeight() + $('.cc-pdp__info__focus').outerHeight();\n let viewportHeight = window.innerHeight;\n if (window.isMobile) {\n var imageListHeight = viewportHeight - stickyHeight - headerHeight + 10;\n $('.cc-pdp__images .cc-pdp__image-list').css('height', imageListHeight + 'px');\n }\n}\n\nfunction setFocusOnFirstRelatives(){\n $(document).find('.js-pdp-variant-link.cc-standard-image').first().focus();\n}\n\n\nfunction makeAccessible(isOnLoading, element){\n \n // Customize the aria-label on the sticky banner. On page load, get the active varion and set the appropriate aria-label\n // On varion click (else), get the clicked element information and update the aria-label on the sticky banner button\n\n var selectedColorInSticky = $('.cc-content-thumb-color-sticky');\n if (isOnLoading){\n var selectedColor = $('.js-color-choice.cc-color-choice.cc-active');\n var accessibilityColorName = selectedColor.data('accessibility-value');\n var accessibilityColorValue = selectedColor.data('attr-value');\n var oldAriaLabel = selectedColorInSticky.attr('aria-label');\n var newAccessibleAriaLabel = oldAriaLabel + \" \" + accessibilityColorName + \" \" + accessibilityColorValue;\n } else {\n var accessibilityColorName = element.data('accessibility-value');\n var accessibilityColorValue = element.data('attr-value');\n var defaultAriaLabel = selectedColorInSticky.data('accessibility-value');\n var newAccessibleAriaLabel = defaultAriaLabel + \" \" + accessibilityColorName + \" \" + accessibilityColorValue;\n }\n \n selectedColorInSticky.attr('aria-label', newAccessibleAriaLabel);\n}\n\n$(document).ready(function () {\n processInclude(require('./components/clientSideValidation'));\n processInclude(require('./product/detailNew'));\n processInclude(require('./product/wishlist'));\n processInclude(require('./product/contactPdp'));\n processInclude(require('./components/socialList'));\n if (window.isMobile) {\n // add custom class to header\n $('.js-header').addClass('js-header-newpdp');\n // when reloading, do not use previous scroll position. Always start from the top.\n window.history.scrollRestoration = 'manual';\n window.addEventListener('beforeunload', () => window.scrollTo(0, 0));\n\n // block scrolling\n $('body').addClass('cc-blocked');\n // set heigth image list\n\n setTimeout(imageListHeight, 750);\n }\n\n // On page load, change the aria-label of the sticky to the selected color\n makeAccessible(true, null);\n\n // Everytime the users clicks a variation, update che aria-label of the sticky button\n $(\".js-make-accessible\").on(\"click\", function() {\n makeAccessible(false, $(this));\n });\n\n $(\".cc-pdp__accordion__btn\").on(\"keypress\", function(event) {\n if (event.key === \"Enter\") {\n // $(this) is the h2 tag\n const targetId = $(this).attr(\"aria-controls\"); \n const ariaExpandedValue = $(this).attr(\"aria-expanded\");\n \n // targetElement is the div under the h2\n const targetElement = document.getElementById(targetId); \n\n if(ariaExpandedValue === \"true\"){\n $(this).attr('aria-expanded', \"false\");\n $(this).addClass(\"collapsed\");\n targetElement.classList.remove('show');\n targetElement.classList.add('collapse');\n } else {\n $(this).attr('aria-expanded', \"true\");\n $(this).toggleClass(\"collapsed\");\n targetElement.classList.add('show');\n targetElement.classList.remove('collapse');\n }\n }\n });\n\n // Using Tab or Shift+Tab on SHIPPING AND RETURN section \n $(\".js-shipment\").on(\"keydown\", function(e) {\n if (e.key === \"Enter\") {\n \n const ariaExpandedValue = $(this).attr(\"aria-expanded\");\n if(ariaExpandedValue === \"true\"){\n var elementsWithClass = $('.js-handle-tabindex');\n elementsWithClass.each(function(index, element) {\n $(element).attr('tabindex', '-1');\n });\n } else {\n var elementsWithClass = $('.js-handle-tabindex');\n elementsWithClass.each(function(index, element) {\n $(element).attr('tabindex', '0');\n });\n }\n } else {\n if ($(window).width() >= 768) {\n e.preventDefault();\n // Set focus on PACKAGING

    using Shift+Tab\n if (e.shiftKey && e.key === 'Tab') {\n $('[data-target=\"#pdpAccordion4\"]').focus();\n } else if (e.key === 'Tab') {\n // 1. Check if the section \"SHIPPING AND RETURNS\" is not expanded.\n var ariaExpanded = $(this).attr('aria-expanded');\n if (ariaExpanded === 'true') {\n // If true, set focus on the first js-handle-tabindex\n $('.js-handle-tabindex').first().focus();\n } else {\n // If closed, check if the sticky banner is visible\n if ($('.cc-sticky-add-to-cart.cc-open').length > 0) {\n $(document).find('.cc-content-thumb-color-sticky').focus(); // Set focus on Color\n } else {\n setFocusOnFirstRelatives();\n }\n }\n } \n }\n } \n });\n\n\n // Apply Javascript only on Desktop and Tablet devices\n if ($(window).width() >= 768) {\n\n // Handling focus from \"RETURN PROCEDURE PAGE\" link in \"SHIPPING AND RETURNS\". \n $('.js-handle-tabindex:eq(1)').on('keydown', function(e) {\n if (e.shiftKey && e.key === 'Tab'){\n e.preventDefault();\n $(document).find('.js-handle-tabindex:eq(0)').focus(); // Set focus on Size\n } else if (e.key === 'Tab') {\n e.preventDefault();\n if ($('.cc-sticky-add-to-cart.cc-clearfix.js-sticky-add-to-cart.cc-open').length > 0) {\n $(document).find('.cc-content-thumb-color-sticky').focus(); // Set focus on Color\n } else {\n setFocusOnFirstRelatives();\n }\n }\n });\n \n // If \"Color\" on focus and pressing Shift+Tab, return on SHIPPING AND RETURN

    \n $(\".cc-content-thumb-color-sticky\").on(\"keydown, click\", function(e) {\n if (e.shiftKey && e.key === 'Tab') {\n e.preventDefault();\n $('[aria-controls=\"pdpAccordion6\"]').focus();\n }\n });\n\n // Handling ADD TO CART focus on Sticky Banner\n $('.js-change-focus-add-to-cart').on(\"keydown\", function(e) {\n if (e.shiftKey && e.key === 'Tab'){\n e.preventDefault();\n $(document).find('.cc-size-choice-button-sticky').focus(); // Set focus on Size\n } else if (e.key === 'Tab') {\n e.preventDefault();\n setFocusOnFirstRelatives();\n }\n });\n }\n\n\n \n // da aggiungere controllo su esistenza paypal\n var isIos = getMobileOS() === 'iOS';\n if (! isIos && (! isSafariBrowser() || window.isDesktop)) {\n var addToCartHeigth = $(document).find('.cc-addtocart-buttons .cc-pdp-add-button').height();\n if ($(document).find('.js-checkpaypal-enable').data('ppdisable') && window.paypal) {\n injectPaypalSDK();\n // resolve extraspace\n $(document).find('.cc-content-addtocart .paypal_pdp_button').css('height', addToCartHeigth + 'px');\n $('.js-paypal-fake').parents('.cc-content-button').removeClass('d-none');\n } else {\n var url = $(document).find('.js-checkpaypal-enable').data('urlgetpaypal');\n $.ajax({\n url: url,\n method: 'GET',\n success: function (data) {\n if (data.isPdpButtonEnabled) {\n injectAjaxPaypalSDK(data.cartSdkUrl, data.partnerAttributionId);\n // resolve extraspace\n $(document).find('.cc-content-addtocart .paypal_pdp_button').css('height', addToCartHeigth + 'px');\n $('.js-paypal-fake').parents('.cc-content-button').removeClass('d-none');\n }\n }\n });\n }\n }\n\n // fix applepay button\n if ($('.cc-apple-pay-pdp').is(':visible')) {\n $('.js-applepay-fake').parents('.cc-content-button').removeClass('d-none');\n if (! window.isDesktop) {\n $('.cc-pdp__add-to-cart .paypal_pdp_button').addClass('d-none');\n }\n }\n\n // initialize colors slider\n if ($('.cc-pdp .cc-content-colors-choice-sticky .cc-slider').length > 0) {\n if ($('.cc-pdp .cc-content-colors-choice-sticky .cc-slider .slick-slide').length === 0) {\n $('.cc-pdp .cc-content-colors-choice-sticky .cc-slider').each(function () {\n var slidesContainer = $(this);\n\n slidesContainer.slick({\n infinite: false,\n autoplay: false,\n focusOnSelect: true,\n centerMode: false,\n autoplaySpeed: 3000,\n speed: 500,\n slidesToScroll: 1,\n slidesToShow: 5,\n variableWidth: false,\n dots: false,\n arrow: true,\n prevArrow: '',\n nextArrow: '',\n responsive: [\n {\n breakpoint: 1199.98,\n settings: {\n slidesToShow: 12\n }\n },\n {\n breakpoint: 767.98,\n settings: {\n slidesToShow: 5\n }\n }\n ]\n });\n });\n }\n };\n if (!window.isMobile) {\n $(document).find('.js-remove-sticky').remove();\n }\n if (window.isMobile) {\n // keep track of scrolling direction\n $(document).on('touchstart', function (eventStart) {\n var startY = eventStart.touches[0].clientY;\n $(document).on('touchmove', _throttle(function (eventMove) {\n _userTouching = true;\n var moveY = eventMove.touches[0].clientY;\n if (moveY < startY) _scrollDirection = 'down';\n else if (moveY > startY) _scrollDirection = 'up';\n else _scrollDirection = null;\n startY = moveY;\n // _scrollDirection = moveY < startY ? 'down' : 'up';\n }, 100, { trailing: false, leading: true }));\n\n $(document).one('touchend', function() {\n _userTouching = false;\n });\n });\n\n // dont scroll sticky when scrolling size selector\n $(document).on('touchmove', '.js-selectSize', function(e) {\n e.stopPropagation();\n if (_stickyExpanded) {\n document.body.style.overflow = 'hidden';\n $('.cc-pdp__stickymobile').data('touched', true);\n }\n });\n\n $(document).on('click', '.cc-pdp__info__btn-top', function(e) {\n e.stopImmediatePropagation();\n if (!$('.cc-pdp__info').hasClass('cc-pdp__info--top')) {\n $('.cc-pdp__info__btn-top').attr('aria-expanded', 'true');\n stickyUp(false);\n } else {\n $('.cc-pdp__info__btn-top').attr('aria-expanded', 'false');\n stickyCollapse();\n }\n });\n\n // scroll event on last image\n $(document).on('touchmove', '.js-image-list', _throttle(function () {\n if (_scrollAnimation || _scrollDirection !== 'down') return;\n var imageListHeight = $(document).find('.js-image-list')[0].offsetHeight;\n var imageListScrollTop = $(document).find('.js-image-list')[0].scrollTop;\n var imageListScrollHeight = $(document).find('.js-image-list')[0].scrollHeight;\n if (imageListHeight + imageListScrollTop >= imageListScrollHeight -1) {\n _scrollAnimation = true;\n stickyUp(false);\n }\n }, 100));\n\n // disable touch events when overscrolling (safari < 16.0)\n $(document).on('scroll', function (){\n if (! _stickyExpanded) return;\n if (document.documentElement.scrollTop < 0) document.body.style.touchAction = 'none';\n else document.body.style.touchAction = '';\n });\n\n // collapse sticky when over-scrolling the sticky upwards\n $(document).on('touchstart', function(e) {\n if (_stickyExpanded) {\n if (document.documentElement.scrollTop < 10) {\n $('.cc-pdp__content-title').css('margin-top', '25px');\n document.documentElement.scrollTo(0, 10);\n $('.cc-pdp__stickymobile').data('touched', true);\n }\n\n $(document).on('touchmove.from-sticky-to-imgs', function() {\n if (_userTouching && _scrollDirection === 'up' && document.documentElement.scrollTop < 30) {\n document.body.style.overflow = 'hidden';\n document.body.style.touchAction = 'none';\n stickyCollapse();\n }\n });\n\n // disable on touchend\n $(document).one('touchend', ()=> {\n $(document).off('touchmove.from-sticky-to-imgs');\n document.body.style.overflow = '';\n document.body.style.touchAction = '';\n setTimeout(() => {\n $('.cc-pdp__stickymobile').removeData('touched');\n }, 1000);\n });\n }\n });\n\n // restore scrolling when sticky up finishes\n $(document).on('stickyup-finished', function () {\n $('body').removeClass('cc-blocked');\n _scrollAnimation = false;\n });\n\n // scroll down on minimized sticky\n $(document).on('touchmove', '.cc-pdp__info:not(.cc-pdp__info--top)', _throttle(function() {\n if (_scrollDirection === 'down' && !_scrollAnimation && !_stickyExpanded) {\n _scrollAnimation = true;\n stickyUp(false);\n }\n }, 100));\n\n // fix sticky when scrolling down\n var header = $('.js-header')[0];\n var sticky = $('.cc-pdp__info')[0];\n var stickyButtonHeight = $('.cc-pdp__info__btn-top').height();\n var stickyAddToCart = $('.cc-pdp__add-to-cart')[0];\n var resume = $('.cc-pdp__resume-mobile')[0];\n var resumeHeight = $(resume).height();\n liveChatPositionStikyUpNewPDP();\n\n $(document).on('scroll', _throttle(function (e) {\n var headerHeight = header.offsetHeight;\n var stickyTop = sticky.getBoundingClientRect().top;\n\n if (_stickyExpanded && stickyTop > header.offsetHeight) {\n // scrolling up to the images from sticky expanded\n // $(sticky).removeClass('cc-pdp__info--top');\n // hide resume if showing\n $(resume).removeClass('cc-pdp__resume-mobile--fixed');\n // _stickyExpanded = false;\n } else if (_stickyExpanded) {\n // hide or show resume\n var stickyAddToCartBottom = stickyAddToCart.getBoundingClientRect().bottom;\n\n if (_scrollDirection === 'down') {\n // show resume\n if (stickyAddToCartBottom <= headerHeight + stickyButtonHeight) {\n $(resume).addClass('cc-pdp__resume-mobile--fixed');\n }\n } else if (_scrollDirection === 'up') {\n // hide resume\n if (stickyAddToCartBottom >= headerHeight + stickyButtonHeight + resumeHeight) {\n $(resume).removeClass('cc-pdp__resume-mobile--fixed');\n }\n }\n }\n }, 50));\n\n $(document).on('click', '.js-newpdp-resume-addtocart, .js-paypal-fake, .js-applepay-fake', function(e) {\n var accessType = 'sticky-bar-top-micro';\n var buttonType;\n if ($(this).is('.js-paypal-fake')) buttonType = 'paypal';\n else if ($(this).is('.js-applepay-fake')) buttonType = 'applepay';\n $('#size-modal-sticky,#size-overlay').data('analyticsowner', buttonType);\n var $addToCartButton = $('.cc-pdp__add-to-cart .add-to-cart');\n if ($addToCartButton.data('disabled')) {\n _scrollDirection = null;\n // var finalPosition = stickyUp(false);\n var finalPosition = 0;\n $(document).scrollTop(finalPosition);\n $('.cc-pdp__resume-mobile').removeClass('cc-pdp__resume-mobile--fixed');\n var lastPosition = $(document).scrollTop();\n var interval = setInterval(() => {\n var currentPosition = $(document).scrollTop();\n if (currentPosition === finalPosition || currentPosition === lastPosition) {\n clearInterval(interval);\n // open size selector\n setTimeout(() => {\n if ($(this).is('.js-newpdp-resume-addtocart')) {\n $addToCartButton.trigger('click', {accessType});\n } else {\n $('.cc-pdp__stickymobile .js-sticky-choice').trigger('click', {accessType});\n }\n }, 100);\n } else {\n lastPosition = $(document).scrollTop();\n }\n }, 100);\n } else {\n // size already selected\n if ($(this).hasClass('js-newpdp-resume-addtocart')) {\n $addToCartButton.addClass('js-went-micro-button');\n }\n $addToCartButton.trigger('click', {accessType});\n }\n });\n\n $('body').on('product:afterAttributeSelect', function () {\n var $addToCartButton = $('.cc-pdp__add-to-cart .add-to-cart');\n if ($addToCartButton.data('disabled')) {\n $('.cc-pdp__resume-mobile').find('.js-paypal-fake, .js-applepay-fake').css('pointer-events', 'auto');\n $('.cc-pdp__resume-mobile').find('.cc-paypal-hidden, .cc-applepay-hidden').addClass('d-none');\n } else {\n $('.cc-pdp__resume-mobile').find('.js-paypal-fake, .js-applepay-fake').css('pointer-events', 'none');\n $('.cc-pdp__resume-mobile').find('.cc-paypal-hidden, .cc-applepay-hidden').removeClass('d-none');\n }\n });\n }\n});\n","'use strict';\nvar base = require('./base');\nconst Modal = require('../modalUtilities');\nvar accessFocus = require('../accessibilityFocus');\nvar openFromBuyButton = false;\nconst footerElement = document.getElementsByTagName('footer')[0];\nconst viewportHeight = document.documentElement.clientHeight;\nconst navigationCountry = $('.page').attr('data-navigation-country');\n\nif (navigationCountry === 'CN') {\n var TencentCaptcha = require('../common/tencentCaptcha');\n}\n\nvar MutationObserver = window.MutationObserver || window.WebKitMutationObserver;\n\nvar observer = new MutationObserver(function(mutations, observer) {\n for (var i = 0; i < mutations.length; i++) {\n if (mutations[i].target.className.toString().includes('helpButtonEnabled')) {\n if (window.isMobile) {\n var stickyHeight = $('.cc-sticky-add-to-cart').height();\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: $(document).find('.cc-pdp').length > 0 ? '192px' : stickyHeight + 24,\n right: '16px'\n });\n if ($('.cc-pd.cc-pd-cta-anchored').length > 0) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: '60px'\n });\n }\n }\n }\n }\n});\nobserver.observe(document, {\n subtree: true,\n attributes: true\n});\n\nconst manageApplePayButtonApperance = (response) => {\n if (response.product.readyToOrder) {\n var applePayButton = $('.js-apple-pay-btn', response.$productContainer);\n if (applePayButton.length !== 0) {\n applePayButton.attr('sku', response.product.id);\n }\n\n if ($('body').is('.cc-safari')) {\n $('.js-fake-apple-pay').addClass('hidden');\n $('.js-apple-pay').removeClass('hidden').css('display','block');\n }\n } else {\n $('.js-fake-apple-pay').removeClass('hidden');\n $('.js-apple-pay').addClass('hidden').css('display', '');\n }\n};\n\nfunction fixLayoutForModalOpen() {\n liveChatDisable();\n $('.cc-pdp__info').css('z-index', '10');\n}\n\nfunction setButtonAttribute() {\n $('.selectpicker').selectpicker();\n $('.selectpicker').each(function() {\n $(this).css({\n display: 'none'\n });\n var label;\n // set button id for label\n if (this.labels.length > 0) {\n label = this.labels[0].innerText;\n } else {\n label = $(this).closest('.cc-form-group').find('.cc-label').html();\n }\n var $button = $(this).siblings('button');\n // var selectID = $(this).attr('id') + '_btn';\n // var labelID = $(this).attr('id') + '_lbl';\n // $(this).attr('aria-hidden', 'true');\n // $button.attr('id', selectID);\n $button.attr('aria-label', label);\n // $button.attr('aria-labelledby', selectID + ' ' + labelID);\n $(this).selectpicker('refresh');\n // fix voice over\n $(this).parent().find('.dropdown-toggle').removeAttr('role');\n });\n}\n\nfunction fixLayoutForModalOpenSize() {\n $('.cc-pdp__info').css('z-index', '10');\n liveChatDisable();\n}\n\nfunction fixLayoutForModalClose() {\n $('.cc-pdp__info').css('z-index', '3');\n $('.js-size-sticky').removeClass('cc-open');\n var loggedCustomerEmail = $('.js-requestsize-email').data('islogged');\n var islogged = (loggedCustomerEmail !== null && loggedCustomerEmail !== 'undefined');\n if (!islogged) {\n clearForm($('.js-form-control-requestsize'));\n }\n uploadFormRequestSize();\n liveChatEnable();\n}\n\nfunction uploadFormRequestSize() {\n $('.js-form-control-requestsize').fadeIn();\n $('.js-success-page-requestSize').fadeOut();\n}\n\nfunction liveChatEnable() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n};\nfunction liveChatDisable() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n}\n\nfunction liveChatPositionMove(top) {\n $('.helpButton, #embeddedMessagingConversationButton').each(function() {\n var topValue = top - $(this).height() - 15;\n var upperLimit = 100;\n $(this).css('top', topValue + 'px');\n if (topValue < upperLimit) {\n liveChatDisable();\n }\n });\n}\n\nfunction liveChatElement() {\n return $('.helpButton, #embeddedMessagingConversationButton').eq(0);\n}\n\nfunction liveChatPositionReset() {\n $('.helpButton, #embeddedMessagingConversationButton').each(function() {\n if (this.style.top) {\n $(this).css('top', '');\n\n if ($(this).is(':hidden')) {\n liveChatEnable();\n }\n }\n });\n}\n\nconst closeModal = (element) => {\n const modalTarget = element.dataset.target;\n $(modalTarget).removeClass('cc-open').off('click');\n $(element).removeClass('cc-pdp-background-overlay').removeClass('cc-open');\n liveChatEnable();\n};\n\nconst closeSizeChartModal = () => {\n // $('#size-chart-overlay').fadeOut();\n if (window.isMobile) {\n $('.cc-pdp__info').css('z-index', '3');\n $('.js-size-sticky').removeClass('cc-open');\n liveChatEnable();\n } else {\n var sticky = $('#js-open-from-sticky').val();\n if (sticky === 'true') {\n $('#size-modal-sticky').toggleClass('cc-open');\n $('.cc-pdp__info').css('z-index', '3');\n } else {\n $('body').addClass('cc-blocked');\n }\n }\n var loggedCustomerEmail = $('.js-requestsize-email').data('islogged');\n var islogged = (loggedCustomerEmail !== null && loggedCustomerEmail !== 'undefined');\n if (!islogged) {\n clearForm($('.js-form-control-requestsize'));\n }\n uploadFormRequestSize();\n};\nconst openSizeChartModal = () => {\n // $('#size-chart-overlay').show();\n if (window.isMobile) {\n var mod = $('#size-chart-overlay-mobile').find('.cc-size-guide-standard.cc-size-guide-component');\n var headerHeigth = 81;\n var totHeigth = headerHeigth;\n if ($('.cc-shipment-banner').length > 0) {\n var bannerParent = $('.cc-shipment-banner').parent('div');\n var bannerHeigth = bannerParent.height();\n totHeigth += bannerHeigth;\n }\n mod.css('padding-top', totHeigth + 'px');\n } else {\n var sticky = $('#js-open-from-sticky').val();\n if (sticky === 'true') {\n $('#size-modal-sticky').toggleClass('cc-open');\n }\n }\n $('.cc-pdp__info').css('z-index', '10');\n\n // analytics\n $(document).trigger('analytics:dataLayerPushObj', {\n event: 'sizeChart',\n eventCategory: 'Size Chart',\n eventAction: 'open'\n });\n};\n\nfunction clearForm(form) {\n $(form).find('.cc-input.cc-error').removeClass('cc-error');\n $(form).find('.cc-feedback-message').children('.cc-text-message').text('');\n $(form).find('.cc-input.js-requestsize-firstName').val('');\n $(form).find('.cc-input.js-requestsize-lastName').val('');\n $(form).find('.cc-input.js-requestsize-email').val('');\n $('.js-requestsize-title').selectpicker('val', '');\n\n $('.alert', form).remove();\n};\n\nfunction updateSizeListLook () {\n var sku = $(document).find('.js-product-single-look').data('sku');\n var color = $(document).find('.js-product-single-look').data('color');\n var url = $('.js-selectSize .js-sizeSelector-url').data('getsizeurl');\n if (!$('.js-upload-size').hasClass('js-upload-compleated')) {\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'GET',\n data: {\n sku: sku,\n color: color\n },\n success: function (data) {\n for (var i = 0; i < data.checkSize.length; i++) {\n var el = data.checkSize[i];\n var $size = $(document).find('.js-checkSize-' + el.value);\n var $RequestSize = $(document).find('.js-checkRequestSize-' + el.value);\n if (el.selectable) {\n $size.removeClass('col-6').removeClass('col-md-8').addClass('col-12');\n $size.removeClass('cc-request-size');\n $size.removeAttr('disabled');\n $size.parent().removeClass('cc-request-size');\n if (el.isOnlyOneLeft) {\n $size.find('.js-limited-availability').removeClass('hidden');\n }\n $RequestSize.addClass('hidden');\n $RequestSize.parent().addClass('hidden');\n } else if (!el.selectable) {\n $size.attr('disabled');\n $size.addClass('col-6').addClass('col-md-8').removeClass('col-12');\n $size.addClass('cc-request-size');\n $size.parent().addClass('cc-request-size');\n $size.find('.js-limited-availability').addClass('hidden');\n if (!el.hideNotifyMeProduct) {\n $RequestSize.removeClass('hidden');\n $RequestSize.parent().removeClass('hidden');\n }\n } else if ($size.hasClass('col-12') && el.selectable) {\n el.isOnlyOneLeft ? $size.find('.js-limited-availability').removeClass('hidden') : $size.find('.js-limited-availability').addClass('hidden');\n }\n }\n $.spinner().stop();\n }\n });\n }\n $(document).find('.cc-size-list .cc-size-container').removeClass('cc-active');\n $(document).find('.cc-size-list button.cc-active').parent().addClass('cc-active');\n};\n\nfunction updateSizeList () {\n var sku = $('.product-detail').data('pid');\n var color = $('.js-color-choice.cc-active').data('attr-value');\n var url = $('.js-selectSize .js-sizeSelector-url').data('getsizeurl');\n if (!$('.js-upload-size').hasClass('js-upload-compleated')) {\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'GET',\n data: {\n sku: sku,\n color: color\n },\n success: function (data) {\n for (var i = 0; i < data.checkSize.length; i++) {\n var el = data.checkSize[i];\n var $size = $('.js-checkSize-' + el.value);\n var $RequestSize = $('.js-checkRequestSize-' + el.value);\n if (el.selectable) {\n $size.removeClass('col-6').removeClass('col-md-8').addClass('col-12');\n $size.removeClass('cc-request-size');\n $size.removeAttr('disabled');\n $size.parent().removeClass('cc-request-size');\n if (el.isOnlyOneLeft) {\n $size.find('.js-limited-availability').removeClass('hidden');\n }\n $RequestSize.addClass('hidden');\n $RequestSize.parent().addClass('hidden');\n } else if (!el.selectable) {\n $size.attr('disabled');\n $size.addClass('col-6').addClass('col-md-8').removeClass('col-12');\n $size.addClass('cc-request-size');\n $size.parent().addClass('cc-request-size');\n $size.find('.js-limited-availability').addClass('hidden');\n if (!el.hideNotifyMeProduct) {\n $RequestSize.removeClass('hidden');\n $RequestSize.parent().removeClass('hidden');\n }\n } else if ($size.hasClass('col-12') && el.selectable) {\n el.isOnlyOneLeft ? $size.find('.js-limited-availability').removeClass('hidden') : $size.find('.js-limited-availability').addClass('hidden');\n }\n }\n $.spinner().stop();\n }\n });\n }\n $('.cc-size-list .cc-size-container').removeClass('cc-active');\n $('.cc-size-list button.cc-active').parent().addClass('cc-active');\n};\n\nfunction autoSelectForOneSize() {\n // automatically preselect size if product has only one size\n var numberofsizes = $('.js-size-container').data('numberofsizes');\n if (numberofsizes && parseInt(numberofsizes) === 1\n && $('.js-size-container') && $('.js-size-container').children() && $('.js-size-container').children().first()) {\n if ($('.js-size-container').children().first().is(':disabled')) {\n var sizeCode = $('.js-size-container').children().first().data('attr-value');\n $('#js-selected-size-to-find').val(sizeCode);\n } else {\n $('.js-size-container').children().first().trigger('click');\n }\n }\n};\n\n/* PDP Reccomendations Slider */\nfunction recommendationSlider () {\n var arialabelPrev = $('.cc-product-list.cc-slider').data('arialabelprev');\n var arialabelNext = $('.cc-product-list.cc-slider').data('arialabelnext');\n var arrowNext = $('.cc-product-list.cc-slider').data('arrowdx');\n var arrowPrev = $('.cc-product-list.cc-slider').data('arrowsx');\n if ($('.cc-product-list.cc-slider').length > 0) {\n if ($('.cc-product-list.cc-slider.slick-slide').length === 0) {\n $('.cc-product-list.cc-slider').each(function () {\n var slidesContainer = $(this);\n var slidesToShow = slidesContainer.data('items-row');\n\n slidesContainer.slick({\n accessibility: false,\n infinite: false,\n autoplay: false,\n focusOnSelect: false,\n centerMode: false,\n autoplaySpeed: 3000,\n speed: 500,\n slidesToScroll: 1,\n slidesToShow: slidesToShow,\n variableWidth: false,\n dots: false,\n dotsClass: 'slick-dots-line',\n appendDots: $('.js-product-list-slick-dots'),\n arrow: true,\n prevArrow: '',\n nextArrow: '',\n responsive: [\n {\n breakpoint: 1439.98,\n settings: {\n slidesToShow: 3,\n dots: true,\n arrow: false\n }\n },\n {\n breakpoint: 767.98,\n settings: {\n slidesToShow: 1,\n dots: false,\n arrow: true\n }\n }\n ]\n });\n });\n }\n }\n};\n\n// da chiamare dopo il caricamento\nfunction removeWishlistinRecommendation () {\n $('.cc-product-recommendations .cc-product-tile button.js-add-to-wishlist').remove();\n}\n\n\n// show success messagge for size requests\nfunction uploadSuccesPage($selector, data) {\n $selector.empty().html(data.succesPageHtml);\n};\n\nmodule.exports = {\n updatePrice: function () {\n var pid = $('.product-detail.cc-pdp').attr('data-pid');\n $(document).trigger('product:updatePrices', [pid]);\n },\n loadVideo: function () {\n let $videoContainer = $('.js-video-container');\n if ($videoContainer.length === 0) {\n return;\n }\n\n let url = $videoContainer.data('video-url');\n $.ajax({\n url: url,\n success: function (data) {\n $('.js-video-iframe').attr('src', data.videoURL);\n }\n });\n },\n zoomElement: function () {\n var zoomCounter = 0;\n $('body').on('click', '.js-zoom', function (e) {\n let imageToZoom = e.currentTarget;\n let fullResolution = imageToZoom.src;\n var sixeClass = window.width < 768 ? 'js-max' : 'js-min';\n let fullResolutionSrcSet = $(imageToZoom).closest('.cc-content-image').find('picture source.' + sixeClass)[0].srcset;\n let $zoomedImage = $('.js-zoom-modal img');\n $.spinner().start();\n $('.js-zoom-modal').removeClass('hidden').removeClass('cc-loaded');\n $zoomedImage.addClass('hidden');\n $zoomedImage.attr('src', fullResolution);\n $zoomedImage.attr('srcset', fullResolutionSrcSet);\n\n if (zoomCounter > 0) {\n $('.js-zoom-modal').removeClass('cc-loading').addClass('cc-loaded');\n $zoomedImage.removeClass('hidden');\n $('body').addClass('cc-blocked');\n } else {\n zoomCounter++;\n $zoomedImage.on('load', (e) => {\n $('.js-zoom-modal').addClass('cc-loaded');\n $.spinner().stop();\n $zoomedImage.removeClass('hidden');\n var outerContent = $('.js-zoom-modal');\n var innerContent = $('.js-zoom-modal img');\n $('body').addClass('cc-blocked');\n outerContent.scrollLeft((innerContent.width() - outerContent.width()) / 2);\n outerContent.scrollTop((innerContent.height() - outerContent.height()) / 2);\n });\n }\n });\n\n $('body').on('click', '.js-zoom-modal img', function (e) {\n $('.js-zoom-modal').addClass('hidden').removeClass('cc-loaded');\n $('body').removeClass('cc-blocked');\n });\n\n // Accessibility\n $('body').on('keypress', '.js-zoom', function (e) {\n if(e.key === \"Enter\") {\n let imageToZoom = e.currentTarget;\n let fullResolution = imageToZoom.src;\n var sixeClass = window.width < 768 ? 'js-max' : 'js-min';\n let fullResolutionSrcSet = $(imageToZoom).closest('.cc-content-image').find('picture source.' + sixeClass)[0].srcset;\n let $zoomedImage = $('.js-zoom-modal img');\n $.spinner().start();\n $('.js-zoom-modal').removeClass('hidden').removeClass('cc-loaded');\n $zoomedImage.addClass('hidden');\n $zoomedImage.attr('src', fullResolution);\n $zoomedImage.attr('srcset', fullResolutionSrcSet);\n if (zoomCounter > 0) {\n $('.js-zoom-modal').removeClass('cc-loading').addClass('cc-loaded');\n $zoomedImage.removeClass('hidden');\n $('body').addClass('cc-blocked');\n } else {\n zoomCounter++;\n $zoomedImage.on('load', (e) => {\n $('.js-zoom-modal').addClass('cc-loaded');\n $.spinner().stop();\n $zoomedImage.removeClass('hidden');\n var outerContent = $('.js-zoom-modal');\n var innerContent = $('.js-zoom-modal img');\n $('body').addClass('cc-blocked');\n outerContent.scrollLeft((innerContent.width() - outerContent.width()) / 2);\n outerContent.scrollTop((innerContent.height() - outerContent.height()) / 2);\n });\n }\n } else {\n $('.js-zoom-modal').addClass('hidden').removeClass('cc-loaded');\n $('body').removeClass('cc-blocked');\n }\n });\n\n $('body').on('focusout', '.js-zoom', function (e) {\n $('.js-zoom-modal').addClass('hidden').removeClass('cc-loaded');\n $('body').removeClass('cc-blocked');\n });\n },\n show3D: function () {\n $(document).on('click', '.js-show-product-3d', function() {\n var $wannaIframe = $('#wanna3dIframe');\n if (! $wannaIframe.attr('src')) {\n var isMobileOrTablet = window.isMobile || window.isTablet;\n var url = $wannaIframe.attr('data-src');\n url = url.replace('retrieve_viewmode', isMobileOrTablet ? 'mobile' : 'desktop');\n $wannaIframe.attr('src', url);\n }\n // show 3d modal\n $('.cc-pdp__3dView').removeClass('d-none');\n $('body').addClass('cc-blocked');\n\n // push history state\n var searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"view\", \"3dmodel\");\n var newURL = `${window.location.pathname}?${searchParams.toString()}`;\n history.pushState(undefined, '', newURL);\n\n // hide modal on history popstate\n $(window).one('popstate', function() {\n $('.cc-pdp__3dView').addClass('d-none');\n $('body').removeClass('cc-blocked');\n });\n\n var id = $('.product-detail').data('pid');\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: '3D Preview',\n eventAction: 'open',\n eventLabel: id,\n accessType: 'pdp'\n });\n });\n },\n addToCart: function () {\n $('body').on('click', 'button.add-to-cart', function (e, extra) {\n e.stopPropagation();\n if ($('.add-to-cart').data('disabled')) {\n let isInSticky = !!$(e.currentTarget).closest('.js-sticky').length || window.isMobile;\n openFromBuyButton = true;\n if (isInSticky) {\n // Close all other modals opened sticky\n $('.js-sticky-choice').each((_idx, el) => {\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n });\n // open size modal sticky\n const modalTarget = $('.js-size-sticky').data('target');\n $('.js-size-sticky').toggleClass('cc-open');\n $(modalTarget).toggleClass('cc-open');\n\n var pdpMobileExpanded = window.isMobile && $('.cc-pdp__info--top').length;\n var modalOffsetTop = $(modalTarget).offset().top;\n if (! pdpMobileExpanded) {\n liveChatPositionMove(modalOffsetTop);\n } else {\n var $liveChat = liveChatElement();\n if ($liveChat.length) {\n var liveChatBottom = $liveChat[0].getBoundingClientRect().bottom;\n var modalBottom = $(modalTarget)[0].getBoundingClientRect().bottom;\n if (liveChatBottom < modalBottom) {\n liveChatPositionMove(modalOffsetTop);\n }\n }\n }\n if (! window.isMobile) {\n liveChatDisable();\n }\n } else {\n let modalTarget = $('.js-size-modal').eq(0).data('target');\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpenSize, onClose: fixLayoutForModalClose });\n modal.open();\n $('body').one('product:afterAttributeSelect', () => {\n modal.close();\n });\n $('.js-check-availability').one('click', () => { modal.close(); });\n $('.js-close-requestSize').one('click', () => { modal.close(); });\n }\n if ($(e.currentTarget).hasClass('js-add-to-cart-sticky-look')) {\n updateSizeListLook();\n } else updateSizeList();\n\n var id = $('.product-detail').attr('data-skumaster');\n var color = $('.js-color-choice.cc-active').data('attr-value');\n\n // new analytics parameter: accessType\n if (extra && extra.accessType){\n var accessType = extra.accessType;\n $('#size-modal-sticky').data('accessType', accessType);\n } else {\n if ($('body:not(.cc-mobile)').length) {\n if ($(this).parents('.js-sticky-add-to-cart').length) {\n var accessType = 'pdp-sticky-bottom';\n } else {\n var accessType = 'pdp';\n }\n } else if ($('.cc-pdp__info--top').length) {\n var accessType = 'pdp-sticky-top-macro';\n } else {\n var accessType = 'pdp-sticky-bottom';\n }\n $('#size-modal-sticky').data('accessType', accessType);\n }\n var analyticsOwn = 'add to cart';\n $('#size-overlay').data('analyticsowner', analyticsOwn);\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: id + color, // pid concatenation PDP\n buttonType: analyticsOwn,\n accessType: accessType\n });\n } else {\n if ($(e.currentTarget).hasClass('js-add-to-cart-sticky-look')) {\n updateSizeListLook();\n } else updateSizeList();\n if (!$('.js-upload-size .cc-active .js-select-size').hasClass('cc-request-size')) {\n if ($(e.currentTarget).hasClass('js-add-to-cart-sticky-look')) {\n base.performAddToCartLook(this);\n } else base.performAddToCart(this);\n } else {\n let modalTarget = $('.js-size-modal').eq(0).data('target');\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n modal.open();\n $('body').one('product:afterAttributeSelect', () => {\n modal.close();\n });\n $('.js-check-availability').one('click', () => { modal.close(); });\n $('.js-close-requestSize').one('click', () => { modal.close(); });\n }\n }\n });\n },\n openSizeSelector: function () {\n const performOpenSizeSelector = (e) => {\n e.stopPropagation();\n let modalTarget = e.currentTarget.dataset.target;\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpenSize, onClose: fixLayoutForModalClose });\n\n updateSizeList();\n modal.open();\n $('body').one('product:afterAttributeSelect', () => {\n modal.close();\n });\n $('.js-check-availability').one('click', () => { modal.close(); });\n $('.js-close-requestSize').one('click', () => { modal.close(); });\n };\n // Open the size modal in PDP\n $('body').on('click', '.js-open-choice', (e, extra) => {\n openFromBuyButton = false;\n $('#4giftButtonSizeNotSelected').val('false');\n $('#payPalButtonSizeNotSelected').val('false');\n performOpenSizeSelector(e);\n\n var colorModal = e.currentTarget.classList.contains('js-open-color-choice');\n\n if (!colorModal) {\n var sku = $(e.currentTarget).closest('.product-detail').attr('data-skumaster');\n let color = $('.js-color-choice.cc-active').data('attr-value');\n var analyticsOwn = $('#size-overlay').data('analyticsowner'); // paypal insert value before open modal\n if (!analyticsOwn) {\n analyticsOwn = 'select size';\n $('#size-overlay').data('analyticsowner', analyticsOwn);\n }\n // new analytics parameter: accessType\n if ($('body:not(.cc-mobile)').length) {\n if ($(this).parents('.js-sticky-add-to-cart').length) {\n var accessType = 'pdp-sticky-bottom';\n } else {\n var accessType = 'pdp';\n }\n } else if ($('.cc-pdp__info--top').length) {\n var accessType = 'pdp-sticky-top-macro';\n } else {\n var accessType = 'pdp-sticky-bottom';\n }\n if (!$('#size-modal-sticky').data('accessType')) {\n $('#size-modal-sticky').data('accessType', accessType);\n }\n if (extra || $('#size-modal-sticky').data('accessType')) {\n accessType = extra? extra.accessType : $('#size-modal-sticky').data('accessType');\n }\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: sku + color, // pid concatenation PDP\n buttonType: analyticsOwn,\n accessType: accessType\n });\n }\n });\n $('body').on('click', '.js-fake-apple-pay.js-desktop', (e) => {\n var id = $('.product-detail').attr('data-skumaster');\n var color = $('.js-color-choice.cc-active').data('attr-value');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: id + color, // pid concatenation PDP\n buttonType: 'applepay'\n });\n $('#size-overlay').data('analyticsowner', 'applepay');\n performOpenSizeSelector(e);\n });\n $('body').on('click', '.js-fake-apple-pay.js-mobile', (e) => {\n var id = $('.product-detail').attr('data-skumaster');\n var color = $('.js-color-choice.cc-active').data('attr-value');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: id + color, // pid concatenation PDP\n buttonType: 'applepay'\n });\n $('#size-overlay').data('analyticsowner', 'applepay');\n // open size modal sticky\n const modalTarget = $('.js-size-sticky').data('target');\n $('.js-size-sticky').toggleClass('cc-open');\n $(modalTarget).toggleClass('cc-open');\n e.stopPropagation();\n });\n $('.js-analytics-close-selectsize').on('click', function(e) {\n var id = $('.product-detail').attr('data-skumaster');\n var color = $('.js-color-choice.cc-active').data('attr-value');\n var analyticsOwn = $('#size-overlay').data('analyticsowner');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'close',\n eventLabel: id + color, // pid concatenation PDP\n buttonType: analyticsOwn\n });\n $('#size-overlay').removeData('analyticsowner');\n });\n },\n openStickySelector: function () {\n // Open the size modal in PDP\n $('body').on('click', '.js-sticky-choice', function (e, extra) {\n\n // Change aria-expanded of button color on click\n var button = $(this).find('.cc-content-thumb-color-sticky');\n var currentAriaExpanded = button.attr('aria-expanded');\n var newAriaExpanded = (currentAriaExpanded === 'true') ? 'false' : 'true';\n button.attr('aria-expanded', newAriaExpanded);\n\n openFromBuyButton = false;\n $('#4giftButtonSizeNotSelected').val('false');\n $('#payPalButtonSizeNotSelected').val('false');\n e.stopPropagation();\n let isCurrentModalOpen = $(e.currentTarget).hasClass('cc-open');\n if (! isCurrentModalOpen) {\n updateSizeList();\n }\n $('.js-sticky-choice').each((_idx, el) => {\n // Close all other modals opened\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n liveChatEnable();\n });\n liveChatPositionReset();\n \n let isSizeBtn = $(e.currentTarget).hasClass('js-size-sticky');\n var sku = $(e.currentTarget).closest('.product-detail').attr('data-skumaster');\n let color = $('.js-color-choice.cc-active').data('attr-value');\n var analyticsOwn = $('#size-modal-sticky').data('analyticsowner') || $('#size-overlay').data('analyticsowner');\n // new analytics parameter: accessType\n if (extra && extra.accessType){\n var accessType = extra.accessType;\n $('#size-modal-sticky').data('accessType', accessType);\n } else if ($('#size-modal-sticky').data('accessType')){\n accessType = $('#size-modal-sticky').data('accessType');\n } else {\n if ($('body:not(.cc-mobile)').length) {\n if ($(this).parents('.js-sticky-add-to-cart').length) {\n var accessType = 'pdp-sticky-bottom';\n } else {\n var accessType = 'pdp';\n }\n } else if ($('.cc-pdp__info--top').length) {\n var accessType = 'pdp-sticky-top-macro';\n } else {\n var accessType = 'pdp-sticky-bottom';\n }\n $('#size-modal-sticky').data('accessType', accessType);\n }\n\n if (!isCurrentModalOpen) {\n // If the modal was not open before, close it. If the modal was open before, it means\n // we are closing it, but we did it in the each loop\n let $modal = $(e.currentTarget).toggleClass('cc-open').data('target');\n $($modal).toggleClass('cc-open');\n\n var pdpMobileExpanded = window.isMobile && $('.cc-pdp__info--top').length;\n var modalOffsetTop = $($modal).offset().top;\n if (! pdpMobileExpanded) {\n liveChatPositionMove(modalOffsetTop);\n } else {\n var $liveChat = liveChatElement();\n if ($liveChat.length) {\n var liveChatBottom = $liveChat[0].getBoundingClientRect().bottom;\n var modalBottom = $($modal)[0].getBoundingClientRect().bottom;\n if (liveChatBottom < modalBottom) {\n liveChatPositionMove(modalOffsetTop);\n }\n }\n }\n\n if (isSizeBtn) {\n if (!analyticsOwn || e.originalEvent !== undefined) {\n analyticsOwn = 'select size';\n $('#size-modal-sticky').data('analyticsowner', analyticsOwn);\n }\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: sku + color, // pid concatenation PDP\n buttonType: analyticsOwn,\n accessType: accessType\n });\n }\n } else if (isSizeBtn) {\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'close',\n eventLabel: sku + color, // pid concatenation PDP\n buttonType: analyticsOwn,\n accessType: accessType\n });\n $('#size-modal-sticky').removeData('analyticsowner');\n $('#size-overlay').removeData('analyticsowner');\n $('#size-modal-sticky').removeData('accessType');\n }\n });\n },\n openStickySelectorLook: function () {\n // Open the size modal in PDP\n $('body').on('click', '.js-sticky-choice-look', function (e) {\n openFromBuyButton = false;\n $('#4giftButtonSizeNotSelected').val('false');\n $('#payPalButtonSizeNotSelected').val('false');\n e.stopPropagation();\n updateSizeListLook();\n if ($('.product-detail .cc-content-colors-choice-sticky .cc-slider').length > 0) {\n if ($('.product-detail .cc-content-colors-choice-sticky .cc-slider .slick-slide').length === 0) {\n $('.product-detail .cc-content-colors-choice-sticky .cc-slider').each(function () {\n var slidesContainer = $(this);\n slidesContainer.slick({\n infinite: false,\n autoplay: false,\n focusOnSelect: true,\n centerMode: false,\n autoplaySpeed: 3000,\n speed: 500,\n slidesToScroll: 1,\n slidesToShow: 5,\n variableWidth: false,\n dots: false,\n arrow: true,\n prevArrow: '',\n nextArrow: '',\n responsive: [\n {\n breakpoint: 1199.98,\n settings: {\n slidesToShow: 12\n }\n },\n {\n breakpoint: 767.98,\n settings: {\n slidesToShow: 5\n }\n }\n ]\n });\n });\n }\n };\n let isCurrentModalOpen = $(e.currentTarget).hasClass('cc-open');\n $('.js-sticky-choice-look').each((_idx, el) => {\n // Close all other modals opened\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n liveChatEnable();\n });\n let isSizeBtn = $(e.currentTarget).hasClass('js-size-sticky');\n var sku = $(e.currentTarget).closest('.js-product-single-look').attr('data-sku');\n var color = $(e.currentTarget).closest('.js-product-single-look').attr('data-color');\n if (!isCurrentModalOpen) {\n // If the modal was not open before, close it. If the modal was open before, it means\n // we are closing it, but we did it in the each loop\n let $modal = $(e.currentTarget).toggleClass('cc-open').data('target');\n $($modal).toggleClass('cc-open');\n if (isSizeBtn) {\n var analyticsOwn = 'select size';\n $('#size-modal-sticky').data('analyticsowner', analyticsOwn);\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: sku + color, // pid concatenation PDP\n buttonType: analyticsOwn\n });\n }\n } else if (isSizeBtn) {\n var analyticsOwn = $('#size-modal-sticky').data('analyticsowner');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'close',\n eventLabel: sku + color, // pid concatenation PDP\n buttonType: analyticsOwn\n });\n $('#size-modal-sticky').removeData('analyticsowner');\n }\n });\n },\n updateAttributesAndDetails: function () {\n $('body').on('product:statusUpdate', function (e, data) {\n var $productContainer = $('.product-detail[data-pid=\"' + data.id + '\"]');\n if ($productContainer.length === 0) {\n $productContainer = $('.product-detail[data-pid=\"' + $('#idNumberSizeSelectedUrl').val() + '\"]');\n }\n $productContainer.find('.description-and-detail .product-attributes')\n .empty()\n .html(data.attributesHtml);\n // update request size modal after select product variation\n $productContainer.find('.js-productVariation-update')\n .empty()\n .html(data.requestSizeHtml);\n $('.cc-select.js-requestsize-size').selectpicker();\n $('.cc-select.js-requestsize-title').selectpicker();\n\n if (data.shortDescription) {\n $productContainer.find('.description-and-detail .description')\n .removeClass('hidden-xl-down');\n $productContainer.find('.description-and-detail .description .content')\n .empty()\n .html(data.shortDescription);\n } else {\n $productContainer.find('.description-and-detail .description')\n .addClass('hidden-xl-down');\n }\n\n if (data.longDescription) {\n $productContainer.find('.description-and-detail .details')\n .removeClass('hidden-xl-down');\n $productContainer.find('.description-and-detail .details .content')\n .empty()\n .html(data.longDescription);\n } else {\n $productContainer.find('.description-and-detail .details')\n .addClass('hidden-xl-down');\n }\n });\n },\n showSpinner: function () {\n $('body').on('product:beforeAddToCart product:beforeAttributeSelect', function () {\n $.spinner().start();\n });\n },\n updateAttribute: function () {\n $('body').on('product:afterAttributeSelect', function (e, response) {\n $('.product-detail').data('pid', response.data.product.id);\n $('.js-open-contact').data('sku', response.data.product.sku);\n var skuWColor = response.data.product.skuMaster;\n var colorAttr = response.data.product.variationAttributes[0].values;\n for (var i = 0; i < colorAttr.length; i++) {\n if (colorAttr[i].selected) {\n skuWColor += colorAttr[i].id;\n }\n }\n $('.js-find-in-store-button').attr('data-sku', skuWColor);\n $('.js-open-choice').toArray().forEach(closeModal);\n $('.js-sticky-choice').toArray().forEach(closeModal);\n liveChatPositionReset();\n\n // Close open modals\n if (openFromBuyButton) {\n var $addToCartButton = $('.cc-pdp__add-to-cart .add-to-cart');\n base.performAddToCart($addToCartButton);\n }\n if ($('#4giftButtonSizeNotSelected').val() === 'true') {\n $('body').trigger('product:afterAttributeSelect4gift');\n }\n\n // trigger wishlist update\n $('body').trigger('wishlist:productVariantChanged', { newPDP: true });\n\n if ($('.js-recommendationTemplate').length) {\n var url = $('#urlRecommendations').val();\n var queryString = window.location.search;\n var queryPid = queryString == '' ? '?pid=' : '&pid=';\n var completeUrl = url + queryString + queryPid + skuWColor;\n\n $.ajax({\n url: completeUrl,\n method: 'GET',\n success: function (data) {\n if (data) {\n $('.js-product-recommendations [id^=\"cq_recomm_slot\"]').remove();\n $('.js-recommendationTemplate').html(data).removeClass('d-none');\n $('.js-product-recommendations').removeClass('d-none');\n recommendationSlider();\n removeWishlistinRecommendation();\n\n document.querySelectorAll('iframe.lazyload').forEach(video => {\n let endPoint = $(video).eq(0).attr('data-video-url');\n if (!endPoint) {\n return;\n }\n if ($(video).hasClass('cloudinary')) {\n video.setAttribute('src', endPoint);\n } else {\n $.ajax({\n url: endPoint,\n method: 'GET',\n success: function(data) {\n $(video).attr('src', data.videoURL);\n }\n });\n }\n });\n }\n }\n });\n }\n });\n },\n updateAddToCart: function () {\n $('body').on('product:updateAddToCart', function (e, response) {\n // update local add to cart (for sets)\n $('button.add-to-cart', response.$productContainer).data('disabled',\n (!response.product.readyToOrder || !response.product.available));\n manageApplePayButtonApperance(response);\n });\n },\n closeSizeChart: function () {\n $(document).on('click', '.js-close-size-chart', function () {\n var sizeChartOverlayId;\n var sizeOverlay;\n var openedFromSticky = $('#js-open-from-sticky').val();\n if (window.isMobile) {\n sizeChartOverlayId = '#size-chart-overlay-mobile';\n sizeOverlay = '#size-modal-sticky';\n } else {\n sizeChartOverlayId = '#size-chart-overlay';\n sizeOverlay = '#size-overlay';\n }\n\n if (!window.mobile) {\n var modal = new Modal(sizeOverlay, { onShow: openSizeChartModal, onClose: closeSizeChartModal });\n modal.close();\n } else {\n var modal = new Modal(sizeOverlay, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n modal.open();\n $('.product-detail .cc-info-section').removeAttr('style');\n }\n });\n },\n initializeSize: function() {\n $(document).ready(function() {\n autoSelectForOneSize();\n });\n },\n addToCartAutomatic: function() {\n $(document).on('pdp:productDetailEventPushed', function () {\n var addToCartAutomatic = $('#addToCartAutomatic').val();\n if (addToCartAutomatic === 'true') {\n if (window.isMobile) {\n if (!$($('button.add-to-cart')[1]).data('disabled')) {\n $($('button.add-to-cart')[1]).attr('data-sticky', 'automatic');\n $($('button.add-to-cart')[1]).click();\n }\n } else {\n if (!$($('button.add-to-cart')[0]).data('disabled')) {\n $($('button.add-to-cart')[0]).attr('data-sticky', 'automatic');\n $($('button.add-to-cart')[0]).click();\n }\n }\n }\n });\n },\n positionStickyElement: function () {\n const closeAllOpenSubwindow = () => {\n var stickyTouched = $('.cc-pdp__stickymobile').data('touched');\n let $modals = $('.cc-sticky-add-to-cart, .cc-pdp__stickymobile').find('.js-sticky-choice').toArray();\n $modals.forEach((el) => {\n if (! $($(el).data('target')).not('#size-modal-sticky, #color-modal-sticky').length && !stickyTouched) {\n $(el).removeClass('cc-open');\n $($(el).data('target')).removeClass('cc-open');\n }\n });\n\n liveChatPositionReset();\n };\n let scrollTimer;\n $(document).on('scroll', function () {\n // Manage the fact that scroll events are extremely common: if another scroll event was registered less than 250\n // milliseconds before, we do not consider it\n if (scrollTimer) {\n clearTimeout(scrollTimer);\n }\n if ($('.js-sticky-add-to-cart').attr('data-recent-click')) {\n // prevent stickybar from instantly hiding when clicking on size or color buttons.\n return;\n }\n closeAllOpenSubwindow();\n let $sticky = $('.cc-sticky-add-to-cart').not('.js-sticky-add-to-cart-look');\n var visibleCheckElement = document.getElementsByClassName('visible-check');\n let isAddToCartVisible = false;\n if (visibleCheckElement.length > 0) {\n isAddToCartVisible = visibleCheckElement && visibleCheckElement[0].getBoundingClientRect().bottom > 0;\n }\n let isFooterVisible = document.getElementsByTagName('footer')[0].getBoundingClientRect().top < viewportHeight;\n let stickyCanAppear;\n let stickyIsOpen = $sticky.hasClass('cc-open');\n stickyCanAppear = !isAddToCartVisible && !isFooterVisible;\n var $liveChat = $('.helpButton, #embeddedMessagingConversationButton');\n if (stickyCanAppear && !stickyIsOpen) {\n scrollTimer = setTimeout(() => { \n $sticky.addClass('cc-open').removeClass('cc-close').css('display', '');\n var chatBottom = parseInt($liveChat.css('bottom'));\n var stickyHeight = 50;\n var stickyBottom = 40;\n $liveChat.css('bottom', stickyHeight + stickyBottom + chatBottom + 'px');\n \n }, 250);\n }\n if (!stickyCanAppear && stickyIsOpen) {\n // Set aria-expanded to false on the btn color selection when sticky bar disappear\n $('.cc-content-thumb-color-sticky').attr('aria-expanded', 'false');\n $sticky.removeClass('cc-open').addClass('cc-close').css('display', 'none'); \n $liveChat.css('bottom', '');\n }\n });\n\n const $stickyOverlay = $('.cc-size-choice-overlay-sticky');\n const $stickyColor = $('.cc-content-colors-choice-sticky');\n\n $(document).click(e => {\n if (!$stickyOverlay.is(e.target)\n && $stickyOverlay.has(e.target).length === 0\n && !$stickyColor.is(e.target) &&\n $stickyColor.has(e.target).length === 0) {\n if ($('.js-sticky-choice').hasClass('cc-open')) {\n liveChatEnable();\n }\n closeAllOpenSubwindow();\n }\n });\n },\n setIdForModalDialogattributes: function() {\n $(document).ready(function() {\n // set dialog id selectsticky\n var ariaDescribedBy = $('.cc-size-choice-overlay-sticky').attr('aria-describedby');\n var ariaLabelledby = $('.cc-size-choice-overlay-sticky').attr('aria-labelledby');\n $('.cc-size-choice-overlay-sticky .cc-head-title').attr('id', ariaLabelledby);\n $('.cc-size-choice-overlay-sticky .js-change-for-stiky').attr('id', ariaDescribedBy);\n // set dialog id whishlistMesage\n var $wishListMessage = $('.cc-pdp__content-attributes .cc-add-to-wishlist-message');\n var ariaDescribedByWish = $wishListMessage.attr('aria-describedby');\n var newAriaDescribedByWish = ariaDescribedByWish + '-Mobile';\n var ariaLabelledbyWish = $wishListMessage.attr('aria-labelledby');\n var newAriaLabelledbyWish = ariaLabelledbyWish + '-Mobile';\n $('.cc-pdp__content-attributes .cc-add-to-wishlist-message .cc-prod-title').attr('id', newAriaLabelledbyWish);\n $('.cc-pdp__content-attributes .cc-add-to-wishlist-message .js-wish-changeId-forMobile').attr('id', newAriaDescribedByWish);\n $wishListMessage.attr('aria-describedby', newAriaDescribedByWish);\n $wishListMessage.attr('aria-labelledby', newAriaLabelledbyWish);\n // set id for button selectsize stiky\n $('.cc-size-choice-overlay-sticky .js-open-size-chart').attr('id', 'size-chart-stiky');\n $('.cc-size-choice-overlay-sticky .js-open-helpWhitSize').attr('id', 'size-help-sticky');\n });\n },\n setNumberPageCarouselReccomandation: function() {\n $('.cc-product-recommendations .cc-slider').on('setPosition', function(event, slick) {\n var slideTosho = $('.cc-product-recommendations .cc-slider').data('items-row');\n if ($(window).width() < 1439.98) slideTosho = 3;\n if ($(window).width() < 767.98) slideTosho = 1;\n var currentSlide = slick.currentSlide + 1;\n var totalSlide = slick.slideCount - (slideTosho - 1);\n var arialabelPrev;\n if (currentSlide <= totalSlide && (currentSlide - 1) > 0) {\n arialabelPrev = $('.cc-product-list.cc-slider').data('arialabelprev').replace('{0}', currentSlide - 1).replace('{1}', totalSlide);\n } else {\n arialabelPrev = $('.cc-product-list.cc-slider').data('arialabelprev').replace('{0}', currentSlide).replace('{1}', totalSlide);\n }\n var arialabelNext;\n if ((currentSlide + 1) <= totalSlide) {\n arialabelNext = $('.cc-product-list.cc-slider').data('arialabelnext').replace('{0}', currentSlide + 1).replace('{1}', totalSlide);\n } else {\n arialabelNext = $('.cc-product-list.cc-slider').data('arialabelnext').replace('{0}', currentSlide).replace('{1}', totalSlide);\n }\n $('.cc-product-recommendations .cc-slider-prev').attr('aria-label', arialabelPrev);\n $('.cc-product-recommendations .cc-slider-next').attr('aria-label', arialabelNext);\n // set tabindex -1 if product isn't show, and 0 if is show\n $('.slick-slide').each(function() {\n $(this).attr('aria-hidden') === 'true' ? $(this).attr('tabindex', '-1') : $(this).attr('tabindex', '0');\n });\n });\n },\n loadRecommendations: function () {\n $(document).ready(function () {\n if ($('.js-recommendationTemplate:not(.js-do-not-load)').length) {\n if ($('.cc-product-detail--shop-look').length === 0) {\n var url = $('#urlRecommendations').val();\n var pid = $('.product-detail').data('pid');\n var queryString = window.location.search;\n var queryPid = queryString == '' ? '?pid=' : '&pid=';\n var completeUrl = url + queryString + queryPid + pid;\n $.ajax({\n url: completeUrl,\n method: 'GET',\n success: function (data) {\n if (data) {\n $('.js-recommendationTemplate').html(data);\n $('.js-product-recommendations').removeClass('d-none');\n recommendationSlider();\n removeWishlistinRecommendation();\n // handle iframes with no lazysizes library\n document.querySelectorAll('iframe.lazyload').forEach(video => {\n let endPoint = $(video).eq(0).attr('data-video-url');\n if (!endPoint) {\n return;\n }\n if ($(video).hasClass('cloudinary')) {\n video.setAttribute('src', endPoint);\n } else {\n $.ajax({\n url: endPoint,\n method: 'GET',\n success: function(data) {\n $(video).attr('src', data.videoURL);\n }\n });\n }\n });\n }\n }\n });\n }\n }\n });\n },\n openRequestSizeFromPlp: function () {\n $(document).ready(function () {\n var size = $('.js-open-requestsize-from-plp').data('requestsize');\n if (size !== null && (size !== undefined) && (size !== 'undefined')) {\n $('.cc-size-choice-overlay-sticky').find('.js-check-availability').each(function() {\n if ($(this).data('size') === size) {\n $(this).click();\n return false;\n }\n });\n }\n });\n },\n openRequestSize: function () {\n $(document).on('click', '.js-check-availability', function (e) {\n var urlGetParameter = $(this).data('parameter');\n var strokeClose = $(e.currentTarget).data('strokeclose');\n var arrow = $(e.currentTarget).data('arrowback');\n var size = $(e.currentTarget).data('size');\n var ecomSize = this.dataset.sizehtml;\n var sku = $('.product-detail').data('pid');\n var color = $('.js-color-choice.cc-active').data('attr-value');\n const ajaxData = {\n size: size,\n ecomSize: ecomSize,\n sku: sku,\n color: color\n }\n var target = this.dataset.target;\n var overlay;\n if (window.isMobile) {\n target = target + '-mob';\n overlay = '#js-requestSize-product-overlay-mob';\n } else {\n target = target + '-desk';\n overlay = '#js-requestSize-product-overlay-desk';\n }\n let m = new Modal(target, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n var $stickyModal = $(this).closest('.cc-size-choice-overlay-sticky');\n if ($stickyModal.length > 0) {\n $stickyModal.removeClass('cc-open');\n $stickyModal.siblings('.cc-size-choice-button-sticky.js-size-sticky.js-sticky-choice').removeClass('cc-open');\n }\n \n if (navigationCountry === 'CN' && !TencentCaptcha.isAlreadyLoaded()) {\n ajaxData['loadTencentCaptcha'] = true;\n }\n $.spinner().start();\n $.ajax({\n url: urlGetParameter,\n method: 'POST',\n data: ajaxData,\n success: function (data) {\n $(overlay).html(data);\n $.spinner().stop();\n setButtonAttribute();\n m.open();\n if (window.isMobile) {\n $('.cc-requestsize-only-mobile .js-change-icon').attr('xlink:href', strokeClose);\n }\n $('#request-size-overlay-desk .js-back-selectsize').one('click', () => {\n m.close();\n $('.js-back-selectsize').children().attr('xlink:href', arrow);\n });\n $('#request-size-overlay-mob .js-back-selectsize').one('click', () => {\n $(m.modal).removeClass('cc-open');\n $(m.modal).addClass('hidden').attr('aria-hidden', 'true');\n m._open = false;\n m._previouslyFocussedElement.focus();\n if (m._config.onClose) {\n m._config.onClose();\n }\n $('body').removeClass('cc-blocked');\n document.removeEventListener('keydown', this._onKeyDown);\n });\n $('button[data-id=\"request-size-title\"]').attr({\n 'aria-required': 'true',\n 'aria-describedby': 'form-selecttitle-error'\n });\n\n var $grecaptcha = $(overlay + ' .js-captcha-form.lazyloading');\n if ($grecaptcha.length) {\n document.body.dispatchEvent(new CustomEvent('grecaptcha-load', {detail: $grecaptcha}));\n }\n }\n });\n });\n },\n submitRequestSize: function () {\n $(document).on('click', '.js-requestsize-button', function () {\n const readyToSubmit = $.Deferred();\n var url = $('.js-requestsize-button').data('action');\n var form = $($('.js-form-control-requestsize')[0]);\n var size = form.find('.js-requestsize-size :selected').text().trim();\n var productID = $('.js-product-id').val().trim() + $('.js-color-selected').val().trim();\n var label = productID + ' - ' + size;\n form.find('[name=ecomSize]').val(size);\n var checkHoneyPot = $('.contact_me_if_spam').val();\n var isSpam = checkHoneyPot.length > 0;\n\n if (navigationCountry === 'CN') {\n // initialize tencent captcha\n var $tencentCaptchaEl = $('.js-tencent-captcha-container', form);\n TencentCaptcha.initialize($tencentCaptchaEl, readyToSubmit);\n } else {\n readyToSubmit.resolve();\n }\n\n if (!isSpam) {\n readyToSubmit.done(function() {\n form.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n $('.js-form-control-requestsize').fadeOut();\n $('.js-success-page-requestSize').fadeIn();\n uploadSuccesPage($('.js-success-page-requestSize'), data);\n // analytics\n if (data.response.success === true) {\n dataLayer.push({\n event: 'requestSize',\n eventCategory: 'Request Size',\n eventAction: 'submit_ok',\n eventLabel: label\n });\n } else {\n dataLayer.push({\n event: 'requestSize',\n eventCategory: 'Request Size',\n eventAction: 'submit_fail',\n eventLabel: label\n });\n }\n // END\n },\n error: function (data) {\n // analytics\n dataLayer.push({\n event: 'requestSize',\n eventCategory: 'Request Size',\n eventAction: 'submit_fail',\n eventLabel: label\n });\n // END\n form.spinner().stop();\n $('.js-form-control-requestsize').fadeOut();\n $('.js-success-page-requestSize').fadeIn();\n uploadSuccesPage($('.js-success-page-requestSize'), data.responseJSON);\n }\n });\n });\n }\n });\n },\n // sizes help chart\n sizeChart: function () {\n $('body').on('click', '.js-open-size-chart', function (e) {\n e.preventDefault();\n var buttonPressed = $(this);\n var url = buttonPressed.data('href');\n var buttonID = this.id;\n $('.cc-size-chart-overlay-container').css('content-visibility', 'visible');\n if (buttonID === 'size-chart-stiky' && !window.isMobile) {\n $('#js-open-from-sticky').val(true);\n } else {\n $('#js-open-from-sticky').val(false);\n }\n\n if (window.isMobile) {\n var $prodSizeChart = $('#js-size-chart-content-mobile');\n var modalTarget = buttonPressed.data('target-mobile');\n } else {\n var $prodSizeChart = $('#js-size-chart-content');\n var modalTarget = buttonPressed.data('target');\n }\n if ($prodSizeChart.is(':empty')) {\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'text',\n success: function (data) {\n $prodSizeChart.html(data);\n if (window.isMobile) {\n $('.js-open-choice').toArray().forEach(closeModal);\n }\n e.stopPropagation();\n\n var modal = new Modal(modalTarget, { onShow: openSizeChartModal, onClose: closeSizeChartModal });\n modal.open();\n }\n });\n } else {\n var modal = new Modal(modalTarget, { onShow: openSizeChartModal, onClose: closeSizeChartModal });\n modal.open();\n }\n });\n },\n\n // share button\n share: function () {\n $(document).on('click', '.cc-pdp .js-newpdp-openshare', function (e) {\n $('.cc-pdp__actions-desktop .cc-share-overlay').fadeIn();\n $(this).addClass('cc-share-background-overlay');\n accessFocus.focusOnFirstElement('.cc-share-overlay');\n accessFocus.focuseOnModal('.cc-share-overlay', '.cc-share-button-share', '.cc-share-overlay');\n e.stopPropagation();\n });\n\n $(document).on('click', '.cc-pdp .js-newpdp-openshare-mobile', function (e) {\n $('.js-whatsapp-link').attr('href', function() { this.href = this.href.replace('https://wa.me/?text=', 'whatsapp://send?text='); });\n $('body').css('overflow', 'hidden');\n $('.cc-mobile-content-share').css('display', 'block');\n $('.cc-sticky-add-to-cart').css('display', 'none');\n\n var heightSocialHead = 75;\n var top;\n var headerHeight = $('header').height();\n var heightPage = $(window).height();\n if (heightPage < 550) {\n top = headerHeight + heightSocialHead;\n } else {\n var heightSocialListLink = $('.cc-mobile-content-share .cc-social-link-mobile').height();\n var heightSocialListUl = $('.cc-mobile-content-share .cc-social-list-ul').height();\n var heightSocialList = heightSocialListUl + heightSocialListLink;\n top = heightPage - heightSocialList - heightSocialHead;\n }\n $('.cc-mobile-content-share').css('top', top);\n $(this).addClass('cc-share-background-overlay');\n e.stopPropagation();\n liveChatDisable();\n });\n\n // close share section mobile\n $(document).on('click', '.cc-pdp .cc-mobile-content-share .cc-mobile-close-share-button', function (e) {\n $('.cc-mobile-content-share').css('display', 'none');\n $('.cc-sticky-add-to-cart').css('display', 'block');\n $('.cc-pdp .js-newpdp-openshare-mobile').removeClass('cc-share-background-overlay');\n var copyLink = $('.js-link-label').data('copy');\n $('.js-link-label').find('.js-social-text').text(copyLink);\n $('body').css('overflow', 'visible');\n e.stopPropagation();\n liveChatEnable();\n });\n\n // close share section desktop\n $(document).on('click', '.cc-pdp .cc-close-overlay-share-button', function (e) {\n $(this).closest('.cc-share-overlay').fadeOut();\n $('.cc-pdp .js-newpdp-openshare').removeClass('cc-share-background-overlay');\n var copyLink = $('.js-link-label').data('copy');\n $('.js-link-label').find('.js-social-text').text(copyLink);\n e.stopPropagation();\n // Accesibility, move focus back on Share btn\n $(\".cc-open-shareSection\").focus();\n });\n },\n\n fixStickybarHidingOnClick: function () {\n // fix stickybar hiding when clicking on color or size selector\n $('.js-sticky-add-to-cart').on('click', function (e) {\n var now = Date.now().toString();\n $(this).attr('data-recent-click', now);\n let $sticky = $('.cc-sticky-add-to-cart').not('.js-sticky-add-to-cart-look');\n var visibleCheckElement = document.getElementsByClassName('visible-check');\n let isAddToCartVisible = false;\n if (visibleCheckElement.length > 0) {\n isAddToCartVisible = visibleCheckElement && visibleCheckElement[0].getBoundingClientRect().bottom > 0;\n }\n let isFooterVisible = footerElement.getBoundingClientRect().top < viewportHeight;\n let stickyCanAppear;\n let stickyIsOpen = $sticky.hasClass('cc-open');\n stickyCanAppear = !isAddToCartVisible && !isFooterVisible;\n setTimeout(() => {\n if ($(this).attr('data-recent-click') === now) {\n $(this).attr('data-recent-click', '');\n }\n // check if the stickybar's position is still valid\n if (stickyCanAppear && !stickyIsOpen) {\n // close all open subwindows\n let $modals = $('.cc-sticky-add-to-cart').find('.js-sticky-choice').toArray();\n $modals.forEach((el) => {\n $(el).removeClass('cc-open');\n $($(el).data('target')).removeClass('cc-open');\n });\n // hide stickybar\n let $sticky = $('.cc-sticky-add-to-cart').not('.js-sticky-add-to-cart-look');\n $sticky.removeClass('cc-open').addClass('cc-close');\n }\n }, 1000);\n });\n },\n\n // go to detail\n analyticsGoToDetail: function () {\n var pid = $(document).find('.cc-pdp').data('pid');\n $(document).on('click', '.js-goto-detail', function () {\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'More detail Anchor',\n eventAction: 'pdp',\n eventLabel: pid\n });\n });\n }\n};\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","'use strict';\n\nmodule.exports = function () {\n\n \n$(document).on('click', '.js-social-analytics-link, .js-social-analytics a', function (e) {\n e.preventDefault();\n\n var socialNetwork = $(this).data('id');\n var socialAction = '';\n var socialBaseLink = $(this).data('analytics');\n\n switch (socialNetwork) {\n case 'email':\n socialAction = 'mail';\n break;\n\n case 'pinterest':\n socialAction = 'pin';\n break;\n\n default:\n socialAction = 'share';\n break;\n }\n\n var socialTarget = socialBaseLink.substring((socialBaseLink.substring(8, socialBaseLink.length).indexOf('/') + 8), socialBaseLink.length);\n\n if($(this).parents('.js-general-overlay-wishlist').length) {\n // analytics\n dataLayer.push({\n 'event': 'custom_event',\n 'eventCategory': 'Wish List',\n 'eventAction': 'share',\n 'eventLabel': socialNetwork\n });\n } else {\n // analytics\n dataLayer.push({\n 'event': 'social',\n 'socialNetwork': socialNetwork,\n 'socialAction': socialAction,\n 'socialTarget': socialTarget\n });\n }\n});\n\n$(document).ready(function () {\n if ($('.js-social-share-lazyloading').length){\n\n const observer = new MutationObserver(() => {\n // first time cc-share-overlay will be opened, zxing plugin will be added to the img\n if (!$('.js-social-share-lazyloaded').length){\n var container = $('.js-social-share-lazyloading');\n var url = container.data('url');\n var target = container.children('img');\n target.attr(\"src\", url);\n container.addClass('js-social-share-lazyloaded');\n container.removeClass('js-social-share-lazyloading');\n }\n });\n\n observer.observe(document.querySelector('.cc-share-overlay'), {\n attributes: true,\n attributeFilter: ['style']\n });\n\n observer.observe(document.querySelector('.cc-mobile-content-share'), {\n attributes: true,\n attributeFilter: ['style']\n });\n\n observer.observe(document.querySelector('.cc-share-content'), {\n attributes: true,\n attributeFilter: ['style']\n });\n }\n});\n\n};\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","'use strict';\n\nconst FOCUSABLE = 'button:not(:disabled):not([aria-hidden=\"true\"]),a[href]';\n\nmodule.exports = class Modal {\n constructor (element, config, custom={}) {\n this.modal = element;\n this._onKeyDown = this._onKeyDownFn.bind(this);\n this._open = false;\n this._previouslyFocussedElement = null;\n this._config = Object.assign({ onShow: null, onClose: null }, config);\n this.custom = custom;\n }\n\n _trapFocus (event) {\n let focusableNodes = $(this.modal).find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n };\n\n _onKeyDownFn(event) {\n if (event.keyCode === 27) { // ESC\n this.close();\n } else if (event.keyCode === 9) { // TAB\n this._trapFocus(event);\n }\n };\n\n _registerEvents() {\n const closeEvt = (e) => {\n e.stopPropagation();\n this.close();\n };\n $(this.modal).one('click', '.js-close', closeEvt.bind(this));\n document.addEventListener('keydown', this._onKeyDown);\n }\n\n open() {\n this._previouslyFocussedElement = document.activeElement;\n let $modal = $(this.modal);\n $('body').addClass('cc-blocked');\n $modal.removeClass('hidden').attr('aria-hidden', 'false');\n const focusFirstElementInModal = () => {\n let focusableNodes = $modal.find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n focusableNodes[0].focus();\n };\n\n this._registerEvents();\n // We add the class in another frame in order to have the animation\n let t = this;\n setTimeout(function() {\n $modal.addClass('cc-open');\n focusFirstElementInModal();\n if (t._config.onShow) {\n t._config.onShow.apply(null, t.arguments);\n }\n }, 0);\n\n this._open = true;\n }\n\n close() {\n if (!this._open) {\n return;\n }\n if (this._previouslyFocussedElement) {\n let $modal = $(this.modal);\n $modal.removeClass('cc-open');\n $modal.one('transitionend', () => {\n if (! $modal.hasClass('cc-open')) {\n $modal.addClass('hidden').attr('aria-hidden', 'true');\n this._open = false;\n if (! $(this._previouslyFocussedElement).is('iframe')) {\n this._previouslyFocussedElement.focus();\n }\n }\n });\n if (this._config.onClose) {\n this._config.onClose.apply(null, arguments);\n }\n $('body').removeClass('cc-blocked');\n document.removeEventListener('keydown', this._onKeyDown);\n }\n }\n\n isOpen() {\n return this._open;\n }\n};\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","'use strict';\nconst Modal = require('../modalUtilities');\nconst navigationCountry = $('.page').attr('data-navigation-country');\n\nif (navigationCountry === 'CN') {\n var TencentCaptcha = require('../common/tencentCaptcha');\n}\n\nfunction updateSuccessPage($selector, data) {\n $selector.empty().html(data.succesPageHtml);\n};\nfunction updateListOfStores(data) {\n $('#findStoreStoreSelect').empty().html(data.listOfStoresHtml);\n};\nfunction liveChatEnable() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n};\nfunction liveChatDisable() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n}\n\nfunction setButtonAttribute() {\n $('.selectpicker').selectpicker();\n $('.selectpicker').each(function() {\n $(this).css({\n display: 'none'\n });\n var label;\n // set button id for label\n if (this.labels.length > 0) {\n label = this.labels[0].innerText;\n } else {\n label = $(this).closest('.cc-form-group').find('.cc-label').html();\n }\n var $button = $(this).siblings('button');\n // var selectID = $(this).attr('id') + '_btn';\n // var labelID = $(this).attr('id') + '_lbl';\n // $(this).attr('aria-hidden', 'true');\n // $button.attr('id', selectID);\n var $dropdown = $button.siblings('.dropdown-menu').children('.inner');\n $dropdown.attr('aria-label', label);\n $button.attr('aria-label', label);\n $button.attr('role', 'combobox').attr('aria-activedescendant', '');\n $(this).selectpicker('refresh');\n // fix voice over\n $(this).parent().find('.dropdown-toggle').attr('tabindex', '0');\n });\n $('.dropdown-menu .inner').removeAttr('aria-activedescendant');\n\n var targets = $('button.dropdown-toggle').siblings('.dropdown-menu').children('.inner').removeAttr('aria-activedescendant').get();\n if (targets) {\n // create an observer instance\n targets.forEach(function(target) {\n var observer = new MutationObserver(function(mutations) {\n if (mutations.length) {\n $(target).removeAttr('aria-activedescendant');\n // disconnect `observer`\n // this.disconnect();\n }\n });\n var config = {\n attributes: true\n };\n\n // pass in the target node, as well as the observer options\n observer.observe(target, config);\n });\n };\n \n // accessibility: fix focus issues with the dropdown select\n $(document).on('keydown', '#js-helpWithSize-modal', (e)=>{\n if (e.key !== 'Tab') return;\n var $select = $('.selectpicker');\n var $dropdown = $('.dropdown-toggle');\n if ($select.attr('tabindex') === $dropdown.attr('tabindex')) {\n $select.attr('tabindex', '0');\n }\n });\n}\n\nfunction fixLayoutForModalOpen() {\n liveChatDisable();\n $('.cc-product-detail .cc-info-section .cc-info-container, .cc-pdp__info').css('z-index', '10');\n}\n\nfunction fixLayoutForModalClose() {\n $('.cc-product-detail .cc-info-section .cc-info-container, .cc-pdp__info').css('z-index', '3');\n liveChatEnable();\n}\n\nfunction fixLayoutForModalBoutiqueOverlayClose() {\n $('.cc-product-detail .cc-info-section .cc-info-container, .cc-pdp__info').css('z-index', '10');\n}\n\nmodule.exports = {\n openContactUsModal: function() {\n $(document).on('click', '.js-open-contact', function() {\n var m = new Modal('#js-contact-modal', { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n var url = $('.js-open-contact').data('urlcontact');\n\n let ajaxData = { page: 'PDP-requestInfo' };\n\n if (navigationCountry === 'CN' && !TencentCaptcha.isAlreadyLoaded()) {\n ajaxData['loadTencentCaptcha'] = true;\n }\n\n $.ajax({\n url: url,\n method: 'POST',\n data: ajaxData,\n success: function (data) {\n $('#js-contactUs-product-overlay').html(data);\n setButtonAttribute();\n $('#genderSelect option').each(function() {\n if ($(this).prop('selected') === true && !$(this).hasClass('bs-title-option')) {\n $('#genderSelect').siblings().find('.filter-option-inner-inner').css('color', '#262626');\n }\n });\n $('#contactSku').val($('.js-open-contact').data('sku'));\n var $grecaptcha = $('#js-contact-modal .js-captcha-form.lazyloading');\n if ($grecaptcha.length) {\n document.body.dispatchEvent(new CustomEvent('grecaptcha-load', {detail: $grecaptcha}));\n }\n m.open();\n }\n });\n });\n },\n\n submitContactUsModal: function() {\n $(document).on('click', '#submitContactUs', function() {\n var url = $('.js-contactus-action').data('action');\n var form = $('#infoProduct');\n var productID = $('#contactSku').val();\n var information = $('#infocategory').val();\n const readyToSubmit = $.Deferred();\n\n if (navigationCountry === 'CN') {\n // initialize tencent captcha\n var $tencentCaptchaEl = $('.js-tencent-captcha-container', form);\n TencentCaptcha.initialize($tencentCaptchaEl, readyToSubmit);\n } else {\n readyToSubmit.resolve();\n }\n\n readyToSubmit.done(function() {\n form.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: form.serialize(),\n success: function (data) {\n if (data.success) {\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_ok',\n eventLabel: 'product - ' + information,\n dimension23: productID,\n dimension24: ''\n });\n } else {\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - ' + information,\n dimension23: productID,\n dimension24: ''\n });\n }\n form.spinner().stop();\n updateSuccessPage($('#infoProduct'), data);\n // END\n },\n error: function (data) {\n form.spinner().stop();\n updateSuccessPage($('#infoProduct'), data.responseJSON);\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - ' + information,\n dimension23: productID,\n dimension24: ''\n });\n // END\n }\n });\n });\n });\n },\n openFindInStoreModal: function() {\n let modalTarget = '#size-boutique-overlay';\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n $(document).on('click', '.js-open-findInBoutique', function() {\n var skuMaster = $(this).data('skumaster');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var sizeText = $('#js-size-text-selected').hasClass('hidden') ? null : $('#js-size-text-selected').text();\n var label = sizeText !== null ? skuMaster + color + ' - ' + sizeText : skuMaster + color; // pid concatenation PDP\n if (sizeText !== null) {\n var preselectSize = $(document).find('#size-overlay .cc-size-list .js-select-size.cc-active').data('attr-value');\n $('#js-selected-size-to-find').val(preselectSize);\n }\n var selectedSize = $('#js-selected-size-to-find').val();\n if (selectedSize !== '') {\n $('.js-select-size-to-find').parent('.js-size-container').removeClass('cc-active');\n var sizes = $('.js-select-size-to-find');\n for (var i = 0; i < sizes.length; i++) {\n if (sizes[i].dataset.attrValue === selectedSize) {\n sizes[i].parentElement.classList.add('cc-active');\n }\n }\n $('.js-find-in-store-button').click();\n } else {\n modal.open();\n }\n if (!$('.js-size-not-selected').hasClass('d-none')) {\n $('.js-size-not-selected').addClass('d-none');\n }\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Open Layer',\n eventLabel: label\n });\n });\n\n $(document).on('click', '.js-close-boutique-size', function() {\n modal.close();\n\n });\n },\n\n selectSizeFindInStore: function() {\n $(document).on('click', '.js-select-size-to-find', function() {\n var selectedSize = $(this).data('attr-value');\n $('#js-selected-size-to-find').val(selectedSize);\n $('.js-select-size-to-find').parent('.js-size-container').removeClass('cc-active');\n $(this).parent('.js-size-container').addClass('cc-active');\n if(!$('.js-size-not-selected').hasClass('d-none')) {\n $('.js-size-not-selected').addClass('d-none');\n }\n $('.js-find-in-store-button').click();\n });\n },\n\n searchFindInStore: function() {\n let modalTarget = '#show-boutiques-overlay';\n $(document).on('click', '.js-find-in-store-button', function() {\n if (!$('#size-boutique-overlay').hasClass('cc-open')) {\n var modalClose = fixLayoutForModalClose;\n } else {\n modalClose = fixLayoutForModalBoutiqueOverlayClose;\n }\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpen, onClose: modalClose });\n var selectedSize = $('#js-selected-size-to-find').val();\n if (selectedSize == '') {\n $('.js-size-not-selected').removeClass('d-none');\n } else {\n var skuMaster = $('.js-find-in-store-button').attr('data-skumaster');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var sizeText = $('#size-boutique-overlay .js-size-container.cc-active').find('.js-size-value').text();\n var selectedCountry = false;\n if ($('#js-selected-country-for-search').val() != '') {\n selectedCountry = $('#js-selected-country-for-search').val();\n }\n var sku = skuMaster + color + selectedSize; // pid concatenation PDP\n var label = skuMaster + color + ' - ' + sizeText;\n var url = $(this).data('url');\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: {\n sku: sku,\n selectedCountry: selectedCountry\n },\n success: function (data) {\n $('#js-show-boutique-overlay').html(data);\n setButtonAttribute();\n $('#js-boutique-country option').each(function() {\n if ($(this).prop('selected') === true && !$(this).hasClass('bs-title-option')) {\n $('#js-boutique-country').siblings().find('.filter-option-inner-inner').css('color', '#262626');\n }\n });\n modal.open();\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Size Selected',\n eventLabel: label\n });\n }\n $('body').on('click', '.js-close-show-boutiques', function(e) {\n e.preventDefault();\n modal.close();\n });\n });\n\n $(document).on('change', '#js-boutique-country', function() {\n $.spinner().start();\n var countryCode = $('#js-boutique-country').val();\n $('#js-selected-country-for-search').val(countryCode);\n // var url = $('#js-boutique-country').data('url');\n // var sku = $('.js-find-in-store-button').attr('data-sku');\n var skuMaster = $('.js-find-in-store-button').attr('data-skumaster');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var sku = skuMaster + color; // pid concatenation PDP\n var selectedSize = $('#js-selected-size-to-find').val();\n var sizeText = $('#size-boutique-overlay .js-size-container.cc-active').find('.js-size-value').text();\n var label = sku + ' - ' + sizeText;\n sku = sku + selectedSize;\n var url = $(this).data('url');\n $.ajax({\n url: url,\n method: 'POST',\n data: {\n sku: sku,\n selectedCountry: countryCode\n },\n success: function (data) {\n $('#js-show-boutique-overlay').html(data);\n setButtonAttribute();\n $('#js-boutique-country option').each(function() {\n if ($(this).prop('selected') === true && !$(this).hasClass('bs-title-option')) {\n $('#js-boutique-country').siblings().find('.filter-option-inner-inner').css('color', '#262626');\n }\n });\n $('#js-boutique-country').selectpicker('refresh');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Change Country',\n eventLabel: label\n });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n\n },\n\n analyticsCallStore: function () {\n $(document).on('click', '.js-analytics-callStore', function() {\n var productId = $(this).data('analyticsku');\n var filterSize = $(this).data('analyticsize');\n var boutiqueId = $(this).data('analyticsbtqid');\n var boutiqueName = $(this).data('analyticsbtqname');\n var label = productId + ' - ' + filterSize;\n var boutique = boutiqueName + ' - ' + boutiqueId;\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Call',\n eventLabel: label,\n boutiqueName: boutique\n });\n });\n },\n\n analyticsBookAppointment: function () {\n $(document).on('click', '.js-analytics-bookAppointment-PDP', function() {\n var productId = $(this).data('analyticsku');\n var filterSize = $(this).data('analyticsize');\n var boutiqueId = $(this).data('analyticsbtqid');\n var boutiqueName = $(this).data('analyticsbtqname');\n var label = productId + ' - ' + filterSize;\n var boutique = boutiqueName + ' - ' + boutiqueId;\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Boutique Appointment',\n eventLabel: label,\n boutiqueName: boutique\n });\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'exclusive-service',\n eventAction: 'find-in-boutique',\n eventLabel: document.location.href,\n boutiqueName: boutique\n });\n });\n },\n\n updateListOfStores: function() {\n $(document).on('change', '#findStoreCountrySelect', function() {\n var url = $('#findStoreStoreSelect').data('liststores');\n var countryCode = $('#findStoreCountrySelect').val();\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'GET',\n data: {\n countryCode: countryCode,\n page: 'PDP-FindInStore'\n },\n success: function (data) {\n $.spinner().stop();\n updateListOfStores(data);\n setButtonAttribute();\n $('.js-select-listOfStores').fadeIn();\n }\n });\n });\n },\n filterListOfStores: function() {\n $(document).on('change', '#filterBoutiqueFind', function() {\n if ($('#filterBoutiqueFind').prop('checked')) {\n $('.js-boutique-no-availability').attr(\"style\", \"display: none !important\");\n } else $('.js-boutique-no-availability').attr(\"style\", \"display: block\");\n });\n },\n submitFindInStoreModal: function() {\n $(document).on('click', '#submitFindInStore', function() {\n var url = $('.js-contactus-action').data('action');\n var form = $('#findInStore');\n var productID = $('#findStoreSku').val();\n var selectedNation = $('#findStoreCountrySelect :selected').text();\n var selectedBoutique = $('#findStoreStoreSelect').val();\n selectedBoutique = selectedNation + '-' + selectedBoutique.replace(/ /g, '-');\n form.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: form.serialize(),\n success: function (data) {\n if (data.success) {\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_ok',\n eventLabel: 'product - storesavailability',\n dimension23: productID,\n dimension24: selectedBoutique\n });\n } else {\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - storesavailability',\n dimension23: productID,\n dimension24: selectedBoutique\n });\n }\n form.spinner().stop();\n updateSuccessPage($('#findInStore'), data);\n },\n error: function (data) {\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - storesavailability',\n dimension23: productID,\n dimension24: selectedBoutique\n });\n // END\n }\n });\n });\n },\n openHelpWithSizeModal: function() {\n $(document).on('click', '.js-open-helpWhitSize', function() {\n var url = $(this).data('action');\n var sticky = false;\n if (this.id === 'size-help-sticky') {\n sticky = true;\n }\n \n let m;\n if (sticky) {\n m = new Modal('#js-helpWithSize-modal', { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n } else {\n // In this case, in the onClose callback we do not remove the z-index, as the\n // modal was opened from inside another modal\n m = new Modal('#js-helpWithSize-modal', { onShow: fixLayoutForModalOpen, onClose: liveChatEnable });\n }\n\n let ajaxData = { page: 'PDP-HelpWithSize' };\n\n if (navigationCountry === 'CN' && !TencentCaptcha.isAlreadyLoaded()) {\n ajaxData['loadTencentCaptcha'] = true;\n }\n\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: ajaxData,\n success: function (data) {\n $.spinner().stop();\n $('#js-helpWithSize-product-overlay').html(data);\n $('#helpWithSizeContactSku').val($('.js-open-contact').data('sku'));\n setButtonAttribute();\n $('#helpWithSizeGenderSelect option').each(function() {\n if ($(this).prop('selected') === true && !$(this).hasClass('bs-title-option')) {\n $('#helpWithSizeGenderSelect').siblings().find('.filter-option-inner-inner').css('color', '#262626');\n }\n });\n $('button[data-id=\"helpWithSizeGenderSelect\"]').attr({\n 'aria-required': 'true',\n 'aria-describedby': 'form-selectgender-error'\n });\n var $grecaptcha = $('#js-helpWithSize-product-overlay .js-captcha-form.lazyloading');\n if ($grecaptcha.length) {\n document.body.dispatchEvent(new CustomEvent('grecaptcha-load', {detail: $grecaptcha}));\n }\n m.open();\n },\n error: function(){\n $.spinner().stop();\n }\n });\n });\n },\n\n submitHelpWithSizeModal: function() {\n $(document).on('click', '#helpWithSize-submit', function() {\n var url = $('.js-contactus-action').data('action');\n var form = $('#helpWithSize-form');\n var productID = $('#helpWithSizeContactSku').val();\n var checkHoneyPot = $('.contact_me_if_spam').val();\n var isSpam = checkHoneyPot.length > 0 ? true : false;\n if (!isSpam) {\n const readyToSubmit = $.Deferred();\n if (navigationCountry === 'CN') {\n // initialize tencent captcha\n var $tencentCaptchaEl = $('.js-tencent-captcha-container', form);\n TencentCaptcha.initialize($tencentCaptchaEl, readyToSubmit);\n } else {\n readyToSubmit.resolve();\n }\n\n readyToSubmit.done(function() {\n form.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: form.serialize(),\n success: function (data) {\n if (data.success) {\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_ok',\n eventLabel: 'product - size',\n dimension23: productID,\n dimension24: ''\n });\n } else {\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - size',\n dimension23: productID,\n dimension24: ''\n });\n }\n form.spinner().stop();\n updateSuccessPage($('#helpWithSize-form'), data);\n },\n error: function (data) {\n form.spinner().stop();\n updateSuccessPage($('#helpWithSize-form'), data.responseJSON);\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - size',\n dimension23: productID,\n dimension24: ''\n });\n }\n });\n });\n }\n });\n }\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\nvar Modal = require('../modalUtilities');\n\n/**\n * appends params to a url\n * @param {string} data - data returned from the server's ajax call\n * @param {Object} button - button that was clicked to add a product to the wishlist\n */\nfunction displayMessage(data, button) {\n const statusSuccessClass = 'alert-success';\n const statusErrorClass = 'alert-danger';\n var status;\n if (data.success) {\n status = statusSuccessClass;\n } else {\n status = statusErrorClass;\n }\n\n var messageModalDiv = '.js-wishlist-color-id-'.concat(data.colorId);\n $(messageModalDiv).find('.js-add-to-wishlist-message')\n .removeClass(statusSuccessClass).removeClass(statusErrorClass)\n .addClass(status).html(data.msg);\n\n let modalTarget = $(messageModalDiv);\n let modal = new Modal(modalTarget);\n $('.cc-add-to-wishlist-background').show();\n $(messageModalDiv).show();\n modal.open();\n\n setTimeout(function () {\n $('.js-close-add-to-wishlist-message').trigger('click');\n }, 2000);\n}\n\n/**\n * fills or empties the PDP heart icon\n * @param {boolean} fill - true for filled the heart, false for empty heart\n */\nfunction updateHeartIcon(fill) {\n var $heart = $('.js-add-to-wishlist');\n if (fill) {\n $heart.find('.stroke').addClass('cc-hide').css('display', 'none');\n $heart.find('.fill').removeClass('cc-hide').css('display', '');\n } else {\n // empty heart\n $heart.find('.fill').addClass('cc-hide').css('display', 'none');\n $heart.find('.stroke').removeClass('cc-hide').css('display', '');\n }\n}\n/**\n * gets the pid for the selected:\n * - variation product (a variant with a color and a size)\n * - variation group (a variant with only a color)\n * - not the variation master (product without color and size)\n * @returns the pid of the selected variation product/group.\n */\nfunction getSelectedVariantPid() {\n var pid;\n var selectedSize = $('.js-select-size.cc-active').data('attr-value');\n if (selectedSize) {\n // use pid of the selected size and color variation\n if ($('.cc-product-detail').length){\n pid = $('.cc-product-detail').data('pid');\n } else {\n pid = $('.product-detail').data('pid');\n }\n } else {\n // calculate pid for the selected color variation (without size)\n var skuMaster = $('#skuMaster').val();\n var colorVariation = $('.js-color-choice.cc-active').attr('data-attr-value');\n pid = skuMaster + colorVariation; // pid concatenation wishlist\n }\n return pid;\n}\n\nmodule.exports = {\n addToWishlist: function () {\n $(document).on('click', '.js-add-to-wishlist', function (e) {\n e.preventDefault();\n var button = $(this);\n var url = $(this).data('href');\n var pid = $('#skuMaster').val();\n var pidButton = $(this).data('pid');\n var color = $(this).data('color');\n var colorId = $('.js-color-choice.cc-active').data('attr-value');\n\n var variantPid = getSelectedVariantPid();\n if (variantPid){\n pid = variantPid;\n } else {\n var size = $('.js-selected-size-socialList').val();\n\n if (color != null && color != undefined) {\n pid = pid.concat(color);\n }\n \n if (colorId != null && !pid.includes(colorId)) {\n pid = pid.concat(colorId);\n }\n \n if (size != null && size != undefined && size != '') {\n pid = pid.concat(size);\n } else {\n if (pidButton.includes(pid)) {\n pid = pidButton;\n }\n }\n }\n\n var optionId = null;\n var optionVal = null;\n if (!url || !pid || !colorId) {\n return;\n }\n\n $.spinner().start();\n $(this).attr('disabled', true);\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: {\n pid: pid,\n colorId: colorId,\n optionId: optionId,\n optionVal: optionVal\n },\n success: function (data) {\n $.spinner().stop();\n displayMessage(data, button);\n // fill heart and trigger update for number of items in wishlist badge.\n updateHeartIcon(true);\n $('body').trigger('wishlist:updateQuantity');\n // analytics\n dataLayer.push({\n event: 'wishlist',\n eventCategory: 'Wish List',\n eventAction: 'add',\n eventLabel: pid\n });\n // END\n },\n error: function (err) {\n $.spinner().stop();\n displayMessage(err, button);\n $('body').trigger('wishlist:updateQuantity');\n }\n });\n });\n },\n\n closeModal: function () {\n $(document).on('click', '.js-close-add-to-wishlist-message', function(e) {\n let modalTarget = $(this).parent().parent();\n let modal = new Modal(modalTarget);\n\n $('.cc-add-to-wishlist-background').hide();\n modalTarget.hide();\n modal.close();\n if ($('body').hasClass('cc-blocked')) $('body').removeClass('cc-blocked');\n $('.js-add-to-wishlist').removeAttr('disabled');\n });\n },\n\n checkProductInWishlist: function () {\n // get pid of current variation product or variation group\n var pid = getSelectedVariantPid();\n\n // perform ajax call to Wishlist-ContainsProduct\n $.ajax({\n url: $('#wishlistContainsProductURL').val(),\n type: 'GET',\n data : {\n pid: pid\n },\n dataType: 'json',\n success: function(res) {\n if (! res.error) {\n updateHeartIcon(res.result);\n }\n }\n });\n },\n\n /**\n * when the selected product variant changes,\n * check if it exist within the customer wishlist\n */\n updateWishlistButton: function () {\n var self = this;\n $('body').on('wishlist:productVariantChanged', function() {\n self.checkProductInWishlist();\n });\n },\n};\n","import {\n showCartErrorHtml,\n createCartBillingFormData,\n getPaypalOrderId\n} from '../api';\nimport {\n addProductForPDPbtnFlow\n} from './pdpHelper';\nimport {\n getPaypalButtonStyle\n} from '../helper';\nconst { appendToUrl } = require('/cartridges/app_bc/cartridge/client/default/js/common/urlUtil');\n\n\nvar loaderInstance = require('../loader');\nvar $loaderContainer = document.querySelector('.paypalLoader');\nvar loader = loaderInstance($loaderContainer);\nvar pid;\nvar uuid;\nvar removeFromCartUrl;\n// var base = require('../base');\n\nfunction getAnalyticsAccessType() {\n var accessType;\n if ($('body:not(.cc-mobile)').length) {\n if ($(document.activeElement).parents('.js-sticky-add-to-cart').length) {\n accessType = 'pdp-sticky-bottom';\n } else {\n accessType = 'pdp';\n }\n } else if ($('.cc-pdp__info--top').length) {\n if ($('.cc-pdp__resume-mobile--fixed').length) {\n accessType = 'pdp-sticky-top-micro';\n } else {\n accessType = 'pdp-sticky-top-macro';\n }\n } else {\n accessType = 'pdp-sticky-bottom';\n }\n return accessType;\n}\n\n/**\n * Checks if a product variant is selected and opens the size selector otherwise.\n * Triggers analytics event.\n * \n * @returns {boolean} success\n */\nfunction onClick() {\n var $btn = $(document).find('button.add-to-cart');\n var isStiky = $(document.activeElement).closest('.cc-content-addtocart-sticky').length > 0;\n var accessType = getAnalyticsAccessType(); // analytics access type\n\n // check if product variant is selected\n if ($btn.data('disabled')) {\n if ($('body').hasClass('cc-mobile') || isStiky) {\n $('#size-modal-sticky').data('analyticsowner', 'paypal');\n var $sizeBtn = $('.js-size-sticky:visible');\n if (! $sizeBtn.length) $sizeBtn = $('.js-size-sticky').eq(0);\n $sizeBtn.trigger('click', {accessType});\n $('#paypalButtonSizeNotSelected').val('true');\n } else {\n $('#size-overlay').data('analyticsowner', 'paypal');\n $('.js-size-modal').click();\n $('#paypalButtonSizeNotSelected').val('true');\n }\n return false;\n } else {\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'checkout',\n eventAction: 'fast',\n eventLabel: 'Paypal Express',\n accessType: accessType\n });\n }\n}\n\n/**\n * Gets order id as string\n *\n * @returns {string} order id\n */\nfunction createOrder() {\n loader.show();\n var res = addProductForPDPbtnFlow();\n \n if (res.cart) {\n uuid = res.pliUUID;\n removeFromCartUrl = res.cart.actionUrls.removeProductLineItemUrl;\n pid = res.pid;\n } else {\n loader.hide();\n throw new Error(res.message || 'Error occurs');\n }\n\n return getPaypalOrderId();\n}\n\n/**\n * Makes post call and transfers order ID to returnFromCart endpoint, goes to checkout place order stage\n *\n * @param {Object} orderID - order id\n */\nfunction onApprove({ orderID }) {\n // make sure that amount > 0\n var $defer = $.Deferred();\n $.get(window.paypalUrls.getCartPurchaseUnit)\n .then(function ({ purchase_units }) {\n let parsedPurchaseUnit = purchase_units[0];\n if (JSON.parse(parsedPurchaseUnit.amount.value) === 0) {\n showCartErrorHtml('Order total 0 is not allowed for PayPal');\n $defer.reject();\n } else {\n $defer.resolve();\n }\n })\n .fail(function(){\n $defer.reject();\n });\n\n\n let cartBillingFormData = createCartBillingFormData({\n paypalOrderID: orderID\n }, document.querySelector('.js_paypal_button_on_pdp_page'));\n\n $defer.done(function() {\n $.ajax({\n type: 'POST',\n url: window.paypalUrls.returnFromCart,\n contentType: false,\n data: cartBillingFormData,\n processData: false,\n success: () => {\n loader.hide();\n $.spinner().start();\n\n // validate shipping\n $.ajax({\n type: 'GET',\n url: window.paypalUrls.validateShipping,\n success: (data) => {\n if (data.error && data.countryMatchError) {\n window.location.href = data.redirectUrl;\n } else {\n // validate billing\n $.ajax({\n type: 'GET',\n url: window.paypalUrls.billingStep,\n success: (data) => {\n var continueUrl = data.continueUrl;\n var urlParams = {\n ID: data.orderID,\n token: data.orderToken\n };\n \n continueUrl += (continueUrl.indexOf('?') !== -1 ? '&' : '?') +\n Object.keys(urlParams).map(function (key) {\n return key + '=' + encodeURIComponent(urlParams[key]);\n }).join('&');\n \n // redirect to TYP\n window.location.href = continueUrl;\n },\n error: (data) => {\n $.spinner().stop();\n // todo paypal: show billing error message\n }\n \n });\n }\n },\n error: function(data) {\n $.spinner().stop();\n // todo paypal: show shipping error message\n }\n });\n },\n error: function () {\n loader.hide();\n window.location.href = window.paypalUrls.cartPage;\n }\n });\n });\n}\n\n/**\n * Hides loader on paypal widget closing without errors\n * If PDP flow, removes product from basket on cancel\n */\nfunction onCancel() {\n var urlParams = {\n pid: pid,\n uuid: uuid\n };\n\n $.ajax({\n url: appendToUrl(removeFromCartUrl, urlParams),\n type: 'get',\n dataType: 'json',\n success: function () {\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n loader.hide();\n}\n\n/**\n * Shows errors if paypal widget was closed with errors\n * If PDP flow, removes product from basket on error\n */\nfunction onError() {\n if (pid) {\n var productID = pid;\n var urlParams = {\n pid: productID,\n uuid: uuid\n };\n\n $.ajax({\n url: appendToUrl(removeFromCartUrl, urlParams),\n type: 'get',\n dataType: 'json',\n success: function () {\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n loader.hide();\n}\n\n/**\n *Inits paypal button on cart page\n */\nfunction initPaypalButton() {\n // if (!$(document).find('.js-4Gift-eneble').length > 0) {\n // $('.cc-content-addtocart-sticky .cc-addtocart-buttons').addClass('cc-paypal-button-pdp');\n \n // } else {\n // $(document).find('.cc-content-addtocart-sticky .cc-addtocart-buttons').addClass('cc-paypal-button-pdp');\n // }\n $(document).find('.cc-content-addtocart-sticky .cc-addtocart-buttons').addClass('cc-paypal-button-pdp');\n $(document).find('.cc-content-addtocart .cc-addtocart-buttons .add-to-cart').addClass('cc-custom-margin');\n $(document).find('.cc-content-addtocart .cc-addtocart-buttons .paypal_pdp_button ').addClass('cc-custom-margin');\n loader.show();\n $(document).find('.paypal-pdp-button').each(function () {\n window.paypal.Buttons({\n onClick,\n createOrder,\n onApprove,\n onCancel,\n onError,\n style: getPaypalButtonStyle(document.querySelector('.js_paypal_button_on_pdp_page'))\n }).render(this)\n .then(() => {\n loader.hide();\n });\n });\n $('body').on('product:afterAttributeSelectPayPal', function (e) {\n $('.paypal-button-label-container').click();\n });\n}\n\nexport default initPaypalButton;\n","\n/**\n * Adds product to basket on paypal button/static image click when PDP flow\n * @returns {Object} response with required data\n */\nfunction addProductForPDPbtnFlow() {\n var $bundleItem = $('.bundle-item');\n /**\n * Gets options\n * @param {Object} $productContainer - product container\n * @returns {string} options\n */\n function getOptions($productContainer) {\n var options = $productContainer\n .find('.product-option')\n .map(function () {\n var $elOption = $(this).find('.options-select');\n var urlValue = $elOption.val();\n var selectedValueId = $elOption.find('option[value=\"' + urlValue + '\"]')\n .data('value-id');\n return {\n optionId: $(this).data('option-id'),\n selectedValueId: selectedValueId\n };\n }).toArray();\n\n return JSON.stringify(options);\n }\n\n var pid = $('.product-detail:not(\".bundle-item\")').data('pid');\n var $btn = $('.paypal_pdp_button');\n var $productContainer = $btn.closest('.product-detail');\n\n var form = {\n pid: pid,\n // quantity: $('.quantity-select').val()\n quantity: 1\n };\n\n if (!$bundleItem.length) {\n form.options = getOptions($productContainer);\n } else {\n var items = $bundleItem.map(function () {\n return {\n pid: $(this).find('.product-id').text(),\n quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)\n };\n });\n form.childProducts = JSON.stringify(items.toArray());\n }\n var response = $.ajax({\n url: $('.add-to-cart-url').val(),\n method: 'POST',\n async: false,\n data: form\n }).responseJSON;\n response.pid = pid;\n return response;\n}\n\nexport {\n addProductForPDPbtnFlow\n};\n","'use strict';\n\n/**\n * appends params to a url\n * @param {string} url - Original url\n * @param {Object} params - Parameters to append\n * @returns {string} result url with appended parameters\n */\nfunction appendToUrl(url, params) {\n var newUrl = url;\n newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(params).map(function (key) {\n return key + '=' + encodeURIComponent(params[key]);\n }).join('&');\n\n return newUrl;\n}\n\nfunction replaceOrAddQueryParam (url, parameter, value) {\n var regex = new RegExp(parameter + '=[^&]+');\n var split = url.split(regex);\n if (split.length > 1) {\n return split[0] + (url.indexOf('?') > -1 ? '' : '?') + parameter + '=' + value + split[1];\n } else {\n return url + (url.indexOf('?') > -1 ? '&' : '?') + parameter + '=' + value;\n }\n};\n\nfunction getQueryParams() {\n var url = document.location.href;\n var qs = url.substring(url.indexOf('?') + 1).split('&');\n for (var i = 0, result = {}; i < qs.length; i++) {\n qs[i] = qs[i].split('=');\n result[qs[i][0]] = decodeURIComponent(qs[i][1]);\n }\n return result;\n};\n\nmodule.exports = {\n replaceOrAddQueryParam: replaceOrAddQueryParam,\n getQueryParams: getQueryParams,\n appendToUrl: appendToUrl\n};\n"],"sourceRoot":""}