{"version":3,"mappings":"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","names":["buildAppInsightsMessage","err","errorMessage","stackTrace","logToAppInsights","name","message","url","_error","_warn","warning","window","factory","lazySizes","module","document","Date","lazysizes","lazySizesCfg","prop","lazySizesDefaults","docElem","supportPicture","_addEventListener","_getAttribute","addEventListener","setTimeout","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","forEach","hasClass","ele","cls","addClass","removeClass","reg","addRemoveLoadEvents","dom","fn","add","action","evt","triggerEvent","elem","detail","noBubbles","noCancelable","event","updatePolyfill","el","full","polyfill","getCSS","style","getWidth","parent","width","rAF","running","waiting","firstFns","secondFns","fns","run","runFns","rafBatch","queue","rAFIt","simple","that","args","throttle","lastTime","gDelay","rICTimeout","idleCallback","isPriority","delay","debounce","func","timeout","timestamp","wait","later","last","loader","preloadElems","isCompleted","resetPreloadingTimer","loadMode","started","eLvW","elvH","eLtop","eLleft","eLright","eLbottom","isBodyHidden","regImg","regIframe","supportScroll","shrinkExpand","currentExpand","isLoading","lowRuns","resetPreloading","e","isVisible","isNestedVisible","elemExpand","outerRect","visible","checkElements","eLlen","rect","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","hFac","lazyloadElems","unveilElement","throttledCheckElements","switchLoadingClass","rafSwitchLoadingClass","rafedSwitchLoadingClass","changeIframeSrc","src","handleSources","source","customMedia","sourceSrcset","lazyUnveil","isAuto","sizes","isImg","srcset","isPicture","firesLoad","isLoaded","autoSizer","afterScroll","altLoadmodeScrollListner","onload","loadingElements","img","autosizesElems","sizeElement","sources","i","len","getSizeElement","dataAttr","updateElementsSizes","debouncedUpdateElementsSizes","init","globalInstall","require$$0","bgLoad","regBgUrlEscape","uniqueUrls","cb","tmp","load","bg","poster","target","addStyleScript","insertElem","nav","mediaQueryList","attach","button","subMenu","subMenuContainer","openMenuButton","openSubMenuContainer","submenu","entry","entries","isOverflown","entryInlineSize","headerSize","activeItem","_a","subMenuButton","subMenuItems","firstSubMenuItem","siblingElem","isTab","forwardTab","backwardTab","isArrowDown","isArrowUp","links","currentIndex","logoLink","isOpen","hamburgerButton","ariaLabel","navOpened","scrollY","scrollDifference","element","menuElem","headerElem","props","__props","_sfc_main","DsText","result","newValue","$options","_createBlock","_component_DsText","_createElementBlock","_ctx","_createElementVNode","$props","show","urlToCompare","domain","_hoisted_4","$data","_b","_toDisplayString","_c","_d","_hoisted_5","emits","__emit","setFormatAriaLabel","str","modalRole","MODAL_ACTION_DISCONTINUE","emit","modalState","modalChoice","consentOptions","redirectionHint","hcpOnBehalfRedirectionHint","trackLoginChoice","consentTrackingRole","close","hcpOption","consumerOption","hcpOnBehalfOfPatient","params","SampleConsentType","Language","Code","axios","data","showModal","vm","consentsState","prescriptionModalData","showPrescriptionModal","customerModel","store","language","setVmModelForModal","toggleModal","openFlyOutBasket","openFlyoutBasket","Events","modalType","setUpperCaseFirstLetter","getPresciptionConsentState","key","cancelPrescriptionModal","addItemToBasket","updateConsent","updateConsentsState","payload","response","getConsentsState","handleConsumer","isRedirectionConfirmed","handleEventComplete","handleHcp","isProductCardOnCampaignPage","description","modalData","toggle","_hoisted_2","_openBlock","_hoisted_1","_hoisted_3","indexOf","list","isWindow","obj","isArraylike","length","ltype","isValidElement","DependencyLib","events","handler","eventRegistry","addEvent","ev","namespace","_events","endx","nsEvent","removeEvent","nmsp","resolveNamespace","evts","hndx","hndL","evNdx","offEvents","offEventsL","evnt","arr","options","copy","copyIsArray","clone","deep","callback","value","owner","require$$1","$","undefined","ua","ie","mobile","isInputEventSupported","iemobile","iphone","Inputmask","alias","internal","resolveAlias","pastedValue","opts","elems","importAttributeOptions","npt","userOptions","dataAttribute","attrOptions","option","dataoptions","optionData","p","importOption","ndx","scopedOpts","maskset","generateMaskSet","maskScope","noremask","metadata","mask","regexMask","tokenizer","regexTokenizer","escaped","currentToken","MaskToken","match","m","openenings","maskTokens","openingToken","currentOpeningToken","alternator","lastMatch","groupToken","isGroup","isOptional","isQuantifier","isAlternator","insertTestDefinition","mtoken","position","prevMatch","lmnt","maskdef","verifyGroupMarker","maskToken","token","nextToken","defaultCase","mndx","reverseTokens","reverseStatic","st","intMatch","qt","groupify","matches","quantifier","mqj","mq","mq0","mq1","tmpMatch","groupQuantifier","subToken","alternatorGroup","input","template","definition","specials","aliasStr","aliasDefinition","nocache","generateMask","repeatStart","masksetDefinition","maskdefKey","ms","altMask","msk","eventName","evName","isSupported","actionObj","inputmask","isRTL","undoValue","$el","skipKeyPressEvent","skipInputEvent","ignorable","maxLength","mouseEnter","colorMask","originalPlaceholder","getMaskTemplate","baseOnInput","minimalPos","includeMode","noJit","clearOptionalTail","greedy","maskTemplate","ndxIntlzr","pos","test","testPos","getLastValidPosition","getMaskSet","determineTestTemplate","getTests","getPlaceholder","getTestTemplate","jitMasking","resetMaskSet","soft","closestTo","strict","validPositions","before","after","valids","posNdx","psNdx","getDecisionTaker","tst","decisionTaker","getLocator","align","locator","tests","altTest","getTest","targetLocator","tstLocator","closest","bestMatch","distance","tstPs","positionCanMatchDefinition","def","valid","tndx","ndxInitializer","insertStop","latestMatch","cacheDependency","resolveTestFromToken","loopNdx","quantifierRecurse","handleMatch","isFirstMatch","tokenGroup","firstMatch","resolveNdxInitializer","alternateNdx","targetAlternation","indexPos","alternation","ndxPos","bestMatchAltIndex","isSubsetOf","expand","pattern","expanded","start","end","l","staticCanMatchDefinition","sloc","tloc","canMatch","setMergeLocators","targetMatch","altMatch","locNdx","optionalToken","mtch","alternateToken","malternateMatches","maltMatches","currentMatches","loopNdxCnt","altIndex","currentPos","ndxInitializerClone","altIndexArr","amndx","altIndexArrClone","unMatchedAlternation","ndx1","dropMatch","ndx2","altMatch2","qndx","mergeLocators","previousPos","mtndx","getBufferTemplate","getBuffer","noCache","refreshFromBuffer","buffer","valResult","isValid","casing","posBefore","checkAlternationMatch","altArr1","altArr2","na","altArrC","isMatch","naArr","naNdx","alndx","alternate","c","fromSetValid","rAltPos","validPsClone","lastAlt","isValidRslt","altPos","prevAltPos","validPos","decisionPos","lAltPos","validInputsClone","staticInputsBeforePos","posOffset","validInputs","targetLvp","fromAlternate","validateOnly","isSelection","posObj","maskPos","_isValid","rslt","validatedPos","a","b","revalidateMask","positionsClone","trackbackPositions","currentPosValid","seekNext","isMask","nPos","snPos","isComplete","postResult","refresh","originalPos","newPos","fillOnly","ps","vp","cvpInput","validTest","IsEnclosedStatic","selection","posMatch","nextMatch","begin","lvp","j","needsValidation","t","newBlock","seekPrevious","writeBuffer","caretPos","triggerEvents","caret","renderColorMask","$input","nptVal","returnPL","staticAlternations","prevTest","HandleNativePlaceholder","nptValue","EventRuler","eventHandler","imOpts","returnVal","evArr","EventHandlers","k","handleRemove","checkVal","checkval","writeOut","forwardPosition","offset","inputValue","tempValue","valueBeforeCaret","valueAfterCaret","pasteValue","radixPointHandler","ieMobileHandler","inputChar","iv","frontPart","backPart","frontBufferPart","backBufferPart","isEntry","fpl","keypress","keydown","tabbed","doRadixFocus","clickPos","vps","radixPos","selectedCaret","clickPosition","lvclickPosition","lastPosition","tt","placeholder","clipboardData","clipData","nptvl","initiatingEvent","charCodes","initialNdx","isTemplateMatch","charCodeNdx","staticInput","charCode","unmaskedvalue","umValue","pndx","unmaskedValue","bufferValue","notranslate","translatePosition","range","scrollCalc","textNode","sel","determineLastRequiredPosition","returnDefinition","bl","positions","lvTest","lvTestAlt","complete","lrp","aml","fromIsValid","pend","initializeColorMask","computedStyle","findCaretPos","clientx","inputText","previousWidth","itl","offset1","offset2","clear","isStatic","setEntry","mtl","setCaret","isElementTypeSupported","patchValueProperty","valueGet","valueSet","patchValhook","type","valhookGet","valhookSet","$elem","getter","setter","installNativeValueSetFallback","object","valueProperty","overruleRTL","elementType","initialValue","valueBuffer","rl","lmib","maskTarget","mtdt","chrs","maskedValue","formatCode","pad","formatAlias","getTokenizer","tokens","isValidDate","dateParts","currentResult","isDateInRange","rawYear","minYear","parse","format","dateObjValue","raw","getFn","val","analyseMask","maskString","dateObj","targetProp","dateOperation","extendProperty","correctedValue","enteredPart","min","max","setValue","today","date","autoEscape","txt","escapedTxt","alignDigits","digits","radixPosition","seps","mod","radixDef","dq","buildPostMask","postMask","radixSplit","suffix","prefix","charAtPos","processValue","rpb","addRadix","newCaretPos","parseMinMaxOptions","unmasked","emptyCheck","pvRadixSplit","bufferTemplate","radix","radixPoint","valueParts","integerPart","decimalPart","digitsFactor","require$$3","self","maskObj","completed","hint","maskList","defs","ia","ib","cha","chb","maskOpts","validator","text","mtxt","ch","mid","pass","it","im","chm","cht","determined","newtext","oldMask","newMask","oldPos","startPos","endPos","chr","insert","_Fragment","newVal","_createVNode","_component_PhoneMask","$event","breadcrumbItems","breadcrumbItem","genericModal","_component_generic_modal","searchParameters","btn","userStatus","DsIcon","_resolveDynamicComponent","_component_DsIcon","_component_mini_basket_count","scrollPosStr","scrollPosObj","selector","elm","rootElement","showClass","hideClass","selected","accepted","choice","root","userTypeOption","activator","consentOption","apiUrl","error","dialog","boundingBox","trigger","closeBtn","_e","eventParameter","_g","_f","_i","_h","_l","_k","_j","_this","BREAKPOINT","css","head","tabs","content","toggleContent","item","currentTab","tabContent","pageId","windowWidth","isStickyHeader","isMagazineNavigation","isMagazineSidebar","isMagazineAnchors","headerHeight","magazineNavigationHeight","setScrollBarWidth","setSidebarOffset","setNavigationOffset","setAnchorOffset","windowScroll","height","scrolled","observerOptions","intersectionCallback","observer","buttons","blockId","menu","clientRect","activationTarget","videoId","initExternalLinksClickEvent","initter","detectIE","windowObj","msie","trident","rv","cleanBannerHeights","setBannerHeights","banner","bannerHeight","setBannerPositions","acc","setBanners","handleClick","node","isIe11class","Cookies","getAccess","sessionDate","cookieAllow","sessionHasStarted","form","fieldNames","variable","vars","toReturn","pair","areImagesLoaded","imageGalleryElement","isDisplayManufacturerLogo","isGalleryMounted","imageGallerySkeleton","app","ImageGallerySkeleton","globalSettingsContainer","GlobalSettings","menuSampleContainer","productWrapper","hcpProductWrapper","miniBasketMount","dateTimes","dateTimeEl","imageGalleryMount","addToBasketMount","n","productDescriptionMount","hcpModalDialog","hcpMainProfilePageMount","marketingPermissionsReminderMounts","marketingPermissionsReminderEl","actionButtonWithCtas","actionButtonWithCtaEl","WhatNextMount","setPasswordMount","renewActivationLinkMount","renewActivationLinkSuccessMount","HCPSignUpBlockMount","HCPLoginBlockMount","HCPLoginBlockMountEl","HCPCompleteSignUpPageMount","HCPAccountSubscriptionsBlockMountArray","subscription","coursesBlockMount","videoPosterMountArray","miniBasketCountMount","globalUtilityMount","ModalDialog","basketFormMount","basketInteractionTrackerMount","sampleFormProductsMount","sampleProductFormMountArray","consumerSignupModalMount","consumerSignupInfoModalMount","globalSearchNav","globalSearchPopup","globalSearchPage","globalSearchArticlesResultPage","globalSearchProductsResultPage","hcpMedicalSpecialityGatePage","contentLibrary","carouselLibraries","multiLevelMenu","podcastPlayers","productCateogryCarousels","ctaHeroBanner","contentGate","contentGateButtons","contentRecommended","contentInfoCard","contentAlternativeDate","utiRiskFactorModel","breadcrumbMount","heyloCheckout","heyloTool","mediaBannerMount","healthCheckTool","ctaBlocks","subNavigationBlock","documentSearchComponent","factsBoxBlock","videoCarouselBlocks","videoCarouselBlock","relatedContentBlock","productHighlightsBlock","highlightedMultimediaBlocks","practitionersGuideOverview","ctaButtomWithFormKits","zoomInModalButtons","uploadCuttingProfile","simpleCardsWithCta","simpleCardsWithCtaEl","globalModal","referencesListArray","appContainer","index","formEl","elements"],"ignoreList":[1,2,19,20,21,22,23,24,25],"sources":["../../../../Coloplast.UI/src/shared/vanilla/console.js","../../../../Coloplast.UI/node_modules/lazysizes/lazysizes.js","../../../../Coloplast.UI/node_modules/lazysizes/plugins/unveilhooks/ls.unveilhooks.js","../../../../Coloplast.UI/src/shared/vanilla/inlineStackingMenu.js","../../../../Coloplast.UI/src/shared/vanilla/stickyMenu.js","../../../../Coloplast.UI/src/shared/vanilla/nav.js","../../../../Coloplast.UI/src/multisite/components/globalSettings.vue","../../../../Coloplast.UI/src/shared/components/product/miniBasketCount.vue","../../../../Coloplast.UI/src/shared/components/product/sampleButton.vue","../../../../Coloplast.UI/src/shared/components/externalLinksPopup.vue","../../../../Coloplast.UI/src/shared/components/product/prescriptionModal.vue","../../../../Coloplast.UI/src/shared/components/product/sampleConsentModal.vue","../../../../Coloplast.UI/src/shared/services/consentConfirmation.service.js","../../../../Coloplast.UI/src/shared/components/modalDialogWithCta.vue","../../../../Coloplast.UI/src/shared/components/modalDialog.vue","../../../../Coloplast.UI/src/shared/components/trackers/basketNavTracker.vue","../../../../Coloplast.UI/src/shared/components/trackers/formPostTracker.vue","../../../../Coloplast.UI/src/shared/components/spinner.vue","../../../../Coloplast.UI/src/shared/components/globalSpinner.vue","../../../../Coloplast.UI/node_modules/inputmask/dist/inputmask/global/window.js","../../../../Coloplast.UI/node_modules/inputmask/dist/inputmask/dependencyLibs/inputmask.dependencyLib.js","../../../../Coloplast.UI/node_modules/inputmask/dist/inputmask/inputmask.js","../../../../Coloplast.UI/node_modules/inputmask/dist/inputmask/inputmask.extensions.js","../../../../Coloplast.UI/node_modules/inputmask/dist/inputmask/inputmask.date.extensions.js","../../../../Coloplast.UI/node_modules/inputmask/dist/inputmask/inputmask.numeric.extensions.js","../../../../Coloplast.UI/node_modules/inputmask/index.js","../../../../Coloplast.UI/src/shared/components/PhoneMask.vue","../../../../Coloplast.UI/src/shared/components/phoneField.vue","../../../../Coloplast.UI/src/shared/components/BreadcrumbElements/Breadcrumb.vue","../../../../Coloplast.UI/src/shared/components/loginExpiredModal/loginExpiredModal.vue","../../../../Coloplast.UI/src/shared/components/trackers/loginTracker.vue","../../../../Coloplast.UI/src/shared/components/trackers/quickSampleTracker.vue","../../../../Coloplast.UI/src/shared/components/basket/flyOutBasketActivator.vue","../../../../Coloplast.UI/src/shared/tools/postbackscrollpos.js","../../../../Coloplast.UI/src/shared/vanilla/multisitebasket.js","../../../../Coloplast.UI/src/shared/vanilla/modalDialog.js","../../../../Coloplast.UI/src/shared/vanilla/customEventEmitter.js","../../../../Coloplast.UI/src/shared/vanilla/externalLinksClickEvent.js","../../../../Coloplast.UI/src/shared/vanilla/removeOutline.js","../../../../Coloplast.UI/src/shared/vanilla/initHideBodyScrollBar.js","../../../../Coloplast.UI/src/shared/vanilla/linkOverride.js","../../../../Coloplast.UI/src/shared/vanilla/initHideChat.js","../../../../Coloplast.UI/src/shared/vanilla/tabbingCarousel.js","../../../../Coloplast.UI/src/shared/vanilla/initDownloadPdfUrl.js","../../../../Coloplast.UI/src/shared/vanilla/initMagazineNavigation.js","../../../../Coloplast.UI/src/shared/vanilla/blocks/stepByStep.js","../../../../Coloplast.UI/src/shared/vanilla/boot.js","../../../../Coloplast.UI/src/shared/tools/ieNotification.js","../../../../Coloplast.UI/src/shared/vanilla/initHeylo.js","../../../../Coloplast.UI/src/shared/components/dateTime.vue","../../../../Coloplast.UI/src/shared/components/product/skeletons/imageGallerySkeleton.vue","../../../../Coloplast.UI/src/shared/tools/initGlobalAxios.js","../../../../Coloplast.UI/src/multisite/main.js"],"sourcesContent":["(function initializeConsole() {\r\n\tif (!window.hasOwnProperty('appInsights') || !window.hasOwnProperty('console')) {\r\n\t\t// if appInsights doesn't exist we will not do anything\r\n\t\treturn;\r\n\t}\r\n\t\r\n\tfunction buildAppInsightsMessage(err) {\r\n\t\tlet errorMessage = typeof err === 'string' ? err : '';\r\n\t\t// if this is called by an exception in the code err will be an object with a message property\r\n\t\tif (err.hasOwnProperty('message')) {\r\n\t\t\terrorMessage += err.message;\r\n\t\t}\r\n\t\t// if err also has a stack property (which it will if it's triggered by an exception) report that true\r\n\t\tif (err.hasOwnProperty('stack')) {\r\n\t\t\terrorMessage += '\\n\\n' + err.stack;\r\n\t\t}\r\n\t\t// else see if accessing the stack trace is supported in the browser; if it is then use that\r\n\t\telse if (Error.hasOwnProperty('captureStackTrace')) {\r\n\t\t\tlet stackTrace = {};\r\n\t\t\tError.captureStackTrace(stackTrace, console.error);\r\n\t\t\terrorMessage += '\\n\\n' + stackTrace.stack;\r\n\t\t}\r\n\t\terrorMessage += '\\n\\nUser agent: ' + navigator.userAgent;\r\n\t\t\r\n\t\treturn errorMessage\r\n\t}\r\n\r\n\tfunction logToAppInsights(name, message, url) {\r\n\t\t// if ApplicationInsights are enabled then track the error\r\n\t\tif (appInsights.hasOwnProperty('trackEvent') && typeof appInsights.trackEvent === 'function') {\r\n\t\t\tappInsights.trackEvent({\r\n\t\t\t\tname: name,\r\n\t\t\t\tproperties: {\r\n\t\t\t\t\turl: url,\r\n\t\t\t\t\terrorMessage: message,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\tappInsights.flush();\r\n\t\t}\r\n\t}\r\n\r\n\t// save a reference to the original console.error method in a closure\r\n\tconst _error = console.error;\r\n\tconsole.error = (err) => {\r\n\t\tlet errorMessage = buildAppInsightsMessage(err);\r\n\t\tlogToAppInsights('MS_FE_GENERAL_ERROR', errorMessage, window.location.href);\r\n\r\n\t\t// call the original console.error method\r\n\t\tif (typeof _error === 'function') {\r\n\t\t\t_error(err);\r\n\t\t}\r\n\t}\r\n\r\n\t// save a reference to the original console.warn method in a closure\r\n\tconst _warn = console.warn;\r\n\tconsole.warn = (warning) => {\r\n\t\tlet errorMessage = buildAppInsightsMessage(warning);\r\n\r\n\t\t// check if this is a Vue warning. If not then call the original console.warn method and return\r\n\t\tif (errorMessage.indexOf('[Vue warn]') !== -1) {\r\n\t\t\tlogToAppInsights('MS_FE_VUE_WARNING', errorMessage, window.location.href);\r\n\t\t}\r\n\r\n\t\t// call the original console.warn method\r\n\t\tif (typeof _warn === 'function') {\r\n\t\t\t_warn(warning);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n})();\r\n","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n      window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth =  parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning =  true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","/*\nThis plugin extends lazySizes to lazyLoad:\nbackground images, videos/posters and scripts\n\nBackground-Image:\nFor background images, use data-bg attribute:\n<div class=\"lazyload\" data-bg=\"bg-img.jpg\"></div>\n\n Video:\n For video/audio use data-poster and preload=\"none\":\n <video class=\"lazyload\" preload=\"none\" data-poster=\"poster.jpg\" src=\"src.mp4\">\n <!-- sources -->\n </video>\n\n For video that plays automatically if in view:\n <video\n\tclass=\"lazyload\"\n\tpreload=\"none\"\n\tmuted=\"\"\n\tdata-autoplay=\"\"\n\tdata-poster=\"poster.jpg\"\n\tsrc=\"src.mp4\">\n</video>\n\n Scripts:\n For scripts use data-script:\n <div class=\"lazyload\" data-script=\"module-name.js\"></div>\n\n\n Script modules using require:\n For modules using require use data-require:\n <div class=\"lazyload\" data-require=\"module-name\"></div>\n*/\n\n(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t/*jshint eqnull:true */\n\t'use strict';\n\tvar bgLoad, regBgUrlEscape;\n\tvar uniqueUrls = {};\n\n\tif(document.addEventListener){\n\t\tregBgUrlEscape = /\\(|\\)|\\s|'/;\n\n\t\tbgLoad = function (url, cb){\n\t\t\tvar img = document.createElement('img');\n\t\t\timg.onload = function(){\n\t\t\t\timg.onload = null;\n\t\t\t\timg.onerror = null;\n\t\t\t\timg = null;\n\t\t\t\tcb();\n\t\t\t};\n\t\t\timg.onerror = img.onload;\n\n\t\t\timg.src = url;\n\n\t\t\tif(img && img.complete && img.onload){\n\t\t\t\timg.onload();\n\t\t\t}\n\t\t};\n\n\t\taddEventListener('lazybeforeunveil', function(e){\n\t\t\tif(e.detail.instance != lazySizes){return;}\n\n\t\t\tvar tmp, load, bg, poster;\n\t\t\tif(!e.defaultPrevented) {\n\n\t\t\t\tvar target = e.target;\n\n\t\t\t\tif(target.preload == 'none'){\n\t\t\t\t\ttarget.preload = target.getAttribute('data-preload') || 'auto';\n\t\t\t\t}\n\n\t\t\t\tif (target.getAttribute('data-autoplay') != null) {\n\t\t\t\t\tif (target.getAttribute('data-expand') && !target.autoplay) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\ttarget.play();\n\t\t\t\t\t\t} catch (er) {}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\ttarget.setAttribute('data-expand', '-10');\n\t\t\t\t\t\t\tlazySizes.aC(target, lazySizes.cfg.lazyClass);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttmp = target.getAttribute('data-link');\n\t\t\t\tif(tmp){\n\t\t\t\t\taddStyleScript(tmp, true);\n\t\t\t\t}\n\n\t\t\t\t// handle data-script\n\t\t\t\ttmp = target.getAttribute('data-script');\n\t\t\t\tif(tmp){\n\t\t\t\t\te.detail.firesLoad = true;\n\t\t\t\t\tload = function(){\n\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\tlazySizes.fire(target, '_lazyloaded', {}, true, true);\n\t\t\t\t\t};\n\t\t\t\t\taddStyleScript(tmp, null, load);\n\t\t\t\t}\n\n\t\t\t\t// handle data-require\n\t\t\t\ttmp = target.getAttribute('data-require');\n\t\t\t\tif(tmp){\n\t\t\t\t\tif(lazySizes.cfg.requireJs){\n\t\t\t\t\t\tlazySizes.cfg.requireJs([tmp]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddStyleScript(tmp);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// handle data-bg\n\t\t\t\tbg = target.getAttribute('data-bg');\n\t\t\t\tif (bg) {\n\t\t\t\t\te.detail.firesLoad = true;\n\t\t\t\t\tload = function(){\n\t\t\t\t\t\ttarget.style.backgroundImage = 'url(' + (regBgUrlEscape.test(bg) ? JSON.stringify(bg) : bg ) + ')';\n\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\tlazySizes.fire(target, '_lazyloaded', {}, true, true);\n\t\t\t\t\t};\n\n\t\t\t\t\tbgLoad(bg, load);\n\t\t\t\t}\n\n\t\t\t\t// handle data-poster\n\t\t\t\tposter = target.getAttribute('data-poster');\n\t\t\t\tif(poster){\n\t\t\t\t\te.detail.firesLoad = true;\n\t\t\t\t\tload = function(){\n\t\t\t\t\t\ttarget.poster = poster;\n\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\tlazySizes.fire(target, '_lazyloaded', {}, true, true);\n\t\t\t\t\t};\n\n\t\t\t\t\tbgLoad(poster, load);\n\n\t\t\t\t}\n\t\t\t}\n\t\t}, false);\n\n\t}\n\n\tfunction addStyleScript(src, style, cb){\n\t\tif(uniqueUrls[src]){\n\t\t\treturn;\n\t\t}\n\t\tvar elem = document.createElement(style ? 'link' : 'script');\n\t\tvar insertElem = document.getElementsByTagName('script')[0];\n\n\t\tif(style){\n\t\t\telem.rel = 'stylesheet';\n\t\t\telem.href = src;\n\t\t} else {\n\t\t\telem.onload = function(){\n\t\t\t\telem.onerror = null;\n\t\t\t\telem.onload = null;\n\t\t\t\tcb();\n\t\t\t};\n\t\t\telem.onerror = elem.onload;\n\n\t\t\telem.src = src;\n\t\t}\n\t\tuniqueUrls[src] = true;\n\t\tuniqueUrls[elem.src || elem.href] = true;\n\t\tinsertElem.parentNode.insertBefore(elem, insertElem);\n\t}\n}));\n","let /** @type {HTMLHeadElement} header.c-nav */ header = null;\r\nlet /** @type {HTMLDivElement} .c-nav__section-main-navigation */ nav = null;\r\nlet /** @type {HTMLElement} .c-nav-menu */ navElem = null;\r\nlet /** @type {HTMLAnchorElement} :scope > .c-nav-item */ navItems = null;\r\nlet /** @type {HTMLAnchorElement} */ firstNavItem = null;\r\nlet /** @type {HTMLAnchorElement} */ lastNavItem = null;\r\nlet /** @type {HTMLDivElement} .c-nav-placeholder */ placeholder = null;\r\nlet /** @type {HTMLElement} #multi-level-menu */ multiLevelMenu = null;\r\nlet /** @type {HTMLElement} */ headerFirstFocusableEl = null;\r\nlet /** @type {HTMLElement} */ headerLastFocusableEl = null;\r\nlet /** @type {HTMLElement[]} */ allHeaderFocusableEls = null;\r\n\r\nlet resizeObserverInline = null;\r\nlet resizeObserverStacked = null;\r\nlet resizeObserverHeader = null;\r\nlet timeout = null;\r\nlet isTouch = false;\r\n\r\nconst getMediaQueryList = () => {\r\n\tconst mediaQuery = '(min-width: 768px)';\r\n\treturn window.matchMedia(mediaQuery);\r\n}\r\n\r\n/**\r\n * Listens for media query change (at 768px), and appropriately attaches/detaches desktop/mobile\r\n * event listeners\r\n * @listens var:{@link mediaQueryList}~e:change - media-query change at 768px\r\n * @triggered f:{@link attachObservers}\r\n */\r\nexport const attachResponsiveBehaviour = () => {\r\n\tconst mediaQueryList = getMediaQueryList();\r\n\r\n\tif (mediaQueryList.matches) {\r\n\t\tattachDesktopEvents();\r\n\t} else {\r\n\t\tattachMobileEvents();\r\n\t}\r\n\r\n\tmediaQueryList.addEventListener('change', event => {\r\n\t\tif (event.matches) {\r\n\t\t\tattachDesktopEvents();\r\n\t\t\tdetachMobileEvents();\r\n\t\t} else {\r\n\t\t\tattachMobileEvents();\r\n\t\t\tdetachDesktopEvents();\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Adds/removes mobile events. Is triggered in appropriate remove/add mode when the mediaQueryList\r\n * emits 'change' event, which happens at 768px\r\n * @triggered var:${@link mediaQueryList}~e:change\r\n * @triggered f:{@link attachResponsiveBehaviour}\r\n */\r\nexport const attachMobileEvents = (attach = true) => {\r\n\tconst buttons = document.querySelectorAll(\".c-nav-item__button\");\r\n\r\n\tbuttons.forEach(button => {\r\n\t\tif (attach) {\r\n\t\t\tbutton.addEventListener(\"click\", toggleAriaExpanded);\r\n\t\t} else {\r\n\t\t\tbutton.removeEventListener(\"click\", toggleAriaExpanded);\r\n\t\t}\r\n\t});\r\n};\r\n\r\nexport const detachMobileEvents = () => {\r\n\tattachMobileEvents(false);\r\n};\r\n\r\n/**\r\n * Adds/removes desktop events. Is triggered in appropriate remove/add mode when the mediaQueryList\r\n * emits 'change' event, which happens at 768px\r\n * @triggered var:{@link mediaQueryList}~e:change\r\n * @triggered f:{@link attachResponsiveBehaviour}\r\n */\r\nexport const attachDesktopEvents = (attach = true) => {\r\n\tdocument.documentElement.classList.remove(\"nav-open\", \"nav-search\", \"nav-search-popup\");\r\n\tconst subMenus = document.querySelectorAll(\".c-nav-item--has-sub-menu > .c-nav__submenu-container\");\r\n\tsubMenus.forEach(subMenu => {\r\n\t\t// Set aria attribute for sub-menu\r\n\t\tconst subMenuContainer = subMenu.parentNode;\r\n\t\tsubMenu.setAttribute(\"aria-hidden\", \"true\");\r\n\t\tconst button = subMenuContainer.querySelector(\".c-nav-item__button\");\r\n\t\tbutton.setAttribute(\"aria-expanded\", \"false\");\r\n\r\n\t\tif (attach) {\r\n\t\t\tsubMenuContainer.addEventListener(\"focusin\", openSubMenu);\r\n\t\t\tsubMenuContainer.addEventListener(\"focusout\", closeSubMenu);\r\n\t\t\tsubMenuContainer.addEventListener(\"keydown\", handleKeyEventsInSubMenu);\r\n\t\t\tsubMenuContainer.addEventListener(\"mouseenter\", removeFocusFromOtherNavSections);\r\n\t\t\tsubMenuContainer.addEventListener(\"touchend\", forceTabletFocus);\r\n\t\t\tdocument.addEventListener(\"touchend\", closeOnTouchOutside);\r\n\t\t} else {\r\n\t\t\tsubMenuContainer.removeEventListener(\"focusin\", openSubMenu);\r\n\t\t\tsubMenuContainer.removeEventListener(\"focusout\", closeSubMenu);\r\n\t\t\tsubMenuContainer.removeEventListener(\"keydown\", handleKeyEventsInSubMenu);\r\n\t\t\tsubMenuContainer.removeEventListener(\"mouseenter\", removeFocusFromOtherNavSections);\r\n\t\t\tsubMenuContainer.removeEventListener(\"touchend\", forceTabletFocus);\r\n\t\t\tdocument.removeEventListener(\"touchend\", closeOnTouchOutside);\r\n\t\t}\r\n\t});\r\n};\r\n\r\nexport const detachDesktopEvents = () => {\r\n\tattachDesktopEvents(false);\r\n};\r\n\r\n/**\r\n * Removes the focus from other nav sections (eg. prevents from two submenus being open, when\r\n * one is focused with Tab, and the the other is hovered with mouse)\r\n * @triggered .c-nav-item__button~e:mouseenter\r\n */\r\nexport const removeFocusFromOtherNavSections = e => {\r\n\tif (!e.target.contains(document.activeElement)) {\r\n\t\tdocument.activeElement.blur();\r\n\t}\r\n};\r\n\r\nexport const forceTabletFocus = e => {\r\n\te.stopPropagation();\r\n\tisTouch = true;\r\n\theader.classList.add(\"--touch\");\r\n\tif (e.target.classList.contains(\"c-nav-item__button\")) {\r\n\t\tcloseOpenSubMenu();\r\n\t\te.target.focus();\r\n\t}\r\n};\r\n\r\nexport const closeOnTouchOutside = e => {\r\n\tconst openMenuButton = document.querySelector(\".c-nav-item__button[aria-expanded='true']\");\r\n\tconst openSubMenuContainer = openMenuButton ? openMenuButton.closest(\".c-nav-item--has-sub-menu\") : null;\r\n\tif (openSubMenuContainer && !openSubMenuContainer.contains(e.target)) {\r\n\t\tcloseSubMenuByElem(openSubMenuContainer);\r\n\t}\r\n};\r\n\r\n/**\r\n * Dynamically change aria-labels, which are also used by the CSS to show/hide sub-menu\r\n * @triggered f:attachMobileEvents -> button.c-nav-item__button::click\r\n */\r\nexport const toggleAriaExpanded = e => {\r\n\tconst button = e.currentTarget;\r\n\tconst submenu = button.nextElementSibling;\r\n\tif (button.getAttribute(\"aria-expanded\") === \"true\") {\r\n\t\tbutton.setAttribute(\"aria-expanded\", \"false\");\r\n\t\tsubmenu.setAttribute(\"aria-hidden\", \"true\");\r\n\t} else {\r\n\t\tbutton.setAttribute(\"aria-expanded\", \"true\");\r\n\t\tsubmenu.setAttribute(\"aria-hidden\", \"false\");\r\n\t}\r\n};\r\n\r\nexport const getInlineSize = (entry) => {\r\n\tconst hasBorderBoxSize = typeof entry.borderBoxSize !== \"undefined\";\r\n\tif (hasBorderBoxSize) {\r\n\t\treturn Array.isArray(entry.borderBoxSize) ? entry.borderBoxSize[0].inlineSize : entry.borderBoxSize.inlineSize;\r\n\t}\r\n\treturn entry.contentRect.width;\r\n}\r\n\r\nexport const getBlockSize = (entry) => {\r\n\tconst hasBorderBoxSize = typeof entry.borderBoxSize !== \"undefined\";\r\n\tif (hasBorderBoxSize) {\r\n\t\treturn Array.isArray(entry.borderBoxSize) ? entry.borderBoxSize[0].blockSize : entry.borderBoxSize.blockSize;\r\n\t}\r\n\treturn entry.contentRect.height;\r\n}\r\n\r\nexport const stackedObserver = (entries) => {\r\n\tif (header.classList.contains(\"header--nav-stacked\")) {\r\n\t\tfor (let entry of entries) {\r\n\t\t\t// Ensure we won't thrash between layout modes by checking overflow state here too\r\n\t\t\tconst isOverflown = lastNavItem.offsetTop > firstNavItem.offsetTop + firstNavItem.clientHeight;\r\n\r\n\t\t\tconst entryInlineSize = getInlineSize(entry);\r\n\t\t\tif (!isOverflown && Math.ceil(navElem.offsetWidth) < Math.ceil(entryInlineSize)) {\r\n\t\t\t\tresizeObserverStacked.unobserve(placeholder);\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\theader.classList.remove(\"header--nav-stacked\");\r\n\t\t\t\t\tresizeObserverInline.observe(nav, { box: \"border-box\" });\r\n\t\t\t\t}, 10);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport const inlineObserver = (entries) => {\r\n\tif (!header.classList.contains(\"header--nav-stacked\")) {\r\n\t\tentries.forEach(() => {\r\n\t\t\tconst isOverflown = lastNavItem.offsetTop > firstNavItem.offsetTop + firstNavItem.clientHeight;\r\n\t\t\tif (isOverflown) {\r\n\t\t\t\t\tresizeObserverInline.unobserve(nav);\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\theader.classList.add(\"header--nav-stacked\");\r\n\t\t\t\t\t\tresizeObserverStacked.observe(placeholder, { box: \"border-box\" });\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t}\r\n\t\t});\r\n\t}\r\n};\r\n\r\n// Allow css to pick up the header height\r\nexport const headerObserver = (entries) => {\r\n\tconst headerSize = getBlockSize(entries[0]);\r\n\theader.setAttribute(\"style\", `--header-height: ${headerSize}px`);\r\n};\r\n\r\n/**\r\n * @triggered f:{@link initInlineStacking}\r\n */\r\nexport const attachObservers = () => {\r\n\tresizeObserverInline = new ResizeObserver(inlineObserver);\r\n\tresizeObserverStacked = new ResizeObserver(stackedObserver);\r\n\tresizeObserverHeader = new ResizeObserver(headerObserver);\r\n\tresizeObserverInline.observe(nav, { box: \"border-box\" });\r\n\tresizeObserverHeader.observe(header, { box: \"border-box\" });\r\n\r\n\tattachAriaAttributes();\r\n\tattachResponsiveBehaviour();\r\n};\r\n\r\nexport const attachObserversForMultiLevel = () => {\r\n\tmultiLevelMenu = document.getElementById(\"multi-level-menu\");\r\n\tclearTimeout(timeout);\r\n\tif (multiLevelMenu.__vue__) {\r\n\t\tnavItems = document.querySelectorAll(\".c-multi-level-menu__subitem-primary\");\r\n\t\tfirstNavItem = navItems[0];\r\n\t\tlastNavItem = navItems[navItems.length - 1];\r\n\t\tattachObservers();\r\n\t} else {\r\n\t\ttimeout = setTimeout(attachObserversForMultiLevel, 500);\r\n\t}\r\n};\r\n\r\nexport const expandActiveMenuItems = () => {\r\n\tconst menuContainer = document.querySelector(\".c-nav-menu\");\r\n\tconst activeItem = menuContainer.querySelector('.-active');\r\n\tif (!activeItem) {\r\n\t\treturn;\r\n\t}\r\n\tconst button = activeItem.closest('.c-nav-item')?.querySelector('button');\r\n\tif (button) {\r\n\t\topenSubMenu({\r\n\t\t\ttarget: button,\r\n\t\t\tcurrentTarget: button.parentElement,\r\n\t\t});\r\n\t}\r\n};\r\n\r\n/**\r\n * Attaches menu observers, attaches mobile-toggle behavior\r\n * @triggered file:nav.js~f:initNavDomReady\r\n */\r\nexport const initInlineStacking = () => {\r\n    header = document.querySelector(\"header.c-nav\");\r\n    nav = document.querySelector(\".c-nav__section-main-navigation\");\r\n    navElem = nav.querySelector(\".c-nav-menu\");\r\n\tnavItems = navElem.querySelectorAll(\":scope > .c-nav-item\");\r\n\tfirstNavItem = navItems[0]?.classList.contains(\"visible-mobile-only\") ? navItems[1] : navItems[0];\r\n\tlastNavItem = navItems[navItems.length - 1];\r\n    placeholder = document.querySelector(\".c-nav-placeholder\");\r\n\tmultiLevelMenu = document.getElementById(\"multi-level-menu\");\r\n\r\n\t// Only attach behaviours if we have nav items\r\n\tif (firstNavItem && lastNavItem) {\r\n\t\tattachObservers();\r\n\t} else if (multiLevelMenu) {\r\n\t\t// Multi-level menu may not have mounted\r\n\t\tattachObserversForMultiLevel();\r\n\t}\r\n\r\n\tattachMobileToggleBehaviour();\r\n\r\n\t// if on mobile, expand the active top menu item\r\n\tconst mediaQueryList = getMediaQueryList();\r\n\tif (!mediaQueryList.matches) {\r\n\t\texpandActiveMenuItems();\r\n\t}\r\n}\r\n\r\n/**\r\n * Opens the _sub-menu_ by setting appropriate aria-labels & focuses the first element inside\r\n * in such exists\r\n * @param {FocusEvent} e\r\n * @triggered div.c-nav-item~e:focusin\r\n */\r\nexport const openSubMenu = (e) => {\r\n\tconst subMenuContainer = e.currentTarget;\r\n\tconst subMenuButton = subMenuContainer.querySelector(\".c-nav-item__button\");\r\n\tconst subMenu = subMenuContainer.querySelector(\".c-nav__submenu-container\");\r\n\tsubMenuButton.setAttribute(\"aria-expanded\", \"true\");\r\n\tsubMenu.setAttribute(\"aria-hidden\", \"false\");\r\n\r\n\tconst subMenuItems = subMenu.querySelectorAll(\".c-nav__submenu-item > a\");\r\n\tconst firstSubMenuItem = subMenuItems.length ? subMenuItems[0] : null;\r\n\r\n\tconst targetIsButton = e.target === subMenuButton;\r\n\r\n\tif (targetIsButton && firstSubMenuItem) {\r\n\t\tfirstSubMenuItem.focus();\r\n\t}\r\n};\r\n\r\n/**\r\n * Closes the _sub-menu_ if navigating to the other _sub-menu_\r\n * @param {FocusEvent} e\r\n * @triggered div.c-nav-item~e:focusout\r\n */\r\nexport const closeSubMenu = (e) => {\r\n\tconst subMenuContainer = e.currentTarget;\r\n\t// Only close the menu if the element about to be focused is not inside the submenu\r\n\tif (!isTouch) {\r\n\t\tconst relatedTargetIsInsideSubMenu =\r\n\t\t\te.relatedTarget !== null ? subMenuContainer.contains(e.relatedTarget) : false;\r\n\t\tif (!relatedTargetIsInsideSubMenu || e.relatedTarget === null) {\r\n\t\t\tcloseSubMenuByElem(subMenuContainer);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n/**\r\n * Finds the opened _sub-menu_ and closes it\r\n */\r\nexport const closeOpenSubMenu = () => {\r\n\tconst openMenuButton = document.querySelector(\".c-nav-item__button[aria-expanded='true']\");\r\n\tconst openSubMenuContainer = openMenuButton ? openMenuButton.closest(\".c-nav-item--has-sub-menu\") : null;\r\n\tif (openSubMenuContainer) {\r\n\t\tcloseSubMenuByElem(openSubMenuContainer);\r\n\t}\r\n}\r\n\r\n/**\r\n * Closes the _sub-menu_ contained within _subMenuContainer_ via setting the appropriate aria-labels.\r\n * The aria labels affect the CSS and thus the sub-menu closes\r\n * @param {HTMLDivElement} subMenuContainer `div.c-nav-item`, which contains the _button_ (`.c-nav-item__button`)\r\n * and the _sub-menu container_ with its elements (`.c-nav__submenu-container`)\r\n */\r\nexport const closeSubMenuByElem = (subMenuContainer) => {\r\n\tconst subMenuButton = subMenuContainer.querySelector(\".c-nav-item__button\");\r\n\tconst subMenu = subMenuContainer.querySelector(\".c-nav__submenu-container\");\r\n\tsubMenuButton.setAttribute(\"aria-expanded\", \"false\");\r\n\tsubMenu.setAttribute(\"aria-hidden\", \"true\");\r\n}\r\n\r\n/**\r\n * Finds first focusable element inside the _siblingElem_ (`div.c-nav-item`) and focuses it\r\n * @param {KeyboardEvent} e keyboard event coming from the {@link handleKeyEventsInSubMenu} function\r\n * @param {HTMLDivElement} siblingElem `div.c-nav-item`, which contains the _button_ (`.c-nav-item__button`)\r\n * and the _sub-menu container_ with its elements (`.c-nav__submenu-container`)\r\n */\r\nexport const navigateToSibling = (siblingElem, e) => {\r\n\tif (siblingElem) {\r\n\t\te.preventDefault();\r\n\t\tconst siblingFocalElem = siblingElem.querySelector(\".c-nav-item__button, .c-nav-item__link\");\r\n\t\tsiblingFocalElem.focus();\r\n\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\n/**\r\n * Handles closing/opening the sub-menus when navigating with 'Tab' and 'arrow keys'\r\n * @param {KeyboardEvent} e\r\n * @triggered div.c-nav-item~e:keydown\r\n */\r\nexport const handleKeyEventsInSubMenu = (e) => {\r\n\tconst subMenuContainer = e.currentTarget;\r\n\tconst isTab = e.key === \"Tab\";\r\n\tconst forwardTab = isTab && !e.shiftKey;\r\n\tconst backwardTab = isTab && e.shiftKey;\r\n\r\n\tconst isArrowDown = e.key === \"ArrowDown\";\r\n\tconst isArrowUp = e.key === \"ArrowUp\";\r\n\r\n\tif (isArrowDown || isArrowUp) {\r\n\t\tconst links = Array.from(subMenuContainer.querySelectorAll(\".c-nav__submenu a\"));\r\n\t\tconst currentIndex = links.indexOf(e.target);\r\n\r\n\t\tif (isArrowDown) {\r\n\t\t\te.preventDefault();\r\n\t\t\tlinks[(currentIndex + 1) % links.length].focus();\r\n\t\t}\r\n\r\n\t\tif (isArrowUp) {\r\n\t\t\tlinks[(currentIndex + links.length - 1) % links.length].focus();\r\n\t\t}\r\n\t}\r\n\r\n\tif (forwardTab) {\r\n\t\tnavigateToSibling(subMenuContainer.nextElementSibling, e);\r\n\t}\r\n\r\n\tif (backwardTab) {\r\n\t\tconst tabbed = navigateToSibling(subMenuContainer.previousElementSibling, e);\r\n\t\tif (!tabbed) {\r\n\t\t\t// Can't navigate back, must be at the start of the menu\r\n\t\t\te.preventDefault();\r\n\t\t\tconst logoLink = document.querySelector(\".c-nav-logo__link\");\r\n\t\t\tif (logoLink) {\r\n\t\t\t\tlogoLink.focus();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n/**\r\n * Dynamically sets proper aria-labels values for mobile navigation hamburger button\r\n * @triggered f:attachMobileToggleBehaviour -> button.c-nav-mobile~e:click\r\n */\r\nconst adjustHamburgerButtonAriaLabel = (isOpen = true) => {\r\n\tconst hamburgerButton = document.querySelector('button.c-nav-mobile');\r\n\tif (!hamburgerButton) return;\r\n\r\n\tconst ariaLabel = isOpen ? hamburgerButton.dataset['ariaCloseLabel'] : hamburgerButton.dataset['ariaOpenLabel'];\r\n\r\n\thamburgerButton.setAttribute('aria-label', ariaLabel);\r\n\thamburgerButton.setAttribute('aria-expanded', isOpen ? 'true' : 'false');\r\n};\r\n\r\n/**\r\n * Attaches toggle main-nav behavior to hamburger button\r\n * @listens button.c-nav-mobile~e:click\r\n * @triggered {@link initInlineStacking}\r\n */\r\nexport const attachMobileToggleBehaviour = () => {\r\n\tconst toggle = document.querySelector(\".c-nav-mobile\");\r\n\r\n\ttoggle.addEventListener('click', toggleNavMobile);\r\n};\r\n\r\n/**\r\n * Toggles main-nav via toggling the .nav-open class on the documents' root elem\r\n * @fires {@link adjustHamburgerButtonAriaLabel}\r\n * @triggered f:{@link attachMobileToggleBehaviour} -> .c-nav-mobile~e:click\r\n */\r\nfunction toggleNavMobile() {\r\n\tconst navOpened = document.documentElement.classList.toggle('nav-open');\r\n\tadjustHamburgerButtonAriaLabel(navOpened);\r\n\r\n\tif (navOpened) {\r\n\t\t// It should happen only once, on initial open\r\n\t\tif (allHeaderFocusableEls == null) {\r\n\t\t\tallHeaderFocusableEls = Array.from(\r\n\t\t\t\theader.querySelectorAll(\r\n\t\t\t\t\t`button:not([tabindex=\"-1\"]):not([aria-hidden]),\r\n\t\t\t\t\tinput:not([tabindex=\"-1\"]):not([aria-hidden]),\r\n\t\t\t\t\ta:not([tabindex=\"-1\"]):not([aria-hidden]),\r\n\t\t\t\t\t[tabindex=\"0\"]`\r\n\t\t\t\t)\r\n\t\t\t).filter((el) => el.offsetParent != null);\r\n\r\n\t\t\theaderFirstFocusableEl = allHeaderFocusableEls[0];\r\n\t\t\theaderLastFocusableEl = allHeaderFocusableEls.at(-1);\r\n\t\t}\r\n\r\n\t\theader?.addEventListener('keydown', handleHeaderKeydown);\r\n\t\theaderFirstFocusableEl?.addEventListener('keydown', preventFocusGoingOutsideBackward);\r\n\t} else {\r\n\t\theader?.removeEventListener('keydown', handleHeaderKeydown);\r\n\t\theaderFirstFocusableEl?.removeEventListener('keydown', preventFocusGoingOutsideBackward);\r\n\t}\r\n}\r\n\r\n/**\r\n * Adds aria-labels for the main-menu dropdown-buttons & corresponding sub-menu containers\r\n * @triggered f:{@link attachObservers}\r\n */\r\nexport const attachAriaAttributes = () => {\r\n\tconst subMenus = document.querySelectorAll(\".c-nav-item--has-sub-menu > .c-nav__submenu-container\");\r\n\tsubMenus.forEach(subMenu => {\r\n\t\t// Set aria attribute for sub-menu\r\n\t\tsubMenu.setAttribute(\"aria-hidden\", \"true\");\r\n\t});\r\n\tconst dropdownButtons = document.querySelectorAll(\".c-nav-item__button\");\r\n\tdropdownButtons.forEach(button => {\r\n\t\t// Set aria attributes for sub-menu button\r\n\t\tbutton.setAttribute(\"aria-haspopup\", \"true\");\r\n\t\tbutton.setAttribute(\"aria-expanded\", \"false\");\r\n\t});\r\n};\r\n\r\n/**\r\n * Checks if the \"next active element\" is inside the header, and in case it isn't,\r\n * it brings it back to the first focusable element of the header\r\n * @triggered f:{@link toggleNavMobile} -> header.c-nav~e:keydown\r\n */\r\nfunction trapFocusInsideHeader() {\r\n\tsetTimeout(() => {\r\n\t\tif (!header.contains(document.activeElement)) {\r\n\t\t\theaderFirstFocusableEl.focus();\r\n\t\t}\r\n\t}, 0);\r\n}\r\n\r\n/**\r\n * If pressed key is \"Escape\", it closes the main nav\r\n * @triggered f:{@link handleHeaderKeydown} - handler for the keydown event, which is attached to the opened header\r\n */\r\nfunction attachEscClose(e) {\r\n\tif (e.key == 'Escape') {\r\n\t\ttoggleNavMobile();\r\n\t}\r\n}\r\n\r\n/**\r\n * When \"navigating backwards\" with Tab + Shift key, prevent focus to go outside the header\r\n * @triggered f:{@link toggleNavMobile} -> header <first-focusable-element>~e:keydown\r\n */\r\nfunction preventFocusGoingOutsideBackward(e) {\r\n\tif (e.key == 'Tab' && e.shiftKey) {\r\n\t\te.preventDefault();\r\n\t\theaderLastFocusableEl.focus();\r\n\t}\r\n}\r\n\r\nfunction handleHeaderKeydown(e) {\r\n\ttrapFocusInsideHeader();\r\n\tattachEscClose(e);\r\n}\r\n\r\nexport default initInlineStacking;\r\n","import { throttle } from \"lodash\";\r\n\r\nconst THRESHOLD = 30;\r\nconst SCROLL_DIFFERENCE_THRESHOLD = 2;\r\nconst MEDIA_QUERY = '(min-width: 768px)';\r\nconst HEADER_CLASS_SELECTOR = 'header.c-nav';\r\nconst HEADER_FIXED_CLASS = 'header--fixed-stack';\r\nconst FIXED_NAV_CLASS = 'fixed-nav';\r\n\r\nlet headerElement = null;\r\nlet lastScrollPosition = 0;\r\nlet mediaQueryList = null;\r\n\r\n// apply the `fixed-nav` class when the nav is in sticky mode\r\nexport const stickyObserverFunction = ([entry]) => entry.target.classList.toggle(FIXED_NAV_CLASS, entry.intersectionRatio < 1)\r\n\r\nfunction updateHeaderOnScroll() {\r\n    const scrollY = window.scrollY;\r\n\r\n    const scrollDifference = scrollY - lastScrollPosition;\r\n\r\n    if (scrollDifference > SCROLL_DIFFERENCE_THRESHOLD) {\r\n        requestAnimationFrame(() => headerElement.classList.remove(HEADER_FIXED_CLASS));\r\n    } else if (scrollDifference < -THRESHOLD) {\r\n        requestAnimationFrame(() => headerElement.classList.add(HEADER_FIXED_CLASS));\r\n    }\r\n\r\n    lastScrollPosition = scrollY;\r\n}\r\n\r\nexport const detectShowHideNavItems = () => {\r\n    if (mediaQueryList.matches) {\r\n        updateHeaderOnScroll();\r\n    }\r\n}\r\n\r\nexport const initStickyMenu = (element) => {\r\n    if (!element) {\r\n        console.error('initStickyMenu requires a valid element');\r\n        return;\r\n    }\r\n\r\n    mediaQueryList = window.matchMedia(MEDIA_QUERY);\r\n    headerElement = document.querySelector(HEADER_CLASS_SELECTOR);\r\n\r\n    if (!headerElement) {\r\n        console.error(`Header element not found with selector: ${HEADER_CLASS_SELECTOR}`);\r\n        return;\r\n    }\r\n\r\n    window.addEventListener(\"scroll\", throttle(detectShowHideNavItems, 100));\r\n\r\n    const stickyObserver = new IntersectionObserver(\r\n        stickyObserverFunction,\r\n        { threshold: [1] }\r\n    );\r\n\r\n    stickyObserver.observe(headerElement);\r\n};\r\n\r\nexport default initStickyMenu;\r\n","import { initInlineStacking } from \"./inlineStackingMenu\";\r\nimport { initStickyMenu } from \"./stickyMenu\";\r\n\r\nexport const initNavDomReady = (menuElem) => {\r\n\tif (menuElem) {\r\n\t\tif (menuElem.dataset.sticky === \"true\") {\r\n\t\t\tinitStickyMenu(menuElem);\r\n\t\t}\r\n\t\tinitInlineStacking();\r\n\t}\r\n};\r\n\r\nexport const initNav = (fn = initNavDomReady) => {\r\n\t// If the header is already present then execute the code immediately, else we'll wait until the DOM is fully loaded\r\n\tconst headerElem = document.querySelector(\"header.c-nav\");\r\n\tconst menuElem = document.querySelector(\".c-nav-menu\");\r\n\tif (headerElem && menuElem) {\r\n\t\tfn(menuElem);\r\n\t} else {\r\n\t\twindow.addEventListener(\"DOMContentLoaded\", () => fn(menuElem));\r\n\t}\r\n};\r\n\r\nexport default initNav;\r\n","<script setup lang=\"ts\">\r\nimport { GlobalSettings } from 'shared/types/globalSettings';\r\nimport { useStore } from 'vuex';\r\n\r\ninterface Props {\r\n\tglobalSettings: {\r\n\t\tBaseViewModel: GlobalSettings;\r\n\t}\r\n}\r\n\r\nconst props = defineProps<Props>();\r\n\r\nconst store = useStore();\r\nstore.commit('setGlobalSettings', props.globalSettings.BaseViewModel);\r\n</script>\r\n\r\n<template>\r\n\t<div></div>\r\n</template>\r\n","<template>\r\n\t<DsText\r\n\t\tv-if=\"count > 0\"\r\n\t\tclass=\"c-nav-basket__count\"\r\n\t\thtml-element=\"span\"\r\n\t\ttext-type=\"body-xs\"\r\n\t\ttext-style=\"bold\"\r\n\t\taria-hidden=\"true\">\r\n\t\t{{count}}\r\n\t</DsText>\r\n</template>\r\n<script>\r\n\timport { mapGetters } from 'vuex';\r\n\timport { DsText } from '@coloplast/design-system';\r\n\r\n\texport default {\r\n\t\tprops: {\r\n\t\t\tbasketCount: {\r\n\t\t\t\tdefault: 0\r\n\t\t\t}\r\n\t\t},\r\n\t\tcomponents: {\r\n\t\t\tDsText\r\n\t\t},\r\n\t\tcomputed: {\r\n\t\t\t...mapGetters({\r\n\t\t\t\tnumberOfBasketItems: 'getBasketItemCount',\r\n\t\t\t}),\r\n\t\t\tcount() {\r\n\t\t\t\tif (this.numberOfBasketItems == 0) {\r\n\t\t\t\t\treturn this.basketItemCount;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn this.numberOfBasketItems;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\tbasketItemCount: this.basketCount\r\n\t\t\t}\r\n\t\t},\r\n\t\tmounted() {\r\n\t\t\tthis.$eventBus.$on('itemsAddedToTheBasket', (result) => {\r\n\t\t\t\tthis.basketItemCount = result.basketItemCount;\r\n\t\t\t});\r\n\t\t},\r\n\t\twatch: {\r\n\t\t\tnumberOfBasketItems(newValue) {\r\n\t\t\t\tthis.basketItemCount = newValue;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n","<template>\r\n    <button class=\"e-button e-button--tiny -new c-sample-button\" data-btn @click=\"addToBasket\" :data-js-apiurl=\"'/api/quicksample/addproductsamples?language=' + culture\" ref=\"button\">\r\n        <span>{{ btnLabel }}</span>\r\n    </button>\r\n</template>\r\n\r\n<script>\r\nimport { sampleCatalogContent } from 'oneblock/assets/js/oneblock-widgets.mjs';\r\nimport { mapGetters } from 'vuex';\r\n\r\nexport default {\r\n    props: {\r\n        ids: {\r\n            type: String,\r\n            required: true,\r\n        },\r\n        btnLabel: {\r\n            type: String,\r\n            required: true,\r\n        },\r\n    },\r\n    data() {\r\n        return {\r\n            sampleIds: this.ids.split(';'),\r\n        };\r\n    },\r\n    methods: {\r\n        async addToBasket() {\r\n            sampleCatalogContent(null, this.$refs.button, this.ids);\r\n        }\r\n    },\r\n    computed: {\r\n        ...mapGetters({\r\n            culture: 'getCulture',\r\n        }),\r\n    }\r\n}\r\n</script>\r\n","<template>\r\n\t<div\r\n\t\t class=\"c-modal__mask\"\r\n\t\t ref=\"externalLinkPopup\"\r\n\t\t id=\"external-link-popup\"\r\n\t\t v-show=\"show\"\r\n\t\t @click=\"toggle(false)\"\r\n\t\t @kedown.enter=\"toggle(false)\"\r\n\t\t @keydown.escape=\"toggle(false)\"\r\n\t\t >\r\n\t\t<div class=\"c-modal__content-wrapper\" :tabindex=\"show ? 1 : -1\" @click.stop>\r\n\t\t\t<h2 v-html=\"popup?.HeadlineText\"></h2>\r\n\t\t\t<div v-html=\"popup?.MessageText\"></div>\r\n\t\t\t<div class=\"c-modal-buttonsbox\">\r\n\t\t\t\t<button class=\"e-button e-button--filled small\" @click=\"toggle(false)\" @keydown.enter=\"toggle(false)\">{{ popup?.StayOnThisPageButtonText }}</button>\r\n\t\t\t\t<a\r\n\t\t\t\t   class=\"clickable-link e-button e-button--filled small\"\r\n\t\t\t\t   :href=\"externalLink\"\r\n\t\t\t\t   :target=\"target\"\r\n\t\t\t\t   @click=\"toggle(false)\"\r\n\t\t\t\t   @keydown.enter=\"toggle(false)\"\r\n\t\t\t\t   >\r\n\t\t\t\t{{ popup?.OkButtonText }}\r\n\t\t\t\t</a>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n\tprops: {\r\n\t\ttrigger: {\r\n\t\t\ttype: String,\r\n\t\t\trequired: true,\r\n\t\t},\r\n\t\texternalLinkPopup: {\r\n\t\t\ttype: Object\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tshow: false,\r\n\t\t\tpopup: this.externalLinkPopup?.BaseViewModel,\r\n\t\t\texternalLink: '',\r\n\t\t\ttarget: ''\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\ttoggle(show) {\r\n\t\t\tthis.show = show;\r\n\t\t},\r\n\t\tisInWhiteList(url) {\r\n\t\t\tconst urlToCompare = new URL(url).hostname.replace('www.', '');\r\n\t\t\treturn this.popup.DomainWhitelist.some(domain => domain.indexOf(urlToCompare) != -1);\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tdocument.addEventListener(this.trigger, (e) => {\r\n\t\t\tconst target = e.target.activeElement.getAttribute('target')\r\n\t\t\tthis.target = target || '_self';\r\n\r\n\t\t\tif (this.popup.DomainWhitelist && this.popup.DomainWhitelist.length && this.isInWhiteList(e.detail)) {\r\n\t\t\t\twindow.location.assign(e.detail);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.show = true;\r\n\t\t\t\tthis.externalLink = e.detail;\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n}\r\n</script>\r\n","<template>\r\n\t<genericModal\r\n\t\t:modal-data=\"modalData\"\r\n\t\t@close-modal=\"emits('close')\">\r\n\t\t<template v-slot:header>\r\n\t\t\t<DsText\r\n\t\t\t\t:id=\"formatDialogId(modalData.dataName, 'label')\"\r\n\t\t\t\tclass=\"c-variant-review-quantity-modal__heading\"\r\n\t\t\t\thtml-element=\"h2\"\r\n\t\t\t\ttext-type=\"heading-2xl\"\r\n\t\t\t\ttext-style=\"bold\"\r\n\t\t\t\tdata-testid=\"prescription-modal--heading\"\r\n\t\t\t>{{ modalLabels.consentHeadlineText }}</DsText>\r\n\t\t</template>\r\n\r\n\t\t<template v-slot:body>\r\n\t\t\t<DsText\r\n\t\t\t\thtml-element=\"div\"\r\n\t\t\t\ttext-type=\"body-lg\">\r\n\t\t\t\t<div\r\n\t\t\t\t\t:id=\"formatDialogId(modalData.dataName, 'desc')\"\r\n\t\t\t\t\tclass=\"c-variant-review-quantity-modal__body\"\r\n\t\t\t\t\tdata-testid=\"prescription-modal--intro\"\r\n\t\t\t\t\tv-html=\"modalLabels.consentIntroText\" />\r\n\t\t\t</DsText>\r\n\t\t\t<div class=\"c-variant-review-quantity-modal__checkbox\">\r\n\t\t\t\t<input\r\n\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\tid=\"confirmPrescription\"\r\n\t\t\t\t\tname=\"confirmPrescription\"\r\n\t\t\t\t\tv-model=\"consentsState.prescriptionConsentAccepted\"\r\n\t\t\t\t/>\r\n\t\t\t\t<DsText\r\n\t\t\t\t\thtml-element=\"label\"\r\n\t\t\t\t\tdata-testid=\"prescription-modal--consent-checkbox\"\r\n\t\t\t\t\tfor=\"confirmPrescription\">{{ modalLabels.consentCheckBoxText }}</DsText>\r\n\t\t\t</div>\r\n\t\t</template>\r\n\r\n\t\t<template v-slot:footer>\r\n\t\t\t<DsButtonGroup>\r\n\t\t\t\t<DsButton\r\n\t\t\t\t\t@click.prevent=\"emits('cancel')\"\r\n\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\tdata-testid=\"prescription-modal--cancel\"\r\n\t\t\t\t\tvariant=\"ghost\">{{ modalLabels.consentCancelButtonText }}</DsButton>\r\n\t\t\t\t<DsButton\r\n\t\t\t\t\t:aria-label=\"setFormatAriaLabel('modalLabels.consentSubmitButtonText')\"\r\n\t\t\t\t\t:disabled=\"!consentsState.prescriptionConsentAccepted\"\r\n\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\tvariant=\"primary\"\r\n\t\t\t\t\t@click.prevent=\"emits('continue')\"\r\n\t\t\t\t\tdata-testid=\"prescription-modal--submit\"\r\n\t\t\t\t\tsize=\"md\">{{ modalLabels.consentSubmitButtonText }}</DsButton>\r\n\t\t\t</DsButtonGroup>\r\n\t\t</template>\r\n\t</genericModal>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { DsButton, DsButtonGroup, DsText } from '@coloplast/design-system';\r\nimport { formatAriaLabel, formatDialogId } from \"../../../shared/services/ariaReferenceService\";\r\nimport genericModal from '../../../shared/components/generic-modal/genericModal.vue';\r\n\r\ndefineProps(['modalData', 'modalLabels', 'consentsState']);\r\nconst emits = defineEmits(['close', 'cancel', 'continue']);\r\n\r\nconst setFormatAriaLabel = (str = 'submit') => {\r\n\treturn formatAriaLabel(str);\r\n}\r\n\r\n</script>\r\n","<template>\r\n\t<div\r\n\t\tclass=\"c-modal__mask c-modal__mask--grey\"\r\n\t\tv-if=\"modalState\"\r\n\t>\r\n\t\t<div\r\n\t\t\tclass=\"c-modal__wrapper c-modal__wrapper--form-signup\"\r\n\t\t\t:tabindex=\"tabindex\"\r\n\t\t\tdata-testid=\"consents-modal\"\r\n\t\t>\r\n\t\t\t<div class=\"c-modal__container\" v-if=\"vm\">\r\n\t\t\t\t<DsIconButton\r\n\t\t\t\t\t@click=\"close\"\r\n\t\t\t\t\t@keydown.enter.prevent=\"close\"\r\n\t\t\t\t\t:tabindex=\"tabindex\"\r\n\t\t\t\t\tclass=\"c-modal__close--from-ds-icon-button\"\r\n  \t\t\t\t  \taria-label=\"Close button\"\r\n  \t\t\t\t  \ticon-name=\"close\"\r\n  \t\t\t\t  \tvariant=\"tertiary\"\r\n\t\t\t\t\tdata-testid=\"close-button\"\r\n  \t\t\t\t/>\r\n\t\t\t\t<DsText\r\n\t\t\t\t\tv-if=\"vm.Headline\"\r\n\t\t\t\t\tv-text=\"vm.Headline\"\r\n\t\t\t\t\thtml-element=\"h2\"\r\n\t\t\t\t\ttext-type=\"heading-2xl\"\r\n\t\t\t\t\ttext-style=\"bold\"\r\n\t\t\t\t\tdata-testid=\"consents-modal__headline\"\r\n\t\t\t\t\tclass=\"consents-modal__headline\">\r\n\t\t\t\t</DsText>\r\n\t\t\t\t<DsText\r\n\t\t\t\t\tv-if=\"vm.DescriptionText\"\r\n\t\t\t\t\thtml-element=\"div\"\r\n\t\t\t\t\ttext-type=\"body-lg\"\r\n\t\t\t\t\tdata-testid=\"consents-modal__description\">\r\n\t\t\t\t\t<div v-html=\"vm.DescriptionText\" />\r\n\t\t\t\t</DsText>\r\n\t\t\t\t<DsText\r\n\t\t\t\t\tv-if=\"vm.SelectorHeadline\"\r\n\t\t\t\t\thtml-element=\"h3\"\r\n\t\t\t\t\ttext-type=\"heading-1xl\"\r\n\t\t\t\t\ttext-style=\"bold\"\r\n\t\t\t\t\tdata-testid=\"consents-modal__selector-headline\">\r\n\t\t\t\t\t<div v-html=\"vm.SelectorHeadline\" />\r\n\t\t\t\t</DsText>\r\n\t\t\t\t<ul class=\"c-modal__sample-options\">\r\n\t\t\t\t<li class=\"box\" v-for=\"(option, index) in consentOptions\" :key=\"option.id\">\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\tv-model=\"modalChoice\"\r\n\t\t\t\t\t\ttype=\"radio\"\r\n\t\t\t\t\t\tname=\"address\"\r\n\t\t\t\t\t\t:id=\"option.id\"\r\n\t\t\t\t\t\t:value=\"index\"\r\n\t\t\t\t\t\t:data-testid=\"option.testId\"\r\n\t\t\t\t\t\t:index=\"index\"\r\n\t\t\t\t\t\tclass=\"sample-option__radio\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t<label :for=\"option.id\" :role=\"option.id\" class=\"sample-option__label\">\r\n\t\t\t\t\t\t<span>{{ option.text }}</span>\r\n\t\t\t\t\t\t<div v-if=\"index === 1\" v-html=\"redirectionHint\"></div>\r\n\t\t\t\t\t\t<div v-if=\"index === 2\" v-html=\"hcpOnBehalfRedirectionHint\"></div>\r\n\t\t\t\t\t</label>\r\n\t\t\t\t</li>\r\n\t\t\t\t</ul>\r\n\r\n\t\t\t\t<DsButtonGroup desktopAlignment=\"left\" desktop-direction=\"column\">\r\n\t\t\t\t\t<div v-if=\"proceedWithoutRegistering\">\r\n\t\t\t\t\t\t<slot name=\"proceed\"></slot>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<DsButton\r\n\t\t\t\t\t\t\t  v-if=\"modalChoice === 0 && !proceedWithoutRegistering\"\r\n\t\t\t\t\t\t\t  @click.prevent=\"trackLoginChoice()\"\r\n\t\t\t\t\t\t\t  @keydown.enter.prevent=\"trackLoginChoice()\"\r\n\t\t\t\t\t\t\t  :tabindex=\"tabindex\"\r\n\t\t\t\t\t\t\t  variant=\"primary\"\r\n\t\t\t\t\t\t\t  style=\"margin-bottom: 0;\"\r\n\t\t\t\t\t\t\t  data-testid=\"consents-modal__add-to-basket-test\">\r\n\t\t\t\t\t\t{{ vm.AddToBasketButtonLabel }}\r\n\t\t\t\t\t</DsButton>\r\n\r\n\t\t\t\t\t<DsButton\r\n\t\t\t\t\t\t\t  v-if=\"modalChoice === 1 && redirectPageUrl && vm.RedirectButtonLabel\"\r\n\t\t\t\t\t\t\t  @click.prevent=\"trackLoginChoice()\"\r\n\t\t\t\t\t\t\t  @keydown.enter.prevent=\"trackLoginChoice()\"\r\n\t\t\t\t\t\t\t  :tabindex=\"tabindex\"\r\n\t\t\t\t\t\t\t  variant=\"primary\"\r\n\t\t\t\t\t\t\t  data-testid=\"consents-modal__redirect-test\">\r\n\t\t\t\t\t\t{{ vm.RedirectButtonLabel }}\r\n\t\t\t\t\t</DsButton>\r\n\r\n\t\t\t\t\t<!--Hcp on behalf of patient-->\r\n\t\t\t\t\t<DsButton v-if=\"modalChoice === 2 && hcpOnBehalfUrl && vm.HcpBehalfRedirectButtonLabel\"\r\n\t\t\t\t\t\t\t  @click.prevent=\"trackLoginChoice()\"\r\n\t\t\t\t\t\t\t  @keydown.enter.prevent=\"trackLoginChoice()\"\r\n\t\t\t\t\t\t\t  :tabindex=\"tabindex\"\r\n\t\t\t\t\t\t\t  variant=\"primary\"\r\n\t\t\t\t\t\t\t  data-testid=\"consents-modal__behalf-test\">\r\n\t\t\t\t\t\t{{ vm.HcpBehalfRedirectButtonLabel }}\r\n\t\t\t\t\t</DsButton>\r\n\t\t\t\t</DsButtonGroup>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script setup>\r\n\timport { ref, watch, onMounted } from 'vue';\r\n\timport { DsButton, DsIconButton, DsButtonGroup, DsText } from \"@coloplast/design-system\";\r\n\timport { track_dual_checkout_choice } from 'shared/services/tracking/formTrackingService';\r\n\r\n\tconst\r\n\t\tmodalRole = {\r\n\t\t\tCONSUMER: \"consumer\",\r\n\t\t\tHCP: \"hcp\",\r\n\t\t\tHcpOnBehalfPatient: \"hcp on behalf a patient\"\r\n\t\t},\r\n\t\tMODAL_ACTION_DISCONTINUE = \"discontinue\";\r\n\r\n\tconst emit = defineEmits([\"discontinue\", \"consumer\", \"hcp\"]);\r\n\r\n\tconst props = defineProps({\r\n\t\tvm: {\r\n\t\t\ttype: Object\r\n\t\t},\r\n\t\ttabindex: {\r\n\t\t\ttype: Number,\r\n\t\t\tdefault: 0\r\n\t\t},\r\n\t\tshow: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false\r\n\t\t},\r\n\t\tproceedWithoutRegistering: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false\r\n\t\t},\r\n\t\tshowHcpOptionFirst: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false\r\n\t\t},\r\n\t\tredirectPageUrl: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: ''\r\n\t\t},\r\n\t\tenableHcpOnBehalfOption: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false\r\n\t\t},\r\n\t\thcpOnBehalfUrl: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: null,\r\n\t\t}\r\n\t}),\r\n\t\tmodalState = ref(props.show),\r\n\t\tsampleOptionChecked = ref(false),\r\n\t\tmodalChoice = ref(null),\r\n\t\tconsentOptions = ref([]),\r\n\t\tconsentOrderNames = ref([]),\r\n\t\tredirectionHint = ref(props?.vm?.RedirectOptionSupportingText),\r\n\t\thcpOnBehalfRedirectionHint = ref(props?.vm?.HcpBehalfRedirectOptionSupportingText);\r\n\r\n\tfunction trackLoginChoice() {\r\n\t\tif (modalChoice.value === null) return;\r\n\r\n\t\tconst consentTrackingRoles = (props.showHcpOptionFirst)\r\n\t\t\t? [modalRole.HCP, modalRole.CONSUMER, modalRole.HcpOnBehalfPatient]\r\n\t\t\t: [modalRole.CONSUMER, modalRole.HCP, modalRole.HcpOnBehalfPatient];\r\n\t\tconst consentTrackingRole = consentTrackingRoles[modalChoice.value]\r\n\r\n\t\ttrack_dual_checkout_choice(consentTrackingRole);\r\n\t\tmodalState.value = false;\r\n\t\tif (modalChoice.value != 2) {\r\n\t\t\temit(consentTrackingRole);\r\n\t\t}\r\n\t\telse {\r\n\t\t\twindow.location.href = props.hcpOnBehalfUrl;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction close() {\r\n\t\tmodalState.value = false;\r\n\t\temit(MODAL_ACTION_DISCONTINUE);\r\n\t}\r\n\r\n\twatch(() => props.vm, () => {\r\n\t\tmodalState.value = props.show;\r\n\t}, { deep: true });\r\n\r\n\tonMounted(() => {\r\n\t\tconst hcpOption = {\r\n\t\t\tid: modalRole.HCP,\r\n\t\t\ttext: props.vm?.HcpOptionText,\r\n\t\t\ttestId: `consents-modal__${modalRole.HCP}`\r\n\t\t};\r\n\t\tconst consumerOption = {\r\n\t\t\tid: modalRole.CONSUMER,\r\n\t\t\ttext: props.vm?.ConsumerOptionText,\r\n\t\t\ttestId: `consents-modal__${modalRole.CONSUMER}`\r\n\t\t};\r\n\r\n\t\tconst hcpOnBehalfOfPatient = {\r\n\t\t\tid: 'hcpOnBehalf',\r\n\t\t\ttext: props.vm?.HcpBehalfOptionText,\r\n\t\t\ttestId: 'consents-modal__hcpOnBehalf'\r\n\t\t}\r\n\r\n\t\tconsentOptions.value = (props.showHcpOptionFirst)\r\n\t\t\t? [hcpOption, consumerOption, hcpOnBehalfOfPatient]\r\n\t\t\t: [consumerOption, hcpOption, hcpOnBehalfOfPatient];\r\n        //if third option 'hcp on behalf of patient' is not enabled\r\n\t\tif (!props.enableHcpOnBehalfOption || !props.hcpOnBehalfUrl) {\r\n\t\t\tconsentOptions.value.splice(-1);\r\n\t\t}\r\n\t});\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../styles/settings/settings';\r\n@import '../../styles/tools/tools';\r\n\r\n\t.c-modal__wrapper {\r\n\t\t@include t-respond-to-min(medium) {\r\n\t\t\tpadding-left: ds-space(15);\r\n\t\t\tpadding-right: ds-space(15);\r\n\t\t}\r\n\r\n\t\t.c-modal__container {\r\n\t\t\t@include t-respond-to-min(medium) {\r\n\t\t\t\tmax-width: 100%;\r\n\t\t\t}\r\n\t\t\t.ds-text-body-lg {\r\n\t\t\t\tfont-size: t-rem(16px);\r\n\t\t\t}\r\n\r\n\t\t\th2 {\r\n\t\t\t\tcolor: #213D46;\r\n\t\t\t\tfont-size: t-rem(24px);\r\n\r\n\t\t\t\t@include t-respond-to-min(medium) {\r\n\t\t\t\t\tmargin-bottom: ds-space(10)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\th3 {\r\n\t\t\t\tcolor: #213D46;\r\n\t\t\t\tfont-size: t-rem(16px);\r\n\t\t\t\tmargin-top: ds-space(9);\r\n\t\t\t\tmargin-bottom: ds-space(5);\r\n\r\n\t\t\t\t@include t-respond-to-min(medium) {\r\n\t\t\t\t\tfont-size: t-rem(18px);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.c-modal__sample-options {\r\n\t\t\t\tpadding: 0;\r\n\r\n\t\t\t\tli {\r\n\t\t\t\t\tposition: relative;\r\n\t\t\t\t\tlist-style-type: none;\r\n\t\t\t\t\tpadding-left: ds-space(10);\r\n\t\t\t\t\tpadding-bottom: ds-space(5);\r\n\r\n\t\t\t\t\t.sample-option__radio {\r\n\t\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\t\tleft: -100px;\r\n\t\t\t\t\t\tdisplay: none;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.sample-option__label {\r\n\t\t\t\t\t\tfont-size: t-rem(16px);\r\n\t\t\t\t\t\tfont-weight: ds-font-weight(\"regular\");\r\n\r\n\t\t\t\t\t\tdiv {\r\n\t\t\t\t\t\t\tfont-size: t-rem(14px);\r\n\t\t\t\t\t\t\tmargin-top: ds-space(3);\r\n\t\t\t\t\t\t\tline-height: 1.8;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinput[type=radio]:checked+.sample-option__label {\r\n\t\t\t\t\t\t&:before {\r\n\t\t\t\t\t\t\theight: 12px;\r\n\t\t\t\t\t\t\twidth: 12px;\r\n\t\t\t\t\t\t\tbackground-color: var(--ds-color-bg-default);\r\n\t\t\t\t\t\t\tborder: 7px solid var(--ds-color-border-interactive);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tdiv {\r\n\t\t\t\t\t\t\tdisplay: block;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinput[type=radio]+.sample-option__label {\r\n\t\t\t\t\t\t&:before {\r\n\t\t\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\t\t\tdisplay: block;\r\n\t\t\t\t\t\t\theight: 24px;\r\n\t\t\t\t\t\t\twidth: 24px;\r\n\t\t\t\t\t\t\tborder-radius: 50%;\r\n\t\t\t\t\t\t\tborder: 1px solid var(--ds-color-border-strong);\r\n\t\t\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\t\t\ttop: 1px;\r\n\t\t\t\t\t\t\tleft: 1px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tdiv {\r\n\t\t\t\t\t\t\tdisplay: none\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</style>\r\n","import axios from 'shared/tools/axiosMultisite';\r\n\r\nconst GET_CONSENT_CONFIRMATION_API = '/api/sample-consent/consent';\r\nconst POST_CONSENT_CONFIRMATION_API = '/api/sample-consent/add-consent';\r\n\r\nexport const checkConsentConfirmation = async function checkConsentConfirmation(params) {\r\n\tconst {SampleConsentType, Language, Code} = params;\r\n\ttry {\r\n\t\treturn await axios.get(GET_CONSENT_CONFIRMATION_API, {\r\n\t\t\tparams: {\r\n\t\t\t\tSampleConsentType,\r\n\t\t\t\tLanguage,\r\n\t\t\t\tCode\r\n\t\t\t}\r\n\t\t})\r\n\t} catch (err) {\r\n\t\tconsole.error(err);\r\n\t}\r\n}\r\n\r\nexport const updateConsentConfirmation = async function updateConsentConfirmation(data) {\r\n\ttry {\r\n\t\treturn await axios.post(POST_CONSENT_CONFIRMATION_API, data)\r\n\t} catch (err) {\r\n\t\tconsole.error(err);\r\n\t}\r\n}\r\n\r\nconst ConsentConfirmationService = {\r\n\tupdateConsentConfirmation,\r\n\tcheckConsentConfirmation,\r\n};\r\n\r\nexport default ConsentConfirmationService;\r\n","<script setup>\r\n\timport {\r\n\t\tref,\r\n\t\tcomputed,\r\n\t\twatch,\r\n\t} from 'vue';\r\n\timport { DsText, DsButton, DsIconButton, DsButtonGroup } from \"@coloplast/design-system\";\r\n\timport Events from '../settings/events';\r\n\timport CheckoutModalLogin from 'multisite/components/checkout/checkoutModalLogin.vue';\r\n\timport PrescriptionModal from 'shared/components/product/prescriptionModal.vue';\r\n\timport SampleConsentModal from 'shared/components/product/sampleConsentModal.vue';\r\n\timport ConsentConfirmationService from 'shared/services/consentConfirmation.service';\r\n\timport { useStore } from 'vuex';\r\n\r\n\tconst\r\n\t\tshowModal = ref(true),\r\n\t\tvm = ref(null),\r\n\t\tconsentsState = ref({}),\r\n\t\tprescriptionModalData = ref(null),\r\n\t\tshowPrescriptionModal = ref(true),\r\n\t\tcustomerModel = ref(null);\r\n\r\n\tconst\r\n\t\tstore = useStore(),\r\n\t\tlanguage = computed(() => store.getters.getCulture);\r\n\r\n\tconst props = defineProps({\r\n\t\tmodalData: {\r\n\t\t\ttype: Object,\r\n\t\t\tdefault: () => { },\r\n\t\t},\r\n\t});\r\n\r\n\twatch(() => props.modalData, () => {\r\n\t\tsetVmModelForModal();\r\n\t\tshowModal.value = true;\r\n\t}, { deep: true });\r\n\r\n\tfunction toggleModal() {\r\n\t\tshowModal.value = !showModal.value;\r\n\t}\r\n\r\n\tfunction openFlyOutBasket() {\r\n\t\tconst openFlyoutBasket = new CustomEvent(Events.ACTIVATE_FLY_OUT_BASKET, {});\r\n\t\tdocument.dispatchEvent(openFlyoutBasket);\r\n\t\ttoggleModal();\r\n\t}\r\n\r\n\tfunction setVmModelForModal() {\r\n\t\tif (props.modalData?.modalType != 'ValidationError') {\r\n\t\t\tconst modalType = props.modalData.modalType;\r\n\t\t\t//transform json to model we need for checkout login modal\r\n\t\t\tif (modalType === 'AuthorizationRequired') {\r\n\t\t\t\tprescriptionModalData.value = null;\r\n\t\t\t\tcustomerModel.value = null;\r\n\t\t\t\tvm.value = \t{\r\n\t\t\t\t\tBaseViewModel: {\r\n\t\t\t\t\t\tAuthenticateModalViewModel: {\r\n\t\t\t\t\t\t\tIsHcpModal: props.modalData.isHcpModal,\r\n\t\t\t\t\t\t\tCurrentContent: setUpperCaseFirstLetter()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t//prescription modal model\r\n\t\t\tif (modalType === 'PrescriptionRequired') {\r\n\t\t\t\tvm.value = null;\r\n\t\t\t\tcustomerModel.value = null;\r\n\t\t\t\tgetPresciptionConsentState();\t\t\t\r\n\t\t\t}\r\n\t\t\t//hcp/consumer selection popup\r\n\t\t\tif (modalType === 'CustomerSelectionRequired') {\r\n\t\t\t\tcustomerModel.value = setUpperCaseFirstLetter();\r\n\t\t\t\tvm.value = null;\r\n\t\t\t\tprescriptionModalData.value = null;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvm.value = null;\r\n\t\t\tprescriptionModalData.value = null;\r\n\t\t\tcustomerModel.value = null;\r\n\t\t}\r\n\t}\r\n\tsetVmModelForModal();\r\n\r\n\tfunction setUpperCaseFirstLetter() {\r\n\t\treturn Object.assign(...Object.keys(props.modalData).map(key => ({ [key.charAt(0).toUpperCase() + key.slice(1)]: props.modalData[key] })));\r\n\t}\r\n\r\n\tfunction cancelPrescriptionModal() {\r\n\t\tshowPrescriptionModal.value = false;\r\n\t\tconsentsState.value.prescriptionConsentAccepted = false;\r\n\t}\r\n\r\n\tasync function addItemToBasket(updateConsent = true) {\r\n\t\tif (updateConsent) {\r\n\t\t\tawait updateConsentsState();\r\n\t\t}\r\n\t\tconst payload = {\r\n\t\t\tCode: props.modalData.parameter,\r\n\t\t\tIsCuttingServiceChecked: false,\r\n\t\t\tIsSample: true,\r\n\t\t\tLineItemSource: 0,\r\n\t\t\tQuantity: 1,\r\n\t\t\tTrackingParameters: {},\r\n\t\t}\r\n\r\n\t\tconst response = await store.dispatch('addItemToBasket', payload);\r\n\t\tif (response?.status === 200) {\r\n\t\t\topenFlyOutBasket();\r\n\t\t}\r\n\r\n\t\tshowPrescriptionModal.value = false;\r\n\t}\r\n\r\n\tasync function getConsentsState() {\r\n\t\tconst response = await ConsentConfirmationService.checkConsentConfirmation({\r\n\t\t\tLanguage: language.value,\r\n\t\t\tCode: props.modalData.parameter,\r\n\t\t});\r\n\r\n\t\tif (response?.data?.responseData?.sampleConsent) {\r\n\t\t\tconsentsState.value = response.data.responseData.sampleConsent\r\n\t\t}\r\n\t}\r\n\r\n\tasync function getPresciptionConsentState() {\r\n\t\tawait getConsentsState();\r\n\r\n\t\tif (consentsState.value.prescriptionConsentAccepted) {\r\n\t\t\taddItemToBasket(false);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tprescriptionModalData.value = {\r\n\t\t\t\tdataName: 'review-quantity',\r\n\t\t\t\ttabindex: 1\r\n\t\t\t}\r\n\t\t\tshowPrescriptionModal.value = true;\r\n\t\t}\r\n\t}\r\n\r\n\tasync function updateConsentsState() {\r\n\t\tawait ConsentConfirmationService.updateConsentConfirmation({\r\n\t\t\tCode: props.modalData.parameter,\r\n\t\t\tLanguage: language.value,\r\n\t\t\tSampleConsent: {\r\n\t\t\t\tHcpConsentAccepted: consentsState.value.hcpConsentAccepted,\r\n\t\t\t\tConsumerConsentAccepted: consentsState.value.consumerConsentAccepted,\r\n\t\t\t\tPrescriptionConsentAccepted: consentsState.value.prescriptionConsentAccepted\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tasync function handleConsumer() {\r\n\t\tawait getConsentsState();\r\n\r\n\t\tif (consentsState?.value) {\r\n\t\t\tconsentsState.value.consumerConsentAccepted = true;\r\n\t\t\tconsentsState.value.hcpConsentAccepted = false;\r\n\t\t}\r\n\r\n\t\tconst isRedirectionConfirmed = customerModel?.value?.ShowHcpOptionFirst;\r\n\t\tawait handleEventComplete(isRedirectionConfirmed);\r\n\t}\r\n\r\n\tasync function handleHcp() {\r\n\t\tawait getConsentsState();\r\n\r\n\t\tif (consentsState?.value) {\r\n\t\t\tconsentsState.value.consumerConsentAccepted = false;\r\n\t\t\tconsentsState.value.hcpConsentAccepted = true;\r\n\t\t}\r\n\r\n\t\tconst isRedirectionConfirmed = !customerModel?.value?.ShowHcpOptionFirst;\r\n\t\tawait handleEventComplete(isRedirectionConfirmed);\r\n\t}\r\n\r\n\tasync function handleEventComplete(isRedirectionConfirmed) {\r\n\t\tawait updateConsentsState();\r\n\t\tif (!customerModel.value.DontAddProductToBasket && !isRedirectionConfirmed) {\r\n\t\t\tawait addItemToBasket(false);\r\n\t\t}\r\n\r\n\t\tif (isRedirectionConfirmed && customerModel?.value?.RedirectPageUrl) {\r\n\t\t\twindow.location.assign(customerModel.value.RedirectPageUrl);\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<template>\r\n\t<div class=\"c-modal__mask c-modal__mask--grey\" @click=\"toggleModal()\" @kedown.enter=\"toggleModal()\" @keydown.escape=\"toggleModal()\" v-if=\"showModal && !vm && !prescriptionModalData && !customerModel\">\r\n\t\t<div class=\"c-modal__wrapper c-modal__wrapper--generic-modal c-modal__wrapper--samplingerrors\" :tabindex=\"showModal ? 1 : -1\" @click.stop>\r\n\t\t\t<div class=\"c-modal__closewrapper\">\r\n\t\t\t\t<DsIconButton variant=\"tertiary\" icon-name=\"close\" size=\"md\" :click-handler=\"() => { toggleModal() }\"></DsIconButton>\r\n\t\t\t</div>\r\n\t\t\t<DsText htmlElement=\"h2\" text-type=\"heading-2xl\" text-style=\"bold\" v-html=\"modalData.errorHeadline\"></DsText>\r\n\t\t\t<DsText htmlElement=\"div\" text-type=\"body-md\" text-style=\"regular\" v-html=\"modalData.errorMessage\"></DsText>\r\n\t\t\t<DsButtonGroup mobileDirection=\"column\" desktop-alignment=\"start\" desktop-direction=\"row\" class=\"popup__button-group\">\r\n\t\t\t\t<DsButton variant=\"primary\" v-if=\"!modalData.basketButtonText && modalData.closeButtonText\" :click-handler=\"() => { toggleModal() }\">{{ modalData.closeButtonText }}</DsButton>\r\n\t\t\t\t<template v-else>\r\n\t\t\t\t\t<DsButton variant=\"primary\" :click-handler=\"() => { openFlyOutBasket() }\" v-if=\"modalData.basketButtonText\">{{ modalData.basketButtonText }}</DsButton>\r\n\t\t\t\t\t<DsButton :click-handler=\"() => { toggleModal() }\" v-if=\"modalData.closeButtonText\" variant=\"link\">{{ modalData.closeButtonText }}</DsButton>\r\n\t\t\t\t</template>\r\n\t\t\t</DsButtonGroup>\r\n\t\t</div>\r\n\t</div>\r\n\t<CheckoutModalLogin v-if=\"vm\"\r\n\t\t\t\t\t\t:show=\"showModal\"\r\n\t\t\t\t\t\t:tabindex=\"3\"\r\n\t\t\t\t\t\t:vm=\"vm\"\r\n\t\t\t\t\t\t:signup-return-url=\"modalData.signUpUrl\"\r\n\t\t\t\t\t\t:signin-url-prop=\"modalData.signInUrl\">\r\n\t</CheckoutModalLogin>\r\n\t<PrescriptionModal v-if=\"prescriptionModalData && showPrescriptionModal\"\r\n\t\t\t\t\t   :modal-data=\"prescriptionModalData\"\r\n\t\t\t\t\t   :modal-labels=\"modalData\"\r\n\t\t\t\t\t   :consents-state=\"consentsState\"\r\n\t\t\t\t\t   @close=\"showPrescriptionModal = !showPrescriptionModal\"\r\n\t\t\t\t\t   @cancel=\"cancelPrescriptionModal()\"\r\n\t\t\t\t\t   @continue=\"addItemToBasket()\">\r\n\t</PrescriptionModal>\r\n\t<SampleConsentModal v-if=\"customerModel\"\r\n\t\t\t\t\t\t:vm=\"customerModel\"\r\n\t\t\t\t\t\t:show=\"showModal\"\r\n\t\t\t\t\t\t:tabindex=\"3\"\r\n\t\t\t\t\t\t:redirect-page-url=\"customerModel.RedirectPageUrl\"\r\n\t\t\t\t\t\t:show-hcp-option-first=\"customerModel.ShowHcpOptionFirst\"\r\n\t\t\t\t\t\t@consumer=\"handleConsumer()\"\r\n\t\t\t\t        @hcp=\"handleHcp()\"\r\n\t\t\t\t\t\t@discontinue=\"toggleModal()\">\r\n\t</SampleConsentModal>\r\n</template>\r\n\r\n","<script setup>\r\n\timport {\r\n\t\tref,\r\n\t\tcomputed,\r\n\t\tonMounted,\r\n\t} from 'vue';\r\n\timport ModalDialogWithCta from 'shared/components/modalDialogWithCta.vue';\r\n\timport { useStore } from 'vuex';\r\n\r\n\tconst props = defineProps({\r\n\t\ttrigger: {\r\n\t\t\ttype: String,\r\n\t\t\trequired: true,\r\n\t\t},\r\n\t\tcloseLabel: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: 'Close'\r\n\t\t},\r\n\t});\r\n\r\n\tconst\r\n\t\tstore = useStore(),\r\n\t\tisProductCardOnCampaignPage = computed(() => store.getters.getIsProductCardOnCampaignPage);\r\n\r\n\tconst\r\n\t\tshow = ref(false),\r\n\t\terrorMessage = ref(null),\r\n\t\tdescription = ref(null),\r\n\t\tmodalData = ref({});\r\n\r\n\tonMounted(() => {\r\n\t\tdocument.addEventListener(props.trigger, (e) => {\r\n\t\t\tif (!e.detail || typeof e !== 'object') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmodalData.value = e.detail;\r\n\t\t\terrorMessage.value = modalData.value?.ErrorHeading;\r\n\t\t\tdescription.value = modalData.value?.ErrorMessage;\r\n\t\t\tif (errorMessage.value && description.value) {\r\n\t\t\t\tshow.value = true;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tshow.value = false;\r\n\t\t\t}\r\n\t\t})\r\n\t});\r\n\r\n\tfunction toggle() {\r\n\t\tshow.value = !show.value;\r\n\t}\r\n</script>\r\n\r\n<template>\r\n\t<div class=\"c-modal__mask\" @click=\"toggle()\" @kedown.enter=\"toggle()\" @keydown.escape=\"toggle()\" v-if=\"show\">\r\n\t\t<div class=\"c-modal__content-wrapper\" :tabindex=\"show ? 1 : -1\" @click.stop>\r\n\t\t\t<h2>{{ errorMessage }}</h2>\r\n\t\t\t<div v-html=\"description\"></div>\r\n\t\t\t<button class=\"e-button e-button--filled close-popup-button\" @click=\"toggle()\" @keydown.enter=\"toggle()\">{{ closeLabel }}</button>\r\n\t\t</div>\r\n\t</div>\r\n\t<ModalDialogWithCta v-if=\"modalData.isModal && isProductCardOnCampaignPage\" :modal-data=\"modalData\"></ModalDialogWithCta>\r\n</template>\r\n","<template></template>\r\n\r\n<script>\r\nimport { mapGetters, mapActions, mapMutations } from 'vuex';\r\nimport Events from 'shared/settings/events';\r\nimport { track_begin_checkout } from 'shared/services/tracking/basketTrackingService';\r\n\r\nexport default {\r\n    props: {\r\n        basketUrl: {\r\n            type: String,\r\n            required: true,\r\n        }\r\n    },\r\n    computed: {\r\n        ...mapGetters({\r\n            culture: 'getCulture',\r\n\t\t\tbasket: 'getBasket',\r\n        })\r\n    },\r\n    methods: {\r\n\t\t...mapActions({\r\n            fetchBasket: 'fetchBasket',\r\n        }),\r\n\t\t...mapMutations({\r\n            setBasketApiCulture: 'setBasketApiCulture',\r\n        }),\r\n        async onSamplesAdded(e) {\r\n            if (e.detail.basketUrl) {\r\n\t\t\t\tawait this.fetchBasket();\r\n\r\n\t\t\t\ttrack_begin_checkout(this.basket, { quick_link: e.detail.quickSample ? 'yes' : 'no' });\r\n\r\n                window.location.assign(e.detail.basketUrl);\r\n            }\r\n        }\r\n    },\r\n    mounted() {\r\n\t\tthis.setBasketApiCulture(this.culture);\r\n        window.addEventListener(Events.SAMPLES_ADDED, this.onSamplesAdded)\r\n    }\r\n}\r\n</script>\r\n","<template></template>\r\n\r\n<script>\r\nimport Cookie from 'js-cookie';\r\nimport { cookieNames } from 'shared/settings/constants';\r\nimport { track_form_submission } from 'shared/services/tracking/formTrackingService';\r\n\r\nexport default {\r\n    mounted() {\r\n        let payload = Cookie.get(cookieNames.FORM_SUBMIT_STATUS);\r\n        if (payload) {\r\n\t\t\tlet event = JSON.parse(payload);\r\n            track_form_submission(event.formsubmission);\r\n            Cookie.remove(cookieNames.FORM_SUBMIT_STATUS)\r\n        }\r\n    }\r\n}\r\n</script>\r\n","<template>\r\n\t<div id=\"spinner-overlay\" data-testid=\"spinner\" v-if=\"showSpinner\">\r\n\t\t<div class=\"spinner\"></div>\r\n\t</div>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters } from 'vuex';\r\n\r\nexport default {\r\n\tname: \"spinner\",\r\n\tcomputed: {\r\n\t\t...mapGetters({\r\n\t\t\tshowSpinner: 'getShowSpinner',\r\n\t\t}),\r\n\t},\r\n}\r\n\r\n</script>\r\n","<template>\r\n\t<div id=\"global-spinner-overlay\" data-testid=\"spinner\" v-if=\"showSpinner\">\r\n\t\t<div class=\"spinner\"></div>\r\n\t</div>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters } from 'vuex';\r\n\r\nexport default {\r\n\tname: \"global-spinner\",\r\n\tcomputed: {\r\n\t\t...mapGetters({\r\n\t\t\tshowSpinner: 'getGlobalShowSpinner',\r\n\t\t}),\r\n\t},\r\n}\r\n\r\n</script>\r\n","/*!\n* global/window.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.9\n*/\n\nif (typeof define === \"function\" && define.amd) define(function() {\n    return typeof window !== \"undefined\" ? window : new (eval(\"require('jsdom').JSDOM\"))(\"\").window;\n}); else if (typeof exports === \"object\") module.exports = typeof window !== \"undefined\" ? window : new (eval(\"require('jsdom').JSDOM\"))(\"\").window;","/*!\n* dependencyLibs/inputmask.dependencyLib.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.9\n*/\n\n(function(factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define([ \"../global/window\" ], factory);\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"../global/window\"));\n    } else {\n        window.dependencyLib = factory(window);\n    }\n})(function(window) {\n    var document = window.document;\n    function indexOf(list, elem) {\n        var i = 0, len = list.length;\n        for (;i < len; i++) {\n            if (list[i] === elem) {\n                return i;\n            }\n        }\n        return -1;\n    }\n    function isWindow(obj) {\n        return obj != null && obj === obj.window;\n    }\n    function isArraylike(obj) {\n        var length = \"length\" in obj && obj.length, ltype = typeof obj;\n        if (ltype === \"function\" || isWindow(obj)) {\n            return false;\n        }\n        if (obj.nodeType === 1 && length) {\n            return true;\n        }\n        return ltype === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n    }\n    function isValidElement(elem) {\n        return elem instanceof Element;\n    }\n    function DependencyLib(elem) {\n        if (elem instanceof DependencyLib) {\n            return elem;\n        }\n        if (!(this instanceof DependencyLib)) {\n            return new DependencyLib(elem);\n        }\n        if (elem !== undefined && elem !== null && elem !== window) {\n            this[0] = elem.nodeName ? elem : elem[0] !== undefined && elem[0].nodeName ? elem[0] : document.querySelector(elem);\n            if (this[0] !== undefined && this[0] !== null) {\n                this[0].eventRegistry = this[0].eventRegistry || {};\n            }\n        }\n    }\n    function getWindow(elem) {\n        return isWindow(elem) ? elem : elem.nodeType === 9 ? elem.defaultView || elem.parentWindow : false;\n    }\n    DependencyLib.prototype = {\n        on: function(events, handler) {\n            if (isValidElement(this[0])) {\n                var eventRegistry = this[0].eventRegistry, elem = this[0];\n                var addEvent = function(ev, namespace) {\n                    if (elem.addEventListener) {\n                        elem.addEventListener(ev, handler, false);\n                    } else if (elem.attachEvent) {\n                        elem.attachEvent(\"on\" + ev, handler);\n                    }\n                    eventRegistry[ev] = eventRegistry[ev] || {};\n                    eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [];\n                    eventRegistry[ev][namespace].push(handler);\n                };\n                var _events = events.split(\" \");\n                for (var endx = 0; endx < _events.length; endx++) {\n                    var nsEvent = _events[endx].split(\".\"), ev = nsEvent[0], namespace = nsEvent[1] || \"global\";\n                    addEvent(ev, namespace);\n                }\n            }\n            return this;\n        },\n        off: function(events, handler) {\n            if (isValidElement(this[0])) {\n                var eventRegistry = this[0].eventRegistry, elem = this[0];\n                var removeEvent = function(ev, namespace, handler) {\n                    if (ev in eventRegistry === true) {\n                        if (elem.removeEventListener) {\n                            elem.removeEventListener(ev, handler, false);\n                        } else if (elem.detachEvent) {\n                            elem.detachEvent(\"on\" + ev, handler);\n                        }\n                        if (namespace === \"global\") {\n                            for (var nmsp in eventRegistry[ev]) {\n                                eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1);\n                            }\n                        } else {\n                            eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1);\n                        }\n                    }\n                };\n                var resolveNamespace = function(ev, namespace) {\n                    var evts = [], hndx, hndL;\n                    if (ev.length > 0) {\n                        if (handler === undefined) {\n                            for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) {\n                                evts.push({\n                                    ev: ev,\n                                    namespace: namespace && namespace.length > 0 ? namespace : \"global\",\n                                    handler: eventRegistry[ev][namespace][hndx]\n                                });\n                            }\n                        } else {\n                            evts.push({\n                                ev: ev,\n                                namespace: namespace && namespace.length > 0 ? namespace : \"global\",\n                                handler: handler\n                            });\n                        }\n                    } else if (namespace.length > 0) {\n                        for (var evNdx in eventRegistry) {\n                            for (var nmsp in eventRegistry[evNdx]) {\n                                if (nmsp === namespace) {\n                                    if (handler === undefined) {\n                                        for (hndx = 0, hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) {\n                                            evts.push({\n                                                ev: evNdx,\n                                                namespace: nmsp,\n                                                handler: eventRegistry[evNdx][nmsp][hndx]\n                                            });\n                                        }\n                                    } else {\n                                        evts.push({\n                                            ev: evNdx,\n                                            namespace: nmsp,\n                                            handler: handler\n                                        });\n                                    }\n                                }\n                            }\n                        }\n                    }\n                    return evts;\n                };\n                var _events = events.split(\" \");\n                for (var endx = 0; endx < _events.length; endx++) {\n                    var nsEvent = _events[endx].split(\".\"), offEvents = resolveNamespace(nsEvent[0], nsEvent[1]);\n                    for (var i = 0, offEventsL = offEvents.length; i < offEventsL; i++) {\n                        removeEvent(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler);\n                    }\n                }\n            }\n            return this;\n        },\n        trigger: function(events) {\n            if (isValidElement(this[0])) {\n                var eventRegistry = this[0].eventRegistry, elem = this[0];\n                var _events = typeof events === \"string\" ? events.split(\" \") : [ events.type ];\n                for (var endx = 0; endx < _events.length; endx++) {\n                    var nsEvent = _events[endx].split(\".\"), ev = nsEvent[0], namespace = nsEvent[1] || \"global\";\n                    if (document !== undefined && namespace === \"global\") {\n                        var evnt, i, params = {\n                            bubbles: true,\n                            cancelable: true,\n                            detail: arguments[1]\n                        };\n                        if (document.createEvent) {\n                            try {\n                                evnt = new CustomEvent(ev, params);\n                            } catch (e) {\n                                evnt = document.createEvent(\"CustomEvent\");\n                                evnt.initCustomEvent(ev, params.bubbles, params.cancelable, params.detail);\n                            }\n                            if (events.type) DependencyLib.extend(evnt, events);\n                            elem.dispatchEvent(evnt);\n                        } else {\n                            evnt = document.createEventObject();\n                            evnt.eventType = ev;\n                            evnt.detail = arguments[1];\n                            if (events.type) DependencyLib.extend(evnt, events);\n                            elem.fireEvent(\"on\" + evnt.eventType, evnt);\n                        }\n                    } else if (eventRegistry[ev] !== undefined) {\n                        arguments[0] = arguments[0].type ? arguments[0] : DependencyLib.Event(arguments[0]);\n                        if (namespace === \"global\") {\n                            for (var nmsp in eventRegistry[ev]) {\n                                for (i = 0; i < eventRegistry[ev][nmsp].length; i++) {\n                                    eventRegistry[ev][nmsp][i].apply(elem, arguments);\n                                }\n                            }\n                        } else {\n                            for (i = 0; i < eventRegistry[ev][namespace].length; i++) {\n                                eventRegistry[ev][namespace][i].apply(elem, arguments);\n                            }\n                        }\n                    }\n                }\n            }\n            return this;\n        }\n    };\n    DependencyLib.isFunction = function(obj) {\n        return typeof obj === \"function\";\n    };\n    DependencyLib.noop = function() {};\n    DependencyLib.isArray = Array.isArray;\n    DependencyLib.inArray = function(elem, arr, i) {\n        return arr == null ? -1 : indexOf(arr, elem, i);\n    };\n    DependencyLib.valHooks = undefined;\n    DependencyLib.isPlainObject = function(obj) {\n        if (typeof obj !== \"object\" || obj.nodeType || isWindow(obj)) {\n            return false;\n        }\n        if (obj.constructor && !Object.hasOwnProperty.call(obj.constructor.prototype, \"isPrototypeOf\")) {\n            return false;\n        }\n        return true;\n    };\n    DependencyLib.extend = function() {\n        var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false;\n        if (typeof target === \"boolean\") {\n            deep = target;\n            target = arguments[i] || {};\n            i++;\n        }\n        if (typeof target !== \"object\" && !DependencyLib.isFunction(target)) {\n            target = {};\n        }\n        if (i === length) {\n            target = this;\n            i--;\n        }\n        for (;i < length; i++) {\n            if ((options = arguments[i]) != null) {\n                for (name in options) {\n                    src = target[name];\n                    copy = options[name];\n                    if (target === copy) {\n                        continue;\n                    }\n                    if (deep && copy && (DependencyLib.isPlainObject(copy) || (copyIsArray = DependencyLib.isArray(copy)))) {\n                        if (copyIsArray) {\n                            copyIsArray = false;\n                            clone = src && DependencyLib.isArray(src) ? src : [];\n                        } else {\n                            clone = src && DependencyLib.isPlainObject(src) ? src : {};\n                        }\n                        target[name] = DependencyLib.extend(deep, clone, copy);\n                    } else if (copy !== undefined) {\n                        target[name] = copy;\n                    }\n                }\n            }\n        }\n        return target;\n    };\n    DependencyLib.each = function(obj, callback) {\n        var value, i = 0;\n        if (isArraylike(obj)) {\n            for (var length = obj.length; i < length; i++) {\n                value = callback.call(obj[i], i, obj[i]);\n                if (value === false) {\n                    break;\n                }\n            }\n        } else {\n            for (i in obj) {\n                value = callback.call(obj[i], i, obj[i]);\n                if (value === false) {\n                    break;\n                }\n            }\n        }\n        return obj;\n    };\n    DependencyLib.data = function(owner, key, value) {\n        if (value === undefined) {\n            return owner.__data ? owner.__data[key] : null;\n        } else {\n            owner.__data = owner.__data || {};\n            owner.__data[key] = value;\n        }\n    };\n    if (typeof window.CustomEvent === \"function\") {\n        DependencyLib.Event = window.CustomEvent;\n    } else {\n        DependencyLib.Event = function(event, params) {\n            params = params || {\n                bubbles: false,\n                cancelable: false,\n                detail: undefined\n            };\n            var evt = document.createEvent(\"CustomEvent\");\n            evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n            return evt;\n        };\n        DependencyLib.Event.prototype = window.Event.prototype;\n    }\n    return DependencyLib;\n});","/*!\n* inputmask.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.9\n*/\n\n(function(factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define([ \"./dependencyLibs/inputmask.dependencyLib\", \"./global/window\" ], factory);\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"./dependencyLibs/inputmask.dependencyLib\"), require(\"./global/window\"));\n    } else {\n        window.Inputmask = factory(window.dependencyLib || jQuery, window);\n    }\n})(function($, window, undefined) {\n    var document = window.document, ua = navigator.userAgent, ie = ua.indexOf(\"MSIE \") > 0 || ua.indexOf(\"Trident/\") > 0, mobile = isInputEventSupported(\"touchstart\"), iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile;\n    function Inputmask(alias, options, internal) {\n        if (!(this instanceof Inputmask)) {\n            return new Inputmask(alias, options, internal);\n        }\n        this.el = undefined;\n        this.events = {};\n        this.maskset = undefined;\n        this.refreshValue = false;\n        if (internal !== true) {\n            if ($.isPlainObject(alias)) {\n                options = alias;\n            } else {\n                options = options || {};\n                if (alias) options.alias = alias;\n            }\n            this.opts = $.extend(true, {}, this.defaults, options);\n            this.noMasksCache = options && options.definitions !== undefined;\n            this.userOptions = options || {};\n            this.isRTL = this.opts.numericInput;\n            resolveAlias(this.opts.alias, options, this.opts);\n        }\n    }\n    Inputmask.prototype = {\n        dataAttribute: \"data-inputmask\",\n        defaults: {\n            placeholder: \"_\",\n            optionalmarker: [ \"[\", \"]\" ],\n            quantifiermarker: [ \"{\", \"}\" ],\n            groupmarker: [ \"(\", \")\" ],\n            alternatormarker: \"|\",\n            escapeChar: \"\\\\\",\n            mask: null,\n            regex: null,\n            oncomplete: $.noop,\n            onincomplete: $.noop,\n            oncleared: $.noop,\n            repeat: 0,\n            greedy: false,\n            autoUnmask: false,\n            removeMaskOnSubmit: false,\n            clearMaskOnLostFocus: true,\n            insertMode: true,\n            clearIncomplete: false,\n            alias: null,\n            onKeyDown: $.noop,\n            onBeforeMask: null,\n            onBeforePaste: function(pastedValue, opts) {\n                return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(this, pastedValue, opts) : pastedValue;\n            },\n            onBeforeWrite: null,\n            onUnMask: null,\n            showMaskOnFocus: true,\n            showMaskOnHover: true,\n            onKeyValidation: $.noop,\n            skipOptionalPartCharacter: \" \",\n            numericInput: false,\n            rightAlign: false,\n            undoOnEscape: true,\n            radixPoint: \"\",\n            _radixDance: false,\n            groupSeparator: \"\",\n            keepStatic: null,\n            positionCaretOnTab: true,\n            tabThrough: false,\n            supportsInputType: [ \"text\", \"tel\", \"url\", \"password\", \"search\" ],\n            ignorables: [ 8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, 229 ],\n            isComplete: null,\n            preValidation: null,\n            postValidation: null,\n            staticDefinitionSymbol: undefined,\n            jitMasking: false,\n            nullable: true,\n            inputEventOnly: false,\n            noValuePatching: false,\n            positionCaretOnClick: \"lvp\",\n            casing: null,\n            inputmode: \"verbatim\",\n            colorMask: false,\n            disablePredictiveText: false,\n            importDataAttributes: true,\n            shiftPositions: true\n        },\n        definitions: {\n            9: {\n                validator: \"[0-9\\uff11-\\uff19]\",\n                definitionSymbol: \"*\"\n            },\n            a: {\n                validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n                definitionSymbol: \"*\"\n            },\n            \"*\": {\n                validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\"\n            }\n        },\n        aliases: {},\n        masksCache: {},\n        mask: function(elems) {\n            var that = this;\n            function importAttributeOptions(npt, opts, userOptions, dataAttribute) {\n                if (opts.importDataAttributes === true) {\n                    var attrOptions = npt.getAttribute(dataAttribute), option, dataoptions, optionData, p;\n                    var importOption = function(option, optionData) {\n                        optionData = optionData !== undefined ? optionData : npt.getAttribute(dataAttribute + \"-\" + option);\n                        if (optionData !== null) {\n                            if (typeof optionData === \"string\") {\n                                if (option.indexOf(\"on\") === 0) optionData = window[optionData]; else if (optionData === \"false\") optionData = false; else if (optionData === \"true\") optionData = true;\n                            }\n                            userOptions[option] = optionData;\n                        }\n                    };\n                    if (attrOptions && attrOptions !== \"\") {\n                        attrOptions = attrOptions.replace(/'/g, '\"');\n                        dataoptions = JSON.parse(\"{\" + attrOptions + \"}\");\n                    }\n                    if (dataoptions) {\n                        optionData = undefined;\n                        for (p in dataoptions) {\n                            if (p.toLowerCase() === \"alias\") {\n                                optionData = dataoptions[p];\n                                break;\n                            }\n                        }\n                    }\n                    importOption(\"alias\", optionData);\n                    if (userOptions.alias) {\n                        resolveAlias(userOptions.alias, userOptions, opts);\n                    }\n                    for (option in opts) {\n                        if (dataoptions) {\n                            optionData = undefined;\n                            for (p in dataoptions) {\n                                if (p.toLowerCase() === option.toLowerCase()) {\n                                    optionData = dataoptions[p];\n                                    break;\n                                }\n                            }\n                        }\n                        importOption(option, optionData);\n                    }\n                }\n                $.extend(true, opts, userOptions);\n                if (npt.dir === \"rtl\" || opts.rightAlign) {\n                    npt.style.textAlign = \"right\";\n                }\n                if (npt.dir === \"rtl\" || opts.numericInput) {\n                    npt.dir = \"ltr\";\n                    npt.removeAttribute(\"dir\");\n                    opts.isRTL = true;\n                }\n                return Object.keys(userOptions).length;\n            }\n            if (typeof elems === \"string\") {\n                elems = document.getElementById(elems) || document.querySelectorAll(elems);\n            }\n            elems = elems.nodeName ? [ elems ] : elems;\n            $.each(elems, function(ndx, el) {\n                var scopedOpts = $.extend(true, {}, that.opts);\n                if (importAttributeOptions(el, scopedOpts, $.extend(true, {}, that.userOptions), that.dataAttribute)) {\n                    var maskset = generateMaskSet(scopedOpts, that.noMasksCache);\n                    if (maskset !== undefined) {\n                        if (el.inputmask !== undefined) {\n                            el.inputmask.opts.autoUnmask = true;\n                            el.inputmask.remove();\n                        }\n                        el.inputmask = new Inputmask(undefined, undefined, true);\n                        el.inputmask.opts = scopedOpts;\n                        el.inputmask.noMasksCache = that.noMasksCache;\n                        el.inputmask.userOptions = $.extend(true, {}, that.userOptions);\n                        el.inputmask.isRTL = scopedOpts.isRTL || scopedOpts.numericInput;\n                        el.inputmask.el = el;\n                        el.inputmask.maskset = maskset;\n                        $.data(el, \"_inputmask_opts\", scopedOpts);\n                        maskScope.call(el.inputmask, {\n                            action: \"mask\"\n                        });\n                    }\n                }\n            });\n            return elems && elems[0] ? elems[0].inputmask || this : this;\n        },\n        option: function(options, noremask) {\n            if (typeof options === \"string\") {\n                return this.opts[options];\n            } else if (typeof options === \"object\") {\n                $.extend(this.userOptions, options);\n                if (this.el && noremask !== true) {\n                    this.mask(this.el);\n                }\n                return this;\n            }\n        },\n        unmaskedvalue: function(value) {\n            this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n            return maskScope.call(this, {\n                action: \"unmaskedvalue\",\n                value: value\n            });\n        },\n        remove: function() {\n            return maskScope.call(this, {\n                action: \"remove\"\n            });\n        },\n        getemptymask: function() {\n            this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n            return maskScope.call(this, {\n                action: \"getemptymask\"\n            });\n        },\n        hasMaskedValue: function() {\n            return !this.opts.autoUnmask;\n        },\n        isComplete: function() {\n            this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n            return maskScope.call(this, {\n                action: \"isComplete\"\n            });\n        },\n        getmetadata: function() {\n            this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n            return maskScope.call(this, {\n                action: \"getmetadata\"\n            });\n        },\n        isValid: function(value) {\n            this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n            return maskScope.call(this, {\n                action: \"isValid\",\n                value: value\n            });\n        },\n        format: function(value, metadata) {\n            this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n            return maskScope.call(this, {\n                action: \"format\",\n                value: value,\n                metadata: metadata\n            });\n        },\n        setValue: function(value) {\n            if (this.el) {\n                $(this.el).trigger(\"setvalue\", [ value ]);\n            }\n        },\n        analyseMask: function(mask, regexMask, opts) {\n            var tokenizer = /(?:[?*+]|\\{[0-9\\+\\*]+(?:,[0-9\\+\\*]*)?(?:\\|[0-9\\+\\*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g, regexTokenizer = /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g, escaped = false, currentToken = new MaskToken(), match, m, openenings = [], maskTokens = [], openingToken, currentOpeningToken, alternator, lastMatch, groupToken;\n            function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) {\n                this.matches = [];\n                this.openGroup = isGroup || false;\n                this.alternatorGroup = false;\n                this.isGroup = isGroup || false;\n                this.isOptional = isOptional || false;\n                this.isQuantifier = isQuantifier || false;\n                this.isAlternator = isAlternator || false;\n                this.quantifier = {\n                    min: 1,\n                    max: 1\n                };\n            }\n            function insertTestDefinition(mtoken, element, position) {\n                position = position !== undefined ? position : mtoken.matches.length;\n                var prevMatch = mtoken.matches[position - 1];\n                if (regexMask) {\n                    if (element.indexOf(\"[\") === 0 || escaped && /\\\\d|\\\\s|\\\\w]/i.test(element) || element === \".\") {\n                        mtoken.matches.splice(position++, 0, {\n                            fn: new RegExp(element, opts.casing ? \"i\" : \"\"),\n                            optionality: false,\n                            newBlockMarker: prevMatch === undefined ? \"master\" : prevMatch.def !== element,\n                            casing: null,\n                            def: element,\n                            placeholder: undefined,\n                            nativeDef: element\n                        });\n                    } else {\n                        if (escaped) element = element[element.length - 1];\n                        $.each(element.split(\"\"), function(ndx, lmnt) {\n                            prevMatch = mtoken.matches[position - 1];\n                            mtoken.matches.splice(position++, 0, {\n                                fn: null,\n                                optionality: false,\n                                newBlockMarker: prevMatch === undefined ? \"master\" : prevMatch.def !== lmnt && prevMatch.fn !== null,\n                                casing: null,\n                                def: opts.staticDefinitionSymbol || lmnt,\n                                placeholder: opts.staticDefinitionSymbol !== undefined ? lmnt : undefined,\n                                nativeDef: (escaped ? \"'\" : \"\") + lmnt\n                            });\n                        });\n                    }\n                    escaped = false;\n                } else {\n                    var maskdef = (opts.definitions ? opts.definitions[element] : undefined) || Inputmask.prototype.definitions[element];\n                    if (maskdef && !escaped) {\n                        mtoken.matches.splice(position++, 0, {\n                            fn: maskdef.validator ? typeof maskdef.validator == \"string\" ? new RegExp(maskdef.validator, opts.casing ? \"i\" : \"\") : new function() {\n                                this.test = maskdef.validator;\n                            }() : new RegExp(\".\"),\n                            optionality: false,\n                            newBlockMarker: prevMatch === undefined ? \"master\" : prevMatch.def !== (maskdef.definitionSymbol || element),\n                            casing: maskdef.casing,\n                            def: maskdef.definitionSymbol || element,\n                            placeholder: maskdef.placeholder,\n                            nativeDef: element\n                        });\n                    } else {\n                        mtoken.matches.splice(position++, 0, {\n                            fn: null,\n                            optionality: false,\n                            newBlockMarker: prevMatch === undefined ? \"master\" : prevMatch.def !== element && prevMatch.fn !== null,\n                            casing: null,\n                            def: opts.staticDefinitionSymbol || element,\n                            placeholder: opts.staticDefinitionSymbol !== undefined ? element : undefined,\n                            nativeDef: (escaped ? \"'\" : \"\") + element\n                        });\n                        escaped = false;\n                    }\n                }\n            }\n            function verifyGroupMarker(maskToken) {\n                if (maskToken && maskToken.matches) {\n                    $.each(maskToken.matches, function(ndx, token) {\n                        var nextToken = maskToken.matches[ndx + 1];\n                        if ((nextToken === undefined || (nextToken.matches === undefined || nextToken.isQuantifier === false)) && token && token.isGroup) {\n                            token.isGroup = false;\n                            if (!regexMask) {\n                                insertTestDefinition(token, opts.groupmarker[0], 0);\n                                if (token.openGroup !== true) {\n                                    insertTestDefinition(token, opts.groupmarker[1]);\n                                }\n                            }\n                        }\n                        verifyGroupMarker(token);\n                    });\n                }\n            }\n            function defaultCase() {\n                if (openenings.length > 0) {\n                    currentOpeningToken = openenings[openenings.length - 1];\n                    insertTestDefinition(currentOpeningToken, m);\n                    if (currentOpeningToken.isAlternator) {\n                        alternator = openenings.pop();\n                        for (var mndx = 0; mndx < alternator.matches.length; mndx++) {\n                            if (alternator.matches[mndx].isGroup) alternator.matches[mndx].isGroup = false;\n                        }\n                        if (openenings.length > 0) {\n                            currentOpeningToken = openenings[openenings.length - 1];\n                            currentOpeningToken.matches.push(alternator);\n                        } else {\n                            currentToken.matches.push(alternator);\n                        }\n                    }\n                } else {\n                    insertTestDefinition(currentToken, m);\n                }\n            }\n            function reverseTokens(maskToken) {\n                function reverseStatic(st) {\n                    if (st === opts.optionalmarker[0]) st = opts.optionalmarker[1]; else if (st === opts.optionalmarker[1]) st = opts.optionalmarker[0]; else if (st === opts.groupmarker[0]) st = opts.groupmarker[1]; else if (st === opts.groupmarker[1]) st = opts.groupmarker[0];\n                    return st;\n                }\n                maskToken.matches = maskToken.matches.reverse();\n                for (var match in maskToken.matches) {\n                    if (maskToken.matches.hasOwnProperty(match)) {\n                        var intMatch = parseInt(match);\n                        if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) {\n                            var qt = maskToken.matches[match];\n                            maskToken.matches.splice(match, 1);\n                            maskToken.matches.splice(intMatch + 1, 0, qt);\n                        }\n                        if (maskToken.matches[match].matches !== undefined) {\n                            maskToken.matches[match] = reverseTokens(maskToken.matches[match]);\n                        } else {\n                            maskToken.matches[match] = reverseStatic(maskToken.matches[match]);\n                        }\n                    }\n                }\n                return maskToken;\n            }\n            function groupify(matches) {\n                var groupToken = new MaskToken(true);\n                groupToken.openGroup = false;\n                groupToken.matches = matches;\n                return groupToken;\n            }\n            if (regexMask) {\n                opts.optionalmarker[0] = undefined;\n                opts.optionalmarker[1] = undefined;\n            }\n            while (match = regexMask ? regexTokenizer.exec(mask) : tokenizer.exec(mask)) {\n                m = match[0];\n                if (regexMask) {\n                    switch (m.charAt(0)) {\n                      case \"?\":\n                        m = \"{0,1}\";\n                        break;\n\n                      case \"+\":\n                      case \"*\":\n                        m = \"{\" + m + \"}\";\n                        break;\n                    }\n                }\n                if (escaped) {\n                    defaultCase();\n                    continue;\n                }\n                switch (m.charAt(0)) {\n                  case \"(?=\":\n                    break;\n\n                  case \"(?!\":\n                    break;\n\n                  case \"(?<=\":\n                    break;\n\n                  case \"(?<!\":\n                    break;\n\n                  case opts.escapeChar:\n                    escaped = true;\n                    if (regexMask) {\n                        defaultCase();\n                    }\n                    break;\n\n                  case opts.optionalmarker[1]:\n                  case opts.groupmarker[1]:\n                    openingToken = openenings.pop();\n                    openingToken.openGroup = false;\n                    if (openingToken !== undefined) {\n                        if (openenings.length > 0) {\n                            currentOpeningToken = openenings[openenings.length - 1];\n                            currentOpeningToken.matches.push(openingToken);\n                            if (currentOpeningToken.isAlternator) {\n                                alternator = openenings.pop();\n                                for (var mndx = 0; mndx < alternator.matches.length; mndx++) {\n                                    alternator.matches[mndx].isGroup = false;\n                                    alternator.matches[mndx].alternatorGroup = false;\n                                }\n                                if (openenings.length > 0) {\n                                    currentOpeningToken = openenings[openenings.length - 1];\n                                    currentOpeningToken.matches.push(alternator);\n                                } else {\n                                    currentToken.matches.push(alternator);\n                                }\n                            }\n                        } else {\n                            currentToken.matches.push(openingToken);\n                        }\n                    } else defaultCase();\n                    break;\n\n                  case opts.optionalmarker[0]:\n                    openenings.push(new MaskToken(false, true));\n                    break;\n\n                  case opts.groupmarker[0]:\n                    openenings.push(new MaskToken(true));\n                    break;\n\n                  case opts.quantifiermarker[0]:\n                    var quantifier = new MaskToken(false, false, true);\n                    m = m.replace(/[{}]/g, \"\");\n                    var mqj = m.split(\"|\"), mq = mqj[0].split(\",\"), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = mq.length === 1 ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);\n                    if (mq0 === \"*\" || mq0 === \"+\") {\n                        mq0 = mq1 === \"*\" ? 0 : 1;\n                    }\n                    quantifier.quantifier = {\n                        min: mq0,\n                        max: mq1,\n                        jit: mqj[1]\n                    };\n                    var matches = openenings.length > 0 ? openenings[openenings.length - 1].matches : currentToken.matches;\n                    match = matches.pop();\n                    if (match.isAlternator) {\n                        matches.push(match);\n                        matches = match.matches;\n                        var groupToken = new MaskToken(true);\n                        var tmpMatch = matches.pop();\n                        matches.push(groupToken);\n                        matches = groupToken.matches;\n                        match = tmpMatch;\n                    }\n                    if (!match.isGroup) {\n                        match = groupify([ match ]);\n                    }\n                    matches.push(match);\n                    matches.push(quantifier);\n                    break;\n\n                  case opts.alternatormarker:\n                    var groupQuantifier = function(matches) {\n                        var lastMatch = matches.pop();\n                        if (lastMatch.isQuantifier) {\n                            lastMatch = groupify([ matches.pop(), lastMatch ]);\n                        }\n                        return lastMatch;\n                    };\n                    if (openenings.length > 0) {\n                        currentOpeningToken = openenings[openenings.length - 1];\n                        var subToken = currentOpeningToken.matches[currentOpeningToken.matches.length - 1];\n                        if (currentOpeningToken.openGroup && (subToken.matches === undefined || subToken.isGroup === false && subToken.isAlternator === false)) {\n                            lastMatch = openenings.pop();\n                        } else {\n                            lastMatch = groupQuantifier(currentOpeningToken.matches);\n                        }\n                    } else {\n                        lastMatch = groupQuantifier(currentToken.matches);\n                    }\n                    if (lastMatch.isAlternator) {\n                        openenings.push(lastMatch);\n                    } else {\n                        if (lastMatch.alternatorGroup) {\n                            alternator = openenings.pop();\n                            lastMatch.alternatorGroup = false;\n                        } else {\n                            alternator = new MaskToken(false, false, false, true);\n                        }\n                        alternator.matches.push(lastMatch);\n                        openenings.push(alternator);\n                        if (lastMatch.openGroup) {\n                            lastMatch.openGroup = false;\n                            var alternatorGroup = new MaskToken(true);\n                            alternatorGroup.alternatorGroup = true;\n                            openenings.push(alternatorGroup);\n                        }\n                    }\n                    break;\n\n                  default:\n                    defaultCase();\n                }\n            }\n            while (openenings.length > 0) {\n                openingToken = openenings.pop();\n                currentToken.matches.push(openingToken);\n            }\n            if (currentToken.matches.length > 0) {\n                verifyGroupMarker(currentToken);\n                maskTokens.push(currentToken);\n            }\n            if (opts.numericInput || opts.isRTL) {\n                reverseTokens(maskTokens[0]);\n            }\n            return maskTokens;\n        },\n        positionColorMask: function(input, template) {\n            input.style.left = template.offsetLeft + \"px\";\n        }\n    };\n    Inputmask.extendDefaults = function(options) {\n        $.extend(true, Inputmask.prototype.defaults, options);\n    };\n    Inputmask.extendDefinitions = function(definition) {\n        $.extend(true, Inputmask.prototype.definitions, definition);\n    };\n    Inputmask.extendAliases = function(alias) {\n        $.extend(true, Inputmask.prototype.aliases, alias);\n    };\n    Inputmask.format = function(value, options, metadata) {\n        return Inputmask(options).format(value, metadata);\n    };\n    Inputmask.unmask = function(value, options) {\n        return Inputmask(options).unmaskedvalue(value);\n    };\n    Inputmask.isValid = function(value, options) {\n        return Inputmask(options).isValid(value);\n    };\n    Inputmask.remove = function(elems) {\n        if (typeof elems === \"string\") {\n            elems = document.getElementById(elems) || document.querySelectorAll(elems);\n        }\n        elems = elems.nodeName ? [ elems ] : elems;\n        $.each(elems, function(ndx, el) {\n            if (el.inputmask) el.inputmask.remove();\n        });\n    };\n    Inputmask.setValue = function(elems, value) {\n        if (typeof elems === \"string\") {\n            elems = document.getElementById(elems) || document.querySelectorAll(elems);\n        }\n        elems = elems.nodeName ? [ elems ] : elems;\n        $.each(elems, function(ndx, el) {\n            if (el.inputmask) el.inputmask.setValue(value); else $(el).trigger(\"setvalue\", [ value ]);\n        });\n    };\n    Inputmask.escapeRegex = function(str) {\n        var specials = [ \"/\", \".\", \"*\", \"+\", \"?\", \"|\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"$\", \"^\" ];\n        return str.replace(new RegExp(\"(\\\\\" + specials.join(\"|\\\\\") + \")\", \"gim\"), \"\\\\$1\");\n    };\n    Inputmask.keyCode = {\n        BACKSPACE: 8,\n        BACKSPACE_SAFARI: 127,\n        DELETE: 46,\n        DOWN: 40,\n        END: 35,\n        ENTER: 13,\n        ESCAPE: 27,\n        HOME: 36,\n        INSERT: 45,\n        LEFT: 37,\n        PAGE_DOWN: 34,\n        PAGE_UP: 33,\n        RIGHT: 39,\n        SPACE: 32,\n        TAB: 9,\n        UP: 38,\n        X: 88,\n        CONTROL: 17\n    };\n    Inputmask.dependencyLib = $;\n    function resolveAlias(aliasStr, options, opts) {\n        var aliasDefinition = Inputmask.prototype.aliases[aliasStr];\n        if (aliasDefinition) {\n            if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias, undefined, opts);\n            $.extend(true, opts, aliasDefinition);\n            $.extend(true, opts, options);\n            return true;\n        } else if (opts.mask === null) {\n            opts.mask = aliasStr;\n        }\n        return false;\n    }\n    function generateMaskSet(opts, nocache) {\n        function generateMask(mask, metadata, opts) {\n            var regexMask = false;\n            if (mask === null || mask === \"\") {\n                regexMask = opts.regex !== null;\n                if (regexMask) {\n                    mask = opts.regex;\n                    mask = mask.replace(/^(\\^)(.*)(\\$)$/, \"$2\");\n                } else {\n                    regexMask = true;\n                    mask = \".*\";\n                }\n            }\n            if (mask.length === 1 && opts.greedy === false && opts.repeat !== 0) {\n                opts.placeholder = \"\";\n            }\n            if (opts.repeat > 0 || opts.repeat === \"*\" || opts.repeat === \"+\") {\n                var repeatStart = opts.repeat === \"*\" ? 0 : opts.repeat === \"+\" ? 1 : opts.repeat;\n                mask = opts.groupmarker[0] + mask + opts.groupmarker[1] + opts.quantifiermarker[0] + repeatStart + \",\" + opts.repeat + opts.quantifiermarker[1];\n            }\n            var masksetDefinition, maskdefKey = regexMask ? \"regex_\" + opts.regex : opts.numericInput ? mask.split(\"\").reverse().join(\"\") : mask;\n            if (Inputmask.prototype.masksCache[maskdefKey] === undefined || nocache === true) {\n                masksetDefinition = {\n                    mask: mask,\n                    maskToken: Inputmask.prototype.analyseMask(mask, regexMask, opts),\n                    validPositions: {},\n                    _buffer: undefined,\n                    buffer: undefined,\n                    tests: {},\n                    excludes: {},\n                    metadata: metadata,\n                    maskLength: undefined,\n                    jitOffset: {}\n                };\n                if (nocache !== true) {\n                    Inputmask.prototype.masksCache[maskdefKey] = masksetDefinition;\n                    masksetDefinition = $.extend(true, {}, Inputmask.prototype.masksCache[maskdefKey]);\n                }\n            } else masksetDefinition = $.extend(true, {}, Inputmask.prototype.masksCache[maskdefKey]);\n            return masksetDefinition;\n        }\n        var ms;\n        if ($.isFunction(opts.mask)) {\n            opts.mask = opts.mask(opts);\n        }\n        if ($.isArray(opts.mask)) {\n            if (opts.mask.length > 1) {\n                if (opts.keepStatic === null) {\n                    opts.keepStatic = \"auto\";\n                    for (var i = 0; i < opts.mask.length; i++) {\n                        if (opts.mask[i].charAt(0) !== opts.mask[0].charAt(0)) {\n                            opts.keepStatic = true;\n                            break;\n                        }\n                    }\n                }\n                var altMask = opts.groupmarker[0];\n                $.each(opts.isRTL ? opts.mask.reverse() : opts.mask, function(ndx, msk) {\n                    if (altMask.length > 1) {\n                        altMask += opts.groupmarker[1] + opts.alternatormarker + opts.groupmarker[0];\n                    }\n                    if (msk.mask !== undefined && !$.isFunction(msk.mask)) {\n                        altMask += msk.mask;\n                    } else {\n                        altMask += msk;\n                    }\n                });\n                altMask += opts.groupmarker[1];\n                return generateMask(altMask, opts.mask, opts);\n            } else opts.mask = opts.mask.pop();\n        }\n        if (opts.mask && opts.mask.mask !== undefined && !$.isFunction(opts.mask.mask)) {\n            ms = generateMask(opts.mask.mask, opts.mask, opts);\n        } else {\n            ms = generateMask(opts.mask, opts.mask, opts);\n        }\n        return ms;\n    }\n    function isInputEventSupported(eventName) {\n        var el = document.createElement(\"input\"), evName = \"on\" + eventName, isSupported = evName in el;\n        if (!isSupported) {\n            el.setAttribute(evName, \"return;\");\n            isSupported = typeof el[evName] === \"function\";\n        }\n        el = null;\n        return isSupported;\n    }\n    function maskScope(actionObj, maskset, opts) {\n        maskset = maskset || this.maskset;\n        opts = opts || this.opts;\n        var inputmask = this, el = this.el, isRTL = this.isRTL, undoValue, $el, skipKeyPressEvent = false, skipInputEvent = false, ignorable = false, maxLength, mouseEnter = false, colorMask, originalPlaceholder;\n        var getMaskTemplate = function(baseOnInput, minimalPos, includeMode, noJit, clearOptionalTail) {\n            var greedy = opts.greedy;\n            if (clearOptionalTail) opts.greedy = false;\n            minimalPos = minimalPos || 0;\n            var maskTemplate = [], ndxIntlzr, pos = 0, test, testPos, lvp = getLastValidPosition();\n            do {\n                if (baseOnInput === true && getMaskSet().validPositions[pos]) {\n                    testPos = clearOptionalTail && getMaskSet().validPositions[pos].match.optionality === true && getMaskSet().validPositions[pos + 1] === undefined && (getMaskSet().validPositions[pos].generatedInput === true || getMaskSet().validPositions[pos].input == opts.skipOptionalPartCharacter && pos > 0) ? determineTestTemplate(pos, getTests(pos, ndxIntlzr, pos - 1)) : getMaskSet().validPositions[pos];\n                    test = testPos.match;\n                    ndxIntlzr = testPos.locator.slice();\n                    maskTemplate.push(includeMode === true ? testPos.input : includeMode === false ? test.nativeDef : getPlaceholder(pos, test));\n                } else {\n                    testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);\n                    test = testPos.match;\n                    ndxIntlzr = testPos.locator.slice();\n                    var jitMasking = noJit === true ? false : opts.jitMasking !== false ? opts.jitMasking : test.jit;\n                    if (jitMasking === false || jitMasking === undefined || typeof jitMasking === \"number\" && isFinite(jitMasking) && jitMasking > pos) {\n                        maskTemplate.push(includeMode === false ? test.nativeDef : getPlaceholder(pos, test));\n                    }\n                }\n                if (opts.keepStatic === \"auto\") {\n                    if (test.newBlockMarker && test.fn !== null) {\n                        opts.keepStatic = pos - 1;\n                    }\n                }\n                pos++;\n            } while ((maxLength === undefined || pos < maxLength) && (test.fn !== null || test.def !== \"\") || minimalPos > pos);\n            if (maskTemplate[maskTemplate.length - 1] === \"\") {\n                maskTemplate.pop();\n            }\n            if (includeMode !== false || getMaskSet().maskLength === undefined) getMaskSet().maskLength = pos - 1;\n            opts.greedy = greedy;\n            return maskTemplate;\n        };\n        function getMaskSet() {\n            return maskset;\n        }\n        function resetMaskSet(soft) {\n            var maskset = getMaskSet();\n            maskset.buffer = undefined;\n            if (soft !== true) {\n                maskset.validPositions = {};\n                maskset.p = 0;\n            }\n        }\n        function getLastValidPosition(closestTo, strict, validPositions) {\n            var before = -1, after = -1, valids = validPositions || getMaskSet().validPositions;\n            if (closestTo === undefined) closestTo = -1;\n            for (var posNdx in valids) {\n                var psNdx = parseInt(posNdx);\n                if (valids[psNdx] && (strict || valids[psNdx].generatedInput !== true)) {\n                    if (psNdx <= closestTo) before = psNdx;\n                    if (psNdx >= closestTo) after = psNdx;\n                }\n            }\n            return before === -1 || before == closestTo ? after : after == -1 ? before : closestTo - before < after - closestTo ? before : after;\n        }\n        function getDecisionTaker(tst) {\n            var decisionTaker = tst.locator[tst.alternation];\n            if (typeof decisionTaker == \"string\" && decisionTaker.length > 0) {\n                decisionTaker = decisionTaker.split(\",\")[0];\n            }\n            return decisionTaker !== undefined ? decisionTaker.toString() : \"\";\n        }\n        function getLocator(tst, align) {\n            var locator = (tst.alternation != undefined ? tst.mloc[getDecisionTaker(tst)] : tst.locator).join(\"\");\n            if (locator !== \"\") while (locator.length < align) locator += \"0\";\n            return locator;\n        }\n        function determineTestTemplate(pos, tests) {\n            pos = pos > 0 ? pos - 1 : 0;\n            var altTest = getTest(pos), targetLocator = getLocator(altTest), tstLocator, closest, bestMatch;\n            for (var ndx = 0; ndx < tests.length; ndx++) {\n                var tst = tests[ndx];\n                tstLocator = getLocator(tst, targetLocator.length);\n                var distance = Math.abs(tstLocator - targetLocator);\n                if (closest === undefined || tstLocator !== \"\" && distance < closest || bestMatch && !opts.greedy && bestMatch.match.optionality && bestMatch.match.newBlockMarker === \"master\" && (!tst.match.optionality || !tst.match.newBlockMarker) || bestMatch && bestMatch.match.optionalQuantifier && !tst.match.optionalQuantifier) {\n                    closest = distance;\n                    bestMatch = tst;\n                }\n            }\n            return bestMatch;\n        }\n        function getTestTemplate(pos, ndxIntlzr, tstPs) {\n            return getMaskSet().validPositions[pos] || determineTestTemplate(pos, getTests(pos, ndxIntlzr ? ndxIntlzr.slice() : ndxIntlzr, tstPs));\n        }\n        function getTest(pos, tests) {\n            if (getMaskSet().validPositions[pos]) {\n                return getMaskSet().validPositions[pos];\n            }\n            return (tests || getTests(pos))[0];\n        }\n        function positionCanMatchDefinition(pos, def) {\n            var valid = false, tests = getTests(pos);\n            for (var tndx = 0; tndx < tests.length; tndx++) {\n                if (tests[tndx].match && tests[tndx].match.def === def) {\n                    valid = true;\n                    break;\n                }\n            }\n            return valid;\n        }\n        function getTests(pos, ndxIntlzr, tstPs) {\n            var maskTokens = getMaskSet().maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr ? ndxIntlzr.slice() : [ 0 ], matches = [], insertStop = false, latestMatch, cacheDependency = ndxIntlzr ? ndxIntlzr.join(\"\") : \"\";\n            function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) {\n                function handleMatch(match, loopNdx, quantifierRecurse) {\n                    function isFirstMatch(latestMatch, tokenGroup) {\n                        var firstMatch = $.inArray(latestMatch, tokenGroup.matches) === 0;\n                        if (!firstMatch) {\n                            $.each(tokenGroup.matches, function(ndx, match) {\n                                if (match.isQuantifier === true) firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1]); else if (match.hasOwnProperty(\"matches\")) firstMatch = isFirstMatch(latestMatch, match);\n                                if (firstMatch) return false;\n                            });\n                        }\n                        return firstMatch;\n                    }\n                    function resolveNdxInitializer(pos, alternateNdx, targetAlternation) {\n                        var bestMatch, indexPos;\n                        if (getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) {\n                            $.each(getMaskSet().tests[pos] || [ getMaskSet().validPositions[pos] ], function(ndx, lmnt) {\n                                if (lmnt.mloc[alternateNdx]) {\n                                    bestMatch = lmnt;\n                                    return false;\n                                }\n                                var alternation = targetAlternation !== undefined ? targetAlternation : lmnt.alternation, ndxPos = lmnt.locator[alternation] !== undefined ? lmnt.locator[alternation].toString().indexOf(alternateNdx) : -1;\n                                if ((indexPos === undefined || ndxPos < indexPos) && ndxPos !== -1) {\n                                    bestMatch = lmnt;\n                                    indexPos = ndxPos;\n                                }\n                            });\n                        }\n                        if (bestMatch) {\n                            var bestMatchAltIndex = bestMatch.locator[bestMatch.alternation];\n                            var locator = bestMatch.mloc[alternateNdx] || bestMatch.mloc[bestMatchAltIndex] || bestMatch.locator;\n                            return locator.slice((targetAlternation !== undefined ? targetAlternation : bestMatch.alternation) + 1);\n                        } else {\n                            return targetAlternation !== undefined ? resolveNdxInitializer(pos, alternateNdx) : undefined;\n                        }\n                    }\n                    function isSubsetOf(source, target) {\n                        function expand(pattern) {\n                            var expanded = [], start, end;\n                            for (var i = 0, l = pattern.length; i < l; i++) {\n                                if (pattern.charAt(i) === \"-\") {\n                                    end = pattern.charCodeAt(i + 1);\n                                    while (++start < end) expanded.push(String.fromCharCode(start));\n                                } else {\n                                    start = pattern.charCodeAt(i);\n                                    expanded.push(pattern.charAt(i));\n                                }\n                            }\n                            return expanded.join(\"\");\n                        }\n                        if (opts.regex && source.match.fn !== null && target.match.fn !== null) {\n                            return expand(target.match.def.replace(/[\\[\\]]/g, \"\")).indexOf(expand(source.match.def.replace(/[\\[\\]]/g, \"\"))) !== -1;\n                        }\n                        return source.match.def === target.match.nativeDef;\n                    }\n                    function staticCanMatchDefinition(source, target) {\n                        var sloc = source.locator.slice(source.alternation).join(\"\"), tloc = target.locator.slice(target.alternation).join(\"\"), canMatch = sloc == tloc;\n                        canMatch = canMatch && source.match.fn === null && target.match.fn !== null ? target.match.fn.test(source.match.def, getMaskSet(), pos, false, opts, false) : false;\n                        return canMatch;\n                    }\n                    function setMergeLocators(targetMatch, altMatch) {\n                        if (altMatch === undefined || targetMatch.alternation === altMatch.alternation && targetMatch.locator[targetMatch.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) === -1) {\n                            targetMatch.mloc = targetMatch.mloc || {};\n                            var locNdx = targetMatch.locator[targetMatch.alternation];\n                            if (locNdx === undefined) targetMatch.alternation = undefined; else {\n                                if (typeof locNdx === \"string\") locNdx = locNdx.split(\",\")[0];\n                                if (targetMatch.mloc[locNdx] === undefined) targetMatch.mloc[locNdx] = targetMatch.locator.slice();\n                                if (altMatch !== undefined) {\n                                    for (var ndx in altMatch.mloc) {\n                                        if (typeof ndx === \"string\") ndx = ndx.split(\",\")[0];\n                                        if (targetMatch.mloc[ndx] === undefined) targetMatch.mloc[ndx] = altMatch.mloc[ndx];\n                                    }\n                                    targetMatch.locator[targetMatch.alternation] = Object.keys(targetMatch.mloc).join(\",\");\n                                }\n                                return true;\n                            }\n                        }\n                        return false;\n                    }\n                    if (testPos > 500 && quantifierRecurse !== undefined) {\n                        throw \"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. \" + getMaskSet().mask;\n                    }\n                    if (testPos === pos && match.matches === undefined) {\n                        matches.push({\n                            match: match,\n                            locator: loopNdx.reverse(),\n                            cd: cacheDependency,\n                            mloc: {}\n                        });\n                        return true;\n                    } else if (match.matches !== undefined) {\n                        if (match.isGroup && quantifierRecurse !== match) {\n                            match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx, quantifierRecurse);\n                            if (match) return true;\n                        } else if (match.isOptional) {\n                            var optionalToken = match;\n                            match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse);\n                            if (match) {\n                                $.each(matches, function(ndx, mtch) {\n                                    mtch.match.optionality = true;\n                                });\n                                latestMatch = matches[matches.length - 1].match;\n                                if (quantifierRecurse === undefined && isFirstMatch(latestMatch, optionalToken)) {\n                                    insertStop = true;\n                                    testPos = pos;\n                                } else return true;\n                            }\n                        } else if (match.isAlternator) {\n                            var alternateToken = match, malternateMatches = [], maltMatches, currentMatches = matches.slice(), loopNdxCnt = loopNdx.length;\n                            var altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1;\n                            if (altIndex === -1 || typeof altIndex === \"string\") {\n                                var currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = [], amndx;\n                                if (typeof altIndex == \"string\") {\n                                    altIndexArr = altIndex.split(\",\");\n                                } else {\n                                    for (amndx = 0; amndx < alternateToken.matches.length; amndx++) {\n                                        altIndexArr.push(amndx.toString());\n                                    }\n                                }\n                                if (getMaskSet().excludes[pos]) {\n                                    var altIndexArrClone = altIndexArr.slice();\n                                    for (var i = 0, el = getMaskSet().excludes[pos].length; i < el; i++) {\n                                        altIndexArr.splice(altIndexArr.indexOf(getMaskSet().excludes[pos][i].toString()), 1);\n                                    }\n                                    if (altIndexArr.length === 0) {\n                                        getMaskSet().excludes[pos] = undefined;\n                                        altIndexArr = altIndexArrClone;\n                                    }\n                                }\n                                if (opts.keepStatic === true || isFinite(parseInt(opts.keepStatic)) && currentPos >= opts.keepStatic) altIndexArr = altIndexArr.slice(0, 1);\n                                var unMatchedAlternation = false;\n                                for (var ndx = 0; ndx < altIndexArr.length; ndx++) {\n                                    amndx = parseInt(altIndexArr[ndx]);\n                                    matches = [];\n                                    ndxInitializer = typeof altIndex === \"string\" ? resolveNdxInitializer(testPos, amndx, loopNdxCnt) || ndxInitializerClone.slice() : ndxInitializerClone.slice();\n                                    if (alternateToken.matches[amndx] && handleMatch(alternateToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse)) match = true; else if (ndx === 0) {\n                                        unMatchedAlternation = true;\n                                    }\n                                    maltMatches = matches.slice();\n                                    testPos = currentPos;\n                                    matches = [];\n                                    for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {\n                                        var altMatch = maltMatches[ndx1], dropMatch = false;\n                                        altMatch.match.jit = altMatch.match.jit || unMatchedAlternation;\n                                        altMatch.alternation = altMatch.alternation || loopNdxCnt;\n                                        setMergeLocators(altMatch);\n                                        for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {\n                                            var altMatch2 = malternateMatches[ndx2];\n                                            if (typeof altIndex !== \"string\" || altMatch.alternation !== undefined && $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr) !== -1) {\n                                                if (altMatch.match.nativeDef === altMatch2.match.nativeDef) {\n                                                    dropMatch = true;\n                                                    setMergeLocators(altMatch2, altMatch);\n                                                    break;\n                                                } else if (isSubsetOf(altMatch, altMatch2)) {\n                                                    if (setMergeLocators(altMatch, altMatch2)) {\n                                                        dropMatch = true;\n                                                        malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch);\n                                                    }\n                                                    break;\n                                                } else if (isSubsetOf(altMatch2, altMatch)) {\n                                                    setMergeLocators(altMatch2, altMatch);\n                                                    break;\n                                                } else if (staticCanMatchDefinition(altMatch, altMatch2)) {\n                                                    if (setMergeLocators(altMatch, altMatch2)) {\n                                                        dropMatch = true;\n                                                        malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch);\n                                                    }\n                                                    break;\n                                                }\n                                            }\n                                        }\n                                        if (!dropMatch) {\n                                            malternateMatches.push(altMatch);\n                                        }\n                                    }\n                                }\n                                matches = currentMatches.concat(malternateMatches);\n                                testPos = pos;\n                                insertStop = matches.length > 0;\n                                match = malternateMatches.length > 0;\n                                ndxInitializer = ndxInitializerClone.slice();\n                            } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse);\n                            if (match) return true;\n                        } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) {\n                            var qt = match;\n                            for (var qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && testPos <= pos; qndx++) {\n                                var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1];\n                                match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup);\n                                if (match) {\n                                    latestMatch = matches[matches.length - 1].match;\n                                    latestMatch.optionalQuantifier = qndx >= qt.quantifier.min;\n                                    latestMatch.jit = (qndx || 1) * tokenGroup.matches.indexOf(latestMatch) >= qt.quantifier.jit;\n                                    if (latestMatch.optionalQuantifier && isFirstMatch(latestMatch, tokenGroup)) {\n                                        insertStop = true;\n                                        testPos = pos;\n                                        break;\n                                    }\n                                    if (latestMatch.jit) {\n                                        getMaskSet().jitOffset[pos] = tokenGroup.matches.indexOf(latestMatch);\n                                    }\n                                    return true;\n                                }\n                            }\n                        } else {\n                            match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse);\n                            if (match) return true;\n                        }\n                    } else {\n                        testPos++;\n                    }\n                }\n                for (var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) {\n                    if (maskToken.matches[tndx].isQuantifier !== true) {\n                        var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse);\n                        if (match && testPos === pos) {\n                            return match;\n                        } else if (testPos > pos) {\n                            break;\n                        }\n                    }\n                }\n            }\n            function mergeLocators(pos, tests) {\n                var locator = [];\n                if (!$.isArray(tests)) tests = [ tests ];\n                if (tests.length > 0) {\n                    if (tests[0].alternation === undefined) {\n                        locator = determineTestTemplate(pos, tests.slice()).locator.slice();\n                        if (locator.length === 0) locator = tests[0].locator.slice();\n                    } else {\n                        $.each(tests, function(ndx, tst) {\n                            if (tst.def !== \"\") {\n                                if (locator.length === 0) locator = tst.locator.slice(); else {\n                                    for (var i = 0; i < locator.length; i++) {\n                                        if (tst.locator[i] && locator[i].toString().indexOf(tst.locator[i]) === -1) {\n                                            locator[i] += \",\" + tst.locator[i];\n                                        }\n                                    }\n                                }\n                            }\n                        });\n                    }\n                }\n                return locator;\n            }\n            if (pos > -1) {\n                if (ndxIntlzr === undefined) {\n                    var previousPos = pos - 1, test;\n                    while ((test = getMaskSet().validPositions[previousPos] || getMaskSet().tests[previousPos]) === undefined && previousPos > -1) {\n                        previousPos--;\n                    }\n                    if (test !== undefined && previousPos > -1) {\n                        ndxInitializer = mergeLocators(previousPos, test);\n                        cacheDependency = ndxInitializer.join(\"\");\n                        testPos = previousPos;\n                    }\n                }\n                if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) {\n                    return getMaskSet().tests[pos];\n                }\n                for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length; mtndx++) {\n                    var match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]);\n                    if (match && testPos === pos || testPos > pos) {\n                        break;\n                    }\n                }\n            }\n            if (matches.length === 0 || insertStop) {\n                matches.push({\n                    match: {\n                        fn: null,\n                        optionality: false,\n                        casing: null,\n                        def: \"\",\n                        placeholder: \"\"\n                    },\n                    locator: [],\n                    mloc: {},\n                    cd: cacheDependency\n                });\n            }\n            if (ndxIntlzr !== undefined && getMaskSet().tests[pos]) {\n                return $.extend(true, [], matches);\n            }\n            getMaskSet().tests[pos] = $.extend(true, [], matches);\n            return getMaskSet().tests[pos];\n        }\n        function getBufferTemplate() {\n            if (getMaskSet()._buffer === undefined) {\n                getMaskSet()._buffer = getMaskTemplate(false, 1);\n                if (getMaskSet().buffer === undefined) getMaskSet().buffer = getMaskSet()._buffer.slice();\n            }\n            return getMaskSet()._buffer;\n        }\n        function getBuffer(noCache) {\n            if (getMaskSet().buffer === undefined || noCache === true) {\n                getMaskSet().buffer = getMaskTemplate(true, getLastValidPosition(), true);\n                if (getMaskSet()._buffer === undefined) getMaskSet()._buffer = getMaskSet().buffer.slice();\n            }\n            return getMaskSet().buffer;\n        }\n        function refreshFromBuffer(start, end, buffer) {\n            var i, p;\n            if (start === true) {\n                resetMaskSet();\n                start = 0;\n                end = buffer.length;\n            } else {\n                for (i = start; i < end; i++) {\n                    delete getMaskSet().validPositions[i];\n                }\n            }\n            p = start;\n            for (i = start; i < end; i++) {\n                resetMaskSet(true);\n                if (buffer[i] !== opts.skipOptionalPartCharacter) {\n                    var valResult = isValid(p, buffer[i], true, true);\n                    if (valResult !== false) {\n                        resetMaskSet(true);\n                        p = valResult.caret !== undefined ? valResult.caret : valResult.pos + 1;\n                    }\n                }\n            }\n        }\n        function casing(elem, test, pos) {\n            switch (opts.casing || test.casing) {\n              case \"upper\":\n                elem = elem.toUpperCase();\n                break;\n\n              case \"lower\":\n                elem = elem.toLowerCase();\n                break;\n\n              case \"title\":\n                var posBefore = getMaskSet().validPositions[pos - 1];\n                if (pos === 0 || posBefore && posBefore.input === String.fromCharCode(Inputmask.keyCode.SPACE)) {\n                    elem = elem.toUpperCase();\n                } else {\n                    elem = elem.toLowerCase();\n                }\n                break;\n\n              default:\n                if ($.isFunction(opts.casing)) {\n                    var args = Array.prototype.slice.call(arguments);\n                    args.push(getMaskSet().validPositions);\n                    elem = opts.casing.apply(this, args);\n                }\n            }\n            return elem;\n        }\n        function checkAlternationMatch(altArr1, altArr2, na) {\n            var altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = false, naArr = na !== undefined ? na.split(\",\") : [], naNdx;\n            for (var i = 0; i < naArr.length; i++) {\n                if ((naNdx = altArr1.indexOf(naArr[i])) !== -1) {\n                    altArr1.splice(naNdx, 1);\n                }\n            }\n            for (var alndx = 0; alndx < altArr1.length; alndx++) {\n                if ($.inArray(altArr1[alndx], altArrC) !== -1) {\n                    isMatch = true;\n                    break;\n                }\n            }\n            return isMatch;\n        }\n        function alternate(pos, c, strict, fromSetValid, rAltPos) {\n            var validPsClone = $.extend(true, {}, getMaskSet().validPositions), lastAlt, alternation, isValidRslt = false, altPos, prevAltPos, i, validPos, decisionPos, lAltPos = rAltPos !== undefined ? rAltPos : getLastValidPosition();\n            if (lAltPos === -1 && rAltPos === undefined) {\n                lastAlt = 0;\n                prevAltPos = getTest(lastAlt);\n                alternation = prevAltPos.alternation;\n            } else {\n                for (;lAltPos >= 0; lAltPos--) {\n                    altPos = getMaskSet().validPositions[lAltPos];\n                    if (altPos && altPos.alternation !== undefined) {\n                        if (prevAltPos && prevAltPos.locator[altPos.alternation] !== altPos.locator[altPos.alternation]) {\n                            break;\n                        }\n                        lastAlt = lAltPos;\n                        alternation = getMaskSet().validPositions[lastAlt].alternation;\n                        prevAltPos = altPos;\n                    }\n                }\n            }\n            if (alternation !== undefined) {\n                decisionPos = parseInt(lastAlt);\n                getMaskSet().excludes[decisionPos] = getMaskSet().excludes[decisionPos] || [];\n                if (pos !== true) {\n                    getMaskSet().excludes[decisionPos].push(getDecisionTaker(prevAltPos));\n                }\n                var validInputsClone = [], staticInputsBeforePos = 0;\n                for (i = decisionPos; i < getLastValidPosition(undefined, true) + 1; i++) {\n                    validPos = getMaskSet().validPositions[i];\n                    if (validPos && validPos.generatedInput !== true) {\n                        validInputsClone.push(validPos.input);\n                    } else if (i < pos) staticInputsBeforePos++;\n                    delete getMaskSet().validPositions[i];\n                }\n                while (getMaskSet().excludes[decisionPos] && getMaskSet().excludes[decisionPos].length < 10) {\n                    var posOffset = staticInputsBeforePos * -1, validInputs = validInputsClone.slice();\n                    getMaskSet().tests[decisionPos] = undefined;\n                    resetMaskSet(true);\n                    isValidRslt = true;\n                    while (validInputs.length > 0) {\n                        var input = validInputs.shift();\n                        if (!(isValidRslt = isValid(getLastValidPosition(undefined, true) + 1, input, false, fromSetValid, true))) {\n                            break;\n                        }\n                    }\n                    if (isValidRslt && c !== undefined) {\n                        var targetLvp = getLastValidPosition(pos) + 1;\n                        for (i = decisionPos; i < getLastValidPosition() + 1; i++) {\n                            validPos = getMaskSet().validPositions[i];\n                            if ((validPos === undefined || validPos.match.fn == null) && i < pos + posOffset) {\n                                posOffset++;\n                            }\n                        }\n                        pos = pos + posOffset;\n                        isValidRslt = isValid(pos > targetLvp ? targetLvp : pos, c, strict, fromSetValid, true);\n                    }\n                    if (!isValidRslt) {\n                        resetMaskSet();\n                        prevAltPos = getTest(decisionPos);\n                        getMaskSet().validPositions = $.extend(true, {}, validPsClone);\n                        if (getMaskSet().excludes[decisionPos]) {\n                            var decisionTaker = getDecisionTaker(prevAltPos);\n                            if (getMaskSet().excludes[decisionPos].indexOf(decisionTaker) !== -1) {\n                                isValidRslt = alternate(pos, c, strict, fromSetValid, decisionPos - 1);\n                                break;\n                            }\n                            getMaskSet().excludes[decisionPos].push(decisionTaker);\n                            for (i = decisionPos; i < getLastValidPosition(undefined, true) + 1; i++) delete getMaskSet().validPositions[i];\n                        } else {\n                            isValidRslt = alternate(pos, c, strict, fromSetValid, decisionPos - 1);\n                            break;\n                        }\n                    } else break;\n                }\n            }\n            getMaskSet().excludes[decisionPos] = undefined;\n            return isValidRslt;\n        }\n        function isValid(pos, c, strict, fromSetValid, fromAlternate, validateOnly) {\n            function isSelection(posObj) {\n                return isRTL ? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end === 1 : posObj.end - posObj.begin > 1 || posObj.end - posObj.begin === 1;\n            }\n            strict = strict === true;\n            var maskPos = pos;\n            if (pos.begin !== undefined) {\n                maskPos = isRTL ? pos.end : pos.begin;\n            }\n            function _isValid(position, c, strict) {\n                var rslt = false;\n                $.each(getTests(position), function(ndx, tst) {\n                    var test = tst.match;\n                    getBuffer(true);\n                    rslt = test.fn != null ? test.fn.test(c, getMaskSet(), position, strict, opts, isSelection(pos)) : (c === test.def || c === opts.skipOptionalPartCharacter) && test.def !== \"\" ? {\n                        c: getPlaceholder(position, test, true) || test.def,\n                        pos: position\n                    } : false;\n                    if (rslt !== false) {\n                        var elem = rslt.c !== undefined ? rslt.c : c, validatedPos = position;\n                        elem = elem === opts.skipOptionalPartCharacter && test.fn === null ? getPlaceholder(position, test, true) || test.def : elem;\n                        if (rslt.remove !== undefined) {\n                            if (!$.isArray(rslt.remove)) rslt.remove = [ rslt.remove ];\n                            $.each(rslt.remove.sort(function(a, b) {\n                                return b - a;\n                            }), function(ndx, lmnt) {\n                                revalidateMask({\n                                    begin: lmnt,\n                                    end: lmnt + 1\n                                });\n                            });\n                        }\n                        if (rslt.insert !== undefined) {\n                            if (!$.isArray(rslt.insert)) rslt.insert = [ rslt.insert ];\n                            $.each(rslt.insert.sort(function(a, b) {\n                                return a - b;\n                            }), function(ndx, lmnt) {\n                                isValid(lmnt.pos, lmnt.c, true, fromSetValid);\n                            });\n                        }\n                        if (rslt !== true && rslt.pos !== undefined && rslt.pos !== position) {\n                            validatedPos = rslt.pos;\n                        }\n                        if (rslt !== true && rslt.pos === undefined && rslt.c === undefined) {\n                            return false;\n                        }\n                        if (!revalidateMask(pos, $.extend({}, tst, {\n                            input: casing(elem, test, validatedPos)\n                        }), fromSetValid, validatedPos)) {\n                            rslt = false;\n                        }\n                        return false;\n                    }\n                });\n                return rslt;\n            }\n            var result = true, positionsClone = $.extend(true, {}, getMaskSet().validPositions);\n            if ($.isFunction(opts.preValidation) && !strict && fromSetValid !== true && validateOnly !== true) {\n                result = opts.preValidation(getBuffer(), maskPos, c, isSelection(pos), opts, getMaskSet());\n            }\n            if (result === true) {\n                trackbackPositions(undefined, maskPos, true);\n                if (maxLength === undefined || maskPos < maxLength) {\n                    result = _isValid(maskPos, c, strict);\n                    if ((!strict || fromSetValid === true) && result === false && validateOnly !== true) {\n                        var currentPosValid = getMaskSet().validPositions[maskPos];\n                        if (currentPosValid && currentPosValid.match.fn === null && (currentPosValid.match.def === c || c === opts.skipOptionalPartCharacter)) {\n                            result = {\n                                caret: seekNext(maskPos)\n                            };\n                        } else {\n                            if ((opts.insertMode || getMaskSet().validPositions[seekNext(maskPos)] === undefined) && (!isMask(maskPos, true) || getMaskSet().jitOffset[maskPos])) {\n                                if (getMaskSet().jitOffset[maskPos] && getMaskSet().validPositions[seekNext(maskPos)] === undefined) {\n                                    result = isValid(maskPos + getMaskSet().jitOffset[maskPos], c, strict);\n                                    if (result !== false) result.caret = maskPos;\n                                } else for (var nPos = maskPos + 1, snPos = seekNext(maskPos); nPos <= snPos; nPos++) {\n                                    result = _isValid(nPos, c, strict);\n                                    if (result !== false) {\n                                        result = trackbackPositions(maskPos, result.pos !== undefined ? result.pos : nPos) || result;\n                                        maskPos = nPos;\n                                        break;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n                if (result === false && opts.keepStatic !== false && (opts.regex == null || isComplete(getBuffer())) && !strict && fromAlternate !== true) {\n                    result = alternate(maskPos, c, strict, fromSetValid);\n                }\n                if (result === true) {\n                    result = {\n                        pos: maskPos\n                    };\n                }\n            }\n            if ($.isFunction(opts.postValidation) && result !== false && !strict && fromSetValid !== true && validateOnly !== true) {\n                var postResult = opts.postValidation(getBuffer(true), pos.begin !== undefined ? isRTL ? pos.end : pos.begin : pos, result, opts);\n                if (postResult !== undefined) {\n                    if (postResult.refreshFromBuffer && postResult.buffer) {\n                        var refresh = postResult.refreshFromBuffer;\n                        refreshFromBuffer(refresh === true ? refresh : refresh.start, refresh.end, postResult.buffer);\n                    }\n                    result = postResult === true ? result : postResult;\n                }\n            }\n            if (result && result.pos === undefined) {\n                result.pos = maskPos;\n            }\n            if (result === false || validateOnly === true) {\n                resetMaskSet(true);\n                getMaskSet().validPositions = $.extend(true, {}, positionsClone);\n            }\n            return result;\n        }\n        function trackbackPositions(originalPos, newPos, fillOnly) {\n            var result;\n            if (originalPos === undefined) {\n                for (originalPos = newPos - 1; originalPos > 0; originalPos--) {\n                    if (getMaskSet().validPositions[originalPos]) break;\n                }\n            }\n            for (var ps = originalPos; ps < newPos; ps++) {\n                if (getMaskSet().validPositions[ps] === undefined && !isMask(ps, true)) {\n                    var vp = ps == 0 ? getTest(ps) : getMaskSet().validPositions[ps - 1];\n                    if (vp) {\n                        var tests = getTests(ps).slice();\n                        if (tests[tests.length - 1].match.def === \"\") tests.pop();\n                        var bestMatch = determineTestTemplate(ps, tests);\n                        bestMatch = $.extend({}, bestMatch, {\n                            input: getPlaceholder(ps, bestMatch.match, true) || bestMatch.match.def\n                        });\n                        bestMatch.generatedInput = true;\n                        revalidateMask(ps, bestMatch, true);\n                        if (fillOnly !== true) {\n                            var cvpInput = getMaskSet().validPositions[newPos].input;\n                            getMaskSet().validPositions[newPos] = undefined;\n                            result = isValid(newPos, cvpInput, true, true);\n                        }\n                    }\n                }\n            }\n            return result;\n        }\n        function revalidateMask(pos, validTest, fromSetValid, validatedPos) {\n            function IsEnclosedStatic(pos, valids, selection) {\n                var posMatch = valids[pos];\n                if (posMatch !== undefined && (posMatch.match.fn === null && posMatch.match.optionality !== true || posMatch.input === opts.radixPoint)) {\n                    var prevMatch = selection.begin <= pos - 1 ? valids[pos - 1] && valids[pos - 1].match.fn === null && valids[pos - 1] : valids[pos - 1], nextMatch = selection.end > pos + 1 ? valids[pos + 1] && valids[pos + 1].match.fn === null && valids[pos + 1] : valids[pos + 1];\n                    return prevMatch && nextMatch;\n                }\n                return false;\n            }\n            var begin = pos.begin !== undefined ? pos.begin : pos, end = pos.end !== undefined ? pos.end : pos;\n            if (pos.begin > pos.end) {\n                begin = pos.end;\n                end = pos.begin;\n            }\n            validatedPos = validatedPos !== undefined ? validatedPos : begin;\n            if (begin !== end || opts.insertMode && getMaskSet().validPositions[validatedPos] !== undefined && fromSetValid === undefined) {\n                var positionsClone = $.extend(true, {}, getMaskSet().validPositions), lvp = getLastValidPosition(undefined, true), i;\n                getMaskSet().p = begin;\n                for (i = lvp; i >= begin; i--) {\n                    if (getMaskSet().validPositions[i] && getMaskSet().validPositions[i].match.nativeDef === \"+\") {\n                        opts.isNegative = false;\n                    }\n                    delete getMaskSet().validPositions[i];\n                }\n                var valid = true, j = validatedPos, vps = getMaskSet().validPositions, needsValidation = false, posMatch = j, i = j;\n                if (validTest) {\n                    getMaskSet().validPositions[validatedPos] = $.extend(true, {}, validTest);\n                    posMatch++;\n                    j++;\n                    if (begin < end) i++;\n                }\n                for (;i <= lvp; i++) {\n                    var t = positionsClone[i];\n                    if (t !== undefined && (i >= end || i >= begin && t.generatedInput !== true && IsEnclosedStatic(i, positionsClone, {\n                        begin: begin,\n                        end: end\n                    }))) {\n                        while (getTest(posMatch).match.def !== \"\") {\n                            if (needsValidation === false && positionsClone[posMatch] && positionsClone[posMatch].match.nativeDef === t.match.nativeDef) {\n                                getMaskSet().validPositions[posMatch] = $.extend(true, {}, positionsClone[posMatch]);\n                                getMaskSet().validPositions[posMatch].input = t.input;\n                                trackbackPositions(undefined, posMatch, true);\n                                j = posMatch + 1;\n                                valid = true;\n                            } else if (opts.shiftPositions && positionCanMatchDefinition(posMatch, t.match.def)) {\n                                var result = isValid(posMatch, t.input, true, true);\n                                valid = result !== false;\n                                j = result.caret || result.insert ? getLastValidPosition() : posMatch + 1;\n                                needsValidation = true;\n                            } else {\n                                valid = t.generatedInput === true || t.input === opts.radixPoint && opts.numericInput === true;\n                            }\n                            if (valid) break;\n                            if (!valid && posMatch > end && isMask(posMatch, true) && (t.match.fn !== null || posMatch > getMaskSet().maskLength)) {\n                                break;\n                            }\n                            posMatch++;\n                        }\n                        if (getTest(posMatch).match.def == \"\") valid = false;\n                        posMatch = j;\n                    }\n                    if (!valid) break;\n                }\n                if (!valid) {\n                    getMaskSet().validPositions = $.extend(true, {}, positionsClone);\n                    resetMaskSet(true);\n                    return false;\n                }\n            } else if (validTest) {\n                getMaskSet().validPositions[validatedPos] = $.extend(true, {}, validTest);\n            }\n            resetMaskSet(true);\n            return true;\n        }\n        function isMask(pos, strict) {\n            var test = getTestTemplate(pos).match;\n            if (test.def === \"\") test = getTest(pos).match;\n            if (test.fn != null) {\n                return test.fn;\n            }\n            if (strict !== true && pos > -1) {\n                var tests = getTests(pos);\n                return tests.length > 1 + (tests[tests.length - 1].match.def === \"\" ? 1 : 0);\n            }\n            return false;\n        }\n        function seekNext(pos, newBlock) {\n            var position = pos + 1;\n            while (getTest(position).match.def !== \"\" && (newBlock === true && (getTest(position).match.newBlockMarker !== true || !isMask(position)) || newBlock !== true && !isMask(position))) {\n                position++;\n            }\n            return position;\n        }\n        function seekPrevious(pos, newBlock) {\n            var position = pos, tests;\n            if (position <= 0) return 0;\n            while (--position > 0 && (newBlock === true && getTest(position).match.newBlockMarker !== true || newBlock !== true && !isMask(position) && (tests = getTests(position), \n            tests.length < 2 || tests.length === 2 && tests[1].match.def === \"\"))) {}\n            return position;\n        }\n        function writeBuffer(input, buffer, caretPos, event, triggerEvents) {\n            if (event && $.isFunction(opts.onBeforeWrite)) {\n                var result = opts.onBeforeWrite.call(inputmask, event, buffer, caretPos, opts);\n                if (result) {\n                    if (result.refreshFromBuffer) {\n                        var refresh = result.refreshFromBuffer;\n                        refreshFromBuffer(refresh === true ? refresh : refresh.start, refresh.end, result.buffer || buffer);\n                        buffer = getBuffer(true);\n                    }\n                    if (caretPos !== undefined) caretPos = result.caret !== undefined ? result.caret : caretPos;\n                }\n            }\n            if (input !== undefined) {\n                input.inputmask._valueSet(buffer.join(\"\"));\n                if (caretPos !== undefined && (event === undefined || event.type !== \"blur\")) {\n                    caret(input, caretPos);\n                } else renderColorMask(input, caretPos, buffer.length === 0);\n                if (triggerEvents === true) {\n                    var $input = $(input), nptVal = input.inputmask._valueGet();\n                    skipInputEvent = true;\n                    $input.trigger(\"input\");\n                    setTimeout(function() {\n                        if (nptVal === getBufferTemplate().join(\"\")) {\n                            $input.trigger(\"cleared\");\n                        } else if (isComplete(buffer) === true) {\n                            $input.trigger(\"complete\");\n                        }\n                    }, 0);\n                }\n            }\n        }\n        function getPlaceholder(pos, test, returnPL) {\n            test = test || getTest(pos).match;\n            if (test.placeholder !== undefined || returnPL === true) {\n                return $.isFunction(test.placeholder) ? test.placeholder(opts) : test.placeholder;\n            } else if (test.fn === null) {\n                if (pos > -1 && getMaskSet().validPositions[pos] === undefined) {\n                    var tests = getTests(pos), staticAlternations = [], prevTest;\n                    if (tests.length > 1 + (tests[tests.length - 1].match.def === \"\" ? 1 : 0)) {\n                        for (var i = 0; i < tests.length; i++) {\n                            if (tests[i].match.optionality !== true && tests[i].match.optionalQuantifier !== true && (tests[i].match.fn === null || (prevTest === undefined || tests[i].match.fn.test(prevTest.match.def, getMaskSet(), pos, true, opts) !== false))) {\n                                staticAlternations.push(tests[i]);\n                                if (tests[i].match.fn === null) prevTest = tests[i];\n                                if (staticAlternations.length > 1) {\n                                    if (/[0-9a-bA-Z]/.test(staticAlternations[0].match.def)) {\n                                        return opts.placeholder.charAt(pos % opts.placeholder.length);\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n                return test.def;\n            }\n            return opts.placeholder.charAt(pos % opts.placeholder.length);\n        }\n        function HandleNativePlaceholder(npt, value) {\n            if (ie) {\n                if (npt.inputmask._valueGet() !== value && (npt.placeholder !== value || npt.placeholder === \"\")) {\n                    var buffer = getBuffer().slice(), nptValue = npt.inputmask._valueGet();\n                    if (nptValue !== value) {\n                        var lvp = getLastValidPosition();\n                        if (lvp === -1 && nptValue === getBufferTemplate().join(\"\")) {\n                            buffer = [];\n                        } else if (lvp !== -1) {\n                            clearOptionalTail(buffer);\n                        }\n                        writeBuffer(npt, buffer);\n                    }\n                }\n            } else if (npt.placeholder !== value) {\n                npt.placeholder = value;\n                if (npt.placeholder === \"\") npt.removeAttribute(\"placeholder\");\n            }\n        }\n        var EventRuler = {\n            on: function(input, eventName, eventHandler) {\n                var ev = function(e) {\n                    var that = this;\n                    if (that.inputmask === undefined && this.nodeName !== \"FORM\") {\n                        var imOpts = $.data(that, \"_inputmask_opts\");\n                        if (imOpts) new Inputmask(imOpts).mask(that); else EventRuler.off(that);\n                    } else if (e.type !== \"setvalue\" && this.nodeName !== \"FORM\" && (that.disabled || that.readOnly && !(e.type === \"keydown\" && (e.ctrlKey && e.keyCode === 67) || opts.tabThrough === false && e.keyCode === Inputmask.keyCode.TAB))) {\n                        e.preventDefault();\n                    } else {\n                        switch (e.type) {\n                          case \"input\":\n                            if (skipInputEvent === true) {\n                                skipInputEvent = false;\n                                return e.preventDefault();\n                            }\n                            if (mobile) {\n                                var args = arguments;\n                                setTimeout(function() {\n                                    eventHandler.apply(that, args);\n                                    caret(that, that.inputmask.caretPos, undefined, true);\n                                }, 0);\n                                return false;\n                            }\n                            break;\n\n                          case \"keydown\":\n                            skipKeyPressEvent = false;\n                            skipInputEvent = false;\n                            break;\n\n                          case \"keypress\":\n                            if (skipKeyPressEvent === true) {\n                                return e.preventDefault();\n                            }\n                            skipKeyPressEvent = true;\n                            break;\n\n                          case \"click\":\n                            if (iemobile || iphone) {\n                                var args = arguments;\n                                setTimeout(function() {\n                                    eventHandler.apply(that, args);\n                                }, 0);\n                                return false;\n                            }\n                            break;\n                        }\n                        var returnVal = eventHandler.apply(that, arguments);\n                        if (returnVal === false) {\n                            e.preventDefault();\n                            e.stopPropagation();\n                        }\n                        return returnVal;\n                    }\n                };\n                input.inputmask.events[eventName] = input.inputmask.events[eventName] || [];\n                input.inputmask.events[eventName].push(ev);\n                if ($.inArray(eventName, [ \"submit\", \"reset\" ]) !== -1) {\n                    if (input.form !== null) $(input.form).on(eventName, ev);\n                } else {\n                    $(input).on(eventName, ev);\n                }\n            },\n            off: function(input, event) {\n                if (input.inputmask && input.inputmask.events) {\n                    var events;\n                    if (event) {\n                        events = [];\n                        events[event] = input.inputmask.events[event];\n                    } else {\n                        events = input.inputmask.events;\n                    }\n                    $.each(events, function(eventName, evArr) {\n                        while (evArr.length > 0) {\n                            var ev = evArr.pop();\n                            if ($.inArray(eventName, [ \"submit\", \"reset\" ]) !== -1) {\n                                if (input.form !== null) $(input.form).off(eventName, ev);\n                            } else {\n                                $(input).off(eventName, ev);\n                            }\n                        }\n                        delete input.inputmask.events[eventName];\n                    });\n                }\n            }\n        };\n        var EventHandlers = {\n            keydownEvent: function(e) {\n                var input = this, $input = $(input), k = e.keyCode, pos = caret(input);\n                if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE || iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === Inputmask.keyCode.X && !isInputEventSupported(\"cut\")) {\n                    e.preventDefault();\n                    handleRemove(input, k, pos);\n                    writeBuffer(input, getBuffer(true), getMaskSet().p, e, input.inputmask._valueGet() !== getBuffer().join(\"\"));\n                } else if (k === Inputmask.keyCode.END || k === Inputmask.keyCode.PAGE_DOWN) {\n                    e.preventDefault();\n                    var caretPos = seekNext(getLastValidPosition());\n                    caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, true);\n                } else if (k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP) {\n                    e.preventDefault();\n                    caret(input, 0, e.shiftKey ? pos.begin : 0, true);\n                } else if ((opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || k === 90 && e.ctrlKey) && e.altKey !== true) {\n                    checkVal(input, true, false, undoValue.split(\"\"));\n                    $input.trigger(\"click\");\n                } else if (k === Inputmask.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) {\n                    opts.insertMode = !opts.insertMode;\n                    input.setAttribute(\"im-insert\", opts.insertMode);\n                } else if (opts.tabThrough === true && k === Inputmask.keyCode.TAB) {\n                    if (e.shiftKey === true) {\n                        if (getTest(pos.begin).match.fn === null) {\n                            pos.begin = seekNext(pos.begin);\n                        }\n                        pos.end = seekPrevious(pos.begin, true);\n                        pos.begin = seekPrevious(pos.end, true);\n                    } else {\n                        pos.begin = seekNext(pos.begin, true);\n                        pos.end = seekNext(pos.begin, true);\n                        if (pos.end < getMaskSet().maskLength) pos.end--;\n                    }\n                    if (pos.begin < getMaskSet().maskLength) {\n                        e.preventDefault();\n                        caret(input, pos.begin, pos.end);\n                    }\n                }\n                opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts);\n                ignorable = $.inArray(k, opts.ignorables) !== -1;\n            },\n            keypressEvent: function(e, checkval, writeOut, strict, ndx) {\n                var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode;\n                if (checkval !== true && (!(e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable))) {\n                    if (k === Inputmask.keyCode.ENTER && undoValue !== getBuffer().join(\"\")) {\n                        undoValue = getBuffer().join(\"\");\n                        setTimeout(function() {\n                            $input.trigger(\"change\");\n                        }, 0);\n                    }\n                    return true;\n                } else {\n                    if (k) {\n                        if (k === 46 && e.shiftKey === false && opts.radixPoint !== \"\") k = opts.radixPoint.charCodeAt(0);\n                        var pos = checkval ? {\n                            begin: ndx,\n                            end: ndx\n                        } : caret(input), forwardPosition, c = String.fromCharCode(k), offset = 0;\n                        if (opts._radixDance && opts.numericInput) {\n                            var caretPos = getBuffer().indexOf(opts.radixPoint.charAt(0)) + 1;\n                            if (pos.begin <= caretPos) {\n                                if (k === opts.radixPoint.charCodeAt(0)) offset = 1;\n                                pos.begin -= 1;\n                                pos.end -= 1;\n                            }\n                        }\n                        getMaskSet().writeOutBuffer = true;\n                        var valResult = isValid(pos, c, strict);\n                        if (valResult !== false) {\n                            resetMaskSet(true);\n                            forwardPosition = valResult.caret !== undefined ? valResult.caret : seekNext(valResult.pos.begin ? valResult.pos.begin : valResult.pos);\n                            getMaskSet().p = forwardPosition;\n                        }\n                        forwardPosition = (opts.numericInput && valResult.caret === undefined ? seekPrevious(forwardPosition) : forwardPosition) + offset;\n                        if (writeOut !== false) {\n                            setTimeout(function() {\n                                opts.onKeyValidation.call(input, k, valResult, opts);\n                            }, 0);\n                            if (getMaskSet().writeOutBuffer && valResult !== false) {\n                                var buffer = getBuffer();\n                                writeBuffer(input, buffer, forwardPosition, e, checkval !== true);\n                            }\n                        }\n                        e.preventDefault();\n                        if (checkval) {\n                            if (valResult !== false) valResult.forwardPosition = forwardPosition;\n                            return valResult;\n                        }\n                    }\n                }\n            },\n            pasteEvent: function(e) {\n                var input = this, ev = e.originalEvent || e, $input = $(input), inputValue = input.inputmask._valueGet(true), caretPos = caret(input), tempValue;\n                if (isRTL) {\n                    tempValue = caretPos.end;\n                    caretPos.end = caretPos.begin;\n                    caretPos.begin = tempValue;\n                }\n                var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length);\n                if (valueBeforeCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join(\"\")) valueBeforeCaret = \"\";\n                if (valueAfterCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(caretPos.end).join(\"\")) valueAfterCaret = \"\";\n                if (window.clipboardData && window.clipboardData.getData) {\n                    inputValue = valueBeforeCaret + window.clipboardData.getData(\"Text\") + valueAfterCaret;\n                } else if (ev.clipboardData && ev.clipboardData.getData) {\n                    inputValue = valueBeforeCaret + ev.clipboardData.getData(\"text/plain\") + valueAfterCaret;\n                } else return true;\n                var pasteValue = inputValue;\n                if ($.isFunction(opts.onBeforePaste)) {\n                    pasteValue = opts.onBeforePaste.call(inputmask, inputValue, opts);\n                    if (pasteValue === false) {\n                        return e.preventDefault();\n                    }\n                    if (!pasteValue) {\n                        pasteValue = inputValue;\n                    }\n                }\n                checkVal(input, false, false, pasteValue.toString().split(\"\"));\n                writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()), e, undoValue !== getBuffer().join(\"\"));\n                return e.preventDefault();\n            },\n            inputFallBackEvent: function(e) {\n                function radixPointHandler(input, inputValue, caretPos) {\n                    if (inputValue.charAt(caretPos.begin - 1) === \".\" && opts.radixPoint !== \"\") {\n                        inputValue = inputValue.split(\"\");\n                        inputValue[caretPos.begin - 1] = opts.radixPoint.charAt(0);\n                        inputValue = inputValue.join(\"\");\n                    }\n                    return inputValue;\n                }\n                function ieMobileHandler(input, inputValue, caretPos) {\n                    if (iemobile) {\n                        var inputChar = inputValue.replace(getBuffer().join(\"\"), \"\");\n                        if (inputChar.length === 1) {\n                            var iv = inputValue.split(\"\");\n                            iv.splice(caretPos.begin, 0, inputChar);\n                            inputValue = iv.join(\"\");\n                        }\n                    }\n                    return inputValue;\n                }\n                var input = this, inputValue = input.inputmask._valueGet();\n                if (getBuffer().join(\"\") !== inputValue) {\n                    var caretPos = caret(input);\n                    inputValue = radixPointHandler(input, inputValue, caretPos);\n                    inputValue = ieMobileHandler(input, inputValue, caretPos);\n                    if (getBuffer().join(\"\") !== inputValue) {\n                        var buffer = getBuffer().join(\"\"), offset = !opts.numericInput && inputValue.length > buffer.length ? -1 : 0, frontPart = inputValue.substr(0, caretPos.begin), backPart = inputValue.substr(caretPos.begin), frontBufferPart = buffer.substr(0, caretPos.begin + offset), backBufferPart = buffer.substr(caretPos.begin + offset);\n                        var selection = caretPos, entries = \"\", isEntry = false;\n                        if (frontPart !== frontBufferPart) {\n                            var fpl = (isEntry = frontPart.length >= frontBufferPart.length) ? frontPart.length : frontBufferPart.length, i;\n                            for (i = 0; frontPart.charAt(i) === frontBufferPart.charAt(i) && i < fpl; i++) ;\n                            if (isEntry) {\n                                selection.begin = i - offset;\n                                entries += frontPart.slice(i, selection.end);\n                            }\n                        }\n                        if (backPart !== backBufferPart) {\n                            if (backPart.length > backBufferPart.length) {\n                                entries += backPart.slice(0, 1);\n                            } else {\n                                if (backPart.length < backBufferPart.length) {\n                                    selection.end += backBufferPart.length - backPart.length;\n                                    if (!isEntry && opts.radixPoint !== \"\" && backPart === \"\" && frontPart.charAt(selection.begin + offset - 1) === opts.radixPoint) {\n                                        selection.begin--;\n                                        entries = opts.radixPoint;\n                                    }\n                                }\n                            }\n                        }\n                        writeBuffer(input, getBuffer(), {\n                            begin: selection.begin + offset,\n                            end: selection.end + offset\n                        });\n                        if (entries.length > 0) {\n                            $.each(entries.split(\"\"), function(ndx, entry) {\n                                var keypress = new $.Event(\"keypress\");\n                                keypress.which = entry.charCodeAt(0);\n                                ignorable = false;\n                                EventHandlers.keypressEvent.call(input, keypress);\n                            });\n                        } else {\n                            if (selection.begin === selection.end - 1) {\n                                selection.begin = seekPrevious(selection.begin + 1);\n                                if (selection.begin === selection.end - 1) {\n                                    caret(input, selection.begin);\n                                } else {\n                                    caret(input, selection.begin, selection.end);\n                                }\n                            }\n                            var keydown = new $.Event(\"keydown\");\n                            keydown.keyCode = opts.numericInput ? Inputmask.keyCode.BACKSPACE : Inputmask.keyCode.DELETE;\n                            EventHandlers.keydownEvent.call(input, keydown);\n                        }\n                        e.preventDefault();\n                    }\n                }\n            },\n            beforeInputEvent: function(e) {\n                if (e.cancelable) {\n                    var input = this;\n                    switch (e.inputType) {\n                      case \"insertText\":\n                        $.each(e.data.split(\"\"), function(ndx, entry) {\n                            var keypress = new $.Event(\"keypress\");\n                            keypress.which = entry.charCodeAt(0);\n                            ignorable = false;\n                            EventHandlers.keypressEvent.call(input, keypress);\n                        });\n                        return e.preventDefault();\n\n                      case \"deleteContentBackward\":\n                        var keydown = new $.Event(\"keydown\");\n                        keydown.keyCode = Inputmask.keyCode.BACKSPACE;\n                        EventHandlers.keydownEvent.call(input, keydown);\n                        return e.preventDefault();\n\n                      case \"deleteContentForward\":\n                        var keydown = new $.Event(\"keydown\");\n                        keydown.keyCode = Inputmask.keyCode.DELETE;\n                        EventHandlers.keydownEvent.call(input, keydown);\n                        return e.preventDefault();\n                    }\n                }\n            },\n            setValueEvent: function(e) {\n                this.inputmask.refreshValue = false;\n                var input = this, value = e && e.detail ? e.detail[0] : arguments[1], value = value || input.inputmask._valueGet(true);\n                if ($.isFunction(opts.onBeforeMask)) value = opts.onBeforeMask.call(inputmask, value, opts) || value;\n                value = value.toString().split(\"\");\n                checkVal(input, true, false, value);\n                undoValue = getBuffer().join(\"\");\n                if ((opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join(\"\")) {\n                    input.inputmask._valueSet(\"\");\n                }\n            },\n            focusEvent: function(e) {\n                var input = this, nptValue = input.inputmask._valueGet();\n                if (opts.showMaskOnFocus) {\n                    if (nptValue !== getBuffer().join(\"\")) {\n                        writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()));\n                    } else if (mouseEnter === false) {\n                        caret(input, seekNext(getLastValidPosition()));\n                    }\n                }\n                if (opts.positionCaretOnTab === true && mouseEnter === false) {\n                    EventHandlers.clickEvent.apply(input, [ e, true ]);\n                }\n                undoValue = getBuffer().join(\"\");\n            },\n            mouseleaveEvent: function(e) {\n                var input = this;\n                mouseEnter = false;\n                if (opts.clearMaskOnLostFocus && document.activeElement !== input) {\n                    HandleNativePlaceholder(input, originalPlaceholder);\n                }\n            },\n            clickEvent: function(e, tabbed) {\n                function doRadixFocus(clickPos) {\n                    if (opts.radixPoint !== \"\") {\n                        var vps = getMaskSet().validPositions;\n                        if (vps[clickPos] === undefined || vps[clickPos].input === getPlaceholder(clickPos)) {\n                            if (clickPos < seekNext(-1)) return true;\n                            var radixPos = $.inArray(opts.radixPoint, getBuffer());\n                            if (radixPos !== -1) {\n                                for (var vp in vps) {\n                                    if (radixPos < vp && vps[vp].input !== getPlaceholder(vp)) {\n                                        return false;\n                                    }\n                                }\n                                return true;\n                            }\n                        }\n                    }\n                    return false;\n                }\n                var input = this;\n                setTimeout(function() {\n                    if (document.activeElement === input) {\n                        var selectedCaret = caret(input);\n                        if (tabbed) {\n                            if (isRTL) {\n                                selectedCaret.end = selectedCaret.begin;\n                            } else {\n                                selectedCaret.begin = selectedCaret.end;\n                            }\n                        }\n                        if (selectedCaret.begin === selectedCaret.end) {\n                            switch (opts.positionCaretOnClick) {\n                              case \"none\":\n                                break;\n\n                              case \"select\":\n                                caret(input, 0, getBuffer().length);\n                                break;\n\n                              case \"ignore\":\n                                caret(input, seekNext(getLastValidPosition()));\n                                break;\n\n                              case \"radixFocus\":\n                                if (doRadixFocus(selectedCaret.begin)) {\n                                    var radixPos = getBuffer().join(\"\").indexOf(opts.radixPoint);\n                                    caret(input, opts.numericInput ? seekNext(radixPos) : radixPos);\n                                    break;\n                                }\n\n                              default:\n                                var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, true), lastPosition = seekNext(lvclickPosition);\n                                if (clickPosition < lastPosition) {\n                                    caret(input, !isMask(clickPosition, true) && !isMask(clickPosition - 1, true) ? seekNext(clickPosition) : clickPosition);\n                                } else {\n                                    var lvp = getMaskSet().validPositions[lvclickPosition], tt = getTestTemplate(lastPosition, lvp ? lvp.match.locator : undefined, lvp), placeholder = getPlaceholder(lastPosition, tt.match);\n                                    if (placeholder !== \"\" && getBuffer()[lastPosition] !== placeholder && tt.match.optionalQuantifier !== true && tt.match.newBlockMarker !== true || !isMask(lastPosition, opts.keepStatic) && tt.match.def === placeholder) {\n                                        var newPos = seekNext(lastPosition);\n                                        if (clickPosition >= newPos || clickPosition === lastPosition) {\n                                            lastPosition = newPos;\n                                        }\n                                    }\n                                    caret(input, lastPosition);\n                                }\n                                break;\n                            }\n                        }\n                    }\n                }, 0);\n            },\n            cutEvent: function(e) {\n                var input = this, $input = $(input), pos = caret(input), ev = e.originalEvent || e;\n                var clipboardData = window.clipboardData || ev.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end);\n                clipboardData.setData(\"text\", isRTL ? clipData.reverse().join(\"\") : clipData.join(\"\"));\n                if (document.execCommand) document.execCommand(\"copy\");\n                handleRemove(input, Inputmask.keyCode.DELETE, pos);\n                writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join(\"\"));\n            },\n            blurEvent: function(e) {\n                var $input = $(this), input = this;\n                if (input.inputmask) {\n                    HandleNativePlaceholder(input, originalPlaceholder);\n                    var nptValue = input.inputmask._valueGet(), buffer = getBuffer().slice();\n                    if (nptValue !== \"\" || colorMask !== undefined) {\n                        if (opts.clearMaskOnLostFocus) {\n                            if (getLastValidPosition() === -1 && nptValue === getBufferTemplate().join(\"\")) {\n                                buffer = [];\n                            } else {\n                                clearOptionalTail(buffer);\n                            }\n                        }\n                        if (isComplete(buffer) === false) {\n                            setTimeout(function() {\n                                $input.trigger(\"incomplete\");\n                            }, 0);\n                            if (opts.clearIncomplete) {\n                                resetMaskSet();\n                                if (opts.clearMaskOnLostFocus) {\n                                    buffer = [];\n                                } else {\n                                    buffer = getBufferTemplate().slice();\n                                }\n                            }\n                        }\n                        writeBuffer(input, buffer, undefined, e);\n                    }\n                    if (undoValue !== getBuffer().join(\"\")) {\n                        undoValue = buffer.join(\"\");\n                        $input.trigger(\"change\");\n                    }\n                }\n            },\n            mouseenterEvent: function(e) {\n                var input = this;\n                mouseEnter = true;\n                if (document.activeElement !== input && opts.showMaskOnHover) {\n                    HandleNativePlaceholder(input, (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(\"\"));\n                }\n            },\n            submitEvent: function(e) {\n                if (undoValue !== getBuffer().join(\"\")) {\n                    $el.trigger(\"change\");\n                }\n                if (opts.clearMaskOnLostFocus && getLastValidPosition() === -1 && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join(\"\")) {\n                    el.inputmask._valueSet(\"\");\n                }\n                if (opts.clearIncomplete && isComplete(getBuffer()) === false) {\n                    el.inputmask._valueSet(\"\");\n                }\n                if (opts.removeMaskOnSubmit) {\n                    el.inputmask._valueSet(el.inputmask.unmaskedvalue(), true);\n                    setTimeout(function() {\n                        writeBuffer(el, getBuffer());\n                    }, 0);\n                }\n            },\n            resetEvent: function(e) {\n                el.inputmask.refreshValue = true;\n                setTimeout(function() {\n                    $el.trigger(\"setvalue\");\n                }, 0);\n            }\n        };\n        function checkVal(input, writeOut, strict, nptvl, initiatingEvent) {\n            var inputmask = this || input.inputmask, inputValue = nptvl.slice(), charCodes = \"\", initialNdx = -1, result = undefined;\n            function isTemplateMatch(ndx, charCodes) {\n                var charCodeNdx = getMaskTemplate(true, 0, false).slice(ndx, seekNext(ndx)).join(\"\").replace(/'/g, \"\").indexOf(charCodes);\n                return charCodeNdx !== -1 && !isMask(ndx) && (getTest(ndx).match.nativeDef === charCodes.charAt(0) || getTest(ndx).match.fn === null && getTest(ndx).match.nativeDef === \"'\" + charCodes.charAt(0) || getTest(ndx).match.nativeDef === \" \" && (getTest(ndx + 1).match.nativeDef === charCodes.charAt(0) || getTest(ndx + 1).match.fn === null && getTest(ndx + 1).match.nativeDef === \"'\" + charCodes.charAt(0)));\n            }\n            resetMaskSet();\n            if (!strict && opts.autoUnmask !== true) {\n                var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(\"\"), matches = inputValue.join(\"\").match(new RegExp(\"^\" + Inputmask.escapeRegex(staticInput), \"g\"));\n                if (matches && matches.length > 0) {\n                    inputValue.splice(0, matches.length * staticInput.length);\n                    initialNdx = seekNext(initialNdx);\n                }\n            } else {\n                initialNdx = seekNext(initialNdx);\n            }\n            if (initialNdx === -1) {\n                getMaskSet().p = seekNext(initialNdx);\n                initialNdx = 0;\n            } else getMaskSet().p = initialNdx;\n            inputmask.caretPos = {\n                begin: initialNdx\n            };\n            $.each(inputValue, function(ndx, charCode) {\n                if (charCode !== undefined) {\n                    if (getMaskSet().validPositions[ndx] === undefined && inputValue[ndx] === getPlaceholder(ndx) && isMask(ndx, true) && isValid(ndx, inputValue[ndx], true, undefined, undefined, true) === false) {\n                        getMaskSet().p++;\n                    } else {\n                        var keypress = new $.Event(\"_checkval\");\n                        keypress.which = charCode.charCodeAt(0);\n                        charCodes += charCode;\n                        var lvp = getLastValidPosition(undefined, true);\n                        if (!isTemplateMatch(initialNdx, charCodes)) {\n                            result = EventHandlers.keypressEvent.call(input, keypress, true, false, strict, inputmask.caretPos.begin);\n                            if (result) {\n                                initialNdx = inputmask.caretPos.begin + 1;\n                                charCodes = \"\";\n                            }\n                        } else {\n                            result = EventHandlers.keypressEvent.call(input, keypress, true, false, strict, lvp + 1);\n                        }\n                        if (result) {\n                            writeBuffer(undefined, getBuffer(), result.forwardPosition, keypress, false);\n                            inputmask.caretPos = {\n                                begin: result.forwardPosition,\n                                end: result.forwardPosition\n                            };\n                        }\n                    }\n                }\n            });\n            if (writeOut) writeBuffer(input, getBuffer(), result ? result.forwardPosition : undefined, initiatingEvent || new $.Event(\"checkval\"), initiatingEvent && initiatingEvent.type === \"input\");\n        }\n        function unmaskedvalue(input) {\n            if (input) {\n                if (input.inputmask === undefined) {\n                    return input.value;\n                }\n                if (input.inputmask && input.inputmask.refreshValue) {\n                    EventHandlers.setValueEvent.call(input);\n                }\n            }\n            var umValue = [], vps = getMaskSet().validPositions;\n            for (var pndx in vps) {\n                if (vps[pndx].match && vps[pndx].match.fn != null) {\n                    umValue.push(vps[pndx].input);\n                }\n            }\n            var unmaskedValue = umValue.length === 0 ? \"\" : (isRTL ? umValue.reverse() : umValue).join(\"\");\n            if ($.isFunction(opts.onUnMask)) {\n                var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(\"\");\n                unmaskedValue = opts.onUnMask.call(inputmask, bufferValue, unmaskedValue, opts);\n            }\n            return unmaskedValue;\n        }\n        function caret(input, begin, end, notranslate) {\n            function translatePosition(pos) {\n                if (isRTL && typeof pos === \"number\" && (!opts.greedy || opts.placeholder !== \"\") && el) {\n                    pos = el.inputmask._valueGet().length - pos;\n                }\n                return pos;\n            }\n            var range;\n            if (begin !== undefined) {\n                if ($.isArray(begin)) {\n                    end = isRTL ? begin[0] : begin[1];\n                    begin = isRTL ? begin[1] : begin[0];\n                }\n                if (begin.begin !== undefined) {\n                    end = isRTL ? begin.begin : begin.end;\n                    begin = isRTL ? begin.end : begin.begin;\n                }\n                if (typeof begin === \"number\") {\n                    begin = notranslate ? begin : translatePosition(begin);\n                    end = notranslate ? end : translatePosition(end);\n                    end = typeof end == \"number\" ? end : begin;\n                    var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end;\n                    input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0;\n                    input.inputmask.caretPos = {\n                        begin: begin,\n                        end: end\n                    };\n                    if (input === document.activeElement) {\n                        if (\"selectionStart\" in input) {\n                            input.selectionStart = begin;\n                            input.selectionEnd = end;\n                        } else if (window.getSelection) {\n                            range = document.createRange();\n                            if (input.firstChild === undefined || input.firstChild === null) {\n                                var textNode = document.createTextNode(\"\");\n                                input.appendChild(textNode);\n                            }\n                            range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length);\n                            range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length);\n                            range.collapse(true);\n                            var sel = window.getSelection();\n                            sel.removeAllRanges();\n                            sel.addRange(range);\n                        } else if (input.createTextRange) {\n                            range = input.createTextRange();\n                            range.collapse(true);\n                            range.moveEnd(\"character\", end);\n                            range.moveStart(\"character\", begin);\n                            range.select();\n                        }\n                        renderColorMask(input, {\n                            begin: begin,\n                            end: end\n                        });\n                    }\n                }\n            } else {\n                if (\"selectionStart\" in input) {\n                    begin = input.selectionStart;\n                    end = input.selectionEnd;\n                } else if (window.getSelection) {\n                    range = window.getSelection().getRangeAt(0);\n                    if (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) {\n                        begin = range.startOffset;\n                        end = range.endOffset;\n                    }\n                } else if (document.selection && document.selection.createRange) {\n                    range = document.selection.createRange();\n                    begin = 0 - range.duplicate().moveStart(\"character\", -input.inputmask._valueGet().length);\n                    end = begin + range.text.length;\n                }\n                return {\n                    begin: notranslate ? begin : translatePosition(begin),\n                    end: notranslate ? end : translatePosition(end)\n                };\n            }\n        }\n        function determineLastRequiredPosition(returnDefinition) {\n            var buffer = getMaskTemplate(true, getLastValidPosition(), true, true), bl = buffer.length, pos, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet().validPositions[lvp], ndxIntlzr = lvTest !== undefined ? lvTest.locator.slice() : undefined, testPos;\n            for (pos = lvp + 1; pos < buffer.length; pos++) {\n                testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);\n                ndxIntlzr = testPos.locator.slice();\n                positions[pos] = $.extend(true, {}, testPos);\n            }\n            var lvTestAlt = lvTest && lvTest.alternation !== undefined ? lvTest.locator[lvTest.alternation] : undefined;\n            for (pos = bl - 1; pos > lvp; pos--) {\n                testPos = positions[pos];\n                if ((testPos.match.optionality || testPos.match.optionalQuantifier && testPos.match.newBlockMarker || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && testPos.match.fn != null || testPos.match.fn === null && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(\",\"), lvTestAlt.toString().split(\",\")) && getTests(pos)[0].def !== \"\")) && buffer[pos] === getPlaceholder(pos, testPos.match)) {\n                    bl--;\n                } else break;\n            }\n            return returnDefinition ? {\n                l: bl,\n                def: positions[bl] ? positions[bl].match : undefined\n            } : bl;\n        }\n        function clearOptionalTail(buffer) {\n            buffer.length = 0;\n            var template = getMaskTemplate(true, 0, true, undefined, true), lmnt, validPos;\n            while (lmnt = template.shift(), lmnt !== undefined) buffer.push(lmnt);\n            return buffer;\n        }\n        function isComplete(buffer) {\n            if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts);\n            if (opts.repeat === \"*\") return undefined;\n            var complete = false, lrp = determineLastRequiredPosition(true), aml = seekPrevious(lrp.l);\n            if (lrp.def === undefined || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) {\n                complete = true;\n                for (var i = 0; i <= aml; i++) {\n                    var test = getTestTemplate(i).match;\n                    if (test.fn !== null && getMaskSet().validPositions[i] === undefined && test.optionality !== true && test.optionalQuantifier !== true || test.fn === null && buffer[i] !== getPlaceholder(i, test)) {\n                        complete = false;\n                        break;\n                    }\n                }\n            }\n            return complete;\n        }\n        function handleRemove(input, k, pos, strict, fromIsValid) {\n            if (opts.numericInput || isRTL) {\n                if (k === Inputmask.keyCode.BACKSPACE) {\n                    k = Inputmask.keyCode.DELETE;\n                } else if (k === Inputmask.keyCode.DELETE) {\n                    k = Inputmask.keyCode.BACKSPACE;\n                }\n                if (isRTL) {\n                    var pend = pos.end;\n                    pos.end = pos.begin;\n                    pos.begin = pend;\n                }\n            }\n            if (k === Inputmask.keyCode.BACKSPACE && pos.end - pos.begin < 1) {\n                pos.begin = seekPrevious(pos.begin);\n                if (getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator) {\n                    pos.begin--;\n                }\n            } else if (k === Inputmask.keyCode.DELETE && pos.begin === pos.end) {\n                pos.end = isMask(pos.end, true) && (getMaskSet().validPositions[pos.end] && getMaskSet().validPositions[pos.end].input !== opts.radixPoint) ? pos.end + 1 : seekNext(pos.end) + 1;\n                if (getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator) {\n                    pos.end++;\n                }\n            }\n            revalidateMask(pos);\n            if (strict !== true && opts.keepStatic !== false || opts.regex !== null) {\n                var result = alternate(true);\n                if (result) {\n                    var newPos = result.caret !== undefined ? result.caret : result.pos ? seekNext(result.pos.begin ? result.pos.begin : result.pos) : getLastValidPosition(-1, true);\n                    if (k !== Inputmask.keyCode.DELETE || pos.begin > newPos) {\n                        pos.begin == newPos;\n                    }\n                }\n            }\n            var lvp = getLastValidPosition(pos.begin, true);\n            if (lvp < pos.begin || pos.begin === -1) {\n                getMaskSet().p = seekNext(lvp);\n            } else if (strict !== true) {\n                getMaskSet().p = pos.begin;\n                if (fromIsValid !== true) {\n                    while (getMaskSet().p < lvp && getMaskSet().validPositions[getMaskSet().p] === undefined) {\n                        getMaskSet().p++;\n                    }\n                }\n            }\n        }\n        function initializeColorMask(input) {\n            var computedStyle = (input.ownerDocument.defaultView || window).getComputedStyle(input, null);\n            function findCaretPos(clientx) {\n                var e = document.createElement(\"span\"), caretPos;\n                for (var style in computedStyle) {\n                    if (isNaN(style) && style.indexOf(\"font\") !== -1) {\n                        e.style[style] = computedStyle[style];\n                    }\n                }\n                e.style.textTransform = computedStyle.textTransform;\n                e.style.letterSpacing = computedStyle.letterSpacing;\n                e.style.position = \"absolute\";\n                e.style.height = \"auto\";\n                e.style.width = \"auto\";\n                e.style.visibility = \"hidden\";\n                e.style.whiteSpace = \"nowrap\";\n                document.body.appendChild(e);\n                var inputText = input.inputmask._valueGet(), previousWidth = 0, itl;\n                for (caretPos = 0, itl = inputText.length; caretPos <= itl; caretPos++) {\n                    e.innerHTML += inputText.charAt(caretPos) || \"_\";\n                    if (e.offsetWidth >= clientx) {\n                        var offset1 = clientx - previousWidth;\n                        var offset2 = e.offsetWidth - clientx;\n                        e.innerHTML = inputText.charAt(caretPos);\n                        offset1 -= e.offsetWidth / 3;\n                        caretPos = offset1 < offset2 ? caretPos - 1 : caretPos;\n                        break;\n                    }\n                    previousWidth = e.offsetWidth;\n                }\n                document.body.removeChild(e);\n                return caretPos;\n            }\n            var template = document.createElement(\"div\");\n            template.style.width = computedStyle.width;\n            template.style.textAlign = computedStyle.textAlign;\n            colorMask = document.createElement(\"div\");\n            input.inputmask.colorMask = colorMask;\n            colorMask.className = \"im-colormask\";\n            input.parentNode.insertBefore(colorMask, input);\n            input.parentNode.removeChild(input);\n            colorMask.appendChild(input);\n            colorMask.appendChild(template);\n            input.style.left = template.offsetLeft + \"px\";\n            $(colorMask).on(\"mouseleave\", function(e) {\n                return EventHandlers.mouseleaveEvent.call(input, [ e ]);\n            });\n            $(colorMask).on(\"mouseenter\", function(e) {\n                return EventHandlers.mouseenterEvent.call(input, [ e ]);\n            });\n            $(colorMask).on(\"click\", function(e) {\n                caret(input, findCaretPos(e.clientX));\n                return EventHandlers.clickEvent.call(input, [ e ]);\n            });\n        }\n        function renderColorMask(input, caretPos, clear) {\n            var maskTemplate = [], isStatic = false, test, testPos, ndxIntlzr, pos = 0;\n            function setEntry(entry) {\n                if (entry === undefined) entry = \"\";\n                if (!isStatic && (test.fn === null || testPos.input === undefined)) {\n                    isStatic = true;\n                    maskTemplate.push(\"<span class='im-static'>\" + entry);\n                } else if (isStatic && (test.fn !== null && testPos.input !== undefined || test.def === \"\")) {\n                    isStatic = false;\n                    var mtl = maskTemplate.length;\n                    maskTemplate[mtl - 1] = maskTemplate[mtl - 1] + \"</span>\";\n                    maskTemplate.push(entry);\n                } else maskTemplate.push(entry);\n            }\n            function setCaret() {\n                if (document.activeElement === input) {\n                    maskTemplate.splice(caretPos.begin, 0, caretPos.begin === caretPos.end || caretPos.end > getMaskSet().maskLength ? '<mark class=\"im-caret\" style=\"border-right-width: 1px;border-right-style: solid;\">' : '<mark class=\"im-caret-select\">');\n                    maskTemplate.splice(caretPos.end + 1, 0, \"</mark>\");\n                }\n            }\n            if (colorMask !== undefined) {\n                var buffer = getBuffer();\n                if (caretPos === undefined) {\n                    caretPos = caret(input);\n                } else if (caretPos.begin === undefined) {\n                    caretPos = {\n                        begin: caretPos,\n                        end: caretPos\n                    };\n                }\n                if (clear !== true) {\n                    var lvp = getLastValidPosition();\n                    do {\n                        if (getMaskSet().validPositions[pos]) {\n                            testPos = getMaskSet().validPositions[pos];\n                            test = testPos.match;\n                            ndxIntlzr = testPos.locator.slice();\n                            setEntry(buffer[pos]);\n                        } else {\n                            testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);\n                            test = testPos.match;\n                            ndxIntlzr = testPos.locator.slice();\n                            if (opts.jitMasking === false || pos < lvp || typeof opts.jitMasking === \"number\" && isFinite(opts.jitMasking) && opts.jitMasking > pos) {\n                                setEntry(getPlaceholder(pos, test));\n                            } else isStatic = false;\n                        }\n                        pos++;\n                    } while ((maxLength === undefined || pos < maxLength) && (test.fn !== null || test.def !== \"\") || lvp > pos || isStatic);\n                    if (isStatic) setEntry();\n                    setCaret();\n                }\n                var template = colorMask.getElementsByTagName(\"div\")[0];\n                template.innerHTML = maskTemplate.join(\"\");\n                input.inputmask.positionColorMask(input, template);\n            }\n        }\n        function mask(elem) {\n            function isElementTypeSupported(input, opts) {\n                function patchValueProperty(npt) {\n                    var valueGet;\n                    var valueSet;\n                    function patchValhook(type) {\n                        if ($.valHooks && ($.valHooks[type] === undefined || $.valHooks[type].inputmaskpatch !== true)) {\n                            var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) {\n                                return elem.value;\n                            };\n                            var valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) {\n                                elem.value = value;\n                                return elem;\n                            };\n                            $.valHooks[type] = {\n                                get: function(elem) {\n                                    if (elem.inputmask) {\n                                        if (elem.inputmask.opts.autoUnmask) {\n                                            return elem.inputmask.unmaskedvalue();\n                                        } else {\n                                            var result = valhookGet(elem);\n                                            return getLastValidPosition(undefined, undefined, elem.inputmask.maskset.validPositions) !== -1 || opts.nullable !== true ? result : \"\";\n                                        }\n                                    } else return valhookGet(elem);\n                                },\n                                set: function(elem, value) {\n                                    var $elem = $(elem), result;\n                                    result = valhookSet(elem, value);\n                                    if (elem.inputmask) {\n                                        $elem.trigger(\"setvalue\", [ value ]);\n                                    }\n                                    return result;\n                                },\n                                inputmaskpatch: true\n                            };\n                        }\n                    }\n                    function getter() {\n                        if (this.inputmask) {\n                            return this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : getLastValidPosition() !== -1 || opts.nullable !== true ? document.activeElement === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join(\"\") : valueGet.call(this) : \"\";\n                        } else return valueGet.call(this);\n                    }\n                    function setter(value) {\n                        valueSet.call(this, value);\n                        if (this.inputmask) {\n                            $(this).trigger(\"setvalue\", [ value ]);\n                        }\n                    }\n                    function installNativeValueSetFallback(npt) {\n                        EventRuler.on(npt, \"mouseenter\", function(event) {\n                            var $input = $(this), input = this, value = input.inputmask._valueGet();\n                            if (value !== getBuffer().join(\"\")) {\n                                $input.trigger(\"setvalue\");\n                            }\n                        });\n                    }\n                    if (!npt.inputmask.__valueGet) {\n                        if (opts.noValuePatching !== true) {\n                            if (Object.getOwnPropertyDescriptor) {\n                                if (typeof Object.getPrototypeOf !== \"function\") {\n                                    Object.getPrototypeOf = typeof \"test\".__proto__ === \"object\" ? function(object) {\n                                        return object.__proto__;\n                                    } : function(object) {\n                                        return object.constructor.prototype;\n                                    };\n                                }\n                                var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), \"value\") : undefined;\n                                if (valueProperty && valueProperty.get && valueProperty.set) {\n                                    valueGet = valueProperty.get;\n                                    valueSet = valueProperty.set;\n                                    Object.defineProperty(npt, \"value\", {\n                                        get: getter,\n                                        set: setter,\n                                        configurable: true\n                                    });\n                                } else if (npt.tagName !== \"INPUT\") {\n                                    valueGet = function() {\n                                        return this.textContent;\n                                    };\n                                    valueSet = function(value) {\n                                        this.textContent = value;\n                                    };\n                                    Object.defineProperty(npt, \"value\", {\n                                        get: getter,\n                                        set: setter,\n                                        configurable: true\n                                    });\n                                }\n                            } else if (document.__lookupGetter__ && npt.__lookupGetter__(\"value\")) {\n                                valueGet = npt.__lookupGetter__(\"value\");\n                                valueSet = npt.__lookupSetter__(\"value\");\n                                npt.__defineGetter__(\"value\", getter);\n                                npt.__defineSetter__(\"value\", setter);\n                            }\n                            npt.inputmask.__valueGet = valueGet;\n                            npt.inputmask.__valueSet = valueSet;\n                        }\n                        npt.inputmask._valueGet = function(overruleRTL) {\n                            return isRTL && overruleRTL !== true ? valueGet.call(this.el).split(\"\").reverse().join(\"\") : valueGet.call(this.el);\n                        };\n                        npt.inputmask._valueSet = function(value, overruleRTL) {\n                            valueSet.call(this.el, value === null || value === undefined ? \"\" : overruleRTL !== true && isRTL ? value.split(\"\").reverse().join(\"\") : value);\n                        };\n                        if (valueGet === undefined) {\n                            valueGet = function() {\n                                return this.value;\n                            };\n                            valueSet = function(value) {\n                                this.value = value;\n                            };\n                            patchValhook(npt.type);\n                            installNativeValueSetFallback(npt);\n                        }\n                    }\n                }\n                var elementType = input.getAttribute(\"type\");\n                var isSupported = input.tagName === \"INPUT\" && $.inArray(elementType, opts.supportsInputType) !== -1 || input.isContentEditable || input.tagName === \"TEXTAREA\";\n                if (!isSupported) {\n                    if (input.tagName === \"INPUT\") {\n                        var el = document.createElement(\"input\");\n                        el.setAttribute(\"type\", elementType);\n                        isSupported = el.type === \"text\";\n                        el = null;\n                    } else isSupported = \"partial\";\n                }\n                if (isSupported !== false) {\n                    patchValueProperty(input);\n                } else input.inputmask = undefined;\n                return isSupported;\n            }\n            EventRuler.off(elem);\n            var isSupported = isElementTypeSupported(elem, opts);\n            if (isSupported !== false) {\n                el = elem;\n                $el = $(el);\n                originalPlaceholder = el.placeholder;\n                maxLength = el !== undefined ? el.maxLength : undefined;\n                if (maxLength === -1) maxLength = undefined;\n                if (opts.colorMask === true) {\n                    initializeColorMask(el);\n                }\n                if (mobile) {\n                    if (\"inputMode\" in el) {\n                        el.inputmode = opts.inputmode;\n                        el.setAttribute(\"inputmode\", opts.inputmode);\n                    }\n                    if (opts.disablePredictiveText === true) {\n                        if (\"autocorrect\" in el) {\n                            el.autocorrect = false;\n                        } else {\n                            if (opts.colorMask !== true) {\n                                initializeColorMask(el);\n                            }\n                            el.type = \"password\";\n                        }\n                    }\n                }\n                if (isSupported === true) {\n                    el.setAttribute(\"im-insert\", opts.insertMode);\n                    EventRuler.on(el, \"submit\", EventHandlers.submitEvent);\n                    EventRuler.on(el, \"reset\", EventHandlers.resetEvent);\n                    EventRuler.on(el, \"blur\", EventHandlers.blurEvent);\n                    EventRuler.on(el, \"focus\", EventHandlers.focusEvent);\n                    if (opts.colorMask !== true) {\n                        EventRuler.on(el, \"click\", EventHandlers.clickEvent);\n                        EventRuler.on(el, \"mouseleave\", EventHandlers.mouseleaveEvent);\n                        EventRuler.on(el, \"mouseenter\", EventHandlers.mouseenterEvent);\n                    }\n                    EventRuler.on(el, \"paste\", EventHandlers.pasteEvent);\n                    EventRuler.on(el, \"cut\", EventHandlers.cutEvent);\n                    EventRuler.on(el, \"complete\", opts.oncomplete);\n                    EventRuler.on(el, \"incomplete\", opts.onincomplete);\n                    EventRuler.on(el, \"cleared\", opts.oncleared);\n                    if (!mobile && opts.inputEventOnly !== true) {\n                        EventRuler.on(el, \"keydown\", EventHandlers.keydownEvent);\n                        EventRuler.on(el, \"keypress\", EventHandlers.keypressEvent);\n                    } else {\n                        el.removeAttribute(\"maxLength\");\n                    }\n                    EventRuler.on(el, \"input\", EventHandlers.inputFallBackEvent);\n                    EventRuler.on(el, \"beforeinput\", EventHandlers.beforeInputEvent);\n                }\n                EventRuler.on(el, \"setvalue\", EventHandlers.setValueEvent);\n                undoValue = getBufferTemplate().join(\"\");\n                if (el.inputmask._valueGet(true) !== \"\" || opts.clearMaskOnLostFocus === false || document.activeElement === el) {\n                    var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, el.inputmask._valueGet(true), opts) || el.inputmask._valueGet(true) : el.inputmask._valueGet(true);\n                    if (initialValue !== \"\") checkVal(el, true, false, initialValue.split(\"\"));\n                    var buffer = getBuffer().slice();\n                    undoValue = buffer.join(\"\");\n                    if (isComplete(buffer) === false) {\n                        if (opts.clearIncomplete) {\n                            resetMaskSet();\n                        }\n                    }\n                    if (opts.clearMaskOnLostFocus && document.activeElement !== el) {\n                        if (getLastValidPosition() === -1) {\n                            buffer = [];\n                        } else {\n                            clearOptionalTail(buffer);\n                        }\n                    }\n                    if (opts.clearMaskOnLostFocus === false || opts.showMaskOnFocus && document.activeElement === el || el.inputmask._valueGet(true) !== \"\") writeBuffer(el, buffer);\n                    if (document.activeElement === el) {\n                        caret(el, seekNext(getLastValidPosition()));\n                    }\n                }\n            }\n        }\n        var valueBuffer;\n        if (actionObj !== undefined) {\n            switch (actionObj.action) {\n              case \"isComplete\":\n                el = actionObj.el;\n                return isComplete(getBuffer());\n\n              case \"unmaskedvalue\":\n                if (el === undefined || actionObj.value !== undefined) {\n                    valueBuffer = actionObj.value;\n                    valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, valueBuffer, opts) || valueBuffer : valueBuffer).split(\"\");\n                    checkVal.call(this, undefined, false, false, valueBuffer);\n                    if ($.isFunction(opts.onBeforeWrite)) opts.onBeforeWrite.call(inputmask, undefined, getBuffer(), 0, opts);\n                }\n                return unmaskedvalue(el);\n\n              case \"mask\":\n                mask(el);\n                break;\n\n              case \"format\":\n                valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, actionObj.value, opts) || actionObj.value : actionObj.value).split(\"\");\n                checkVal.call(this, undefined, true, false, valueBuffer);\n                if (actionObj.metadata) {\n                    return {\n                        value: isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\"),\n                        metadata: maskScope.call(this, {\n                            action: \"getmetadata\"\n                        }, maskset, opts)\n                    };\n                }\n                return isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\");\n\n              case \"isValid\":\n                if (actionObj.value) {\n                    valueBuffer = actionObj.value.split(\"\");\n                    checkVal.call(this, undefined, true, true, valueBuffer);\n                } else {\n                    actionObj.value = getBuffer().join(\"\");\n                }\n                var buffer = getBuffer();\n                var rl = determineLastRequiredPosition(), lmib = buffer.length - 1;\n                for (;lmib > rl; lmib--) {\n                    if (isMask(lmib)) break;\n                }\n                buffer.splice(rl, lmib + 1 - rl);\n                return isComplete(buffer) && actionObj.value === getBuffer().join(\"\");\n\n              case \"getemptymask\":\n                return getBufferTemplate().join(\"\");\n\n              case \"remove\":\n                if (el && el.inputmask) {\n                    $.data(el, \"_inputmask_opts\", null);\n                    $el = $(el);\n                    el.inputmask._valueSet(opts.autoUnmask ? unmaskedvalue(el) : el.inputmask._valueGet(true));\n                    EventRuler.off(el);\n                    if (el.inputmask.colorMask) {\n                        colorMask = el.inputmask.colorMask;\n                        colorMask.removeChild(el);\n                        colorMask.parentNode.insertBefore(el, colorMask);\n                        colorMask.parentNode.removeChild(colorMask);\n                    }\n                    var valueProperty;\n                    if (Object.getOwnPropertyDescriptor && Object.getPrototypeOf) {\n                        valueProperty = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), \"value\");\n                        if (valueProperty) {\n                            if (el.inputmask.__valueGet) {\n                                Object.defineProperty(el, \"value\", {\n                                    get: el.inputmask.__valueGet,\n                                    set: el.inputmask.__valueSet,\n                                    configurable: true\n                                });\n                            }\n                        }\n                    } else if (document.__lookupGetter__ && el.__lookupGetter__(\"value\")) {\n                        if (el.inputmask.__valueGet) {\n                            el.__defineGetter__(\"value\", el.inputmask.__valueGet);\n                            el.__defineSetter__(\"value\", el.inputmask.__valueSet);\n                        }\n                    }\n                    el.inputmask = undefined;\n                }\n                return el;\n                break;\n\n              case \"getmetadata\":\n                if ($.isArray(maskset.metadata)) {\n                    var maskTarget = getMaskTemplate(true, 0, false).join(\"\");\n                    $.each(maskset.metadata, function(ndx, mtdt) {\n                        if (mtdt.mask === maskTarget) {\n                            maskTarget = mtdt;\n                            return false;\n                        }\n                    });\n                    return maskTarget;\n                }\n                return maskset.metadata;\n            }\n        }\n    }\n    return Inputmask;\n});","/*!\n* inputmask.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.9\n*/\n\n(function(factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define([ \"./inputmask\" ], factory);\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"./inputmask\"));\n    } else {\n        factory(window.Inputmask);\n    }\n})(function(Inputmask) {\n    Inputmask.extendDefinitions({\n        A: {\n            validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n            casing: \"upper\"\n        },\n        \"&\": {\n            validator: \"[0-9A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n            casing: \"upper\"\n        },\n        \"#\": {\n            validator: \"[0-9A-Fa-f]\",\n            casing: \"upper\"\n        }\n    });\n    Inputmask.extendAliases({\n        cssunit: {\n            regex: \"[+-]?[0-9]+\\\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)\"\n        },\n        url: {\n            regex: \"(https?|ftp)//.*\",\n            autoUnmask: false\n        },\n        ip: {\n            mask: \"i[i[i]].i[i[i]].i[i[i]].i[i[i]]\",\n            definitions: {\n                i: {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        if (pos - 1 > -1 && maskset.buffer[pos - 1] !== \".\") {\n                            chrs = maskset.buffer[pos - 1] + chrs;\n                            if (pos - 2 > -1 && maskset.buffer[pos - 2] !== \".\") {\n                                chrs = maskset.buffer[pos - 2] + chrs;\n                            } else chrs = \"0\" + chrs;\n                        } else chrs = \"00\" + chrs;\n                        return new RegExp(\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\").test(chrs);\n                    }\n                }\n            },\n            onUnMask: function(maskedValue, unmaskedValue, opts) {\n                return maskedValue;\n            },\n            inputmode: \"numeric\"\n        },\n        email: {\n            mask: \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\",\n            greedy: false,\n            casing: \"lower\",\n            onBeforePaste: function(pastedValue, opts) {\n                pastedValue = pastedValue.toLowerCase();\n                return pastedValue.replace(\"mailto:\", \"\");\n            },\n            definitions: {\n                \"*\": {\n                    validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5!#$%&'*+/=?^_`{|}~-]\"\n                },\n                \"-\": {\n                    validator: \"[0-9A-Za-z-]\"\n                }\n            },\n            onUnMask: function(maskedValue, unmaskedValue, opts) {\n                return maskedValue;\n            },\n            inputmode: \"email\"\n        },\n        mac: {\n            mask: \"##:##:##:##:##:##\"\n        },\n        vin: {\n            mask: \"V{13}9{4}\",\n            definitions: {\n                V: {\n                    validator: \"[A-HJ-NPR-Za-hj-npr-z\\\\d]\",\n                    casing: \"upper\"\n                }\n            },\n            clearIncomplete: true,\n            autoUnmask: true\n        }\n    });\n    return Inputmask;\n});","/*!\n* inputmask.date.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.9\n*/\n\n(function(factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define([ \"./inputmask\" ], factory);\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"./inputmask\"));\n    } else {\n        factory(window.Inputmask);\n    }\n})(function(Inputmask) {\n    var $ = Inputmask.dependencyLib;\n    var formatCode = {\n        d: [ \"[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", Date.prototype.getDate ],\n        dd: [ \"0[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", function() {\n            return pad(Date.prototype.getDate.call(this), 2);\n        } ],\n        ddd: [ \"\" ],\n        dddd: [ \"\" ],\n        m: [ \"[1-9]|1[012]\", Date.prototype.setMonth, \"month\", function() {\n            return Date.prototype.getMonth.call(this) + 1;\n        } ],\n        mm: [ \"0[1-9]|1[012]\", Date.prototype.setMonth, \"month\", function() {\n            return pad(Date.prototype.getMonth.call(this) + 1, 2);\n        } ],\n        mmm: [ \"\" ],\n        mmmm: [ \"\" ],\n        yy: [ \"[0-9]{2}\", Date.prototype.setFullYear, \"year\", function() {\n            return pad(Date.prototype.getFullYear.call(this), 2);\n        } ],\n        yyyy: [ \"[0-9]{4}\", Date.prototype.setFullYear, \"year\", function() {\n            return pad(Date.prototype.getFullYear.call(this), 4);\n        } ],\n        h: [ \"[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n        hh: [ \"0[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", function() {\n            return pad(Date.prototype.getHours.call(this), 2);\n        } ],\n        hhh: [ \"[0-9]+\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n        H: [ \"1?[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n        HH: [ \"0[0-9]|1[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", function() {\n            return pad(Date.prototype.getHours.call(this), 2);\n        } ],\n        HHH: [ \"[0-9]+\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n        M: [ \"[1-5]?[0-9]\", Date.prototype.setMinutes, \"minutes\", Date.prototype.getMinutes ],\n        MM: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setMinutes, \"minutes\", function() {\n            return pad(Date.prototype.getMinutes.call(this), 2);\n        } ],\n        ss: [ \"[0-5][0-9]\", Date.prototype.setSeconds, \"seconds\", function() {\n            return pad(Date.prototype.getSeconds.call(this), 2);\n        } ],\n        l: [ \"[0-9]{3}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n            return pad(Date.prototype.getMilliseconds.call(this), 3);\n        } ],\n        L: [ \"[0-9]{2}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n            return pad(Date.prototype.getMilliseconds.call(this), 2);\n        } ],\n        t: [ \"[ap]\" ],\n        tt: [ \"[ap]m\" ],\n        T: [ \"[AP]\" ],\n        TT: [ \"[AP]M\" ],\n        Z: [ \"\" ],\n        o: [ \"\" ],\n        S: [ \"\" ]\n    }, formatAlias = {\n        isoDate: \"yyyy-mm-dd\",\n        isoTime: \"HH:MM:ss\",\n        isoDateTime: \"yyyy-mm-dd'T'HH:MM:ss\",\n        isoUtcDateTime: \"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\"\n    };\n    function getTokenizer(opts) {\n        if (!opts.tokenizer) {\n            var tokens = [];\n            for (var ndx in formatCode) {\n                if (tokens.indexOf(ndx[0]) === -1) tokens.push(ndx[0]);\n            }\n            opts.tokenizer = \"(\" + tokens.join(\"+|\") + \")+?|.\";\n            opts.tokenizer = new RegExp(opts.tokenizer, \"g\");\n        }\n        return opts.tokenizer;\n    }\n    function isValidDate(dateParts, currentResult) {\n        return !isFinite(dateParts.rawday) || dateParts.day == \"29\" && !isFinite(dateParts.rawyear) || new Date(dateParts.date.getFullYear(), isFinite(dateParts.rawmonth) ? dateParts.month : dateParts.date.getMonth() + 1, 0).getDate() >= dateParts.day ? currentResult : false;\n    }\n    function isDateInRange(dateParts, opts) {\n        var result = true;\n        if (opts.min) {\n            if (dateParts[\"rawyear\"]) {\n                var rawYear = dateParts[\"rawyear\"].replace(/[^0-9]/g, \"\"), minYear = opts.min.year.substr(0, rawYear.length);\n                result = minYear <= rawYear;\n            }\n            if (dateParts[\"year\"] === dateParts[\"rawyear\"]) {\n                if (opts.min.date.getTime() === opts.min.date.getTime()) {\n                    result = opts.min.date.getTime() <= dateParts.date.getTime();\n                }\n            }\n        }\n        if (result && opts.max && opts.max.date.getTime() === opts.max.date.getTime()) {\n            result = opts.max.date.getTime() >= dateParts.date.getTime();\n        }\n        return result;\n    }\n    function parse(format, dateObjValue, opts, raw) {\n        var mask = \"\", match;\n        while (match = getTokenizer(opts).exec(format)) {\n            if (dateObjValue === undefined) {\n                if (formatCode[match[0]]) {\n                    mask += \"(\" + formatCode[match[0]][0] + \")\";\n                } else {\n                    switch (match[0]) {\n                      case \"[\":\n                        mask += \"(\";\n                        break;\n\n                      case \"]\":\n                        mask += \")?\";\n                        break;\n\n                      default:\n                        mask += Inputmask.escapeRegex(match[0]);\n                    }\n                }\n            } else {\n                if (formatCode[match[0]]) {\n                    if (raw !== true && formatCode[match[0]][3]) {\n                        var getFn = formatCode[match[0]][3];\n                        mask += getFn.call(dateObjValue.date);\n                    } else if (formatCode[match[0]][2]) mask += dateObjValue[\"raw\" + formatCode[match[0]][2]]; else mask += match[0];\n                } else mask += match[0];\n            }\n        }\n        return mask;\n    }\n    function pad(val, len) {\n        val = String(val);\n        len = len || 2;\n        while (val.length < len) val = \"0\" + val;\n        return val;\n    }\n    function analyseMask(maskString, format, opts) {\n        var dateObj = {\n            date: new Date(1, 0, 1)\n        }, targetProp, mask = maskString, match, dateOperation, targetValidator;\n        function extendProperty(value) {\n            var correctedValue = value.replace(/[^0-9]/g, \"0\");\n            if (correctedValue != value) {\n                var enteredPart = value.replace(/[^0-9]/g, \"\"), min = (opts.min && opts.min[targetProp] || value).toString(), max = (opts.max && opts.max[targetProp] || value).toString();\n                correctedValue = enteredPart + (enteredPart < min.slice(0, enteredPart.length) ? min.slice(enteredPart.length) : enteredPart > max.slice(0, enteredPart.length) ? max.slice(enteredPart.length) : correctedValue.toString().slice(enteredPart.length));\n            }\n            return correctedValue;\n        }\n        function setValue(dateObj, value, opts) {\n            dateObj[targetProp] = extendProperty(value);\n            dateObj[\"raw\" + targetProp] = value;\n            if (dateOperation !== undefined) dateOperation.call(dateObj.date, targetProp == \"month\" ? parseInt(dateObj[targetProp]) - 1 : dateObj[targetProp]);\n        }\n        if (typeof mask === \"string\") {\n            while (match = getTokenizer(opts).exec(format)) {\n                var value = mask.slice(0, match[0].length);\n                if (formatCode.hasOwnProperty(match[0])) {\n                    targetValidator = formatCode[match[0]][0];\n                    targetProp = formatCode[match[0]][2];\n                    dateOperation = formatCode[match[0]][1];\n                    setValue(dateObj, value, opts);\n                }\n                mask = mask.slice(value.length);\n            }\n            return dateObj;\n        } else if (mask && typeof mask === \"object\" && mask.hasOwnProperty(\"date\")) {\n            return mask;\n        }\n        return undefined;\n    }\n    Inputmask.extendAliases({\n        datetime: {\n            mask: function(opts) {\n                formatCode.S = opts.i18n.ordinalSuffix.join(\"|\");\n                opts.inputFormat = formatAlias[opts.inputFormat] || opts.inputFormat;\n                opts.displayFormat = formatAlias[opts.displayFormat] || opts.displayFormat || opts.inputFormat;\n                opts.outputFormat = formatAlias[opts.outputFormat] || opts.outputFormat || opts.inputFormat;\n                opts.placeholder = opts.placeholder !== \"\" ? opts.placeholder : opts.inputFormat.replace(/[\\[\\]]/, \"\");\n                opts.regex = parse(opts.inputFormat, undefined, opts);\n                return null;\n            },\n            placeholder: \"\",\n            inputFormat: \"isoDateTime\",\n            displayFormat: undefined,\n            outputFormat: undefined,\n            min: null,\n            max: null,\n            i18n: {\n                dayNames: [ \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\" ],\n                monthNames: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n                ordinalSuffix: [ \"st\", \"nd\", \"rd\", \"th\" ]\n            },\n            postValidation: function(buffer, pos, currentResult, opts) {\n                opts.min = analyseMask(opts.min, opts.inputFormat, opts);\n                opts.max = analyseMask(opts.max, opts.inputFormat, opts);\n                var result = currentResult, dateParts = analyseMask(buffer.join(\"\"), opts.inputFormat, opts);\n                if (result && dateParts.date.getTime() === dateParts.date.getTime()) {\n                    result = isValidDate(dateParts, result);\n                    result = result && isDateInRange(dateParts, opts);\n                }\n                if (pos && result && currentResult.pos !== pos) {\n                    return {\n                        buffer: parse(opts.inputFormat, dateParts, opts),\n                        refreshFromBuffer: {\n                            start: pos,\n                            end: currentResult.pos\n                        }\n                    };\n                }\n                return result;\n            },\n            onKeyDown: function(e, buffer, caretPos, opts) {\n                var input = this;\n                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                    var today = new Date(), match, date = \"\";\n                    while (match = getTokenizer(opts).exec(opts.inputFormat)) {\n                        if (match[0].charAt(0) === \"d\") {\n                            date += pad(today.getDate(), match[0].length);\n                        } else if (match[0].charAt(0) === \"m\") {\n                            date += pad(today.getMonth() + 1, match[0].length);\n                        } else if (match[0] === \"yyyy\") {\n                            date += today.getFullYear().toString();\n                        } else if (match[0].charAt(0) === \"y\") {\n                            date += pad(today.getYear(), match[0].length);\n                        }\n                    }\n                    input.inputmask._valueSet(date);\n                    $(input).trigger(\"setvalue\");\n                }\n            },\n            onUnMask: function(maskedValue, unmaskedValue, opts) {\n                return parse(opts.outputFormat, analyseMask(maskedValue, opts.inputFormat, opts), opts, true);\n            },\n            casing: function(elem, test, pos, validPositions) {\n                if (test.nativeDef.indexOf(\"[ap]\") == 0) return elem.toLowerCase();\n                if (test.nativeDef.indexOf(\"[AP]\") == 0) return elem.toUpperCase();\n                return elem;\n            },\n            insertMode: false,\n            shiftPositions: false\n        }\n    });\n    return Inputmask;\n});","/*!\n* inputmask.numeric.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.9\n*/\n\n(function(factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define([ \"./inputmask\" ], factory);\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"./inputmask\"));\n    } else {\n        factory(window.Inputmask);\n    }\n})(function(Inputmask) {\n    var $ = Inputmask.dependencyLib;\n    function autoEscape(txt, opts) {\n        var escapedTxt = \"\";\n        for (var i = 0; i < txt.length; i++) {\n            if (Inputmask.prototype.definitions[txt.charAt(i)] || opts.definitions[txt.charAt(i)] || opts.optionalmarker.start === txt.charAt(i) || opts.optionalmarker.end === txt.charAt(i) || opts.quantifiermarker.start === txt.charAt(i) || opts.quantifiermarker.end === txt.charAt(i) || opts.groupmarker.start === txt.charAt(i) || opts.groupmarker.end === txt.charAt(i) || opts.alternatormarker === txt.charAt(i)) {\n                escapedTxt += \"\\\\\" + txt.charAt(i);\n            } else escapedTxt += txt.charAt(i);\n        }\n        return escapedTxt;\n    }\n    function alignDigits(buffer, digits, opts) {\n        if (digits > 0) {\n            var radixPosition = $.inArray(opts.radixPoint, buffer);\n            if (radixPosition === -1) {\n                buffer.push(opts.radixPoint);\n                radixPosition = buffer.length - 1;\n            }\n            for (var i = 1; i <= digits; i++) {\n                buffer[radixPosition + i] = buffer[radixPosition + i] || \"0\";\n            }\n        }\n        return buffer;\n    }\n    Inputmask.extendAliases({\n        numeric: {\n            mask: function(opts) {\n                if (opts.repeat !== 0 && isNaN(opts.integerDigits)) {\n                    opts.integerDigits = opts.repeat;\n                }\n                opts.repeat = 0;\n                if (opts.groupSeparator === opts.radixPoint && opts.digits && opts.digits !== \"0\") {\n                    if (opts.radixPoint === \".\") {\n                        opts.groupSeparator = \",\";\n                    } else if (opts.radixPoint === \",\") {\n                        opts.groupSeparator = \".\";\n                    } else opts.groupSeparator = \"\";\n                }\n                if (opts.groupSeparator === \" \") {\n                    opts.skipOptionalPartCharacter = undefined;\n                }\n                opts.autoGroup = opts.autoGroup && opts.groupSeparator !== \"\";\n                if (opts.autoGroup) {\n                    if (typeof opts.groupSize == \"string\" && isFinite(opts.groupSize)) opts.groupSize = parseInt(opts.groupSize);\n                    if (isFinite(opts.integerDigits)) {\n                        var seps = Math.floor(opts.integerDigits / opts.groupSize);\n                        var mod = opts.integerDigits % opts.groupSize;\n                        opts.integerDigits = parseInt(opts.integerDigits) + (mod === 0 ? seps - 1 : seps);\n                        if (opts.integerDigits < 1) {\n                            opts.integerDigits = \"*\";\n                        }\n                    }\n                }\n                if (opts.placeholder.length > 1) {\n                    opts.placeholder = opts.placeholder.charAt(0);\n                }\n                if (opts.positionCaretOnClick === \"radixFocus\" && (opts.placeholder === \"\" && opts.integerOptional === false)) {\n                    opts.positionCaretOnClick = \"lvp\";\n                }\n                opts.definitions[\";\"] = opts.definitions[\"~\"];\n                opts.definitions[\";\"].definitionSymbol = \"~\";\n                if (opts.numericInput === true) {\n                    opts.positionCaretOnClick = opts.positionCaretOnClick === \"radixFocus\" ? \"lvp\" : opts.positionCaretOnClick;\n                    opts.digitsOptional = false;\n                    if (isNaN(opts.digits)) opts.digits = 2;\n                    opts.decimalProtect = false;\n                }\n                var mask = \"[+]\";\n                mask += autoEscape(opts.prefix, opts);\n                if (opts.integerOptional === true) {\n                    mask += \"~{1,\" + opts.integerDigits + \"}\";\n                } else mask += \"~{\" + opts.integerDigits + \"}\";\n                if (opts.digits !== undefined) {\n                    var radixDef = opts.decimalProtect ? \":\" : opts.radixPoint;\n                    var dq = opts.digits.toString().split(\",\");\n                    if (isFinite(dq[0]) && dq[1] && isFinite(dq[1])) {\n                        mask += radixDef + \";{\" + opts.digits + \"}\";\n                    } else if (isNaN(opts.digits) || parseInt(opts.digits) > 0) {\n                        if (opts.digitsOptional) {\n                            mask += \"[\" + radixDef + \";{1,\" + opts.digits + \"}]\";\n                        } else mask += radixDef + \";{\" + opts.digits + \"}\";\n                    }\n                }\n                mask += autoEscape(opts.suffix, opts);\n                mask += \"[-]\";\n                opts.greedy = false;\n                return mask;\n            },\n            placeholder: \"\",\n            greedy: false,\n            digits: \"*\",\n            digitsOptional: true,\n            enforceDigitsOnBlur: false,\n            radixPoint: \".\",\n            positionCaretOnClick: \"radixFocus\",\n            groupSize: 3,\n            groupSeparator: \"\",\n            autoGroup: false,\n            allowMinus: true,\n            negationSymbol: {\n                front: \"-\",\n                back: \"\"\n            },\n            integerDigits: \"+\",\n            integerOptional: true,\n            prefix: \"\",\n            suffix: \"\",\n            rightAlign: true,\n            decimalProtect: true,\n            min: null,\n            max: null,\n            step: 1,\n            insertMode: true,\n            autoUnmask: false,\n            unmaskAsNumber: false,\n            inputType: \"text\",\n            inputmode: \"numeric\",\n            preValidation: function(buffer, pos, c, isSelection, opts, maskset) {\n                if (c === \"-\" || c === opts.negationSymbol.front) {\n                    if (opts.allowMinus !== true) return false;\n                    opts.isNegative = opts.isNegative === undefined ? true : !opts.isNegative;\n                    if (buffer.join(\"\") === \"\") return true;\n                    return {\n                        caret: maskset.validPositions[pos] ? pos : undefined,\n                        dopost: true\n                    };\n                }\n                if (isSelection === false && c === opts.radixPoint && (opts.digits !== undefined && (isNaN(opts.digits) || parseInt(opts.digits) > 0))) {\n                    var radixPos = $.inArray(opts.radixPoint, buffer);\n                    if (radixPos !== -1 && maskset.validPositions[radixPos] !== undefined) {\n                        if (opts.numericInput === true) {\n                            return pos === radixPos;\n                        }\n                        return {\n                            caret: radixPos + 1\n                        };\n                    }\n                }\n                return true;\n            },\n            postValidation: function(buffer, pos, currentResult, opts) {\n                function buildPostMask(buffer, opts) {\n                    var postMask = \"\";\n                    postMask += \"(\" + opts.groupSeparator + \"*{\" + opts.groupSize + \"}){*}\";\n                    if (opts.radixPoint !== \"\") {\n                        var radixSplit = buffer.join(\"\").split(opts.radixPoint);\n                        if (radixSplit[1]) {\n                            postMask += opts.radixPoint + \"*{\" + radixSplit[1].match(/^\\d*\\??\\d*/)[0].length + \"}\";\n                        }\n                    }\n                    return postMask;\n                }\n                var suffix = opts.suffix.split(\"\"), prefix = opts.prefix.split(\"\");\n                if (currentResult.pos === undefined && currentResult.caret !== undefined && currentResult.dopost !== true) return currentResult;\n                var caretPos = currentResult.caret !== undefined ? currentResult.caret : currentResult.pos;\n                var maskedValue = buffer.slice();\n                if (opts.numericInput) {\n                    caretPos = maskedValue.length - caretPos - 1;\n                    maskedValue = maskedValue.reverse();\n                }\n                var charAtPos = maskedValue[caretPos];\n                if (charAtPos === opts.groupSeparator) {\n                    caretPos += 1;\n                    charAtPos = maskedValue[caretPos];\n                }\n                if (caretPos === maskedValue.length - opts.suffix.length - 1 && charAtPos === opts.radixPoint) return currentResult;\n                if (charAtPos !== undefined) {\n                    if (charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back) {\n                        maskedValue[caretPos] = \"?\";\n                        if (opts.prefix.length > 0 && caretPos >= (opts.isNegative === false ? 1 : 0) && caretPos < opts.prefix.length - 1 + (opts.isNegative === false ? 1 : 0)) {\n                            prefix[caretPos - (opts.isNegative === false ? 1 : 0)] = \"?\";\n                        } else if (opts.suffix.length > 0 && caretPos >= maskedValue.length - opts.suffix.length - (opts.isNegative === false ? 1 : 0)) {\n                            suffix[caretPos - (maskedValue.length - opts.suffix.length - (opts.isNegative === false ? 1 : 0))] = \"?\";\n                        }\n                    }\n                }\n                prefix = prefix.join(\"\");\n                suffix = suffix.join(\"\");\n                var processValue = maskedValue.join(\"\").replace(prefix, \"\");\n                processValue = processValue.replace(suffix, \"\");\n                processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\n                processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\");\n                processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\n                if (isNaN(opts.placeholder)) {\n                    processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder), \"g\"), \"\");\n                }\n                if (processValue.length > 1 && processValue.indexOf(opts.radixPoint) !== 1) {\n                    if (charAtPos === \"0\") {\n                        processValue = processValue.replace(/^\\?/g, \"\");\n                    }\n                    processValue = processValue.replace(/^0/g, \"\");\n                }\n                if (processValue.charAt(0) === opts.radixPoint && opts.radixPoint !== \"\" && opts.numericInput !== true) {\n                    processValue = \"0\" + processValue;\n                }\n                if (processValue !== \"\") {\n                    processValue = processValue.split(\"\");\n                    if ((!opts.digitsOptional || opts.enforceDigitsOnBlur && currentResult.event === \"blur\") && isFinite(opts.digits)) {\n                        var radixPosition = $.inArray(opts.radixPoint, processValue);\n                        var rpb = $.inArray(opts.radixPoint, maskedValue);\n                        if (radixPosition === -1) {\n                            processValue.push(opts.radixPoint);\n                            radixPosition = processValue.length - 1;\n                        }\n                        for (var i = 1; i <= opts.digits; i++) {\n                            if ((!opts.digitsOptional || opts.enforceDigitsOnBlur && currentResult.event === \"blur\") && (processValue[radixPosition + i] === undefined || processValue[radixPosition + i] === opts.placeholder.charAt(0))) {\n                                processValue[radixPosition + i] = currentResult.placeholder || opts.placeholder.charAt(0);\n                            } else if (rpb !== -1 && maskedValue[rpb + i] !== undefined) {\n                                processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i];\n                            }\n                        }\n                    }\n                    if (opts.autoGroup === true && opts.groupSeparator !== \"\" && (charAtPos !== opts.radixPoint || currentResult.pos !== undefined || currentResult.dopost)) {\n                        var addRadix = processValue[processValue.length - 1] === opts.radixPoint && currentResult.c === opts.radixPoint;\n                        processValue = Inputmask(buildPostMask(processValue, opts), {\n                            numericInput: true,\n                            jitMasking: true,\n                            definitions: {\n                                \"*\": {\n                                    validator: \"[0-9?]\",\n                                    cardinality: 1\n                                }\n                            }\n                        }).format(processValue.join(\"\"));\n                        if (addRadix) processValue += opts.radixPoint;\n                        if (processValue.charAt(0) === opts.groupSeparator) {\n                            processValue.substr(1);\n                        }\n                    } else processValue = processValue.join(\"\");\n                }\n                if (opts.isNegative && currentResult.event === \"blur\") {\n                    opts.isNegative = processValue !== \"0\";\n                }\n                processValue = prefix + processValue;\n                processValue += suffix;\n                if (opts.isNegative) {\n                    processValue = opts.negationSymbol.front + processValue;\n                    processValue += opts.negationSymbol.back;\n                }\n                processValue = processValue.split(\"\");\n                if (charAtPos !== undefined) {\n                    if (charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back) {\n                        caretPos = $.inArray(\"?\", processValue);\n                        if (caretPos > -1) {\n                            processValue[caretPos] = charAtPos;\n                        } else caretPos = currentResult.caret || 0;\n                    } else if (charAtPos === opts.radixPoint || charAtPos === opts.negationSymbol.front || charAtPos === opts.negationSymbol.back) {\n                        var newCaretPos = $.inArray(charAtPos, processValue);\n                        if (newCaretPos !== -1) caretPos = newCaretPos;\n                    }\n                }\n                if (opts.numericInput) {\n                    caretPos = processValue.length - caretPos - 1;\n                    processValue = processValue.reverse();\n                }\n                var rslt = {\n                    caret: (charAtPos === undefined || currentResult.pos !== undefined) && caretPos !== undefined ? caretPos + (opts.numericInput ? -1 : 1) : caretPos,\n                    buffer: processValue,\n                    refreshFromBuffer: currentResult.dopost || buffer.join(\"\") !== processValue.join(\"\")\n                };\n                return rslt.refreshFromBuffer ? rslt : currentResult;\n            },\n            onBeforeWrite: function(e, buffer, caretPos, opts) {\n                function parseMinMaxOptions(opts) {\n                    if (opts.parseMinMaxOptions === undefined) {\n                        if (opts.min !== null) {\n                            opts.min = opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\n                            if (opts.radixPoint === \",\") opts.min = opts.min.replace(opts.radixPoint, \".\");\n                            opts.min = isFinite(opts.min) ? parseFloat(opts.min) : NaN;\n                            if (isNaN(opts.min)) opts.min = Number.MIN_VALUE;\n                        }\n                        if (opts.max !== null) {\n                            opts.max = opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\n                            if (opts.radixPoint === \",\") opts.max = opts.max.replace(opts.radixPoint, \".\");\n                            opts.max = isFinite(opts.max) ? parseFloat(opts.max) : NaN;\n                            if (isNaN(opts.max)) opts.max = Number.MAX_VALUE;\n                        }\n                        opts.parseMinMaxOptions = \"done\";\n                    }\n                }\n                if (e) {\n                    switch (e.type) {\n                      case \"keydown\":\n                        return opts.postValidation(buffer, caretPos, {\n                            caret: caretPos,\n                            dopost: true\n                        }, opts);\n\n                      case \"blur\":\n                      case \"checkval\":\n                        var unmasked;\n                        parseMinMaxOptions(opts);\n                        if (opts.min !== null || opts.max !== null) {\n                            unmasked = opts.onUnMask(buffer.join(\"\"), undefined, $.extend({}, opts, {\n                                unmaskAsNumber: true\n                            }));\n                            if (opts.min !== null && unmasked < opts.min) {\n                                opts.isNegative = opts.min < 0;\n                                return opts.postValidation(opts.min.toString().replace(\".\", opts.radixPoint).split(\"\"), caretPos, {\n                                    caret: caretPos,\n                                    dopost: true,\n                                    placeholder: \"0\"\n                                }, opts);\n                            } else if (opts.max !== null && unmasked > opts.max) {\n                                opts.isNegative = opts.max < 0;\n                                return opts.postValidation(opts.max.toString().replace(\".\", opts.radixPoint).split(\"\"), caretPos, {\n                                    caret: caretPos,\n                                    dopost: true,\n                                    placeholder: \"0\"\n                                }, opts);\n                            }\n                        }\n                        return opts.postValidation(buffer, caretPos, {\n                            caret: caretPos,\n                            placeholder: \"0\",\n                            event: \"blur\"\n                        }, opts);\n\n                      case \"_checkval\":\n                        return {\n                            caret: caretPos\n                        };\n\n                      default:\n                        break;\n                    }\n                }\n            },\n            regex: {\n                integerPart: function(opts, emptyCheck) {\n                    return emptyCheck ? new RegExp(\"[\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"+]?\") : new RegExp(\"[\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"+]?\\\\d+\");\n                },\n                integerNPart: function(opts) {\n                    return new RegExp(\"[\\\\d\" + Inputmask.escapeRegex(opts.groupSeparator) + Inputmask.escapeRegex(opts.placeholder.charAt(0)) + \"]+\");\n                }\n            },\n            definitions: {\n                \"~\": {\n                    validator: function(chrs, maskset, pos, strict, opts, isSelection) {\n                        var isValid, l;\n                        if (chrs === \"k\" || chrs === \"m\") {\n                            isValid = {\n                                insert: [],\n                                c: 0\n                            };\n                            for (var i = 0, l = chrs === \"k\" ? 2 : 5; i < l; i++) {\n                                isValid.insert.push({\n                                    pos: pos + i,\n                                    c: 0\n                                });\n                            }\n                            isValid.pos = pos + l;\n                            return isValid;\n                        }\n                        isValid = strict ? new RegExp(\"[0-9\" + Inputmask.escapeRegex(opts.groupSeparator) + \"]\").test(chrs) : new RegExp(\"[0-9]\").test(chrs);\n                        if (isValid === true) {\n                            if (opts.numericInput !== true && maskset.validPositions[pos] !== undefined && maskset.validPositions[pos].match.def === \"~\" && !isSelection) {\n                                var processValue = maskset.buffer.join(\"\");\n                                processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\");\n                                processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\n                                var pvRadixSplit = processValue.split(opts.radixPoint);\n                                if (pvRadixSplit.length > 1) {\n                                    pvRadixSplit[1] = pvRadixSplit[1].replace(/0/g, opts.placeholder.charAt(0));\n                                }\n                                if (pvRadixSplit[0] === \"0\") {\n                                    pvRadixSplit[0] = pvRadixSplit[0].replace(/0/g, opts.placeholder.charAt(0));\n                                }\n                                processValue = pvRadixSplit[0] + opts.radixPoint + pvRadixSplit[1] || \"\";\n                                var bufferTemplate = maskset._buffer.join(\"\");\n                                if (processValue === opts.radixPoint) {\n                                    processValue = bufferTemplate;\n                                }\n                                while (processValue.match(Inputmask.escapeRegex(bufferTemplate) + \"$\") === null) {\n                                    bufferTemplate = bufferTemplate.slice(1);\n                                }\n                                processValue = processValue.replace(bufferTemplate, \"\");\n                                processValue = processValue.split(\"\");\n                                if (processValue[pos] === undefined) {\n                                    isValid = {\n                                        pos: pos,\n                                        remove: pos\n                                    };\n                                } else {\n                                    isValid = {\n                                        pos: pos\n                                    };\n                                }\n                            }\n                        } else if (!strict && chrs === opts.radixPoint && maskset.validPositions[pos - 1] === undefined) {\n                            isValid = {\n                                insert: {\n                                    pos: pos,\n                                    c: 0\n                                },\n                                pos: pos + 1\n                            };\n                        }\n                        return isValid;\n                    },\n                    cardinality: 1\n                },\n                \"+\": {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        return opts.allowMinus && (chrs === \"-\" || chrs === opts.negationSymbol.front);\n                    },\n                    cardinality: 1,\n                    placeholder: \"\"\n                },\n                \"-\": {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        return opts.allowMinus && chrs === opts.negationSymbol.back;\n                    },\n                    cardinality: 1,\n                    placeholder: \"\"\n                },\n                \":\": {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        var radix = \"[\" + Inputmask.escapeRegex(opts.radixPoint) + \"]\";\n                        var isValid = new RegExp(radix).test(chrs);\n                        if (isValid && maskset.validPositions[pos] && maskset.validPositions[pos].match.placeholder === opts.radixPoint) {\n                            isValid = {\n                                caret: pos + 1\n                            };\n                        }\n                        return isValid;\n                    },\n                    cardinality: 1,\n                    placeholder: function(opts) {\n                        return opts.radixPoint;\n                    }\n                }\n            },\n            onUnMask: function(maskedValue, unmaskedValue, opts) {\n                if (unmaskedValue === \"\" && opts.nullable === true) {\n                    return unmaskedValue;\n                }\n                var processValue = maskedValue.replace(opts.prefix, \"\");\n                processValue = processValue.replace(opts.suffix, \"\");\n                processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\n                if (opts.placeholder.charAt(0) !== \"\") {\n                    processValue = processValue.replace(new RegExp(opts.placeholder.charAt(0), \"g\"), \"0\");\n                }\n                if (opts.unmaskAsNumber) {\n                    if (opts.radixPoint !== \"\" && processValue.indexOf(opts.radixPoint) !== -1) processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), \".\");\n                    processValue = processValue.replace(new RegExp(\"^\" + Inputmask.escapeRegex(opts.negationSymbol.front)), \"-\");\n                    processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\n                    return Number(processValue);\n                }\n                return processValue;\n            },\n            isComplete: function(buffer, opts) {\n                var maskedValue = (opts.numericInput ? buffer.slice().reverse() : buffer).join(\"\");\n                maskedValue = maskedValue.replace(new RegExp(\"^\" + Inputmask.escapeRegex(opts.negationSymbol.front)), \"-\");\n                maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\n                maskedValue = maskedValue.replace(opts.prefix, \"\");\n                maskedValue = maskedValue.replace(opts.suffix, \"\");\n                maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator) + \"([0-9]{3})\", \"g\"), \"$1\");\n                if (opts.radixPoint === \",\") maskedValue = maskedValue.replace(Inputmask.escapeRegex(opts.radixPoint), \".\");\n                return isFinite(maskedValue);\n            },\n            onBeforeMask: function(initialValue, opts) {\n                opts.isNegative = undefined;\n                var radixPoint = opts.radixPoint || \",\";\n                if ((typeof initialValue == \"number\" || opts.inputType === \"number\") && radixPoint !== \"\") {\n                    initialValue = initialValue.toString().replace(\".\", radixPoint);\n                }\n                var valueParts = initialValue.split(radixPoint), integerPart = valueParts[0].replace(/[^\\-0-9]/g, \"\"), decimalPart = valueParts.length > 1 ? valueParts[1].replace(/[^0-9]/g, \"\") : \"\";\n                initialValue = integerPart + (decimalPart !== \"\" ? radixPoint + decimalPart : decimalPart);\n                var digits = 0;\n                if (radixPoint !== \"\") {\n                    digits = decimalPart.length;\n                    if (decimalPart !== \"\") {\n                        var digitsFactor = Math.pow(10, digits || 1);\n                        if (isFinite(opts.digits)) {\n                            digits = parseInt(opts.digits);\n                            digitsFactor = Math.pow(10, digits);\n                        }\n                        initialValue = initialValue.replace(Inputmask.escapeRegex(radixPoint), \".\");\n                        if (isFinite(initialValue)) initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor;\n                        initialValue = initialValue.toString().replace(\".\", radixPoint);\n                    }\n                }\n                if (opts.digits === 0 && initialValue.indexOf(Inputmask.escapeRegex(radixPoint)) !== -1) {\n                    initialValue = initialValue.substring(0, initialValue.indexOf(Inputmask.escapeRegex(radixPoint)));\n                }\n                return alignDigits(initialValue.toString().split(\"\"), digits, opts).join(\"\");\n            },\n            onKeyDown: function(e, buffer, caretPos, opts) {\n                var $input = $(this);\n                if (e.ctrlKey) {\n                    switch (e.keyCode) {\n                      case Inputmask.keyCode.UP:\n                        $input.val(parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step));\n                        $input.trigger(\"setvalue\");\n                        break;\n\n                      case Inputmask.keyCode.DOWN:\n                        $input.val(parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step));\n                        $input.trigger(\"setvalue\");\n                        break;\n                    }\n                }\n            }\n        },\n        currency: {\n            prefix: \"$ \",\n            groupSeparator: \",\",\n            alias: \"numeric\",\n            placeholder: \"0\",\n            autoGroup: true,\n            digits: 2,\n            digitsOptional: false,\n            clearMaskOnLostFocus: false\n        },\n        decimal: {\n            alias: \"numeric\"\n        },\n        integer: {\n            alias: \"numeric\",\n            digits: 0,\n            radixPoint: \"\"\n        },\n        percentage: {\n            alias: \"numeric\",\n            digits: 2,\n            digitsOptional: true,\n            radixPoint: \".\",\n            placeholder: \"0\",\n            autoGroup: false,\n            min: 0,\n            max: 100,\n            suffix: \" %\",\n            allowMinus: false\n        }\n    });\n    return Inputmask;\n});","require(\"./dist/inputmask/inputmask.extensions\");\r\nrequire(\"./dist/inputmask/inputmask.date.extensions\");\r\nrequire(\"./dist/inputmask/inputmask.numeric.extensions\");\r\n\r\nmodule.exports = require(\"./dist/inputmask/inputmask.js\");\r\n","<template>\r\n\t<div class=\"vue-multi-mask-component\">\r\n\t\t<input type=\"text\"\r\n\t\t\t   ref=\"phoneField\"\r\n\t\t\t   @keydown=\"masksKeyDown\"\r\n\t\t\t   @keypress=\"masksKeyPress\"\r\n\t\t\t   @paste=\"masksPaste\"\r\n\t\t\t   @cut=\"masksPaste\"\r\n\t\t\t   :value=\"value\"\r\n\t\t\t   autocomplete=\"chrome-off\"\r\n\t\t\t   class=\"e-form-field phone-mask-input\"\r\n\t\t\t   inputmode=\"numeric\"\r\n\t\t\t   @input=\"inputHandler\">\r\n\t\t<template v-if=\"showRegion\">\r\n\t\t\t<p v-if=\"lang === 'RU'\">Регион: {{ hint }}</p>\r\n\t\t\t<p v-else>Region: {{ hint }}</p>\r\n\t\t</template>\r\n\t</div>\r\n</template>\r\n\r\n<script>\r\n\timport inputmask from \"inputmask\";\r\n\r\n\texport default {\r\n\t\tname: \"PhoneMask\",\r\n\t\tprops: {\r\n\t\t\tlang: {\r\n\t\t\t\ttype: String,\r\n\t\t\t\tdefault: 'RU'\r\n\t\t\t},\r\n\t\t\tshowRegion: {\r\n\t\t\t\ttype: Boolean,\r\n\t\t\t\tdefault: true\r\n\t\t\t},\r\n\t\t\tvalue: {\r\n\t\t\t\ttype: String\r\n\t\t\t}\r\n\t\t},\r\n\t\temits: ['change', 'input', 'update:modelValue'],\r\n\t\tmounted() {\r\n\t\t\tthis.maskStart(this.maskOpts);\r\n\t\t},\r\n\t\tcomputed: {\r\n\t\t\tmaskOpts() {\r\n\t\t\t\tlet self = this;\r\n\t\t\t\treturn {\r\n\t\t\t\t\tinputmask: {\r\n\t\t\t\t\t\tdefinitions: {\r\n\t\t\t\t\t\t\t\"#\": {\r\n\t\t\t\t\t\t\t\tvalidator: \"[0-9]\",\r\n\t\t\t\t\t\t\t\tcardinality: 2\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tshowMaskOnHover: false,\r\n\t\t\t\t\t\tautoUnmask: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmatch: /[0-9]/,\r\n\t\t\t\t\treplace: \"9\",\r\n\t\t\t\t\tlist: this.masksSort(this.maskList, ['#'], new RegExp('[0-9]|#'), 'mask'),\r\n\t\t\t\t\tlistKey: \"mask\",\r\n\t\t\t\t\tonMaskChange(maskObj, completed) {\r\n\t\t\t\t\t\tif (completed) {\r\n\t\t\t\t\t\t\tvar hint = '';\r\n\t\t\t\t\t\t\tif (self.lang == 'RU')\r\n\t\t\t\t\t\t\t\thint = maskObj.name_ru;\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\thint = maskObj.name_en;\r\n\t\t\t\t\t\t\tself.hint = hint;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tself.hint = hint;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tself.$refs.phoneField.setAttribute(\"placeholder\", \"+_(___)___-____\");\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tmethods: {\r\n\t\t\tinputHandler(e) {\r\n\t\t\t\tthis.$emit('input', e.target.value);\r\n\t\t\t},\r\n\t\t\tmasksSort(maskList, defs, match, key) {\r\n\t\t\t\tmaskList.sort(function (a, b) {\r\n\t\t\t\t\tlet ia = 0, ib = 0;\r\n\t\t\t\t\twhile (ia < a[key].length && ib < b[key].length) {\r\n\t\t\t\t\t\tlet\r\n\t\t\t\t\t\t\tcha = a[key].charAt(ia),\r\n\t\t\t\t\t\t\tchb = b[key].charAt(ib);\r\n\t\t\t\t\t\tif (!match.test(cha)) {\r\n\t\t\t\t\t\t\tia++;\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!match.test(chb)) {\r\n\t\t\t\t\t\t\tib++;\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (defs.indexOf(cha) != -1 && defs.indexOf(chb) == -1) {\r\n\t\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (defs.indexOf(cha) == -1 && defs.indexOf(chb) != -1) {\r\n\t\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (defs.indexOf(cha) == -1 && defs.indexOf(chb) == -1) {\r\n\t\t\t\t\t\t\tif (cha != chb) {\r\n\t\t\t\t\t\t\t\treturn cha < chb ? -1 : 1;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tia++;\r\n\t\t\t\t\t\tib++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile (ia < a[key].length || ib < b[key].length) {\r\n\t\t\t\t\t\tif (ia < a[key].length && !match.test(a[key].charAt(ia))) {\r\n\t\t\t\t\t\t\tia++;\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (ib < b[key].length && !match.test(b[key].charAt(ib))) {\r\n\t\t\t\t\t\t\tib++;\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (ia < a[key].length) {\r\n\t\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (ib < b[key].length) {\r\n\t\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t});\r\n\t\t\t\treturn maskList;\r\n\t\t\t},\r\n\t\t\tmaskStart(maskOpts) {\r\n\t\t\t\tvar defs = {};\r\n\t\t\t\tfor (var def in maskOpts.inputmask.definitions) {\r\n\t\t\t\t\tvar validator = maskOpts.inputmask.definitions[def].validator;\r\n\t\t\t\t\tswitch (typeof validator) {\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\t\tdefs[def] = new RegExp(validator);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tif (\"test\" in maskOpts.definitions[def].validator) {\r\n\t\t\t\t\t\t\t\tdefs[def] = validator;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\t\tdefs[def] = {\r\n\t\t\t\t\t\t\t\ttest: validator\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tmaskOpts.inputmask.definitions[maskOpts.replace] = {\r\n\t\t\t\t\tvalidator: maskOpts.match.source,\r\n\t\t\t\t\tcardinality: 1\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (this.$refs.phoneField.inputmasks) {\r\n\t\t\t\t\tinputmask.remove(this.$refs.phoneField);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.$refs.phoneField.inputmasks = {};\r\n\t\t\t\tthis.$refs.phoneField.inputmasks.options = maskOpts;\r\n\t\t\t\tthis.$refs.phoneField.inputmasks.defs = defs;\r\n\t\t\t\tthis.$refs.phoneField.inputmasks.iphone = navigator.userAgent.match(/iphone/i) != null;\r\n\t\t\t\tthis.$refs.phoneField.inputmasks.oldmatch = false;\r\n\t\t\t\tthis.$refs.phoneField.inputmasks.placeholder = maskOpts.inputmask.placeholder || inputmask.prototype.defaults.placeholder;\r\n\t\t\t\tthis.$refs.phoneField.inputmasks.insertMode = maskOpts.inputmask.insertMode !== undefined ? maskOpts.inputmask.insertMode : inputmask.prototype.defaults.insertMode;\r\n\t\t\t\tthis.maskInit();\r\n\t\t\t},\r\n\r\n\t\t\tmaskInit(text, action) {\r\n\t\t\t\tif (text === undefined) {\r\n\t\t\t\t\tif (this.$refs.phoneField.inputmask && this.$refs.phoneField.inputmask._valueGet) {\r\n\t\t\t\t\t\ttext = this.$refs.phoneField.inputmask._valueGet();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttext = this.$refs.phoneField.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar match = this.maskMatch(text);\r\n\t\t\t\twhile (!match && text.length > 0) {\r\n\t\t\t\t\ttext = text.substr(0, text.length - 1);\r\n\t\t\t\t\tmatch = this.maskMatch(text);\r\n\t\t\t\t}\r\n\t\t\t\tif (!action)\r\n\t\t\t\t\tthis.maskApply(match, text);\r\n\t\t\t\telse {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tthis.maskApply(match, text);\r\n\t\t\t\t\t}, 0)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tmaskMatch(text) {\r\n\t\t\t\tvar maskOpts = this.$refs.phoneField.inputmasks.options;\r\n\t\t\t\tvar mtxt = \"\";\r\n\t\t\t\tfor (var i = 0; i < text.length; i++) {\r\n\t\t\t\t\tvar ch = text.charAt(i);\r\n\t\t\t\t\tif (ch == this.$refs.phoneField.inputmasks.placeholder) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (maskOpts.match.test(ch)) {\r\n\t\t\t\t\t\tmtxt += ch;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tfor (var mid in maskOpts.list) {\r\n\t\t\t\t\tvar mask = maskOpts.list[mid][maskOpts.listKey];\r\n\t\t\t\t\tvar pass = true;\r\n\t\t\t\t\tfor (var it = 0, im = 0; it < mtxt.length && im < mask.length;) {\r\n\t\t\t\t\t\tvar chm = mask.charAt(im);\r\n\t\t\t\t\t\tvar cht = mtxt.charAt(it);\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t!maskOpts.match.test(chm) && !(chm in this.$refs.phoneField.inputmasks.defs)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tim++;\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ((chm in this.$refs.phoneField.inputmasks.defs && this.$refs.phoneField.inputmasks.defs[chm].test(cht)) || cht == chm) {\r\n\t\t\t\t\t\t\tit++;\r\n\t\t\t\t\t\t\tim++;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tpass = false;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (pass && it == mtxt.length) {\r\n\t\t\t\t\t\tvar determined = mask.substr(im).search(maskOpts.match) == -1;\r\n\t\t\t\t\t\tmask = mask.replace(\r\n\t\t\t\t\t\t\tnew RegExp([maskOpts.match.source].concat(Object.keys(this.$refs.phoneField.inputmasks.defs)).join(\"|\"), \"g\"),\r\n\t\t\t\t\t\t\tmaskOpts.replace\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tvar completed = mask.substr(im).search(maskOpts.replace) == -1;\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmask: mask,\r\n\t\t\t\t\t\t\tobj: maskOpts.list[mid],\r\n\t\t\t\t\t\t\tdetermined: determined,\r\n\t\t\t\t\t\t\tcompleted: completed\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t},\r\n\r\n\t\t\tmaskApply(match, newtext) {\r\n\t\t\t\tvar maskOpts = this.$refs.phoneField.inputmasks.options;\r\n\t\t\t\tif (match && (newtext !== undefined || match.mask != this.$refs.phoneField.inputmasks.oldmatch.mask)) {\r\n\t\t\t\t\tvar caretPos;\r\n\t\t\t\t\tif (newtext === undefined) {\r\n\t\t\t\t\t\tcaretPos = this.caretApply(this.$refs.phoneField.inputmasks.oldmatch.mask, match.mask, this.caret());\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (this.$refs.phoneField.inputmask)\r\n\t\t\t\t\t\t\tinputmask.remove(this.$refs.phoneField);\r\n\t\t\t\t\t\tthis.$refs.phoneField.value = newtext;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tinputmask(match.mask, maskOpts).mask(this.$refs.phoneField);\r\n\t\t\t\t\tif (newtext === undefined)\r\n\t\t\t\t\t\tthis.caret(caretPos.begin, caretPos.end);\r\n\t\t\t\t}\r\n\t\t\t\tthis.$refs.phoneField.inputmasks.oldmatch = match;\r\n\t\t\t\tmaskOpts.onMaskChange(match.obj, match.determined);\r\n\t\t\t},\r\n\t\t\tcaret(begin, end) {\r\n\t\t\t\tlet range;\r\n\t\t\t\tif (typeof begin == \"number\") {\r\n\t\t\t\t\tend = typeof end == \"number\" ? end : begin;\r\n\t\t\t\t\tif (this.$refs.phoneField.setSelectionRange) {\r\n\t\t\t\t\t\tthis.$refs.phoneField.setSelectionRange(begin, end);\r\n\t\t\t\t\t} else if (this.$refs.phoneField.createTextRange) {\r\n\t\t\t\t\t\trange = this.$refs.phoneField.createTextRange();\r\n\t\t\t\t\t\trange.collapse(true);\r\n\t\t\t\t\t\trange.moveEnd(\"character\", end);\r\n\t\t\t\t\t\trange.moveStart(\"character\", begin);\r\n\t\t\t\t\t\trange.select();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (this.$refs.phoneField.setSelectionRange) {\r\n\t\t\t\t\t\tbegin = this.$refs.phoneField.selectionStart;\r\n\t\t\t\t\t\tend = this.$refs.phoneField.selectionEnd;\r\n\t\t\t\t\t} else if (document.selection && document.selection.createRange) {\r\n\t\t\t\t\t\trange = document.selection.createRange();\r\n\t\t\t\t\t\tbegin = 0 - range.duplicate().moveStart(\"character\", -100000);\r\n\t\t\t\t\t\tend = begin + range.text.length;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tbegin: begin,\r\n\t\t\t\t\t\tend: end\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tcaretApply(oldMask, newMask, oldPos) {\r\n\t\t\t\tvar maskOpts = this.$refs.phoneField.inputmasks.options;\r\n\t\t\t\tif (!oldMask)\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\tvar pos = 0,\r\n\t\t\t\t\tstartPos = 0;\r\n\t\t\t\tfor (; pos < oldPos.begin; pos++) {\r\n\t\t\t\t\tif (oldMask.charAt(pos) == maskOpts.replace)\r\n\t\t\t\t\t\tstartPos++;\r\n\t\t\t\t}\r\n\t\t\t\tvar endPos = 0;\r\n\t\t\t\tfor (; pos < oldPos.end; pos++) {\r\n\t\t\t\t\tif (oldMask.charAt(pos) == maskOpts.replace)\r\n\t\t\t\t\t\tendPos++;\r\n\t\t\t\t}\r\n\t\t\t\tfor (pos = 0; pos < newMask.length && (startPos > 0 || newMask.charAt(pos) != maskOpts.replace); pos++) {\r\n\t\t\t\t\tif (newMask.charAt(pos) == maskOpts.replace)\r\n\t\t\t\t\t\tstartPos--;\r\n\t\t\t\t}\r\n\t\t\t\tstartPos = pos;\r\n\t\t\t\tfor (; pos < newMask.length && endPos > 0; pos++) {\r\n\t\t\t\t\tif (newMask.charAt(pos) == maskOpts.replace)\r\n\t\t\t\t\t\tendPos--;\r\n\t\t\t\t}\r\n\t\t\t\tendPos = pos;\r\n\t\t\t\treturn {\r\n\t\t\t\t\tbegin: startPos,\r\n\t\t\t\t\tend: endPos\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tmasksKeyDown(e) {\r\n\t\t\t\tif (e.metaKey) {\r\n\t\t\t\t\tthis.runOriginal(e);\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar maskOpts = this.$refs.phoneField.inputmasks.options;\r\n\t\t\t\te = e || window.event;\r\n\t\t\t\tvar k = e.which || e.charCode || e.keyCode;\r\n\t\t\t\tif (k == 8 || k == 46 || (this.$refs.phoneField.inputmasks.iphone && k == 127)) {\r\n\t\t\t\t\t// delete or backspace\r\n\t\t\t\t\tvar text = this.$refs.phoneField.inputmask._valueGet();\r\n\t\t\t\t\tvar caretPos = this.caret();\r\n\t\t\t\t\tif (caretPos.begin == caretPos.end) {\r\n\t\t\t\t\t\tvar pos = caretPos.begin;\r\n\t\t\t\t\t\tdo {\r\n\t\t\t\t\t\t\tif (k != 46) {\r\n\t\t\t\t\t\t\t\tpos--;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvar chr = text.charAt(pos);\r\n\t\t\t\t\t\t\ttext = text.substring(0, pos) + text.substring(pos + 1);\r\n\t\t\t\t\t\t} while (pos > 0 && pos < text.length && chr != this.$refs.phoneField.inputmasks.placeholder && !maskOpts.match.test(chr));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttext = text.substring(0, caretPos.begin) + text.substring(caretPos.end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn this.keyboardApply(e, text, false);\r\n\t\t\t\t}\r\n\t\t\t\tif (k == 45)\r\n\t\t\t\t\tthis.$refs.phoneField.inputmasks.insertMode = !this.$refs.phoneField.inputmasks.insertMode;\r\n\t\t\t\tthis.runOriginal(e);\r\n\t\t\t\treturn true;\r\n\t\t\t},\r\n\t\t\tkeyboardApply(e, text, insert) {\r\n\t\t\t\tvar match = this.maskMatch(text);\r\n\t\t\t\tif (!match || match.obj != this.$refs.phoneField.inputmasks.oldmatch.obj || match.determined != this.$refs.phoneField.inputmasks.oldmatch.determined) {\r\n\t\t\t\t\tif (match) {\r\n\t\t\t\t\t\tif (insert) {\r\n\t\t\t\t\t\t\tthis.maskApply(match);\r\n\t\t\t\t\t\t\tthis.runOriginal(e);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.runOriginal(e);\r\n\t\t\t\t\t\t\t// put the maskApply call in a setTimeout as otherwise the handler of the original event will not be executed until after the mask has been changed. Even if this.runOriginal is called before this.maskApply\r\n\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\tthis.maskApply(match);\r\n\t\t\t\t\t\t\t}, 0)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (!insert || !this.$refs.phoneField.inputmasks.insertMode) {\r\n\t\t\t\t\t\t\tthis.maskInit(text);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.maskInit(text, 'notmatch');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tthis.runOriginal(e);\r\n\t\t\t\treturn true;\r\n\t\t\t},\r\n\t\t\trunOriginal(e) {\r\n\t\t\t\tif (this.$refs.phoneField.inputmask.events && this.$refs.phoneField.inputmask.events[e.type])\r\n\t\t\t\t\tthis.$refs.phoneField.inputmask.events[e.type][0](e);\r\n\t\t\t},\r\n\t\t\tmasksKeyPress(e) {\r\n\t\t\t\tif (e.metaKey) {\r\n\t\t\t\t\tthis.runOriginal(e);\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar text = this.$refs.phoneField.inputmask._valueGet();\r\n\t\t\t\te = e || window.event;\r\n\t\t\t\tvar k = e.which || e.charCode || e.keyCode,\r\n\t\t\t\t\tc = String.fromCharCode(k),\r\n\t\t\t\t\tcaretPos = this.caret();\r\n\t\t\t\tif (caretPos.begin == caretPos.end && text.charAt(caretPos.begin) == this.$refs.phoneField.inputmasks.placeholder) {\r\n\t\t\t\t\ttext = text.substring(0, caretPos.begin) + c + text.substring(caretPos.end + 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttext =\r\n\t\t\t\t\t\ttext.substring(0, caretPos.begin) + c + text.substring(caretPos.end);\r\n\t\t\t\t}\r\n\t\t\t\treturn this.keyboardApply(e, text, true);\r\n\t\t\t},\r\n\t\t\tmasksPaste() {\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.maskInit();\r\n\t\t\t\t\tthis.$emit('input', this.$refs.phoneField.value);\r\n\t\t\t\t\tthis.$emit('change');\r\n\t\t\t\t}, 0);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t},\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\thint: \"\",\r\n\t\t\t\tmaskList: [\r\n\t\t\t\t\t{ \"mask\": \"+1(###)###-####\", \"cc\": [\"US\", \"CA\"], \"name_en\": \"USA and Canada\", \"desc_en\": \"\", \"name_ru\": \"США и Канада\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+247-####\", \"cc\": \"AC\", \"name_en\": \"Ascension\", \"desc_en\": \"\", \"name_ru\": \"Остров Вознесения\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+376-###-###\", \"cc\": \"AD\", \"name_en\": \"Andorra\", \"desc_en\": \"\", \"name_ru\": \"Андорра\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+971-5#-###-####\", \"cc\": \"AE\", \"name_en\": \"United Arab Emirates\", \"desc_en\": \"mobile\", \"name_ru\": \"Объединенные Арабские Эмираты\", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+971-#-###-####\", \"cc\": \"AE\", \"name_en\": \"United Arab Emirates\", \"desc_en\": \"\", \"name_ru\": \"Объединенные Арабские Эмираты\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+93-##-###-####\", \"cc\": \"AF\", \"name_en\": \"Afghanistan\", \"desc_en\": \"\", \"name_ru\": \"Афганистан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(268)###-####\", \"cc\": \"AG\", \"name_en\": \"Antigua & Barbuda\", \"desc_en\": \"\", \"name_ru\": \"Антигуа и Барбуда\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(264)###-####\", \"cc\": \"AI\", \"name_en\": \"Anguilla\", \"desc_en\": \"\", \"name_ru\": \"Ангилья\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+355(###)###-###\", \"cc\": \"AL\", \"name_en\": \"Albania\", \"desc_en\": \"\", \"name_ru\": \"Албания\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+374-##-###-###\", \"cc\": \"AM\", \"name_en\": \"Armenia\", \"desc_en\": \"\", \"name_ru\": \"Армения\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+599-###-####\", \"cc\": \"AN\", \"name_en\": \"Caribbean Netherlands\", \"desc_en\": \"\", \"name_ru\": \"Карибские Нидерланды\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+599-###-####\", \"cc\": \"AN\", \"name_en\": \"Netherlands Antilles\", \"desc_en\": \"\", \"name_ru\": \"Нидерландские Антильские острова\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+599-9###-####\", \"cc\": \"AN\", \"name_en\": \"Netherlands Antilles\", \"desc_en\": \"Curacao\", \"name_ru\": \"Нидерландские Антильские острова\", \"desc_ru\": \"Кюрасао\" },\r\n\t\t\t\t\t{ \"mask\": \"+244(###)###-###\", \"cc\": \"AO\", \"name_en\": \"Angola\", \"desc_en\": \"\", \"name_ru\": \"Ангола\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+672-1##-###\", \"cc\": \"AQ\", \"name_en\": \"Australian bases in Antarctica\", \"desc_en\": \"\", \"name_ru\": \"Австралийская антарктическая база\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+54(###)###-####\", \"cc\": \"AR\", \"name_en\": \"Argentina\", \"desc_en\": \"\", \"name_ru\": \"Аргентина\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(684)###-####\", \"cc\": \"AS\", \"name_en\": \"American Samoa\", \"desc_en\": \"\", \"name_ru\": \"Американское Самоа\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+43(###)###-####\", \"cc\": \"AT\", \"name_en\": \"Austria\", \"desc_en\": \"\", \"name_ru\": \"Австрия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+61-#-####-####\", \"cc\": \"AU\", \"name_en\": \"Australia\", \"desc_en\": \"\", \"name_ru\": \"Австралия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+297-###-####\", \"cc\": \"AW\", \"name_en\": \"Aruba\", \"desc_en\": \"\", \"name_ru\": \"Аруба\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+994-##-###-##-##\", \"cc\": \"AZ\", \"name_en\": \"Azerbaijan\", \"desc_en\": \"\", \"name_ru\": \"Азербайджан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+387-##-#####\", \"cc\": \"BA\", \"name_en\": \"Bosnia and Herzegovina\", \"desc_en\": \"\", \"name_ru\": \"Босния и Герцеговина\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+387-##-####\", \"cc\": \"BA\", \"name_en\": \"Bosnia and Herzegovina\", \"desc_en\": \"\", \"name_ru\": \"Босния и Герцеговина\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(246)###-####\", \"cc\": \"BB\", \"name_en\": \"Barbados\", \"desc_en\": \"\", \"name_ru\": \"Барбадос\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+880-##-###-###\", \"cc\": \"BD\", \"name_en\": \"Bangladesh\", \"desc_en\": \"\", \"name_ru\": \"Бангладеш\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+32(###)###-###\", \"cc\": \"BE\", \"name_en\": \"Belgium\", \"desc_en\": \"\", \"name_ru\": \"Бельгия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+226-##-##-####\", \"cc\": \"BF\", \"name_en\": \"Burkina Faso\", \"desc_en\": \"\", \"name_ru\": \"Буркина Фасо\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+359(###)###-###\", \"cc\": \"BG\", \"name_en\": \"Bulgaria\", \"desc_en\": \"\", \"name_ru\": \"Болгария\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+973-####-####\", \"cc\": \"BH\", \"name_en\": \"Bahrain\", \"desc_en\": \"\", \"name_ru\": \"Бахрейн\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+257-##-##-####\", \"cc\": \"BI\", \"name_en\": \"Burundi\", \"desc_en\": \"\", \"name_ru\": \"Бурунди\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+229-##-##-####\", \"cc\": \"BJ\", \"name_en\": \"Benin\", \"desc_en\": \"\", \"name_ru\": \"Бенин\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(441)###-####\", \"cc\": \"BM\", \"name_en\": \"Bermuda\", \"desc_en\": \"\", \"name_ru\": \"Бермудские острова\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+673-###-####\", \"cc\": \"BN\", \"name_en\": \"Brunei Darussalam\", \"desc_en\": \"\", \"name_ru\": \"Бруней-Даруссалам\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+591-#-###-####\", \"cc\": \"BO\", \"name_en\": \"Bolivia\", \"desc_en\": \"\", \"name_ru\": \"Боливия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+55(##)####-####\", \"cc\": \"BR\", \"name_en\": \"Brazil\", \"desc_en\": \"\", \"name_ru\": \"Бразилия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+55(##)7###-####\", \"cc\": \"BR\", \"name_en\": \"Brazil\", \"desc_en\": \"mobile\", \"name_ru\": \"Бразилия\", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+55(##)9####-####\", \"cc\": \"BR\", \"name_en\": \"Brazil\", \"desc_en\": \"mobile\", \"name_ru\": \"Бразилия\", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(242)###-####\", \"cc\": \"BS\", \"name_en\": \"Bahamas\", \"desc_en\": \"\", \"name_ru\": \"Багамские Острова\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+975-17-###-###\", \"cc\": \"BT\", \"name_en\": \"Bhutan\", \"desc_en\": \"\", \"name_ru\": \"Бутан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+975-#-###-###\", \"cc\": \"BT\", \"name_en\": \"Bhutan\", \"desc_en\": \"\", \"name_ru\": \"Бутан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+267-##-###-###\", \"cc\": \"BW\", \"name_en\": \"Botswana\", \"desc_en\": \"\", \"name_ru\": \"Ботсвана\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+375(##)###-##-##\", \"cc\": \"BY\", \"name_en\": \"Belarus\", \"desc_en\": \"\", \"name_ru\": \"Беларусь (Белоруссия)\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+501-###-####\", \"cc\": \"BZ\", \"name_en\": \"Belize\", \"desc_en\": \"\", \"name_ru\": \"Белиз\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+243(###)###-###\", \"cc\": \"CD\", \"name_en\": \"Dem. Rep. Congo\", \"desc_en\": \"\", \"name_ru\": \"Дем. Респ. Конго (Киншаса)\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+236-##-##-####\", \"cc\": \"CF\", \"name_en\": \"Central African Republic\", \"desc_en\": \"\", \"name_ru\": \"Центральноафриканская Республика\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+242-##-###-####\", \"cc\": \"CG\", \"name_en\": \"Congo (Brazzaville)\", \"desc_en\": \"\", \"name_ru\": \"Конго (Браззавиль)\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+41-##-###-####\", \"cc\": \"CH\", \"name_en\": \"Switzerland\", \"desc_en\": \"\", \"name_ru\": \"Швейцария\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+225-##-###-###\", \"cc\": \"CI\", \"name_en\": \"Cote d’Ivoire (Ivory Coast)\", \"desc_en\": \"\", \"name_ru\": \"Кот-д’Ивуар\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+682-##-###\", \"cc\": \"CK\", \"name_en\": \"Cook Islands\", \"desc_en\": \"\", \"name_ru\": \"Острова Кука\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+56-#-####-####\", \"cc\": \"CL\", \"name_en\": \"Chile\", \"desc_en\": \"\", \"name_ru\": \"Чили\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+237-####-####\", \"cc\": \"CM\", \"name_en\": \"Cameroon\", \"desc_en\": \"\", \"name_ru\": \"Камерун\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+86(###)####-####\", \"cc\": \"CN\", \"name_en\": \"China (PRC)\", \"desc_en\": \"\", \"name_ru\": \"Китайская Н.Р.\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+86(###)####-###\", \"cc\": \"CN\", \"name_en\": \"China (PRC)\", \"desc_en\": \"\", \"name_ru\": \"Китайская Н.Р.\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+86-##-#####-#####\", \"cc\": \"CN\", \"name_en\": \"China (PRC)\", \"desc_en\": \"\", \"name_ru\": \"Китайская Н.Р.\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+87-##-#####-#####\", \"cc\": \"CN\", \"name_en\": \"China (PRC)\", \"desc_en\": \"\", \"name_ru\": \"Китайская Н.Р.\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+57(###)###-####\", \"cc\": \"CO\", \"name_en\": \"Colombia\", \"desc_en\": \"\", \"name_ru\": \"Колумбия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+506-####-####\", \"cc\": \"CR\", \"name_en\": \"Costa Rica\", \"desc_en\": \"\", \"name_ru\": \"Коста-Рика\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+53-#-###-####\", \"cc\": \"CU\", \"name_en\": \"Cuba\", \"desc_en\": \"\", \"name_ru\": \"Куба\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+238(###)##-##\", \"cc\": \"CV\", \"name_en\": \"Cape Verde\", \"desc_en\": \"\", \"name_ru\": \"Кабо-Верде\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+599-###-####\", \"cc\": \"CW\", \"name_en\": \"Curacao\", \"desc_en\": \"\", \"name_ru\": \"Кюрасао\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+357-##-###-###\", \"cc\": \"CY\", \"name_en\": \"Cyprus\", \"desc_en\": \"\", \"name_ru\": \"Кипр\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+420(###)###-###\", \"cc\": \"CZ\", \"name_en\": \"Czech Republic\", \"desc_en\": \"\", \"name_ru\": \"Чехия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+49(####)###-####\", \"cc\": \"DE\", \"name_en\": \"Germany\", \"desc_en\": \"\", \"name_ru\": \"Германия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+49(###)###-####\", \"cc\": \"DE\", \"name_en\": \"Germany\", \"desc_en\": \"\", \"name_ru\": \"Германия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+49(###)##-####\", \"cc\": \"DE\", \"name_en\": \"Germany\", \"desc_en\": \"\", \"name_ru\": \"Германия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+49(###)##-###\", \"cc\": \"DE\", \"name_en\": \"Germany\", \"desc_en\": \"\", \"name_ru\": \"Германия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+49(###)##-##\", \"cc\": \"DE\", \"name_en\": \"Germany\", \"desc_en\": \"\", \"name_ru\": \"Германия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+49-###-###\", \"cc\": \"DE\", \"name_en\": \"Germany\", \"desc_en\": \"\", \"name_ru\": \"Германия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+253-##-##-##-##\", \"cc\": \"DJ\", \"name_en\": \"Djibouti\", \"desc_en\": \"\", \"name_ru\": \"Джибути\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+45 ## ## ## ##\", \"cc\": \"DK\", \"name_en\": \"Denmark\", \"desc_en\": \"\", \"name_ru\": \"Дания\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(767)###-####\", \"cc\": \"DM\", \"name_en\": \"Dominica\", \"desc_en\": \"\", \"name_ru\": \"Доминика\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(809)###-####\", \"cc\": \"DO\", \"name_en\": \"Dominican Republic\", \"desc_en\": \"\", \"name_ru\": \"Доминиканская Республика\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(829)###-####\", \"cc\": \"DO\", \"name_en\": \"Dominican Republic\", \"desc_en\": \"\", \"name_ru\": \"Доминиканская Республика\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(849)###-####\", \"cc\": \"DO\", \"name_en\": \"Dominican Republic\", \"desc_en\": \"\", \"name_ru\": \"Доминиканская Республика\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+213-##-###-####\", \"cc\": \"DZ\", \"name_en\": \"Algeria\", \"desc_en\": \"\", \"name_ru\": \"Алжир\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+593-##-###-####\", \"cc\": \"EC\", \"name_en\": \"Ecuador \", \"desc_en\": \"mobile\", \"name_ru\": \"Эквадор \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+593-#-###-####\", \"cc\": \"EC\", \"name_en\": \"Ecuador\", \"desc_en\": \"\", \"name_ru\": \"Эквадор\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+372-####-####\", \"cc\": \"EE\", \"name_en\": \"Estonia \", \"desc_en\": \"mobile\", \"name_ru\": \"Эстония \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+372-###-####\", \"cc\": \"EE\", \"name_en\": \"Estonia\", \"desc_en\": \"\", \"name_ru\": \"Эстония\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+20(###)###-####\", \"cc\": \"EG\", \"name_en\": \"Egypt\", \"desc_en\": \"\", \"name_ru\": \"Египет\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+291-#-###-###\", \"cc\": \"ER\", \"name_en\": \"Eritrea\", \"desc_en\": \"\", \"name_ru\": \"Эритрея\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+34(###)###-###\", \"cc\": \"ES\", \"name_en\": \"Spain\", \"desc_en\": \"\", \"name_ru\": \"Испания\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+251-##-###-####\", \"cc\": \"ET\", \"name_en\": \"Ethiopia\", \"desc_en\": \"\", \"name_ru\": \"Эфиопия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+358(###)###-##-##\", \"cc\": \"FI\", \"name_en\": \"Finland\", \"desc_en\": \"\", \"name_ru\": \"Финляндия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+679-##-#####\", \"cc\": \"FJ\", \"name_en\": \"Fiji\", \"desc_en\": \"\", \"name_ru\": \"Фиджи\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+500-#####\", \"cc\": \"FK\", \"name_en\": \"Falkland Islands\", \"desc_en\": \"\", \"name_ru\": \"Фолклендские острова\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+691-###-####\", \"cc\": \"FM\", \"name_en\": \"F.S. Micronesia\", \"desc_en\": \"\", \"name_ru\": \"Ф.Ш. Микронезии\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+298-###-###\", \"cc\": \"FO\", \"name_en\": \"Faroe Islands\", \"desc_en\": \"\", \"name_ru\": \"Фарерские острова\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+262-#####-####\", \"cc\": \"FR\", \"name_en\": \"Mayotte\", \"desc_en\": \"\", \"name_ru\": \"Майотта\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+33(###)###-###\", \"cc\": \"FR\", \"name_en\": \"France\", \"desc_en\": \"\", \"name_ru\": \"Франция\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+508-##-####\", \"cc\": \"FR\", \"name_en\": \"St Pierre & Miquelon\", \"desc_en\": \"\", \"name_ru\": \"Сен-Пьер и Микелон\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+590(###)###-###\", \"cc\": \"FR\", \"name_en\": \"Guadeloupe\", \"desc_en\": \"\", \"name_ru\": \"Гваделупа\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+241-#-##-##-##\", \"cc\": \"GA\", \"name_en\": \"Gabon\", \"desc_en\": \"\", \"name_ru\": \"Габон\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(473)###-####\", \"cc\": \"GD\", \"name_en\": \"Grenada\", \"desc_en\": \"\", \"name_ru\": \"Гренада\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+995(###)###-###\", \"cc\": \"GE\", \"name_en\": \"Rep. of Georgia\", \"desc_en\": \"\", \"name_ru\": \"Грузия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+594-#####-####\", \"cc\": \"GF\", \"name_en\": \"Guiana (French)\", \"desc_en\": \"\", \"name_ru\": \"Фр. Гвиана\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+233(###)###-###\", \"cc\": \"GH\", \"name_en\": \"Ghana\", \"desc_en\": \"\", \"name_ru\": \"Гана\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+350-###-#####\", \"cc\": \"GI\", \"name_en\": \"Gibraltar\", \"desc_en\": \"\", \"name_ru\": \"Гибралтар\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+299-##-##-##\", \"cc\": \"GL\", \"name_en\": \"Greenland\", \"desc_en\": \"\", \"name_ru\": \"Гренландия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+220(###)##-##\", \"cc\": \"GM\", \"name_en\": \"Gambia\", \"desc_en\": \"\", \"name_ru\": \"Гамбия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+224-##-###-###\", \"cc\": \"GN\", \"name_en\": \"Guinea\", \"desc_en\": \"\", \"name_ru\": \"Гвинея\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+240-##-###-####\", \"cc\": \"GQ\", \"name_en\": \"Equatorial Guinea\", \"desc_en\": \"\", \"name_ru\": \"Экваториальная Гвинея\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+30(###)###-####\", \"cc\": \"GR\", \"name_en\": \"Greece\", \"desc_en\": \"\", \"name_ru\": \"Греция\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+502-#-###-####\", \"cc\": \"GT\", \"name_en\": \"Guatemala\", \"desc_en\": \"\", \"name_ru\": \"Гватемала\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(671)###-####\", \"cc\": \"GU\", \"name_en\": \"Guam\", \"desc_en\": \"\", \"name_ru\": \"Гуам\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+245-#-######\", \"cc\": \"GW\", \"name_en\": \"Guinea-Bissau\", \"desc_en\": \"\", \"name_ru\": \"Гвинея-Бисау\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+592-###-####\", \"cc\": \"GY\", \"name_en\": \"Guyana\", \"desc_en\": \"\", \"name_ru\": \"Гайана\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+852-####-####\", \"cc\": \"HK\", \"name_en\": \"Hong Kong\", \"desc_en\": \"\", \"name_ru\": \"Гонконг\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+504-####-####\", \"cc\": \"HN\", \"name_en\": \"Honduras\", \"desc_en\": \"\", \"name_ru\": \"Гондурас\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+385-##-###-###\", \"cc\": \"HR\", \"name_en\": \"Croatia\", \"desc_en\": \"\", \"name_ru\": \"Хорватия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+509-##-##-####\", \"cc\": \"HT\", \"name_en\": \"Haiti\", \"desc_en\": \"\", \"name_ru\": \"Гаити\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+36(###)###-###\", \"cc\": \"HU\", \"name_en\": \"Hungary\", \"desc_en\": \"\", \"name_ru\": \"Венгрия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+62(8##)###-####\", \"cc\": \"ID\", \"name_en\": \"Indonesia \", \"desc_en\": \"mobile\", \"name_ru\": \"Индонезия \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+62-##-###-##\", \"cc\": \"ID\", \"name_en\": \"Indonesia\", \"desc_en\": \"\", \"name_ru\": \"Индонезия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+62-##-###-###\", \"cc\": \"ID\", \"name_en\": \"Indonesia\", \"desc_en\": \"\", \"name_ru\": \"Индонезия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+62-##-###-####\", \"cc\": \"ID\", \"name_en\": \"Indonesia\", \"desc_en\": \"\", \"name_ru\": \"Индонезия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+62(8##)###-###\", \"cc\": \"ID\", \"name_en\": \"Indonesia \", \"desc_en\": \"mobile\", \"name_ru\": \"Индонезия \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+62(8##)###-##-###\", \"cc\": \"ID\", \"name_en\": \"Indonesia \", \"desc_en\": \"mobile\", \"name_ru\": \"Индонезия \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+353(###)###-###\", \"cc\": \"IE\", \"name_en\": \"Ireland\", \"desc_en\": \"\", \"name_ru\": \"Ирландия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+972-5#-###-####\", \"cc\": \"IL\", \"name_en\": \"Israel \", \"desc_en\": \"mobile\", \"name_ru\": \"Израиль \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+972-#-###-####\", \"cc\": \"IL\", \"name_en\": \"Israel\", \"desc_en\": \"\", \"name_ru\": \"Израиль\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+91(####)###-###\", \"cc\": \"IN\", \"name_en\": \"India\", \"desc_en\": \"\", \"name_ru\": \"Индия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+246-###-####\", \"cc\": \"IO\", \"name_en\": \"Diego Garcia\", \"desc_en\": \"\", \"name_ru\": \"Диего-Гарсия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+964(###)###-####\", \"cc\": \"IQ\", \"name_en\": \"Iraq\", \"desc_en\": \"\", \"name_ru\": \"Ирак\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+98(###)###-####\", \"cc\": \"IR\", \"name_en\": \"Iran\", \"desc_en\": \"\", \"name_ru\": \"Иран\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+354-###-####\", \"cc\": \"IS\", \"name_en\": \"Iceland\", \"desc_en\": \"\", \"name_ru\": \"Исландия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+39(###)####-###\", \"cc\": \"IT\", \"name_en\": \"Italy\", \"desc_en\": \"\", \"name_ru\": \"Италия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(876)###-####\", \"cc\": \"JM\", \"name_en\": \"Jamaica\", \"desc_en\": \"\", \"name_ru\": \"Ямайка\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+962-#-####-####\", \"cc\": \"JO\", \"name_en\": \"Jordan\", \"desc_en\": \"\", \"name_ru\": \"Иордания\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+81-##-####-####\", \"cc\": \"JP\", \"name_en\": \"Japan \", \"desc_en\": \"mobile\", \"name_ru\": \"Япония \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+81(###)###-###\", \"cc\": \"JP\", \"name_en\": \"Japan\", \"desc_en\": \"\", \"name_ru\": \"Япония\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+254-###-######\", \"cc\": \"KE\", \"name_en\": \"Kenya\", \"desc_en\": \"\", \"name_ru\": \"Кения\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+996(###)###-###\", \"cc\": \"KG\", \"name_en\": \"Kyrgyzstan\", \"desc_en\": \"\", \"name_ru\": \"Киргизия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+855-##-###-###\", \"cc\": \"KH\", \"name_en\": \"Cambodia\", \"desc_en\": \"\", \"name_ru\": \"Камбоджа\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+686-##-###\", \"cc\": \"KI\", \"name_en\": \"Kiribati\", \"desc_en\": \"\", \"name_ru\": \"Кирибати\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+269-##-#####\", \"cc\": \"KM\", \"name_en\": \"Comoros\", \"desc_en\": \"\", \"name_ru\": \"Коморы\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(869)###-####\", \"cc\": \"KN\", \"name_en\": \"Saint Kitts & Nevis\", \"desc_en\": \"\", \"name_ru\": \"Сент-Китс и Невис\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+850-191-###-####\", \"cc\": \"KP\", \"name_en\": \"DPR Korea (North) \", \"desc_en\": \"mobile\", \"name_ru\": \"Корейская НДР \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+850-##-###-###\", \"cc\": \"KP\", \"name_en\": \"DPR Korea (North)\", \"desc_en\": \"\", \"name_ru\": \"Корейская НДР\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+850-###-####-###\", \"cc\": \"KP\", \"name_en\": \"DPR Korea (North)\", \"desc_en\": \"\", \"name_ru\": \"Корейская НДР\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+850-###-###\", \"cc\": \"KP\", \"name_en\": \"DPR Korea (North)\", \"desc_en\": \"\", \"name_ru\": \"Корейская НДР\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+850-####-####\", \"cc\": \"KP\", \"name_en\": \"DPR Korea (North)\", \"desc_en\": \"\", \"name_ru\": \"Корейская НДР\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+850-####-#############\", \"cc\": \"KP\", \"name_en\": \"DPR Korea (North)\", \"desc_en\": \"\", \"name_ru\": \"Корейская НДР\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+82-##-###-####\", \"cc\": \"KR\", \"name_en\": \"Korea (South)\", \"desc_en\": \"\", \"name_ru\": \"Респ. Корея\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+965-####-####\", \"cc\": \"KW\", \"name_en\": \"Kuwait\", \"desc_en\": \"\", \"name_ru\": \"Кувейт\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(345)###-####\", \"cc\": \"KY\", \"name_en\": \"Cayman Islands\", \"desc_en\": \"\", \"name_ru\": \"Каймановы острова\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+7(6##)###-##-##\", \"cc\": \"KZ\", \"name_en\": \"Kazakhstan\", \"desc_en\": \"\", \"name_ru\": \"Казахстан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+7(7##)###-##-##\", \"cc\": \"KZ\", \"name_en\": \"Kazakhstan\", \"desc_en\": \"\", \"name_ru\": \"Казахстан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+856(20##)###-###\", \"cc\": \"LA\", \"name_en\": \"Laos \", \"desc_en\": \"mobile\", \"name_ru\": \"Лаос \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+856-##-###-###\", \"cc\": \"LA\", \"name_en\": \"Laos\", \"desc_en\": \"\", \"name_ru\": \"Лаос\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+961-##-###-###\", \"cc\": \"LB\", \"name_en\": \"Lebanon \", \"desc_en\": \"mobile\", \"name_ru\": \"Ливан \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+961-#-###-###\", \"cc\": \"LB\", \"name_en\": \"Lebanon\", \"desc_en\": \"\", \"name_ru\": \"Ливан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(758)###-####\", \"cc\": \"LC\", \"name_en\": \"Saint Lucia\", \"desc_en\": \"\", \"name_ru\": \"Сент-Люсия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+423(###)###-####\", \"cc\": \"LI\", \"name_en\": \"Liechtenstein\", \"desc_en\": \"\", \"name_ru\": \"Лихтенштейн\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+94-##-###-####\", \"cc\": \"LK\", \"name_en\": \"Sri Lanka\", \"desc_en\": \"\", \"name_ru\": \"Шри-Ланка\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+231-##-###-###\", \"cc\": \"LR\", \"name_en\": \"Liberia\", \"desc_en\": \"\", \"name_ru\": \"Либерия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+266-#-###-####\", \"cc\": \"LS\", \"name_en\": \"Lesotho\", \"desc_en\": \"\", \"name_ru\": \"Лесото\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+370(###)##-###\", \"cc\": \"LT\", \"name_en\": \"Lithuania\", \"desc_en\": \"\", \"name_ru\": \"Литва\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+352(###)###-###\", \"cc\": \"LU\", \"name_en\": \"Luxembourg\", \"desc_en\": \"\", \"name_ru\": \"Люксембург\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+371-##-###-###\", \"cc\": \"LV\", \"name_en\": \"Latvia\", \"desc_en\": \"\", \"name_ru\": \"Латвия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+218-##-###-###\", \"cc\": \"LY\", \"name_en\": \"Libya\", \"desc_en\": \"\", \"name_ru\": \"Ливия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+218-21-###-####\", \"cc\": \"LY\", \"name_en\": \"Libya\", \"desc_en\": \"Tripoli\", \"name_ru\": \"Ливия\", \"desc_ru\": \"Триполи\" },\r\n\t\t\t\t\t{ \"mask\": \"+212-##-####-###\", \"cc\": \"MA\", \"name_en\": \"Morocco\", \"desc_en\": \"\", \"name_ru\": \"Марокко\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+377(###)###-###\", \"cc\": \"MC\", \"name_en\": \"Monaco\", \"desc_en\": \"\", \"name_ru\": \"Монако\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+377-##-###-###\", \"cc\": \"MC\", \"name_en\": \"Monaco\", \"desc_en\": \"\", \"name_ru\": \"Монако\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+373-####-####\", \"cc\": \"MD\", \"name_en\": \"Moldova\", \"desc_en\": \"\", \"name_ru\": \"Молдова\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+382-##-###-###\", \"cc\": \"ME\", \"name_en\": \"Montenegro\", \"desc_en\": \"\", \"name_ru\": \"Черногория\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+261-##-##-#####\", \"cc\": \"MG\", \"name_en\": \"Madagascar\", \"desc_en\": \"\", \"name_ru\": \"Мадагаскар\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+692-###-####\", \"cc\": \"MH\", \"name_en\": \"Marshall Islands\", \"desc_en\": \"\", \"name_ru\": \"Маршалловы Острова\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+389-##-###-###\", \"cc\": \"MK\", \"name_en\": \"Republic of Macedonia\", \"desc_en\": \"\", \"name_ru\": \"Респ. Македония\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+223-##-##-####\", \"cc\": \"ML\", \"name_en\": \"Mali\", \"desc_en\": \"\", \"name_ru\": \"Мали\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+95-##-###-###\", \"cc\": \"MM\", \"name_en\": \"Burma (Myanmar)\", \"desc_en\": \"\", \"name_ru\": \"Бирма (Мьянма)\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+95-#-###-###\", \"cc\": \"MM\", \"name_en\": \"Burma (Myanmar)\", \"desc_en\": \"\", \"name_ru\": \"Бирма (Мьянма)\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+95-###-###\", \"cc\": \"MM\", \"name_en\": \"Burma (Myanmar)\", \"desc_en\": \"\", \"name_ru\": \"Бирма (Мьянма)\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+976-##-##-####\", \"cc\": \"MN\", \"name_en\": \"Mongolia\", \"desc_en\": \"\", \"name_ru\": \"Монголия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+853-####-####\", \"cc\": \"MO\", \"name_en\": \"Macau\", \"desc_en\": \"\", \"name_ru\": \"Макао\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(670)###-####\", \"cc\": \"MP\", \"name_en\": \"Northern Mariana Islands\", \"desc_en\": \"\", \"name_ru\": \"Северные Марианские острова Сайпан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+596(###)##-##-##\", \"cc\": \"MQ\", \"name_en\": \"Martinique\", \"desc_en\": \"\", \"name_ru\": \"Мартиника\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+222-##-##-####\", \"cc\": \"MR\", \"name_en\": \"Mauritania\", \"desc_en\": \"\", \"name_ru\": \"Мавритания\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(664)###-####\", \"cc\": \"MS\", \"name_en\": \"Montserrat\", \"desc_en\": \"\", \"name_ru\": \"Монтсеррат\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+356-####-####\", \"cc\": \"MT\", \"name_en\": \"Malta\", \"desc_en\": \"\", \"name_ru\": \"Мальта\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+230-###-####\", \"cc\": \"MU\", \"name_en\": \"Mauritius\", \"desc_en\": \"\", \"name_ru\": \"Маврикий\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+960-###-####\", \"cc\": \"MV\", \"name_en\": \"Maldives\", \"desc_en\": \"\", \"name_ru\": \"Мальдивские острова\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+265-1-###-###\", \"cc\": \"MW\", \"name_en\": \"Malawi\", \"desc_en\": \"Telecom Ltd\", \"name_ru\": \"Малави\", \"desc_ru\": \"Telecom Ltd\" },\r\n\t\t\t\t\t{ \"mask\": \"+265-#-####-####\", \"cc\": \"MW\", \"name_en\": \"Malawi\", \"desc_en\": \"\", \"name_ru\": \"Малави\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+52(###)###-####\", \"cc\": \"MX\", \"name_en\": \"Mexico\", \"desc_en\": \"\", \"name_ru\": \"Мексика\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+52-##-##-####\", \"cc\": \"MX\", \"name_en\": \"Mexico\", \"desc_en\": \"\", \"name_ru\": \"Мексика\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+60-##-###-####\", \"cc\": \"MY\", \"name_en\": \"Malaysia \", \"desc_en\": \"mobile\", \"name_ru\": \"Малайзия \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+60(###)###-###\", \"cc\": \"MY\", \"name_en\": \"Malaysia\", \"desc_en\": \"\", \"name_ru\": \"Малайзия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+60-##-###-###\", \"cc\": \"MY\", \"name_en\": \"Malaysia\", \"desc_en\": \"\", \"name_ru\": \"Малайзия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+60-#-###-###\", \"cc\": \"MY\", \"name_en\": \"Malaysia\", \"desc_en\": \"\", \"name_ru\": \"Малайзия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+258-##-###-###\", \"cc\": \"MZ\", \"name_en\": \"Mozambique\", \"desc_en\": \"\", \"name_ru\": \"Мозамбик\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+264-##-###-####\", \"cc\": \"NA\", \"name_en\": \"Namibia\", \"desc_en\": \"\", \"name_ru\": \"Намибия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+687-##-####\", \"cc\": \"NC\", \"name_en\": \"New Caledonia\", \"desc_en\": \"\", \"name_ru\": \"Новая Каледония\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+227-##-##-####\", \"cc\": \"NE\", \"name_en\": \"Niger\", \"desc_en\": \"\", \"name_ru\": \"Нигер\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+672-3##-###\", \"cc\": \"NF\", \"name_en\": \"Norfolk Island\", \"desc_en\": \"\", \"name_ru\": \"Норфолк (остров)\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+234(###)###-####\", \"cc\": \"NG\", \"name_en\": \"Nigeria\", \"desc_en\": \"\", \"name_ru\": \"Нигерия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+234-##-###-###\", \"cc\": \"NG\", \"name_en\": \"Nigeria\", \"desc_en\": \"\", \"name_ru\": \"Нигерия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+234-##-###-##\", \"cc\": \"NG\", \"name_en\": \"Nigeria\", \"desc_en\": \"\", \"name_ru\": \"Нигерия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+234(###)###-####\", \"cc\": \"NG\", \"name_en\": \"Nigeria \", \"desc_en\": \"mobile\", \"name_ru\": \"Нигерия \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+505-####-####\", \"cc\": \"NI\", \"name_en\": \"Nicaragua\", \"desc_en\": \"\", \"name_ru\": \"Никарагуа\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+31-##-###-####\", \"cc\": \"NL\", \"name_en\": \"Netherlands\", \"desc_en\": \"\", \"name_ru\": \"Нидерланды\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+47(###)##-###\", \"cc\": \"NO\", \"name_en\": \"Norway\", \"desc_en\": \"\", \"name_ru\": \"Норвегия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+977-##-###-###\", \"cc\": \"NP\", \"name_en\": \"Nepal\", \"desc_en\": \"\", \"name_ru\": \"Непал\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+674-###-####\", \"cc\": \"NR\", \"name_en\": \"Nauru\", \"desc_en\": \"\", \"name_ru\": \"Науру\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+683-####\", \"cc\": \"NU\", \"name_en\": \"Niue\", \"desc_en\": \"\", \"name_ru\": \"Ниуэ\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+64(###)###-###\", \"cc\": \"NZ\", \"name_en\": \"New Zealand\", \"desc_en\": \"\", \"name_ru\": \"Новая Зеландия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+64-##-###-###\", \"cc\": \"NZ\", \"name_en\": \"New Zealand\", \"desc_en\": \"\", \"name_ru\": \"Новая Зеландия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+64(###)###-####\", \"cc\": \"NZ\", \"name_en\": \"New Zealand\", \"desc_en\": \"\", \"name_ru\": \"Новая Зеландия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+968-##-###-###\", \"cc\": \"OM\", \"name_en\": \"Oman\", \"desc_en\": \"\", \"name_ru\": \"Оман\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+507-###-####\", \"cc\": \"PA\", \"name_en\": \"Panama\", \"desc_en\": \"\", \"name_ru\": \"Панама\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+51(###)###-###\", \"cc\": \"PE\", \"name_en\": \"Peru\", \"desc_en\": \"\", \"name_ru\": \"Перу\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+689-##-##-##\", \"cc\": \"PF\", \"name_en\": \"French Polynesia\", \"desc_en\": \"\", \"name_ru\": \"Французская Полинезия (Таити)\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+675(###)##-###\", \"cc\": \"PG\", \"name_en\": \"Papua New Guinea\", \"desc_en\": \"\", \"name_ru\": \"Папуа-Новая Гвинея\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+63(###)###-####\", \"cc\": \"PH\", \"name_en\": \"Philippines\", \"desc_en\": \"\", \"name_ru\": \"Филиппины\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+92(###)###-####\", \"cc\": \"PK\", \"name_en\": \"Pakistan\", \"desc_en\": \"\", \"name_ru\": \"Пакистан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+48(###)###-###\", \"cc\": \"PL\", \"name_en\": \"Poland\", \"desc_en\": \"\", \"name_ru\": \"Польша\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+970-##-###-####\", \"cc\": \"PS\", \"name_en\": \"Palestine\", \"desc_en\": \"\", \"name_ru\": \"Палестина\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+351-##-###-####\", \"cc\": \"PT\", \"name_en\": \"Portugal\", \"desc_en\": \"\", \"name_ru\": \"Португалия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+680-###-####\", \"cc\": \"PW\", \"name_en\": \"Palau\", \"desc_en\": \"\", \"name_ru\": \"Палау\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+595(###)###-###\", \"cc\": \"PY\", \"name_en\": \"Paraguay\", \"desc_en\": \"\", \"name_ru\": \"Парагвай\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+974-####-####\", \"cc\": \"QA\", \"name_en\": \"Qatar\", \"desc_en\": \"\", \"name_ru\": \"Катар\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+262-#####-####\", \"cc\": \"RE\", \"name_en\": \"Reunion\", \"desc_en\": \"\", \"name_ru\": \"Реюньон\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+40-##-###-####\", \"cc\": \"RO\", \"name_en\": \"Romania\", \"desc_en\": \"\", \"name_ru\": \"Румыния\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+381-##-###-####\", \"cc\": \"RS\", \"name_en\": \"Serbia\", \"desc_en\": \"\", \"name_ru\": \"Сербия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+7(###)###-##-##\", \"cc\": \"RU\", \"name_en\": \"Russia\", \"desc_en\": \"\", \"name_ru\": \"Россия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+250(###)###-###\", \"cc\": \"RW\", \"name_en\": \"Rwanda\", \"desc_en\": \"\", \"name_ru\": \"Руанда\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+966-5-####-####\", \"cc\": \"SA\", \"name_en\": \"Saudi Arabia \", \"desc_en\": \"mobile\", \"name_ru\": \"Саудовская Аравия \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+966-#-###-####\", \"cc\": \"SA\", \"name_en\": \"Saudi Arabia\", \"desc_en\": \"\", \"name_ru\": \"Саудовская Аравия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+677-###-####\", \"cc\": \"SB\", \"name_en\": \"Solomon Islands \", \"desc_en\": \"mobile\", \"name_ru\": \"Соломоновы Острова \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+677-#####\", \"cc\": \"SB\", \"name_en\": \"Solomon Islands\", \"desc_en\": \"\", \"name_ru\": \"Соломоновы Острова\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+248-#-###-###\", \"cc\": \"SC\", \"name_en\": \"Seychelles\", \"desc_en\": \"\", \"name_ru\": \"Сейшелы\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+249-##-###-####\", \"cc\": \"SD\", \"name_en\": \"Sudan\", \"desc_en\": \"\", \"name_ru\": \"Судан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+46-##-###-####\", \"cc\": \"SE\", \"name_en\": \"Sweden\", \"desc_en\": \"\", \"name_ru\": \"Швеция\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+65-####-####\", \"cc\": \"SG\", \"name_en\": \"Singapore\", \"desc_en\": \"\", \"name_ru\": \"Сингапур\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+290-####\", \"cc\": \"SH\", \"name_en\": \"Saint Helena\", \"desc_en\": \"\", \"name_ru\": \"Остров Святой Елены\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+290-####\", \"cc\": \"SH\", \"name_en\": \"Tristan da Cunha\", \"desc_en\": \"\", \"name_ru\": \"Тристан-да-Кунья\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+386-##-###-###\", \"cc\": \"SI\", \"name_en\": \"Slovenia\", \"desc_en\": \"\", \"name_ru\": \"Словения\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+421(###)###-###\", \"cc\": \"SK\", \"name_en\": \"Slovakia\", \"desc_en\": \"\", \"name_ru\": \"Словакия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+232-##-######\", \"cc\": \"SL\", \"name_en\": \"Sierra Leone\", \"desc_en\": \"\", \"name_ru\": \"Сьерра-Леоне\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+378-####-######\", \"cc\": \"SM\", \"name_en\": \"San Marino\", \"desc_en\": \"\", \"name_ru\": \"Сан-Марино\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+221-##-###-####\", \"cc\": \"SN\", \"name_en\": \"Senegal\", \"desc_en\": \"\", \"name_ru\": \"Сенегал\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+252-##-###-###\", \"cc\": \"SO\", \"name_en\": \"Somalia\", \"desc_en\": \"\", \"name_ru\": \"Сомали\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+252-#-###-###\", \"cc\": \"SO\", \"name_en\": \"Somalia\", \"desc_en\": \"\", \"name_ru\": \"Сомали\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+252-#-###-###\", \"cc\": \"SO\", \"name_en\": \"Somalia \", \"desc_en\": \"mobile\", \"name_ru\": \"Сомали \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+597-###-####\", \"cc\": \"SR\", \"name_en\": \"Suriname \", \"desc_en\": \"mobile\", \"name_ru\": \"Суринам \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+597-###-###\", \"cc\": \"SR\", \"name_en\": \"Suriname\", \"desc_en\": \"\", \"name_ru\": \"Суринам\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+211-##-###-####\", \"cc\": \"SS\", \"name_en\": \"South Sudan\", \"desc_en\": \"\", \"name_ru\": \"Южный Судан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+239-##-#####\", \"cc\": \"ST\", \"name_en\": \"Sao Tome and Principe\", \"desc_en\": \"\", \"name_ru\": \"Сан-Томе и Принсипи\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+503-##-##-####\", \"cc\": \"SV\", \"name_en\": \"El Salvador\", \"desc_en\": \"\", \"name_ru\": \"Сальвадор\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(721)###-####\", \"cc\": \"SX\", \"name_en\": \"Sint Maarten\", \"desc_en\": \"\", \"name_ru\": \"Синт-Маартен\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+963-##-####-###\", \"cc\": \"SY\", \"name_en\": \"Syrian Arab Republic\", \"desc_en\": \"\", \"name_ru\": \"Сирийская арабская республика\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+268-##-##-####\", \"cc\": \"SZ\", \"name_en\": \"Swaziland\", \"desc_en\": \"\", \"name_ru\": \"Свазиленд\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(649)###-####\", \"cc\": \"TC\", \"name_en\": \"Turks & Caicos\", \"desc_en\": \"\", \"name_ru\": \"Тёркс и Кайкос\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+235-##-##-##-##\", \"cc\": \"TD\", \"name_en\": \"Chad\", \"desc_en\": \"\", \"name_ru\": \"Чад\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+228-##-###-###\", \"cc\": \"TG\", \"name_en\": \"Togo\", \"desc_en\": \"\", \"name_ru\": \"Того\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+66-##-###-####\", \"cc\": \"TH\", \"name_en\": \"Thailand \", \"desc_en\": \"mobile\", \"name_ru\": \"Таиланд \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+66-##-###-###\", \"cc\": \"TH\", \"name_en\": \"Thailand\", \"desc_en\": \"\", \"name_ru\": \"Таиланд\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+992-##-###-####\", \"cc\": \"TJ\", \"name_en\": \"Tajikistan\", \"desc_en\": \"\", \"name_ru\": \"Таджикистан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+690-####\", \"cc\": \"TK\", \"name_en\": \"Tokelau\", \"desc_en\": \"\", \"name_ru\": \"Токелау\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+670-###-####\", \"cc\": \"TL\", \"name_en\": \"East Timor\", \"desc_en\": \"\", \"name_ru\": \"Восточный Тимор\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+670-77#-#####\", \"cc\": \"TL\", \"name_en\": \"East Timor\", \"desc_en\": \"Timor Telecom\", \"name_ru\": \"Восточный Тимор\", \"desc_ru\": \"Timor Telecom\" },\r\n\t\t\t\t\t{ \"mask\": \"+670-78#-#####\", \"cc\": \"TL\", \"name_en\": \"East Timor\", \"desc_en\": \"Timor Telecom\", \"name_ru\": \"Восточный Тимор\", \"desc_ru\": \"Timor Telecom\" },\r\n\t\t\t\t\t{ \"mask\": \"+993-#-###-####\", \"cc\": \"TM\", \"name_en\": \"Turkmenistan\", \"desc_en\": \"\", \"name_ru\": \"Туркменистан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+216-##-###-###\", \"cc\": \"TN\", \"name_en\": \"Tunisia\", \"desc_en\": \"\", \"name_ru\": \"Тунис\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+676-#####\", \"cc\": \"TO\", \"name_en\": \"Tonga\", \"desc_en\": \"\", \"name_ru\": \"Тонга\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+90(###)###-####\", \"cc\": \"TR\", \"name_en\": \"Turkey\", \"desc_en\": \"\", \"name_ru\": \"Турция\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(868)###-####\", \"cc\": \"TT\", \"name_en\": \"Trinidad & Tobago\", \"desc_en\": \"\", \"name_ru\": \"Тринидад и Тобаго\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+688-90####\", \"cc\": \"TV\", \"name_en\": \"Tuvalu \", \"desc_en\": \"mobile\", \"name_ru\": \"Тувалу \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+688-2####\", \"cc\": \"TV\", \"name_en\": \"Tuvalu\", \"desc_en\": \"\", \"name_ru\": \"Тувалу\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+886-#-####-####\", \"cc\": \"TW\", \"name_en\": \"Taiwan\", \"desc_en\": \"\", \"name_ru\": \"Тайвань\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+886-####-####\", \"cc\": \"TW\", \"name_en\": \"Taiwan\", \"desc_en\": \"\", \"name_ru\": \"Тайвань\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+896-####-####\", \"cc\": \"TW\", \"name_en\": \"Taiwan\", \"desc_en\": \"\", \"name_ru\": \"Тайвань\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+255-##-###-####\", \"cc\": \"TZ\", \"name_en\": \"Tanzania\", \"desc_en\": \"\", \"name_ru\": \"Танзания\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+380(##)###-##-##\", \"cc\": \"UA\", \"name_en\": \"Ukraine\", \"desc_en\": \"\", \"name_ru\": \"Украина\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+256(###)###-###\", \"cc\": \"UG\", \"name_en\": \"Uganda\", \"desc_en\": \"\", \"name_ru\": \"Уганда\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+44-##-####-####\", \"cc\": \"UK\", \"name_en\": \"United Kingdom\", \"desc_en\": \"\", \"name_ru\": \"Великобритания\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+598-#-###-##-##\", \"cc\": \"UY\", \"name_en\": \"Uruguay\", \"desc_en\": \"\", \"name_ru\": \"Уругвай\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+998-##-###-####\", \"cc\": \"UZ\", \"name_en\": \"Uzbekistan\", \"desc_en\": \"\", \"name_ru\": \"Узбекистан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+39-6-698-#####\", \"cc\": \"VA\", \"name_en\": \"Vatican City\", \"desc_en\": \"\", \"name_ru\": \"Ватикан\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(784)###-####\", \"cc\": \"VC\", \"name_en\": \"Saint Vincent & the Grenadines\", \"desc_en\": \"\", \"name_ru\": \"Сент-Винсент и Гренадины\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+58(###)###-####\", \"cc\": \"VE\", \"name_en\": \"Venezuela\", \"desc_en\": \"\", \"name_ru\": \"Венесуэла\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(284)###-####\", \"cc\": \"VG\", \"name_en\": \"British Virgin Islands\", \"desc_en\": \"\", \"name_ru\": \"Британские Виргинские острова\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+1(340)###-####\", \"cc\": \"VI\", \"name_en\": \"US Virgin Islands\", \"desc_en\": \"\", \"name_ru\": \"Американские Виргинские острова\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+84-##-####-###\", \"cc\": \"VN\", \"name_en\": \"Vietnam\", \"desc_en\": \"\", \"name_ru\": \"Вьетнам\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+83-##-####-###\", \"cc\": \"VN\", \"name_en\": \"Vietnam\", \"desc_en\": \"\", \"name_ru\": \"Вьетнам\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+84(###)####-###\", \"cc\": \"VN\", \"name_en\": \"Vietnam\", \"desc_en\": \"\", \"name_ru\": \"Вьетнам\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+678-##-#####\", \"cc\": \"VU\", \"name_en\": \"Vanuatu \", \"desc_en\": \"mobile\", \"name_ru\": \"Вануату \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+678-#####\", \"cc\": \"VU\", \"name_en\": \"Vanuatu\", \"desc_en\": \"\", \"name_ru\": \"Вануату\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+681-##-####\", \"cc\": \"WF\", \"name_en\": \"Wallis and Futuna\", \"desc_en\": \"\", \"name_ru\": \"Уоллис и Футуна\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+685-##-####\", \"cc\": \"WS\", \"name_en\": \"Samoa\", \"desc_en\": \"\", \"name_ru\": \"Самоа\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+967-###-###-###\", \"cc\": \"YE\", \"name_en\": \"Yemen \", \"desc_en\": \"mobile\", \"name_ru\": \"Йемен \", \"desc_ru\": \"мобильные\" },\r\n\t\t\t\t\t{ \"mask\": \"+967-#-###-###\", \"cc\": \"YE\", \"name_en\": \"Yemen\", \"desc_en\": \"\", \"name_ru\": \"Йемен\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+967-##-###-###\", \"cc\": \"YE\", \"name_en\": \"Yemen\", \"desc_en\": \"\", \"name_ru\": \"Йемен\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+27-##-###-####\", \"cc\": \"ZA\", \"name_en\": \"South Africa\", \"desc_en\": \"\", \"name_ru\": \"Южно-Африканская Респ.\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+260-##-###-####\", \"cc\": \"ZM\", \"name_en\": \"Zambia\", \"desc_en\": \"\", \"name_ru\": \"Замбия\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+263-#-######\", \"cc\": \"ZW\", \"name_en\": \"Zimbabwe\", \"desc_en\": \"\", \"name_ru\": \"Зимбабве\", \"desc_ru\": \"\" },\r\n\t\t\t\t\t{ \"mask\": \"+0\", \"cc\": \"ZW\", \"name_en\": \"Unknown region\", \"desc_en\": \"\", \"name_ru\": \"Регион не определен\", \"desc_ru\": \"\" },\r\n\t\t\t\t]\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n</script>\r\n\r\n","<template>\r\n\t<div ref=\"phoneContainer\" class=\"c-form-n__field-container\">\r\n\t\t<input type=\"text\" :name=\"name\" :value=\"realPhoneNumber\" hidden />\r\n\t\t<PhoneMask \r\n\t\t\tv-model=\"phoneNumber\" \r\n\t\t\t:value=\"phoneNumber\"\r\n\t\t\t@input=\"inputHandler\"\r\n\t\t\tlang=\"EN\" \r\n\t\t\t:showRegion=\"false\" \r\n\t\t/>\r\n\t</div>\r\n</template>\r\n<script>\r\n\timport PhoneMask from 'shared/components/PhoneMask.vue';\r\n\texport default {\r\n\t\tname: \"phone-field\",\r\n\t\tprops: ['name', 'userPhoneNumber', 'internationalCode'],\r\n\t\tcomponents: {\r\n\t\t\tPhoneMask\r\n\t\t},\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\t realPhoneNumber: '',\r\n\t\t\t\t phoneNumber: ''\r\n\t\t\t};\r\n\t\t},\r\n\t\tcreated() {\r\n\t\t\tif (this.userPhoneNumber && this.userPhoneNumber != '')\r\n\t\t\t\tthis.phoneNumber = this.userPhoneNumber;\r\n\t\t\telse if (this.internationalCode && this.internationalCode != '')\r\n\t\t\t\tthis.phoneNumber = this.internationalCode;\r\n\t\t},\r\n\t\tmounted() {\r\n\t\t\tconst fakePhoneInput = this.$refs.phoneContainer.querySelector('.phone-mask-input');\r\n\t\t\t//to get the right length validation and the right format with slashes/ brackets and etc\r\n\t\t\tconst inputValue = fakePhoneInput.value;\r\n\t\t\tif (inputValue != '')\r\n\t\t\t\tthis.phoneNumber = inputValue;\r\n\t\t},\r\n\t\tcomputed: {\r\n\t\t\tmaxLengthValidation() {\r\n\t\t\t\treturn this.phoneNumber.replace(/[^\\d_]/g, '').length;\r\n\t\t\t},\r\n\t\t},\r\n\t\twatch: {\r\n\t\t\tphoneNumber: {\r\n\t\t\t\tdeep: true,\r\n\t\t\t\thandler: function (newVal) {\r\n\t\t\t\t\tconst phoneNumberDigits = newVal.replace(/[^\\d]/g, '');\r\n\t\t\t\t\tif (phoneNumberDigits.length === this.maxLengthValidation)\r\n\t\t\t\t\t\tthis.realPhoneNumber = newVal;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tthis.realPhoneNumber = '';\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t},\r\n\t\tmethods: {\r\n\t\t\tinputHandler(val) {\r\n\t\t\t\tthis.phoneNumber = val;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n</script>\r\n","<script setup>\r\nimport { ref } from 'vue';\r\nimport { DsBreadcrumb } from \"@coloplast/design-system\";\r\nimport \"@coloplast/design-system/dist/components/breadcrumb/ds-breadcrumb.css\";\r\nimport \"@coloplast/design-system/dist/components/tooltip/ds-tooltip.css\";\r\n\r\nconst props = defineProps({\r\n\tvm: Object\r\n});\r\n\r\nconst breadcrumbItems = ref(props.vm.BaseViewModel.map(breadcrumbItem => {\r\n\treturn {\r\n\t\tname: breadcrumbItem.Name,\r\n\t\turl: breadcrumbItem.Link,\r\n\t\tisCurrentPage: breadcrumbItem.Active\r\n\t}\r\n}));\r\n</script>\r\n\r\n<template>\r\n\t<div v-if=\"breadcrumbItems.length\" class=\"c-breadcrumb__container\"\r\n\t\t:class=\"{ 'c-breadcrumb__container--hidden': breadcrumbItems.length <= 1 }\">\r\n\t\t<DsBreadcrumb\r\n\t\t\tariaLabel=\"Breadcrumb\"\r\n\t\t\t:items=\"breadcrumbItems\"\r\n\t\t\toverflowMenuTooltipText=\"More items\" />\r\n\t</div>\r\n</template>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import \"src/shared/styles/settings/settings\";\r\n@import \"src/shared/styles/tools/tools\";\r\n\r\n$breakpoint: 'medium';\r\n$profilePageBreakpoint: 900px;\r\n\r\n.c-breadcrumb {\r\n\tbackground: ds-color(\"bg\", \"default\");\r\n\r\n\t&--with-background {\r\n\t\tbackground: ds-color(\"bg\", \"decorative-1-subtle\");\r\n\t}\r\n\r\n\t&--hide-mobile {\r\n\t\t@include t-respond-to-max($profilePageBreakpoint) {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\r\n\t&__container {\r\n\t\tbox-sizing: border-box;\r\n\t\tdisplay: flex;\r\n\t\tflex-wrap: wrap;\r\n\t\tmargin: 0 auto;\r\n\t\tmax-inline-size: var(--breadcrumb-max-width);\r\n\t\twidth: 100%;\r\n\t\tpadding: 0 var(--breadcrumb-padding-inline);\r\n\r\n\t\t&--hidden {\r\n\t\t\tdisplay: none;\r\n\r\n\t\t\t@include t-respond-to-min($breakpoint) {\r\n\t\t\t\tdisplay: flex;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n</style>\r\n\r\n<style lang=\"scss\">\r\n@import \"src/shared/styles/tools/tools\";\r\n.c-breadcrumb {\r\n\t--breadcrumb-max-width: #{ds-container-max(\"2xl\")};\r\n\t--breadcrumb-padding-inline: #{ds-space(8)};\r\n\r\n\t@media (min-width: ds-breakpoint(\"sm\")) {\r\n\t\t--breadcrumb-padding-inline: #{ds-space(9)};\r\n\t}\r\n\r\n\t@media (min-width: ds-breakpoint(\"md\")) {\r\n\t\t--breadcrumb-padding-inline: #{ds-space(8)};\r\n\t}\r\n\r\n\t@media (min-width: ds-breakpoint(\"2xl\")) {\r\n\t\t--breadcrumb-padding-inline: 0px;\r\n\t}\r\n}\r\n\r\n.c-breadcrumb__container {\r\n\t.ds-breadcrumb__list {\r\n\t\tmargin: 0;\r\n\t\tpadding: 0;\r\n\t}\r\n\r\n\t.ds-breadcrumb__item:first-child .ds-breadcrumb__link {\r\n\t\tpadding-inline-start: 0;\r\n\t}\r\n}\r\n</style>\r\n","<template>\r\n\t<generic-modal\r\n\t\tv-if=\"showModal\"\r\n\t\t:modal-data=\"model\"\r\n\t\t@close-modal=\"hideGlobalLoginExpiredModal\">\r\n\r\n\t\t<template v-slot:header>\r\n\t\t\t<h2 class=\"c-enrollment-modal__headline\" >{{ model.headline }}</h2>\r\n\t\t</template>\r\n\r\n\t\t<template v-slot:body>\r\n\t\t\t<div class=\"c-enrollment-modal__description\" v-html=\"model.description\"></div>\r\n\t\t</template>\r\n\r\n\t\t<template v-slot:footer>\r\n\t\t\t<a class=\"e-button e-button--filled e-button--width-dynamic\"\r\n\t\t\t\t:href=\"model.buttonUrl\"\r\n\t\t\t\ttabindex=\"0\"\r\n\t\t\t\tdata-testid=\"login\"\r\n\t\t\t\t>\r\n\t\t\t\t{{ model.buttonText }}\r\n\t\t\t</a>\r\n\t\t</template>\r\n\t</generic-modal>\r\n</template>\r\n\r\n<script>\r\nimport genericModal from 'shared/components/generic-modal/genericModal.vue';\r\n\r\nimport { mapGetters, mapActions } from 'vuex';\r\n\r\nexport default {\r\n    name: \"login-expired-modal\",\r\n\r\n    props: {\r\n        vm: {\r\n            type: Object,\r\n\t\t\trequired: true,\r\n\t\t\tdefault: () => {}\r\n        },\r\n\t\ttrigger: {\r\n\t\t\ttype: String,\r\n\t\t\trequired: true,\r\n       },\r\n    },\r\n\r\n\tmounted() {\r\n\t\tif ( this.vm.BaseViewModel.IsEnabled ) {\r\n\t\t\tthis.enableGlobalLoginExpiredModal();\r\n\r\n\t\t\tdocument.addEventListener(this.trigger, (e) => {\r\n\t\t\t\tthis.showGlobalLoginExpiredModal();\r\n\r\n\t\t\t})\r\n\t\t}\r\n\t},\r\n\r\n\tcomputed: {\r\n\t\t...mapGetters({\r\n\t\t\tshowModal: 'getGlobalLoginExpiredModalIsShown',\r\n\t\t}),\r\n\r\n\t\tmodel() {\r\n\t\t\treturn {\r\n\t\t\t\tdataName: 'expired-session',\r\n\t\t\t\theadline: this.vm.BaseViewModel.HeadlineText,\r\n\t\t\t\tdescription: this.vm.BaseViewModel.Description,\r\n\t\t\t\tbuttonText: this.vm.BaseViewModel.LoginButtonText,\r\n\t\t\t\tbuttonUrl: this.vm.BaseViewModel.LoginButtonUrl\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tmethods: {\r\n\t\t...mapActions([\r\n\t\t\t'showGlobalLoginExpiredModal',\r\n\t\t\t'hideGlobalLoginExpiredModal',\r\n\t\t\t'enableGlobalLoginExpiredModal',\r\n\t\t\t'disableGlobalLoginExpiredModal'\r\n\t\t]),\r\n\t},\r\n\r\n\tcomponents: {\r\n\t\t'generic-modal': genericModal,\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.c-variant-expired-session-modal {\r\n\t&.c-modal__mask--grey {\r\n\t\tbackground: rgba(0, 0, 0, 0.2);\r\n\t}\r\n\r\n\t:deep {\r\n\t\t.c-modal__wrapper--expired-session {\r\n\t\t\tpadding-bottom: 32px;\r\n\t\t}\r\n\t\t.c-variant-expired-session-modal__modal-container {\r\n\t\t\tmax-width: inherit !important;\r\n\t\t}\r\n\r\n\t\t.c-enrollment-modal__description {\r\n\t\t\tmargin-bottom: 48px;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n</style>\r\n","<template></template>\r\n\r\n<script>\r\n\timport { mapGetters, mapMutations } from 'vuex';\r\n\timport Cookie from 'js-cookie';\r\n\timport { removeQueryStringParameter, extractUrlParameters } from 'shared/services/windowLocationService';\r\n\timport { track_login, track_login_start, track_sign_up_start, track_sign_up } from 'shared/services/tracking/loginTrackingService.ts';\r\n\r\n\tconst LOGGED_IN = 'loggedin';\r\n\tconst PROFILE_CREATED = 'profilecreated';\r\n\tconst SIGNUP_SUCCESS = 'signupsuccess';\r\n\r\n\texport default {\r\n\t\tname: 'login-tracker',\r\n\t\tcomputed: {\r\n\t\t\t...mapGetters({\r\n\t\t\t\tvisitorID: 'getVisitorID',\r\n\t\t\t\tisUserLoggedIn: 'getIsUserLoggedIn',\r\n\t\t\t\tisHcpUser: 'getIsHcpUser',\r\n\t\t\t})\r\n\t\t},\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\tloginBtns: [],\r\n\t\t\t\tsignUpBtns: [],\r\n\t\t\t}\r\n\t\t},\r\n\t\tmounted() {\r\n\t\t\tconst searchParameters = extractUrlParameters(window.location.search);\r\n\t\t\t// first track any login and update the UserType cookie\r\n\t\t\tif (searchParameters.loggedin == 'true') {\r\n\t\t\t\tif (!this.isHcpUser) {\r\n\t\t\t\t\ttrack_login();\r\n\t\t\t\t\tthis.setCookies('Login');\r\n\t\t\t\t}\r\n\t\t\t\tremoveQueryStringParameter(LOGGED_IN);\r\n\t\t\t\tthis.setUserJustLoggedIn();\r\n\t\t\t}\r\n\t\t\t// then update the UserType cookie if a logout is detected\r\n\t\t\telse if (searchParameters.loggedin == 'false' || !Cookie.get('UserType') && !this.isUserLoggedIn) {\r\n\t\t\t\tthis.setCookies('Anonymous');\r\n\t\t\t\tremoveQueryStringParameter(LOGGED_IN);\r\n\t\t\t}\r\n\r\n\t\t\t// now check if the user just signed up\r\n\t\t\t// if both the profilecreated and signupsuccess parameters are present they need to both be 'true'\r\n\t\t\tif (searchParameters.hasOwnProperty(PROFILE_CREATED) && searchParameters.profilecreated == 'true' && searchParameters.signupsuccess == 'true') {\r\n\t\t\t\ttrack_sign_up();\r\n\t\t\t\tremoveQueryStringParameter(PROFILE_CREATED);\r\n\t\t\t\tremoveQueryStringParameter(SIGNUP_SUCCESS);\r\n\t\t\t}\r\n\t\t\t// else if the profilecreated paraemeter is not there then we only need signupsuccess to be 'true'\r\n\t\t\telse if (!searchParameters.hasOwnProperty(PROFILE_CREATED) && searchParameters.signupsuccess == 'true') {\r\n\t\t\t\ttrack_sign_up();\r\n\t\t\t\tremoveQueryStringParameter(SIGNUP_SUCCESS);\r\n\t\t\t}\r\n\r\n\t\t\t// now clean up the profilecreated and signupsuccess query string parameters\r\n\t\t\tif (searchParameters.hasOwnProperty(PROFILE_CREATED)) {\r\n\t\t\t\tremoveQueryStringParameter(PROFILE_CREATED);\r\n\t\t\t}\r\n\t\t\tif (searchParameters.hasOwnProperty(SIGNUP_SUCCESS)) {\r\n\t\t\t\tremoveQueryStringParameter(SIGNUP_SUCCESS);\r\n\t\t\t}\r\n\r\n\t\t\t// now attach tracking event handlers to login and sign up buttons\r\n\t\t\tthis.loginBtns = [...document.querySelectorAll('[data-flow-name=\"SignIn\"]')];\r\n\t\t\tthis.loginBtns.forEach((btn) => {\r\n\t\t\t\tbtn.addEventListener('click', this.trackLogin);\r\n\t\t\t});\r\n\t\t\tthis.signUpBtns = [...document.querySelectorAll('[data-flow-name=\"SignUp\"]')];\r\n\t\t\tthis.signUpBtns.forEach((btn) => {\r\n\t\t\t\tbtn.addEventListener('click', this.trackSignUp);\r\n\t\t\t});\r\n\t\t},\r\n\t\tbeforeUnmount() {\r\n\t\t\tthis.loginBtns.forEach((btn) => {\r\n\t\t\t\tbtn.removeEventListener('click', this.trackLogin);\r\n\t\t\t});\r\n\t\t\tthis.signUpBtns.forEach((btn) => {\r\n\t\t\t\tbtn.removeEventListener('click', this.trackSignUp);\r\n\t\t\t});\r\n\r\n\t\t},\r\n\t\tmethods: {\r\n\t\t\t...mapMutations([\r\n\t\t\t\t'setUserJustLoggedIn',\r\n\t\t\t]),\r\n\t\t\tsetCookies(userStatus) {\r\n\t\t\t\tconst domain = new URL(window.location.href).hostname;\r\n\t\t\t\tCookie.set('UserType', window.btoa(`${userStatus}`), { domain: domain, secure: true, sameSite: 'None' });\r\n\t\t\t},\r\n\r\n\t\t\ttrackLogin() {\r\n\t\t\t\ttrack_login_start();\r\n\t\t\t},\r\n\t\t\ttrackSignUp() {\r\n\t\t\t\ttrack_sign_up_start();\r\n\t\t\t},\r\n\t\t}\r\n\t}\r\n\r\n</script>\r\n","<template></template>\r\n\r\n<script>\r\nimport { mapGetters, mapActions } from 'vuex';\r\nimport Cookie from 'js-cookie';\r\nimport { cookieNames } from 'shared/settings/constants';\r\nimport { track_begin_checkout } from 'shared/services/tracking/basketTrackingService';\r\n\r\nexport default {\r\n\tcomputed: {\r\n\t\t...mapGetters({\r\n\t\t\tbasket: 'getBasket',\r\n\t\t}),\r\n\t},\r\n\tmethods: {\r\n\t\t...mapActions({\r\n\t\t\tfetchBasket: 'fetchBasket',\r\n\t\t}),\r\n\t},\r\n\tasync mounted() {\r\n\t\tconst quickSampleInitialized = Cookie.get(cookieNames.QUICK_SAMPLE_INITIALIZED);\r\n\r\n\t\tif (quickSampleInitialized === 'True') {\r\n\t\t\tawait this.fetchBasket();\r\n\r\n\t\t\ttrack_begin_checkout(this.basket, { quick_link: 'yes' });\r\n\r\n\t\t\tCookie.remove(cookieNames.QUICK_SAMPLE_INITIALIZED);\r\n\t\t}\r\n\t},\r\n};\r\n</script>\r\n","<template>\r\n    <component\r\n\t\t:is=\"tag\"\r\n\t\tv-if=\"!basketHidden || basketHiddenWhenEmpty\"\r\n\t\t:href=\"useFlyOutBasket ? null : url\"\r\n\t\t@click=\"click\"\r\n\t\taria-labelledby=\"open-basket-label\"\r\n\t\titemprop=\"url\"\r\n\t\tdata-basket-nav-src=\"service menu basket\"\r\n\t\tclass=\"c-nav-basket__link\"\r\n\t\tdata-testid=\"basket-link\"\r\n\t\taria-haspopup=\"dialog\"\r\n\t\taria-controls=\"flyOutBasket\"\r\n\t\t:aria-expanded=\"flyOutBasketActive\"\r\n\t>\r\n        <img v-if=\"iconUrl\" :src=\"iconUrl\" alt=\"\" class=\"c-nav-basket__custom-icon\" aria-hidden=\"true\" />\r\n\t\t<DsIcon v-else icon-name=\"shopping-basket\" aria-hidden=\"true\" />\r\n        <span itemprop=\"name\" class=\"c-nav-basket__text\" aria-hidden=\"true\" id=\"open-basket-label\">{{ openBasketLabel }}</span>\r\n        <mini-basket-count v-if=\"count\" :basket-count=\"count\" aria-hidden=\"true\"></mini-basket-count>\r\n\t</component>\r\n</template>\r\n\r\n<script>\r\nimport Events from 'shared/settings/events';\r\nimport { mapGetters } from 'vuex';\r\nimport { DsIcon } from \"@coloplast/design-system\";\r\n\r\nexport default {\r\n    props: {\r\n        basketUrl: {\r\n            type: String,\r\n            required: true,\r\n        },\r\n        basketLinkText: {\r\n            type: String,\r\n            required: true,\r\n        },\r\n        iconUrl: {\r\n            type: String,\r\n            required: false,\r\n        },\r\n        basketItemCount: {\r\n            type: Number,\r\n            required: false,\r\n        },\r\n        useFlyOutBasket: {\r\n            type: Boolean,\r\n            required: true,\r\n        },\r\n\t\tbasketHidden: {\r\n\t\t\ttype: Boolean,\r\n\t\t\trequired: false,\r\n\t\t},\r\n\t\topenBasketLabelTemplate: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: \"Open basket\",\r\n\t\t},\r\n    },\r\n\tcomponents: {\r\n\t\tDsIcon,\r\n\t},\r\n    computed: {\r\n        url() {\r\n            if (this.useFlyOutBasket) {\r\n                return '#';\r\n            }\r\n            else {\r\n                return this.basketUrl;\r\n            }\r\n        },\r\n        ...mapGetters({\r\n            numberOfBasketItems: 'getBasketItemCount',\r\n\t\t\tflyOutBasketActive: 'getFlyOutBasketActive',\r\n        }),\r\n        count() {\r\n            if (this.numberOfBasketItems == 0) {\r\n                return this.basketItemCount;\r\n            }\r\n            else {\r\n                return this.numberOfBasketItems;\r\n            }\r\n        },\r\n\t\tbasketHiddenWhenEmpty() {\r\n\t\t\treturn this.basketHidden && this?.count > 0;\r\n\t\t},\r\n\t\topenBasketLabel() {\r\n\t\t\treturn this.openBasketLabelTemplate?.replace('$items$', this.numberOfBasketItems) ?? this.basketLinkText;\r\n\t\t},\r\n\t\ttag() {\r\n\t\t\treturn this.useFlyOutBasket ? 'button' : 'a';\r\n\t\t},\r\n    },\r\n    methods: {\r\n        click(e) {\r\n            if (this.useFlyOutBasket) {\r\n                e.preventDefault();\r\n                const event = new CustomEvent(Events.ACTIVATE_FLY_OUT_BASKET, {});\r\n                document.dispatchEvent(event);\r\n            }\r\n        }\r\n    }\r\n}\r\n</script>\r\n","import Cookie from 'js-cookie';\r\n\r\nconst COOKIE_NAME = 'scrollpos';\r\n\r\nexport function initPostbackScrollPosition() {\r\n    const scrollPosStr = Cookie.get(COOKIE_NAME);\r\n    let scrollPosObj = null;\r\n    if (scrollPosStr) {\r\n        try {\r\n            scrollPosObj = JSON.parse(scrollPosStr);\r\n        }\r\n        catch (e) {}\r\n    }\r\n\r\n    // now remove the cookie as we don't need it again\r\n    Cookie.remove(COOKIE_NAME);\r\n\r\n    // and make sure that the event handler is attached so the cookie will be set on activation\r\n    const activators = [...document.querySelectorAll('.js-maintain-scroll')];\r\n    activators.forEach(a => {\r\n        a.addEventListener('click', onClick);\r\n    });\r\n\r\n    if (!scrollPosObj || !scrollPosObj.pos || !scrollPosObj.key) {\r\n        return;\r\n    }\r\n    \r\n    const selector = `[data-scroll-key=\"${scrollPosObj.key}\"].js-maintain-scroll`;\r\n    const activator = document.querySelector(selector);\r\n    if (!activator) {\r\n        // there is no activator matching the one for which the scroll position was saved. That means we are on a different page and we should not restore the scroll position\r\n        return;\r\n    }\r\n    \r\n    // now scroll the page\r\n    window.scrollTo(0, scrollPosObj.pos);\r\n}\r\n\r\nfunction onClick(e) {\r\n    let pos = window.scrollY;\r\n    if (e.target.dataset.scrollTarget) {\r\n        const elm = document.getElementById(e.target.dataset.scrollTarget);\r\n        if (elm) {\r\n            pos += elm.getBoundingClientRect().top;\r\n        }\r\n    }\r\n    const obj = {\r\n        key: e.target.dataset.scrollKey,\r\n        pos: pos\r\n    };\r\n    Cookie.set(COOKIE_NAME, JSON.stringify(obj));\r\n}\r\n\r\n\r\n\r\n","let rootElement = null;\r\n\r\nfunction show(element) {\r\n  element.classList.remove('js-hide');\r\n}\r\n\r\nfunction hide(element) {\r\n  element.classList.add('js-hide');\r\n}\r\n\r\nfunction onChange(element) {\r\n  const showClass = element.target.dataset.showClass;\r\n  const hideClass = element.target.dataset.hideClass;\r\n  const elementsToShow = [...rootElement.querySelectorAll(`.${showClass}`)];\r\n  elementsToShow.forEach((elm) => {\r\n\tshow(elm);\r\n  });\r\n  const elementsToHide = [...rootElement.querySelectorAll(`.${hideClass}`)];\r\n  elementsToHide.forEach((elm) => {\r\n\thide(elm);\r\n  });\r\n}\r\n\r\nfunction onConsentChange(element) {\r\n  const selected = document.querySelector('[name=ConsentChoiceId]:checked');\r\n  const accepted = document.getElementById('consent-given');\r\n  if (!accepted) {\r\n\treturn;\r\n  }\r\n  if (selected && selected.value) {\r\n\taccepted.value = 'True';\r\n  } else {\r\n\taccepted.value = 'False';\r\n  }\r\n}\r\n\r\nfunction resetConsent() {\r\n\tvar choice = document.querySelector('[name=ConsentChoiceId]:checked');\r\n\tif (choice) {\r\n\t\tchoice.checked = false;\r\n\t}\r\n\tvar accepted = document.getElementById('consent-given');\r\n\tif (accepted) {\r\n\t\taccepted.value = 'False'\r\n\t}\r\n}\r\n\r\nexport default function (root) {\r\n\trootElement = root || document.documentElement;\r\n\r\n\tconst userTypeOptions = [...document.querySelectorAll('.usertype-selector')];\r\n\tuserTypeOptions.forEach((userTypeOption) => {\r\n\t\tuserTypeOption.addEventListener('change', resetConsent);\r\n\t})\r\n\r\n\tconst activators = [...root.querySelectorAll('.js-showhide-activator')];\r\n\tactivators.forEach((activator) => {\r\n\t\tactivator.addEventListener('change', onChange);\r\n\t\tif (activator.checked) {\r\n\t\t\tonChange({ target: activator });\r\n\t\t}\r\n\t});\r\n\r\n\t// setup multiple consent handlers\r\n\tconst consentOptions = [...document.querySelectorAll('[name=ConsentChoiceId]')];\r\n\tconsentOptions.forEach((consentOption) => {\r\n\t\tconsentOption.addEventListener('change', onConsentChange);\r\n\t})\r\n\r\n\t// setup the remove from basket click handlers\r\n\tconst buttons = [...document.querySelectorAll('[data-js*=\"removeFromBasket\"]')];\r\n\tbuttons.forEach(button => {\r\n\t\tbutton.addEventListener('click', async (event) => {\r\n\t\t\tconst apiUrl = '/api/global-basket/';\r\n\r\n\t\t\ttry {\r\n\t\t\t\tawait axios.get(`${apiUrl}basket?language=${window.data.Culture}`);\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error(error);\r\n\t\t\t}\r\n\t\t});\r\n\t})\r\n\r\n}\r\n","let rootElement = null;\r\nlet bodyElement = null;\r\nconst HIDE_CLASS = 'js-hide';\r\nconst IOS_MODAL_MODIFIER = '-ios';\r\nconst IOS_MODAL_BODY_MODIFIER = '-ios-modal';\r\n\r\nconst iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n\r\nfunction show() {\r\n    rootElement.classList.remove(HIDE_CLASS);\r\n    if (iOS) {\r\n        rootElement.classList.add(IOS_MODAL_MODIFIER);\r\n        bodyElement.classList.add(IOS_MODAL_BODY_MODIFIER);\r\n    }\r\n    else {\r\n        const dialog = rootElement.querySelector('[data-elm=\"dialog\"]');\r\n        const boundingBox = dialog.getBoundingClientRect();\r\n        dialog.style['min-width'] = `${boundingBox.width}px`; \r\n    }\r\n}\r\n\r\nfunction close(e) {\r\n    if (e) {\r\n        e.preventDefault();\r\n    }\r\n    rootElement.classList.add(HIDE_CLASS);\r\n    if (iOS) {\r\n        rootElement.classList.remove(IOS_MODAL_MODIFIER);\r\n        bodyElement.classList.remove(IOS_MODAL_BODY_MODIFIER);\r\n    }\r\n}\r\n\r\nexport default function initModalDialog(element) {\r\n    rootElement = element;\r\n    bodyElement = document.body;\r\n    const trigger = rootElement.dataset.trigger;\r\n    if (!trigger) {\r\n        return;\r\n    }\r\n    document.addEventListener(trigger, show);\r\n\r\n    const closeBtn = rootElement.querySelector('[data-js=\"close\"]')\r\n    if (closeBtn) {\r\n        closeBtn.addEventListener('click', close);\r\n    }\r\n}","const eventNames = [];\r\n\r\nfunction emitEvent(e) {\r\n    if (e) {\r\n        e.preventDefault();\r\n    }\r\n\tconst eventName = (typeof e.target.dataset?.event !== 'undefined') ? e.target.dataset?.event : e.target?.parentElement?.dataset?.event;\r\n\tconst eventParameter = (typeof e.target?.dataset?.eventParameter !== 'undefined') ? e.target?.dataset?.eventParameter : e.target?.parentElement?.dataset?.eventParameter\r\n\r\n\tif(eventNames.includes(eventName)) {\r\n\t\tconst event = new CustomEvent(eventName, {\r\n\t\t\tdetail: eventParameter,\r\n\t\t});\r\n\t\tdocument.dispatchEvent(event);\r\n\t}\r\n}\r\n\r\nexport default function initCustomEventEmitter(element) {\r\n\teventNames.push(element.dataset.event);\r\n    if (!eventNames.length) {\r\n        return;\r\n    }\r\n\telement.addEventListener('click', emitEvent);\r\n}\r\n","import events from 'shared/settings/events';\r\nimport { isExternalDomain } from 'shared/services/urlTypeService';\r\n\r\nfunction fireExternalLinksEvent(url) {\r\n\tlet event = new CustomEvent(events.EXTERNAL_LINK_CLICK, { detail: url });\r\n\tdocument.dispatchEvent(event);\r\n}\r\n\r\nexport function isExternalClickableLink(a) {\r\n\treturn a.classList.contains('clickable-link');\r\n}\r\n\r\nexport default function initExternalLinksEvent() {\r\n\tdocument.body.addEventListener('click', (e) => {\r\n\t\tif (!e.target.tagName || !e.target?.closest('a')) return;\r\n\r\n\t\tlet a = e.target.closest('a');\r\n\t\tif (isExternalDomain(a.href)) {\r\n\t\t\tconst externalLinkPopup = document.getElementById('external-link-popup');\r\n\t\t\tif (externalLinkPopup != null && !isExternalClickableLink(a)) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tfireExternalLinksEvent(a.href);\r\n\t\t\t}\r\n\t\t}\r\n\t}, true)\r\n}\r\n","export default class RemoveOutline {\r\n\r\n    constructor() {\r\n        const _this = this;\r\n        document.body.addEventListener(\"mousedown\", (event) => {_this.mouseEvent(event);});\r\n        document.body.addEventListener(\"touchstart\", (event) => {_this.mouseEvent(event);});\r\n        document.body.addEventListener(\"keydown\", () => { _this.clearOnKeyDown();});\r\n    }\r\n\r\n    mouseEvent() {\r\n        document.body.classList.add(\"remove-outline\");\r\n    }\r\n\r\n    clearOnKeyDown() {\r\n        document.body.classList.remove(\"remove-outline\");\r\n    }\r\n}","export default function initHideBodyScrollBar(element) {\r\n\tif (element == null) {\r\n\t\treturn;\r\n\t}\r\n\tconst BREAKPOINT = 768;\r\n\telement.addEventListener('change', () => {\r\n\t\tif (element.checked && window.innerWidth < BREAKPOINT) {\r\n\t\t\tdocument.body.style.overflowY = 'hidden';\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdocument.body.removeAttribute('style');\r\n\t\t}\r\n\t});\r\n\t//in case orientation was changed and we get desktop nav view\r\n\twindow.addEventListener('resize', function () {\r\n\t\tif (window.innerWidth >= BREAKPOINT && document.body.getAttribute('style') != null) {\r\n\t\t\tdocument.body.removeAttribute('style');\r\n\t\t}\r\n\t});\r\n}\r\n","import axios from 'axios';\r\nexport default function initLinkOverride(element) {\r\n\tif (element.dataset.param) {\r\n\t\telement.addEventListener('click', async () => {\r\n\t\t\tawait axios.get(element.dataset.param);\r\n\t\t});\r\n\r\n\t}\r\n}\r\n","function addStyleTag() {\r\n\tconst css = '.embeddedServiceHelpButton, .embeddedServiceSidebar { display: none !important; }';\r\n\r\n\tconst head = document.head || document.getElementsByTagName('head')[0];\r\n\tconst style = document.createElement('style');\r\n\r\n\thead.appendChild(style);\r\n\tstyle.appendChild(document.createTextNode(css));\r\n}\r\n\r\nexport default function initHideChat() {\r\n\tif (document.querySelector(\"[data-checkout-item]\")) {\r\n\t\taddStyleTag();\r\n\t}\r\n}\r\n","export default function initTabbingCarousel(element) {\r\n\r\n\tconst tabs = element.querySelectorAll('[data-tab]');\r\n\tconst content = element.getElementsByClassName('active');\r\n\r\n\tconst toggleContent = function() {\r\n\t\tif (!this.classList.contains(\"active\")) {\r\n\r\n\t\t\tArray.from(content).forEach( item => {\r\n\t\t\t\titem.classList.remove('active');\r\n\t\t\t\titem.setAttribute('aria-hidden', 'true');\r\n\t\t\t});\r\n\r\n\t\t\tthis.classList.add('active');\r\n\r\n\t\t\tlet currentTab = this.getAttribute('data-tab'),\r\n\t\t\t\ttabContent = element.querySelector(`#${currentTab}`);\r\n\r\n\t\t\ttabContent.classList.add('active');\r\n\t\t\ttabContent.removeAttribute('aria-hidden');\r\n\t\t}\r\n\t};\r\n\r\n\tArray.from(tabs).forEach( item => {\r\n\t\titem.addEventListener('click', toggleContent);\r\n\t});\r\n}\r\n","export default function initDownloadPdfUrl(element) {\r\n\tconst language = document.documentElement.getAttribute('data-lang') || document.documentElement.getAttribute('lang') || 'en-US';\r\n\tconst pageId = element.getAttribute([\"data-page-reference\"]);\r\n\r\n\tconst url = `https://${window.location.hostname}/api/healthcheck/GetSummaryPdf/${pageId}/${language}`;\r\n\r\n\tdocument.querySelector('[data-fn=\"initDownloadPdfUrl\"]').setAttribute('href', url);\r\n}\r\n","export default function initMagazineNavigation() {\r\n\tconst windowWidth = window.innerWidth;\r\n\tconst isStickyHeader = !document.querySelector('header').classList.contains('sticky-disabled');\r\n\tconst isMagazineNavigation = !!document.querySelector('[data-magazine-navigation]');\r\n\tconst isMagazineSidebar = !!document.querySelector('[data-magazine-sidebar]');\r\n\tconst isMagazineAnchors = !!document.querySelectorAll('[data-magazine-anchor]').length;\r\n\tconst headerHeight = document.querySelector('header').clientHeight || 105;\r\n\tconst magazineNavigationHeight = document.querySelector('[data-magazine-navigation]').clientHeight;\r\n\r\n\twindow.addEventListener('load', function () {\r\n\t\tsetScrollBarWidth();\r\n\t\tsetSidebarOffset();\r\n\t\tsetNavigationOffset();\r\n\t\tsetAnchorOffset();\r\n\t});\r\n\r\n\twindow.addEventListener('scroll', function () {\r\n\t\tsetScrollBarWidth();\r\n\t});\r\n\r\n\twindow.addEventListener('resize', function () {\r\n\t\tsetSidebarOffset();\r\n\t\tsetNavigationOffset();\r\n\t\tsetAnchorOffset();\r\n\t});\r\n\r\n\tconst setScrollBarWidth = () => {\r\n\t\tlet windowScroll = document.body.scrollTop || document.documentElement.scrollTop;\r\n\t\tlet height = document.documentElement.scrollHeight - document.documentElement.clientHeight;\r\n\t\tlet scrolled = (windowScroll / height) * 100 || 0;\r\n\t\tdocument.querySelector('#progress-bar-dynamic').style.width = scrolled + '%';\r\n\t};\r\n\r\n\tconst setSidebarOffset = () => {\r\n\t\tif (isMagazineNavigation && isMagazineSidebar && isStickyHeader) {\r\n\t\t\tdocument.querySelectorAll('[data-magazine-sidebar]').forEach((element) => {\r\n\t\t\t\telement.setAttribute('style', `top:${magazineNavigationHeight + headerHeight}px;`);\r\n\t\t\t});\r\n\t\t} else if (isMagazineNavigation && isMagazineSidebar && !isStickyHeader) {\r\n\t\t\tdocument.querySelectorAll('[data-magazine-sidebar]').forEach((element) => {\r\n\t\t\t\telement.setAttribute('style', `top:${magazineNavigationHeight}px;`);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tconst setNavigationOffset = () => {\r\n\t\tif (isMagazineNavigation && isStickyHeader) {\r\n\t\t\tdocument.querySelector('[data-magazine-navigation]').setAttribute('style', `top:${headerHeight - 2}px;`);\r\n\t\t} else if (isMagazineNavigation && !isStickyHeader) {\r\n\t\t\tdocument.querySelector('[data-magazine-navigation]').setAttribute('style', `top:-1px;`);\r\n\t\t}\r\n\t};\r\n\r\n\tconst setAnchorOffset = () => {\r\n\t\tif (isMagazineAnchors && isStickyHeader) {\r\n\t\t\tdocument.querySelectorAll('[data-magazine-anchor]').forEach((element) => {\r\n\t\t\t\telement.setAttribute('style', `scroll-margin-top:${windowWidth < 767 ? magazineNavigationHeight + headerHeight - 24 : magazineNavigationHeight + headerHeight - 64}px;`);\r\n\t\t\t});\r\n\t\t} else if (isMagazineAnchors && !isStickyHeader) {\r\n\t\t\tdocument.querySelectorAll('[data-magazine-anchor]').forEach((element) => {\r\n\t\t\t\telement.setAttribute('style', `scroll-margin-top:${windowWidth < 767 ? magazineNavigationHeight - 24 : magazineNavigationHeight - 64}px;`);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tconst observerOptions = {\r\n\t\troot: null,\r\n\t\trootMargin: '0px',\r\n\t\tthreshold: 0.5,\r\n\t};\r\n\r\n\tdocument.querySelectorAll('[data-observe-block]').forEach((element) => {\r\n\t\tif (element) {\r\n\t\t\tlet observer = new IntersectionObserver(intersectionCallback, observerOptions);\r\n\t\t\tobserver.observe(element);\r\n\t\t}\r\n\t});\r\n\r\n\tfunction intersectionCallback(entries, observer) {\r\n\t\tconst buttons = document.querySelectorAll('[data-magazine-navigation-button]');\r\n\r\n\t\tentries.forEach(entry => {\r\n\t\t\tif (entry.isIntersecting) {\r\n\t\t\t\tbuttons.forEach(function(button) {\r\n\t\t\t\t\tif (button.getAttribute('href') === `#${entry.target.id}`) {\r\n\t\t\t\t\t\tbutton.setAttribute('style', 'color:#00788A;');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tbuttons.forEach(function(button) {\r\n\t\t\t\t\tif (button.hasAttribute('style')) {\r\n\t\t\t\t\t\tbutton.removeAttribute('style');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import Events from \"shared/settings/events\";\r\n\r\nlet activators;\r\nlet menuHeight;\r\nconst SCROLL_PADDING = 24;\r\n\r\nexport function initStepByStep(root) {\r\n\tconst blockId = root.dataset.param;\r\n\tactivators = root.querySelectorAll('[data-step-by-step-activator]');\r\n\tactivators.forEach(activator => {\r\n\t\tactivator.activationTarget = activator.parentElement.querySelector('[data-step-by-step-content]');\r\n\t\tactivator.addEventListener('click', onActivatorClicked);\r\n\t\tactivator.activationTarget.addEventListener('transitionend', onTransitionEnd);\r\n\t\tactivator.blockId = blockId;\r\n\t});\r\n\r\n\tdocument.addEventListener(Events.VIDEO_PLAYING, (event) => {\r\n\t\tactivators.forEach(activator => {\r\n\t\t\tif (activator.activationTarget.getAttribute('aria-expanded') == 'true') {\r\n\t\t\t\tanimateToClientHeight(activator.activationTarget);\r\n\t\t\t}\r\n\t\t})\r\n\t});\r\n\r\n\tconst menu = document.querySelector('[data-main-navigation]');\r\n\tif (menu) {\r\n\t\tmenuHeight = menu.clientHeight;\r\n\t}\r\n\r\n\tlet observer = new IntersectionObserver(intersectionObserverCallback, {\r\n\t\tthreshold: 0.6,\r\n\t});\r\n\tobserver.observe(root);\r\n}\r\n\r\nexport function intersectionObserverCallback (entries, observer) {\r\n\tentries.forEach(entry => {\r\n\t\tif (entry.isIntersecting) {\r\n\t\t\tentry.target.classList.add('-in-view');\r\n\t\t\tobserver.disconnect();\r\n\t\t}\r\n\t});\r\n};\r\n\r\n\r\nfunction onActivatorClicked(event) {\r\n\tconst target = event.target.tagName == 'BUTTON' ? event.target : event.target.closest('button');\r\n\tactivators.forEach(activator => {\r\n\t\tif (activator.blockId != target.blockId) {\r\n\t\t\t// only manipulate activators and activation targets within the same block as the one in which the button was clicked\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (activator == target) {\r\n\t\t\tactivateContent(activator.activationTarget, activator.dataset.videoId);\r\n\t\t\tactivator.setAttribute('data-active', 'true');\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdeactivateContent(activator.activationTarget, activator.dataset.videoId);\r\n\t\t\tactivator.setAttribute('data-active', 'false');\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction onTransitionEnd(event) {\r\n\tif (event.target.getAttribute('aria-expanded') == 'true') {\r\n\t\tconst clientRect = event.target.parentElement.getBoundingClientRect();\r\n\t\tif (clientRect.top - menuHeight - SCROLL_PADDING < 0) {\r\n\t\t\twindow.scrollBy(0, clientRect.top - menuHeight - SCROLL_PADDING);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction activateContent(activationTarget, videoId) {\r\n\tactivationTarget.setAttribute('aria-expanded', 'true');\r\n\tconst event = new CustomEvent(Events.PLAY, {\r\n\t\tdetail: {\r\n\t\t\tid: videoId,\r\n\t\t},\r\n\t});\r\n\tdocument.dispatchEvent(event);\r\n\tanimateToClientHeight(activationTarget);\r\n}\r\n\r\nfunction deactivateContent(activationTarget, videoId) {\r\n\tactivationTarget.setAttribute('aria-expanded', 'false');\r\n\tconst event = new CustomEvent(Events.PAUSE, {\r\n\t\tdetail: {\r\n\t\t\tid: videoId,\r\n\t\t},\r\n\t});\r\n\tdocument.dispatchEvent(event);\r\n\tanimateToZeroHeight(activationTarget);\r\n}\r\n\r\nfunction animateToClientHeight(activationTarget) {\r\n\tconst content = activationTarget.querySelector('[data-item-content-wrapper]');\r\n\tactivationTarget.style.height = `${content.clientHeight}px`;\r\n}\r\n\r\nfunction animateToZeroHeight(activationTarget) {\r\n\tactivationTarget.style.height = '0';\r\n}\r\n","import initMultisiteBasket from 'shared/vanilla/multisitebasket.js';\r\nimport initModalDialog from 'shared/vanilla/modalDialog.js';\r\nimport initCustomEventEmitter from 'shared/vanilla/customEventEmitter.js';\r\nimport initExternalLinksClickEvent from 'shared/vanilla/externalLinksClickEvent';\r\nimport RemoveOutline from \"shared/vanilla/removeOutline\";\r\nimport initHideBodyScrollBar from 'shared/vanilla/initHideBodyScrollBar';\r\nimport initLinkOverride from 'shared/vanilla/linkOverride';\r\nimport initHideChat from 'shared/vanilla/initHideChat';\r\nimport initTabbingCarousel from 'shared/vanilla/tabbingCarousel';\r\nimport initDownloadPdfUrl from 'shared/vanilla/initDownloadPdfUrl';\r\nimport initMagazineNavigation from 'shared/vanilla/initMagazineNavigation';\r\n\r\nimport { initStepByStep } from './blocks/stepByStep';\r\n\r\nconst functions = {\r\n    initMultisiteBasket,\r\n    initModalDialog,\r\n\tinitCustomEventEmitter,\r\n\tinitExternalLinksClickEvent,\r\n\tinitHideBodyScrollBar,\r\n\tinitLinkOverride,\r\n\tinitStepByStep,\r\n\tinitTabbingCarousel,\r\n\tinitDownloadPdfUrl,\r\n\tinitMagazineNavigation,\r\n}\r\n\r\nexport default function () {\r\n    const initters = [...document.querySelectorAll('[data-fn]')].map((elm) => {\r\n        return {\r\n            name: elm.dataset.fn,\r\n            element: elm\r\n        };\r\n    });\r\n\r\n    initters.forEach((initter) => {\r\n        if (functions[initter.name] && typeof functions[initter.name] === 'function') {\r\n            functions[initter.name](initter.element);\r\n        }\r\n    });\r\n\r\n\tconst links = [...document.querySelectorAll('a')];\r\n\tinitExternalLinksClickEvent(links);\r\n\r\n    new RemoveOutline();\r\n\tinitHideChat();\r\n}\r\n","import Cookies from 'js-cookie';\r\n\r\nlet bannerHeights = [];\r\nconst banners = document.querySelectorAll('.c-banner--footer-sticky-banner');\r\nconst activeClass = 'initted';\r\nconst bannerDummyClass = 'c-banner--footer-sticky-banner-dummy';\r\nconst closeBannerClass = 'c-banner--footer-sticky-banner-close';\r\nconst ie11BannerClass = 'c-banner--ie11-banner';\r\nlet ie11BannerAllowed = false;\r\nlet totalHeight = 0;\r\nlet dummy;\r\nconst date = new Date();\r\nconst interval = 43200000; // 12 hours in milliseconds are 43200000\r\n\r\nconst detectIE = function detectIE(windowObj) {\r\n\tconst ua = windowObj.navigator.userAgent;\r\n\tconst msie = ua.indexOf('MSIE ');\r\n\tconst trident = ua.indexOf('Trident/');\r\n\tif (msie > 0) { // IE 10 or older => return version number\r\n\t\treturn !!(parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10));\r\n\t}\r\n\tif (trident > 0) { // IE 11 => return version number\r\n\t\tconst rv = ua.indexOf('rv:');\r\n\t\treturn !!(parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10));\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nconst cleanBannerHeights = function cleanBannerHeights() {\r\n\tieNotification.bannerHeights = [];\r\n};\r\n\r\nconst setBannerHeights = function setBannerHeights() {\r\n\tieNotification.totalHeight = 0;\r\n\tieNotification.banners.forEach(banner => {\r\n\t\tconst bannerHeight = banner.getBoundingClientRect().height;\r\n\t\tieNotification.bannerHeights.push(bannerHeight);\r\n\t\tieNotification.totalHeight += bannerHeight;\r\n\t});\r\n\tieNotification.totalHeight = ieNotification.totalHeight === 0 ? ieNotification.totalHeight : ieNotification.totalHeight - 1;\r\n};\r\n\r\nconst setBannerPositions = function setBannerPositions() {\r\n\tieNotification.banners.forEach((banner, i) => {\r\n\t\tconst offset = ieNotification.bannerHeights.slice(0, i).reduce((acc, val) => acc + val, 0);\r\n\t\tbanner.style.bottom = `${offset}px`;\r\n\t});\r\n};\r\n\r\nconst setBanners = function setBanners() {\r\n\tieNotification.cleanBannerHeights();\r\n\tieNotification.setBannerHeights();\r\n\tieNotification.setBannerPositions();\r\n\tif (ieNotification.dummy) {\r\n\t\tieNotification.dummy.style.height = `${ieNotification.totalHeight}px`;\r\n\t}\r\n};\r\n\r\nconst handleClick = function handleClick(event) {\r\n\tif (event.target.classList[0] === ieNotification.closeBannerClass) {\r\n\t\tevent.stopPropagation();\r\n\t\tevent.preventDefault();\r\n\r\n\t\tconst node = event.target.parentNode.parentNode;\r\n\t\tconst isIe11class = ([...event.target.parentNode.classList]).some(item => item === ieNotification.ie11BannerClass);\r\n\t\tif (node.parentNode) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tieNotification.setBanners();\r\n\r\n\t\tif (isIe11class) {\r\n\t\t\tCookies.set(ieNotification.ie11BannerClass, (new Date()).getTime());\r\n\t\t\tsessionStorage.setItem(ieNotification.ie11BannerClass, true);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst getAccess = function getAccess() {\r\n\tconst sessionDate = ieNotification.date.getTime();\r\n\tconst cookieValue = Number(Cookies.get(ieNotification.ie11BannerClass)) || 0;\r\n\tconst cookieAllow = cookieValue + ieNotification.interval < sessionDate;\r\n\tconst sessionHasStarted = sessionStorage.getItem(ieNotification.ie11BannerClass) === 'true';\r\n\tieNotification.ie11BannerAllowed = cookieAllow && !sessionHasStarted;\r\n\treturn ieNotification.detectIE(window) && ieNotification.ie11BannerAllowed;\r\n};\r\n\r\nconst init = function init() {\r\n\tif (ieNotification.getAccess()) {\r\n\t\tieNotification.dummy = document.querySelector(`.${ieNotification.bannerDummyClass}`);\r\n\t\tif (!ieNotification.dummy) {\r\n\t\t\tieNotification.dummy = document.createElement('div');\r\n\t\t\tieNotification.dummy.classList.add(`.${ieNotification.bannerDummyClass}`);\r\n\t\t\tdocument.body.appendChild(ieNotification.dummy);\r\n\t\t}\r\n\r\n\t\tieNotification.cleanBannerHeights();\r\n\t\tieNotification.banners.forEach(banner => {\r\n\t\t\tbanner.classList.add(ieNotification.activeClass);\r\n\t\t});\r\n\t\tieNotification.setBannerHeights();\r\n\t\tieNotification.setBannerPositions();\r\n\t\tif (ieNotification.dummy) {\r\n\t\t\tieNotification.dummy.style.height = `${ieNotification.totalHeight}px`;\r\n\t\t}\r\n\r\n\t\twindow.addEventListener('resize', function (event) {\r\n\t\t\tieNotification.setBanners();\r\n\t\t});\r\n\r\n\t\twindow.addEventListener('click', function (event) {\r\n\t\t\tieNotification.handleClick(event);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nconst ieNotification = {\r\n\tbanners,\r\n\tactiveClass,\r\n\tbannerHeights,\r\n\tbannerDummyClass,\r\n\tcloseBannerClass,\r\n\tie11BannerClass,\r\n\tie11BannerAllowed,\r\n\ttotalHeight,\r\n\tdummy,\r\n\tdate,\r\n\tinterval,\r\n\tdetectIE,\r\n\tcleanBannerHeights,\r\n\tsetBannerHeights,\r\n\tsetBannerPositions,\r\n\tsetBanners,\r\n\tinit,\r\n\tgetAccess,\r\n\thandleClick\r\n};\r\n\r\nexport default ieNotification;\r\n","export default function initHeylo() {\r\n    const form = document.querySelector('.ch__form');\r\n    const fieldNames = ['no', 'cd', 'accd', 'acc'];\r\n\r\n    if (form) {\r\n        if (window.location.search.length > 4) {\r\n            fieldNames.forEach(el => {\r\n                const value = getQueryVar(el);\r\n                if (value) {\r\n                    const element = form.querySelector(`[name=\"${el}\"]`);\r\n                    if (!element) {\r\n                        return\r\n                    }\r\n                    if (element.type == 'checkbox' && value == 'true') {\r\n                        element.click();\r\n                    } else {                    \r\n                        form.querySelector(`[name=\"${el}\"]`).value = value;\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    }\r\n}\r\n\r\nfunction getQueryVar(variable) {\r\n    const query = window.location.search.substring(1);\r\n    const vars = query.split('&');\r\n    let toReturn = null;\r\n    \r\n    vars.forEach((el, i) => {\r\n        const pair = vars[i].split('=');\r\n        if (decodeURIComponent(pair[0]) == variable) {\r\n            toReturn = decodeURIComponent(pair[1]);\r\n        }\r\n    });\r\n    return toReturn;\r\n}","<template>\r\n\t<time :datetime=\"datetime\" :lang=\"lang\">{{ formattedDate }}</time>\r\n</template>\r\n<script>\r\nimport { formatShortDate, formatLongDate, formatTime } from \"../vanilla/date\";\r\n\r\n/**\r\n * Expose a `<date-time>` component that can be used by the Backend to render out a clientside formatted time element, localised to the current page locale.\r\n * @example\r\n * Input:\r\n * <date-time datetime=\"2021-11-11T11:21:39.180Z\" format=\"long />\r\n *\r\n * Output:\r\n * <time datetime=\"2021-11-11T11:21:39.180Z\">Thursday, 11. november, 2021</time>\r\n **/\r\nexport default {\r\n\tname: \"date-time\",\r\n\tprops: {\r\n\t\tlang: String,\r\n\t\tdatetime: {\r\n\t\t\ttype: [Date, String, Number],\r\n\t\t\trequired: true,\r\n\t\t},\r\n\t\tformat: {\r\n\t\t\ttype: String,\r\n\t\t\tvalidator: (prop) =>\r\n\t\t\t\t[\"short-date\", \"short\", \"long-date\", \"long\", \"time\"].includes(\r\n\t\t\t\t\tprop\r\n\t\t\t\t),\r\n\t\t},\r\n\t},\r\n\tcomputed: {\r\n\t\tformattedDate() {\r\n\t\t\tconst tz = process.env.NODE_ENV === 'test' ? 'UTC' : undefined\r\n\t\t\tswitch (this.format) {\r\n\t\t\t\tcase \"time\":\r\n\t\t\t\t\treturn formatTime(this.datetime, this.lang, tz);\r\n\t\t\t\tcase \"long-date\":\r\n\t\t\t\tcase \"long\":\r\n\t\t\t\t\treturn formatLongDate(this.datetime, this.lang, tz);\r\n\t\t\t\tcase \"short-date\":\r\n\t\t\t\tcase \"short\":\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn formatShortDate(this.datetime, this.lang, tz);\r\n\t\t\t}\r\n\t\t},\r\n\t},\r\n};\r\n</script>\r\n","<script setup>\r\nimport SkeletonWrapper from 'shared/components/skeleton/skeletonWrapper.vue';\r\nimport SkeletonBox from 'shared/components/skeleton/skeletonBox.vue';\r\nimport { ref, computed } from 'vue';\r\nimport { useStore } from 'vuex';\r\n\r\nconst store = useStore();\r\nconst areImagesLoaded = computed(() => store.getters['getGalleryItems']);\r\nconst imageGalleryElement = ref(document.getElementById('image-gallery'));\r\nconst isDisplayManufacturerLogo = computed(() => store.getters['getDisplayManufacturerLogo']);\r\nconst isGalleryMounted = computed(() => imageGalleryElement.value && areImagesLoaded.value.length || isDisplayManufacturerLogo.value);\r\nconst isSkeletonCreated = true;\r\n</script>\r\n\r\n<template>\r\n\t<skeleton-wrapper class=\"c-skeleton__image-gallery\">\r\n\t\t<slot v-if=\"!isSkeletonCreated\"></slot>\r\n\t\t<div v-if=\"!isGalleryMounted\" v-for=\"element in 4\" class=\"c-skeleton__image-gallery__wrapper\"\r\n\t\t\tdata-testid=\"skeleton-image\">\r\n\t\t\t<skeleton-box width=\"100%\" aspectRatio=\"1\"></skeleton-box>\r\n\t\t</div>\r\n\t</skeleton-wrapper>\r\n</template>\r\n\r\n<style lang=\"scss\">\r\n@import \"src/shared/styles/settings/settings\";\r\n@import \"src/shared/styles/tools/tools\";\r\n\r\n.c-skeleton__image-gallery {\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\tdisplay: flex;\r\n\tflex-wrap: nowrap;\r\n\tgap: 12px;\r\n\tmax-width: 100vw;\r\n\toverflow-x: auto;\r\n\r\n\t@media (min-width: ds-breakpoint(\"md\")) {\r\n\t\tdisplay: grid;\r\n\t\tgrid-template-columns: 1fr 1fr;\r\n\t\tgap: 24px;\r\n\t\toverflow: hidden;\r\n\t}\r\n\r\n\t&__wrapper {\r\n\t\tflex: 1 0 100%;\r\n    \tflex-basis: 80%;\r\n\t\tmax-width: 216px;\r\n\t\twidth: 100%;\r\n\r\n\t\t@media (min-width: ds-breakpoint(\"md\")) {\r\n\t\t\tmax-width: 100%;\r\n\t\t}\r\n\t}\r\n\r\n\t.c-skeleton-box {\r\n\t\tborder-radius: 8px;\r\n\t}\r\n}\r\n</style>\r\n","import axios from \"axios\";\r\nimport { initGlobalAxiosSettings } from \"./initGlobalAxiosSettings\";\r\n\r\nexport function initGlobalAxios() {\r\n\tinitGlobalAxiosSettings(axios);\r\n}\r\n","import(/* webpackChunkName: \"nav\" */ \"shared/vanilla/nav.js\");\r\nimport { plugin, defaultConfig } from \"@formkit/vue\";\r\nimport { storageFactory } from 'shared/tools/localStorageFactory';\r\n/* Design system icons */\r\nimport { iconCheckmark } from \"@coloplast/design-system/dist/exports/icons\";\r\n/* Design system styles - These could be imported via global script, component script, or at a global level */\r\nimport \"@coloplast/design-system/dist/components/formkit/formkit.css\";\r\n\r\nimport 'shared/vanilla/console';\r\n\r\n\r\nimport { createApp, defineAsyncComponent } from 'vue';\r\n\r\nimport 'lazysizes';\r\nimport 'lazysizes/plugins/unveilhooks/ls.unveilhooks';\r\n\r\nimport initNav from \"shared/vanilla/nav\";\r\nimport { createEventBus } from 'shared/tools/eventBus';\r\n// replacement for the $eventBus\r\nconst eventBus = createEventBus();\r\n\r\ninitNav();\r\n\r\nimport GlobalSettings from 'multisite/components/globalSettings.vue';\r\nimport MiniBasketCount from 'shared/components/product/miniBasketCount.vue';\r\nimport SampleButton from 'shared/components/product/sampleButton.vue';\r\nimport ExternalLinksPopup from 'shared/components/externalLinksPopup.vue';\r\nimport ModalDialog from 'shared/components/modalDialog.vue';\r\nimport BasketNavTracker from 'shared/components/trackers/basketNavTracker.vue';\r\nimport FormPostTracker from 'shared/components/trackers/formPostTracker.vue';\r\nimport Spinner from 'shared/components/spinner.vue';\r\nimport GlobalSpinner from 'shared/components/globalSpinner.vue';\r\nimport PhoneField from 'shared/components/phoneField.vue';\r\nimport Breadcrumb from 'shared/components/BreadcrumbElements/Breadcrumb.vue';\r\nimport LoginExpiredModal from 'shared/components/loginExpiredModal/loginExpiredModal.vue';\r\n\r\nimport LoginTracker from 'shared/components/trackers/loginTracker.vue';\r\nimport QuickSampleTracker from 'shared/components/trackers/quickSampleTracker.vue';\r\n\r\n// // Starship - Basket\r\nimport FlyOutBasketActivator from 'shared/components/basket/flyOutBasketActivator.vue';\r\n\r\nimport store from 'shared/store';\r\nimport { initPostbackScrollPosition } from 'shared/tools/postbackscrollpos.js';\r\nimport boot from 'shared/vanilla/boot.js';\r\nimport ieNotification from 'shared/tools/ieNotification.js';\r\nimport initHeylo from 'shared/vanilla/initHeylo.js';\r\nimport dateTime from \"shared/components/dateTime.vue\";\r\n\r\n// above the fold imports\r\nimport ImageGallerySkeleton from 'shared/components/product/skeletons/imageGallerySkeleton.vue';\r\n\r\nimport { initFormKitSchema } from 'shared/utils/initFormKitSchema';\r\nimport { initGlobalAxios } from \"shared/tools/initGlobalAxios\";\r\n\r\nimport './main.scss';\r\n\r\nexport function initSkeleton() {\r\n\tconst imageGallerySkeleton = document.querySelectorAll('[data-image-gallery-skeleton]');\r\n\tif (imageGallerySkeleton) {\r\n\t\timageGallerySkeleton.forEach(e => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'image gallery skeleton',\r\n\t\t\t});\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.component('image-gallery-skeleton', ImageGallerySkeleton);\r\n\t\t\tapp.mount(e);\r\n\t\t});\r\n\t}\r\n}\r\ninitSkeleton();\r\n\r\nwindow.onpageshow = function(event) {\r\n    if (event.persisted) {\r\n        window.location.reload()\r\n    }\r\n};\r\n\r\nfunction initGlobalSettingsApp() {\r\n\tconst globalSettingsContainer = document.getElementById('global-settings-container');\r\n\tif (globalSettingsContainer) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'GlobalSettingsApp',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('global-settings', GlobalSettings);\r\n\t\tapp.mount(globalSettingsContainer);\r\n\t}\r\n}\r\n\r\nexport function initVueApps() {\r\n\tconst menuSampleContainer = document.getElementById('menu-sample-btn');\r\n\tif (menuSampleContainer) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'menu sampler',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('sample-button', SampleButton);\r\n\t\tapp.mount(menuSampleContainer);\r\n\t}\r\n\r\n\tconst productWrapper = document.getElementById('product-wrapper');\r\n\tif (productWrapper) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'product list'\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('product-wrapper', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"product-list\" */ 'shared/components/product/productList.vue')\r\n\t\t));\r\n\t\tconst productFinderMount = document.querySelector('#product-finder[data-standalone]');\r\n\t\tif (productFinderMount) {\r\n\t\t\tapp.component('product-finder', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"product-finder\" */ 'shared/components/product/productFinder.vue')\r\n\t\t\t));\r\n\t\t}\r\n\t\tapp.mount(productWrapper);\r\n\t}\r\n\r\n\tconst hcpProductWrapper = document.getElementById('hcp-product-wrapper');\r\n\tif (hcpProductWrapper) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'hcp product list'\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('hcp-product-wrapper', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"hcp-product-list\" */ 'shared/components/product/hcpProduct/HcpProductList.vue')\r\n\t\t));\r\n\t\tapp.mount(hcpProductWrapper);\r\n\t}\r\n\r\n\tconst miniBasketMount = document.getElementById('mini-basket');\r\n\tif (miniBasketMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'mini basket',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.config.globalProperties.$eventBus = eventBus;\r\n\t\tapp.component('mini-basket', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"mini-basket\" */ 'shared/components/product/miniBasket.vue')\r\n\t\t));\r\n\t\tapp.mount(miniBasketMount);\r\n\t}\r\n\r\n\tconst dateTimes = document.querySelectorAll('.date-time');\r\n\tif (dateTimes) {\r\n\t\tdateTimes.forEach(dateTimeEl => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'dateTime',\r\n\t\t\t});\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.component('date-time', dateTime);\r\n\t\t\tapp.mount(dateTimeEl);\r\n\t\t});\r\n\t}\r\n\r\n\tconst imageGalleryMount = document.querySelectorAll('[data-image-gallery]');\r\n\tif (imageGalleryMount) {\r\n\t\timageGalleryMount.forEach(e => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'image gallery',\r\n\t\t\t});\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.component('image-gallery', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"multisite-image-gallery\" */ 'shared/components/product/imageGallery.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(e);\r\n\t\t});\r\n\t}\r\n\r\n\tconst addToBasketMount = document.getElementById('add-to-basket');\r\n\tif (addToBasketMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'AddToBasketApp',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.config.globalProperties.$eventBus = eventBus;\r\n\t\tinitFormKitSchema(app);\r\n\t\tapp.component('variant-selector', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"variant-selector\" */ 'shared/components/product/variantSelector.vue')\r\n\t\t));\r\n\t\tapp.component('sample-consent-modal', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"sample-consent-modal\" */ 'shared/components/product/sampleConsentModal.vue')\r\n\t\t));\r\n\t\tapp.component('variant-add-to-basket', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"variant-add-to-basket\" */ 'shared/components/product/variantAddToBasket.vue')\r\n\t\t));\r\n\t\tapp.component('variant-datasheet', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"variant-datasheet\" */ 'shared/components/product/variantDatasheet.vue')\r\n\t\t));\r\n\t\tapp.component('variant-hcp-datasheet', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"variant-hcp/datasheet\" */ 'shared/components/product/hcpProduct/variantHcpDatasheet.vue')\r\n\t\t));\r\n\t\tapp.component('read-only-description', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"variant-datasheet\" */ 'shared/components/product/detailViewComponents/readOnlyDescription.vue')\r\n\t\t));\r\n\t\tapp.component('add-sample-to-basket', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"add-sample-to-basket\" */ 'shared/components/product/addSampleToBasket.vue')\r\n\t\t));\r\n\t\tapp.component('hcp-popup', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"hcp-popup\" */ 'shared/components/product/hcpPopup.vue')\r\n\t\t));\r\n\t\tapp.component('add-to-basket-legacy', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"add-to-basket-legacy\" */ 'shared/components/product/addToBasket.vue')\r\n\t\t));\r\n\t\tapp.component('checkout-modal-login', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"checkout-modal-login\" */ 'multisite/components/checkout/checkoutModalLogin.vue')\r\n\t\t));\r\n\r\n\t\tapp.mount(addToBasketMount);\r\n\t}\r\n\r\n\tconst productDescriptionMounts = [...document.querySelectorAll('[data-product-description]')];\r\n\tproductDescriptionMounts.forEach(productDescriptionMount => {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'product description',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('line-clamp', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"line-clamp\" */ 'shared/components/lineClamp.vue')\r\n\t\t));\r\n\t\tapp.mount(productDescriptionMount);\r\n\t});\r\n\r\n\tconst hcpModalDialog = document.getElementById('hcp-modal-dialog');\r\n\tif (hcpModalDialog) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'hcp modal dialog',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('hcp-modal-dialog', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"hcp-modal-dialog\" */ 'shared/components/HcpProfileBlocks/hcpModalDialog.vue')\r\n\t\t));\r\n\t\tapp.mount(hcpModalDialog);\r\n\t}\r\n\r\n\tconst hcpMainProfilePageMount = document.getElementById('hcp-main-profile-page');\r\n\tif (hcpMainProfilePageMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'new hcp profile page',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('profile-nav', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/HcpProfilePage/profileNav.vue')\r\n\t\t));\r\n\t\tconst consumerShortcutsContainers = document.querySelectorAll('[data-shortcut-container]');\r\n\t\tif (consumerShortcutsContainers) {\r\n\t\t\tapp.component('consumer-shortcut-container', defineAsyncComponent(\r\n\t\t\t\t() => import('multisite/components/myAccount/blocks/consumerShortcutContainer.vue')\r\n\t\t\t));\r\n\t\t}\r\n\t\tconst coursesBlock = document.querySelectorAll('[data-courses-block]');\r\n\t\tif (coursesBlock) {\r\n\t\t\tapp.component('hcp-certificates-block', defineAsyncComponent(\r\n\t\t\t\t() => import('shared/components/HcpProfilePage/hcpСertificatesBlock.vue')\r\n\t\t\t));\r\n\t\t}\r\n\t\tconst bookmarksBlock = document.querySelectorAll('[data-bookmarks-block]');\r\n\t\tif (bookmarksBlock) {\r\n\t\t\tapp.component('hcp-bookmarks-block', defineAsyncComponent(\r\n\t\t\t\t() => import('shared/components/HcpProfilePage/HcpBookmarksBlock.vue')\r\n\t\t\t));\r\n\t\t}\r\n\t\tif (document.getElementById('hcp-current-order')) {\r\n\t\t\tapp.component('consumer-current-order', defineAsyncComponent(\r\n\t\t\t\t() => import('multisite/components/myAccount/blocks/consumerCurrentOrder.vue')\r\n\t\t\t));\r\n\t\t}\r\n\t\tif (document.getElementById('hcp-order-history-page')) {\r\n\t\t\tapp.component('consumer-order-history-page', defineAsyncComponent(\r\n\t\t\t\t() => import('multisite/components/myAccount/pages/consumerOrderHistoryPage.vue')\r\n\t\t\t));\r\n\t\t}\r\n\t\tif (document.getElementById('hcp-personal-info')) {\r\n\t\t\tapp.component('hcp-personal-info', defineAsyncComponent(\r\n\t\t\t\t() => import('shared/components/HcpProfilePage/Pages/hcpPersonalInformation.vue')\r\n\t\t\t));\r\n\t\t}\r\n\t\tif (document.getElementById('hcp-elearning-access')) {\r\n\t\t\tapp.component('hcp-elearning-access', defineAsyncComponent(\r\n\t\t\t\t() => import('shared/components/HcpProfilePage/Pages/hcpProfileElearningAccess.vue')\r\n\t\t\t));\r\n\t\t}\r\n\t\tif (document.getElementById('hcp-profile-notifications')) {\r\n\t\t\tapp.component('hcp-profile-notifications', defineAsyncComponent(\r\n\t\t\t\t() => import('shared/components/HcpProfilePage/Pages/hcpProfileNotifications.vue')\r\n\t\t\t));\r\n\t\t}\r\n\t\tif (document.getElementById('hcp-profile-elearningcode')) {\r\n\t\t\tapp.component('hcp-profile-elearningcode', defineAsyncComponent(\r\n\t\t\t\t() => import('shared/components/HcpProfilePage/Pages/hcpProfileElearningCode.vue')\r\n\t\t\t));\r\n\t\t}\r\n\t\tif (document.getElementById('customized-experience-alert')) {\r\n\t\t\tapp.component('customized-experience-alert', defineAsyncComponent(\r\n\t\t\t\t() => import('shared/components/HcpProfileBlocks/CustomizedExperienceAlert.vue')\r\n\t\t\t));\r\n\t\t}\r\n\t\tapp.mount(hcpMainProfilePageMount);\r\n\t}\r\n\r\n\tconst marketingPermissionsReminderMounts = document.querySelectorAll('.marketing-permission-reminder-block');\r\n\tif (marketingPermissionsReminderMounts.length) {\r\n\t\tmarketingPermissionsReminderMounts.forEach(marketingPermissionsReminderEl => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'marketing permission reminder block',\r\n\t\t\t});\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.component('marketing-permission-reminder-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"marketing-permission-reminder-block\" */ 'shared/components/HcpProfileBlocks/marketingPermissionReminderBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(marketingPermissionsReminderEl);\r\n\t\t});\r\n\t}\r\n\r\n\tconst actionButtonWithCtas = document.querySelectorAll('.action-button-with-cta');\r\n\tif (actionButtonWithCtas) {\r\n\t\tactionButtonWithCtas.forEach(actionButtonWithCtaEl => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'action button with cta',\r\n\t\t\t});\r\n\t\t\tapp.component('action-button-with-cta', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"action-button-with-cta\" */ 'shared/components/actionButtonWithCTA/ActionButtonWithCTA.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(actionButtonWithCtaEl);\r\n\t\t});\r\n\t}\r\n\r\n\tconst WhatNextMount = document.getElementById('what-next-block');\r\n\tif (WhatNextMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'what next block',\r\n\t\t});\r\n\t\tapp.component('what-next-block', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"what-next-block\" */ 'shared/components/whatNextBlock.vue')\r\n\t\t));\r\n\t\tapp.mount(WhatNextMount);\r\n\t}\r\n\r\n\tconst setPasswordMount = document.getElementById('set-password-block');\r\n\tif (setPasswordMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'set password block',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.config.globalProperties.$eventBus = eventBus;\r\n\t\tapp.component('set-password-block', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"set-password-block\" */ 'shared/components/HcpProfileBlocks/setPasswordBlock.vue')\r\n\t\t));\r\n\t\tapp.mount(setPasswordMount);\r\n\t}\r\n\r\n\tconst renewActivationLinkMount = document.getElementById('renew-activation-link-block');\r\n\tif (renewActivationLinkMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'renew activation link block',\r\n\t\t})\r\n\t\tapp.use(store);\r\n\t\tapp.component('renew-activation-link-block', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"renew-activation-link-block\" */ 'shared/components/HcpProfileBlocks/renewActivationLinkBlock.vue')\r\n\t\t));\r\n\t\tapp.mount(renewActivationLinkMount);\r\n\t}\r\n\r\n\tconst renewActivationLinkSuccessMount = document.getElementById('renew-activation-link-success-block');\r\n\tif (renewActivationLinkSuccessMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'renew activation link success block',\r\n\t\t})\r\n\t\tapp.use(store);\r\n\t\tapp.component('renew-activation-link-success-block', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"renew-activation-link-success-block\" */ 'shared/components/HcpProfileBlocks/renewActivationLinkSuccessBlock.vue')\r\n\t\t));\r\n\t\tapp.mount(renewActivationLinkSuccessMount);\r\n\t}\r\n\r\n\tconst HCPSignUpBlockMount = document.getElementById('hcp-signup-block');\r\n\tif (HCPSignUpBlockMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'hcp signup block',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.config.globalProperties.$eventBus = eventBus;\r\n\t\tapp.component('hcp-signup-block', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"hcp-signup-block\" */ 'shared/components/HcpProfileBlocks/hcpSignUpBlock.vue')\r\n\t\t));\r\n\t\tapp.mount(HCPSignUpBlockMount);\r\n\t}\r\n\r\n\tconst HCPLoginBlockMount = document.querySelectorAll('.hcp-login-block');\r\n\tif (HCPLoginBlockMount) {\r\n\t\tHCPLoginBlockMount.forEach(HCPLoginBlockMountEl => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'hcp login block',\r\n\t\t\t});\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.component('hcp-login-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"hcp-login-block\" */ 'shared/components/HcpProfileBlocks/hcpLoginBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(HCPLoginBlockMountEl);\r\n\t\t});\r\n\t}\r\n\r\n\tconst HCPCompleteSignUpPageMount = document.getElementById('hcp-complete-signup-page');\r\n\tif (HCPCompleteSignUpPageMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'hcp complete sign up page mount',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('hcp-complete-signup-page', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"hcp-complete-signup-page\" */ 'shared/components/HcpProfileBlocks/hcpCompleteSignUpPage.vue')\r\n\t\t));\r\n\t\tapp.mount(HCPCompleteSignUpPageMount);\r\n\t}\r\n\r\n\tconst HCPAccountSubscriptionsBlockMountArray = [...document.querySelectorAll('.hcp-account-subscription-block')];\r\n\tif (HCPAccountSubscriptionsBlockMountArray.length) {\r\n\t\tHCPAccountSubscriptionsBlockMountArray.forEach((subscription) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'hcp account subscription block',\r\n\t\t\t});\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.component('hcp-account-subscription-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"hcp-account-subscription-block\" */ 'shared/components/HcpProfilePage/hcpAccountSubscriptionsBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(subscription);\r\n\t\t});\r\n\t}\r\n\r\n\tconst coursesBlockMount = document.getElementById('courses-block');\r\n\tif (coursesBlockMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: ' elearning courses block',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('elearning-courses-block', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"elearning-courses-block\" */ 'shared/components/ElearningBlock/coursesBlock.vue')\r\n\t\t));\r\n\t\tapp.mount(coursesBlockMount)\r\n\t}\r\n\r\n\tconst videoPosterMountArray = [...document.querySelectorAll('[data-video-poster]')];\r\n\tif (videoPosterMountArray.length) {\r\n\t\tvideoPosterMountArray.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'video poster',\r\n\t\t\t});\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.component('video-poster', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"video-poster\" */ 'shared/components/VideoElements/videoPoster.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst miniBasketCountMounts = document.querySelectorAll(\".c-nav-basket\");\r\n\tminiBasketCountMounts.forEach(miniBasketCountMount => {\r\n\t\tif (miniBasketCountMount) {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'mini basket'\r\n\t\t\t});\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.config.globalProperties.$eventBus = eventBus;\r\n\t\t\tapp.component('fly-out-basket-activator', FlyOutBasketActivator);\r\n\t\t\tapp.component('mini-basket-count', MiniBasketCount);\r\n\t\t\tapp.mount(miniBasketCountMount);\r\n\t\t}\r\n\t});\r\n\r\n\tconst globalUtilityMount = document.getElementById('global-utility-mount');\r\n\tif (globalUtilityMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'global utility'\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.use(plugin, defaultConfig({\r\n\t\t\ticons: {\r\n\t\t\t\tcheckboxDecorator: iconCheckmark,\r\n\t\t\t},\r\n\t\t}));\r\n\t\tapp.component('external-links-popup', ExternalLinksPopup);\r\n\t\tapp.component('modal-dialog', ModalDialog);\r\n\t\tapp.component('basket-nav-tracker', BasketNavTracker);\r\n\t\tapp.component('form-post-tracker', FormPostTracker);\r\n\t\tapp.component('login-tracker', LoginTracker);\r\n\t\tapp.component('quick-sample-tracker', QuickSampleTracker);\r\n\t\tapp.component('spinner', Spinner);\r\n\t\tapp.component('phone-field', PhoneField);\r\n\t\tapp.component('global-spinner', GlobalSpinner);\r\n\t\tapp.component('login-expired-modal', LoginExpiredModal);\r\n\t\tapp.component('navigate-to-gated-sub-site-modal', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/navigateToGatedSubSiteModal/navigateToGatedSubSiteModal.vue')\r\n\t\t));\r\n\t\tapp.mount(globalUtilityMount);\r\n\t}\r\n\r\n\tconst basketFormMount = document.getElementById('basket-form');\r\n\tif (basketFormMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'sample checkout form',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('phone-field', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/phoneField.vue')\r\n\t\t));\r\n\t\tapp.component('country-selector-expando', defineAsyncComponent(\r\n\t\t\t() => import('multisite/components/countrySelectorExpando.vue')\r\n\t\t))\r\n\t\tapp.mount(basketFormMount);\r\n\t}\r\n\r\n\tconst basketInteractionTrackerMount = document.getElementById('basket-interaction-tracker-mount');\r\n\tif (basketInteractionTrackerMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'basket interaction tracker',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('basket-interaction-tracker', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/trackers/basketInteractionTracker.vue')\r\n\t\t));\r\n\t\tapp.mount(basketInteractionTrackerMount);\r\n\t}\r\n\r\n\tconst sampleFormProductsMount = document.getElementById('sample-form-products');\r\n\tif (sampleFormProductsMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'sample from products',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('sample-form-products', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"sample-form-products\" */ 'shared/components/sampleFormProducts.vue')\r\n\t\t));\r\n\t\tapp.component('remove-from-cart-tracker', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/trackers/removeFromCartTracker.vue')\r\n\t\t));\r\n\t\tapp.mount(sampleFormProductsMount)\r\n\t}\r\n\r\n\tconst sampleProductFormMountArray = [...document.querySelectorAll('.js-order-sample-block')];\r\n\tif (sampleProductFormMountArray.length) {\r\n\t\tsampleProductFormMountArray.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'sample product form',\r\n\t\t\t});\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.component('sample-product-form', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"sample-product-form\" */ 'shared/components/sampleProductForm.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst consumerSignupModalMount = document.getElementById('consumer-signup-modal-mount');\r\n\tif (consumerSignupModalMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'consumer sign up modal',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('consumer-signup-modal', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"consumer-signup-modal\" */ 'shared/components/consumerSignup/consumerSignupModal.vue')\r\n\t\t));\r\n\t\tapp.mount(consumerSignupModalMount);\r\n\t}\r\n\r\n\tconst consumerSignupInfoModalMount = document.getElementById('info-message-modal-mount');\r\n\tif (consumerSignupInfoModalMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'info message modal',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('info-message-modal', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"info-message-modal\" */ 'shared/components/infoMessageModal.vue')\r\n\t\t));\r\n\t\tapp.mount(consumerSignupInfoModalMount);\r\n\t}\r\n\r\n\tconst globalSearchNav = document.getElementById('global-search-nav');\r\n\tif (globalSearchNav) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'global search nav',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('global-search-nav', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"global-search-nav\" */ 'shared/components/globalSearch/globalSearchNav.vue')\r\n\t\t));\r\n\t\tapp.mount(globalSearchNav);\r\n\t}\r\n\r\n\tconst globalSearchPopup = document.getElementById('global-search-popup');\r\n\tif (globalSearchPopup) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'global search popup',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\r\n\t\tapp.component('global-search-popup', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"global-search-popup\" */ 'shared/components/globalSearch/globalSearchPopup.vue')\r\n\t\t));\r\n\t\tapp.mount(globalSearchPopup);\r\n\t}\r\n\r\n\tconst globalSearchPage = document.getElementById('global-search-page');\r\n\tif (globalSearchPage) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'global search page',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('global-search-page', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"global-search-page\" */ 'shared/components/globalSearch/globalSearchPage.vue')\r\n\t\t));\r\n\t\tapp.mount(globalSearchPage);\r\n\t}\r\n\r\n\tconst globalSearchArticlesResultPage = document.getElementById('global-search-article-page');\r\n\tif (globalSearchArticlesResultPage) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'global search article page',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('global-search-article-page', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"global-search-article-page\" */ 'shared/components/globalSearch/globalSearchArticlesResultPage.vue')\r\n\t\t));\r\n\t\tapp.mount(globalSearchArticlesResultPage);\r\n\t}\r\n\r\n\tconst globalSearchProductsResultPage = document.getElementById('global-search-product-page');\r\n\tif (globalSearchProductsResultPage) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'global search product page',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('global-search-product-page', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"global-search-product-page\" */ 'shared/components/globalSearch/globalSearchProductsResultPage.vue')\r\n\t\t));\r\n\t\tapp.mount(globalSearchProductsResultPage);\r\n\t}\r\n\r\n\tconst hcpMedicalSpecialityGatePage = document.getElementById('speciality-gate-page');\r\n\tif (hcpMedicalSpecialityGatePage) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'medical speciality gate page',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('medical-speciality-gate-page', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/HcpMedicalSpecialityGatePage.vue')\r\n\t\t));\r\n\t\tapp.mount(hcpMedicalSpecialityGatePage);\r\n\t}\r\n\r\n\tconst contentLibrary = document.getElementById('content-library');\r\n\tif (contentLibrary) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'content library',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('content-library', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"content-library\" */ 'shared/components/contentLibrary/contentLibrary.vue')\r\n\t\t));\r\n\t\tapp.mount(contentLibrary);\r\n\t}\r\n\r\n\tconst carouselLibraries = document.querySelectorAll('.carousel-library');\r\n\tif (carouselLibraries) {\r\n\t\tcarouselLibraries.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'carousel libraries'\r\n\t\t\t});\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.component('carousel-library', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"carousel-library\" */ 'shared/components/contentLibrary/carouselLibraryBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(item);\r\n\t\t})\r\n\t}\r\n\r\n\tconst multiLevelMenu = document.getElementById('multi-level-menu');\r\n\tif (multiLevelMenu) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'multi level menu',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('multi-level-menu', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"multi-level-menu\" */ 'shared/components/MultiLevelMenu/multiLevelMenu.vue')\r\n\t\t));\r\n\t\tapp.mount(multiLevelMenu);\r\n\t}\r\n\r\n\tconst podcastPlayers = [...document.querySelectorAll('[data-podcast-player]')];\r\n\tif (podcastPlayers) {\r\n\t\tpodcastPlayers.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'podcast player block',\r\n\t\t\t});\r\n\t\t\tapp.component('podcast-player-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"podcast-player-block\" */ 'shared/components/podcastPlayerBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst productCateogryCarousels = document.querySelectorAll('.product-category-carousel-mount');\r\n\tif (productCateogryCarousels) {\r\n\t\tproductCateogryCarousels.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'product category carousel',\r\n\t\t\t});\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.component('product-category-carousel', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"multisite-product-category-carousel\" */ 'multisite/components/minishop/productCategoryCarousel.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(item);\r\n\t\t})\r\n\t}\r\n\r\n\tconst ctaHeroBanner = document.getElementById('cta-hero-banner');\r\n\tif (ctaHeroBanner) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'cta hero banner',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('cta-hero-banner', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"cta-hero-banner\" */ 'shared/components/ctaHeroBanner.vue')\r\n\t\t));\r\n\t\tapp.component('send-campaign-id-cta-button', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/actionButtonWithCTA/SendCampaignIdCtaButton.vue')\r\n\t\t));\r\n\t\tapp.component('cta-button-with-popup-form', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/actionButtonWithCTA/CtaButtonWithPopupForm.vue')\r\n\t\t));\r\n\t\tapp.component('form-kit-builder-container', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/FormKitBuilderContainer/FormKitBuilderContainer.vue')\r\n\t\t));\r\n\t\tinitFormKitSchema(app);\r\n\t\tapp.mount(ctaHeroBanner);\r\n\t}\r\n\r\n\tconst contentGate = document.getElementById('content-gate');\r\n\tif (contentGate) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'content gate',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('content-gate', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"content-gate\" */ 'shared/components/contentLibrary/contentGate.vue')\r\n\t\t));\r\n\t\tapp.component('hcp-login-block', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"hcp-login-block\" */ 'shared/components/HcpProfileBlocks/hcpLoginBlock.vue')\r\n\t\t));\r\n\t\tapp.mount(contentGate);\r\n\t}\r\n\r\n\tconst contentGateButtons = [...document.querySelectorAll('[data-content-gate-button]')];\r\n\tif (contentGateButtons) {\r\n\t\tcontentGateButtons.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'content gate button',\r\n\t\t\t});\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.component('content-gate-button', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"content-gate-button\" */ 'shared/components/contentLibrary/contentGateButton.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst contentRecommended = [...document.querySelectorAll('[data-content-recommended]')];\r\n\tif (contentRecommended) {\r\n\t\tcontentRecommended.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'content recommended block',\r\n\t\t\t});\r\n\t\t\tapp.component('content-recommended-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"content-recommended-block\" */ 'shared/components/contentLibrary/contentRecommendedBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst contentInfoCard = document.getElementById('content-info-card');\r\n\tif (contentInfoCard) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'content info card',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('content-info-card', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"content-info-card\" */ 'shared/components/contentLibrary/contentInfoCard.vue')\r\n\t\t));\r\n\t\tapp.component('send-campaign-id-cta-button', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/actionButtonWithCTA/SendCampaignIdCtaButton.vue')\r\n\t\t));\r\n\t\tapp.component('cta-button-with-popup-form', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/actionButtonWithCTA/CtaButtonWithPopupForm.vue')\r\n\t\t));\r\n\t\tapp.component('form-kit-builder-container', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/FormKitBuilderContainer/FormKitBuilderContainer.vue')\r\n\t\t));\r\n\t\tinitFormKitSchema(app);\r\n\t\tapp.mount(contentInfoCard);\r\n\t}\r\n\r\n\tconst contentAlternativeDate = document.getElementById('content-alternative-date');\r\n\tif (contentAlternativeDate) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'content alternative date',\r\n\t\t});\r\n\t\tapp.component('content-alternative-date', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"content-alternative-date\" */ 'shared/components/contentLibrary/contentAlternativeDate.vue')\r\n\t\t));\r\n\t\tapp.mount(contentAlternativeDate);\r\n\t}\r\n\r\n\tconst utiRiskFactorModel = document.getElementById('uti-risk-factor-model');\r\n\tif (utiRiskFactorModel) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'uti risk factor model',\r\n\t\t});\r\n\t\tapp.component('uti-risk-factor-model', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"uti-risk-factor-model\" */ 'shared/components/UTIRiskFactorModel/utiRiskFactorModel.vue')\r\n\t\t));\r\n\t\tapp.mount(utiRiskFactorModel);\r\n\t}\r\n\r\n\r\n\tconst breadcrumbMount = document.getElementById('breadcrumb');\r\n\tif (breadcrumbMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'breadcrumb mount', // if the app is called breadcrumb like the component the app will crash with a call stack exceeded error\r\n\t\t});\r\n\t\tapp.component('breadcrumb', Breadcrumb);\r\n\t\tapp.mount(breadcrumbMount);\r\n\t}\r\n\r\n\tconst heyloCheckout = document.getElementById('heylo-checkout');\r\n\tif (heyloCheckout) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'heylo checkout',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('heylo-checkout', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"heylo-checkout\" */ 'multisite/components/heylo/checkout/checkout.vue')\r\n\t\t));\r\n\t\tapp.mount(heyloCheckout);\r\n\t}\r\n\r\n\tconst heyloTool = document.getElementById('heylo-tool');\r\n\tif (heyloTool) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'heylo tool',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('heylo-tool', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"heylo-tool\" */ 'shared/components/heyloTool/heyloTool.vue')\r\n\t\t));\r\n\t\tapp.mount(heyloTool);\r\n\t}\r\n\r\n\tconst mediaBannerMount = document.getElementById('media-banner');\r\n\tif (mediaBannerMount) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'media banner',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('media-banner', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"media-banner\" */ 'shared/components/mediaBannerBlock/mediaBannerBlock.vue')\r\n\t\t));\r\n\t\tapp.mount(mediaBannerMount);\r\n\t}\r\n\r\n\tconst healthCheckTool = document.getElementById('health-check-tool');\r\n\tif (healthCheckTool) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'health check tool',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('health-check-tool', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"health-check-tool\" */ 'shared/components/healthCheckTool/healthCheckTool.vue')\r\n\t\t));\r\n\t\tapp.component('checkout-modal-login', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"checkout-modal-login\" */ 'multisite/components/checkout/checkoutModalLogin.vue')\r\n\t\t));\r\n\t\tapp.component('references-list', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"references-list\" */ 'shared/components/ReferencesList.vue')\r\n\t\t));\r\n\t\tapp.component(\r\n\t\t\t'form-kit-builder-container',\r\n\t\t\tdefineAsyncComponent(() => import('shared/components/FormKitBuilderContainer/FormKitBuilderContainer.vue'))\r\n\t\t);\r\n\t\tinitFormKitSchema(app);\r\n\t\tapp.mount(healthCheckTool);\r\n\t}\r\n\r\n\tconst ctaBlocks = [...document.querySelectorAll('[data-cta-block]')];\r\n\tif (ctaBlocks) {\r\n\t\tctaBlocks.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'cta block',\r\n\t\t\t});\r\n\t\t\tapp.component('cta-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"cta-block\" */ 'shared/components/articleElements/ctaBlock.vue')\r\n\t\t\t));\r\n\r\n\t\t\tapp.component('cta-button-with-popup-form', defineAsyncComponent(\r\n\t\t\t\t() => import('shared/components/actionButtonWithCTA/CtaButtonWithPopupForm.vue')\r\n\t\t\t));\r\n\t\t\tapp.component('form-kit-builder-container', defineAsyncComponent(\r\n\t\t\t\t() => import('shared/components/FormKitBuilderContainer/FormKitBuilderContainer.vue')\r\n\t\t\t));\r\n\t\t\tinitFormKitSchema(app);\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst subNavigationBlock = [...document.querySelectorAll('[data-sub-navigation]')];\r\n\tif (subNavigationBlock) {\r\n\t\tsubNavigationBlock.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'sub navigation block',\r\n\t\t\t});\r\n\t\t\tapp.component('sub-navigation-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"sub-navigation-block\" */ 'shared/components/articleElements/subNavigationBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst documentSearchComponent = document.getElementById(\"document-search\");\r\n\tif (documentSearchComponent) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'document search',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('document-search', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"document-search\" */ 'shared/components/documentSearch/documentSearch.vue')\r\n\t\t));\r\n\t\tapp.mount(documentSearchComponent);\r\n\t}\r\n\r\n\tconst factsBoxBlock = [...document.querySelectorAll('[data-fact-block]')];\r\n\tif (factsBoxBlock) {\r\n\t\tfactsBoxBlock.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'fact box block',\r\n\t\t\t});\r\n\t\t\tapp.component('fact-box-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"fact-box-block\" */ 'shared/components/articleElements/factBoxBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst videoCarouselBlocks = [...document.querySelectorAll('[data-video-carousel-block]')];\r\n\tif (videoCarouselBlocks) {\r\n\t\tvideoCarouselBlocks.forEach(videoCarouselBlock => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'video carousel block',\r\n\t\t\t});\r\n\t\t\tapp.component('video-carousel-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"video-carousel-block\" */ 'shared/components/VideoCarouselBlock/VideoCarouselBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.component('video-button-play', defineAsyncComponent(\r\n\t\t\t\t() => import('shared/components/VideoCarouselBlock/VideoButtonPlay.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(videoCarouselBlock);\r\n\t\t});\r\n\t}\r\n\r\n\tconst relatedContentBlock = [...document.querySelectorAll('[data-related-content]')];\r\n\tif (relatedContentBlock) {\r\n\t\trelatedContentBlock.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'related content block',\r\n\t\t\t});\r\n\t\t\tapp.component('related-content-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"related-content-block\" */ 'shared/components/contentLibrary/relatedContentBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst productHighlightsBlock = document.getElementById('product-highlights-block');\r\n\tif (productHighlightsBlock) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'product highlights block',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('product-highlights-block', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"product-highlights-block\" */ 'shared/components/ProductHighlights/ProductHighlightsBlock.vue')\r\n\t\t));\r\n\t\tapp.mount(productHighlightsBlock);\r\n\t}\r\n\r\n\tconst highlightedMultimediaBlocks = [...document.querySelectorAll('[data-highlighted-multimedia]')];\r\n\tif (highlightedMultimediaBlocks) {\r\n\t\thighlightedMultimediaBlocks.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'highlighted multimedia block',\r\n\t\t\t});\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.component('highlighted-multimedia-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"highlighted-multimedia-block\" */ 'shared/components/mediaItems/HighlightedMultimediaBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.component('video-poster', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"video-poster\" */ 'shared/components/VideoElements/videoPoster.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst practitionersGuideOverview = document.getElementById('practitioners-guide-overview');\r\n\tif (practitionersGuideOverview) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'practitioners guide overview',\r\n\t\t});\r\n\t\tapp.component('practitioners-guide-overview', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"practitioners-guide-overview\" */ 'shared/components/PractitionersGuide/PractitionersGuideOverview.vue')\r\n\t\t));\r\n\t\tapp.mount(practitionersGuideOverview);\r\n\t}\r\n\r\n\tconst ctaButtomWithFormKits = [...document.querySelectorAll('[data-cta-button-formkit]')];\r\n\tif (ctaButtomWithFormKits) {\r\n\t\tctaButtomWithFormKits.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'cta button with formkit form',\r\n\t\t\t});\r\n\t\t\tapp.component('cta-button-with-popup-form', defineAsyncComponent(\r\n\t\t\t\t() => import('shared/components/actionButtonWithCTA/CtaButtonWithPopupForm.vue')\r\n\t\t\t));\r\n\t\t\tapp.component('form-kit-builder-container', defineAsyncComponent(\r\n\t\t\t\t() => import('shared/components/FormKitBuilderContainer/FormKitBuilderContainer.vue')\r\n\t\t\t));\r\n\t\t\tinitFormKitSchema(app);\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst zoomInModalButtons = [...document.querySelectorAll('[data-zoom-in-modal-button]')];\r\n\tif (zoomInModalButtons) {\r\n\t\tzoomInModalButtons.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'zoom in modal button',\r\n\t\t\t});\r\n\t\t\tapp.component('zoom-in-modal-button', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"zoom-in-modal-button\" */ 'shared/components/mediaItems/ZoomInModalButton.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst uploadCuttingProfile = [...document.querySelectorAll('[data-upload-cutting-template-mount]')];\r\n\tif (uploadCuttingProfile) {\r\n\t\tuploadCuttingProfile.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'upload cutting profile',\r\n\t\t\t});\r\n\t\t\tapp.component('upload-cutting-template', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"upload-cutting-template\" */ 'shared/components/cuttingTemplates/uploadCuttingTemplate.vue')\r\n\t\t\t));\r\n\t\t\tapp.use(plugin, defaultConfig);\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst simpleCardsWithCta = document.querySelectorAll('.simple-cards-with-cta');\r\n\tif (simpleCardsWithCta) {\r\n\t\tsimpleCardsWithCta.forEach(simpleCardsWithCtaEl => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'simple cards with cta',\r\n\t\t\t});\r\n\t\t\tapp.component('simple-cards-with-cta', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"simple-cards-with-cta\" */ 'shared/components/simpleCardsWithCta/simpleCardsWithCta.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(simpleCardsWithCtaEl);\r\n\t\t});\r\n\t}\r\n\r\n\tconst globalModal = document.getElementById('modal-mount');\r\n\tif (globalModal) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'global modal app'\r\n\t\t});\r\n\t\tapp.component('modal', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"modal\" */ 'shared/components/modal/modal.vue')\r\n\t\t));\r\n\t\tapp.use(store);\r\n\t\tapp.mount(globalModal)\r\n\t}\r\n\r\n\tconst referencesListArray = [...document.querySelectorAll('[data-references-list]')];\r\n\tif (referencesListArray.length) {\r\n\t\treferencesListArray.forEach((item) => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: 'references list',\r\n\t\t\t});\r\n\t\t\tapp.component('references-list', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"references-list\" */ 'shared/components/ReferencesList.vue')\r\n\t\t\t));\r\n\t\t\tapp.mount(item);\r\n\t\t});\r\n\t}\r\n\r\n\tconst formkitBuilderContainerApps = [...document.querySelectorAll('[data-form-builder-block]')];\r\n\tformkitBuilderContainerApps.forEach((appContainer, index) => {\r\n\t\tconst app = createApp({\r\n\t\t\tname: `form-builder-block-${index}`,\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('form-builder-block', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/formBuilderBlock/FormBuilderBlock.vue')\r\n\t\t));\r\n\t\tapp.component('form-kit-builder-container', defineAsyncComponent(\r\n\t\t\t() => import('shared/components/FormKitBuilderContainer/FormKitBuilderContainer.vue')\r\n\t\t));\r\n\t\tinitFormKitSchema(app);\r\n\t\tapp.mount(appContainer);\r\n\t});\r\n}\r\n\r\nexport function initCheckoutFlow() {\r\n\tconst formEl = document.querySelector(\"[data-checkout-item]\");\r\n\tif (formEl) {\r\n\t\tconst app = createApp({\r\n\t\t\tname: 'checkout item',\r\n\t\t});\r\n\t\tapp.use(store);\r\n\t\tapp.component('prescription-upload-block', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"prescription-upload-block\" */ 'multisite/components/formElements/checkoutPrescriptionBlocks/checkoutPrescriptionUploadBlock.vue')\r\n\t\t));\r\n\t\tapp.component('checkout-modal-login', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"checkout-modal-login\" */ 'multisite/components/checkout/checkoutModalLogin.vue')\r\n\t\t));\r\n\t\tapp.component('checkout-submitted-summary', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"checkout-submitted-summary\" */ 'multisite/components/checkout/checkoutSubmittedSummary.vue')\r\n\t\t));\r\n\t\tapp.component('order-quote-confirm', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"order-quote-confirm\" */ 'multisite/components/checkout/orderQuoteConfirm.vue')\r\n\t\t));\r\n\t\tapp.component('progress-bar', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"progress-bar\" */ 'shared/components/progressBar/progressBar.vue')\r\n\t\t));\r\n\t\tapp.component('delivery-cart', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"delivery-cart\" */ '/Features/GlobalCheckout/SharedComponents/deliveryCart.vue')\r\n\t\t));\r\n\t\tapp.component('hcp-checkout-summary', defineAsyncComponent(\r\n\t\t\t() => import(/* webpackChunkName: \"hcp-checkout-summary\" */ 'multisite/components/checkout/HcpCheckoutSummary.vue')\r\n\t\t));\r\n\t\tinitFormKitSchema(app);\r\n\t\tapp.mount(formEl);\r\n\t}\r\n}\r\n\r\nfunction initCmsContentBlocks() {\r\n\tconst elements = document.querySelectorAll(\"[data-cms-content-block]\");\r\n\tif (elements.length) {\r\n\t\telements.forEach(element => {\r\n\t\t\tconst app = createApp({\r\n\t\t\t\tname: element.dataset.blockName,\r\n\t\t\t});\r\n\t\t\tapp.component('hyperlink-navigation-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"hyperlink-navigation-block\" */ 'multisite/components/cmsContentBlocks/hyperlinkNavigationBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.component('sticky-cta-button-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"sticky-cta-button-block\" */ 'multisite/components/cmsContentBlocks/stickyCtaButtonBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.component('card-slider-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"card-slider-block\" */ 'multisite/components/cmsContentBlocks/cardSlider/cardSliderBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.component('icon-text-list-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"icon-text-list-block\" */ 'multisite/components/cmsContentBlocks/iconTextListBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.component('campaign-cta-button-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"campaign-cta-button-block\" */ 'multisite/components/cmsContentBlocks/campaignCtaButtonBlock.vue')\r\n\t\t\t));\r\n\t\t\tapp.component('general-link-block', defineAsyncComponent(\r\n\t\t\t\t() => import(/* webpackChunkName: \"general-link-block\" */ 'multisite/components/cmsContentBlocks/generalLink.vue')\r\n\t\t\t));\r\n\t\t\tapp.use(store);\r\n\t\t\tapp.mount(element);\r\n\t\t});\r\n\t}\r\n}\r\n\r\ninitGlobalAxios();\r\ninitGlobalSettingsApp();\r\ninitVueApps();\r\ninitCheckoutFlow();\r\ninitCmsContentBlocks();\r\n\r\nboot();\r\ninitPostbackScrollPosition();\r\nieNotification.init();\r\ninitHeylo();\r\n\r\n\r\n/**\r\n *\r\n * @deprecated is to be deprecated in the future due to the updated version of the navigation (Feature 81078)\r\n * However, to preserve the correct working of the \"preserving the selected items state\" for the \"onboarding reordering module\",\r\n * the similar functionality should be implemented in the new navigation.\r\n * Without that, the selection would not be \"reset\" after the user logs out and the initial state of the selection\r\n * won't be visible after repeated log-in\r\n *\r\n * Please refer to \"productsBlock.vue\" and \"productsBlock.utils.ts\" for more details.\r\n *\r\n * When removed, please remove the references from the \"_HeaderMultisite.cshtml\"\r\n */\r\nwindow.onLogout = (e) => {\r\n\te.preventDefault()\r\n\r\n\t/**\r\n\t * Removal of the selected items state\r\n\t * @ref productsBlock.utils.ts\r\n\t */\r\n\tconst storage = storageFactory(window.sessionStorage);\r\n\tstorage.removeItem('cp-customer-products-selection');\r\n\r\n\tlocation.assign(e.currentTarget.href)\r\n}\r\n"],"file":"main-pj3c7yX6.js"}