{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/defaults/transitional.js","webpack:///./node_modules/axios/lib/helpers/formDataToJSON.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/env/data.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./frontend/src/utils/mailcheck.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/axios/lib/env/classes/FormData.js","webpack:///./node_modules/form-data/lib/browser.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack:///./node_modules/axios/lib/platform/browser/index.js","webpack:///./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack:///./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/parseProtocol.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./frontend/components/email-suggestion/email-suggestion.js","webpack:///./frontend/components/cookies/cookies.js","webpack:///./frontend/components/flashes/flashes.js","webpack:///./frontend/components/navbar/navbar.js","webpack:///./frontend/components/facebook-connect/facebook-connect.js","webpack:///./node_modules/axios/lib/core/AxiosError.js","webpack:///./node_modules/vanilla-lazyload/dist/lazyload.min.js","webpack:///./node_modules/scrolldir/dist/scrolldir.es.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/axios/lib/helpers/toFormData.js","webpack:///./node_modules/axios/lib/cancel/CanceledError.js","webpack:///./frontend/init/setupCSRFToken.js","webpack:///./frontend/init/out.js","webpack:///./frontend/init/setupRedirects.js","webpack:///./frontend/components/faq-vote/faq-vote.js","webpack:///./frontend/components/form/form.js","webpack:///./frontend/components/iphone/iphone.js","webpack:///./frontend/components/stores/stores.js","webpack:///./node_modules/tiny-slider/src/helpers/raf.js","webpack:///./node_modules/tiny-slider/src/helpers/caf.js","webpack:///./node_modules/tiny-slider/src/helpers/extend.js","webpack:///./node_modules/tiny-slider/src/helpers/checkStorageValue.js","webpack:///./node_modules/tiny-slider/src/helpers/setLocalStorage.js","webpack:///./node_modules/tiny-slider/src/helpers/getBody.js","webpack:///./node_modules/tiny-slider/src/helpers/docElement.js","webpack:///./node_modules/tiny-slider/src/helpers/setFakeBody.js","webpack:///./node_modules/tiny-slider/src/helpers/resetFakeBody.js","webpack:///./node_modules/tiny-slider/src/helpers/addCSSRule.js","webpack:///./node_modules/tiny-slider/src/helpers/getCssRulesLength.js","webpack:///./node_modules/tiny-slider/src/helpers/forEach.js","webpack:///./node_modules/tiny-slider/src/helpers/classListSupport.js","webpack:///./node_modules/tiny-slider/src/helpers/hasClass.js","webpack:///./node_modules/tiny-slider/src/helpers/addClass.js","webpack:///./node_modules/tiny-slider/src/helpers/removeClass.js","webpack:///./node_modules/tiny-slider/src/helpers/hasAttr.js","webpack:///./node_modules/tiny-slider/src/helpers/getAttr.js","webpack:///./node_modules/tiny-slider/src/helpers/isNodeList.js","webpack:///./node_modules/tiny-slider/src/helpers/setAttrs.js","webpack:///./node_modules/tiny-slider/src/helpers/removeAttrs.js","webpack:///./node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","webpack:///./node_modules/tiny-slider/src/helpers/hideElement.js","webpack:///./node_modules/tiny-slider/src/helpers/showElement.js","webpack:///./node_modules/tiny-slider/src/helpers/isVisible.js","webpack:///./node_modules/tiny-slider/src/helpers/whichProperty.js","webpack:///./node_modules/tiny-slider/src/helpers/getEndProperty.js","webpack:///./node_modules/tiny-slider/src/helpers/passiveOption.js","webpack:///./node_modules/tiny-slider/src/helpers/addEvents.js","webpack:///./node_modules/tiny-slider/src/helpers/removeEvents.js","webpack:///./node_modules/tiny-slider/src/helpers/events.js","webpack:///./node_modules/tiny-slider/src/tiny-slider.js","webpack:///./frontend/components/testimonials/testimonials.js","webpack:///./node_modules/tiny-slider/src/helpers/calc.js","webpack:///./node_modules/tiny-slider/src/helpers/percentageLayout.js","webpack:///./node_modules/tiny-slider/src/helpers/mediaquerySupport.js","webpack:///./node_modules/tiny-slider/src/helpers/has3DTransforms.js","webpack:///./node_modules/tiny-slider/src/helpers/getSlideId.js","webpack:///./node_modules/tiny-slider/src/helpers/createStyleSheet.js","webpack:///./node_modules/tiny-slider/src/helpers/jsTransform.js","webpack:///./node_modules/tiny-slider/src/helpers/removeCSSRule.js","webpack:///./node_modules/tiny-slider/src/helpers/toDegree.js","webpack:///./node_modules/tiny-slider/src/helpers/getTouchDirection.js","webpack:///./node_modules/axios/lib/defaults/index.js","webpack:///./node_modules/axios/lib/platform/index.js","webpack:///./node_modules/bootstrap.native/dist/bootstrap-native.js","webpack:///./frontend/src/utils/validations.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","fn","thisArg","apply","arguments","utils","AxiosURLSearchParams","encode","val","encodeURIComponent","replace","url","params","options","hashmarkIndex","indexOf","slice","serializedParams","_encode","serializeFn","serialize","isURLSearchParams","toString","toFormData","str","charMap","match","this","_pairs","append","push","encoder","map","pair","join","headers","normalizedName","forEach","toUpperCase","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","formData","buildPath","path","target","index","isNumericKey","Number","isFinite","isLast","length","isArray","isObject","arr","obj","keys","len","arrayToObject","isFormData","isFunction","entries","forEachEntry","matchAll","parsePropPath","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","platform","config","Promise","resolve","reject","onCanceled","requestData","data","requestHeaders","responseType","withXSRFToken","done","cancelToken","unsubscribe","signal","removeEventListener","isStandardBrowserEnv","request","XMLHttpRequest","auth","username","password","unescape","Authorization","btoa","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","err","open","method","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","ETIMEDOUT","xsrfValue","xsrfHeaderName","xsrfCookieName","read","toLowerCase","setRequestHeader","isUndefined","withCredentials","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","type","abort","subscribe","aborted","protocol","protocols","ERR_BAD_REQUEST","send","isAbsoluteURL","combineURLs","requestedURL","__CANCEL__","config1","config2","getMergedValue","source","isPlainObject","merge","isEmptyObject","mergeDeepProperties","prop","undefined","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","concat","configValue","_typeof","iterator","constructor","cache","kindOf","thing","kindOfTest","Array","isArrayBuffer","isNumber","getPrototypeOf","isDate","isFile","isBlob","isFileList","TypedArray","isTypedArray","Uint8Array","_hasOwnProperty","isHTMLForm","isBuffer","pattern","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isStream","pipe","product","navigator","window","document","result","assignValue","extend","a","b","trim","stripBOM","content","charCodeAt","inherits","superConstructor","props","descriptors","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","getOwnPropertyNames","endsWith","searchString","position","String","lastIndex","toArray","next","regExp","matches","exec","Mailcheck","domainThreshold","secondLevelThreshold","topLevelThreshold","defaultDomains","defaultSecondLevelDomains","defaultTopLevelDomains","run","opts","domains","secondLevelDomains","topLevelDomains","distanceFunction","sift4Distance","defaultCallback","suggestedCallback","suggested","emptyCallback","empty","suggest","encodeEmail","email","inputEmail","emailParts","splitEmail","secondLevelDomain","topLevelDomain","closestDomain","findClosestDomain","domain","address","full","closestSecondLevelDomain","closestTopLevelDomain","rtrn","RegExp","dist","threshold","minDist","Infinity","s1","s2","maxOffset","l1","l2","c1","c2","lcss","localCs","trans","offsetArr","charAt","isTrans","ofs","Math","abs","splice","min","j","round","max","parts","split","pop","domainParts","sld","tld","substring","encodeURI","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","e","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","array","noop","nextTick","args","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","Axios","mergeConfig","defaults","formDataToJSON","axios","createInstance","defaultConfig","context","instance","instanceConfig","CancelToken","isCancel","VERSION","Cancel","all","promises","spread","isAxiosError","formToJSON","default","InterceptorManager","dispatchRequest","validator","validators","interceptors","configOrUrl","assertOptions","boolean","function","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","promise","responseInterceptorChain","chain","then","shift","newConfig","onFulfilled","onRejected","error","getUri","generateHTTPMethod","isForm","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","__proto__","arg","encodingOrOffset","allocUnsafe","from","TypeError","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","fromString","checked","copy","fromObject","assertSize","size","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","isNaN","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","offset","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","typedArraySupport","poolSize","_augment","species","configurable","fill","allocUnsafeSlow","_isBuffer","compare","x","y","list","pos","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","toJSON","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","code","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","src","dst","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","num","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","log","LN2","self","handlers","use","eject","id","clear","h","transformData","normalizeHeaderName","throwIfCancellationRequested","throwIfRequested","transformRequest","common","adapter","transformResponse","reason","fns","classes","URLSearchParams","visitor","helpers","isNode","defaultVisitor","isBrowser","Blob","validateStatus","ERR_BAD_RESPONSE","expires","secure","cookie","Date","toGMTString","decodeURIComponent","remove","now","test","relativeURL","ignoreDuplicateOf","line","originURL","msie","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","host","search","hash","hostname","port","pathname","location","requestURL","deprecatedWarnings","message","formatMessage","opt","desc","ERR_DEPRECATED","console","warn","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","executor","resolvePromise","token","_listeners","onfulfilled","_resolve","listener","callback","payload","emailSuggestion","getElementById","hideSuggestion","classList","contains","add","checkEmail","parentDiv","handleOnClickSuggestion","mailcheck","suggestion","suggestionBtn","suggestionDomain","suggestionAddress","textContent","addEmailSuggestion","closeButtons","querySelectorAll","button","parentNode","scrollDir","js","fjs","fbConnect","signingUp","querySelector","gon","app_env","signingIn","preventClick","preventDefault","fbAsyncInit","FB","init","appId","FB_APP_ID","xfbml","loginToFacebook","login","authResponse","post","gtag","event_category","event_label","authenticateUser","scope","return_scopes","getElementsByTagName","insertBefore","captureStackTrace","stack","description","number","fileName","lineNumber","columnNumber","defineProperties","customProps","axiosError","cause","devicePixelRatio","elements_selector","container","thresholds","data_src","data_srcset","data_sizes","data_bg","data_bg_hidpi","data_bg_multi","data_bg_multi_hidpi","data_poster","class_applied","class_loading","class_loaded","class_error","class_entered","class_exited","unobserve_completed","unobserve_entered","cancel_on_exit","callback_enter","callback_exit","callback_applied","callback_loading","callback_loaded","callback_error","callback_finish","callback_cancel","use_native","u","CustomEvent","detail","createEvent","initCustomEvent","dispatchEvent","f","_","g","v","I","getAttribute","A","removeAttribute","k","L","w","O","N","className","C","M","llTempImage","z","_observer","unobserve","R","loadingCount","T","toLoadCount","G","children","tagName","D","V","F","P","S","U","$","q","H","B","J","K","Q","IMG","IFRAME","VIDEO","load","W","X","Y","llEvLisnrs","Z","nn","tn","en","rn","backgroundImage","style","an","cn","un","ln","dn","HTMLImageElement","gn","vn","bn","pn","hn","_settings","IntersectionObserver","isIntersecting","intersectionRatio","_n","root","rootMargin","update","disconnect","observe","loadAll","destroy","restoreAll","sn","resetStatus","lazyLoadOptions","pivot","attribute","thresholdPixels","el","documentElement","win","body","history","pivotTime","tick","scrollY","pageYOffset","timeStamp","furthest","yMax","scrollHeight","innerHeight","cutoffTime","handler","event","requestAnimationFrame","Function","envFormData","isVisitable","removeBrackets","renderKey","dots","predicates","metaTokens","indexes","option","useBlob","convertValue","toISOString","JSON","stringify","some","isFlatArray","exposedHelpers","build","ERR_CANCELED","tokenDom","csrfToken","setupCSRFToken","link","dataset","redirectUrl","lazyLoadInstance","LazyLoad","votesButtons","thanksCallback","getElementsByClassName","section","thanks","appendChild","createTextNode","signUpForm","signInForm","invitationForm","resetPasswordForm","updatePasswordForm","faqsSearchForm","resendInstrucForm","formEmail","formPassword","formPasswordConfirm","formPasswordToken","formInvitationToken","formCheckbox","emailIsValid","isEmail","passwordIsValid","cguChecked","updatePasswordFormIsValid","accepted_cookies","fbq","content_name","video","audioControl","muted","iosLinks","androidLinks","raf","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","caf","cancelAnimationFrame","mozCancelAnimationFrame","checkStorageValue","parse","setLocalStorage","storage","access","setItem","getBody","doc","fake","docElement","setFakeBody","docOverflow","overflow","background","resetFakeBody","offsetHeight","addCSSRule","sheet","selector","rules","insertRule","addRule","getCssRulesLength","cssRules","classListSupport","hasClass","addClass","removeClass","hasAttr","attr","hasAttribute","getAttr","isNodeList","item","setAttrs","els","attrs","removeAttrs","attrLength","arrayFromNodeList","nl","hideElement","forceHide","display","showElement","isVisible","getComputedStyle","whichProperty","Props","prefix","getEndProperty","propIn","propOut","endProp","supportsPassive","passiveOption","passive","addEvents","preventScrolling","removeEvents","Events","topics","eventName","Element","removeChild","tns","axis","items","gutter","edgePadding","fixedWidth","autoWidth","viewportMax","slideBy","center","controls","controlsPosition","controlsText","controlsContainer","prevButton","nextButton","nav","navPosition","navContainer","navAsThumbnails","arrowKeys","speed","autoplay","autoplayPosition","autoplayTimeout","autoplayDirection","autoplayText","autoplayHoverPause","autoplayButton","autoplayButtonOutput","autoplayResetOnVisibility","animateIn","animateOut","animateNormal","animateDelay","loop","rewind","autoHeight","responsive","lazyload","lazyloadSelector","touch","mouseDrag","swipeAngle","nested","preventActionWhenRunning","preventScrollOnTouch","freezable","onInit","useLocalStorage","nonce","KEYS","ENTER","SPACE","LEFT","RIGHT","tnsStorage","localStorageAccess","browserInfo","uid","localStorage","getItem","removeItem","CALC","div","vals","width","offsetWidth","calc","PERCENTAGELAYOUT","supported","wrapper","outer","innerHTML","getBoundingClientRect","left","count","percentageLayout","CSSMQ","matchMedia","msMatchMedia","rule","styleSheet","cssText","currentStyle","mediaquerySupport","TRANSFORM","HAS3DTRANSFORMS","tf","has3d","cssTF","getPropertyValue","has3DTransforms","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","tnsList","optionsElements","nodeName","carousel","responsiveTem","updateOptions","middleWrapper","breakpointZone","horizontal","outerWrapper","innerWrapper","containerParent","containerHTML","outerHTML","slideItems","slideCount","windowWidth","getWindowWidth","isOn","setBreakpointZone","slidePositions","imgsComplete","liveregionCurrent","itemsMax","media","getOption","viewport","getViewportWidth","fixedWidthViewportWidth","slideItemsOut","cloneCount","bp","tem","ceil","getItemsMax","hasOption","slideCountNew","hasRightDeadZone","rightBoundary","getRightBoundary","updateIndexBeforeTransform","transformAttr","transformPrefix","transformPostfix","getIndexMax","getStartIndex","indexCached","indexMin","getCurrentSlide","indexMax","moveDirectionExpected","running","events","newContainerClasses","slideId","tnsId","disable","disabled","freeze","getFreeze","frozen","controlsEvents","onControlsClick","getEvent","keyIndex","keyCode","navEvents","onTransitionEnd","getTarget","navIndex","navClicked","targetIndexBase","pages","goTo","navCurrentIndex","animating","stopAutoplay","curElement","activeElement","setFocus","navItems","hoverEvents","stopAutoplayTimer","autoplayHoverPaused","setAutoplayTimer","visibilityEvent","hidden","autoplayVisibilityPaused","docmentKeydownEvent","touchEvents","onPanStart","onPanMove","onPanEnd","dragEvents","hasControls","hasNav","hasAutoplay","hasTouch","hasMouseDrag","slideActiveClass","slideClonedClass","imgCompleteClass","imgEvents","imgLoaded","img","imgCompleted","preventScroll","prevIsButton","nextIsButton","controlsContainerHTML","prevButtonHTML","nextButtonHTML","navContainerHTML","getPages","pagesCached","getCurrentNavIndex","navCurrentIndexCached","navActiveClass","navStr","navStrCurrent","autoplayTimer","autoplayUserPaused","autoplayButtonHTML","autoplayHtmlStrings","translateInit","rafIndex","initPosition","lastPosition","panStart","getDist","resetVariblesWhenDisable","fragmentBefore","createDocumentFragment","fragmentAfter","cloneFirst","cloneNode","firstChild","cloneLast","initStructure","fontSize","slide","marginLeft","getSlideMarginLeft","getTransitionDurationStyle","getInnerWrapperStyles","getContainerWidth","getSlideWidthStyle","getSlideGutterStyle","getAnimationDurationStyle","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","autoHeightBP","gutterBP","initSheet","initSliderTransform","updateIndex","leftEdge","rightEdge","transformCore","element","postfix","to","duration","unit","positionTick","resetDuration","doContainerTransform","getContainerTransformValue","moveElement","updateContentWrapperHeight","eve","animateSlide","getInfo","info","play","startAutoplay","pause","updateSliderHeight","updateInnerWrapperHeight","refresh","ownerNode","onResize","toggleAutoplay","clearInterval","htmlList","prevEl","previousElementSibling","parentEl","nextElementSibling","firstElementChild","rebuild","condition","ind","getAbsIndex","absIndex","innerWidth","clientWidth","getInsertPosition","getClientWidth","rect","right","gap","ww","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","gutterTemUnit","itemsTem","dividend","getCSSPrefix","imgs","imgsLoadedCheck","getImageArray","initSliderTransformStyleCheck","doContainerTransformSilent","initTools","initEvents","stylesApplicationCheck","initSliderTransformCore","setSlidePositions","updateSlideStatus","insertAdjacentHTML","getLiveRegionStr","txt","navHtml","hiddenStr","updateNavVisibility","isButton","updateControlsStatus","disableUI","resizeTasks","doAutoHeight","doLazyLoad","disableSlider","freezeSlider","additionalUpdates","bpChanged","breakpointZoneTem","needContainerTransform","indChanged","itemsChanged","disableTem","freezeTem","arrowKeysTem","controlsTem","navTem","touchTem","mouseDragTem","autoplayTem","autoplayHoverPauseTem","autoplayResetOnVisibilityTem","indexTem","autoHeightTem","controlsTextTem","centerTem","autoplayTextTem","classN","enableUI","enableSlider","margin","unfreezeSlider","height","html","updateLiveRegion","updateGallerySlidePositions","deleteRule","removeRule","removeCSSRule","vp","getVisibleSlideRange","rangestart","rangeend","parseFloat","point","cell","stopPropagation","srcset","imgSelector","complete","navPrev","navCurrent","updateNavStatus","getMaxSlideHeight","slideStart","slideRange","heights","maxHeight","wp","attr2","base","range","getLowerCaseNodeName","isAriaDisabled","disEnableElement","prevDisabled","nextDisabled","disablePrev","disableNext","getCenterGap","denominator","classOut","classIn","isOut","render","sliderMoved","strTrans","propertyName","targetIndex","indexGap","factor","passEventObject","targetIn","setInterval","updateAutoplayButton","action","focus","isTouchEvent","changedTouches","srcElement","preventDefaultBehavior","returnValue","getMoveDirectionExpected","angle","atan2","PI","direction","clientX","clientY","panUpdate","cancelable","indexMoved","moved","rough","displayIndex","toURLEncodedForm","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","contentType","hasJSONContentType","isObjectPayload","formSerializer","_FormData","rawValue","parser","stringifySafely","JSONRequested","strictJSONParsing","maxContentLength","maxBodyLength","globalObject","DOC","HTML","BSN","supports","dataToggle","dataDismiss","dataSpy","dataRide","stringAffix","stringAlert","stringButton","stringCarousel","stringCollapse","stringDropdown","stringModal","stringPopover","stringScrollSpy","stringTab","stringTooltip","databackdrop","dataKeyboard","dataTarget","dataInterval","dataHeight","dataPause","dataTitle","dataOriginalTitle","dataOriginalText","dataDismissible","dataTrigger","dataAnimation","dataContainer","dataPlacement","dataDelay","dataOffsetTop","dataOffsetBottom","backdrop","keyboard","delay","currentTarget","interval","animation","placement","offsetTop","offsetBottom","offsetLeft","scrollTop","scrollLeft","clientHeight","ariaExpanded","ariaHidden","clickEvent","focusEvent","hoverEvent","keydownEvent","keyupEvent","resizeEvent","scrollEvent","mouseHover","move","showEvent","shownEvent","hideEvent","hiddenEvent","closeEvent","closedEvent","slidEvent","slideEvent","changeEvent","getElementsByCLASSNAME","Transition","Duration","Webkit","tabindex","active","inClass","collapsing","loading","top","bottom","isIE8","tipPositions","modalOverlay","fixedTop","fixedBottom","supportTransitions","transitionEndEvent","transitionDuration","setActive","classNAME","nodeListToArray","nodeList","childItems","nll","queryElement","parent","lookUp","getClosest","firstChar","selectorSubstring","one","handlerWrapper","passiveHandler","getTransitionDurationFromElement","emulateTransitionEnd","called","bootstrapCustomEvent","componentName","related","OriginalCustomEvent","relatedTarget","getScroll","pageXOffset","styleTip","topPosition","leftPosition","arrowTop","arrowLeft","elementDimensions","windowHeight","scroll","linkDimensions","arrow","halfTopExceed","halfLeftExceed","halfRightExceed","halfBottomExceed","topExceed","leftExceed","bottomExceed","rightExceed","Affix","targetData","offsetTopData","offsetBottomData","affix","affixed","affixTop","affixedTop","affixBottom","affixedBottom","pinOffsetTop","pinOffsetBottom","maxScroll","pinnedTop","pinnedBottom","affixedToTop","affixedToBottom","getMaxScroll","getOffsetTop","getOffsetBottom","checkPosition","pinTop","unPinTop","pinBottom","unPinBottom","updatePin","Alert","component","alert","triggerHandler","transitionEndHandler","clickHandler","close","Button","toggled","reset","LABEL","INPUT","setState","resetState","keyHandler","which","toggle","label","labels","input","screenX","screenY","ll","otherLabel","otherInput","labelsToACtivate","lbll","Carousel","intervalAttribute","intervalOption","intervalData","pauseData","keyboardData","paused","dataSlideTo","timer","isSliding","isTouch","startXPosition","currentXPosition","endXPosition","slides","total","slideDirection","leftArrow","rightArrow","indicator","indicators","pauseHandler","resumeHandler","cycle","indicatorHandler","eventTarget","slideTo","controlsHandler","toggleTouchEvents","touchMoveHandler","touchEndHandler","touchDownHandler","touches","pageX","isElementInScrollRange","viewportHeight","setActivePage","pageIndex","icl","orientation","activeItem","getActiveIndex","elapsedTime","Collapse","activeCollapse","accordion","collapse","accordionData","collapsed","isAnimating","openAction","collapseElement","closeAction","hide","show","Dropdown","persist","menu","menuItems","newSet","preventEmptyAnchor","anchor","toggleDismiss","dismissHandler","hasData","idx","isSameElement","isInsideMenu","isMenuItem","Modal","staticString","modalTrigger","paddingRight","modalBackdropString","btnCheck","checkModal","modal","bodyIsOverflowing","scrollBarWidth","overlay","overlayDelay","modalTimer","fixedItems","htmlRect","setScrollbar","itemPad","bodyStyle","bodyPad","resetScrollbar","measureScrollbar","widthValue","scrollDiv","checkScrollbar","createOverlay","newOverlay","removeOverlay","triggerShow","triggerHide","clickTarget","currentOpen","setContent","Popover","triggerData","animationData","placementData","dismissibleData","delayData","containerData","template","trigger","classString","fade","dataContent","dismissible","closeBtn","containerElement","containerDataElement","navbarFixedTop","navbarFixedBottom","titleString","contentString","popover","placementSetting","dismissibleHandler","removePopover","createPopover","popoverTitle","popoverArrow","popoverContent","popoverTemplate","showPopover","updatePopover","dismissHandlerToggle","showTrigger","hideTrigger","ScrollSpy","offsetData","scrollOffset","spyTarget","links","targetItems","scrollTarget","isWindow","il","targetItem","updateItem","dropdown","targetRect","isActive","topEdge","bottomEdge","inside","updateItems","itl","Tab","heightData","float","activeTab","activeContent","nextContent","containerHeight","equalContents","nextHeight","tabs","tabsContentContainer","triggerEnd","getActiveTab","activeTabs","getActiveContent","Tooltip","tooltip","removeToolTip","createToolTip","tooltipArrow","tooltipInner","updateTooltip","showTooltip","initializeDataAPI","collection","initCallback"],"mappings":"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","file":"js/out-744f491f9824abe3129d.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 745);\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n};","'use strict';\n\nvar utils = require('../utils');\n\nvar AxiosURLSearchParams = require('../helpers/AxiosURLSearchParams');\n\nfunction encode(val) {\n return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n}\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n * @returns {string} The formatted url\n */\n\n\nmodule.exports = function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n var _encode = options && options.encode || encode;\n\n var serializeFn = options && options.serialize;\n var serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};","'use strict';\n\nvar toFormData = require('./toFormData');\n\nfunction encode(str) {\n var charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'\\(\\)~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n params && toFormData(params, this, options);\n}\n\nvar prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n var _encode = encoder ? function (value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nmodule.exports = AxiosURLSearchParams;","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};","'use strict';\n\nvar utils = require('../utils');\n\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(function (match) {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\nfunction arrayToObject(arr) {\n var obj = {};\n var keys = Object.keys(arr);\n var i;\n var len = keys.length;\n var key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n\n return obj;\n}\n\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n var name = path[index++];\n var isNumericKey = Number.isFinite(+name);\n var isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProperty(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n var result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n var obj = {};\n utils.forEachEntry(formData, function (name, value) {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n return obj;\n }\n\n return null;\n}\n\nmodule.exports = formDataToJSON;","'use strict';\n\nvar utils = require('./../utils');\n\nvar settle = require('./../core/settle');\n\nvar cookies = require('./../helpers/cookies');\n\nvar buildURL = require('./../helpers/buildURL');\n\nvar buildFullPath = require('../core/buildFullPath');\n\nvar parseHeaders = require('./../helpers/parseHeaders');\n\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\n\nvar transitionalDefaults = require('../defaults/transitional');\n\nvar AxiosError = require('../core/AxiosError');\n\nvar CanceledError = require('../cancel/CanceledError');\n\nvar parseProtocol = require('../helpers/parseProtocol');\n\nvar platform = require('../platform');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var withXSRFToken = config.withXSRFToken;\n var onCanceled;\n\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest(); // HTTP basic authentication\n\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); // Set the request timeout in MS\n\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n } // Prepare the response\n\n\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response); // Clean up request\n\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n } // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n\n\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n } // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n\n\n setTimeout(onloadend);\n };\n } // Handle browser request cancellation (as opposed to a manual cancellation)\n\n\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); // Clean up request\n\n request = null;\n }; // Handle low level network errors\n\n\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); // Clean up request\n\n request = null;\n }; // Handle timeout\n\n\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n\n reject(new AxiosError(timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, request)); // Clean up request\n\n request = null;\n }; // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(fullPath)) {\n // Add xsrf header\n var xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n } // Add headers to the request\n\n\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n } // Add withCredentials to request if needed\n\n\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n } // Add responseType to request if needed\n\n\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n } // Handle progress if needed\n\n\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n } // Not all browsers support upload events\n\n\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n } // false, 0 (zero number), and '' (empty string) are valid JSON values\n\n\n if (!requestData && requestData !== false && requestData !== 0 && requestData !== '') {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n } // Send the request\n\n\n request.send(requestData);\n });\n};","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\n\nvar combineURLs = require('../helpers/combineURLs');\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\n\n\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n\n return requestedURL;\n};","module.exports = require('./lib/axios');","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};","'use strict';\n\nvar utils = require('../utils');\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\n\n\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isEmptyObject(source)) {\n return utils.merge({}, target);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n\n return source;\n } // eslint-disable-next-line consistent-return\n\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n } // eslint-disable-next-line consistent-return\n\n\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n } // eslint-disable-next-line consistent-return\n\n\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n } // eslint-disable-next-line consistent-return\n\n\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'withXSRFToken': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n utils.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue);\n });\n return config;\n};","module.exports = {\n \"version\": \"0.28.1\"\n};","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar bind = require('./helpers/bind'); // utils is a library of generic helper functions non-specific to axios\n\n\nvar toString = Object.prototype.toString; // eslint-disable-next-line func-names\n\nvar kindOf = function (cache) {\n // eslint-disable-next-line func-names\n return function (thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n}(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\n\n\nfunction isArray(val) {\n return Array.isArray(val);\n}\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\n\n\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\n\n\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\n\n\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\n\nfunction isArrayBufferView(val) {\n var result;\n\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n\n return result;\n}\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\n\n\nfunction isString(val) {\n return typeof val === 'string';\n}\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\n\n\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\n\n\nfunction isObject(val) {\n return val !== null && _typeof(val) === 'object';\n}\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\n\n\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n/**\n * Determine if a value is a empty Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a empty Object, otherwise false\n */\n\n\nfunction isEmptyObject(val) {\n return val && Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n}\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\n\n\nvar isDate = kindOfTest('Date');\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\n\nvar isFile = kindOfTest('File');\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\n\nvar isBlob = kindOfTest('Blob');\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\n\nvar isFileList = kindOfTest('FileList');\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\n\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\n\n\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\n\n\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (typeof FormData === 'function' && thing instanceof FormData || toString.call(thing) === pattern || isFunction(thing.toString) && thing.toString() === pattern);\n}\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\n\n\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\n\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n}\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\n\n\nfunction isStandardBrowserEnv() {\n var product;\n\n if (typeof navigator !== 'undefined' && ((product = navigator.product) === 'ReactNative' || product === 'NativeScript' || product === 'NS')) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\n\n\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n } // Force an array if not already something iterable\n\n\n if (_typeof(obj) !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\n\n\nfunction merge() {\n var result = {};\n\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n\n return result;\n}\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\n\n\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\n\n\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n\n return content;\n}\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n * @returns {Object}\n */\n\n\nfunction toFlatObject(sourceObj, destObj, filter, propFilter) {\n var props;\n var i;\n var prop;\n var merged = {};\n destObj = destObj || {}; // eslint-disable-next-line no-eq-null,eqeqeq\n\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n\n while (i-- > 0) {\n prop = props[i];\n\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n\n sourceObj = filter !== false && Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\n\n\nfunction endsWith(str, searchString, position) {\n str = String(str);\n\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n/**\n * Returns new array from array like object or null if failed\n * @param {*} [thing]\n * @returns {?Array}\n */\n\n\nfunction toArray(thing) {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n var i = thing.length;\n if (!isNumber(i)) return null;\n var arr = new Array(i);\n\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n\n return arr;\n} // eslint-disable-next-line func-names\n\n\nvar isTypedArray = function (TypedArray) {\n // eslint-disable-next-line func-names\n return function (thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n}(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nfunction forEachEntry(obj, fn) {\n var generator = obj && obj[Symbol.iterator];\n var iterator = generator.call(obj);\n var result;\n\n while ((result = iterator.next()) && !result.done) {\n var pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\nfunction matchAll(regExp, str) {\n var matches;\n var arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\nvar isHTMLForm = kindOfTest('HTMLFormElement');\n\nvar hasOwnProperty = function resolver(_hasOwnProperty) {\n return function (obj, prop) {\n return _hasOwnProperty.call(obj, prop);\n };\n}(Object.prototype.hasOwnProperty);\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isEmptyObject: isEmptyObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList,\n forEachEntry: forEachEntry,\n matchAll: matchAll,\n isHTMLForm: isHTMLForm,\n hasOwnProperty: hasOwnProperty\n};","/*\n * Mailcheck https://github.com/mailcheck/mailcheck\n * Author\n * Derrick Ko (@derrickko)\n *\n * Released under the MIT License.\n *\n * Imported from upstream v1.1.2 on 04/2019, with :\n * - linting corrections\n * - domains app specific\n * - domainThreshold 2 => 3 to catch gmail.fr => gmail.com suggestion\n */\n\nconst Mailcheck = {\n domainThreshold: 3,\n secondLevelThreshold: 2,\n topLevelThreshold: 2,\n\n // lists generated from 21 000 confirmed accounts on 11/2020\n // This matches ~95% of accounts.\n defaultDomains: [\n 'aliceadsl.fr',\n 'aol.com',\n 'bbox.fr',\n 'bluewin.ch',\n 'cegetel.net',\n 'club-internet.fr',\n 'free.fr',\n 'gmail.com',\n 'icloud.com',\n 'imparato.io',\n 'laposte.net',\n 'mac.com',\n 'me.com',\n 'msn.com',\n 'netcourrier.com',\n 'neuf.fr',\n 'numericable.fr',\n 'numericable.com',\n 'orange.fr',\n 'sfr.fr',\n 'skynet.be',\n 'videotron.ca',\n 'wanadoo.fr',\n 'yandex.com',\n 'ymail.com',\n 'yopmail.com',\n ],\n\n // removed \"mail\" from upstream config, otherwise this wouldn't catch (g)mail.com errors\n defaultSecondLevelDomains: ['yahoo', 'hotmail', 'live', 'outlook', 'gmx'],\n\n // order matters\n defaultTopLevelDomains: [\n 'com',\n 'fr',\n 'net',\n 'ch',\n 'be',\n 'ca',\n 'org',\n 'qc.ca',\n 'eu',\n 'edu',\n 'de',\n 'it',\n ],\n\n /* eslint no-param-reassign: [\"error\", { \"props\": false }] */\n run(opts) {\n opts.domains = opts.domains || Mailcheck.defaultDomains;\n opts.secondLevelDomains =\n opts.secondLevelDomains || Mailcheck.defaultSecondLevelDomains;\n opts.topLevelDomains =\n opts.topLevelDomains || Mailcheck.defaultTopLevelDomains;\n opts.distanceFunction = opts.distanceFunction || Mailcheck.sift4Distance;\n\n const defaultCallback = (result) => result;\n const suggestedCallback = opts.suggested || defaultCallback;\n const emptyCallback = opts.empty || defaultCallback;\n\n const result = Mailcheck.suggest(\n Mailcheck.encodeEmail(opts.email),\n opts.domains,\n opts.secondLevelDomains,\n opts.topLevelDomains,\n opts.distanceFunction\n );\n\n return result ? suggestedCallback(result) : emptyCallback();\n },\n\n suggest(\n inputEmail,\n domains,\n secondLevelDomains,\n topLevelDomains,\n distanceFunction\n ) {\n const email = inputEmail.toLowerCase().trim();\n\n const emailParts = this.splitEmail(email);\n\n if (secondLevelDomains && topLevelDomains) {\n // If the email is a valid 2nd-level + top-level, do not suggest anything.\n if (\n secondLevelDomains.indexOf(emailParts.secondLevelDomain) !== -1 &&\n topLevelDomains.indexOf(emailParts.topLevelDomain) !== -1\n ) {\n return false;\n }\n }\n\n let closestDomain = this.findClosestDomain(\n emailParts.domain,\n domains,\n distanceFunction,\n this.domainThreshold\n );\n\n if (closestDomain) {\n if (closestDomain === emailParts.domain) {\n // The email address exactly matches one of the supplied domains; do not return a suggestion.\n return false;\n }\n // The email address closely matches one of the supplied domains; return a suggestion\n return {\n address: emailParts.address,\n domain: closestDomain,\n full: `${emailParts.address}@${closestDomain}`,\n };\n }\n\n // The email address does not closely match one of the supplied domains\n const closestSecondLevelDomain = this.findClosestDomain(\n emailParts.secondLevelDomain,\n secondLevelDomains,\n distanceFunction,\n this.secondLevelThreshold\n );\n const closestTopLevelDomain = this.findClosestDomain(\n emailParts.topLevelDomain,\n topLevelDomains,\n distanceFunction,\n this.topLevelThreshold\n );\n\n if (emailParts.domain) {\n closestDomain = emailParts.domain;\n let rtrn = false;\n\n if (\n closestSecondLevelDomain &&\n closestSecondLevelDomain !== emailParts.secondLevelDomain\n ) {\n // The email address may have a mispelled second-level domain; return a suggestion\n closestDomain = closestDomain.replace(\n emailParts.secondLevelDomain,\n closestSecondLevelDomain\n );\n rtrn = true;\n }\n\n if (\n closestTopLevelDomain &&\n closestTopLevelDomain !== emailParts.topLevelDomain &&\n emailParts.secondLevelDomain !== ''\n ) {\n // The email address may have a mispelled top-level domain; return a suggestion\n closestDomain = closestDomain.replace(\n new RegExp(`${emailParts.topLevelDomain}$`),\n closestTopLevelDomain\n );\n rtrn = true;\n }\n\n if (rtrn) {\n return {\n address: emailParts.address,\n domain: closestDomain,\n full: `${emailParts.address}@${closestDomain}`,\n };\n }\n }\n\n /* The email address exactly matches one of the supplied domains, does not closely\n * match any domain and does not appear to simply have a mispelled top-level domain,\n * or is an invalid email address; do not return a suggestion.\n */\n return false;\n },\n\n findClosestDomain(\n domain,\n domains,\n distanceFunction = this.sift4Distance,\n threshold = this.topLevelThreshold\n ) {\n let dist;\n let minDist = Infinity;\n let closestDomain = null;\n\n if (!domain || !domains) {\n return false;\n }\n\n for (let i = 0; i < domains.length; i += 1) {\n if (domain === domains[i]) {\n return domain;\n }\n dist = distanceFunction(domain, domains[i]);\n if (dist < minDist) {\n minDist = dist;\n closestDomain = domains[i];\n }\n }\n\n if (minDist <= threshold && closestDomain !== null) {\n return closestDomain;\n }\n return false;\n },\n\n sift4Distance(s1, s2, maxOffset = 5) {\n // sift4: https://siderite.blogspot.com/2014/11/super-fast-and-accurate-string-distance.html\n\n if (!s1 || !s1.length) {\n if (!s2) {\n return 0;\n }\n return s2.length;\n }\n\n if (!s2 || !s2.length) {\n return s1.length;\n }\n\n const l1 = s1.length;\n const l2 = s2.length;\n\n let c1 = 0; // cursor for string 1\n let c2 = 0; // cursor for string 2\n let lcss = 0; // largest common subsequence\n let localCs = 0; // local common substring\n let trans = 0; // number of transpositions ('ab' vs 'ba')\n const offsetArr = []; // offset pair array, for computing the transpositions\n\n while (c1 < l1 && c2 < l2) {\n if (s1.charAt(c1) === s2.charAt(c2)) {\n localCs += 1;\n let isTrans = false;\n // see if current match is a transposition\n let i = 0;\n while (i < offsetArr.length) {\n const ofs = offsetArr[i];\n if (c1 <= ofs.c1 || c2 <= ofs.c2) {\n // when two matches cross, the one considered a transposition is the one with the largest difference in offsets\n isTrans = Math.abs(c2 - c1) >= Math.abs(ofs.c2 - ofs.c1);\n if (isTrans) {\n trans += 1;\n } else if (!ofs.trans) {\n ofs.trans = true;\n trans += 1;\n }\n break;\n } else if (c1 > ofs.c2 && c2 > ofs.c1) {\n offsetArr.splice(i, 1);\n } else {\n i += 1;\n }\n }\n offsetArr.push({\n c1,\n c2,\n trans: isTrans,\n });\n } else {\n lcss += localCs;\n localCs = 0;\n if (c1 !== c2) {\n c1 = Math.min(c1, c2); // using min allows the computation of transpositions\n c2 = c1;\n }\n // if matching characters are found, remove 1 from both cursors (they get incremented at the end of the loop)\n // so that we can have only one code block handling matches\n for (let j = 0; j < maxOffset && (c1 + j < l1 || c2 + j < l2); j += 1) {\n if (c1 + j < l1 && s1.charAt(c1 + j) === s2.charAt(c2)) {\n c1 += j - 1;\n c2 -= 1;\n break;\n }\n if (c2 + j < l2 && s1.charAt(c1) === s2.charAt(c2 + j)) {\n c1 -= 1;\n c2 += j - 1;\n break;\n }\n }\n }\n c1 += 1;\n c2 += 1;\n // this covers the case where the last match is on the last token in list, so that it can compute transpositions correctly\n if (c1 >= l1 || c2 >= l2) {\n lcss += localCs;\n localCs = 0;\n c1 = Math.min(c1, c2);\n c2 = c1;\n }\n }\n lcss += localCs;\n return Math.round(Math.max(l1, l2) - lcss + trans); // add the cost of transpositions to the final result\n },\n\n splitEmail(email) {\n const parts = email.split('@');\n\n if (parts.length < 2) {\n return false;\n }\n\n for (let i = 0; i < parts.length; i += 1) {\n if (parts[i] === '') {\n return false;\n }\n }\n\n const domain = parts.pop();\n const domainParts = domain.split('.');\n let sld = '';\n let tld = '';\n\n if (domainParts.length === 0) {\n // The address does not have a top-level domain\n return false;\n }\n if (domainParts.length === 1) {\n // The address has only a top-level domain (valid under RFC)\n [tld] = domainParts;\n } else {\n // The address has a domain and a top-level domain\n [sld] = domainParts;\n for (let j = 1; j < domainParts.length; j += 1) {\n tld += `${domainParts[j]}.`;\n }\n tld = tld.substring(0, tld.length - 1);\n }\n\n return {\n topLevelDomain: tld,\n secondLevelDomain: sld,\n domain,\n address: parts.join('@'),\n };\n },\n\n // Encode the email address to prevent XSS but leave in valid\n // characters, following this official spec:\n // http://en.wikipedia.org/wiki/Email_address#Syntax\n encodeEmail(email) {\n let result = encodeURI(email);\n result = result\n .replace('%20', ' ')\n .replace('%25', '%')\n .replace('%5E', '^')\n .replace('%60', '`')\n .replace('%7B', '{')\n .replace('%7C', '|')\n .replace('%7D', '}');\n return result;\n },\n};\n\nexport default Mailcheck;\n","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","'use strict';\n\nvar utils = require('./utils');\n\nvar bind = require('./helpers/bind');\n\nvar Axios = require('./core/Axios');\n\nvar mergeConfig = require('./core/mergeConfig');\n\nvar defaults = require('./defaults');\n\nvar formDataToJSON = require('./helpers/formDataToJSON');\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\n\n\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context); // Copy axios.prototype to instance\n\n utils.extend(instance, Axios.prototype, context); // Copy context to instance\n\n utils.extend(instance, context); // Factory for creating new instances\n\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n} // Create the default instance to be exported\n\n\nvar axios = createInstance(defaults); // Expose Axios class to allow class inheritance\n\naxios.Axios = Axios; // Expose Cancel & CancelToken\n\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData'); // Expose AxiosError class\n\naxios.AxiosError = require('../lib/core/AxiosError'); // alias for CanceledError for backward compatibility\n\naxios.Cancel = axios.CanceledError; // Expose all/spread\n\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = require('./helpers/spread'); // Expose isAxiosError\n\naxios.isAxiosError = require('./helpers/isAxiosError');\n\naxios.formToJSON = function (thing) {\n return formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n};\n\nmodule.exports = axios; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = axios;","'use strict';\n\nvar utils = require('./../utils');\n\nvar buildURL = require('../helpers/buildURL');\n\nvar InterceptorManager = require('./InterceptorManager');\n\nvar dispatchRequest = require('./dispatchRequest');\n\nvar mergeConfig = require('./mergeConfig');\n\nvar buildFullPath = require('./buildFullPath');\n\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\n\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n/**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n */\n\n\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config); // Set config.method\n\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n var paramsSerializer = config.paramsSerializer;\n\n if (paramsSerializer !== undefined) {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n\n utils.isFunction(paramsSerializer) && (config.paramsSerializer = {\n serialize: paramsSerializer\n }); // filter out skipped interceptors\n\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n promise = Promise.resolve(config);\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n var newConfig = config;\n\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n}; // Provide aliases for supported request methods\n\n\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\nmodule.exports = Axios;","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n/* eslint-disable no-proto */\n'use strict';\n\nvar base64 = require('base64-js');\n\nvar ieee754 = require('ieee754');\n\nvar isArray = require('isarray');\n\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\n\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n/*\n * Export kMaxLength after typed array support is determined.\n */\n\nexports.kMaxLength = kMaxLength();\n\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function foo() {\n return 42;\n }\n };\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\n\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\n\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n\n that.length = length;\n }\n\n return that;\n}\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n } // Common case.\n\n\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error('If encoding is specified then the first argument must be a string');\n }\n\n return allocUnsafe(this, arg);\n }\n\n return from(this, arg, encodingOrOffset, length);\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n// TODO: Legacy, not needed anymore. Remove in next major version.\n\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\n\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n\n return fromObject(that, value);\n}\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n\n\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n\n if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n });\n }\n}\n\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\n\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(that, size);\n }\n\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n }\n\n return createBuffer(that, size);\n}\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\n\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n\n return that;\n}\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\n\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n\n\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\n\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that;\n}\n\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n\n return that;\n}\n\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n\n return that;\n}\n\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that;\n }\n\n obj.copy(that, 0, 0, len);\n return that;\n }\n\n if (obj) {\n if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n\n return fromArrayLike(that, obj);\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\n\nfunction checked(length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');\n }\n\n return length | 0;\n}\n\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n}\n\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\n\nBuffer.compare = function compare(a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers');\n }\n\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n\n default:\n return false;\n }\n};\n\nBuffer.concat = function concat(list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n var i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n\n return buffer;\n};\n\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0; // Use a for loop to avoid recursion\n\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n\n case 'hex':\n return len >>> 1;\n\n case 'base64':\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\n\nBuffer.byteLength = byteLength;\n\nfunction slowToString(encoding, start, end) {\n var loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return '';\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return '';\n } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return '';\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n\n case 'ascii':\n return asciiSlice(this, start, end);\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n\n case 'base64':\n return base64Slice(this, start, end);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\n\n\nBuffer.prototype._isBuffer = true;\n\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n};\n\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n\n return this;\n};\n\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n\n return this;\n};\n\nBuffer.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\n\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\n\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n\n return '';\n};\n\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer');\n }\n\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\n\n\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n\n byteOffset = +byteOffset; // Coerce to Number.\n\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n } // Normalize val\n\n\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n\n if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError('val must be string, number or Buffer');\n}\n\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n\n var i;\n\n if (dir) {\n var foundIndex = -1;\n\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n\n if (found) return i;\n }\n }\n\n return -1;\n}\n\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\n\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\n\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n } // must be an even number of digits\n\n\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n\n return i;\n}\n\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\n\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\n\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\n\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n } // legacy write(string, encoding, offset, length) - remove in v0.13\n\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\n\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\n\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\n} // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\n\n\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n var res = '';\n var i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n}\n\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n\n return ret;\n}\n\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n}\n\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n\n return out;\n}\n\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n}\n\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n var newBuf;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf;\n};\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\n\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\n\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\n\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\n\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\n\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');\n if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n }\n\n return len;\n}; // Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\n\n\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n\n if (code < 256) {\n val = code;\n }\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n}; // HELPER FUNCTIONS\n// ================\n\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean(str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n\n return str;\n}\n\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\n\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null; // encode utf8\n\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n\n return bytes;\n}\n\nfunction asciiToBytes(str) {\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n\n return byteArray;\n}\n\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray;\n}\n\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\n\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n\n return i;\n}\n\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}","'use strict';\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n} // Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\n\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens(b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4');\n } // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n\n\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n} // base64 is 4/3 + up to two characters of the original data\n\n\nfunction byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars\n\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 0xFF;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n return arr;\n}\n\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n\n return output.join('');\n}\n\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');\n }\n\n return parts.join('');\n}","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = e << mLen | m;\n eLen += mLen;\n\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};","// eslint-disable-next-line strict\nmodule.exports = require('form-data');","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\nmodule.exports = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' ? self.FormData : window.FormData;","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n\n\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\n\n\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n/**\n * Clear all interceptors from the stack\n */\n\n\nInterceptorManager.prototype.clear = function clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n};\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\n\n\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;","'use strict';\n\nvar utils = require('./../utils');\n\nvar transformData = require('./transformData');\n\nvar isCancel = require('../cancel/isCancel');\n\nvar defaults = require('../defaults');\n\nvar CanceledError = require('../cancel/CanceledError');\n\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n\n\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\n\n\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config); // Ensure headers exist\n\n config.headers = config.headers || {}; // Transform request data\n\n config.data = transformData.call(config, config.data, config.headers, null, config.transformRequest);\n normalizeHeaderName(config.headers, 'Accept');\n normalizeHeaderName(config.headers, 'Content-Type'); // Flatten headers\n\n config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers);\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {\n delete config.headers[method];\n });\n var adapter = config.adapter || defaults.adapter;\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config); // Transform response data\n\n response.data = transformData.call(config, response.data, response.headers, response.status, config.transformResponse);\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config); // Transform response data\n\n if (reason && reason.response) {\n reason.response.data = transformData.call(config, reason.response.data, reason.response.headers, reason.response.status, config.transformResponse);\n }\n }\n\n return Promise.reject(reason);\n });\n};","'use strict';\n\nvar utils = require('./../utils');\n\nvar defaults = require('../defaults');\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Number} status HTTP status code\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\n\n\nmodule.exports = function transformData(data, headers, status, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers, status);\n });\n return data;\n};","'use strict';\n\nvar utils = require('../utils');\n\nvar toFormData = require('./toFormData');\n\nvar platform = require('../platform/');\n\nmodule.exports = function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function visitor(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n};","'use strict';\n\nmodule.exports = {\n isBrowser: true,\n classes: {\n URLSearchParams: require('./classes/URLSearchParams'),\n FormData: require('./classes/FormData'),\n Blob: Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};","'use strict';\n\nvar AxiosURLSearchParams = require('../../../helpers/AxiosURLSearchParams');\n\nmodule.exports = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;","'use strict';\n\nmodule.exports = FormData;","'use strict';\n\nvar AxiosError = require('./AxiosError');\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\n\n\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError('Request failed with status code ' + response.status, [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, response.request, response));\n }\n};","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs support document.cookie\nfunction standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return match ? decodeURIComponent(match[3]) : null;\n },\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n}() : // Non standard browser env (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() {\n return null;\n },\n remove: function remove() {}\n };\n}();","'use strict';\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\n\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};","'use strict';\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\n\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n};","'use strict';\n\nvar utils = require('./../utils'); // Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\n\n\nvar ignoreDuplicateOf = ['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent'];\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\n\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) {\n return parsed;\n }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.slice(0, i)).toLowerCase();\n val = utils.trim(line.slice(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n return parsed;\n};","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\nfunction standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href); // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n\n return function isURLSameOrigin(requestURL) {\n var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n };\n}() : // Non standard browser envs (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n}();","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar VERSION = require('../env/data').version;\n\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {}; // eslint-disable-next-line func-names\n\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function (type, i) {\n validators[type] = function validator(thing) {\n return _typeof(thing) === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\nvar deprecatedWarnings = {};\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\n\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n } // eslint-disable-next-line func-names\n\n\n return function (value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), AxiosError.ERR_DEPRECATED);\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true; // eslint-disable-next-line no-console\n\n console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future'));\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (_typeof(options) !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n\n var keys = Object.keys(options);\n var i = keys.length;\n\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n\n continue;\n }\n\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};","'use strict';\n\nvar CanceledError = require('./CanceledError');\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\n\n\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n var token = this; // eslint-disable-next-line func-names\n\n this.promise.then(function (cancel) {\n if (!token._listeners) return;\n var i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n\n token._listeners = null;\n }); // eslint-disable-next-line func-names\n\n this.promise.then = function (onfulfilled) {\n var _resolve; // eslint-disable-next-line func-names\n\n\n var promise = new Promise(function (resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n}\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n\n\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n/**\n * Subscribe to the cancel signal\n */\n\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n/**\n * Unsubscribe from the cancel signal\n */\n\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n\n var index = this._listeners.indexOf(listener);\n\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n\n\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;","'use strict';\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\n\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};","'use strict';\n\nvar utils = require('./../utils');\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\n\n\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && payload.isAxiosError === true;\n};","import mailcheck from '../../src/utils/mailcheck';\nimport './email-suggestion.scss';\n\nconst emailSuggestion = document.getElementById('email-suggestion-container');\n\nfunction hideSuggestion() {\n if (emailSuggestion && !emailSuggestion.classList.contains('hidden')) {\n emailSuggestion.classList.add('hidden');\n }\n}\n\nfunction addEmailSuggestion(suggestion, parentDiv, handleOnClickSuggestion) {\n const suggestionBtn = document.getElementById('email-suggestion');\n const suggestionDomain = document.getElementById('email-suggestion-domain');\n const suggestionAddress = document.getElementById('email-suggestion-address');\n\n if (emailSuggestion && emailSuggestion.classList.contains('hidden')) {\n emailSuggestion.classList.remove('hidden');\n }\n\n if (suggestionBtn) {\n suggestionBtn.addEventListener('click', () => {\n hideSuggestion();\n handleOnClickSuggestion(suggestion.full);\n });\n }\n\n if (suggestionAddress) {\n suggestionAddress.textContent = `${suggestion.address}@`;\n }\n\n if (suggestionDomain) {\n suggestionDomain.textContent = suggestion.domain;\n }\n}\n\nexport function checkEmail(value, parentDiv, handleOnClickSuggestion) {\n mailcheck.run({\n email: value,\n suggested: (suggest) => {\n addEmailSuggestion(suggest, parentDiv, handleOnClickSuggestion);\n },\n empty: () => {\n hideSuggestion();\n },\n });\n}\n","import './cookies.scss';\n","import './flashes.scss';\n\nconst closeButtons = document.querySelectorAll('button[data-dismiss=\"alert\"]');\n\nif (closeButtons.length) {\n closeButtons.forEach((button) =>\n button.addEventListener('click', () =>\n button.parentNode.classList.remove('slide-in')\n )\n );\n}\n","import scrollDir from 'scrolldir';\n\nimport './navbar.scss';\n\nscrollDir({ dir: 'up' });\n","import axios from 'axios';\n\nimport './facebook-connect.scss';\n\nconst fbConnect = document.getElementById('fbConnect');\nconst path = window.location.href;\nconst signingUp =\n document.querySelector('.ga-facebook-signup') && gon.app_env === 'production';\nconst signingIn =\n document.querySelector('.ga-facebook-signin') && gon.app_env === 'production';\n\nconst authenticateUser = (response) => {\n axios\n .post('/users/omniauth/facebook', response)\n .then(() => {\n if (path.includes('settings')) {\n window.location.replace('/users/settings/edit');\n } else {\n window.location.replace('/');\n\n if (signingUp) {\n gtag('event', 'Signed up', {\n event_category: 'Sign up',\n event_label: 'Signed up with Facebook',\n });\n }\n if (signingIn) {\n gtag('event', 'Signed in', {\n event_category: 'Sign in',\n event_label: 'Signed in with Facebook',\n });\n }\n }\n })\n .catch(() => {\n if (path.includes('settings')) {\n window.location.replace('/users/settings/edit');\n } else {\n window.location.replace('/');\n }\n });\n};\n\nconst displayConnectError = () => {\n const flash = document.getElementById('facebookError');\n flash.classList.remove('hidden');\n fbConnect.classList.remove('disabled');\n};\n\nconst preventClick = (e) => e.preventDefault();\n\nconst enableFacebookButton = () => {\n fbConnect.classList.remove('disabled');\n fbConnect.removeEventListener('click', preventClick);\n};\n\nconst disableFacebookButton = () => {\n fbConnect.classList.add('disabled');\n fbConnect.addEventListener('click', preventClick);\n};\n\nif (fbConnect) {\n window.fbAsyncInit = () => {\n FB.init({\n appId: gon.FB_APP_ID,\n cookie: true,\n xfbml: true,\n version: 'v2.8',\n });\n\n const loginToFacebook = () => {\n FB.login(\n (response) => {\n if (response.authResponse && response.status === 'connected') {\n authenticateUser(response);\n } else {\n displayConnectError();\n enableFacebookButton();\n }\n },\n { scope: 'email,public_profile', return_scopes: true }\n );\n };\n\n fbConnect.addEventListener(\n 'click',\n (e) => {\n if (e.target.classList.contains('disabled')) {\n return;\n }\n disableFacebookButton();\n loginToFacebook();\n },\n false\n );\n };\n\n /* eslint-disable */\n (function (d, s, id) {\n var js,\n fjs = d.getElementsByTagName(s)[0];\n if (d.getElementById(id)) return;\n js = d.createElement(s);\n js.id = id;\n js.src = 'https://connect.facebook.net/fr_FR/sdk.js';\n fjs.parentNode.insertBefore(js, fjs);\n })(document, 'script', 'facebook-jssdk');\n /* eslint-enable */\n}\n","'use strict';\n\nvar utils = require('../utils');\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\n\n\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = new Error().stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n['ERR_BAD_OPTION_VALUE', 'ERR_BAD_OPTION', 'ECONNABORTED', 'ETIMEDOUT', 'ERR_NETWORK', 'ERR_FR_TOO_MANY_REDIRECTS', 'ERR_DEPRECATED', 'ERR_BAD_RESPONSE', 'ERR_BAD_REQUEST', 'ERR_CANCELED', 'ERR_NOT_SUPPORT', 'ERR_INVALID_URL' // eslint-disable-next-line func-names\n].forEach(function (code) {\n descriptors[code] = {\n value: code\n };\n});\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {\n value: true\n}); // eslint-disable-next-line func-names\n\nAxiosError.from = function (error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n AxiosError.call(axiosError, error.message, code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n};\n\nmodule.exports = AxiosError;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n!function (n, t) {\n \"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) && \"undefined\" != typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define(t) : (n = \"undefined\" != typeof globalThis ? globalThis : n || self).LazyLoad = t();\n}(this, function () {\n \"use strict\";\n\n function n() {\n return n = Object.assign || function (n) {\n for (var t = 1; t < arguments.length; t++) {\n var e = arguments[t];\n\n for (var i in e) {\n Object.prototype.hasOwnProperty.call(e, i) && (n[i] = e[i]);\n }\n }\n\n return n;\n }, n.apply(this, arguments);\n }\n\n var t = \"undefined\" != typeof window,\n e = t && !(\"onscroll\" in window) || \"undefined\" != typeof navigator && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),\n i = t && \"IntersectionObserver\" in window,\n o = t && \"classList\" in document.createElement(\"p\"),\n a = t && window.devicePixelRatio > 1,\n r = {\n elements_selector: \".lazy\",\n container: e || t ? document : null,\n threshold: 300,\n thresholds: null,\n data_src: \"src\",\n data_srcset: \"srcset\",\n data_sizes: \"sizes\",\n data_bg: \"bg\",\n data_bg_hidpi: \"bg-hidpi\",\n data_bg_multi: \"bg-multi\",\n data_bg_multi_hidpi: \"bg-multi-hidpi\",\n data_poster: \"poster\",\n class_applied: \"applied\",\n class_loading: \"loading\",\n class_loaded: \"loaded\",\n class_error: \"error\",\n class_entered: \"entered\",\n class_exited: \"exited\",\n unobserve_completed: !0,\n unobserve_entered: !1,\n cancel_on_exit: !0,\n callback_enter: null,\n callback_exit: null,\n callback_applied: null,\n callback_loading: null,\n callback_loaded: null,\n callback_error: null,\n callback_finish: null,\n callback_cancel: null,\n use_native: !1\n },\n c = function c(t) {\n return n({}, r, t);\n },\n u = function u(n, t) {\n var e,\n i = \"LazyLoad::Initialized\",\n o = new n(t);\n\n try {\n e = new CustomEvent(i, {\n detail: {\n instance: o\n }\n });\n } catch (n) {\n (e = document.createEvent(\"CustomEvent\")).initCustomEvent(i, !1, !1, {\n instance: o\n });\n }\n\n window.dispatchEvent(e);\n },\n l = \"src\",\n s = \"srcset\",\n f = \"sizes\",\n d = \"poster\",\n _ = \"llOriginalAttrs\",\n g = \"loading\",\n v = \"loaded\",\n b = \"applied\",\n p = \"error\",\n h = \"native\",\n m = \"data-\",\n E = \"ll-status\",\n I = function I(n, t) {\n return n.getAttribute(m + t);\n },\n y = function y(n) {\n return I(n, E);\n },\n A = function A(n, t) {\n return function (n, t, e) {\n var i = \"data-ll-status\";\n null !== e ? n.setAttribute(i, e) : n.removeAttribute(i);\n }(n, 0, t);\n },\n k = function k(n) {\n return A(n, null);\n },\n L = function L(n) {\n return null === y(n);\n },\n w = function w(n) {\n return y(n) === h;\n },\n x = [g, v, b, p],\n O = function O(n, t, e, i) {\n n && (void 0 === i ? void 0 === e ? n(t) : n(t, e) : n(t, e, i));\n },\n N = function N(n, t) {\n o ? n.classList.add(t) : n.className += (n.className ? \" \" : \"\") + t;\n },\n C = function C(n, t) {\n o ? n.classList.remove(t) : n.className = n.className.replace(new RegExp(\"(^|\\\\s+)\" + t + \"(\\\\s+|$)\"), \" \").replace(/^\\s+/, \"\").replace(/\\s+$/, \"\");\n },\n M = function M(n) {\n return n.llTempImage;\n },\n z = function z(n, t) {\n if (t) {\n var e = t._observer;\n e && e.unobserve(n);\n }\n },\n R = function R(n, t) {\n n && (n.loadingCount += t);\n },\n T = function T(n, t) {\n n && (n.toLoadCount = t);\n },\n G = function G(n) {\n for (var t, e = [], i = 0; t = n.children[i]; i += 1) {\n \"SOURCE\" === t.tagName && e.push(t);\n }\n\n return e;\n },\n D = function D(n, t) {\n var e = n.parentNode;\n e && \"PICTURE\" === e.tagName && G(e).forEach(t);\n },\n V = function V(n, t) {\n G(n).forEach(t);\n },\n F = [l],\n j = [l, d],\n P = [l, s, f],\n S = function S(n) {\n return !!n[_];\n },\n U = function U(n) {\n return n[_];\n },\n $ = function $(n) {\n return delete n[_];\n },\n q = function q(n, t) {\n if (!S(n)) {\n var e = {};\n t.forEach(function (t) {\n e[t] = n.getAttribute(t);\n }), n[_] = e;\n }\n },\n H = function H(n, t) {\n if (S(n)) {\n var e = U(n);\n t.forEach(function (t) {\n !function (n, t, e) {\n e ? n.setAttribute(t, e) : n.removeAttribute(t);\n }(n, t, e[t]);\n });\n }\n },\n B = function B(n, t, e) {\n N(n, t.class_loading), A(n, g), e && (R(e, 1), O(t.callback_loading, n, e));\n },\n J = function J(n, t, e) {\n e && n.setAttribute(t, e);\n },\n K = function K(n, t) {\n J(n, f, I(n, t.data_sizes)), J(n, s, I(n, t.data_srcset)), J(n, l, I(n, t.data_src));\n },\n Q = {\n IMG: function IMG(n, t) {\n D(n, function (n) {\n q(n, P), K(n, t);\n }), q(n, P), K(n, t);\n },\n IFRAME: function IFRAME(n, t) {\n q(n, F), J(n, l, I(n, t.data_src));\n },\n VIDEO: function VIDEO(n, t) {\n V(n, function (n) {\n q(n, F), J(n, l, I(n, t.data_src));\n }), q(n, j), J(n, d, I(n, t.data_poster)), J(n, l, I(n, t.data_src)), n.load();\n }\n },\n W = [\"IMG\", \"IFRAME\", \"VIDEO\"],\n X = function X(n, t) {\n !t || function (n) {\n return n.loadingCount > 0;\n }(t) || function (n) {\n return n.toLoadCount > 0;\n }(t) || O(n.callback_finish, t);\n },\n Y = function Y(n, t, e) {\n n.addEventListener(t, e), n.llEvLisnrs[t] = e;\n },\n Z = function Z(n, t, e) {\n n.removeEventListener(t, e);\n },\n nn = function nn(n) {\n return !!n.llEvLisnrs;\n },\n tn = function tn(n) {\n if (nn(n)) {\n var t = n.llEvLisnrs;\n\n for (var e in t) {\n var i = t[e];\n Z(n, e, i);\n }\n\n delete n.llEvLisnrs;\n }\n },\n en = function en(n, t, e) {\n !function (n) {\n delete n.llTempImage;\n }(n), R(e, -1), function (n) {\n n && (n.toLoadCount -= 1);\n }(e), C(n, t.class_loading), t.unobserve_completed && z(n, e);\n },\n on = function on(n, t, e) {\n var i = M(n) || n;\n nn(i) || function (n, t, e) {\n nn(n) || (n.llEvLisnrs = {});\n var i = \"VIDEO\" === n.tagName ? \"loadeddata\" : \"load\";\n Y(n, i, t), Y(n, \"error\", e);\n }(i, function (o) {\n !function (n, t, e, i) {\n var o = w(t);\n en(t, e, i), N(t, e.class_loaded), A(t, v), O(e.callback_loaded, t, i), o || X(e, i);\n }(0, n, t, e), tn(i);\n }, function (o) {\n !function (n, t, e, i) {\n var o = w(t);\n en(t, e, i), N(t, e.class_error), A(t, p), O(e.callback_error, t, i), o || X(e, i);\n }(0, n, t, e), tn(i);\n });\n },\n an = function an(n, t, e) {\n !function (n) {\n n.llTempImage = document.createElement(\"IMG\");\n }(n), on(n, t, e), function (n) {\n S(n) || (n[_] = {\n backgroundImage: n.style.backgroundImage\n });\n }(n), function (n, t, e) {\n var i = I(n, t.data_bg),\n o = I(n, t.data_bg_hidpi),\n r = a && o ? o : i;\n r && (n.style.backgroundImage = 'url(\"'.concat(r, '\")'), M(n).setAttribute(l, r), B(n, t, e));\n }(n, t, e), function (n, t, e) {\n var i = I(n, t.data_bg_multi),\n o = I(n, t.data_bg_multi_hidpi),\n r = a && o ? o : i;\n r && (n.style.backgroundImage = r, function (n, t, e) {\n N(n, t.class_applied), A(n, b), e && (t.unobserve_completed && z(n, t), O(t.callback_applied, n, e));\n }(n, t, e));\n }(n, t, e);\n },\n rn = function rn(n, t, e) {\n !function (n) {\n return W.indexOf(n.tagName) > -1;\n }(n) ? an(n, t, e) : function (n, t, e) {\n on(n, t, e), function (n, t, e) {\n var i = Q[n.tagName];\n i && (i(n, t), B(n, t, e));\n }(n, t, e);\n }(n, t, e);\n },\n cn = function cn(n) {\n n.removeAttribute(l), n.removeAttribute(s), n.removeAttribute(f);\n },\n un = function un(n) {\n D(n, function (n) {\n H(n, P);\n }), H(n, P);\n },\n ln = {\n IMG: un,\n IFRAME: function IFRAME(n) {\n H(n, F);\n },\n VIDEO: function VIDEO(n) {\n V(n, function (n) {\n H(n, F);\n }), H(n, j), n.load();\n }\n },\n sn = function sn(n, t) {\n (function (n) {\n var t = ln[n.tagName];\n t ? t(n) : function (n) {\n if (S(n)) {\n var t = U(n);\n n.style.backgroundImage = t.backgroundImage;\n }\n }(n);\n })(n), function (n, t) {\n L(n) || w(n) || (C(n, t.class_entered), C(n, t.class_exited), C(n, t.class_applied), C(n, t.class_loading), C(n, t.class_loaded), C(n, t.class_error));\n }(n, t), k(n), $(n);\n },\n fn = [\"IMG\", \"IFRAME\", \"VIDEO\"],\n dn = function dn(n) {\n return n.use_native && \"loading\" in HTMLImageElement.prototype;\n },\n _n = function _n(n, t, e) {\n n.forEach(function (n) {\n return function (n) {\n return n.isIntersecting || n.intersectionRatio > 0;\n }(n) ? function (n, t, e, i) {\n var o = function (n) {\n return x.indexOf(y(n)) >= 0;\n }(n);\n\n A(n, \"entered\"), N(n, e.class_entered), C(n, e.class_exited), function (n, t, e) {\n t.unobserve_entered && z(n, e);\n }(n, e, i), O(e.callback_enter, n, t, i), o || rn(n, e, i);\n }(n.target, n, t, e) : function (n, t, e, i) {\n L(n) || (N(n, e.class_exited), function (n, t, e, i) {\n e.cancel_on_exit && function (n) {\n return y(n) === g;\n }(n) && \"IMG\" === n.tagName && (tn(n), function (n) {\n D(n, function (n) {\n cn(n);\n }), cn(n);\n }(n), un(n), C(n, e.class_loading), R(i, -1), k(n), O(e.callback_cancel, n, t, i));\n }(n, t, e, i), O(e.callback_exit, n, t, i));\n }(n.target, n, t, e);\n });\n },\n gn = function gn(n) {\n return Array.prototype.slice.call(n);\n },\n vn = function vn(n) {\n return n.container.querySelectorAll(n.elements_selector);\n },\n bn = function bn(n) {\n return function (n) {\n return y(n) === p;\n }(n);\n },\n pn = function pn(n, t) {\n return function (n) {\n return gn(n).filter(L);\n }(n || vn(t));\n },\n hn = function hn(n, e) {\n var o = c(n);\n this._settings = o, this.loadingCount = 0, function (n, t) {\n i && !dn(n) && (t._observer = new IntersectionObserver(function (e) {\n _n(e, n, t);\n }, function (n) {\n return {\n root: n.container === document ? null : n.container,\n rootMargin: n.thresholds || n.threshold + \"px\"\n };\n }(n)));\n }(o, this), function (n, e) {\n t && window.addEventListener(\"online\", function () {\n !function (n, t) {\n var e;\n (e = vn(n), gn(e).filter(bn)).forEach(function (t) {\n C(t, n.class_error), k(t);\n }), t.update();\n }(n, e);\n });\n }(o, this), this.update(e);\n };\n\n return hn.prototype = {\n update: function update(n) {\n var t,\n o,\n a = this._settings,\n r = pn(n, a);\n T(this, r.length), !e && i ? dn(a) ? function (n, t, e) {\n n.forEach(function (n) {\n -1 !== fn.indexOf(n.tagName) && function (n, t, e) {\n n.setAttribute(\"loading\", \"lazy\"), on(n, t, e), function (n, t) {\n var e = Q[n.tagName];\n e && e(n, t);\n }(n, t), A(n, h);\n }(n, t, e);\n }), T(e, 0);\n }(r, a, this) : (o = r, function (n) {\n n.disconnect();\n }(t = this._observer), function (n, t) {\n t.forEach(function (t) {\n n.observe(t);\n });\n }(t, o)) : this.loadAll(r);\n },\n destroy: function destroy() {\n this._observer && this._observer.disconnect(), vn(this._settings).forEach(function (n) {\n $(n);\n }), delete this._observer, delete this._settings, delete this.loadingCount, delete this.toLoadCount;\n },\n loadAll: function loadAll(n) {\n var t = this,\n e = this._settings;\n pn(n, e).forEach(function (n) {\n z(n, t), rn(n, e, t);\n });\n },\n restoreAll: function restoreAll() {\n var n = this._settings;\n vn(n).forEach(function (t) {\n sn(t, n);\n });\n }\n }, hn.load = function (n, t) {\n var e = c(t);\n rn(n, e);\n }, hn.resetStatus = function (n) {\n k(n);\n }, t && function (n, t) {\n if (t) if (t.length) for (var e, i = 0; e = t[i]; i += 1) {\n u(n, e);\n } else u(n, t);\n }(hn, window.lazyLoadOptions), hn;\n});","/**\n scrolldir - Vertical scroll direction in CSS\n @version v1.5.2\n @link https://github.com/yowainwright/scrolldir.git\n @author Patrick Fisher , Jeffry Wainwright \n @license MIT\n**/\nvar attribute = 'data-scrolldir';\nvar dir = 'down'; // 'up' or 'down'\n\nvar thresholdPixels = 64; // Ignore moves smaller than this.\n\nvar el = document.documentElement;\nvar win = window;\nvar body = document.body;\nvar historyLength = 32; // Ticks to keep in history.\n\nvar historyMaxAge = 512; // History data time-to-live (ms).\n\nvar history = Array(historyLength);\nvar e; // last scroll event\n\nvar pivot; // \"high-water mark\"\n\nvar pivotTime = 0;\n\nfunction tick() {\n var y = win.scrollY || win.pageYOffset;\n var t = e.timeStamp;\n var furthest = dir === 'down' ? Math.max : Math.min; // Apply bounds to handle rubber banding\n\n var yMax = body.scrollHeight - win.innerHeight;\n y = Math.max(0, y);\n y = Math.min(yMax, y); // Update history\n\n history.unshift({\n y: y,\n t: t\n });\n history.pop(); // Are we continuing in the same direction?\n\n if (y === furthest(pivot, y)) {\n // Update \"high-water mark\" for current direction\n pivotTime = t;\n pivot = y;\n return;\n } // else we have backed off high-water mark\n // Apply max age to find current reference point\n\n\n var cutoffTime = t - historyMaxAge;\n\n if (cutoffTime > pivotTime) {\n pivot = y;\n\n for (var i = 0; i < historyLength; i += 1) {\n if (!history[i] || history[i].t < cutoffTime) break;\n pivot = furthest(pivot, history[i].y);\n }\n } // Have we exceeded threshold?\n\n\n if (Math.abs(y - pivot) > thresholdPixels) {\n pivot = y;\n pivotTime = t;\n dir = dir === 'down' ? 'up' : 'down';\n el.setAttribute(attribute, dir);\n }\n}\n\nfunction handler(event) {\n e = event;\n return win.requestAnimationFrame(tick);\n}\n\nfunction scrollDir(opts) {\n if (opts) {\n if (opts.attribute) attribute = opts.attribute;\n if (opts.el) el = opts.el;\n if (opts.win) win = opts.win;\n if (opts.dir) dir = opts.dir;\n if (opts.thresholdPixels) thresholdPixels = opts.thresholdPixels; // If opts.off, turn it off\n // - set html[data-scrolldir=\"off\"]\n // - remove the event listener\n\n if (opts.off === true) {\n el.setAttribute(attribute, 'off');\n return win.removeEventListener('scroll', handler);\n }\n } // else, turn it on\n // - set html[data-scrolldir=\"down\"]\n // - add the event listener\n\n\n pivot = win.scrollY || win.pageYOffset;\n el.setAttribute(attribute, dir);\n return win.addEventListener('scroll', handler);\n}\n\nexport default scrollDir;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar utils = require('../utils');\n\nvar AxiosError = require('../core/AxiosError');\n\nvar envFormData = require('../env/classes/FormData');\n\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nvar predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\nfunction isSpecCompliant(thing) {\n return thing && utils.isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator];\n}\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n * @returns {Object}\n **/\n\n\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n } // eslint-disable-next-line no-param-reassign\n\n\n formData = formData || new (envFormData || FormData)(); // eslint-disable-next-line no-param-reassign\n\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n var metaTokens = options.metaTokens; // eslint-disable-next-line no-use-before-define\n\n var visitor = options.visitor || defaultVisitor;\n var dots = options.dots;\n var indexes = options.indexes;\n\n var _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n\n var useBlob = _Blob && isSpecCompliant(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n /**\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n\n\n function defaultVisitor(value, key, path) {\n var arr = value;\n\n if (value && !path && _typeof(value) === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2); // eslint-disable-next-line no-param-reassign\n\n value = JSON.stringify(value);\n } else if (utils.isArray(value) && isFlatArray(value) || utils.isFileList(value) || utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n arr.forEach(function each(el, index) {\n !utils.isUndefined(el) && formData.append( // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + '[]', convertValue(el));\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\n\n var stack = [];\n var exposedHelpers = Object.assign(predicates, {\n defaultVisitor: defaultVisitor,\n convertValue: convertValue,\n isVisitable: isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n utils.forEach(value, function each(el, key) {\n var result = !utils.isUndefined(el) && visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n return formData;\n}\n\nmodule.exports = toFormData;","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\n\nvar utils = require('../utils');\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n */\n\n\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\nmodule.exports = CanceledError;","import axios from 'axios';\n\nexport default function setupCSRFToken() {\n const tokenDom = document.querySelector('meta[name=csrf-token]');\n if (tokenDom) {\n const csrfToken = tokenDom.content;\n axios.defaults.headers.common['X-CSRF-Token'] = csrfToken;\n }\n}\n","import LazyLoad from 'vanilla-lazyload';\nimport 'bootstrap.native';\n\nimport './out.scss';\nimport setupCSRFToken from './setupCSRFToken';\nimport setupRedirects from './setupRedirects';\n\nsetupCSRFToken();\nsetupRedirects();\n\nwindow.lazyLoadInstance = new LazyLoad({\n elements_selector: '.lazy',\n});\n","export default function setupRedirects() {\n const redirects = document.querySelectorAll('a[data-redirect-url]');\n redirects.forEach((link) => {\n link.href = link.dataset.redirectUrl; // eslint-disable-line no-param-reassign\n });\n}\n","import './faq-vote.scss';\n\nconst votesButtons = document.querySelectorAll('#faq-vote a');\n\nif (votesButtons.length) {\n const thanksCallback = () => {\n const votes = document.getElementsByClassName('votes')[0];\n votes.remove();\n\n const section = document.getElementById('faq-vote');\n const thanks = document.createElement('p');\n thanks.appendChild(document.createTextNode('Merci !'));\n section.appendChild(thanks);\n };\n\n votesButtons.forEach((button) => {\n button.href = button.dataset.href; // eslint-disable-line no-param-reassign\n button.addEventListener('click', thanksCallback);\n });\n}\n","import './form.scss';\nimport '../email-suggestion/email-suggestion.scss';\nimport { isEmail } from '../../src/utils/validations';\nimport { checkEmail } from '../email-suggestion/email-suggestion';\n\n(() => {\n const signUpForm = document.getElementById('ga-signUp');\n const signInForm = document.getElementById('ga-signIn');\n const invitationForm = document.getElementById('ga-acceptInvitation');\n const resetPasswordForm = document.getElementById('ga-resetPassword');\n const updatePasswordForm = document.getElementById('ga-updatePassword');\n const faqsSearchForm = document.getElementById('ga-faqsSearch');\n const resendInstrucForm = document.getElementById(\n 'ga-resendConfirmationInstructions'\n );\n\n const formEmail = document.getElementById('session_email');\n const formPassword = document.getElementById('session_password');\n const formPasswordConfirm = document.getElementById(\n 'session_password_confirmation'\n );\n\n const formPasswordToken = document.getElementById(\n 'session_reset_password_token'\n );\n\n const formInvitationToken = document.getElementById(\n 'session_invitation_token'\n );\n\n const formCheckbox = document.getElementById('session_cgu_param_accepted');\n\n function emailIsValid() {\n return formEmail.value && isEmail(formEmail.value);\n }\n\n function passwordIsValid() {\n return formPassword.value && formPassword.value.length >= 6;\n }\n\n function passwordConfirmIsValid() {\n return (\n formPasswordConfirm.value &&\n formPassword.value &&\n formPasswordConfirm.value === formPassword.value\n );\n }\n\n function cguChecked() {\n return formCheckbox.checked;\n }\n\n function signUpFormIsValid() {\n return emailIsValid() && passwordIsValid() && cguChecked();\n }\n\n function invitationFormIsValid() {\n return formInvitationToken.value && passwordIsValid() && cguChecked();\n }\n\n function signInFormIsValid() {\n return emailIsValid() && passwordIsValid();\n }\n\n function updatePasswordFormIsValid() {\n return (\n formPasswordToken.value && passwordIsValid() && passwordConfirmIsValid()\n );\n }\n\n function handleOnClickSuggestion(suggestion) {\n formEmail.value = suggestion;\n }\n\n if (formEmail) {\n formEmail.addEventListener('blur', () =>\n checkEmail(formEmail.value, formEmail, handleOnClickSuggestion)\n );\n }\n\n // Sends events to GA when submiting valid forms\n //\n if (gon.app_env === 'production') {\n if (signUpForm) {\n signUpForm.addEventListener('submit', () => {\n if (signUpFormIsValid() && gon.accepted_cookies) {\n gtag('event', 'Signed up', {\n event_category: 'Sign up',\n event_label: 'Signed up with email',\n });\n // Facebook pixel tracking\n fbq('track', 'CompleteRegistration', { content_name: 'Signed up' });\n }\n });\n }\n\n if (signInForm) {\n signInForm.addEventListener('submit', () => {\n if (signInFormIsValid() && gon.accepted_cookies) {\n gtag('event', 'Signed in', {\n event_category: 'Sign in',\n event_label: 'Signed in with email',\n });\n }\n });\n }\n\n if (invitationForm) {\n invitationForm.addEventListener('submit', () => {\n if (invitationFormIsValid() && gon.accepted_cookies) {\n gtag('event', 'Accepted', {\n event_category: 'Invitation',\n event_label: 'Accepted invitation',\n });\n }\n });\n }\n\n if (resetPasswordForm) {\n resetPasswordForm.addEventListener('submit', () => {\n if (emailIsValid() && gon.accepted_cookies) {\n gtag('event', 'Reset', {\n event_category: 'Password',\n event_label: 'Asked for a reset password token',\n });\n }\n });\n }\n\n if (resendInstrucForm) {\n resendInstrucForm.addEventListener('submit', () => {\n if (emailIsValid() && gon.accepted_cookies) {\n gtag('event', 'Resend', {\n event_category: 'Confirmation',\n event_label: 'Asked for a new confirmation email',\n });\n }\n });\n }\n\n if (updatePasswordForm) {\n updatePasswordForm.addEventListener('submit', () => {\n if (updatePasswordFormIsValid() && gon.accepted_cookies) {\n gtag('event', 'Updated', {\n event_category: 'Password',\n event_label: 'Updated password with token',\n });\n }\n });\n }\n\n if (faqsSearchForm) {\n faqsSearchForm.addEventListener('submit', () => {\n if (gon.accepted_cookies) {\n gtag('event', 'FAQ Search', {\n event_category: 'FAQ',\n event_label: 'FAQ Search',\n });\n }\n });\n }\n }\n})();\n","import './iphone.scss';\n\nconst video = document.getElementById('preview');\nconst audioControl = document.querySelector('.audio-control');\n\nif (video) {\n audioControl.addEventListener('click', () => {\n if (video.muted) {\n video.muted = false;\n audioControl.classList.remove('fa-volume-up');\n audioControl.classList.add('fa-volume-off');\n } else {\n video.muted = true;\n audioControl.classList.remove('fa-volume-off');\n audioControl.classList.add('fa-volume-up');\n }\n });\n}\n","import './stores.scss';\n\n(() => {\n const iosLinks = document.querySelectorAll('.ga-iOS');\n const androidLinks = document.querySelectorAll('.ga-Android');\n\n if (gon.app_env === 'production') {\n iosLinks.forEach((link) => {\n link.addEventListener('click', () => {\n if (!gon.accepted_cookies) {\n return;\n }\n\n // Google Analytics event\n gtag('event', 'Clicked', {\n event_category: 'Stores',\n event_label: 'See in App Store',\n });\n\n // Facebook pixel tracking\n fbq('track', 'ViewContent', { content_name: 'App Store' });\n });\n });\n\n androidLinks.forEach((link) => {\n link.addEventListener('click', () => {\n if (!gon.accepted_cookies) {\n return;\n }\n\n // Google Analytics event\n gtag('event', 'Clicked', {\n event_category: 'Stores',\n event_label: 'See in Play Store',\n });\n\n // Facebook pixel tracking\n fbq('track', 'ViewContent', { content_name: 'Play Store' });\n });\n });\n }\n})();\n","var win = window;\nexport var raf = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.msRequestAnimationFrame || function (cb) {\n return setTimeout(cb, 16);\n};","var win = window;\nexport var caf = win.cancelAnimationFrame || win.mozCancelAnimationFrame || function (id) {\n clearTimeout(id);\n};","export function extend() {\n var obj,\n name,\n copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n\n return target;\n}","export function checkStorageValue(value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}","export function setLocalStorage(storage, key, value, access) {\n if (access) {\n try {\n storage.setItem(key, value);\n } catch (e) {}\n }\n\n return value;\n}","export function getBody() {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}","export var docElement = document.documentElement;","import { docElement } from './docElement.js';\nexport function setFakeBody(body) {\n var docOverflow = '';\n\n if (body.fake) {\n docOverflow = docElement.style.overflow; //avoid crashing IE8, if background image is used\n\n body.style.background = ''; //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}","import { docElement } from './docElement.js';\nexport function resetFakeBody(body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow; // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n\n docElement.offsetHeight;\n }\n}","// cross browsers addRule method\nexport function addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ? sheet.insertRule(selector + '{' + rules + '}', index) : sheet.addRule(selector, rules, index); // });\n}","export function getCssRulesLength(sheet) {\n var rule = 'insertRule' in sheet ? sheet.cssRules : sheet.rules;\n return rule.length;\n}","// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nexport function forEach(arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}","export var classListSupport = ('classList' in document.createElement('_'));","import { classListSupport } from './classListSupport.js';\nvar hasClass = classListSupport ? function (el, str) {\n return el.classList.contains(str);\n} : function (el, str) {\n return el.className.indexOf(str) >= 0;\n};\nexport { classListSupport, hasClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar addClass = classListSupport ? function (el, str) {\n if (!hasClass(el, str)) {\n el.classList.add(str);\n }\n} : function (el, str) {\n if (!hasClass(el, str)) {\n el.className += ' ' + str;\n }\n};\nexport { addClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar removeClass = classListSupport ? function (el, str) {\n if (hasClass(el, str)) {\n el.classList.remove(str);\n }\n} : function (el, str) {\n if (hasClass(el, str)) {\n el.className = el.className.replace(str, '');\n }\n};\nexport { removeClass };","export function hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}","export function getAttr(el, attr) {\n return el.getAttribute(attr);\n}","export function isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\";\n}","import { isNodeList } from \"./isNodeList.js\";\nexport function setAttrs(els, attrs) {\n els = isNodeList(els) || els instanceof Array ? els : [els];\n\n if (Object.prototype.toString.call(attrs) !== '[object Object]') {\n return;\n }\n\n for (var i = els.length; i--;) {\n for (var key in attrs) {\n els[i].setAttribute(key, attrs[key]);\n }\n }\n}","import { isNodeList } from \"./isNodeList.js\";\nexport function removeAttrs(els, attrs) {\n els = isNodeList(els) || els instanceof Array ? els : [els];\n attrs = attrs instanceof Array ? attrs : [attrs];\n var attrLength = attrs.length;\n\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}","export function arrayFromNodeList(nl) {\n var arr = [];\n\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n\n return arr;\n}","export function hideElement(el, forceHide) {\n if (el.style.display !== 'none') {\n el.style.display = 'none';\n }\n}","export function showElement(el, forceHide) {\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n}","export function isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}","export function whichProperty(props) {\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n prefixes.forEach(function (prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n props = arr;\n }\n\n var el = document.createElement('fakeelement'),\n len = props.length;\n\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n\n if (el.style[prop] !== undefined) {\n return prop;\n }\n }\n\n return false; // explicit for ie9-\n}","// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nexport function getEndProperty(propIn, propOut) {\n var endProp = false;\n\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n\n return endProp;\n}","// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\n\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\n\nexport var passiveOption = supportsPassive ? {\n passive: true\n} : false;","import { passiveOption } from './passiveOption.js';\nexport function addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}","import { passiveOption } from './passiveOption.js';\nexport function removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}","export function Events() {\n return {\n topics: {},\n on: function on(eventName, fn) {\n this.topics[eventName] = this.topics[eventName] || [];\n this.topics[eventName].push(fn);\n },\n off: function off(eventName, fn) {\n if (this.topics[eventName]) {\n for (var i = 0; i < this.topics[eventName].length; i++) {\n if (this.topics[eventName][i] === fn) {\n this.topics[eventName].splice(i, 1);\n break;\n }\n }\n }\n },\n emit: function emit(eventName, data) {\n data.type = eventName;\n\n if (this.topics[eventName]) {\n this.topics[eventName].forEach(function (fn) {\n fn(data, eventName);\n });\n }\n }\n };\n}\n;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Object.keys\nif (!Object.keys) {\n Object.keys = function (object) {\n var keys = [];\n\n for (var name in object) {\n if (Object.prototype.hasOwnProperty.call(object, name)) {\n keys.push(name);\n }\n }\n\n return keys;\n };\n} // ChildNode.remove\n\n\nif (!(\"remove\" in Element.prototype)) {\n Element.prototype.remove = function () {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\n\nimport { raf } from './helpers/raf.js';\nimport { caf } from './helpers/caf.js';\nimport { extend } from './helpers/extend.js';\nimport { checkStorageValue } from './helpers/checkStorageValue.js';\nimport { setLocalStorage } from './helpers/setLocalStorage.js';\nimport { getSlideId } from './helpers/getSlideId.js';\nimport { calc } from './helpers/calc.js';\nimport { percentageLayout } from './helpers/percentageLayout.js';\nimport { mediaquerySupport } from './helpers/mediaquerySupport.js';\nimport { createStyleSheet } from './helpers/createStyleSheet.js';\nimport { addCSSRule } from './helpers/addCSSRule.js';\nimport { removeCSSRule } from './helpers/removeCSSRule.js';\nimport { getCssRulesLength } from './helpers/getCssRulesLength.js';\nimport { toDegree } from './helpers/toDegree.js';\nimport { getTouchDirection } from './helpers/getTouchDirection.js';\nimport { forEach } from './helpers/forEach.js';\nimport { hasClass } from './helpers/hasClass.js';\nimport { addClass } from './helpers/addClass.js';\nimport { removeClass } from './helpers/removeClass.js';\nimport { hasAttr } from './helpers/hasAttr.js';\nimport { getAttr } from './helpers/getAttr.js';\nimport { setAttrs } from './helpers/setAttrs.js';\nimport { removeAttrs } from './helpers/removeAttrs.js';\nimport { arrayFromNodeList } from './helpers/arrayFromNodeList.js';\nimport { hideElement } from './helpers/hideElement.js';\nimport { showElement } from './helpers/showElement.js';\nimport { isVisible } from './helpers/isVisible.js';\nimport { whichProperty } from './helpers/whichProperty.js';\nimport { has3DTransforms } from './helpers/has3DTransforms.js';\nimport { getEndProperty } from './helpers/getEndProperty.js';\nimport { addEvents } from './helpers/addEvents.js';\nimport { removeEvents } from './helpers/removeEvents.js';\nimport { Events } from './helpers/events.js';\nimport { jsTransform } from './helpers/jsTransform.js';\nexport var tns = function tns(options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true,\n nonce: false\n }, options || {});\n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date();\n\n try {\n tnsStorage = win.localStorage;\n\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n\n if (!localStorageAccess) {\n tnsStorage = {};\n }\n } catch (e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function (item) {\n tnsStorage.removeItem(item);\n });\n } // update browserInfo\n\n\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess); // get element nodes from selectors\n\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'],\n optionsElements = {};\n tnsList.forEach(function (item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) {\n console.warn('Can\\'t find', options[item]);\n }\n\n return;\n }\n }\n }); // make sure at least 1 slide\n\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) {\n console.warn('No slides found in', options.container);\n }\n\n return;\n } // update options\n\n\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n\n for (var key in responsive) {\n var val = responsive[key]; // update responsive\n // from: 300: 2\n // to:\n // 300: {\n // items: 2\n // }\n\n val = typeof val === 'number' ? {\n items: val\n } : val;\n responsiveTem[key] = val;\n }\n\n responsive = responsiveTem;\n responsiveTem = null;\n } // update options\n\n\n function updateOptions(obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') {\n obj[key] = 'page';\n }\n\n if (key === 'edgePadding') {\n obj[key] = false;\n }\n\n if (key === 'autoHeight') {\n obj[key] = false;\n }\n } // update responsive options\n\n\n if (key === 'responsive') {\n updateOptions(obj[key]);\n }\n }\n }\n\n if (!carousel) {\n updateOptions(options);\n } // === define and set variables ===\n\n\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n\n if (responsive) {\n setBreakpointZone();\n }\n\n if (carousel) {\n container.className += ' tns-vpfix';\n } // fixedWidth: viewport > rightBoundary > indexMax\n\n\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(null, getOption('nonce')),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions,\n // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = !carousel || !loop ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = function () {\n if (fixedWidth) {\n return function () {\n return center && !loop ? slideCount - 1 : Math.ceil(-rightBoundary / (fixedWidth + gutter));\n };\n } else if (autoWidth) {\n return function () {\n for (var i = 0; i < slideCountNew; i++) {\n if (slidePositions[i] >= -rightBoundary) {\n return i;\n }\n }\n };\n } else {\n return function () {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n }(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {\n 'visibilitychange': onVisibilityChange\n },\n docmentKeydownEvent = {\n 'keydown': onDocumentKeydown\n },\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n },\n dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n slideClonedClass = 'tns-slide-cloned',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false; // controls\n\n\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n } // nav\n\n\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n } // autoplay\n\n\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['', ' animation'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ? function (a, b) {\n return a.x - b.x;\n } : function (a, b) {\n return a.y - b.y;\n };\n } // disable slider when slidecount <= items\n\n\n if (!autoWidth) {\n resetVariblesWhenDisable(disable || freeze);\n }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n }\n\n if (carousel) {\n container.className = container.className.replace('tns-vpfix', '');\n }\n\n initStructure();\n initSheet();\n initSliderTransform(); // === COMMON FUNCTIONS === //\n\n function resetVariblesWhenDisable(condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide() {\n var tem = carousel ? index - cloneCount : index;\n\n while (tem < 0) {\n tem += slideCount;\n }\n\n return tem % slideCount + 1;\n }\n\n function getStartIndex(ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex(i) {\n if (i == null) {\n i = index;\n }\n\n if (carousel) {\n i -= cloneCount;\n }\n\n while (i < 0) {\n i += slideCount;\n }\n\n return Math.floor(i % slideCount);\n }\n\n function getCurrentNavIndex() {\n var absIndex = getAbsIndex(),\n result;\n result = navAsThumbnails ? absIndex : fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) : Math.floor(absIndex / items); // set active nav to the last one when reaches the right edge\n\n if (!loop && carousel && index === indexMax) {\n result = pages - 1;\n }\n\n return result;\n }\n\n function getItemsMax() {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || fixedWidth && !viewportMax) {\n return slideCount - 1; // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) {\n arr.push(options[str]);\n }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n\n if (tem && (fixedWidth || tem < slideCount)) {\n arr.push(tem);\n }\n }\n }\n\n if (!arr.length) {\n arr.push(0);\n }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop() {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount) / 2) : itemsMax * 4 - slideCount;\n result = Math.max(itemsMax, result);\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth() {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition(pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth(el) {\n if (el == null) {\n return;\n }\n\n var div = doc.createElement('div'),\n rect,\n width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth() {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption(item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) {\n return true;\n }\n }\n }\n\n return false;\n }\n } // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n\n\n function getOption(item, ww) {\n if (ww == null) {\n ww = windowWidth;\n }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) {\n result = responsive[bp][item];\n }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') {\n result = getOption('items');\n }\n\n if (!carousel && (item === 'slideBy' || item === 'items')) {\n result = Math.floor(result);\n }\n\n return result;\n }\n }\n\n function getSlideMarginLeft(i) {\n return CALC ? CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' : i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles(edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n\n if (gutterTem) {\n gap -= gutterTem;\n }\n\n str = horizontal ? 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' : 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';';\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) {\n str += getTransitionDurationStyle(speedTem);\n }\n\n return str;\n }\n\n function getContainerWidth(fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ? CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' : slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle(fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = fixedWidthTem + gutterTem + 'px';\n } else {\n if (!carousel) {\n itemsTem = Math.floor(itemsTem);\n }\n\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ? CALC + '(100% / ' + dividend + ')' : 100 / dividend + '%';\n }\n\n width = 'width:' + width; // inner slider: overwrite outer slider styles\n\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle(gutterTem) {\n var str = ''; // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix(name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n\n if (prefix) {\n prefix = '-' + prefix + '-';\n }\n\n return prefix;\n }\n\n function getTransitionDurationStyle(speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle(speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure() {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw'; // set container properties\n\n if (container.id === '') {\n container.id = slideId;\n }\n\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n\n if (autoWidth) {\n newContainerClasses += ' tns-autowidth';\n }\n\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses; // add constrain layer for carousel\n\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container); // add id, class, aria attributes\n // before clone slides\n\n forEach(slideItems, function (item, i) {\n addClass(item, 'tns-item');\n\n if (!item.id) {\n item.id = slideId + '-item' + i;\n }\n\n if (!carousel && animateNormal) {\n addClass(item, animateNormal);\n }\n\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n }); // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(),\n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j % slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n addClass(cloneFirst, slideClonedClass);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n addClass(cloneLast, slideClonedClass);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n }\n\n function initSliderTransform() {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img'); // add img load event listener\n\n forEach(imgs, function (img) {\n var src = img.src;\n\n if (!lazyload) {\n // not data img\n if (src && src.indexOf('data:image') < 0) {\n img.src = '';\n addEvents(img, imgEvents);\n addClass(img, 'loading');\n img.src = src; // data img\n } else {\n imgLoaded(img);\n }\n }\n }); // set imgsComplete\n\n raf(function () {\n imgsLoadedCheck(arrayFromNodeList(imgs), function () {\n imgsComplete = true;\n });\n }); // reset imgs for auto height: check visible imgs only\n\n if (hasOption('autoHeight')) {\n imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1));\n }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function () {\n imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck);\n });\n } else {\n // set container transform property\n if (carousel) {\n doContainerTransformSilent();\n } // update slider tools and events\n\n\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck() {\n if (autoWidth && slideCount > 1) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n\n (function stylesApplicationCheck() {\n var left = slideItems[num].getBoundingClientRect().left;\n var right = slideItems[num - 1].getBoundingClientRect().right;\n Math.abs(left - right) <= 1 ? initSliderTransformCore() : setTimeout(function () {\n stylesApplicationCheck();\n }, 16);\n })();\n } else {\n initSliderTransformCore();\n }\n }\n\n function initSliderTransformCore() {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n\n if (freezable) {\n freeze = getFreeze();\n }\n\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n } // set container transform property\n\n\n if (carousel) {\n doContainerTransformSilent();\n } // update slider tools and events\n\n\n initTools();\n initEvents();\n }\n\n function initSheet() {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) {\n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n } // #### LAYOUT\n // ## INLINE-BLOCK VS FLOAT\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n\n\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n } // ## BASIC STYLES\n\n\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n } // inner wrapper styles\n\n\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet)); // container styles\n\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n\n if (TRANSITIONDURATION) {\n str += getTransitionDurationStyle(speed);\n }\n\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n } // slide styles\n\n\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n\n if (options.gutter) {\n str += getSlideGutterStyle(options.gutter);\n } // set gallery items transition-duration\n\n\n if (!carousel) {\n if (TRANSITIONDURATION) {\n str += getTransitionDurationStyle(speed);\n }\n\n if (ANIMATIONDURATION) {\n str += getAnimationDurationStyle(speed);\n }\n }\n\n if (str) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n } // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n\n } else {\n // middle wrapper styles\n update_carousel_transition_duration(); // inner wrapper styles\n\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight); // container styles\n\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n } // slide styles\n\n\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n\n if (gutter) {\n str += getSlideGutterStyle(gutter);\n } // append to the last line\n\n\n if (str) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n } // ## MEDIAQUERIES\n\n\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp); // middle wrapper string\n\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n } // inner wrapper string\n\n\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n } // container string\n\n\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || fixedWidth && 'gutter' in opts)) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n } // slide string\n\n\n if ('fixedWidth' in opts || fixedWidth && 'gutter' in opts || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n } // set gallery items transition-duration\n\n\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) {\n slideStr += getTransitionDurationStyle(speedBP);\n }\n\n if (ANIMATIONDURATION) {\n slideStr += getAnimationDurationStyle(speedBP);\n }\n }\n\n if (slideStr) {\n slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}';\n } // add up\n\n\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools() {\n // == slides ==\n updateSlideStatus(); // == live region ==\n\n outerWrapper.insertAdjacentHTML('afterbegin', '
slide ' + getLiveRegionStr() + ' of ' + slideCount + '
');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current'); // == autoplayInit ==\n\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n\n if (autoplayButton) {\n setAttrs(autoplayButton, {\n 'data-action': txt\n });\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n } // add event\n\n\n if (autoplayButton) {\n addEvents(autoplayButton, {\n 'click': toggleAutoplay\n });\n }\n\n if (autoplay) {\n startAutoplay();\n\n if (autoplayHoverPause) {\n addEvents(container, hoverEvents);\n }\n\n if (autoplayResetOnVisibility) {\n addEvents(container, visibilityEvent);\n }\n }\n } // == navInit ==\n\n\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount; // customized nav\n // will not hide the navs in case they're thumbnails\n\n if (navContainer) {\n setAttrs(navContainer, {\n 'aria-label': 'Carousel Pagination'\n });\n navItems = navContainer.children;\n forEach(navItems, function (item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId\n });\n }); // generated nav\n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '';\n }\n\n navHtml = '
' + navHtml + '
';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility(); // add transition\n\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {\n 'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent\n });\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass); // add events\n\n addEvents(navContainer, navEvents);\n } // == controlsInit ==\n\n\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '
');\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || options.prevButton && options.nextButton) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1'\n });\n }\n\n if (options.controlsContainer || options.prevButton && options.nextButton) {\n setAttrs(prevButton, {\n 'data-controls': 'prev'\n });\n setAttrs(nextButton, {\n 'data-controls': 'next'\n });\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n updateControlsStatus(); // add events\n\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n } // hide tools if needed\n\n\n disableUI();\n }\n\n function initEvents() {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) {\n addEvents(container, touchEvents, options.preventScrollOnTouch);\n }\n\n if (mouseDrag) {\n addEvents(container, dragEvents);\n }\n\n if (arrowKeys) {\n addEvents(doc, docmentKeydownEvent);\n }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {\n 'resize': onResize\n });\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) {\n doAutoHeight();\n }\n }\n\n doLazyLoad();\n\n if (disable) {\n disableSlider();\n } else if (freeze) {\n freezeSlider();\n }\n\n events.on('indexChanged', additionalUpdates);\n\n if (nested === 'inner') {\n events.emit('innerLoaded', info());\n }\n\n if (typeof onInit === 'function') {\n onInit(info());\n }\n\n isOn = true;\n }\n\n function destroy() {\n // sheet\n sheet.disabled = true;\n\n if (sheet.ownerNode) {\n sheet.ownerNode.remove();\n } // remove win event listeners\n\n\n removeEvents(win, {\n 'resize': onResize\n }); // arrowKeys, controls, nav\n\n if (arrowKeys) {\n removeEvents(doc, docmentKeydownEvent);\n }\n\n if (controlsContainer) {\n removeEvents(controlsContainer, controlsEvents);\n }\n\n if (navContainer) {\n removeEvents(navContainer, navEvents);\n } // autoplay\n\n\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n\n if (autoplayButton) {\n removeEvents(autoplayButton, {\n 'click': toggleAutoplay\n });\n }\n\n if (autoplay) {\n clearInterval(autoplayTimer);\n } // container\n\n\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n\n if (touch) {\n removeEvents(container, touchEvents);\n }\n\n if (mouseDrag) {\n removeEvents(container, dragEvents);\n } // cache Object values in options && reset HTML\n\n\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n tnsList.forEach(function (item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (_typeof(el) === 'object' && el) {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n }); // reset variables\n\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null; // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') {\n this[a] = null;\n }\n }\n\n isOn = false;\n } // === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n\n\n function onResize(e) {\n raf(function () {\n resizeTasks(getEvent(e));\n });\n }\n\n function resizeTasks(e) {\n if (!isOn) {\n return;\n }\n\n if (nested === 'outer') {\n events.emit('outerResized', info(e));\n }\n\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone; // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n\n if (bpChanged) {\n events.emit('newBreakpointStart', info(e));\n }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n } // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n\n\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n } // update options\n\n\n resetVariblesWhenDisable(disable);\n viewport = getViewportWidth(); // <= edgePadding, gutter\n\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n\n needContainerTransform = true;\n }\n }\n\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) {\n indexMax = getIndexMax();\n } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n\n\n updateIndex();\n }\n }\n\n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n\n if (!autoplay) {\n autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ? addEvents(doc, docmentKeydownEvent) : removeEvents(doc, docmentKeydownEvent);\n }\n\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) {\n showElement(prevButton);\n }\n\n if (nextButton) {\n showElement(nextButton);\n }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) {\n hideElement(prevButton);\n }\n\n if (nextButton) {\n hideElement(nextButton);\n }\n }\n }\n }\n\n if (nav !== navTem) {\n if (nav) {\n showElement(navContainer);\n updateNavVisibility();\n } else {\n hideElement(navContainer);\n }\n }\n\n if (touch !== touchTem) {\n touch ? addEvents(container, touchEvents, options.preventScrollOnTouch) : removeEvents(container, touchEvents);\n }\n\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ? addEvents(container, dragEvents) : removeEvents(container, dragEvents);\n }\n\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) {\n showElement(autoplayButton);\n }\n\n if (!animating && !autoplayUserPaused) {\n startAutoplay();\n }\n } else {\n if (autoplayButton) {\n hideElement(autoplayButton);\n }\n\n if (animating) {\n stopAutoplay();\n }\n }\n }\n\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ? addEvents(container, hoverEvents) : removeEvents(container, hoverEvents);\n }\n\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ? addEvents(doc, visibilityEvent) : removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) {\n needContainerTransform = true;\n }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) {\n innerWrapper.style.height = '';\n }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) {\n needContainerTransform = true;\n }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n\n if (indChanged) {\n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) {\n additionalUpdates();\n }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) {\n updateGallerySlidePositions();\n }\n\n if (!disable && !freeze) {\n // non-mediaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n } // slide styles\n\n\n var str = getSlideWidthStyle(fixedWidth, gutter, items) + getSlideGutterStyle(gutter); // remove the last line and\n // add new styles\n\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n } // auto height\n\n\n if (autoHeight) {\n doAutoHeight();\n }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) {\n events.emit('newBreakpointEnd', info(e));\n }\n } // === INITIALIZATION FUNCTIONS === //\n\n\n function getFreeze() {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone() {\n breakpointZone = 0;\n\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n\n if (windowWidth >= bp) {\n breakpointZone = bp;\n }\n }\n } // (slideBy, indexMin, indexMax) => index\n\n\n var updateIndex = function () {\n return loop ? carousel ? // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n leftEdge += slideBy;\n rightEdge -= slideBy; // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter) % (fixedWidth + gutter)) {\n rightEdge -= 1;\n }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } : // loop + gallery\n function () {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) {\n index -= slideCount;\n }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) {\n index += slideCount;\n }\n }\n } : // non-loop\n function () {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n }();\n\n function disableUI() {\n if (!autoplay && autoplayButton) {\n hideElement(autoplayButton);\n }\n\n if (!nav && navContainer) {\n hideElement(navContainer);\n }\n\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) {\n hideElement(prevButton);\n }\n\n if (nextButton) {\n hideElement(nextButton);\n }\n }\n }\n }\n\n function enableUI() {\n if (autoplay && autoplayButton) {\n showElement(autoplayButton);\n }\n\n if (nav && navContainer) {\n showElement(navContainer);\n }\n\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) {\n showElement(prevButton);\n }\n\n if (nextButton) {\n showElement(nextButton);\n }\n }\n }\n }\n\n function freezeSlider() {\n if (frozen) {\n return;\n } // remove edge padding from inner wrapper\n\n\n if (edgePadding) {\n innerWrapper.style.margin = '0px';\n } // add class tns-transparent to cloned slides\n\n\n if (cloneCount) {\n var str = 'tns-transparent';\n\n for (var i = cloneCount; i--;) {\n if (carousel) {\n addClass(slideItems[i], str);\n }\n\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n } // update tools\n\n\n disableUI();\n frozen = true;\n }\n\n function unfreezeSlider() {\n if (!frozen) {\n return;\n } // restore edge padding for inner wrapper\n // for mordern browsers\n\n\n if (edgePadding && CSSMQ) {\n innerWrapper.style.margin = '';\n } // remove class tns-transparent to cloned slides\n\n\n if (cloneCount) {\n var str = 'tns-transparent';\n\n for (var i = cloneCount; i--;) {\n if (carousel) {\n removeClass(slideItems[i], str);\n }\n\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n } // update tools\n\n\n enableUI();\n frozen = false;\n }\n\n function disableSlider() {\n if (disabled) {\n return;\n }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) {\n hideElement(slideItems[j]);\n }\n\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n } // vertical slider\n\n\n if (!horizontal || !carousel) {\n removeAttrs(innerWrapper, ['style']);\n } // gallery\n\n\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n } // update tools\n\n\n disableUI();\n disabled = true;\n }\n\n function enableSlider() {\n if (!disabled) {\n return;\n }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) {\n showElement(slideItems[j]);\n }\n\n showElement(slideItems[slideCountNew - j - 1]);\n }\n } // gallery\n\n\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n } // update tools\n\n\n enableUI();\n disabled = false;\n }\n\n function updateLiveRegion() {\n var str = getLiveRegionStr();\n\n if (liveregionCurrent.innerHTML !== str) {\n liveregionCurrent.innerHTML = str;\n }\n }\n\n function getLiveRegionStr() {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end;\n }\n\n function getVisibleSlideRange(val) {\n if (val == null) {\n val = getContainerTransformValue();\n }\n\n var start = index,\n end,\n rangestart,\n rangeend; // get range start, range end for autoWidth and fixedWidth\n\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = -(parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n } // get start, end\n // - check auto width\n\n\n if (autoWidth) {\n slidePositions.forEach(function (point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) {\n start = i;\n }\n\n if (rangeend - point >= 0.5) {\n end = i;\n }\n }\n }); // - check percentage width, fixed width\n } else {\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n\n if (center || edgePadding) {\n start = Math.floor(rangestart / cell);\n end = Math.ceil(rangeend / cell - 1);\n } else {\n end = start + Math.ceil(viewport / cell) - 1;\n }\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad() {\n if (lazyload && !disable) {\n var arg = getVisibleSlideRange();\n arg.push(lazyloadSelector);\n getImageArray.apply(null, arg).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n\n eve[TRANSITIONEND] = function (e) {\n e.stopPropagation();\n };\n\n addEvents(img, eve);\n addEvents(img, imgEvents); // update src\n\n img.src = getAttr(img, 'data-src'); // update srcset\n\n var srcset = getAttr(img, 'data-srcset');\n\n if (srcset) {\n img.srcset = srcset;\n }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded(e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed(e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded(img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed(img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted(img) {\n addClass(img, imgCompleteClass);\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray(start, end, imgSelector) {\n var imgs = [];\n\n if (!imgSelector) {\n imgSelector = 'img';\n }\n\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll(imgSelector), function (img) {\n imgs.push(img);\n });\n start++;\n }\n\n return imgs;\n } // check if all visible images are loaded\n // and update container height if it's done\n\n\n function doAutoHeight() {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function () {\n imgsLoadedCheck(imgs, updateInnerWrapperHeight);\n });\n }\n\n function imgsLoadedCheck(imgs, cb) {\n // execute callback function if all images are complete\n if (imgsComplete) {\n return cb();\n } // check image classes\n\n\n imgs.forEach(function (img, index) {\n if (!lazyload && img.complete) {\n imgCompleted(img);\n } // Check image.complete\n\n\n if (hasClass(img, imgCompleteClass)) {\n imgs.splice(index, 1);\n }\n }); // execute callback function if selected images are all complete\n\n if (!imgs.length) {\n return cb();\n } // otherwise execute this functiona again\n\n\n raf(function () {\n imgsLoadedCheck(imgs, cb);\n });\n }\n\n function additionalUpdates() {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n function update_carousel_transition_duration() {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight(slideStart, slideRange) {\n var heights = [];\n\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n } // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n\n\n function updateInnerWrapperHeight() {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) {\n wp.style.height = maxHeight + 'px';\n }\n } // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n\n\n function setSlidePositions() {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n forEach(slideItems, function (item, i) {\n // skip the first slide\n if (i) {\n slidePositions.push(item.getBoundingClientRect()[attr] - base);\n } // add the end edge\n\n\n if (i === slideCountNew - 1) {\n slidePositions.push(item.getBoundingClientRect()[attr2] - base);\n }\n });\n } // update slide\n\n\n function updateSlideStatus() {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n forEach(slideItems, function (item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n } // hide slides\n\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n } // gallery: update slide position\n\n\n function updateGallerySlidePositions() {\n var l = index + Math.min(slideCount, items);\n\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n } // remove outlet animation\n\n\n removeClass(item, animateOut);\n } // removing '.tns-moving'\n\n\n setTimeout(function () {\n forEach(slideItems, function (el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n } // set tabindex on Nav\n\n\n function updateNavStatus() {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n setAttrs(navCurrent, {\n 'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent\n });\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName(el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton(el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled(el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement(isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n } // set 'disabled' to true on controls when reach the edges\n\n\n function updateControlsStatus() {\n if (!controls || rewind || loop) {\n return;\n }\n\n var prevDisabled = prevIsButton ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = nextIsButton ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = index <= indexMin ? true : false,\n disableNext = !rewind && index >= indexMax ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n } // set duration\n\n\n function resetDuration(el, str) {\n if (TRANSITIONDURATION) {\n el.style[TRANSITIONDURATION] = str;\n }\n }\n\n function getSliderWidth() {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap(num) {\n if (num == null) {\n num = index;\n }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? (viewport - gap - (slidePositions[num + 1] - slidePositions[num] - gutter)) / 2 : fixedWidth ? (viewport - fixedWidth) / 2 : (items - 1) / 2;\n }\n\n function getRightBoundary() {\n var gap = edgePadding ? gutter : 0,\n result = viewport + gap - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? -(fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() : getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n\n if (result > 0) {\n result = 0;\n }\n\n return result;\n }\n\n function getContainerTransformValue(num) {\n if (num == null) {\n num = index;\n }\n\n var val;\n\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = -(fixedWidth + gutter) * num;\n\n if (center) {\n val += getCenterGap();\n }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n\n if (center) {\n num -= getCenterGap();\n }\n\n val = -num * 100 / denominator;\n }\n } else {\n val = -slidePositions[num];\n\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) {\n val = Math.max(val, rightBoundary);\n }\n\n val += horizontal && !autoWidth && !fixedWidth ? '%' : 'px';\n return val;\n }\n\n function doContainerTransformSilent(val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform(val) {\n if (val == null) {\n val = getContainerTransformValue();\n }\n\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide(number, classOut, classIn, isOut) {\n var l = number + items;\n\n if (!loop) {\n l = Math.min(l, slideCountNew);\n }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i]; // set item positions\n\n if (!isOut) {\n item.style.left = (i - index) * 100 / items + '%';\n }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n\n removeClass(item, classOut);\n addClass(item, classIn);\n\n if (isOut) {\n slideItemsOut.push(item);\n }\n }\n } // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n\n\n var transformCore = function () {\n return carousel ? function () {\n resetDuration(container, '');\n\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or\n // zero duration for all browsers\n doContainerTransform(); // run fallback function manually\n // when duration is 0 / container is hidden\n\n if (!speed || !isVisible(container)) {\n onTransitionEnd();\n }\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) {\n updateContentWrapperHeight();\n }\n } : function () {\n slideItemsOut = [];\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn); // run fallback function manually\n // when transition or animation not supported / duration is 0\n\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) {\n onTransitionEnd();\n }\n };\n }();\n\n function render(e, sliderMoved) {\n if (updateIndexBeforeTransform) {\n updateIndex();\n } // render when slider was moved (touch or drag) even though index may not change\n\n\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n\n if (autoHeight) {\n doAutoHeight();\n } // pause autoplay when click or keydown from user\n\n\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) {\n stopAutoplay();\n }\n\n running = true;\n transformCore();\n }\n }\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n\n\n function strTrans(str) {\n return str.toLowerCase().replace(/-/g, '');\n } // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n\n\n function onTransitionEnd(event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i]; // set item positions\n\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) {\n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event'\n * have to check event first, otherwise event.target will cause an error\n * => or 'gallery' mode:\n * + event target is slide item\n * => or 'carousel' mode:\n * + event target is container,\n * + event.property is the same with transform attribute\n */\n\n\n if (!event || !carousel && event.target.parentNode === container || event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n if (!updateIndexBeforeTransform) {\n var indexTem = index;\n updateIndex();\n\n if (index !== indexTem) {\n events.emit('indexChanged', info());\n doContainerTransformSilent();\n }\n }\n\n if (nested === 'inner') {\n events.emit('innerLoaded', info());\n }\n\n running = false;\n indexCached = index;\n }\n }\n } // # ACTIONS\n\n\n function goTo(targetIndex, e) {\n if (freeze) {\n return;\n } // prev slideBy\n\n\n if (targetIndex === 'prev') {\n onControlsClick(e, -1); // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1); // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) {\n return;\n } else {\n onTransitionEnd();\n }\n }\n\n var absIndex = getAbsIndex(),\n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = -absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') {\n targetIndex = parseInt(targetIndex);\n }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) {\n targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex));\n }\n\n indexGap = targetIndex - absIndex;\n }\n } // gallery: make sure new page won't overlap with current page\n\n\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += index + indexGap - slideCount >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap; // make sure index is in range\n\n if (carousel && loop) {\n if (index < indexMin) {\n index += slideCount;\n }\n\n if (index > indexMax) {\n index -= slideCount;\n }\n } // if index is changed, start rendering\n\n\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n }\n } // on controls click\n\n\n function onControlsClick(e, dir) {\n if (running) {\n if (preventActionWhenRunning) {\n return;\n } else {\n onTransitionEnd();\n }\n }\n\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) {\n target = target.parentNode;\n }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n\n if (autoWidth) {\n index = Math.floor(index);\n } // pass e when click control buttons or keydown\n\n\n render(passEventObject || e && e.type === 'keydown' ? e : null);\n }\n } // on nav click\n\n\n function onNavClick(e) {\n if (running) {\n if (preventActionWhenRunning) {\n return;\n } else {\n onTransitionEnd();\n }\n }\n\n e = getEvent(e);\n var target = getTarget(e),\n navIndex; // find the clicked nav item\n\n while (target !== navContainer && !hasAttr(target, 'data-nav')) {\n target = target.parentNode;\n }\n\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) {\n stopAutoplay();\n }\n\n navClicked = -1; // reset navClicked\n }\n }\n } // autoplay functions\n\n\n function setAutoplayTimer() {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n animating = true;\n }\n\n function stopAutoplayTimer() {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton(action, txt) {\n setAttrs(autoplayButton, {\n 'data-action': action\n });\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay() {\n setAutoplayTimer();\n\n if (autoplayButton) {\n updateAutoplayButton('stop', autoplayText[1]);\n }\n }\n\n function stopAutoplay() {\n stopAutoplayTimer();\n\n if (autoplayButton) {\n updateAutoplayButton('start', autoplayText[0]);\n }\n } // programaitcally play/pause the slider\n\n\n function play() {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function pause() {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay() {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange() {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause() {\n if (animating) {\n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart() {\n if (autoplayHoverPaused) {\n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n } // keydown events on document\n\n\n function onDocumentKeydown(e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n } // on key control\n\n\n function onControlsKeydown(e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) {\n onControlsClick(e, -1);\n }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n } // set focus\n\n\n function setFocus(el) {\n el.focus();\n } // on key nav\n\n\n function onNavKeydown(e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n\n if (!hasAttr(curElement, 'data-nav')) {\n return;\n } // var code = e.keyCode,\n\n\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) {\n setFocus(navItems[navIndex - 1]);\n }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) {\n setFocus(navItems[navIndex + 1]);\n }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent(e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n\n function getTarget(e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent(e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior(e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected() {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart(e) {\n if (running) {\n if (preventActionWhenRunning) {\n return;\n } else {\n onTransitionEnd();\n }\n }\n\n if (autoplay && animating) {\n stopAutoplayTimer();\n }\n\n panStart = true;\n\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove(e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) {\n rafIndex = raf(function () {\n panUpdate(e);\n });\n }\n } else {\n if (moveDirectionExpected === '?') {\n moveDirectionExpected = getMoveDirectionExpected();\n }\n\n if (moveDirectionExpected) {\n preventScroll = true;\n }\n }\n\n if ((typeof e.cancelable !== 'boolean' || e.cancelable) && preventScroll) {\n e.preventDefault();\n }\n }\n }\n\n function panUpdate(e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n\n caf(rafIndex);\n\n if (panStart) {\n rafIndex = raf(function () {\n panUpdate(e);\n });\n }\n\n if (moveDirectionExpected === '?') {\n moveDirectionExpected = getMoveDirectionExpected();\n }\n\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) {\n preventScroll = true;\n }\n\n try {\n if (e.type) {\n events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e));\n }\n } catch (err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew) : dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd(e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n if (carousel) {\n resetDuration(container, '');\n }\n\n panStart = false;\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {\n 'click': function preventClick(e) {\n preventDefaultBehavior(e);\n removeEvents(target, {\n 'click': preventClick\n });\n }\n });\n }\n\n if (carousel) {\n rafIndex = raf(function () {\n if (horizontal && !autoWidth) {\n var indexMoved = -dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n index += indexMoved;\n } else {\n var moved = -(translateInit + dist);\n\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n\n if (moved > slidePositions[i] && dist < 0) {\n index += 1;\n }\n\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n } // reset\n\n\n if (options.preventScrollOnTouch === 'auto') {\n preventScroll = false;\n }\n\n if (swipeAngle) {\n moveDirectionExpected = '?';\n }\n\n if (autoplay && !animating) {\n setAutoplayTimer();\n }\n } // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n\n\n function updateContentWrapperHeight() {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages() {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n\n\n function updateNavVisibility() {\n if (!nav || navAsThumbnails) {\n return;\n }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n } // cache pages\n\n\n pagesCached = pages;\n }\n }\n\n function info(e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {}\n };\n }\n\n return {\n version: '2.9.3',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function rebuild() {\n return tns(extend(options, optionsElements));\n }\n };\n};","import { tns } from 'tiny-slider/src/tiny-slider';\nimport 'tiny-slider/src/tiny-slider.scss';\n\nimport './testimonials.scss';\n\nconst slider = document.querySelector('.slider');\n\nif (slider) {\n tns({\n autoplay: true,\n autoplayButtonOutput: false,\n autoplayHoverPause: true,\n controls: false,\n });\n}\n","// get css-calc \n// @return - false | calc | -webkit-calc | -moz-calc\n// @usage - var calc = getCalc(); \nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\nexport function calc() {\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n result = false;\n body.appendChild(div);\n\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n\n if (div.offsetWidth === 100) {\n result = val.replace(str, '');\n break;\n }\n }\n } catch (e) {}\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n return result;\n}","// get subpixel support value\n// @return - boolean\nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\nexport function percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '
';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n return supported;\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\nexport function mediaquerySupport() {\n if (window.matchMedia || window.msMatchMedia) {\n return true;\n }\n\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n return position === \"absolute\";\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\nexport function has3DTransforms(tf) {\n if (!tf) {\n return false;\n }\n\n if (!window.getComputedStyle) {\n return false;\n }\n\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n el = doc.createElement('p'),\n has3d,\n cssTF = tf.length > 9 ? '-' + tf.slice(0, -9).toLowerCase() + '-' : '';\n cssTF += 'transform'; // Add it to the body to get the computed style\n\n body.insertBefore(el, null);\n el.style[tf] = 'translate3d(1px,1px,1px)';\n has3d = window.getComputedStyle(el).getPropertyValue(cssTF);\n body.fake ? resetFakeBody(body, docOverflow) : el.remove();\n return has3d !== undefined && has3d.length > 0 && has3d !== \"none\";\n}","export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n return 'tns' + window.tnsId;\n}","// create and append style sheet\nexport function createStyleSheet(media, nonce) {\n // Create the