{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../node_modules/tiny-slider/src/helpers/addEvents.js","webpack:///../node_modules/tiny-slider/src/helpers/addClass.js","webpack:///../node_modules/tiny-slider/src/helpers/removeEvents.js","webpack:///../node_modules/tiny-slider/src/helpers/removeClass.js","webpack:///../node_modules/tiny-slider/src/helpers/setAttrs.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/checkStorageValue.js","webpack:///../node_modules/tiny-slider/src/helpers/setLocalStorage.js","webpack:///../node_modules/tiny-slider/src/helpers/raf.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/getCssRulesLength.js","webpack:///../node_modules/tiny-slider/src/helpers/addCSSRule.js","webpack:///../node_modules/tiny-slider/src/helpers/forEach.js","webpack:///../node_modules/tiny-slider/src/helpers/removeAttrs.js","webpack:///../node_modules/tiny-slider/src/helpers/getBody.js","webpack:///../node_modules/tiny-slider/src/helpers/setFakeBody.js","webpack:///../node_modules/tiny-slider/src/helpers/resetFakeBody.js","webpack:///../node_modules/@uvocore-front/utils/dist/index.js","webpack:///../node_modules/tiny-slider/src/helpers/docElement.js","webpack:///../node_modules/webpack/buildin/global.js","webpack:///./utils/addActiveLinkClass.js","webpack:///../node_modules/tiny-slider/src/helpers/hasAttr.js","webpack:///../node_modules/tiny-slider/src/helpers/whichProperty.js","webpack:///../node_modules/tiny-slider/src/helpers/getAttr.js","webpack:///../node_modules/console-browserify/index.js","webpack:///../node_modules/util/util.js","webpack:///../node_modules/tiny-slider/src/helpers/isNodeList.js","webpack:///../node_modules/tiny-slider/src/helpers/passiveOption.js","webpack:///../node_modules/tiny-slider/src/helpers/caf.js","webpack:///../node_modules/tiny-slider/src/helpers/extend.js","webpack:///../node_modules/process/browser.js","webpack:///../node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","webpack:///../node_modules/tiny-slider/src/helpers/isVisible.js","webpack:///../node_modules/tiny-slider/src/helpers/getEndProperty.js","webpack:///../node_modules/util/support/isBufferBrowser.js","webpack:///../node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///../node_modules/assert/assert.js","webpack:///../node_modules/object-assign/index.js","webpack:///./components/Header/main/FixHeader.js","webpack:///./components/Header/main/index.js","webpack:///../node_modules/tiny-slider/src/tiny-slider.js","webpack:///../node_modules/tiny-slider/src/helpers/getSlideId.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/createStyleSheet.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/tiny-slider/src/helpers/has3DTransforms.js","webpack:///../node_modules/tiny-slider/src/helpers/events.js","webpack:///../node_modules/tiny-slider/src/helpers/jsTransform.js","webpack:///./components/Slider/index.js","webpack:///../node_modules/tiny-slider/src/helpers/Object.keys.js","webpack:///../node_modules/tiny-slider/src/helpers/childNode.remove.js","webpack:///./components/Footer/index.js","webpack:///./components/Calculator/short/CalculatorShort.js","webpack:///./sections/statistic-section/index.js","webpack:///./components/Calculator/default/Calculator.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","addEvents","el","obj","preventScrolling","prop","option","indexOf","addEventListener","addClass","str","classList","add","className","removeEvents","removeEventListener","removeClass","remove","replace","setAttrs","els","attrs","Array","toString","length","setAttribute","hideElement","forceHide","style","display","showElement","checkStorageValue","JSON","parse","setLocalStorage","storage","access","setItem","e","win","window","raf","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","setTimeout","classListSupport","document","createElement","hasClass","contains","getCssRulesLength","sheet","cssRules","rules","addCSSRule","selector","index","insertRule","addRule","forEach","arr","callback","scope","removeAttrs","attrLength","j","removeAttribute","getBody","doc","body","fake","setFakeBody","docOverflow","overflow","background","appendChild","resetFakeBody","offsetHeight","default","iterator","constructor","deployHash","arguments","getElementsByTagName","Promise","u","concat","querySelector","f","async","defer","a","readyState","test","onload","onreadystatechange","src","innerHTML","element","marginValue","thresholdValue","querySelectorAll","rootMargin","threshold","IntersectionObserver","isIntersecting","unobserve","target","slice","observe","widgetLink","loader","customLoader","insertLoaderTo","loaderPosition","fn","then","catch","Error","__WMS__","utils","loadScripts","addLoader","observeElement","getWidget","docElement","documentElement","g","this","Function","addActiveLinkClass","anchorSelector","activeClass","anchors","current","location","pathname","getAttribute","hasAttr","attr","hasAttribute","whichProperty","props","Props","charAt","toUpperCase","substr","prefix","push","undefined","getAttr","util","assert","now","Date","getTime","console","times","global","functions","log","apply","warn","label","time","duration","err","message","format","error","stack","inspect","expression","ok","tuple","getOwnPropertyDescriptors","keys","descriptors","getOwnPropertyDescriptor","formatRegExp","isString","objects","join","args","len","String","x","Number","stringify","_","isNull","isObject","deprecate","msg","process","noDeprecation","warned","throwDeprecation","traceDeprecation","trace","debugEnviron","debugs","opts","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","styles","recurseTimes","isFunction","ret","primitive","simple","isNumber","formatPrimitive","visibleKeys","array","hash","val","idx","arrayToHash","getOwnPropertyNames","isError","formatError","isRegExp","RegExp","isDate","output","base","braces","isArray","toUTCString","formatProperty","match","formatArray","map","pop","reduce","prev","cur","numLinesEst","reduceToSingleString","desc","set","split","line","ar","arg","re","objectToString","pad","debuglog","env","NODE_DEBUG","pid","isNullOrUndefined","isSymbol","isPrimitive","isBuffer","months","timestamp","getHours","getMinutes","getSeconds","getDate","getMonth","inherits","origin","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","newReason","promisify","original","TypeError","writable","configurable","promiseResolve","promiseReject","promise","resolve","reject","setPrototypeOf","getPrototypeOf","defineProperties","custom","callbackify","callbackified","maybeCb","self","nextTick","rej","isNodeList","item","supportsPassive","passiveOption","passive","caf","cancelAnimationFrame","mozCancelAnimationFrame","id","clearTimeout","extend","copy","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","title","browser","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","arrayFromNodeList","nl","isVisible","getComputedStyle","getEndProperty","propIn","propOut","endProp","toLowerCase","fill","readUInt8","ctor","superCtor","super_","TempCtor","objectAssign","compare","b","y","Math","min","Buffer","_isBuffer","hasOwn","pSlice","functionsHaveNames","pToString","isView","arrbuf","ArrayBuffer","DataView","buffer","regex","getName","func","truncate","something","rawname","fail","actual","expected","operator","stackStartFunction","AssertionError","_deepEqual","strict","memos","source","multiline","lastIndex","ignoreCase","Float32Array","Float64Array","Uint8Array","actualIndex","actualVisitedObjects","aIsArgs","isArguments","bIsArgs","ka","objectKeys","kb","sort","objEquiv","expectedException","isPrototypeOf","_throws","shouldThrow","block","_tryBlock","userProvidedMessage","isUnexpectedException","options","generatedMessage","captureStackTrace","out","fn_name","next_line","substring","equal","notEqual","deepEqual","deepStrictEqual","notDeepEqual","notDeepStrictEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","assign","test1","test2","fromCharCode","test3","letter","shouldUseNative","from","symbols","to","FixedHeader","mainHeader","isOrderPage","pageYOffset","scrollTop","offset","innerWidth","ToggleMenu","header","burger","menu","state","isOpen","open","hide","HeaderSubmenu","HeaderSubmenuTip","matchMedia","matches","toggle","tns","container","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","KEYS","ENTER","SPACE","LEFT","RIGHT","tnsStorage","localStorageAccess","browserInfo","navigator","userAgent","uid","localStorage","getItem","removeItem","CALC","PERCENTAGELAYOUT","CSSMQ","TRANSFORM","HAS3DTRANSFORMS","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","tnsList","optionsElements","nodeName","children","carousel","responsiveTem","updateOptions","middleWrapper","breakpointZone","horizontal","outerWrapper","innerWrapper","containerParent","parentNode","containerHTML","outerHTML","slideItems","slideCount","windowWidth","getWindowWidth","isOn","setBreakpointZone","slidePositions","imgsComplete","liveregionCurrent","itemsMax","result","getOption","viewport","getViewportWidth","floor","fixedWidthViewportWidth","slideItemsOut","cloneCount","bp","tem","ceil","max","getItemsMax","hasOption","slideCountNew","hasRightDeadZone","rightBoundary","getRightBoundary","updateIndexBeforeTransform","transformAttr","transformPrefix","transformPostfix","getIndexMax","getStartIndex","indexCached","indexMin","getCurrentSlide","indexMax","moveDirectionExpected","running","events","newContainerClasses","slideId","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","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","insertBefore","fragmentBefore","createDocumentFragment","fragmentAfter","num","cloneFirst","cloneNode","firstChild","cloneLast","initStructure","left","fontSize","slide","marginLeft","getSlideMarginLeft","getTransitionDurationStyle","getInnerWrapperStyles","getContainerWidth","getSlideWidthStyle","getSlideGutterStyle","getAnimationDurationStyle","update_carousel_transition_duration","cssText","width","parseInt","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","autoHeightBP","gutterBP","initSheet","initSliderTransform","updateIndex","leftEdge","rightEdge","transformCore","resetDuration","doContainerTransform","getContainerTransformValue","updateContentWrapperHeight","eve","animateSlide","getInfo","info","play","startAutoplay","pause","updateSliderHeight","updateInnerWrapperHeight","refresh","destroy","ownerNode","onResize","toggleAutoplay","clearInterval","htmlList","prevEl","previousElementSibling","parentEl","nextElementSibling","firstElementChild","rebuild","condition","ind","getAbsIndex","absIndex","clientWidth","getInsertPosition","pos","gap","getClientWidth","rect","div","getBoundingClientRect","right","ww","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","gutterTemUnit","itemsTem","dividend","getCSSPrefix","imgs","imgsLoadedCheck","getImageArray","initSliderTransformStyleCheck","doContainerTransformSilent","initTools","initEvents","stylesApplicationCheck","toFixed","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","autoheightTem","vp","getVisibleSlideRange","start","end","rangestart","rangeend","parseFloat","point","cell","stopPropagation","srcset","splice","navPrev","navCurrent","updateNavStatus","getMaxSlideHeight","slideStart","slideRange","heights","maxHeight","wp","attr2","range","getLowerCaseNodeName","isAriaDisabled","disEnableElement","prevDisabled","nextDisabled","disablePrev","disableNext","getCenterGap","denominator","number","classOut","classIn","isOut","render","sliderMoved","type","strTrans","event","propertyName","targetIndex","indexGap","isNaN","abs","factor","passEventObject","targetIn","setInterval","updateAutoplayButton","action","focus","isTouchEvent","changedTouches","srcElement","preventDefaultBehavior","preventDefault","returnValue","getMoveDirectionExpected","$","clientX","clientY","panUpdate","dist","preventClick","indexMoved","moved","rough","displayIndex","getSlideId","tnsId","calc","vals","offsetWidth","percentageLayout","supported","wrapper","outer","count","mediaquerySupport","position","rule","styleSheet","createTextNode","currentStyle","createStyleSheet","media","removeCSSRule","deleteRule","removeRule","toDegree","atan2","PI","getTouchDirection","angle","direction","has3DTransforms","tf","has3d","cssTF","getPropertyValue","Events","topics","eventName","data","jsTransform","postfix","tick","unit","positionTick","moveElement","slider","480","768","next","Element","removeChild","isPageConfig","pageConfig","pagePaperType","calculator","calcOptions","ID","calculatorType","parent","deafault","academicLevelDefault","paperTypesDefault","Calc","Inc","elem","input","delay","decimal","currency","increment","interval","reset","animateStatBlock","animateBlocks","deadlinesDefault"],"mappings":"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","file":"js/seo.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 197);\n","import { passiveOption } from './passiveOption.js';\n\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 { classListSupport, hasClass } from './hasClass.js';\nvar addClass = classListSupport ?\n function (el, str) {\n if (!hasClass(el, str)) { el.classList.add(str); }\n } :\n function (el, str) {\n if (!hasClass(el, str)) { el.className += ' ' + str; }\n };\n\nexport { addClass };","import { passiveOption } from './passiveOption.js';\n\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}","import { classListSupport, hasClass } from './hasClass.js';\nvar removeClass = classListSupport ?\n function (el, str) {\n if (hasClass(el, str)) { el.classList.remove(str); }\n } :\n function (el, str) {\n if (hasClass(el, str)) { el.className = el.className.replace(str, ''); }\n };\n\nexport { removeClass };","import { isNodeList } from \"./isNodeList.js\";\n\nexport function setAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n if (Object.prototype.toString.call(attrs) !== '[object Object]') { return; }\n\n for (var i = els.length; i--;) {\n for(var key in attrs) {\n els[i].setAttribute(key, attrs[key]);\n }\n }\n}","export function hideElement(el, forceHide) {\n if (el.style.display !== 'none') { el.style.display = 'none'; }\n}","export function showElement(el, forceHide) {\n if (el.style.display === 'none') { el.style.display = ''; }\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 { storage.setItem(key, value); } catch (e) {}\n }\n return value;\n}","var win = window;\n\nexport var raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n","export var classListSupport = 'classList' in document.createElement('_');","import { classListSupport } from './classListSupport.js';\n\nvar hasClass = classListSupport ?\n function (el, str) { return el.classList.contains(str); } :\n function (el, str) { return el.className.indexOf(str) >= 0; };\n\nexport { classListSupport, hasClass };","export function getCssRulesLength(sheet) {\n var rule = ('insertRule' in sheet) ? sheet.cssRules : sheet.rules;\n return rule.length;\n}","// cross browsers addRule method\nimport { raf } from './raf.js';\nexport function addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ?\n sheet.insertRule(selector + '{' + rules + '}', index) :\n sheet.addRule(selector, rules, index);\n // });\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}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function removeAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n attrs = (attrs instanceof Array) ? attrs : [attrs];\n\n var attrLength = attrs.length;\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\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}","import { docElement } from './docElement.js';\n\nexport function setFakeBody (body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}","import { docElement } from './docElement.js';\n\nexport function resetFakeBody (body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.utils=t():e.utils=t()}(window,(function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=1)}([function(e,t){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function o(t){return\"function\"==typeof Symbol&&\"symbol\"===n(Symbol.iterator)?e.exports=o=function(e){return n(e)}:e.exports=o=function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":n(e)},o(t)}e.exports=o},function(e,t,n){e.exports=n(3)},function(e,t,n){},function(e,t,n){\"use strict\";n.r(t);var o=n(0),r=n.n(o),i=window.deployHash&&\"string\"==typeof window.deployHash&&\"\"!==window.deployHash?window.deployHash:\"\",c=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.getElementsByTagName(\"head\")[0],n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];return new Promise((function(r,c){if(e&&\"string\"==typeof e){var u=i?\"?v=\".concat(i):\"\",d=e+u;if(document.querySelector('script[src=\"'.concat(d,'\"]')))r();else{var f=document.createElement(\"script\");f.async=n,f.defer=o;var a=function(e,t){(t||!f.readyState||/loaded|complete/.test(f.readyState))&&(f.onload=null,f.onreadystatechange=null,f=void 0,t?c():r())};f.onload=a,f.onreadystatechange=a,f.src=d,t.appendChild(f)}}}))},u=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"center\";e&&\"string\"==typeof e&&(document.querySelector(\"\".concat(e)).innerHTML='\\n
\\n
\\n
\\n '))},d=(n(2),u),f=function(e){var t=e.element,n=e.marginValue,o=void 0===n?400:n,r=e.thresholdValue,i=void 0===r?0:r,c=e.callback,u=void 0===c?function(){}:c;if(t&&\"string\"==typeof t){var d=document.querySelectorAll(t),f={rootMargin:\"\".concat(o,\"px 0px \").concat(o,\"px 0px\"),threshold:i},a=new IntersectionObserver((function(e,t){e.forEach((function(e){e.isIntersecting&&(t.unobserve(e.target),u(e.target))}))}),f);d&&[].slice.call(d).forEach((function(e){a.observe(e)}))}},a=function(e){var t=e.widgetLink,n=e.loader,o=void 0===n||n,r=e.customLoader,i=void 0===r?void 0:r,u=e.insertLoaderTo,f=void 0===u?void 0:u,a=e.loaderPosition,l=void 0===a?\"center\":a,s=e.fn,p=void 0===s?function(){}:s;t&&\"string\"==typeof t&&c(t).then((function(){o&&i&&\"function\"==typeof i?i(f,l):o&&d(f,l),p()})).catch((function(e){throw new Error(e)}))};n.d(t,\"loadScripts\",(function(){return c})),n.d(t,\"addLoader\",(function(){return d})),n.d(t,\"observeElement\",(function(){return f})),n.d(t,\"getWidget\",(function(){return a})),window.__WMS__=\"object\"===(\"undefined\"==typeof __WMS__?\"undefined\":r()(__WMS__))?__WMS__:{},window.__WMS__.utils={loadScripts:c,addLoader:d,observeElement:f,getWidget:a}}])}));\n//# sourceMappingURL=index.js.map","export var docElement = document.documentElement;","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n *\n * @param anchorSelector\n * @param activeClass\n */\nconst addActiveLinkClass = ({ anchorSelector = 'a', activeClass = 'active' }) => {\n const anchors = document.querySelectorAll(anchorSelector);\n if (!anchors) return;\n\n const current = window.location.pathname;\n\n for (let i = 0; i < anchors.length; i += 1) {\n if (anchors[i].getAttribute('href') === current) {\n anchors[i].classList.add(activeClass);\n }\n }\n};\n\nexport default addActiveLinkClass;\n","export function hasAttr(el, attr) {\n return el.hasAttribute(attr);\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 \n prefixes.forEach(function(prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n\n props = arr;\n }\n\n var el = document.createElement('fakeelement'),\n len = props.length;\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if( el.style[prop] !== undefined ){ return prop; }\n }\n\n return false; // explicit for ie9-\n}\n","export function getAttr(el, attr) {\n return el.getAttribute(attr);\n}","/*global window, global*/\nvar util = require(\"util\")\nvar assert = require(\"assert\")\nfunction now() { return new Date().getTime() }\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n console = window.console\n} else {\n console = {}\n}\n\nvar functions = [\n [log, \"log\"],\n [info, \"info\"],\n [warn, \"warn\"],\n [error, \"error\"],\n [time, \"time\"],\n [timeEnd, \"timeEnd\"],\n [trace, \"trace\"],\n [dir, \"dir\"],\n [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n var tuple = functions[i]\n var f = tuple[0]\n var name = tuple[1]\n\n if (!console[name]) {\n console[name] = f\n }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n console.log.apply(console, arguments)\n}\n\nfunction warn() {\n console.log.apply(console, arguments)\n}\n\nfunction error() {\n console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n times[label] = now()\n}\n\nfunction timeEnd(label) {\n var time = times[label]\n if (!time) {\n throw new Error(\"No such label: \" + label)\n }\n\n delete times[label]\n var duration = now() - time\n console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n var err = new Error()\n err.name = \"Trace\"\n err.message = util.format.apply(null, arguments)\n console.error(err.stack)\n}\n\nfunction dir(object) {\n console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n if (!expression) {\n var arr = slice.call(arguments, 1)\n assert.ok(false, util.format.apply(null, arr))\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","export function isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\"; \n}","// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\nexport var passiveOption = supportsPassive ? { passive: true } : false;","var win = window;\n\nexport var caf = win.cancelAnimationFrame\n || win.mozCancelAnimationFrame\n || function(id){ clearTimeout(id); };\n","export function extend() {\n var obj, name, 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 return target;\n}","// shim for using process in browser\nvar process = module.exports = {};\n\n// 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}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\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 try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\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\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\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\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\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 if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\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) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","export function arrayFromNodeList (nl) {\n var arr = [];\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n return arr;\n}","export function isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\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 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 return endProp;\n}","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","'use strict';\n\nvar objectAssign = require('object-assign');\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\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) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n if (!value) fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","function FixedHeader() {\n const mainHeader = document.querySelector('.Header');\n const isOrderPage = document.querySelector('.OrderPage');\n const pageYOffset = window.pageYOffset || document.documentElement.scrollTop;\n let offset = 100;\n\n if (!mainHeader || isOrderPage) return false;\n\n if (window.innerWidth <= 860) {\n offset = 0;\n }\n\n if (pageYOffset > offset) {\n mainHeader.classList.add('Header--fixed');\n } else {\n mainHeader.classList.remove('Header--fixed');\n }\n}\n\nexport default FixedHeader;\n","import './style.scss';\nimport addActiveLinkClass from '../../../utils/addActiveLinkClass';\nimport FixedHeader from './FixHeader';\n\nfunction ToggleMenu() {\n const header = document.querySelector('.Header');\n const burger = header.querySelector('.Header__burger');\n const menu = document.querySelector('.Header__menu');\n\n this.state = {\n isOpen: false,\n };\n\n this.open = () => {\n header.classList.add('Header--open');\n menu.classList.add('Header__menu--open');\n burger.classList.add('Header__burger--active');\n this.state.isOpen = true;\n };\n\n this.hide = () => {\n if (!this.state.isOpen) return;\n\n this.state.isOpen = false;\n header.classList.remove('Header--open');\n menu.classList.remove('Header__menu--open');\n burger.classList.remove('Header__burger--active');\n };\n\n burger.addEventListener('click', () => {\n if (this.state.isOpen) {\n this.hide();\n } else {\n this.open();\n }\n });\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n new ToggleMenu(); /* eslint-disable-line */\n\n // Add active class\n addActiveLinkClass({\n anchorSelector: '.Header__menu-list-item a',\n });\n});\n\ndocument.addEventListener('scroll', () => {\n FixedHeader();\n});\n\nfunction OpenSubmenu() {\n const HeaderSubmenu = document.querySelector('.Header-submenu');\n const HeaderSubmenuTip = document.querySelector('.Header-submenu__tip');\n\n if (HeaderSubmenu && HeaderSubmenuTip) {\n HeaderSubmenuTip.addEventListener('click', () => {\n HeaderSubmenu.classList.toggle('Header-submenu--open');\n });\n }\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n if (window.matchMedia('(max-width: 1023px)').matches) {\n OpenSubmenu();\n }\n});\n","import './helpers/Object.keys';\nimport './helpers/childNode.remove';\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';\n\nexport var tns = function(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 }, options || {});\n \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 if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) { tnsStorage = {}; }\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) { tnsStorage.removeItem(item); });\n }\n // update browserInfo\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);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'], \n optionsElements = {};\n \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) { console.warn('Can\\'t find', options[item]); }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) { console.warn('No slides found in', options.container); }\n return;\n }\n\n // update options\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 for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to: \n // 300: { \n // items: 2 \n // } \n val = typeof val === 'number' ? {items: val} : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions (obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') { obj[key] = 'page'; }\n if (key === 'edgePadding') { obj[key] = false; }\n if (key === 'autoHeight') { obj[key] = false; }\n }\n\n // update responsive options\n if (key === 'responsive') { updateOptions(obj[key]); }\n }\n }\n if (!carousel) { updateOptions(options); }\n\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n\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 if (responsive) { setBreakpointZone(); }\n if (carousel) { container.className += ' tns-vpfix'; }\n\n // fixedWidth: viewport > rightBoundary > indexMax\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(),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions, // 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() { return center && !loop ? slideCount - 1 : Math.ceil(- rightBoundary / (fixedWidth + gutter)); };\n } else if (autoWidth) {\n return function() {\n for (var i = slideCountNew; i--;) {\n if (slidePositions[i] >= - rightBoundary) { return i; }\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 = {'visibilitychange': onVisibilityChange},\n docmentKeydownEvent = {'keydown': onDocumentKeydown},\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\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 imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\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 }\n\n // nav\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 }\n\n // autoplay\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 ? \n function(a, b) { return a.x - b.x; } :\n function(a, b) { return a.y - b.y; };\n }\n \n // disable slider when slidecount <= items\n if (!autoWidth) { resetVariblesWhenDisable(disable || freeze); }\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\n if (carousel) { container.className = container.className.replace('tns-vpfix', ''); }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\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 while (tem < 0) { tem += slideCount; }\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) { i = index; }\n\n if (carousel) { i -= cloneCount; }\n while (i < 0) { i += slideCount; }\n\n return Math.floor(i%slideCount);\n }\n\n function getCurrentNavIndex () {\n var absIndex = getAbsIndex(),\n result;\n\n result = navAsThumbnails ? absIndex : \n fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) : \n Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) { result = pages - 1; }\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;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) { arr.push(options[str]); }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) { arr.push(tem); }\n }\n }\n\n if (!arr.length) { arr.push(0); }\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\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 var div = doc.createElement('div'), rect, 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]) { return true; }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption (item, ww) {\n if (ww == null) { ww = windowWidth; }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n\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]) { result = responsive[bp][item]; }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') { result = getOption('items'); }\n if (!carousel && (item === 'slideBy' || item === 'items')) { result = Math.floor(result); }\n\n return result;\n }\n }\n\n function getSlideMarginLeft (i) {\n return CALC ? \n CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' : \n 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 if (gutterTem) { gap -= gutterTem; }\n str = horizontal ?\n 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' :\n '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) { str += getTransitionDurationStyle(speedTem); }\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 ?\n CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' :\n 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) { itemsTem = Math.floor(itemsTem); }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ? \n CALC + '(100% / ' + dividend + ')' : \n 100 / dividend + '%';\n }\n\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle (gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\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 if (prefix) { prefix = '-' + prefix + '-'; }\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\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') { container.id = slideId; }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) { newContainerClasses += ' tns-autowidth'; }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n\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);\n\n // add id, class, aria attributes \n // before clone slides\n forEach(slideItems, function(item, i) {\n addClass(item, 'tns-item');\n if (!item.id) { item.id = slideId + '-item' + i; }\n if (!carousel && animateNormal) { addClass(item, animateNormal); }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + 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 removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\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\n function initSliderTransform () {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add complete class if all images are loaded/failed\n forEach(imgs, function(img) {\n var src = img.src;\n \n if (src && src.indexOf('data:image') < 0) {\n addEvents(img, imgEvents);\n img.src = '';\n img.src = src;\n addClass(img, 'loading');\n } else if (!lazyload) {\n imgLoaded(img);\n }\n });\n\n // All imgs are completed\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // Check imgs in window only for auto height\n if (!autoWidth && horizontal) { imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1)); }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck); });\n\n } else {\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck () {\n if (autoWidth) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n (function stylesApplicationCheck() {\n slideItems[num - 1].getBoundingClientRect().right.toFixed(2) === slideItems[num].getBoundingClientRect().left.toFixed(2) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck() }, 16);\n })();\n } else {\n initSliderTransformCore();\n }\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 if (freezable) { freeze = getFreeze(); }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\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 }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\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 }\n\n\n // ## BASIC STYLES\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 }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) { str += getSlideGutterStyle(options.gutter); }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n if (ANIMATIONDURATION) { str += getAnimationDurationStyle(speed); }\n }\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n\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 } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) { str += getSlideGutterStyle(gutter); }\n\n // append to the last line\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n\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);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || (fixedWidth && 'gutter' in opts))) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || (fixedWidth && 'gutter' in opts) || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) { slideStr += getTransitionDurationStyle(speedBP); }\n if (ANIMATIONDURATION) { slideStr += getAnimationDurationStyle(speedBP); }\n }\n if (slideStr) { slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}'; }\n\n // add up\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();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', '
slide ' + getLiveRegionStr() + ' of ' + slideCount + '
');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {'data-action': txt});\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {'click': toggleAutoplay});\n }\n\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) { addEvents(container, hoverEvents); }\n if (autoplayResetOnVisibility) { addEvents(container, visibilityEvent); }\n }\n }\n \n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {'aria-label': 'Carousel Pagination'});\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 });\n\n // generated nav \n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '';\n }\n navHtml = '
' + navHtml + '
';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility();\n\n // add transition\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], {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '
');\n\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, {'data-controls' : 'prev'});\n setAttrs(nextButton, {'data-controls' : 'next'});\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\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) { addEvents(container, touchEvents, options.preventScrollOnTouch); }\n if (mouseDrag) { addEvents(container, dragEvents); }\n if (arrowKeys) { addEvents(doc, docmentKeydownEvent); }\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, {'resize': onResize});\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) { doAutoHeight(); }\n }\n\n doLazyLoad();\n if (disable) { disableSlider(); } else if (freeze) { freezeSlider(); }\n\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n if (typeof onInit === 'function') { onInit(info()); }\n isOn = true;\n }\n\n function destroy () {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) { sheet.ownerNode.remove(); }\n\n // remove win event listeners\n removeEvents(win, {'resize': onResize});\n\n // arrowKeys, controls, nav\n if (arrowKeys) { removeEvents(doc, docmentKeydownEvent); }\n if (controlsContainer) { removeEvents(controlsContainer, controlsEvents); }\n if (navContainer) { removeEvents(navContainer, navEvents); }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) { removeEvents(autoplayButton, {'click': toggleAutoplay}); }\n if (autoplay) { clearInterval(autoplayTimer); }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) { removeEvents(container, touchEvents); }\n if (mouseDrag) { removeEvents(container, dragEvents); }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n\n tnsList.forEach(function(item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object') {\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 });\n\n\n // reset variables\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;\n // 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') { this[a] = null; }\n }\n isOn = false;\n }\n\n// === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize (e) {\n raf(function(){ resizeTasks(getEvent(e)); });\n }\n\n function resizeTasks (e) {\n if (!isOn) { return; }\n if (nested === 'outer') { events.emit('outerResized', info(e)); }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) { events.emit('newBreakpointStart', info(e)); }\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 }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\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 }\n // update options\n resetVariblesWhenDisable(disable);\n\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\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) { indexMax = getIndexMax(); } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\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 if (!autoplay) { autoplayHoverPause = autoplayResetOnVisibility = false; }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ?\n addEvents(doc, docmentKeydownEvent) :\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n if (nav !== navTem) {\n nav ?\n showElement(navContainer) :\n hideElement(navContainer);\n }\n if (touch !== touchTem) {\n touch ?\n addEvents(container, touchEvents, options.preventScrollOnTouch) :\n removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ?\n addEvents(container, dragEvents) :\n removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) { showElement(autoplayButton); }\n if (!animating && !autoplayUserPaused) { startAutoplay(); }\n } else {\n if (autoplayButton) { hideElement(autoplayButton); }\n if (animating) { stopAutoplay(); }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ?\n addEvents(container, hoverEvents) :\n removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ?\n addEvents(doc, visibilityEvent) :\n removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) { needContainerTransform = true; }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) { innerWrapper.style.height = ''; }\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 if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) { needContainerTransform = true; }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n if (indChanged) { \n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) { additionalUpdates(); }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad(); \n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) { updateGallerySlidePositions(); }\n\n if (!disable && !freeze) {\n // non-meduaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n if (autoHeight !== autoheightTem || speed !== speedTem) {\n update_carousel_transition_duration();\n }\n\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 }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) + \n getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) { doAutoHeight(); }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) { events.emit('newBreakpointEnd', info(e)); }\n }\n\n\n\n\n\n // === INITIALIZATION FUNCTIONS === //\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 for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) { breakpointZone = bp; }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = (function () {\n return loop ? \n carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter)%(fixedWidth + gutter)) { rightEdge -= 1; }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function() {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) { index -= slideCount; }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) { 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) { hideElement(autoplayButton); }\n if (!nav && navContainer) { hideElement(navContainer); }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n\n function enableUI () {\n if (autoplay && autoplayButton) { showElement(autoplayButton); }\n if (nav && navContainer) { showElement(navContainer); }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n }\n }\n\n function freezeSlider () {\n if (frozen) { return; }\n\n // remove edge padding from inner wrapper\n if (edgePadding) { innerWrapper.style.margin = '0px'; }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { addClass(slideItems[i], str); }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n\n frozen = true;\n }\n\n function unfreezeSlider () {\n if (!frozen) { return; }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) { innerWrapper.style.margin = ''; }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { removeClass(slideItems[i], str); }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n\n frozen = false;\n }\n\n function disableSlider () {\n if (disabled) { return; }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { hideElement(slideItems[j]); }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) { removeAttrs(innerWrapper, ['style']); }\n\n // gallery\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 }\n\n // update tools\n disableUI();\n\n disabled = true;\n }\n\n function enableSlider () {\n if (!disabled) { return; }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { showElement(slideItems[j]); }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\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 }\n\n // update tools\n enableUI();\n\n disabled = false;\n }\n\n function updateLiveRegion () {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) { liveregionCurrent.innerHTML = str; }\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) { val = getContainerTransformValue(); }\n var start = index, end, rangestart, rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\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 }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function(point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) { start = i; }\n if (rangeend - point >= 0.5) { end = i; }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\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\n } else {\n if (center || edgePadding) {\n var a = items - 1;\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 getImageArray.apply(null, getVisibleSlideRange()).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) { e.stopPropagation(); };\n addEvents(img, eve);\n\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) { img.srcset = srcset; }\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, 'tns-complete');\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end) {\n var imgs = [];\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll('img'), function (img) { imgs.push(img); });\n start++;\n }\n\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight () {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function(){ imgsLoadedCheck(imgs, updateInnerWrapperHeight); });\n }\n\n function imgsLoadedCheck (imgs, cb) {\n // directly execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check selected image classes otherwise\n imgs.forEach(function (img, index) {\n if (hasClass(img, imgCompleteClass)) { imgs.splice(index, 1); }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) { return cb(); }\n\n // otherwise execute this functiona again\n raf(function(){ imgsLoadedCheck(imgs, cb); });\n } \n\n function additionalUpdates () {\n doLazyLoad(); \n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\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 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 }\n\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 function updateInnerWrapperHeight () {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) { wp.style.height = maxHeight + 'px'; }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions () {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n\n forEach(slideItems, function(item, i) {\n // skip the first slide\n if (i) { slidePositions.push(item.getBoundingClientRect()[attr] - base); }\n // add the end edge\n if (i === slideCountNew - 1) { slidePositions.push(item.getBoundingClientRect()[attr2] - base); }\n });\n }\n\n // update slide\n function updateSlideStatus () {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n\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 }\n // hide slides\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 }\n\n // gallery: update slide position\n function updateGallerySlidePositions () {\n var l = index + Math.min(slideCount, items);\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\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 }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function() {\n forEach(slideItems, function(el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\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\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n \n setAttrs(navCurrent, {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n\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 }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus () {\n if (!controls || rewind || loop) { return; }\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 if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration (el, str) {\n if (TRANSITIONDURATION) { el.style[TRANSITIONDURATION] = str; }\n }\n\n function getSliderWidth () {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap (num) {\n if (num == null) { num = index; }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? ((viewport - gap) - (slidePositions[num + 1] - slidePositions[num] - gutter))/2 :\n fixedWidth ? (viewport - fixedWidth) / 2 :\n (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() :\n getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) { result = 0; }\n\n return result;\n }\n\n function getContainerTransformValue (num) {\n if (num == null) { num = index; }\n\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = - (fixedWidth + gutter) * num;\n if (center) { val += getCenterGap(); }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) { num -= getCenterGap(); }\n val = - num * 100 / denominator;\n }\n } else {\n val = - slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) { val = Math.max(val, rightBoundary); }\n\n val += (horizontal && !autoWidth && !fixedWidth) ? '%' : 'px';\n\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) { val = getContainerTransformValue(); }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide (number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) { l = Math.min(l, slideCountNew); }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) { item.style.left = (i - index) * 100 / items + '%'; }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n \n if (isOut) { slideItemsOut.push(item); }\n }\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 var transformCore = (function () {\n return carousel ?\n function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or \n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually \n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) { 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) { updateContentWrapperHeight(); }\n } :\n function () {\n slideItemsOut = [];\n\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually \n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) { onTransitionEnd(); }\n };\n })();\n\n function render (e, sliderMoved) {\n if (updateIndexBeforeTransform) { updateIndex(); }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) { doAutoHeight(); }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) { stopAutoplay(); }\n\n running = true;\n transformCore();\n }\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 function strTrans (str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\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 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];\n // set item positions\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) { \n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\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 if (!event || \n !carousel && event.target.parentNode === container || \n event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n\n if (!updateIndexBeforeTransform) { \n var indexTem = index;\n updateIndex();\n if (index !== indexTem) { \n events.emit('indexChanged', info());\n\n doContainerTransformSilent();\n }\n } \n\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n running = false;\n indexCached = index;\n }\n }\n\n }\n\n // # ACTIONS\n function goTo (targetIndex, e) {\n if (freeze) { return; }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\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') { targetIndex = parseInt(targetIndex); }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) { targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex)); }\n\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\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;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) { index += slideCount; }\n if (index > indexMax) { index -= slideCount; }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n\n }\n }\n\n // on controls click\n function onControlsClick (e, dir) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\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) { target = target.parentNode; }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\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 if (autoWidth) { index = Math.floor(index); }\n // pass e when click control buttons or keydown\n render((passEventObject || (e && e.type === 'keydown')) ? e : null);\n }\n }\n\n // on nav click\n function onNavClick (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n \n e = getEvent(e);\n var target = getTarget(e), navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) { target = target.parentNode; }\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) { stopAutoplay(); }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer () {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n\n animating = true;\n }\n\n function stopAutoplayTimer () {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton (action, txt) {\n setAttrs(autoplayButton, {'data-action': action});\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay () {\n setAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('stop', autoplayText[1]); }\n }\n\n function stopAutoplay () {\n stopAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('start', autoplayText[0]); }\n }\n\n // programaitcally play/pause the slider\n function play () {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\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 }\n\n // keydown events on document \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 }\n\n // on key control\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) { onControlsClick(e, -1); }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus (el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown (e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) { return; }\n\n // var code = e.keyCode,\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) { setFocus(navItems[navIndex - 1]); }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) { setFocus(navItems[navIndex + 1]); }\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 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) { return; } else { onTransitionEnd(); }\n }\n\n if (autoplay && animating) { stopAutoplayTimer(); }\n \n panStart = true;\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 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) { rafIndex = raf(function(){ panUpdate(e); }); }\n } else {\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) { preventScroll = true; }\n }\n\n if (preventScroll) { e.preventDefault(); }\n }\n }\n\n function panUpdate (e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) { rafIndex = raf(function(){ panUpdate(e); }); }\n\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) { preventScroll = true; }\n\n try {\n if (e.type) { events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e)); }\n } catch(err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\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 if (carousel) { resetDuration(container, ''); }\n panStart = false;\n\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, {'click': function preventClick (e) {\n preventDefaultBehavior(e);\n removeEvents(target, {'click': preventClick});\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 if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) { index += 1; }\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 }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') { preventScroll = false; }\n if (swipeAngle) { moveDirectionExpected = '?'; } \n if (autoplay && !animating) { setAutoplayTimer(); }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\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 /*\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 function updateNavVisibility () {\n if (!nav || navAsThumbnails) { return; }\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 }\n\n // cache pages\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.2',\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() {\n return tns(extend(options, optionsElements));\n }\n };\n};\n","export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\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';\n\nexport function calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\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\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';\n\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\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\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function mediaquerySupport () {\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\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\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\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}","// create and append style sheet\nexport function createStyleSheet (media) {\n // Create the