{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/fizzy-ui-utils/utils.js","webpack:///./node_modules/@threespot/expand-toggle/dist/expand-toggle.m.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/flickity/js/flickity.js","webpack:///./node_modules/ev-emitter/ev-emitter.js","webpack:///./node_modules/flickity/js/index.js","webpack:///./node_modules/fontfaceobserver/fontfaceobserver.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/@threespot/unorphanize/dist/unorphanize.m.js","webpack:///./node_modules/unipointer/unipointer.js","webpack:///./node_modules/get-size/get-size.js","webpack:///./node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js","webpack:///./node_modules/@threespot/object-fit-image/dist/object-fit-image.m.js","webpack:///./node_modules/@threespot/mailto/dist/mailto.m.js","webpack:///./node_modules/fg-loadjs/loadJS.js","webpack:///./node_modules/picturefill/dist/picturefill.js","webpack:///./node_modules/what-input/dist/what-input.js","webpack:///./app/javascript/modules/external-links.js","webpack:///./node_modules/desandro-matches-selector/matches-selector.js","webpack:///./node_modules/flickity/js/cell.js","webpack:///./node_modules/flickity/js/slide.js","webpack:///./node_modules/flickity/js/animate.js","webpack:///./node_modules/flickity/js/drag.js","webpack:///./node_modules/unidragger/unidragger.js","webpack:///./node_modules/flickity/js/prev-next-button.js","webpack:///./node_modules/flickity/js/page-dots.js","webpack:///./node_modules/flickity/js/player.js","webpack:///./node_modules/flickity/js/add-remove-cell.js","webpack:///./node_modules/flickity/js/lazyload.js","webpack:///./node_modules/flickity-as-nav-for/as-nav-for.js","webpack:///./app/javascript/modules/scrollable-tables.js","webpack:///./app/javascript/modules/background-picture.js","webpack:///./app/javascript/modules/communities-expand.js","webpack:///./app/javascript/modules/font-face.js","webpack:///./app/javascript/modules/gallery.js","webpack:///./app/javascript/modules/homepage-mobile-nav.js","webpack:///./app/javascript/modules/link-icons.js","webpack:///./app/javascript/modules/mailto.js","webpack:///./app/javascript/modules/orphans.js","webpack:///./app/javascript/modules/terms-expand.js","webpack:///./app/javascript/modules/youtube.js","webpack:///./app/javascript/packs/main.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","g","this","Function","e","window","isObject","now","toNumber","nativeMax","Math","max","nativeMin","min","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","arguments","clearTimeout","cancel","flush","type","factory","matchesSelector","utils","a","b","prop","num","div","arraySlice","Array","slice","makeArray","obj","isArray","length","removeFrom","ary","index","indexOf","splice","getParent","elem","selector","parentNode","document","body","getQueryElement","querySelector","handleEvent","event","method","filterFindElements","elems","ffElems","forEach","HTMLElement","push","childElems","querySelectorAll","debounceMethod","_class","methodName","threshold","timeoutName","timeout","_this","docReady","callback","readyState","addEventListener","toDashed","str","replace","match","$1","$2","toLowerCase","console","htmlInit","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","jQuery","attr","getAttribute","JSON","parse","error","className","instance","data","__webpack_exports__","eval","freeGlobal","freeSelf","self","root","EvEmitter","getSize","Cell","Slide","animatePrototype","getComputedStyle","moveElements","toElem","appendChild","shift","GUID","instances","Flickity","element","queryElement","flickityGUID","option","$element","extend","constructor","defaults","_create","accessibility","cellAlign","freeScrollFriction","friction","namespaceJQueryEvents","percentPosition","resize","selectedAttraction","setGallerySize","createMethods","proto","id","guid","eventName","selectedIndex","restingFrames","x","velocity","originSide","rightToLeft","viewport","createElement","_createSlider","watchCSS","on","listener","activate","opts","isActive","classList","add","_filterFindCellElements","children","slider","reloadCells","tabIndex","emitEvent","selectInitialIndex","isInitActivated","dispatchEvent","style","cellSelector","cells","_makeCells","positionCells","_getWrapShiftCells","map","cellElem","getLastCell","getLastSlide","slides","_sizeCells","_positionCells","maxCellHeight","cellX","startCell","size","outerWidth","len","cell","setPosition","outerHeight","slideableWidth","updateSlides","_containSlides","slidesWidth","target","slide","nextMargin","canCellFit","_getCanCellFit","slideWidth","firstMargin","updateTarget","addCell","updateSelectedSlide","groupCells","number","parseInt","percentMatch","percent","innerWidth","_init","reposition","positionSliderAtSelected","setCellAlign","cursorPosition","cellAlignShorthands","center","left","right","shorthand","height","adaptiveHeight","selectedSlide","wrapAround","_unshiftCells","beforeShiftCells","afterShiftCells","gapX","cellIndex","_getGapCells","increment","contain","isRightToLeft","beginMargin","endMargin","contentWidth","isContentSmaller","beginBound","endBound","emitArgs","$event","jQEvent","Event","trigger","select","isWrap","isInstant","_wrapSelect","modulo","prevIndex","startAnimation","wrapIndex","delta","abs","backWrapDelta","forewardWrapDelta","isDragSelect","previous","next","unselectSelectedSlide","selectedCells","selectedElements","getCellElements","selectedCell","selectedElement","unselect","initialIndex","queryCell","selectCell","getCellSlideIndex","getCell","getCells","getParentCell","getAdjacentCellElements","adjCount","cellElems","slideIndex","uiChange","childUIPointerDown","preventDefault","focus","onresize","isAnimating","isDragging","content","deactivate","onkeydown","isNotFocused","activeElement","handler","keyboardHandlers","keyCode","leftMethod","rightMethod","prevScrollY","pageYOffset","preventScroll","scrollTo","pageXOffset","remove","destroy","removeChild","removeAttribute","removeEventListener","allOff","removeData","bridget","setJQuery","jq","events","_events","listeners","once","onceEvents","_onceEvents","off","onceListeners","f","q","u","then","v","h","Promise","resolve","reject","race","all","k","attachEvent","w","setAttribute","createTextNode","j","cssText","B","offsetWidth","width","scrollLeft","scrollWidth","C","D","family","weight","stretch","context","E","F","G","H","M","fonts","N","font","join","load","J","Date","getTime","K","L","test","navigator","vendor","exec","userAgent","I","O","Error","P","detachEvent","y","z","A","dir","hidden","global","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","valueOf","isBinary","trimmedEndIndex","reTrimStart","string","reWhitespace","charAt","baseGetTag","isObjectLike","getRawTag","objectToString","symToStringTag","objectProto","nativeObjectToString","toString","isOwn","tag","unmasked","configurable","noop","Unipointer","bindStartEvent","_bindStartEvent","unbindStartEvent","isAdd","bindMethod","startEvent","PointerEvent","getTouch","touches","touch","identifier","pointerIdentifier","onmousedown","button","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointer","isPointerDown","pointerId","pointerDown","_bindPostStartEvents","postStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","pointerMove","onmouseup","_pointerUp","onpointerup","ontouchend","_pointerDone","pointerUp","_pointerReset","pointerDone","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","getPointerPoint","pageX","pageY","getStyleSize","parseFloat","isNaN","logError","message","measurements","measurementsLength","getZeroSize","innerHeight","getStyle","isBoxSizeOuter","isSetup","setup","padding","borderStyle","borderWidth","boxSizing","documentElement","round","nodeType","display","offsetHeight","isBorderBox","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","Element","closest","ownerDocument","item","parentElement","bubbles","cancelable","detail","createEvent","initCustomEvent","CustomEvent","requestAnimationFrame","cancelAnimationFrame","ignore","header","topOnEmptyHash","speed","speedAsDuration","durationMax","durationMin","clip","offset","easing","customEasing","updateURL","popstate","emitEvents","substr","String","charCodeAt","InvalidCharacterError","scrollHeight","clientHeight","offsetTop","outline","anchor","toggle","cancelScroll","tagName","offsetParent","S","floor","history","pushState","smoothScroll","stringify","title","matchMedia","matches","defaultPrevented","metaKey","ctrlKey","shiftKey","hostname","location","pathname","href","decodeURIComponent","hash","replaceState","state","animateScroll","src","cb","ordered","tmp","ref","getElementsByTagName","script","async","insertBefore","onload","timer","dummySrc","fixRespimg","findPictureImgs","onResize","mq","init","ua","HTMLPictureElement","RegExp","img","source","sizes","picture","nodeName","toUpperCase","cloneNode","firstElementChild","_pfLastSize","imgs","addListener","srcset","eminpx","alwaysCheckWDescriptor","evalId","pf","isSupportTestReady","image","getImgAttr","setImgAttr","removeImgAttr","docElem","types","cfg","algorithm","srcAttr","srcsetAttr","supportAbort","curSrcProp","regWDesc","regSize","setOptions","picturefillCFG","fsCss","isVwDirty","cssCache","sizeLengthCache","DPR","devicePixelRatio","units","px","alreadyRun","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","evt","fn","capture","memoize","cache","input","isSpace","regLength","buildStr","image2","width1","isDomReady","timestamp","later","regReady","run","lastClientWidth","evalCSS","css","parsedLength","setResolution","candidate","sizesattr","cWidth","calcListLength","res","picturefill","opt","elements","plen","qsa","reevaluate","reselect","sel","selShort","setupRun","fillImg","teardownRun","ascendingSort","getCandidateForSrc","set","candidates","parseSet","makeUrl","url","warn","implementation","hasFeature","supSrcset","supSizes","supPicture","complete","onerror","setSize","matchesMedia","media","mMQ","calcLength","sourceSizeValue","supportsType","parseSize","sourceSizeStr","cands","collectCharacters","regEx","chars","substring","pos","descriptors","currentDescriptor","inputLength","parseDescriptors","desc","lastChar","intVal","floatVal","pError","has1x","tokenize","parseSrcset","getEmValue","originalHTMLCSS","originalBodyCSS","sourceSizeListStr","uT","winningLength","strValue","unparsedSizesList","unparsedSizesListLength","unparsedSize","lastComponentValue","regexCssLengthWithUnits","regexCssCalc","chrctr","component","componentArray","listArray","parenDepth","inComment","pushComponent","pushComponentArray","parseComponentValues","pop","parseSizes","setRes","applySetCandidate","bestCandidate","curSrc","curCan","candidateSrc","abortCurSrc","lowerValue","higherValue","dprValue","isCached","bonusFactor","bonus","meanDensity","imageData","dpr","sets","setSrcToCur","cached","sort","pow","sqrt","setSrc","origWidth","getSet","parseSets","parent","srcsetAttribute","imageSet","isWDescripor","srcsetParsed","hasPicture","pic","sources","getAllSourceElements","supported","parsed","extreme","evaled","srcSetCandidates","matchingSet","evaluated","applyBestCandidate","clientWidth","vw","vh","em","rem","fillImgs","last","_","typeUri","Image","detectTypeSupport","loaded","ask","ignoreKeys","specificKeys","registerOnChange","unRegisterOnChange","currentElement","currentInput","currentIntent","currentTimestamp","shouldPersist","formInputs","functionList","ignoreMap","specificMap","inputMap","keydown","keyup","mousemove","MSPointerDown","MSPointerMove","pointermove","touchend","isScrolling","mousePos","pointerMap","supportsPassive","addListeners","passive","setPersist","setInput","setIntent","MSPointerEvent","detectWheel","setElement","clearElement","sessionStorage","getItem","doUpdate","eventKey","which","pointerType","ignoreMatch","specificMatch","shouldUpdate","validateTouch","persistInput","activeElem","checkClosest","fireFunctions","detectScrolling","setItem","touchIsValid","onmousewheel","screenX","screenY","ElementPrototype","msMatchesSelector","webkitMatchesSelector","arr","eventType","position","objPos","clearStorage","clear","el","rel","matchesMethod","ElemProto","prefixes","side","transform","renderPosition","setDefaultTarget","marginProperty","sideOffset","adjustedX","getPositionValue","wrapShift","isOriginLeft","lastCell","lastMargin","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","translateX","firstSlide","positionX","progress","isFreeScrolling","beforeGap","_shiftCells","afterGap","gap","cellShift","getFrictionFactor","force","isDraggable","dragForce","dragX","applyForce","Unidragger","draggable","dragThreshold","_touchActionValue","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","handles","bindHandles","unbindHandles","bindDrag","unbindDrag","okayPointerDown","_pointerDownPreventDefault","pointerDownFocus","pointerDownBlur","pointerDownScroll","getScrollPosition","_pointerDownDefault","pointerDownPointer","focusNodes","INPUT","TEXTAREA","SELECT","isTouchStart","isTouchPointer","isFocusNode","hasDragStarted","moveVector","isTouchScrolling","_dragPointerUp","dragStart","dragStartPosition","_dragPointerMove","_dragMove","dragMove","previousDragX","direction","originBound","dragMoveTime","dragEnd","freeScroll","dragEndRestingSelect","restingX","getRestingPosition","dragEndBoostSelect","distance","getSlideDistance","positiveResting","_getClosestResting","negativeResting","minDistance","Infinity","condition","dist","minDist","isWrapAround","wrap","staticClick","clickedCell","onscroll","scroll","scrollMoveX","scrollMoveY","_bindHandles","touchAction","handle","cursorNodes","OPTION","clickTypes","radio","checkbox","submit","file","isCursorNode","isClickType","isOkay","focused","blur","_dragStart","_dragEnd","_staticClick","isPreventingClicks","onclick","isIgnoringMouseUp","svgURI","PrevNextButton","getArrowMovements","shape","x0","x1","y1","x2","y2","x3","isEnabled","isPrevious","leftDirection","isLeft","disable","svg","createSVG","update","createElementNS","path","pathMovements","arrowShape","enable","disabled","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","PageDots","holder","dots","handleClick","onClick","setDots","addDots","removeDots","count","fragment","createDocumentFragment","newDots","dot","updateSelected","selectedDot","onTap","pageDots","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","tick","autoPlay","stop","pause","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","getCellsFragment","insert","isAppend","insertCellElement","endCells","cellChange","append","prepend","minCellIndex","cellSizeChange","changedCellIndex","isPositioningSlider","prevSelectedElem","getCellLazyImages","lazyloadAttr","lazySelector","LazyLoader","flickity","_createLazyload","lazyLoad","lazyImages","lazyCellImages","lerp","_createAsNavFor","activateAsNavFor","deactivateAsNavFor","destroyAsNavFor","asNavForOption","asNavFor","setNavCompanion","companion","navCompanion","onNavCompanionSelect","navCompanionSelect","onNavStaticClick","firstIndex","selectIndex","removeNavSelectedElements","navSelectedElements","changeNavSelectedClass","navElem","cellElement","wrapper","overflow","ObjectFitImage","visuallyHiddenClass","toggles","expandToggles","singleColMediaQuery","globalEvents","expandToggle","ExpandToggle","closeOther","targetEl","scrollIntoView","closeAll","activeSection","activeSectionIndex","collapse","expand","currentToggle","htmlEl","contains","fontsLoaded","grad","FontFaceObserver","gradItalic","gtAmerica","gtAmericaItalic","gtAmerica600","tabs","flkty","updateOptions","debounce","HomeNav","mediaQueryList","contentEl","getElementById","windowClick","windowClickHandler","toggleExpand","roundSingleDecimal","icons","chev","class","viewBox","external","buildSVG","icon","customAttrs","iconName","assign","iconHeight","iconWidth","viewBoxArr","split","aspectRatio","Unorphanize","inlineStyles","MailToLink","wordCount","wrapEl","videos","publicKey","YoutubePlayer","videoId","playerId","titleEl","timeEl","imageEl","collectVars","lookupVideoData","playEvent","pauseVideo","linkEl","shouldAutoload","hasAttribute","playerVars","autoplay","buildPlayer","autohide","controls","iv_load_policy","showinfo","wmode","success","xhr","XMLHttpRequest","XDomainRequest","open","send","getCORS","request","response","currentTarget","responseText","videoTitle","getVideoData","items","video","snippet","updateDOM","duration","contentDetails","thumbnails","extracted","hours","a11yText","minutes","seconds","textContent","youtubeImageUrls","finalSources","trim","imgUrl","updateDuration","removeBrokenImages","YT","onReady","playerIframe","onStateChange","PlayerState","PLAYING","buildPlayers","els","onYouTubeIframeAPIReady","loadJS","SmoothScroll"],"mappings":"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","file":"js/main-249d40167059d059cb78.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 66);\n","var g;\n\n// This works in non-strict mode\ng = function () {\n return this;\n}();\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (typeof window === \"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;","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\nmodule.exports = debounce;","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\nmodule.exports = isObject;","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n(function (window, factory) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['desandro-matches-selector/matches-selector'], function (matchesSelector) {\n return factory(window, matchesSelector);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('desandro-matches-selector'));\n } else {\n // browser global\n window.fizzyUIUtils = factory(window, window.matchesSelector);\n }\n})(window, function factory(window, matchesSelector) {\n 'use strict';\n\n var utils = {};\n\n // ----- extend ----- //\n\n // extends objects\n utils.extend = function (a, b) {\n for (var prop in b) {\n a[prop] = b[prop];\n }\n return a;\n };\n\n // ----- modulo ----- //\n\n utils.modulo = function (num, div) {\n return (num % div + div) % div;\n };\n\n // ----- makeArray ----- //\n\n var arraySlice = Array.prototype.slice;\n\n // turn element or nodeList into an array\n utils.makeArray = function (obj) {\n if (Array.isArray(obj)) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if (obj === null || obj === undefined) {\n return [];\n }\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if (isArrayLike) {\n // convert nodeList to array\n return arraySlice.call(obj);\n }\n\n // array of single index\n return [obj];\n };\n\n // ----- removeFrom ----- //\n\n utils.removeFrom = function (ary, obj) {\n var index = ary.indexOf(obj);\n if (index != -1) {\n ary.splice(index, 1);\n }\n };\n\n // ----- getParent ----- //\n\n utils.getParent = function (elem, selector) {\n while (elem.parentNode && elem != document.body) {\n elem = elem.parentNode;\n if (matchesSelector(elem, selector)) {\n return elem;\n }\n }\n };\n\n // ----- getQueryElement ----- //\n\n // use element as selector string\n utils.getQueryElement = function (elem) {\n if (typeof elem == 'string') {\n return document.querySelector(elem);\n }\n return elem;\n };\n\n // ----- handleEvent ----- //\n\n // enable .ontype to trigger from .addEventListener( elem, 'type' )\n utils.handleEvent = function (event) {\n var method = 'on' + event.type;\n if (this[method]) {\n this[method](event);\n }\n };\n\n // ----- filterFindElements ----- //\n\n utils.filterFindElements = function (elems, selector) {\n // make array of elems\n elems = utils.makeArray(elems);\n var ffElems = [];\n elems.forEach(function (elem) {\n // check that elem is an actual element\n if (!(elem instanceof HTMLElement)) {\n return;\n }\n // add elem if no selector\n if (!selector) {\n ffElems.push(elem);\n return;\n }\n // filter & find items if we have a selector\n // filter\n if (matchesSelector(elem, selector)) {\n ffElems.push(elem);\n }\n // find children\n var childElems = elem.querySelectorAll(selector);\n // concat childElems to filterFound array\n for (var i = 0; i < childElems.length; i++) {\n ffElems.push(childElems[i]);\n }\n });\n return ffElems;\n };\n\n // ----- debounceMethod ----- //\n\n utils.debounceMethod = function (_class, methodName, threshold) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[methodName];\n var timeoutName = methodName + 'Timeout';\n _class.prototype[methodName] = function () {\n var timeout = this[timeoutName];\n clearTimeout(timeout);\n var args = arguments;\n var _this = this;\n this[timeoutName] = setTimeout(function () {\n method.apply(_this, args);\n delete _this[timeoutName];\n }, threshold);\n };\n };\n\n // ----- docReady ----- //\n\n utils.docReady = function (callback) {\n var readyState = document.readyState;\n if (readyState == 'complete' || readyState == 'interactive') {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout(callback);\n } else {\n document.addEventListener('DOMContentLoaded', callback);\n }\n };\n\n // ----- htmlInit ----- //\n\n // http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\n utils.toDashed = function (str) {\n return str.replace(/(.)([A-Z])/g, function (match, $1, $2) {\n return $1 + '-' + $2;\n }).toLowerCase();\n };\n var console = window.console;\n /**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\n utils.htmlInit = function (WidgetClass, namespace) {\n utils.docReady(function () {\n var dashedNamespace = utils.toDashed(namespace);\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll('[' + dataAttr + ']');\n var jsDashElems = document.querySelectorAll('.js-' + dashedNamespace);\n var elems = utils.makeArray(dataAttrElems).concat(utils.makeArray(jsDashElems));\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n elems.forEach(function (elem) {\n var attr = elem.getAttribute(dataAttr) || elem.getAttribute(dataOptionsAttr);\n var options;\n try {\n options = attr && JSON.parse(attr);\n } catch (error) {\n // log error, do not initialize\n if (console) {\n console.error('Error parsing ' + dataAttr + ' on ' + elem.className + ': ' + error);\n }\n return;\n }\n // initialize\n var instance = new WidgetClass(elem, options);\n // make available via $().data('namespace')\n if (jQuery) {\n jQuery.data(elem, namespace, instance);\n }\n });\n });\n };\n\n // ----- ----- //\n\n return utils;\n});","module.exports = /******/function (modules) {\n // webpackBootstrap\n /******/ // The module cache\n /******/\n var installedModules = {};\n /******/\n /******/ // The require function\n /******/\n function __webpack_require__(moduleId) {\n /******/\n /******/ // Check if module is in cache\n /******/if (installedModules[moduleId]) {\n /******/return installedModules[moduleId].exports;\n /******/\n }\n /******/ // Create a new module (and put it into the cache)\n /******/\n var module = installedModules[moduleId] = {\n /******/i: moduleId,\n /******/l: false,\n /******/exports: {}\n /******/\n };\n /******/\n /******/ // Execute the module function\n /******/\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n /******/ // Flag the module as loaded\n /******/\n module.l = true;\n /******/\n /******/ // Return the exports of the module\n /******/\n return module.exports;\n /******/\n }\n /******/\n /******/\n /******/ // expose the modules object (__webpack_modules__)\n /******/\n __webpack_require__.m = modules;\n /******/\n /******/ // expose the module cache\n /******/\n __webpack_require__.c = installedModules;\n /******/\n /******/ // define getter function for harmony exports\n /******/\n __webpack_require__.d = function (exports, name, getter) {\n /******/if (!__webpack_require__.o(exports, name)) {\n /******/Object.defineProperty(exports, name, {\n enumerable: true,\n get: getter\n });\n /******/\n }\n /******/\n };\n /******/\n /******/ // define __esModule on exports\n /******/\n __webpack_require__.r = function (exports) {\n /******/if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n /******/Object.defineProperty(exports, Symbol.toStringTag, {\n value: 'Module'\n });\n /******/\n }\n /******/\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n /******/ // create a fake namespace object\n /******/ // mode & 1: value is a module id, require it\n /******/ // mode & 2: merge all properties of value into the ns\n /******/ // mode & 4: return value when already ns object\n /******/ // mode & 8|1: behave like require\n /******/\n __webpack_require__.t = function (value, mode) {\n /******/if (mode & 1) value = __webpack_require__(value);\n /******/\n if (mode & 8) return value;\n /******/\n if (mode & 4 && typeof value === 'object' && value && value.__esModule) return value;\n /******/\n var ns = Object.create(null);\n /******/\n __webpack_require__.r(ns);\n /******/\n Object.defineProperty(ns, 'default', {\n enumerable: true,\n value: value\n });\n /******/\n if (mode & 2 && typeof value != 'string') for (var key in value) __webpack_require__.d(ns, key, function (key) {\n return value[key];\n }.bind(null, key));\n /******/\n return ns;\n /******/\n };\n /******/\n /******/ // getDefaultExport function for compatibility with non-harmony modules\n /******/\n __webpack_require__.n = function (module) {\n /******/var getter = module && module.__esModule ? /******/function getDefault() {\n return module['default'];\n } : /******/function getModuleExports() {\n return module;\n };\n /******/\n __webpack_require__.d(getter, 'a', getter);\n /******/\n return getter;\n /******/\n };\n /******/\n /******/ // Object.prototype.hasOwnProperty.call\n /******/\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n /******/ // __webpack_public_path__\n /******/\n __webpack_require__.p = \"\";\n /******/\n /******/\n /******/ // Load entry module and return exports\n /******/\n return __webpack_require__(__webpack_require__.s = \"./index.js\");\n /******/\n}\n/************************************************************************/\n/******/({\n /***/\"./index.js\":\n /*!******************!*\\\n !*** ./index.js ***!\n \\******************/\n /*! exports provided: default */\n /***/\n function (module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return ExpandToggle; });\\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/debounce */ \\\"./node_modules/lodash/debounce.js\\\");\\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var ev_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ev-emitter */ \\\"./node_modules/ev-emitter/ev-emitter.js\\\");\\n/* harmony import */ var ev_emitter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(ev_emitter__WEBPACK_IMPORTED_MODULE_1__);\\n\\n\\nfunction _typeof(obj) { if (typeof Symbol === \\\"function\\\" && typeof Symbol.iterator === \\\"symbol\\\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \\\"function\\\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \\\"symbol\\\" : typeof obj; }; } return _typeof(obj); }\\n\\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\\n\\nfunction _nonIterableSpread() { throw new TypeError(\\\"Invalid attempt to spread non-iterable instance\\\"); }\\n\\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \\\"[object Arguments]\\\") return Array.from(iter); }\\n\\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\\n\\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\\\"Cannot call a class as a function\\\"); } }\\n\\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\\\"value\\\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\\n\\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\\n\\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \\\"object\\\" || typeof call === \\\"function\\\")) { return call; } return _assertThisInitialized(self); }\\n\\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\\\"this hasn't been initialised - super() hasn't been called\\\"); } return self; }\\n\\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\\n\\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \\\"function\\\" && superClass !== null) { throw new TypeError(\\\"Super expression must either be null or a function\\\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\\n\\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\\n\\n\\n\\n/**\\n * Wrap the last X words in an HTML tag to prevent them from wrapping (i.e. orphans)\\n * @param {HTMLElement} el - Toggle button DOM node\\n * @param {Object} opts - Options\\n * @param {string} [opts.expandedClasses=\\\"\\\"] - Class(es) to apply when expanded\\n * @param {boolean} [opts.shouldToggleHeight=false] - Whether or not to animate height\\n * @param {string} [opts.activeToggleText=\\\"\\\"] - Expanded state toggle button text\\n * @param {boolean} [opts.shouldStartExpanded=false] - Whether menu should start expanded\\n * @param {function} [opts.onReady=\\\"\\\"] - Ready callback function\\n */\\n\\nvar ExpandToggle =\\n/*#__PURE__*/\\nfunction (_EventEmitter) {\\n _inherits(ExpandToggle, _EventEmitter);\\n\\n function ExpandToggle(el, opts) {\\n var _this;\\n\\n _classCallCheck(this, ExpandToggle);\\n\\n // Have to call super() first before referencing “this” since we’re extending EventEmitter\\n // https://stackoverflow.com/a/43591507/673457\\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ExpandToggle).call(this));\\n _this.el = el;\\n _this.targetId = _this.el.getAttribute(\\\"data-expands\\\");\\n _this.targetEl = document.getElementById(_this.targetId); // Ensure target element exist before initializing\\n\\n if (!_this.targetEl) {\\n console.warn(\\\"Can\\\\u2019t find expandable target with id \\\\u201C\\\".concat(_this.targetId, \\\"\\\\u201D\\\"));\\n return _possibleConstructorReturn(_this, false);\\n } // Use Object.assign() to merge “opts” object with default values in this.options\\n\\n\\n _this.options = Object.assign({}, {\\n expandedClasses: \\\"\\\",\\n // string, accepts multiple space-separated classes\\n shouldToggleHeight: false,\\n // should target element’s height be animated using max-height\\n activeToggleText: \\\"\\\",\\n // expanded state toggle button text\\n shouldStartExpanded: false,\\n // component starts expanded on init\\n onReady: null // ready callback function\\n\\n }, opts); // Check for custom expanded class(es)\\n\\n _this.expandedClasses = _this.el.getAttribute(\\\"data-expands-class\\\") || _this.options.expandedClasses;\\n\\n if (_this.expandedClasses.length) {\\n // Check if active class string contains multiple classes\\n if (_this.expandedClasses.indexOf(\\\" \\\") > -1) {\\n // Convert to array and remove any empty string values\\n // caused by having multiple spaces in a row.\\n _this.expandedClasses = _this.expandedClasses.split(\\\" \\\").filter(function (n) {\\n return n.length;\\n });\\n } else {\\n // We still need to convert a single active class to an array\\n // so we can use the spread syntax later in classList.add()\\n _this.expandedClasses = [_this.expandedClasses];\\n }\\n } // Check if height should be animated\\n\\n\\n _this.shouldToggleHeight = _this.el.hasAttribute(\\\"data-expands-height\\\") || _this.options.shouldToggleHeight; // Check if component should start expanded\\n\\n _this.shouldStartExpanded = _this.el.hasAttribute(\\\"data-expanded\\\") || _this.options.shouldStartExpanded; // Check for custom toggle button text to use when expanded\\n\\n _this.hasActiveText = false;\\n _this.textEl = _this.el.querySelector(\\\"[data-expands-text]\\\");\\n\\n if (_this.textEl) {\\n _this.defaultToggleText = _this.textEl.textContent;\\n _this.activeToggleText = _this.textEl.getAttribute(\\\"data-expands-text\\\") || _this.options.activeToggleText;\\n _this.hasActiveText = !!_this.activeToggleText.length;\\n }\\n\\n _this.init();\\n\\n return _this;\\n }\\n\\n _createClass(ExpandToggle, [{\\n key: \\\"init\\\",\\n value: function init() {\\n // Store state to avoid calling resize handler after component has been destroyed\\n this.hasInitialized = true; // Accessibility setup\\n\\n this.el.setAttribute(\\\"aria-haspopup\\\", true);\\n this.el.setAttribute(\\\"aria-expanded\\\", this.shouldStartExpanded); // Omit “aria-controls” for now\\n // See https://inclusive-components.design/menus-menu-buttons/#ariacontrols\\n // this.el.setAttribute(\\\"aria-controls\\\", this.targetId);\\n\\n this.targetEl.setAttribute(\\\"aria-hidden\\\", !this.shouldStartExpanded);\\n\\n if (this.el.tagName.toLowerCase() === \\\"a\\\") {\\n this.el.setAttribute(\\\"role\\\", \\\"button\\\");\\n }\\n\\n if (this.shouldToggleHeight) {\\n this.heightToggleSetup();\\n } // Click event listener on toggle button\\n // Note: Callback needs to be assigned to a let so we can remove it since we’re using bind()\\n // https://stackoverflow.com/a/22870717/673457\\n\\n\\n this.clickHandler = this.toggle.bind(this);\\n this.el.addEventListener(\\\"click\\\", this.clickHandler); // Keyboard listeners on toggle button\\n\\n this.keydownHandler = this.keyboardEvents.bind(this);\\n this.el.addEventListener(\\\"keydown\\\", this.keydownHandler); // Check for onReady callback\\n\\n if (typeof this.options.onReady === \\\"function\\\") {\\n this.options.onReady();\\n }\\n }\\n }, {\\n key: \\\"destroy\\\",\\n value: function destroy() {\\n this.hasInitialized = false; // Remove event listeners\\n\\n this.el.removeEventListener(\\\"click\\\", this.clickHandler);\\n this.el.removeEventListener(\\\"keydown\\\", this.keydownHandler);\\n window.removeEventListener(\\\"resize\\\", this.resizeHandler); // Remove aria attributes\\n\\n this.el.removeAttribute(\\\"aria-haspopup\\\");\\n this.el.removeAttribute(\\\"aria-expanded\\\");\\n this.targetEl.removeAttribute(\\\"aria-hidden\\\");\\n this.targetEl.style.removeProperty(\\\"max-height\\\");\\n\\n if (this.el.tagName.toLowerCase() === \\\"a\\\") {\\n this.el.removeAttribute(\\\"role\\\");\\n } // Reset toggle text\\n\\n\\n if (this.hasActiveText) {\\n this.textEl.textContent = this.defaultToggleText;\\n } // Remove custom classes\\n\\n\\n if (this.expandedClasses.length) {\\n var _this$el$classList, _this$targetEl$classL;\\n\\n (_this$el$classList = this.el.classList).remove.apply(_this$el$classList, _toConsumableArray(this.expandedClasses));\\n\\n (_this$targetEl$classL = this.targetEl.classList).remove.apply(_this$targetEl$classL, _toConsumableArray(this.expandedClasses));\\n }\\n\\n this.emitEvent(\\\"destroy\\\");\\n }\\n }, {\\n key: \\\"keyboardEvents\\\",\\n value: function keyboardEvents(event) {\\n // Expand with down arrow\\n if (event.keyCode == 40) {\\n this.expand();\\n } else if (event.keyCode == 38 || event.keyCode == 27) {\\n // Close with up arrow or escape key\\n this.collapse();\\n }\\n }\\n }, {\\n key: \\\"heightToggleSetup\\\",\\n value: function heightToggleSetup() {\\n var _this2 = this;\\n\\n this.targetParentEl = this.targetEl.parentNode; // Set max-height to the expanded height so we can animate it.\\n\\n window.requestAnimationFrame(this.updateExpandedHeight.bind(this));\\n this.resizeHandler = lodash_debounce__WEBPACK_IMPORTED_MODULE_0___default()(function (event) {\\n // Due to debounce() it’s possible for this to run after destroy() has been called.\\n // To avoid this edge case, check “this.hasInitialized” first.\\n if (_this2.hasInitialized) {\\n window.requestAnimationFrame(_this2.updateExpandedHeight.bind(_this2));\\n }\\n }, 100).bind(this); // Update target element’s max-height on resize\\n\\n window.addEventListener(\\\"resize\\\", this.resizeHandler);\\n } // Set max-height of target element to its expanded height without triggering relayout.\\n //\\n // This technique works by creating an absolutely-positioned invisible clone of the target\\n // element and calculating its height. This avoids any relayout that would otherwise occur\\n // if the element was briefly expanded so we could measure it.\\n //\\n // Note: We’re using CSS to transition max-height instead jQuery’s slideToggle(),\\n // or another 3rd-party lib like Velocity.js, to avoid loading a large lib.\\n\\n }, {\\n key: \\\"updateExpandedHeight\\\",\\n value: function updateExpandedHeight() {\\n // Get width of original element so we can apply it to the clone\\n var nodeWidth = Math.round(parseFloat(this.targetEl.offsetWidth)); // Create clone of node\\n\\n var cloneEl = this.targetEl.cloneNode(true); // 'true' includes child nodes\\n // Inline styles added to prevent reflow, ensure clone is same size as expanded element\\n\\n cloneEl.style.cssText = \\\"max-height: none !important; position: absolute !important; right: 100% !important; visibility: hidden !important; width: \\\".concat(nodeWidth, \\\"px !important; -webkit-transition: none !important; -moz-transition: none !important; transition: none !important\\\"); // Update “aria-hidden” attribute\\n\\n cloneEl.setAttribute(\\\"aria-hidden\\\", false); // Remove id just to be safe\\n\\n cloneEl.removeAttribute(\\\"id\\\"); // Remove “name” attributes to prevent resetting checkbox or radio elements\\n\\n var childElsWithId = cloneEl.querySelectorAll(\\\"[name]\\\"); // IE-friendly way of iterating over a NodeList\\n\\n Array.prototype.forEach.call(childElsWithId, function (el) {\\n el.removeAttribute(\\\"name\\\");\\n }); // Append clone to document, save as new let so we can remove it later\\n\\n var newEl = this.targetParentEl.insertBefore(cloneEl, this.targetEl); // Calculate height\\n\\n var expandedHeight = Math.round(parseFloat(newEl.offsetHeight)); // Remove cloned node to clean up after ourselves\\n\\n this.targetParentEl.removeChild(newEl); // Apply inline max-height to collapsed element\\n // Note: CSS is overriding this when aria-hidden=\\\"true\\\"\\n\\n this.targetEl.style.maxHeight = expandedHeight + \\\"px\\\";\\n }\\n }, {\\n key: \\\"expand\\\",\\n value: function expand(event) {\\n // Update toggle text\\n if (this.hasActiveText) {\\n this.textEl.textContent = this.activeToggleText;\\n } // Add classes\\n\\n\\n if (this.expandedClasses.length) {\\n var _this$el$classList2, _this$targetEl$classL2;\\n\\n (_this$el$classList2 = this.el.classList).add.apply(_this$el$classList2, _toConsumableArray(this.expandedClasses));\\n\\n (_this$targetEl$classL2 = this.targetEl.classList).add.apply(_this$targetEl$classL2, _toConsumableArray(this.expandedClasses));\\n } // Update aria attributes\\n\\n\\n this.el.setAttribute(\\\"aria-expanded\\\", true);\\n this.targetEl.setAttribute(\\\"aria-hidden\\\", false); // Emit event and include original event as an argument\\n\\n this.emitEvent(\\\"expand\\\", event);\\n }\\n }, {\\n key: \\\"collapse\\\",\\n value: function collapse(event) {\\n // Update toggle text\\n if (this.hasActiveText) {\\n this.textEl.textContent = this.defaultToggleText;\\n } // Remove classes\\n\\n\\n if (this.expandedClasses.length) {\\n var _this$el$classList3, _this$targetEl$classL3;\\n\\n (_this$el$classList3 = this.el.classList).remove.apply(_this$el$classList3, _toConsumableArray(this.expandedClasses));\\n\\n (_this$targetEl$classL3 = this.targetEl.classList).remove.apply(_this$targetEl$classL3, _toConsumableArray(this.expandedClasses));\\n } // Update aria attributes\\n\\n\\n this.el.setAttribute(\\\"aria-expanded\\\", false);\\n this.targetEl.setAttribute(\\\"aria-hidden\\\", true); // Emit event and include original event as an argument\\n\\n this.emitEvent(\\\"collapse\\\", event);\\n }\\n }, {\\n key: \\\"toggle\\\",\\n value: function toggle(event) {\\n // Prevent default in case toggle element is a link instead of a button\\n event.preventDefault();\\n\\n if (this.el.getAttribute(\\\"aria-expanded\\\") === \\\"true\\\") {\\n this.collapse(event);\\n } else {\\n this.expand(event);\\n }\\n }\\n }]);\\n\\n return ExpandToggle;\\n}(ev_emitter__WEBPACK_IMPORTED_MODULE_1___default.a);\\n\\n\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./index.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/ev-emitter/ev-emitter.js\":\n /*!***********************************************!*\\\n !*** ./node_modules/ev-emitter/ev-emitter.js ***!\n \\***********************************************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n eval(\"var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\\n * EvEmitter v1.1.0\\n * Lil' event emitter\\n * MIT License\\n */\\n\\n/* jshint unused: true, undef: true, strict: true */\\n\\n( function( global, factory ) {\\n // universal module definition\\n /* jshint strict: false */ /* globals define, module, window */\\n if ( true ) {\\n // AMD - RequireJS\\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\\n\\t\\t\\t\\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\\n\\t\\t\\t\\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\\n\\t\\t\\t\\t__WEBPACK_AMD_DEFINE_FACTORY__),\\n\\t\\t\\t\\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\\n } else {}\\n\\n}( typeof window != 'undefined' ? window : this, function() {\\n\\n\\\"use strict\\\";\\n\\nfunction EvEmitter() {}\\n\\nvar proto = EvEmitter.prototype;\\n\\nproto.on = function( eventName, listener ) {\\n if ( !eventName || !listener ) {\\n return;\\n }\\n // set events hash\\n var events = this._events = this._events || {};\\n // set listeners array\\n var listeners = events[ eventName ] = events[ eventName ] || [];\\n // only add once\\n if ( listeners.indexOf( listener ) == -1 ) {\\n listeners.push( listener );\\n }\\n\\n return this;\\n};\\n\\nproto.once = function( eventName, listener ) {\\n if ( !eventName || !listener ) {\\n return;\\n }\\n // add event\\n this.on( eventName, listener );\\n // set once flag\\n // set onceEvents hash\\n var onceEvents = this._onceEvents = this._onceEvents || {};\\n // set onceListeners object\\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\\n // set flag\\n onceListeners[ listener ] = true;\\n\\n return this;\\n};\\n\\nproto.off = function( eventName, listener ) {\\n var listeners = this._events && this._events[ eventName ];\\n if ( !listeners || !listeners.length ) {\\n return;\\n }\\n var index = listeners.indexOf( listener );\\n if ( index != -1 ) {\\n listeners.splice( index, 1 );\\n }\\n\\n return this;\\n};\\n\\nproto.emitEvent = function( eventName, args ) {\\n var listeners = this._events && this._events[ eventName ];\\n if ( !listeners || !listeners.length ) {\\n return;\\n }\\n // copy over to avoid interference if .off() in listener\\n listeners = listeners.slice(0);\\n args = args || [];\\n // once stuff\\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\\n\\n for ( var i=0; i < listeners.length; i++ ) {\\n var listener = listeners[i]\\n var isOnce = onceListeners && onceListeners[ listener ];\\n if ( isOnce ) {\\n // remove listener\\n // remove before trigger to prevent recursion\\n this.off( eventName, listener );\\n // unset once flag\\n delete onceListeners[ listener ];\\n }\\n // trigger listener\\n listener.apply( this, args );\\n }\\n\\n return this;\\n};\\n\\nproto.allOff = function() {\\n delete this._events;\\n delete this._onceEvents;\\n};\\n\\nreturn EvEmitter;\\n\\n}));\\n\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./node_modules/ev-emitter/ev-emitter.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/lodash/_Symbol.js\":\n /*!****************************************!*\\\n !*** ./node_modules/lodash/_Symbol.js ***!\n \\****************************************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n eval(\"var root = __webpack_require__(/*! ./_root */ \\\"./node_modules/lodash/_root.js\\\");\\n\\n/** Built-in value references. */\\nvar Symbol = root.Symbol;\\n\\nmodule.exports = Symbol;\\n\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./node_modules/lodash/_Symbol.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/lodash/_baseGetTag.js\":\n /*!********************************************!*\\\n !*** ./node_modules/lodash/_baseGetTag.js ***!\n \\********************************************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n eval(\"var Symbol = __webpack_require__(/*! ./_Symbol */ \\\"./node_modules/lodash/_Symbol.js\\\"),\\n getRawTag = __webpack_require__(/*! ./_getRawTag */ \\\"./node_modules/lodash/_getRawTag.js\\\"),\\n objectToString = __webpack_require__(/*! ./_objectToString */ \\\"./node_modules/lodash/_objectToString.js\\\");\\n\\n/** `Object#toString` result references. */\\nvar nullTag = '[object Null]',\\n undefinedTag = '[object Undefined]';\\n\\n/** Built-in value references. */\\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\\n\\n/**\\n * The base implementation of `getTag` without fallbacks for buggy environments.\\n *\\n * @private\\n * @param {*} value The value to query.\\n * @returns {string} Returns the `toStringTag`.\\n */\\nfunction baseGetTag(value) {\\n if (value == null) {\\n return value === undefined ? undefinedTag : nullTag;\\n }\\n return (symToStringTag && symToStringTag in Object(value))\\n ? getRawTag(value)\\n : objectToString(value);\\n}\\n\\nmodule.exports = baseGetTag;\\n\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./node_modules/lodash/_baseGetTag.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/lodash/_freeGlobal.js\":\n /*!********************************************!*\\\n !*** ./node_modules/lodash/_freeGlobal.js ***!\n \\********************************************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n eval(\"/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\\n\\nmodule.exports = freeGlobal;\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \\\"./node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./node_modules/lodash/_freeGlobal.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/lodash/_getRawTag.js\":\n /*!*******************************************!*\\\n !*** ./node_modules/lodash/_getRawTag.js ***!\n \\*******************************************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n eval(\"var Symbol = __webpack_require__(/*! ./_Symbol */ \\\"./node_modules/lodash/_Symbol.js\\\");\\n\\n/** Used for built-in method references. */\\nvar objectProto = Object.prototype;\\n\\n/** Used to check objects for own properties. */\\nvar hasOwnProperty = objectProto.hasOwnProperty;\\n\\n/**\\n * Used to resolve the\\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\\n * of values.\\n */\\nvar nativeObjectToString = objectProto.toString;\\n\\n/** Built-in value references. */\\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\\n\\n/**\\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\\n *\\n * @private\\n * @param {*} value The value to query.\\n * @returns {string} Returns the raw `toStringTag`.\\n */\\nfunction getRawTag(value) {\\n var isOwn = hasOwnProperty.call(value, symToStringTag),\\n tag = value[symToStringTag];\\n\\n try {\\n value[symToStringTag] = undefined;\\n var unmasked = true;\\n } catch (e) {}\\n\\n var result = nativeObjectToString.call(value);\\n if (unmasked) {\\n if (isOwn) {\\n value[symToStringTag] = tag;\\n } else {\\n delete value[symToStringTag];\\n }\\n }\\n return result;\\n}\\n\\nmodule.exports = getRawTag;\\n\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./node_modules/lodash/_getRawTag.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/lodash/_objectToString.js\":\n /*!************************************************!*\\\n !*** ./node_modules/lodash/_objectToString.js ***!\n \\************************************************/\n /*! no static exports found */\n /***/\n function (module, exports) {\n eval(\"/** Used for built-in method references. */\\nvar objectProto = Object.prototype;\\n\\n/**\\n * Used to resolve the\\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\\n * of values.\\n */\\nvar nativeObjectToString = objectProto.toString;\\n\\n/**\\n * Converts `value` to a string using `Object.prototype.toString`.\\n *\\n * @private\\n * @param {*} value The value to convert.\\n * @returns {string} Returns the converted string.\\n */\\nfunction objectToString(value) {\\n return nativeObjectToString.call(value);\\n}\\n\\nmodule.exports = objectToString;\\n\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./node_modules/lodash/_objectToString.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/lodash/_root.js\":\n /*!**************************************!*\\\n !*** ./node_modules/lodash/_root.js ***!\n \\**************************************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n eval(\"var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ \\\"./node_modules/lodash/_freeGlobal.js\\\");\\n\\n/** Detect free variable `self`. */\\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\\n\\n/** Used as a reference to the global object. */\\nvar root = freeGlobal || freeSelf || Function('return this')();\\n\\nmodule.exports = root;\\n\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./node_modules/lodash/_root.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/lodash/debounce.js\":\n /*!*****************************************!*\\\n !*** ./node_modules/lodash/debounce.js ***!\n \\*****************************************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n eval(\"var isObject = __webpack_require__(/*! ./isObject */ \\\"./node_modules/lodash/isObject.js\\\"),\\n now = __webpack_require__(/*! ./now */ \\\"./node_modules/lodash/now.js\\\"),\\n toNumber = __webpack_require__(/*! ./toNumber */ \\\"./node_modules/lodash/toNumber.js\\\");\\n\\n/** Error message constants. */\\nvar FUNC_ERROR_TEXT = 'Expected a function';\\n\\n/* Built-in method references for those with the same name as other `lodash` methods. */\\nvar nativeMax = Math.max,\\n nativeMin = Math.min;\\n\\n/**\\n * Creates a debounced function that delays invoking `func` until after `wait`\\n * milliseconds have elapsed since the last time the debounced function was\\n * invoked. The debounced function comes with a `cancel` method to cancel\\n * delayed `func` invocations and a `flush` method to immediately invoke them.\\n * Provide `options` to indicate whether `func` should be invoked on the\\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\\n * with the last arguments provided to the debounced function. Subsequent\\n * calls to the debounced function return the result of the last `func`\\n * invocation.\\n *\\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\\n * invoked on the trailing edge of the timeout only if the debounced function\\n * is invoked more than once during the `wait` timeout.\\n *\\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\\n *\\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\\n * for details over the differences between `_.debounce` and `_.throttle`.\\n *\\n * @static\\n * @memberOf _\\n * @since 0.1.0\\n * @category Function\\n * @param {Function} func The function to debounce.\\n * @param {number} [wait=0] The number of milliseconds to delay.\\n * @param {Object} [options={}] The options object.\\n * @param {boolean} [options.leading=false]\\n * Specify invoking on the leading edge of the timeout.\\n * @param {number} [options.maxWait]\\n * The maximum time `func` is allowed to be delayed before it's invoked.\\n * @param {boolean} [options.trailing=true]\\n * Specify invoking on the trailing edge of the timeout.\\n * @returns {Function} Returns the new debounced function.\\n * @example\\n *\\n * // Avoid costly calculations while the window size is in flux.\\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\\n *\\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\\n * 'leading': true,\\n * 'trailing': false\\n * }));\\n *\\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\\n * var source = new EventSource('/stream');\\n * jQuery(source).on('message', debounced);\\n *\\n * // Cancel the trailing debounced invocation.\\n * jQuery(window).on('popstate', debounced.cancel);\\n */\\nfunction debounce(func, wait, options) {\\n var lastArgs,\\n lastThis,\\n maxWait,\\n result,\\n timerId,\\n lastCallTime,\\n lastInvokeTime = 0,\\n leading = false,\\n maxing = false,\\n trailing = true;\\n\\n if (typeof func != 'function') {\\n throw new TypeError(FUNC_ERROR_TEXT);\\n }\\n wait = toNumber(wait) || 0;\\n if (isObject(options)) {\\n leading = !!options.leading;\\n maxing = 'maxWait' in options;\\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\\n trailing = 'trailing' in options ? !!options.trailing : trailing;\\n }\\n\\n function invokeFunc(time) {\\n var args = lastArgs,\\n thisArg = lastThis;\\n\\n lastArgs = lastThis = undefined;\\n lastInvokeTime = time;\\n result = func.apply(thisArg, args);\\n return result;\\n }\\n\\n function leadingEdge(time) {\\n // Reset any `maxWait` timer.\\n lastInvokeTime = time;\\n // Start the timer for the trailing edge.\\n timerId = setTimeout(timerExpired, wait);\\n // Invoke the leading edge.\\n return leading ? invokeFunc(time) : result;\\n }\\n\\n function remainingWait(time) {\\n var timeSinceLastCall = time - lastCallTime,\\n timeSinceLastInvoke = time - lastInvokeTime,\\n timeWaiting = wait - timeSinceLastCall;\\n\\n return maxing\\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\\n : timeWaiting;\\n }\\n\\n function shouldInvoke(time) {\\n var timeSinceLastCall = time - lastCallTime,\\n timeSinceLastInvoke = time - lastInvokeTime;\\n\\n // Either this is the first call, activity has stopped and we're at the\\n // trailing edge, the system time has gone backwards and we're treating\\n // it as the trailing edge, or we've hit the `maxWait` limit.\\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\\n }\\n\\n function timerExpired() {\\n var time = now();\\n if (shouldInvoke(time)) {\\n return trailingEdge(time);\\n }\\n // Restart the timer.\\n timerId = setTimeout(timerExpired, remainingWait(time));\\n }\\n\\n function trailingEdge(time) {\\n timerId = undefined;\\n\\n // Only invoke if we have `lastArgs` which means `func` has been\\n // debounced at least once.\\n if (trailing && lastArgs) {\\n return invokeFunc(time);\\n }\\n lastArgs = lastThis = undefined;\\n return result;\\n }\\n\\n function cancel() {\\n if (timerId !== undefined) {\\n clearTimeout(timerId);\\n }\\n lastInvokeTime = 0;\\n lastArgs = lastCallTime = lastThis = timerId = undefined;\\n }\\n\\n function flush() {\\n return timerId === undefined ? result : trailingEdge(now());\\n }\\n\\n function debounced() {\\n var time = now(),\\n isInvoking = shouldInvoke(time);\\n\\n lastArgs = arguments;\\n lastThis = this;\\n lastCallTime = time;\\n\\n if (isInvoking) {\\n if (timerId === undefined) {\\n return leadingEdge(lastCallTime);\\n }\\n if (maxing) {\\n // Handle invocations in a tight loop.\\n clearTimeout(timerId);\\n timerId = setTimeout(timerExpired, wait);\\n return invokeFunc(lastCallTime);\\n }\\n }\\n if (timerId === undefined) {\\n timerId = setTimeout(timerExpired, wait);\\n }\\n return result;\\n }\\n debounced.cancel = cancel;\\n debounced.flush = flush;\\n return debounced;\\n}\\n\\nmodule.exports = debounce;\\n\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./node_modules/lodash/debounce.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/lodash/isObject.js\":\n /*!*****************************************!*\\\n !*** ./node_modules/lodash/isObject.js ***!\n \\*****************************************/\n /*! no static exports found */\n /***/\n function (module, exports) {\n eval(\"/**\\n * Checks if `value` is the\\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\\n *\\n * @static\\n * @memberOf _\\n * @since 0.1.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\\n * @example\\n *\\n * _.isObject({});\\n * // => true\\n *\\n * _.isObject([1, 2, 3]);\\n * // => true\\n *\\n * _.isObject(_.noop);\\n * // => true\\n *\\n * _.isObject(null);\\n * // => false\\n */\\nfunction isObject(value) {\\n var type = typeof value;\\n return value != null && (type == 'object' || type == 'function');\\n}\\n\\nmodule.exports = isObject;\\n\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./node_modules/lodash/isObject.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/lodash/isObjectLike.js\":\n /*!*********************************************!*\\\n !*** ./node_modules/lodash/isObjectLike.js ***!\n \\*********************************************/\n /*! no static exports found */\n /***/\n function (module, exports) {\n eval(\"/**\\n * Checks if `value` is object-like. A value is object-like if it's not `null`\\n * and has a `typeof` result of \\\"object\\\".\\n *\\n * @static\\n * @memberOf _\\n * @since 4.0.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\\n * @example\\n *\\n * _.isObjectLike({});\\n * // => true\\n *\\n * _.isObjectLike([1, 2, 3]);\\n * // => true\\n *\\n * _.isObjectLike(_.noop);\\n * // => false\\n *\\n * _.isObjectLike(null);\\n * // => false\\n */\\nfunction isObjectLike(value) {\\n return value != null && typeof value == 'object';\\n}\\n\\nmodule.exports = isObjectLike;\\n\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./node_modules/lodash/isObjectLike.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/lodash/isSymbol.js\":\n /*!*****************************************!*\\\n !*** ./node_modules/lodash/isSymbol.js ***!\n \\*****************************************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n eval(\"var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \\\"./node_modules/lodash/_baseGetTag.js\\\"),\\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \\\"./node_modules/lodash/isObjectLike.js\\\");\\n\\n/** `Object#toString` result references. */\\nvar symbolTag = '[object Symbol]';\\n\\n/**\\n * Checks if `value` is classified as a `Symbol` primitive or object.\\n *\\n * @static\\n * @memberOf _\\n * @since 4.0.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\\n * @example\\n *\\n * _.isSymbol(Symbol.iterator);\\n * // => true\\n *\\n * _.isSymbol('abc');\\n * // => false\\n */\\nfunction isSymbol(value) {\\n return typeof value == 'symbol' ||\\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\\n}\\n\\nmodule.exports = isSymbol;\\n\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./node_modules/lodash/isSymbol.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/lodash/now.js\":\n /*!************************************!*\\\n !*** ./node_modules/lodash/now.js ***!\n \\************************************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n eval(\"var root = __webpack_require__(/*! ./_root */ \\\"./node_modules/lodash/_root.js\\\");\\n\\n/**\\n * Gets the timestamp of the number of milliseconds that have elapsed since\\n * the Unix epoch (1 January 1970 00:00:00 UTC).\\n *\\n * @static\\n * @memberOf _\\n * @since 2.4.0\\n * @category Date\\n * @returns {number} Returns the timestamp.\\n * @example\\n *\\n * _.defer(function(stamp) {\\n * console.log(_.now() - stamp);\\n * }, _.now());\\n * // => Logs the number of milliseconds it took for the deferred invocation.\\n */\\nvar now = function() {\\n return root.Date.now();\\n};\\n\\nmodule.exports = now;\\n\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./node_modules/lodash/now.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/lodash/toNumber.js\":\n /*!*****************************************!*\\\n !*** ./node_modules/lodash/toNumber.js ***!\n \\*****************************************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n eval(\"var isObject = __webpack_require__(/*! ./isObject */ \\\"./node_modules/lodash/isObject.js\\\"),\\n isSymbol = __webpack_require__(/*! ./isSymbol */ \\\"./node_modules/lodash/isSymbol.js\\\");\\n\\n/** Used as references for various `Number` constants. */\\nvar NAN = 0 / 0;\\n\\n/** Used to match leading and trailing whitespace. */\\nvar reTrim = /^\\\\s+|\\\\s+$/g;\\n\\n/** Used to detect bad signed hexadecimal string values. */\\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\\n\\n/** Used to detect binary string values. */\\nvar reIsBinary = /^0b[01]+$/i;\\n\\n/** Used to detect octal string values. */\\nvar reIsOctal = /^0o[0-7]+$/i;\\n\\n/** Built-in method references without a dependency on `root`. */\\nvar freeParseInt = parseInt;\\n\\n/**\\n * Converts `value` to a number.\\n *\\n * @static\\n * @memberOf _\\n * @since 4.0.0\\n * @category Lang\\n * @param {*} value The value to process.\\n * @returns {number} Returns the number.\\n * @example\\n *\\n * _.toNumber(3.2);\\n * // => 3.2\\n *\\n * _.toNumber(Number.MIN_VALUE);\\n * // => 5e-324\\n *\\n * _.toNumber(Infinity);\\n * // => Infinity\\n *\\n * _.toNumber('3.2');\\n * // => 3.2\\n */\\nfunction toNumber(value) {\\n if (typeof value == 'number') {\\n return value;\\n }\\n if (isSymbol(value)) {\\n return NAN;\\n }\\n if (isObject(value)) {\\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\\n value = isObject(other) ? (other + '') : other;\\n }\\n if (typeof value != 'string') {\\n return value === 0 ? value : +value;\\n }\\n value = value.replace(reTrim, '');\\n var isBinary = reIsBinary.test(value);\\n return (isBinary || reIsOctal.test(value))\\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\\n : (reIsBadHex.test(value) ? NAN : +value);\\n}\\n\\nmodule.exports = toNumber;\\n\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./node_modules/lodash/toNumber.js?\");\n\n /***/\n },\n\n /***/\"./node_modules/webpack/buildin/global.js\":\n /*!***********************************!*\\\n !*** (webpack)/buildin/global.js ***!\n \\***********************************/\n /*! no static exports found */\n /***/\n function (module, exports) {\n eval(\"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//# sourceURL=webpack://%5Bname%5DLink/(webpack)/buildin/global.js?\");\n\n /***/\n }\n\n /******/\n});","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\nmodule.exports = root;","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\nmodule.exports = Symbol;","// Flickity main\n/* eslint-disable max-params */\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['ev-emitter/ev-emitter', 'get-size/get-size', 'fizzy-ui-utils/utils', './cell', './slide', './animate'], function (EvEmitter, getSize, utils, Cell, Slide, animatePrototype) {\n return factory(window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('ev-emitter'), require('get-size'), require('fizzy-ui-utils'), require('./cell'), require('./slide'), require('./animate'));\n } else {\n // browser global\n var _Flickity = window.Flickity;\n window.Flickity = factory(window, window.EvEmitter, window.getSize, window.fizzyUIUtils, _Flickity.Cell, _Flickity.Slide, _Flickity.animatePrototype);\n }\n})(window, function factory(window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype) {\n /* eslint-enable max-params */\n 'use strict';\n\n // vars\n var jQuery = window.jQuery;\n var getComputedStyle = window.getComputedStyle;\n var console = window.console;\n function moveElements(elems, toElem) {\n elems = utils.makeArray(elems);\n while (elems.length) {\n toElem.appendChild(elems.shift());\n }\n }\n\n // -------------------------- Flickity -------------------------- //\n\n // globally unique identifiers\n var GUID = 0;\n // internal store of all Flickity intances\n var instances = {};\n function Flickity(element, options) {\n var queryElement = utils.getQueryElement(element);\n if (!queryElement) {\n if (console) {\n console.error('Bad element for Flickity: ' + (queryElement || element));\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if (this.element.flickityGUID) {\n var instance = instances[this.element.flickityGUID];\n if (instance) instance.option(options);\n return instance;\n }\n\n // add jQuery\n if (jQuery) {\n this.$element = jQuery(this.element);\n }\n // options\n this.options = utils.extend({}, this.constructor.defaults);\n this.option(options);\n\n // kick things off\n this._create();\n }\n Flickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075,\n // friction when free-scrolling\n friction: 0.28,\n // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true\n // watchCSS: false,\n // wrapAround: false\n };\n\n // hash of methods triggered on _create()\n Flickity.createMethods = [];\n var proto = Flickity.prototype;\n // inherit EventEmitter\n utils.extend(proto, EvEmitter.prototype);\n proto._create = function () {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[id] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n if (this.options.resize || this.options.watchCSS) {\n window.addEventListener('resize', this);\n }\n\n // add listeners from on option\n for (var eventName in this.options.on) {\n var listener = this.options.on[eventName];\n this.on(eventName, listener);\n }\n Flickity.createMethods.forEach(function (method) {\n this[method]();\n }, this);\n if (this.options.watchCSS) {\n this.watchCSS();\n } else {\n this.activate();\n }\n };\n\n /**\n * set options\n * @param {Object} opts - options to extend\n */\n proto.option = function (opts) {\n utils.extend(this.options, opts);\n };\n proto.activate = function () {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if (this.options.rightToLeft) {\n this.element.classList.add('flickity-rtl');\n }\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements(this.element.children);\n moveElements(cellElems, this.slider);\n this.viewport.appendChild(this.slider);\n this.element.appendChild(this.viewport);\n // get cells from children\n this.reloadCells();\n if (this.options.accessibility) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener('keydown', this);\n }\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n };\n\n // slider positions the cells\n proto._createSlider = function () {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[this.originSide] = 0;\n this.slider = slider;\n };\n proto._filterFindCellElements = function (elems) {\n return utils.filterFindElements(elems, this.options.cellSelector);\n };\n\n // goes through all children\n proto.reloadCells = function () {\n // collection of item elements\n this.cells = this._makeCells(this.slider.children);\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n };\n\n /**\n * turn elements into Flickity.Cells\n * @param {[Array, NodeList, HTMLElement]} elems - elements to make into cells\n * @returns {Array} items - collection of new Flickity Cells\n */\n proto._makeCells = function (elems) {\n var cellElems = this._filterFindCellElements(elems);\n\n // create new Flickity for collection\n var cells = cellElems.map(function (cellElem) {\n return new Cell(cellElem, this);\n }, this);\n return cells;\n };\n proto.getLastCell = function () {\n return this.cells[this.cells.length - 1];\n };\n proto.getLastSlide = function () {\n return this.slides[this.slides.length - 1];\n };\n\n // positions all cells\n proto.positionCells = function () {\n // size all cells\n this._sizeCells(this.cells);\n // position all cells\n this._positionCells(0);\n };\n\n /**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\n proto._positionCells = function (index) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if (index > 0) {\n var startCell = this.cells[index - 1];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for (var i = index; i < len; i++) {\n var cell = this.cells[i];\n cell.setPosition(cellX);\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max(cell.size.outerHeight, this.maxCellHeight);\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n };\n\n /**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\n proto._sizeCells = function (cells) {\n cells.forEach(function (cell) {\n cell.getSize();\n });\n };\n\n // -------------------------- -------------------------- //\n\n proto.updateSlides = function () {\n this.slides = [];\n if (!this.cells.length) {\n return;\n }\n var slide = new Slide(this);\n this.slides.push(slide);\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n var canCellFit = this._getCanCellFit();\n this.cells.forEach(function (cell, i) {\n // just add cell if first cell in slide\n if (!slide.cells.length) {\n slide.addCell(cell);\n return;\n }\n var slideWidth = slide.outerWidth - slide.firstMargin + (cell.size.outerWidth - cell.size[nextMargin]);\n if (canCellFit.call(this, i, slideWidth)) {\n slide.addCell(cell);\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n slide = new Slide(this);\n this.slides.push(slide);\n slide.addCell(cell);\n }\n }, this);\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n };\n proto._getCanCellFit = function () {\n var groupCells = this.options.groupCells;\n if (!groupCells) {\n return function () {\n return false;\n };\n } else if (typeof groupCells == 'number') {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt(groupCells, 10);\n return function (i) {\n return i % number !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' && groupCells.match(/^(\\d+)%$/);\n var percent = percentMatch ? parseInt(percentMatch[1], 10) / 100 : 1;\n return function (i, slideWidth) {\n /* eslint-disable-next-line no-invalid-this */\n return slideWidth <= (this.size.innerWidth + 1) * percent;\n };\n };\n\n // alias _init for jQuery plugin .flickity()\n proto._init = proto.reposition = function () {\n this.positionCells();\n this.positionSliderAtSelected();\n };\n proto.getSize = function () {\n this.size = getSize(this.element);\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n };\n var cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5\n },\n left: {\n left: 0,\n right: 1\n },\n right: {\n right: 0,\n left: 1\n }\n };\n proto.setCellAlign = function () {\n var shorthand = cellAlignShorthands[this.options.cellAlign];\n this.cellAlign = shorthand ? shorthand[this.originSide] : this.options.cellAlign;\n };\n proto.setGallerySize = function () {\n if (this.options.setGallerySize) {\n var height = this.options.adaptiveHeight && this.selectedSlide ? this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n };\n proto._getWrapShiftCells = function () {\n // only for wrap-around\n if (!this.options.wrapAround) {\n return;\n }\n // unshift previous cells\n this._unshiftCells(this.beforeShiftCells);\n this._unshiftCells(this.afterShiftCells);\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells(gapX, cellIndex, -1);\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells(gapX, 0, 1);\n };\n proto._getGapCells = function (gapX, cellIndex, increment) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while (gapX > 0) {\n var cell = this.cells[cellIndex];\n if (!cell) {\n break;\n }\n cells.push(cell);\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n };\n\n // ----- contain ----- //\n\n // contain cell targets so no excess sliding\n proto._containSlides = function () {\n if (!this.options.contain || this.options.wrapAround || !this.cells.length) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[endMargin];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[beginMargin];\n var endBound = contentWidth - this.size.innerWidth * (1 - this.cellAlign);\n // contain each cell target\n this.slides.forEach(function (slide) {\n if (isContentSmaller) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max(slide.target, beginBound);\n slide.target = Math.min(slide.target, endBound);\n }\n }, this);\n };\n\n // ----- ----- //\n\n /**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\n proto.dispatchEvent = function (type, event, args) {\n var emitArgs = event ? [event].concat(args) : args;\n this.emitEvent(type, emitArgs);\n if (jQuery && this.$element) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if (event) {\n // create jQuery event\n var jQEvent = new jQuery.Event(event);\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger($event, args);\n }\n };\n\n // -------------------------- select -------------------------- //\n\n /**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\n proto.select = function (index, isWrap, isInstant) {\n if (!this.isActive) {\n return;\n }\n index = parseInt(index, 10);\n this._wrapSelect(index);\n if (this.options.wrapAround || isWrap) {\n index = utils.modulo(index, this.slides.length);\n }\n // bail if invalid index\n if (!this.slides[index]) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if (isInstant) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if (this.options.adaptiveHeight) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent('select', null, [index]);\n // change event if new index\n if (index != prevIndex) {\n this.dispatchEvent('change', null, [index]);\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n };\n\n // wraps position for wrapAround, to move to closest slide. #113\n proto._wrapSelect = function (index) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if (!isWrapping) {\n return index;\n }\n var wrapIndex = utils.modulo(index, len);\n // go to shortest\n var delta = Math.abs(wrapIndex - this.selectedIndex);\n var backWrapDelta = Math.abs(wrapIndex + len - this.selectedIndex);\n var forewardWrapDelta = Math.abs(wrapIndex - len - this.selectedIndex);\n if (!this.isDragSelect && backWrapDelta < delta) {\n index += len;\n } else if (!this.isDragSelect && forewardWrapDelta < delta) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if (index < 0) {\n this.x -= this.slideableWidth;\n } else if (index >= len) {\n this.x += this.slideableWidth;\n }\n };\n proto.previous = function (isWrap, isInstant) {\n this.select(this.selectedIndex - 1, isWrap, isInstant);\n };\n proto.next = function (isWrap, isInstant) {\n this.select(this.selectedIndex + 1, isWrap, isInstant);\n };\n proto.updateSelectedSlide = function () {\n var slide = this.slides[this.selectedIndex];\n // selectedIndex could be outside of slides, if triggered before resize()\n if (!slide) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n };\n proto.unselectSelectedSlide = function () {\n if (this.selectedSlide) {\n this.selectedSlide.unselect();\n }\n };\n proto.selectInitialIndex = function () {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if (this.isInitActivated) {\n this.select(this.selectedIndex, false, true);\n return;\n }\n // select with selector string\n if (initialIndex && typeof initialIndex == 'string') {\n var cell = this.queryCell(initialIndex);\n if (cell) {\n this.selectCell(initialIndex, false, true);\n return;\n }\n }\n var index = 0;\n // select with number\n if (initialIndex && this.slides[initialIndex]) {\n index = initialIndex;\n }\n // select instantly\n this.select(index, false, true);\n };\n\n /**\n * select slide from number or cell element\n * @param {[Element, Number]} value - zero-based index or element to select\n * @param {Boolean} isWrap - enables wrapping around for extra index\n * @param {Boolean} isInstant - disables slide animation\n */\n proto.selectCell = function (value, isWrap, isInstant) {\n // get cell\n var cell = this.queryCell(value);\n if (!cell) {\n return;\n }\n var index = this.getCellSlideIndex(cell);\n this.select(index, isWrap, isInstant);\n };\n proto.getCellSlideIndex = function (cell) {\n // get index of slides that has cell\n for (var i = 0; i < this.slides.length; i++) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf(cell);\n if (index != -1) {\n return i;\n }\n }\n };\n\n // -------------------------- get cells -------------------------- //\n\n /**\n * get Flickity.Cell, given an Element\n * @param {Element} elem - matching cell element\n * @returns {Flickity.Cell} cell - matching cell\n */\n proto.getCell = function (elem) {\n // loop through cells to get the one that matches\n for (var i = 0; i < this.cells.length; i++) {\n var cell = this.cells[i];\n if (cell.element == elem) {\n return cell;\n }\n }\n };\n\n /**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\n proto.getCells = function (elems) {\n elems = utils.makeArray(elems);\n var cells = [];\n elems.forEach(function (elem) {\n var cell = this.getCell(elem);\n if (cell) {\n cells.push(cell);\n }\n }, this);\n return cells;\n };\n\n /**\n * get cell elements\n * @returns {Array} cellElems\n */\n proto.getCellElements = function () {\n return this.cells.map(function (cell) {\n return cell.element;\n });\n };\n\n /**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\n proto.getParentCell = function (elem) {\n // first check if elem is cell\n var cell = this.getCell(elem);\n if (cell) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent(elem, '.flickity-slider > *');\n return this.getCell(elem);\n };\n\n /**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\n proto.getAdjacentCellElements = function (adjCount, index) {\n if (!adjCount) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n var len = this.slides.length;\n if (1 + adjCount * 2 >= len) {\n return this.getCellElements();\n }\n var cellElems = [];\n for (var i = index - adjCount; i <= index + adjCount; i++) {\n var slideIndex = this.options.wrapAround ? utils.modulo(i, len) : i;\n var slide = this.slides[slideIndex];\n if (slide) {\n cellElems = cellElems.concat(slide.getCellElements());\n }\n }\n return cellElems;\n };\n\n /**\n * select slide from number or cell element\n * @param {[Element, String, Number]} selector - element, selector string, or index\n * @returns {Flickity.Cell} - matching cell\n */\n proto.queryCell = function (selector) {\n if (typeof selector == 'number') {\n // use number as index\n return this.cells[selector];\n }\n if (typeof selector == 'string') {\n // do not select invalid selectors from hash: #123, #/. #791\n if (selector.match(/^[#.]?[\\d/]/)) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector(selector);\n }\n // get cell from element\n return this.getCell(selector);\n };\n\n // -------------------------- events -------------------------- //\n\n proto.uiChange = function () {\n this.emitEvent('uiChange');\n };\n\n // keep focus on element when child UI elements are clicked\n proto.childUIPointerDown = function (event) {\n // HACK iOS does not allow touch events to bubble up?!\n if (event.type != 'touchstart') {\n event.preventDefault();\n }\n this.focus();\n };\n\n // ----- resize ----- //\n\n proto.onresize = function () {\n this.watchCSS();\n this.resize();\n };\n utils.debounceMethod(Flickity, 'onresize', 150);\n proto.resize = function () {\n // #1177 disable resize behavior when animating or dragging for iOS 15\n if (!this.isActive || this.isAnimating || this.isDragging) {\n return;\n }\n this.getSize();\n // wrap values\n if (this.options.wrapAround) {\n this.x = utils.modulo(this.x, this.slideableWidth);\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell(selectedElement, false, true);\n };\n\n // watches the :after property, activates/deactivates\n proto.watchCSS = function () {\n var watchOption = this.options.watchCSS;\n if (!watchOption) {\n return;\n }\n var afterContent = getComputedStyle(this.element, ':after').content;\n // activate if :after { content: 'flickity' }\n if (afterContent.indexOf('flickity') != -1) {\n this.activate();\n } else {\n this.deactivate();\n }\n };\n\n // ----- keydown ----- //\n\n // go previous/next if left/right keys pressed\n proto.onkeydown = function (event) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if (!this.options.accessibility || isNotFocused) {\n return;\n }\n var handler = Flickity.keyboardHandlers[event.keyCode];\n if (handler) {\n handler.call(this);\n }\n };\n Flickity.keyboardHandlers = {\n // left arrow\n 37: function () {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[leftMethod]();\n },\n // right arrow\n 39: function () {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[rightMethod]();\n }\n };\n\n // ----- focus ----- //\n\n proto.focus = function () {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ...\n // #Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({\n preventScroll: true\n });\n // hack to fix scroll jump after focus, #76\n if (window.pageYOffset != prevScrollY) {\n window.scrollTo(window.pageXOffset, prevScrollY);\n }\n };\n\n // -------------------------- destroy -------------------------- //\n\n // deactivate all Flickity functionality, but keep stuff available\n proto.deactivate = function () {\n if (!this.isActive) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach(function (cell) {\n cell.destroy();\n });\n this.element.removeChild(this.viewport);\n // move child elements back into element\n moveElements(this.slider.children, this.element);\n if (this.options.accessibility) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener('keydown', this);\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n };\n proto.destroy = function () {\n this.deactivate();\n window.removeEventListener('resize', this);\n this.allOff();\n this.emitEvent('destroy');\n if (jQuery && this.$element) {\n jQuery.removeData(this.element, 'flickity');\n }\n delete this.element.flickityGUID;\n delete instances[this.guid];\n };\n\n // -------------------------- prototype -------------------------- //\n\n utils.extend(proto, animatePrototype);\n\n // -------------------------- extras -------------------------- //\n\n /**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\n Flickity.data = function (elem) {\n elem = utils.getQueryElement(elem);\n var id = elem && elem.flickityGUID;\n return id && instances[id];\n };\n utils.htmlInit(Flickity, 'flickity');\n if (jQuery && jQuery.bridget) {\n jQuery.bridget('flickity', Flickity);\n }\n\n // set internal jQuery, for Webpack + jQuery v3, #478\n Flickity.setJQuery = function (jq) {\n jQuery = jq;\n };\n Flickity.Cell = Cell;\n Flickity.Slide = Slide;\n return Flickity;\n});","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n(function (global, factory) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if (typeof define == 'function' && define.amd) {\n // AMD - RequireJS\n define(factory);\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n})(typeof window != 'undefined' ? window : this, function () {\n \"use strict\";\n\n function EvEmitter() {}\n var proto = EvEmitter.prototype;\n proto.on = function (eventName, listener) {\n if (!eventName || !listener) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[eventName] = events[eventName] || [];\n // only add once\n if (listeners.indexOf(listener) == -1) {\n listeners.push(listener);\n }\n return this;\n };\n proto.once = function (eventName, listener) {\n if (!eventName || !listener) {\n return;\n }\n // add event\n this.on(eventName, listener);\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[eventName] = onceEvents[eventName] || {};\n // set flag\n onceListeners[listener] = true;\n return this;\n };\n proto.off = function (eventName, listener) {\n var listeners = this._events && this._events[eventName];\n if (!listeners || !listeners.length) {\n return;\n }\n var index = listeners.indexOf(listener);\n if (index != -1) {\n listeners.splice(index, 1);\n }\n return this;\n };\n proto.emitEvent = function (eventName, args) {\n var listeners = this._events && this._events[eventName];\n if (!listeners || !listeners.length) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[eventName];\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n var isOnce = onceListeners && onceListeners[listener];\n if (isOnce) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off(eventName, listener);\n // unset once flag\n delete onceListeners[listener];\n }\n // trigger listener\n listener.apply(this, args);\n }\n return this;\n };\n proto.allOff = function () {\n delete this._events;\n delete this._onceEvents;\n };\n return EvEmitter;\n});","/*!\n * Flickity v2.3.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2021 Metafizzy\n */\n\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['./flickity', './drag', './prev-next-button', './page-dots', './player', './add-remove-cell', './lazyload'], factory);\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(require('./flickity'), require('./drag'), require('./prev-next-button'), require('./page-dots'), require('./player'), require('./add-remove-cell'), require('./lazyload'));\n }\n})(window, function factory(Flickity) {\n return Flickity;\n});","/* Font Face Observer v2.3.0 - © Bram Stein. License: BSD-3-Clause */(function () {\n 'use strict';\n\n var f,\n g = [];\n function l(a) {\n g.push(a);\n 1 == g.length && f();\n }\n function m() {\n for (; g.length;) g[0](), g.shift();\n }\n f = function () {\n setTimeout(m);\n };\n function n(a) {\n this.a = p;\n this.b = void 0;\n this.f = [];\n var b = this;\n try {\n a(function (a) {\n q(b, a);\n }, function (a) {\n r(b, a);\n });\n } catch (c) {\n r(b, c);\n }\n }\n var p = 2;\n function t(a) {\n return new n(function (b, c) {\n c(a);\n });\n }\n function u(a) {\n return new n(function (b) {\n b(a);\n });\n }\n function q(a, b) {\n if (a.a == p) {\n if (b == a) throw new TypeError();\n var c = !1;\n try {\n var d = b && b.then;\n if (null != b && \"object\" == typeof b && \"function\" == typeof d) {\n d.call(b, function (b) {\n c || q(a, b);\n c = !0;\n }, function (b) {\n c || r(a, b);\n c = !0;\n });\n return;\n }\n } catch (e) {\n c || r(a, e);\n return;\n }\n a.a = 0;\n a.b = b;\n v(a);\n }\n }\n function r(a, b) {\n if (a.a == p) {\n if (b == a) throw new TypeError();\n a.a = 1;\n a.b = b;\n v(a);\n }\n }\n function v(a) {\n l(function () {\n if (a.a != p) for (; a.f.length;) {\n var b = a.f.shift(),\n c = b[0],\n d = b[1],\n e = b[2],\n b = b[3];\n try {\n 0 == a.a ? \"function\" == typeof c ? e(c.call(void 0, a.b)) : e(a.b) : 1 == a.a && (\"function\" == typeof d ? e(d.call(void 0, a.b)) : b(a.b));\n } catch (h) {\n b(h);\n }\n }\n });\n }\n n.prototype.g = function (a) {\n return this.c(void 0, a);\n };\n n.prototype.c = function (a, b) {\n var c = this;\n return new n(function (d, e) {\n c.f.push([a, b, d, e]);\n v(c);\n });\n };\n function w(a) {\n return new n(function (b, c) {\n function d(c) {\n return function (d) {\n h[c] = d;\n e += 1;\n e == a.length && b(h);\n };\n }\n var e = 0,\n h = [];\n 0 == a.length && b(h);\n for (var k = 0; k < a.length; k += 1) u(a[k]).c(d(k), c);\n });\n }\n function x(a) {\n return new n(function (b, c) {\n for (var d = 0; d < a.length; d += 1) u(a[d]).c(b, c);\n });\n }\n ;\n window.Promise || (window.Promise = n, window.Promise.resolve = u, window.Promise.reject = t, window.Promise.race = x, window.Promise.all = w, window.Promise.prototype.then = n.prototype.c, window.Promise.prototype[\"catch\"] = n.prototype.g);\n})();\n(function () {\n function p(a, c) {\n document.addEventListener ? a.addEventListener(\"scroll\", c, !1) : a.attachEvent(\"scroll\", c);\n }\n function u(a) {\n document.body ? a() : document.addEventListener ? document.addEventListener(\"DOMContentLoaded\", function b() {\n document.removeEventListener(\"DOMContentLoaded\", b);\n a();\n }) : document.attachEvent(\"onreadystatechange\", function g() {\n if (\"interactive\" == document.readyState || \"complete\" == document.readyState) document.detachEvent(\"onreadystatechange\", g), a();\n });\n }\n ;\n function w(a) {\n this.g = document.createElement(\"div\");\n this.g.setAttribute(\"aria-hidden\", \"true\");\n this.g.appendChild(document.createTextNode(a));\n this.h = document.createElement(\"span\");\n this.i = document.createElement(\"span\");\n this.m = document.createElement(\"span\");\n this.j = document.createElement(\"span\");\n this.l = -1;\n this.h.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n this.i.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n this.j.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n this.m.style.cssText = \"display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;\";\n this.h.appendChild(this.m);\n this.i.appendChild(this.j);\n this.g.appendChild(this.h);\n this.g.appendChild(this.i);\n }\n function x(a, c) {\n a.g.style.cssText = \"max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:\" + c + \";\";\n }\n function B(a) {\n var c = a.g.offsetWidth,\n b = c + 100;\n a.j.style.width = b + \"px\";\n a.i.scrollLeft = b;\n a.h.scrollLeft = a.h.scrollWidth + 100;\n return a.l !== c ? (a.l = c, !0) : !1;\n }\n function C(a, c) {\n function b() {\n var e = g;\n B(e) && null !== e.g.parentNode && c(e.l);\n }\n var g = a;\n p(a.h, b);\n p(a.i, b);\n B(a);\n }\n ;\n function D(a, c, b) {\n c = c || {};\n b = b || window;\n this.family = a;\n this.style = c.style || \"normal\";\n this.weight = c.weight || \"normal\";\n this.stretch = c.stretch || \"normal\";\n this.context = b;\n }\n var E = null,\n F = null,\n G = null,\n H = null;\n function I(a) {\n null === F && (M(a) && /Apple/.test(window.navigator.vendor) ? (a = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent), F = !!a && 603 > parseInt(a[1], 10)) : F = !1);\n return F;\n }\n function M(a) {\n null === H && (H = !!a.document.fonts);\n return H;\n }\n function N(a, c) {\n var b = a.style,\n g = a.weight;\n if (null === G) {\n var e = document.createElement(\"div\");\n try {\n e.style.font = \"condensed 100px sans-serif\";\n } catch (q) {}\n G = \"\" !== e.style.font;\n }\n return [b, g, G ? a.stretch : \"\", \"100px\", c].join(\" \");\n }\n D.prototype.load = function (a, c) {\n var b = this,\n g = a || \"BESbswy\",\n e = 0,\n q = c || 3E3,\n J = new Date().getTime();\n return new Promise(function (K, L) {\n if (M(b.context) && !I(b.context)) {\n var O = new Promise(function (r, t) {\n function h() {\n new Date().getTime() - J >= q ? t(Error(\"\" + q + \"ms timeout exceeded\")) : b.context.document.fonts.load(N(b, '\"' + b.family + '\"'), g).then(function (n) {\n 1 <= n.length ? r() : setTimeout(h, 25);\n }, t);\n }\n h();\n }),\n P = new Promise(function (r, t) {\n e = setTimeout(function () {\n t(Error(\"\" + q + \"ms timeout exceeded\"));\n }, q);\n });\n Promise.race([P, O]).then(function () {\n clearTimeout(e);\n K(b);\n }, L);\n } else u(function () {\n function r() {\n var d;\n if (d = -1 != k && -1 != l || -1 != k && -1 != m || -1 != l && -1 != m) (d = k != l && k != m && l != m) || (null === E && (d = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent), E = !!d && (536 > parseInt(d[1], 10) || 536 === parseInt(d[1], 10) && 11 >= parseInt(d[2], 10))), d = E && (k == y && l == y && m == y || k == z && l == z && m == z || k == A && l == A && m == A)), d = !d;\n d && (null !== f.parentNode && f.parentNode.removeChild(f), clearTimeout(e), K(b));\n }\n function t() {\n if (new Date().getTime() - J >= q) null !== f.parentNode && f.parentNode.removeChild(f), L(Error(\"\" + q + \"ms timeout exceeded\"));else {\n var d = b.context.document.hidden;\n if (!0 === d || void 0 === d) k = h.g.offsetWidth, l = n.g.offsetWidth, m = v.g.offsetWidth, r();\n e = setTimeout(t, 50);\n }\n }\n var h = new w(g),\n n = new w(g),\n v = new w(g),\n k = -1,\n l = -1,\n m = -1,\n y = -1,\n z = -1,\n A = -1,\n f = document.createElement(\"div\");\n f.dir = \"ltr\";\n x(h, N(b, \"sans-serif\"));\n x(n, N(b, \"serif\"));\n x(v, N(b, \"monospace\"));\n f.appendChild(h.g);\n f.appendChild(n.g);\n f.appendChild(v.g);\n b.context.document.body.appendChild(f);\n y = h.g.offsetWidth;\n z = n.g.offsetWidth;\n A = v.g.offsetWidth;\n t();\n C(h, function (d) {\n k = d;\n r();\n });\n x(h, N(b, '\"' + b.family + '\",sans-serif'));\n C(n, function (d) {\n l = d;\n r();\n });\n x(n, N(b, '\"' + b.family + '\",serif'));\n C(v, function (d) {\n m = d;\n r();\n });\n x(v, N(b, '\"' + b.family + '\",monospace'));\n });\n });\n };\n \"object\" === typeof module ? module.exports = D : (window.FontFaceObserver = D, window.FontFaceObserver.prototype.load = D.prototype.load);\n})();","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function () {\n return root.Date.now();\n};\nmodule.exports = now;","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\nmodule.exports = freeGlobal;","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\nmodule.exports = toNumber;","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') : string;\n}\nmodule.exports = baseTrim;","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\nmodule.exports = trimmedEndIndex;","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag;\n}\nmodule.exports = isSymbol;","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\nmodule.exports = baseGetTag;","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\nmodule.exports = getRawTag;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\nmodule.exports = objectToString;","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\nmodule.exports = isObjectLike;","module.exports = /******/function (modules) {\n // webpackBootstrap\n /******/ // The module cache\n /******/\n var installedModules = {};\n /******/\n /******/ // The require function\n /******/\n function __webpack_require__(moduleId) {\n /******/\n /******/ // Check if module is in cache\n /******/if (installedModules[moduleId]) {\n /******/return installedModules[moduleId].exports;\n /******/\n }\n /******/ // Create a new module (and put it into the cache)\n /******/\n var module = installedModules[moduleId] = {\n /******/i: moduleId,\n /******/l: false,\n /******/exports: {}\n /******/\n };\n /******/\n /******/ // Execute the module function\n /******/\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n /******/ // Flag the module as loaded\n /******/\n module.l = true;\n /******/\n /******/ // Return the exports of the module\n /******/\n return module.exports;\n /******/\n }\n /******/\n /******/\n /******/ // expose the modules object (__webpack_modules__)\n /******/\n __webpack_require__.m = modules;\n /******/\n /******/ // expose the module cache\n /******/\n __webpack_require__.c = installedModules;\n /******/\n /******/ // define getter function for harmony exports\n /******/\n __webpack_require__.d = function (exports, name, getter) {\n /******/if (!__webpack_require__.o(exports, name)) {\n /******/Object.defineProperty(exports, name, {\n /******/configurable: false,\n /******/enumerable: true,\n /******/get: getter\n /******/\n });\n /******/\n }\n /******/\n };\n /******/\n /******/ // define __esModule on exports\n /******/\n __webpack_require__.r = function (exports) {\n /******/Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n /******/ // getDefaultExport function for compatibility with non-harmony modules\n /******/\n __webpack_require__.n = function (module) {\n /******/var getter = module && module.__esModule ? /******/function getDefault() {\n return module['default'];\n } : /******/function getModuleExports() {\n return module;\n };\n /******/\n __webpack_require__.d(getter, 'a', getter);\n /******/\n return getter;\n /******/\n };\n /******/\n /******/ // Object.prototype.hasOwnProperty.call\n /******/\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n /******/ // __webpack_public_path__\n /******/\n __webpack_require__.p = \"\";\n /******/\n /******/\n /******/ // Load entry module and return exports\n /******/\n return __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n /******/\n}\n/************************************************************************/\n/******/({\n /***/\"./src/index.js\":\n /*!**********************!*\\\n !*** ./src/index.js ***!\n \\**********************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n eval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\\\"value\\\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\\n\\nvar _utils = __webpack_require__(/*! ./utils */ \\\"./src/utils.js\\\");\\n\\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\\\"Cannot call a class as a function\\\"); } }\\n\\n/**\\n * Wrap the last X words in an HTML tag to prevent them from wrapping (i.e. orphans)\\n * @param {HTMLElement} el - Target DOM node\\n * @param {Object} opts - Options\\n * @param {number} [opts.wordCount=2] - Minimum number of words required to wrap to a new line\\n * @param {string} [opts.wrapEl=span] - Tag name to use for the wrapper element\\n * @param {boolean} [opts.inlineStyles=true] - Add “white-space: nowrap;” to elements as inline style\\n * @param {string} [opts.className=u-nowrap] - Class name to apply to wrapper element\\n * @param {string} [opts.append] - Any arbitrary string or HTML to append inside of the wrapper element\\n */\\nvar Unorphanize = function () {\\n function Unorphanize(el, opts) {\\n _classCallCheck(this, Unorphanize);\\n\\n this.el = el;\\n\\n try {\\n // Note: Using textContent instead of innerText avoids a reflow but includes text hidden by CSS.\\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent#Differences_from_innerText\\n this.origText = this.el.textContent;\\n this.childNodes = this.el.children;\\n } catch (e) {\\n throw Error('Unorphanize: Constructor requires a DOM node object');\\n }\\n\\n // Exit if el is undefined or has no content\\n if (el.innerHTML.trim().length === 0) {\\n console.warn('Unorphanize: Element contains no text or child nodes');\\n }\\n\\n // Use Object.assign() to merge “options” object with default values object\\n this.options = Object.assign({}, {\\n wordCount: 2, // accepts any integer\\n wrapEl: \\\"span\\\", // accepts any tag name\\n inlineStyles: true, // will add “white-space: nowrap;” to wrapper el\\n className: \\\"\\\", // accepts any valid class name\\n append: \\\"\\\" // accepts any arbitrary HTML\\n }, opts);\\n\\n // Convert to integer\\n this.options.wordCount = parseInt(this.options.wordCount, 10);\\n\\n // Default to 2 if non-integer value was passed\\n if (isNaN(this.options.wordCount)) {\\n this.options.wordCount = 2;\\n }\\n\\n // Subtract 1 of an “append” string was passed\\n if (this.options.append.length) {\\n this.options.wordCount -= 1;\\n }\\n\\n // If no children, use simple method that doesn’t account for child nodes\\n if (this.childNodes.length === 0) {\\n // Update target element with new HTML\\n this.el.innerHTML = (0, _utils.wrapPlainTextWords)(this.origText, this.options);\\n // console.log(\\\"No children \\\\n\\\", this.el.outerHTML.replace(/\\\\r?\\\\n|\\\\r/g,\\\" \\\"));\\n } else {\\n // If there are child nodes, we must use more advanced logic\\n this.wrapRichText();\\n }\\n }\\n\\n /**\\n * Parse child node text and adjacent strings, update variables\\n * @param {HTMLElement} childEl - Child node\\n */\\n\\n\\n _createClass(Unorphanize, [{\\n key: \\\"updateChildNodeVars\\\",\\n value: function updateChildNodeVars() {\\n this.childHtml = this.childEl.outerHTML;\\n\\n // Use split to find text before and after the child\\n this.currentChildSplit = this.el.innerHTML.split(this.childHtml);\\n this.textBeforeChild = this.currentChildSplit[0];\\n this.textAfterChild = this.currentChildSplit[1] || \\\"\\\";\\n\\n // For every child after the first, we don’t want to re-count the words\\n // from the previous child and any text to the right of it. We determine\\n // where this is by searching for the first “<” character.\\n this.markupIndex = this.textAfterChild.indexOf(\\\"<\\\");\\n\\n // Get just the text after the child, but before any previously evaluated children.\\n this.plainText = this.markupIndex > -1 ? this.textAfterChild.substring(0, this.markupIndex) : this.textAfterChild;\\n\\n // Save the previously evaluated markup to add back later\\n this.previousString = this.markupIndex > -1 ? this.textAfterChild.substring(this.markupIndex) : \\\"\\\";\\n\\n // Save the child node text\\n this.childText = this.childEl.textContent.trim();\\n\\n // Count words in child node (if no text, count as 1 word, e.g. svg or img tag)\\n this.childWordCount = this.childText.length ? this.childText.trim().split(\\\" \\\").length : 1;\\n\\n // Convert plain text to array, fallback to null if no text\\n // Note: A string of whitespce returns 1 for this.plainText.trim().split(\\\" \\\"),\\n // so check the trimmed length and set to null if it’s all whitespce.\\n this.plainTextWords = this.plainText.trim().length ? this.plainText.trim().split(\\\" \\\") : null;\\n\\n // Count words after child, not including previously evaluated text\\n this.plainTextWordCount = this.plainTextWords !== null ? this.plainTextWords.length : 0;\\n\\n // If the plain text doesn’t start with a space, treat the first words as part of the child element’s last word.\\n this.partialWord = \\\"\\\";\\n\\n if (this.plainTextWordCount > 0 && this.plainText.search(/\\\\S/) === 0) {\\n // Save partial word string, remove from plainTextWords array\\n this.partialWord = this.plainTextWords.shift();\\n // Subtract 1 from plain text word count\\n this.plainTextWordCount--;\\n }\\n }\\n\\n // Format text before the first child\\n\\n }, {\\n key: \\\"formatTextBeforeFirstChild\\\",\\n value: function formatTextBeforeFirstChild() {\\n // After all the children have been evaluated, check for text before the first child.\\n var elInnerHTML = this.el.innerHTML;\\n var firstChildIndex = elInnerHTML.indexOf(\\\"<\\\");\\n this.textBeforeChild = firstChildIndex > -1 ? elInnerHTML.substring(0, firstChildIndex) : elInnerHTML;\\n\\n // Save the previously evaluated string to add back later\\n var stringAfterText = firstChildIndex > -1 ? elInnerHTML.substring(firstChildIndex) : \\\"\\\";\\n\\n if (this.textBeforeChild.trim().length > 0) {\\n var words = this.textBeforeChild.trim().split(\\\" \\\");\\n\\n if (words.length + this.previousWordCount === this.options.wordCount) {\\n // Prevent entire element from wrapping\\n\\n if (this.options.inlineStyles) {\\n this.el.setAttribute(\\\"style\\\", _utils.nowrapCSS);\\n }\\n\\n if (this.options.className.length) {\\n this.el.classList.add(this.options.className);\\n }\\n\\n // console.log(\\\"Text and children exactly equal word count \\\\n\\\", this.el.outerHTML.replace(/\\\\r?\\\\n|\\\\r/g,\\\" \\\"));\\n return true;\\n } else if (words.length + this.previousWordCount >= this.options.wordCount) {\\n // Get number of additional words needed\\n var wordsNeeded = this.options.wordCount - this.previousWordCount;\\n\\n // Split string into two parts\\n var leftoverText = (0, _utils.getLeadingSpace)(this.textBeforeChild) + words.splice(0, words.length - wordsNeeded).join(\\\" \\\");\\n var textToWrap = words.join(\\\" \\\") + (0, _utils.getTrailingSpace)(this.textBeforeChild);\\n\\n // Update target element HTML\\n this.el.innerHTML = leftoverText + (0, _utils.wrapString)(textToWrap + stringAfterText, this.options);\\n // console.log(\\\"Text and string have more than enough words \\\\n\\\", this.el.outerHTML.replace(/\\\\r?\\\\n|\\\\r/g,\\\" \\\"));\\n return true;\\n }\\n }\\n }\\n\\n // In order to avoid using complex RegEx to parse HTML (see links below),\\n // we’re looping through each child element. The steps are as follows:\\n //\\n // - Check for any text to the right of the current child element.\\n // - If there is text, see how many words there are.\\n // - Check if the first word has a leading space. If not, consider it part\\n // of the previous child element and don’t include in word count.\\n // - If there are at least this.options.wordCount words, use wrapPlainTextWords() on the text.\\n // - If there are not enough words, check the child element’s text.\\n // - If the child has no space after it, consider its last word as part\\n // of the first plain text word to the right, so subtract 1 from word count.\\n // - If the child has exactly enough words, wrap the child and the text\\n // to the right using wrapString().\\n // - If the child has too many words, we can’t safely break it up to wrap just the\\n // desired number of words. Exit and do nothing.\\n // - If the child doesn’t have enough words, move on to the next child.\\n // - If all children have been checked and we still don’t have enough words,\\n // check for any text to the left of the first child.\\n // - If the left text has exactly enough words, add a class of this.options.className (i.e. “u-nowrap”)\\n // - If the left text has too many words, figure out how many we need and wrap along\\n // with the text to the right using wrapString().\\n // - If the left text doens’t have enough words, exit and do nothing.\\n //\\n // Why we’re not using RegEx:\\n // https://blog.codinghorror.com/parsing-html-the-cthulhu-way/\\n // https://stackoverflow.com/a/1732454/673457\\n\\n }, {\\n key: \\\"wrapRichText\\\",\\n value: function wrapRichText() {\\n // Keep track of the number of “words” (includes tags with no text, like SVG)\\n // so we can tell if it’s safe to wrap plain text and child elements together.\\n // For example: `foo bar.` or `foo bar.`\\n this.previousWordCount = 0;\\n\\n for (var i = this.childNodes.length; i > 0; i--) {\\n this.childEl = this.childNodes[i - 1];\\n\\n // Update node text and adjacent string variables\\n this.updateChildNodeVars();\\n\\n // If no plain text, only check the child’s text\\n //------------------------------------------------------------------------\\n if (this.plainTextWordCount === 0) {\\n if (this.childWordCount + this.previousWordCount >= this.options.wordCount) {\\n if (this.previousWordCount === 0) {\\n // If child has no text, wrap it (e.g. an svg/img that we’re appending content to)\\n if (!this.childText.length) {\\n this.childEl.outerHTML = (0, _utils.wrapString)(this.childEl.outerHTML, this.options);\\n } else {\\n // Child has enough words by itself, so we can wrap its inner text\\n this.childEl.innerHTML = (0, _utils.wrapPlainTextWords)(this.childEl.textContent, this.options);\\n }\\n // console.log(\\\"Last child has enough words \\\\n\\\", this.el.outerHTML.replace(/\\\\r?\\\\n|\\\\r/g,\\\" \\\"));\\n return true;\\n } else if (this.childWordCount + this.previousWordCount === this.options.wordCount) {\\n // If the child’s words plus the previous words are exactly enough, wrap both.\\n this.el.innerHTML = this.textBeforeChild + (0, _utils.wrapString)(this.childHtml + this.textAfterChild, this.options);\\n // console.log(\\\"Last child and previous text have exactly enough words \\\\n\\\", this.el.outerHTML.replace(/\\\\r?\\\\n|\\\\r/g,\\\" \\\"));\\n return true;\\n } else if (this.childWordCount + this.previousWordCount > this.options.wordCount) {\\n console.warn(\\\"Unorphanize: Can’t safely prevent orphans on this element \\\\n\\\", this.el);\\n return true;\\n }\\n } else {\\n // Increment this.previousWordCount and continue with for loop\\n // console.log(\\\"Child has too few words, increment this.previousWordCount by\\\", this.childWordCount);\\n this.previousWordCount += this.childWordCount;\\n }\\n }\\n // Text and previous string have exactly enough words\\n //------------------------------------------------------------------------\\n else if (this.plainTextWordCount + this.previousWordCount === this.options.wordCount) {\\n // Update target element HTML\\n this.el.innerHTML = this.textBeforeChild + this.childHtml + (0, _utils.wrapString)(this.plainText + this.previousString, this.options);\\n // console.log(\\\"Text and previous string have exactly enough words \\\\n\\\", this.el.outerHTML.replace(/\\\\r?\\\\n|\\\\r/g,\\\" \\\"));\\n return true;\\n }\\n // Text and previous string have more than enough words\\n //------------------------------------------------------------------------\\n else if (this.plainTextWordCount + this.previousWordCount > this.options.wordCount) {\\n // Get number of additional words needed\\n var wordsNeeded = this.options.wordCount - this.previousWordCount;\\n\\n // Split string into two parts, add back leading/trailing space\\n var leftoverText = (0, _utils.getLeadingSpace)(this.plainText) + this.plainTextWords.splice(0, this.plainTextWordCount - wordsNeeded).join(\\\" \\\");\\n var textToWrap = this.plainTextWords.join(\\\" \\\") + (0, _utils.getTrailingSpace)(this.plainText);\\n\\n // Update target element HTML\\n this.el.innerHTML = this.textBeforeChild + this.childHtml + leftoverText + (0, _utils.wrapString)(textToWrap + this.previousString, this.options);\\n // console.log(\\\"Text and string have more than enough words \\\\n\\\", this.el.outerHTML.replace(/\\\\r?\\\\n|\\\\r/g,\\\" \\\"));\\n return true;\\n }\\n // Child words plus text and previous string have exactly enough words\\n //------------------------------------------------------------------------\\n else if (this.childWordCount + this.plainTextWordCount + this.previousWordCount === this.options.wordCount) {\\n // Update target element HTML\\n this.el.innerHTML = this.textBeforeChild + (0, _utils.wrapString)(this.childHtml + this.plainText + this.previousString, this.options);\\n // console.log(\\\"Child words plus text plus previous text have exactly enough words \\\\n\\\", this.el.outerHTML.replace(/\\\\r?\\\\n|\\\\r/g,\\\" \\\"));\\n return true;\\n }\\n // Child words plus text and previous string have more than enough words\\n //------------------------------------------------------------------------\\n else if (this.childWordCount + this.plainTextWordCount + this.previousWordCount > this.options.wordCount) {\\n console.warn(\\\"Unorphanize: Can’t safely prevent orphans on this element \\\\n\\\", this.el);\\n return true;\\n } else {\\n // Increment this.previousWordCount and continue with for loop\\n this.previousWordCount += this.childWordCount + this.plainTextWordCount;\\n // console.log(\\\"Increment word count to \\\", this.previousWordCount);\\n }\\n }\\n\\n // If we still don’t have enough words to wrap, check for any text before the first child\\n this.formatTextBeforeFirstChild();\\n }\\n }]);\\n\\n return Unorphanize;\\n}();\\n\\nexports.default = Unorphanize;\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./src/index.js?\");\n\n /***/\n },\n\n /***/\"./src/utils.js\":\n /*!**********************!*\\\n !*** ./src/utils.js ***!\n \\**********************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n eval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.getLeadingSpace = getLeadingSpace;\\nexports.getTrailingSpace = getTrailingSpace;\\nexports.wrapString = wrapString;\\nexports.wrapPlainTextWords = wrapPlainTextWords;\\n// Inlines styles to prevent wrapping\\nvar nowrapCSS = exports.nowrapCSS = \\\"white-space: nowrap !important;\\\";\\n\\n/**\\n * Get leading whitespace of string\\n * @param {string} string - Source string\\n * @return {string} Leading whitespace string\\n */\\nfunction getLeadingSpace(string) {\\n // Return everything before first non-whitespace character\\n return string.substring(0, string.search(/\\\\S/));\\n}\\n\\n/**\\n * Get trailing whitespace\\n * @param {string} string - Source string\\n * @return {string} Trailing whitespace string\\n */\\nfunction getTrailingSpace(string) {\\n var trailingSpaceIndex = string.search(/\\\\s+$/);\\n // RegEx finds 1 or more consecutive spaces at the end of the string\\n return trailingSpaceIndex > -1 ? string.substring(string.search(/\\\\s+$/), string.length) : \\\"\\\";\\n}\\n\\n/**\\n * Wrap entire string in span and return HTML\\n * @param {string} string - Plain text string\\n * @return {string} Source string wrapped in HTML tag\\n */\\nfunction wrapString(string, options) {\\n var classAttr = \\\" class=\\\\\\\"\\\" + options.className + \\\"\\\\\\\"\\\";\\n var styleAttr = \\\" style=\\\\\\\"\\\" + nowrapCSS + \\\"\\\\\\\"\\\";\\n\\n // This unusual syntax formatting avoids adding line breaks to returned string\\n return \\\"\\\\n <\\\" + options.wrapEl + (options.className.length ? classAttr : \\\"\\\") + (options.inlineStyles ? styleAttr : \\\"\\\") + \\\">\\\" + string + options.append + \\\"\\\" + options.wrapEl + \\\">\\\";\\n}\\n\\n/**\\n * Wrap last X words of plain text string in HTML tag\\n * @param {string} text - Plain text string\\n * @return {string} String with last words wrapped in HTML tag\\n */\\nfunction wrapPlainTextWords(text, options) {\\n // Create word array\\n // (trim text to avoid counting leading/trailing spaces)\\n var allWords = text.trim().split(\\\" \\\");\\n\\n // Return original text if not enough words to wrap\\n if (allWords.length < options.wordCount) {\\n return text;\\n }\\n\\n // Find the last X words that should not wrap\\n var lastWords = allWords.splice(allWords.length - options.wordCount, options.wordCount);\\n\\n // Add back leading/trailing space\\n var startString = getLeadingSpace(text) + allWords.join(\\\" \\\");\\n var endString = lastWords.join(\\\" \\\") + getTrailingSpace(text);\\n\\n var classAttr = \\\" class=\\\\\\\"\\\" + options.className + \\\"\\\\\\\"\\\";\\n var styleAttr = \\\" style=\\\\\\\"\\\" + nowrapCSS + \\\"\\\\\\\"\\\";\\n\\n // This unusual syntax formatting avoids adding line breaks to returned string\\n return \\\"\\\\n \\\" + (startString.length ? startString + \\\" \\\" : \\\" \\\") + \\\"<\\\" + options.wrapEl + (options.className.length ? classAttr : \\\"\\\") + (options.inlineStyles ? styleAttr : \\\"\\\") + \\\">\\\" + endString + options.append + \\\"\\\" + options.wrapEl + \\\">\\\";\\n}\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./src/utils.js?\");\n\n /***/\n }\n\n /******/\n});","/*!\n * Unipointer v2.4.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n(function (window, factory) {\n // universal module definition\n /* jshint strict: false */ /*global define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['ev-emitter/ev-emitter'], function (EvEmitter) {\n return factory(window, EvEmitter);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('ev-emitter'));\n } else {\n // browser global\n window.Unipointer = factory(window, window.EvEmitter);\n }\n})(window, function factory(window, EvEmitter) {\n 'use strict';\n\n function noop() {}\n function Unipointer() {}\n\n // inherit EvEmitter\n var proto = Unipointer.prototype = Object.create(EvEmitter.prototype);\n proto.bindStartEvent = function (elem) {\n this._bindStartEvent(elem, true);\n };\n proto.unbindStartEvent = function (elem) {\n this._bindStartEvent(elem, false);\n };\n\n /**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\n proto._bindStartEvent = function (elem, isAdd) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n // default to mouse events\n var startEvent = 'mousedown';\n if ('ontouchstart' in window) {\n // HACK prefer Touch Events as you can preventDefault on touchstart to\n // disable scroll in iOS & mobile Chrome metafizzy/flickity#1177\n startEvent = 'touchstart';\n } else if (window.PointerEvent) {\n // Pointer Events\n startEvent = 'pointerdown';\n }\n elem[bindMethod](startEvent, this);\n };\n\n // trigger handler methods for events\n proto.handleEvent = function (event) {\n var method = 'on' + event.type;\n if (this[method]) {\n this[method](event);\n }\n };\n\n // returns the touch that we're keeping track of\n proto.getTouch = function (touches) {\n for (var i = 0; i < touches.length; i++) {\n var touch = touches[i];\n if (touch.identifier == this.pointerIdentifier) {\n return touch;\n }\n }\n };\n\n // ----- start event ----- //\n\n proto.onmousedown = function (event) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n if (button && button !== 0 && button !== 1) {\n return;\n }\n this._pointerDown(event, event);\n };\n proto.ontouchstart = function (event) {\n this._pointerDown(event, event.changedTouches[0]);\n };\n proto.onpointerdown = function (event) {\n this._pointerDown(event, event);\n };\n\n /**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\n proto._pointerDown = function (event, pointer) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if (event.button || this.isPointerDown) {\n return;\n }\n this.isPointerDown = true;\n // save pointer identifier to match up touch events\n this.pointerIdentifier = pointer.pointerId !== undefined ?\n // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n this.pointerDown(event, pointer);\n };\n proto.pointerDown = function (event, pointer) {\n this._bindPostStartEvents(event);\n this.emitEvent('pointerDown', [event, pointer]);\n };\n\n // hash of events to be bound after start event\n var postStartEvents = {\n mousedown: ['mousemove', 'mouseup'],\n touchstart: ['touchmove', 'touchend', 'touchcancel'],\n pointerdown: ['pointermove', 'pointerup', 'pointercancel']\n };\n proto._bindPostStartEvents = function (event) {\n if (!event) {\n return;\n }\n // get proper events to match start event\n var events = postStartEvents[event.type];\n // bind events to node\n events.forEach(function (eventName) {\n window.addEventListener(eventName, this);\n }, this);\n // save these arguments\n this._boundPointerEvents = events;\n };\n proto._unbindPostStartEvents = function () {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if (!this._boundPointerEvents) {\n return;\n }\n this._boundPointerEvents.forEach(function (eventName) {\n window.removeEventListener(eventName, this);\n }, this);\n delete this._boundPointerEvents;\n };\n\n // ----- move event ----- //\n\n proto.onmousemove = function (event) {\n this._pointerMove(event, event);\n };\n proto.onpointermove = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerMove(event, event);\n }\n };\n proto.ontouchmove = function (event) {\n var touch = this.getTouch(event.changedTouches);\n if (touch) {\n this._pointerMove(event, touch);\n }\n };\n\n /**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\n proto._pointerMove = function (event, pointer) {\n this.pointerMove(event, pointer);\n };\n\n // public\n proto.pointerMove = function (event, pointer) {\n this.emitEvent('pointerMove', [event, pointer]);\n };\n\n // ----- end event ----- //\n\n proto.onmouseup = function (event) {\n this._pointerUp(event, event);\n };\n proto.onpointerup = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerUp(event, event);\n }\n };\n proto.ontouchend = function (event) {\n var touch = this.getTouch(event.changedTouches);\n if (touch) {\n this._pointerUp(event, touch);\n }\n };\n\n /**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\n proto._pointerUp = function (event, pointer) {\n this._pointerDone();\n this.pointerUp(event, pointer);\n };\n\n // public\n proto.pointerUp = function (event, pointer) {\n this.emitEvent('pointerUp', [event, pointer]);\n };\n\n // ----- pointer done ----- //\n\n // triggered on pointer up & pointer cancel\n proto._pointerDone = function () {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n };\n proto._pointerReset = function () {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n };\n proto.pointerDone = noop;\n\n // ----- pointer cancel ----- //\n\n proto.onpointercancel = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerCancel(event, event);\n }\n };\n proto.ontouchcancel = function (event) {\n var touch = this.getTouch(event.changedTouches);\n if (touch) {\n this._pointerCancel(event, touch);\n }\n };\n\n /**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\n proto._pointerCancel = function (event, pointer) {\n this._pointerDone();\n this.pointerCancel(event, pointer);\n };\n\n // public\n proto.pointerCancel = function (event, pointer) {\n this.emitEvent('pointerCancel', [event, pointer]);\n };\n\n // ----- ----- //\n\n // utility function for getting x/y coords from event\n Unipointer.getPointerPoint = function (pointer) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n };\n\n // ----- ----- //\n\n return Unipointer;\n});","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n(function (window, factory) {\n /* jshint strict: false */ /* globals define, module */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(factory);\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n})(window, function factory() {\n 'use strict';\n\n // -------------------------- helpers -------------------------- //\n\n // get a number from a string, not a percentage\n function getStyleSize(value) {\n var num = parseFloat(value);\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN(num);\n return isValid && num;\n }\n function noop() {}\n var logError = typeof console == 'undefined' ? noop : function (message) {\n console.error(message);\n };\n\n // -------------------------- measurements -------------------------- //\n\n var measurements = ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', 'borderBottomWidth'];\n var measurementsLength = measurements.length;\n function getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n size[measurement] = 0;\n }\n return size;\n }\n\n // -------------------------- getStyle -------------------------- //\n\n /**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\n function getStyle(elem) {\n var style = getComputedStyle(elem);\n if (!style) {\n logError('Style returned ' + style + '. Are you running this code in a hidden iframe on Firefox? ' + 'See https://bit.ly/getsizebug1');\n }\n return style;\n }\n\n // -------------------------- setup -------------------------- //\n\n var isSetup = false;\n var isBoxSizeOuter;\n\n /**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\n function setup() {\n // setup once\n if (isSetup) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n var body = document.body || document.documentElement;\n body.appendChild(div);\n var style = getStyle(div);\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round(getStyleSize(style.width)) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n body.removeChild(div);\n }\n\n // -------------------------- getSize -------------------------- //\n\n function getSize(elem) {\n setup();\n\n // use querySeletor if elem is string\n if (typeof elem == 'string') {\n elem = document.querySelector(elem);\n }\n\n // do not proceed on non-objects\n if (!elem || typeof elem != 'object' || !elem.nodeType) {\n return;\n }\n var style = getStyle(elem);\n\n // if hidden, everything is 0\n if (style.display == 'none') {\n return getZeroSize();\n }\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n var value = style[measurement];\n var num = parseFloat(value);\n // any 'auto', 'medium' value will be 0\n size[measurement] = !isNaN(num) ? num : 0;\n }\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize(style.width);\n if (styleWidth !== false) {\n size.width = styleWidth + (\n // add padding and border unless it's already including it\n isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth);\n }\n var styleHeight = getStyleSize(style.height);\n if (styleHeight !== false) {\n size.height = styleHeight + (\n // add padding and border unless it's already including it\n isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight);\n }\n size.innerWidth = size.width - (paddingWidth + borderWidth);\n size.innerHeight = size.height - (paddingHeight + borderHeight);\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n return size;\n }\n return getSize;\n});","/*! smooth-scroll v16.1.3 | (c) 2020 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */\nwindow.Element && !Element.prototype.closest && (Element.prototype.closest = function (e) {\n var t,\n n = (this.document || this.ownerDocument).querySelectorAll(e),\n o = this;\n do {\n for (t = n.length; 0 <= --t && n.item(t) !== o;);\n } while (t < 0 && (o = o.parentElement));\n return o;\n}), function () {\n if (\"function\" == typeof window.CustomEvent) return;\n function e(e, t) {\n t = t || {\n bubbles: !1,\n cancelable: !1,\n detail: void 0\n };\n var n = document.createEvent(\"CustomEvent\");\n return n.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), n;\n }\n e.prototype = window.Event.prototype, window.CustomEvent = e;\n}(), function () {\n for (var r = 0, e = [\"ms\", \"moz\", \"webkit\", \"o\"], t = 0; t < e.length && !window.requestAnimationFrame; ++t) window.requestAnimationFrame = window[e[t] + \"RequestAnimationFrame\"], window.cancelAnimationFrame = window[e[t] + \"CancelAnimationFrame\"] || window[e[t] + \"CancelRequestAnimationFrame\"];\n window.requestAnimationFrame || (window.requestAnimationFrame = function (e, t) {\n var n = new Date().getTime(),\n o = Math.max(0, 16 - (n - r)),\n a = window.setTimeout(function () {\n e(n + o);\n }, o);\n return r = n + o, a;\n }), window.cancelAnimationFrame || (window.cancelAnimationFrame = function (e) {\n clearTimeout(e);\n });\n}(), function (e, t) {\n \"function\" == typeof define && define.amd ? define([], function () {\n return t(e);\n }) : \"object\" == typeof exports ? module.exports = t(e) : e.SmoothScroll = t(e);\n}(\"undefined\" != typeof global ? global : \"undefined\" != typeof window ? window : this, function (M) {\n \"use strict\";\n\n var q = {\n ignore: \"[data-scroll-ignore]\",\n header: null,\n topOnEmptyHash: !0,\n speed: 500,\n speedAsDuration: !1,\n durationMax: null,\n durationMin: null,\n clip: !0,\n offset: 0,\n easing: \"easeInOutCubic\",\n customEasing: null,\n updateURL: !0,\n popstate: !0,\n emitEvents: !0\n },\n I = function () {\n var n = {};\n return Array.prototype.forEach.call(arguments, function (e) {\n for (var t in e) {\n if (!e.hasOwnProperty(t)) return;\n n[t] = e[t];\n }\n }), n;\n },\n r = function (e) {\n \"#\" === e.charAt(0) && (e = e.substr(1));\n for (var t, n = String(e), o = n.length, a = -1, r = \"\", i = n.charCodeAt(0); ++a < o;) {\n if (0 === (t = n.charCodeAt(a))) throw new InvalidCharacterError(\"Invalid character: the input contains U+0000.\");\n 1 <= t && t <= 31 || 127 == t || 0 === a && 48 <= t && t <= 57 || 1 === a && 48 <= t && t <= 57 && 45 === i ? r += \"\\\\\" + t.toString(16) + \" \" : r += 128 <= t || 45 === t || 95 === t || 48 <= t && t <= 57 || 65 <= t && t <= 90 || 97 <= t && t <= 122 ? n.charAt(a) : \"\\\\\" + n.charAt(a);\n }\n return \"#\" + r;\n },\n F = function () {\n return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight);\n },\n L = function (e) {\n return e ? (t = e, parseInt(M.getComputedStyle(t).height, 10) + e.offsetTop) : 0;\n var t;\n },\n x = function (e, t, n) {\n 0 === e && document.body.focus(), n || (e.focus(), document.activeElement !== e && (e.setAttribute(\"tabindex\", \"-1\"), e.focus(), e.style.outline = \"none\"), M.scrollTo(0, t));\n },\n H = function (e, t, n, o) {\n if (t.emitEvents && \"function\" == typeof M.CustomEvent) {\n var a = new CustomEvent(e, {\n bubbles: !0,\n detail: {\n anchor: n,\n toggle: o\n }\n });\n document.dispatchEvent(a);\n }\n };\n return function (o, e) {\n var b,\n a,\n A,\n O,\n C = {};\n C.cancelScroll = function (e) {\n cancelAnimationFrame(O), O = null, e || H(\"scrollCancel\", b);\n }, C.animateScroll = function (a, r, e) {\n C.cancelScroll();\n var i = I(b || q, e || {}),\n c = \"[object Number]\" === Object.prototype.toString.call(a),\n t = c || !a.tagName ? null : a;\n if (c || t) {\n var s = M.pageYOffset;\n i.header && !A && (A = document.querySelector(i.header));\n var n,\n o,\n u,\n l,\n m,\n d,\n f,\n h,\n p = L(A),\n g = c ? a : function (e, t, n, o) {\n var a = 0;\n if (e.offsetParent) for (; a += e.offsetTop, e = e.offsetParent;);\n return a = Math.max(a - t - n, 0), o && (a = Math.min(a, F() - M.innerHeight)), a;\n }(t, p, parseInt(\"function\" == typeof i.offset ? i.offset(a, r) : i.offset, 10), i.clip),\n y = g - s,\n v = F(),\n w = 0,\n S = (n = y, u = (o = i).speedAsDuration ? o.speed : Math.abs(n / 1e3 * o.speed), o.durationMax && u > o.durationMax ? o.durationMax : o.durationMin && u < o.durationMin ? o.durationMin : parseInt(u, 10)),\n E = function (e) {\n var t, n, o;\n l || (l = e), w += e - l, d = s + y * (n = m = 1 < (m = 0 === S ? 0 : w / S) ? 1 : m, \"easeInQuad\" === (t = i).easing && (o = n * n), \"easeOutQuad\" === t.easing && (o = n * (2 - n)), \"easeInOutQuad\" === t.easing && (o = n < .5 ? 2 * n * n : (4 - 2 * n) * n - 1), \"easeInCubic\" === t.easing && (o = n * n * n), \"easeOutCubic\" === t.easing && (o = --n * n * n + 1), \"easeInOutCubic\" === t.easing && (o = n < .5 ? 4 * n * n * n : (n - 1) * (2 * n - 2) * (2 * n - 2) + 1), \"easeInQuart\" === t.easing && (o = n * n * n * n), \"easeOutQuart\" === t.easing && (o = 1 - --n * n * n * n), \"easeInOutQuart\" === t.easing && (o = n < .5 ? 8 * n * n * n * n : 1 - 8 * --n * n * n * n), \"easeInQuint\" === t.easing && (o = n * n * n * n * n), \"easeOutQuint\" === t.easing && (o = 1 + --n * n * n * n * n), \"easeInOutQuint\" === t.easing && (o = n < .5 ? 16 * n * n * n * n * n : 1 + 16 * --n * n * n * n * n), t.customEasing && (o = t.customEasing(n)), o || n), M.scrollTo(0, Math.floor(d)), function (e, t) {\n var n = M.pageYOffset;\n if (e == t || n == t || (s < t && M.innerHeight + n) >= v) return C.cancelScroll(!0), x(a, t, c), H(\"scrollStop\", i, a, r), !(O = l = null);\n }(d, g) || (O = M.requestAnimationFrame(E), l = e);\n };\n 0 === M.pageYOffset && M.scrollTo(0, 0), f = a, h = i, c || history.pushState && h.updateURL && history.pushState({\n smoothScroll: JSON.stringify(h),\n anchor: f.id\n }, document.title, f === document.documentElement ? \"#top\" : \"#\" + f.id), \"matchMedia\" in M && M.matchMedia(\"(prefers-reduced-motion)\").matches ? x(a, Math.floor(g), !1) : (H(\"scrollStart\", i, a, r), C.cancelScroll(!0), M.requestAnimationFrame(E));\n }\n };\n var t = function (e) {\n if (!e.defaultPrevented && !(0 !== e.button || e.metaKey || e.ctrlKey || e.shiftKey) && \"closest\" in e.target && (a = e.target.closest(o)) && \"a\" === a.tagName.toLowerCase() && !e.target.closest(b.ignore) && a.hostname === M.location.hostname && a.pathname === M.location.pathname && /#/.test(a.href)) {\n var t, n;\n try {\n t = r(decodeURIComponent(a.hash));\n } catch (e) {\n t = r(a.hash);\n }\n if (\"#\" === t) {\n if (!b.topOnEmptyHash) return;\n n = document.documentElement;\n } else n = document.querySelector(t);\n (n = n || \"#top\" !== t ? n : document.documentElement) && (e.preventDefault(), function (e) {\n if (history.replaceState && e.updateURL && !history.state) {\n var t = M.location.hash;\n t = t || \"\", history.replaceState({\n smoothScroll: JSON.stringify(e),\n anchor: t || M.pageYOffset\n }, document.title, t || M.location.href);\n }\n }(b), C.animateScroll(n, a));\n }\n },\n n = function (e) {\n if (null !== history.state && history.state.smoothScroll && history.state.smoothScroll === JSON.stringify(b)) {\n var t = history.state.anchor;\n \"string\" == typeof t && t && !(t = document.querySelector(r(history.state.anchor))) || C.animateScroll(t, null, {\n updateURL: !1\n });\n }\n };\n C.destroy = function () {\n b && (document.removeEventListener(\"click\", t, !1), M.removeEventListener(\"popstate\", n, !1), C.cancelScroll(), O = A = a = b = null);\n };\n return function () {\n if (!(\"querySelector\" in document && \"addEventListener\" in M && \"requestAnimationFrame\" in M && \"closest\" in M.Element.prototype)) throw \"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.\";\n C.destroy(), b = I(q, e || {}), A = b.header ? document.querySelector(b.header) : null, document.addEventListener(\"click\", t, !1), b.updateURL && b.popstate && M.addEventListener(\"popstate\", n, !1);\n }(), C;\n };\n});","module.exports = /******/function (modules) {\n // webpackBootstrap\n /******/ // The module cache\n /******/\n var installedModules = {};\n /******/\n /******/ // The require function\n /******/\n function __webpack_require__(moduleId) {\n /******/\n /******/ // Check if module is in cache\n /******/if (installedModules[moduleId]) {\n /******/return installedModules[moduleId].exports;\n /******/\n }\n /******/ // Create a new module (and put it into the cache)\n /******/\n var module = installedModules[moduleId] = {\n /******/i: moduleId,\n /******/l: false,\n /******/exports: {}\n /******/\n };\n /******/\n /******/ // Execute the module function\n /******/\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n /******/ // Flag the module as loaded\n /******/\n module.l = true;\n /******/\n /******/ // Return the exports of the module\n /******/\n return module.exports;\n /******/\n }\n /******/\n /******/\n /******/ // expose the modules object (__webpack_modules__)\n /******/\n __webpack_require__.m = modules;\n /******/\n /******/ // expose the module cache\n /******/\n __webpack_require__.c = installedModules;\n /******/\n /******/ // define getter function for harmony exports\n /******/\n __webpack_require__.d = function (exports, name, getter) {\n /******/if (!__webpack_require__.o(exports, name)) {\n /******/Object.defineProperty(exports, name, {\n /******/configurable: false,\n /******/enumerable: true,\n /******/get: getter\n /******/\n });\n /******/\n }\n /******/\n };\n /******/\n /******/ // define __esModule on exports\n /******/\n __webpack_require__.r = function (exports) {\n /******/Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n /******/ // getDefaultExport function for compatibility with non-harmony modules\n /******/\n __webpack_require__.n = function (module) {\n /******/var getter = module && module.__esModule ? /******/function getDefault() {\n return module['default'];\n } : /******/function getModuleExports() {\n return module;\n };\n /******/\n __webpack_require__.d(getter, 'a', getter);\n /******/\n return getter;\n /******/\n };\n /******/\n /******/ // Object.prototype.hasOwnProperty.call\n /******/\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n /******/ // __webpack_public_path__\n /******/\n __webpack_require__.p = \"\";\n /******/\n /******/\n /******/ // Load entry module and return exports\n /******/\n return __webpack_require__(__webpack_require__.s = \"./index.js\");\n /******/\n}\n/************************************************************************/\n/******/({\n /***/\"./index.js\":\n /*!******************!*\\\n !*** ./index.js ***!\n \\******************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n eval(\"//------------------------------------------------------------------------\\n//\\n//------------------------------------------------------------------------\\n\\n\\n/**\\n * Polyfill “object-fit” (IE 11-, aOS 4.4-) by applying
/ src as “background-image” on target wrapper\\n * @param {HTMLElement} el - Image wrapper element\\n * @param {Object} opts - Options\\n * @param {string|boolean} [opts.visuallyHiddenClass=false] - Class to add to the image to visually hide it (defaults to using inline styles)\\n * @param {string} [opts.backgroundPosition=\\\"50% 50%\\\"] - Optional background-position coordinates\\n */\\n\\n// Detect “object-fit” support\\n// Note: Edge 16+ only supports “object-fit” on img tags, but that’s all we’re using it for.\\n// https://caniuse.com/#feat=object-fit\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\\\"value\\\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\\n\\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\\\"Cannot call a class as a function\\\"); } }\\n\\nvar supportsObjectFit = \\\"objectFit\\\" in document.documentElement.style;\\n\\n// Visually hidden CSS\\n// https://github.com/h5bp/html5-boilerplate/blob/d6561f2c4792b10c181b62a17e78a064d0a27884/dist/css/main.css#L128-L147\\nvar visuallyHiddenCSS = \\\"border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; white-space: nowrap; width: 1px;\\\";\\n\\nvar ObjectFitImage = function () {\\n function ObjectFitImage(el, opts) {\\n _classCallCheck(this, ObjectFitImage);\\n\\n // Do nothing if `object-fit` is supported\\n if (supportsObjectFit) {\\n return false;\\n }\\n\\n // Use Object.assign() to merge “opts” object with default values in this.options\\n this.options = Object.assign({}, {\\n visuallyHiddenClass: false,\\n backgroundPosition: \\\"50% 50%\\\"\\n }, opts);\\n\\n var self = this;\\n this.el = el;\\n this.img = this.el.querySelector('.bg-image-source');\\n\\n if (!this.img) {\\n console.warn(\\\"ObjectFitImage: No source image found. Add “bg-image-source” class to target image.\\\");\\n return false;\\n }\\n\\n // If target is a element, get img tag\\n if (this.img.tagName.toLowerCase() !== \\\"img\\\") {\\n this.img = this.img.getElementsByTagName(\\\"img\\\")[0];\\n\\n if (!this.img) {\\n console.warn(\\\"ObjectFitImage: No image tag found in “bg-image-source” element.\\\");\\n return false;\\n }\\n }\\n\\n // Visually hide the img tag to keep alt text accessible (as opposed to “display: none”)\\n if (this.options.visuallyHiddenClass && this.options.visuallyHiddenClass.length) {\\n this.img.classList.add(this.options.visuallyHiddenClass);\\n } else {\\n this.img.setAttribute(\\\"style\\\", visuallyHiddenCSS);\\n }\\n\\n // Check if “currentSrc” is supported\\n this.supportsCurrentSrc = typeof this.img.currentSrc !== \\\"undefined\\\";\\n\\n // Bind to onload event, which will fire whenever the source changes\\n this.img.onload = function () {\\n self.update(\\\"img onload\\\");\\n };\\n\\n // Update if “onload” event fired before this script was parsed\\n this.update(\\\"init\\\");\\n }\\n\\n // Update parent wrapper\\n\\n\\n _createClass(ObjectFitImage, [{\\n key: \\\"update\\\",\\n value: function update(msg) {\\n // console.log(msg, {currentSrc: `${this.img.currentSrc}`, src: `${this.img.src}`});\\n var source = this.supportsCurrentSrc && this.img.currentSrc.length ? this.img.currentSrc : this.img.src;\\n\\n if (!source.length) {\\n this.el.style.backgroundImage = \\\"\\\";\\n } else {\\n this.el.setAttribute(\\\"style\\\", \\\"background-image: url('\\\" + source + \\\"'); background-size: cover; background-position: \\\" + this.options.backgroundPosition + \\\";\\\");\\n }\\n }\\n }]);\\n\\n return ObjectFitImage;\\n}();\\n\\nexports.default = ObjectFitImage;\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./index.js?\");\n\n /***/\n }\n\n /******/\n});","module.exports = /******/function (modules) {\n // webpackBootstrap\n /******/ // The module cache\n /******/\n var installedModules = {};\n /******/\n /******/ // The require function\n /******/\n function __webpack_require__(moduleId) {\n /******/\n /******/ // Check if module is in cache\n /******/if (installedModules[moduleId]) {\n /******/return installedModules[moduleId].exports;\n /******/\n }\n /******/ // Create a new module (and put it into the cache)\n /******/\n var module = installedModules[moduleId] = {\n /******/i: moduleId,\n /******/l: false,\n /******/exports: {}\n /******/\n };\n /******/\n /******/ // Execute the module function\n /******/\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n /******/ // Flag the module as loaded\n /******/\n module.l = true;\n /******/\n /******/ // Return the exports of the module\n /******/\n return module.exports;\n /******/\n }\n /******/\n /******/\n /******/ // expose the modules object (__webpack_modules__)\n /******/\n __webpack_require__.m = modules;\n /******/\n /******/ // expose the module cache\n /******/\n __webpack_require__.c = installedModules;\n /******/\n /******/ // define getter function for harmony exports\n /******/\n __webpack_require__.d = function (exports, name, getter) {\n /******/if (!__webpack_require__.o(exports, name)) {\n /******/Object.defineProperty(exports, name, {\n /******/configurable: false,\n /******/enumerable: true,\n /******/get: getter\n /******/\n });\n /******/\n }\n /******/\n };\n /******/\n /******/ // define __esModule on exports\n /******/\n __webpack_require__.r = function (exports) {\n /******/Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n /******/ // getDefaultExport function for compatibility with non-harmony modules\n /******/\n __webpack_require__.n = function (module) {\n /******/var getter = module && module.__esModule ? /******/function getDefault() {\n return module['default'];\n } : /******/function getModuleExports() {\n return module;\n };\n /******/\n __webpack_require__.d(getter, 'a', getter);\n /******/\n return getter;\n /******/\n };\n /******/\n /******/ // Object.prototype.hasOwnProperty.call\n /******/\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n /******/ // __webpack_public_path__\n /******/\n __webpack_require__.p = \"\";\n /******/\n /******/\n /******/ // Load entry module and return exports\n /******/\n return __webpack_require__(__webpack_require__.s = \"./index.js\");\n /******/\n}\n/************************************************************************/\n/******/({\n /***/\"./index.js\":\n /*!******************!*\\\n !*** ./index.js ***!\n \\******************/\n /*! no static exports found */\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n eval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\\\"value\\\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\\n\\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\\\"Cannot call a class as a function\\\"); } }\\n\\nvar obscureString = \\\"[at]\\\";\\n\\n/**\\n * Replaces obscured element with a mailto link
\\n * Uses an elements \\\"data-email\\\" attribute to convert them to mailto links, using\\n * the value of that attribute as the email address.\\n * Inner HTML is preserved and any occurrences of \\\"[at]\\\" are converted to \\\"@\\\".\\n */\\n\\nvar MailToLink = function () {\\n /**\\n * Create link from obscured element\\n * @param {object} el - dom node\\n */\\n function MailToLink(el) {\\n _classCallCheck(this, MailToLink);\\n\\n this.el = el;\\n var link = void 0,\\n dataAttr = void 0,\\n href = void 0;\\n\\n // Generate mailto href\\n try {\\n dataAttr = el.getAttribute(\\\"data-email\\\");\\n href = \\\"mailto:\\\" + this.replaceObscuredString(dataAttr);\\n } catch (e) {\\n throw Error(\\\"MailToLink: constructor requires a DOM node object\\\");\\n }\\n\\n // Replace [at] with @ in link text\\n var linkHtml = el.innerHTML;\\n if (linkHtml.indexOf(obscureString) > 0) {\\n linkHtml = this.replaceObscuredString(linkHtml);\\n el.innerHTML = linkHtml;\\n }\\n\\n // Add mailto href to link tags\\n if (el.nodeName === \\\"A\\\") {\\n el.setAttribute(\\\"href\\\", href);\\n } else {\\n // Create link tag, remove original element\\n var classNames = el.getAttribute(\\\"class\\\");\\n link = this.createLinkReplacement(href, linkHtml, classNames);\\n // Insert link and remove original element\\n el.insertAdjacentHTML(\\\"beforebegin\\\", link.outerHTML);\\n el.parentNode.removeChild(el);\\n\\n // replace instance el with new element\\n this.el = link;\\n }\\n }\\n\\n /**\\n * Create link to replace the original element\\n * @param {string} href - value to apply to link\\n * @param {string} body - body to insert to link\\n * @param {string} classNames - values to add to the link\\n * @returns {object} link - DOM element\\n */\\n\\n\\n _createClass(MailToLink, [{\\n key: \\\"createLinkReplacement\\\",\\n value: function createLinkReplacement(href, body) {\\n var classNames = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \\\"\\\";\\n\\n var link = document.createElement(\\\"a\\\");\\n link.setAttribute(\\\"href\\\", href);\\n if (classNames) {\\n link.setAttribute(\\\"class\\\", classNames);\\n }\\n link.innerHTML = body;\\n return link;\\n }\\n\\n /**\\n * Replace obscured string with valid email address\\n * @param {string} str - obscured email string\\n * @return {string} newStr - valid email string\\n */\\n\\n }, {\\n key: \\\"replaceObscuredString\\\",\\n value: function replaceObscuredString(str) {\\n var newStr = void 0;\\n try {\\n newStr = str.replace(obscureString, \\\"@\\\");\\n } catch (e) {\\n throw Error(\\\"MailToLink: `data-email` attribute for mailto replacement. Link not created\\\");\\n }\\n return newStr;\\n }\\n }]);\\n\\n return MailToLink;\\n}();\\n\\nexports.default = MailToLink;\\n\\n//# sourceURL=webpack://%5Bname%5DLink/./index.js?\");\n\n /***/\n }\n\n /******/\n});","/*! loadJS: load a JS file asynchronously. [c]2014 @scottjehl, Filament Group, Inc. (Based on http://goo.gl/REQGQ by Paul Irish). Licensed MIT */\n(function (w) {\n var loadJS = function (src, cb, ordered) {\n \"use strict\";\n\n var tmp;\n var ref = w.document.getElementsByTagName(\"script\")[0];\n var script = w.document.createElement(\"script\");\n if (typeof cb === 'boolean') {\n tmp = ordered;\n ordered = cb;\n cb = tmp;\n }\n script.src = src;\n script.async = !ordered;\n ref.parentNode.insertBefore(script, ref);\n if (cb && typeof cb === \"function\") {\n script.onload = cb;\n }\n return script;\n };\n // commonjs\n if (typeof module !== \"undefined\") {\n module.exports = loadJS;\n } else {\n w.loadJS = loadJS;\n }\n})(typeof global !== \"undefined\" ? global : this);","/*! picturefill - v3.0.2 - 2016-02-12\n * https://scottjehl.github.io/picturefill/\n * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT\n */\n/*! Gecko-Picture - v1.0\n * https://github.com/scottjehl/picturefill/tree/3.0/src/plugins/gecko-picture\n * Firefox's early picture implementation (prior to FF41) is static and does\n * not react to viewport changes. This tiny module fixes this.\n */\n(function (window) {\n /*jshint eqnull:true */\n var ua = navigator.userAgent;\n if (window.HTMLPictureElement && /ecko/.test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 < 45) {\n addEventListener(\"resize\", function () {\n var timer;\n var dummySrc = document.createElement(\"source\");\n var fixRespimg = function (img) {\n var source, sizes;\n var picture = img.parentNode;\n if (picture.nodeName.toUpperCase() === \"PICTURE\") {\n source = dummySrc.cloneNode();\n picture.insertBefore(source, picture.firstElementChild);\n setTimeout(function () {\n picture.removeChild(source);\n });\n } else if (!img._pfLastSize || img.offsetWidth > img._pfLastSize) {\n img._pfLastSize = img.offsetWidth;\n sizes = img.sizes;\n img.sizes += \",100vw\";\n setTimeout(function () {\n img.sizes = sizes;\n });\n }\n };\n var findPictureImgs = function () {\n var i;\n var imgs = document.querySelectorAll(\"picture > img, img[srcset][sizes]\");\n for (i = 0; i < imgs.length; i++) {\n fixRespimg(imgs[i]);\n }\n };\n var onResize = function () {\n clearTimeout(timer);\n timer = setTimeout(findPictureImgs, 99);\n };\n var mq = window.matchMedia && matchMedia(\"(orientation: landscape)\");\n var init = function () {\n onResize();\n if (mq && mq.addListener) {\n mq.addListener(onResize);\n }\n };\n dummySrc.srcset = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (/^[c|i]|d$/.test(document.readyState || \"\")) {\n init();\n } else {\n document.addEventListener(\"DOMContentLoaded\", init);\n }\n return onResize;\n }());\n }\n})(window);\n\n/*! Picturefill - v3.0.2\n * http://scottjehl.github.io/picturefill\n * Copyright (c) 2015 https://github.com/scottjehl/picturefill/blob/master/Authors.txt;\n * License: MIT\n */\n\n(function (window, document, undefined) {\n // Enable strict mode\n \"use strict\";\n\n // HTML shim|v it for old IE (IE9 will still need the HTML video tag workaround)\n document.createElement(\"picture\");\n var warn, eminpx, alwaysCheckWDescriptor, evalId;\n // local object for method references and testing exposure\n var pf = {};\n var isSupportTestReady = false;\n var noop = function () {};\n var image = document.createElement(\"img\");\n var getImgAttr = image.getAttribute;\n var setImgAttr = image.setAttribute;\n var removeImgAttr = image.removeAttribute;\n var docElem = document.documentElement;\n var types = {};\n var cfg = {\n //resource selection:\n algorithm: \"\"\n };\n var srcAttr = \"data-pfsrc\";\n var srcsetAttr = srcAttr + \"set\";\n // ua sniffing is done for undetectable img loading features,\n // to do some non crucial perf optimizations\n var ua = navigator.userAgent;\n var supportAbort = /rident/.test(ua) || /ecko/.test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 > 35;\n var curSrcProp = \"currentSrc\";\n var regWDesc = /\\s+\\+?\\d+(e\\d+)?w/;\n var regSize = /(\\([^)]+\\))?\\s*(.+)/;\n var setOptions = window.picturefillCFG;\n /**\n * Shortcut property for https://w3c.github.io/webappsec/specs/mixedcontent/#restricts-mixed-content ( for easy overriding in tests )\n */\n // baseStyle also used by getEmValue (i.e.: width: 1em is important)\n var baseStyle = \"position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)\";\n var fsCss = \"font-size:100%!important;\";\n var isVwDirty = true;\n var cssCache = {};\n var sizeLengthCache = {};\n var DPR = window.devicePixelRatio;\n var units = {\n px: 1,\n \"in\": 96\n };\n var anchor = document.createElement(\"a\");\n /**\n * alreadyRun flag used for setOptions. is it true setOptions will reevaluate\n * @type {boolean}\n */\n var alreadyRun = false;\n\n // Reusable, non-\"g\" Regexes\n\n // (Don't use \\s, to avoid matching non-breaking space.)\n var regexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n regexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n regexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n regexTrailingCommas = /[,]+$/,\n regexNonNegativeInteger = /^\\d+$/,\n // ( Positive or negative or unsigned integers or decimals, without or without exponents.\n // Must include at least one digit.\n // According to spec tests any decimal point must be followed by a digit.\n // No leading plus sign is allowed.)\n // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/;\n var on = function (obj, evt, fn, capture) {\n if (obj.addEventListener) {\n obj.addEventListener(evt, fn, capture || false);\n } else if (obj.attachEvent) {\n obj.attachEvent(\"on\" + evt, fn);\n }\n };\n\n /**\n * simple memoize function:\n */\n\n var memoize = function (fn) {\n var cache = {};\n return function (input) {\n if (!(input in cache)) {\n cache[input] = fn(input);\n }\n return cache[input];\n };\n };\n\n // UTILITY FUNCTIONS\n\n // Manual is faster than RegEx\n // http://jsperf.com/whitespace-character/5\n function isSpace(c) {\n return c === \"\\u0020\" ||\n // space\n c === \"\\u0009\" ||\n // horizontal tab\n c === \"\\u000A\" ||\n // new line\n c === \"\\u000C\" ||\n // form feed\n c === \"\\u000D\"; // carriage return\n }\n\n /**\n * gets a mediaquery and returns a boolean or gets a css length and returns a number\n * @param css mediaqueries or css length\n * @returns {boolean|number}\n *\n * based on: https://gist.github.com/jonathantneal/db4f77009b155f083738\n */\n var evalCSS = function () {\n var regLength = /^([\\d\\.]+)(em|vw|px)$/;\n var replace = function () {\n var args = arguments,\n index = 0,\n string = args[0];\n while (++index in args) {\n string = string.replace(args[index], args[++index]);\n }\n return string;\n };\n var buildStr = memoize(function (css) {\n return \"return \" + replace((css || \"\").toLowerCase(),\n // interpret `and`\n /\\band\\b/g, \"&&\",\n // interpret `,`\n /,/g, \"||\",\n // interpret `min-` as >=\n /min-([a-z-\\s]+):/g, \"e.$1>=\",\n // interpret `max-` as <=\n /max-([a-z-\\s]+):/g, \"e.$1<=\",\n //calc value\n /calc([^)]+)/g, \"($1)\",\n // interpret css values\n /(\\d+[\\.]*[\\d]*)([a-z]+)/g, \"($1 * e.$2)\",\n //make eval less evil\n /^(?!(e.[a-z]|[0-9\\.&=|><\\+\\-\\*\\(\\)\\/])).*/ig, \"\") + \";\";\n });\n return function (css, length) {\n var parsedLength;\n if (!(css in cssCache)) {\n cssCache[css] = false;\n if (length && (parsedLength = css.match(regLength))) {\n cssCache[css] = parsedLength[1] * units[parsedLength[2]];\n } else {\n /*jshint evil:true */\n try {\n cssCache[css] = new Function(\"e\", buildStr(css))(units);\n } catch (e) {}\n /*jshint evil:false */\n }\n }\n\n return cssCache[css];\n };\n }();\n var setResolution = function (candidate, sizesattr) {\n if (candidate.w) {\n // h = means height: || descriptor.type === 'h' do not handle yet...\n candidate.cWidth = pf.calcListLength(sizesattr || \"100vw\");\n candidate.res = candidate.w / candidate.cWidth;\n } else {\n candidate.res = candidate.d;\n }\n return candidate;\n };\n\n /**\n *\n * @param opt\n */\n var picturefill = function (opt) {\n if (!isSupportTestReady) {\n return;\n }\n var elements, i, plen;\n var options = opt || {};\n if (options.elements && options.elements.nodeType === 1) {\n if (options.elements.nodeName.toUpperCase() === \"IMG\") {\n options.elements = [options.elements];\n } else {\n options.context = options.elements;\n options.elements = null;\n }\n }\n elements = options.elements || pf.qsa(options.context || document, options.reevaluate || options.reselect ? pf.sel : pf.selShort);\n if (plen = elements.length) {\n pf.setupRun(options);\n alreadyRun = true;\n\n // Loop through all elements\n for (i = 0; i < plen; i++) {\n pf.fillImg(elements[i], options);\n }\n pf.teardownRun(options);\n }\n };\n\n /**\n * outputs a warning for the developer\n * @param {message}\n * @type {Function}\n */\n warn = window.console && console.warn ? function (message) {\n console.warn(message);\n } : noop;\n if (!(curSrcProp in image)) {\n curSrcProp = \"src\";\n }\n\n // Add support for standard mime types.\n types[\"image/jpeg\"] = true;\n types[\"image/gif\"] = true;\n types[\"image/png\"] = true;\n function detectTypeSupport(type, typeUri) {\n // based on Modernizr's lossless img-webp test\n // note: asynchronous\n var image = new window.Image();\n image.onerror = function () {\n types[type] = false;\n picturefill();\n };\n image.onload = function () {\n types[type] = image.width === 1;\n picturefill();\n };\n image.src = typeUri;\n return \"pending\";\n }\n\n // test svg support\n types[\"image/svg+xml\"] = document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#Image\", \"1.1\");\n\n /**\n * updates the internal vW property with the current viewport width in px\n */\n function updateMetrics() {\n isVwDirty = false;\n DPR = window.devicePixelRatio;\n cssCache = {};\n sizeLengthCache = {};\n pf.DPR = DPR || 1;\n units.width = Math.max(window.innerWidth || 0, docElem.clientWidth);\n units.height = Math.max(window.innerHeight || 0, docElem.clientHeight);\n units.vw = units.width / 100;\n units.vh = units.height / 100;\n evalId = [units.height, units.width, DPR].join(\"-\");\n units.em = pf.getEmValue();\n units.rem = units.em;\n }\n function chooseLowRes(lowerValue, higherValue, dprValue, isCached) {\n var bonusFactor, tooMuch, bonus, meanDensity;\n\n //experimental\n if (cfg.algorithm === \"saveData\") {\n if (lowerValue > 2.7) {\n meanDensity = dprValue + 1;\n } else {\n tooMuch = higherValue - dprValue;\n bonusFactor = Math.pow(lowerValue - 0.6, 1.5);\n bonus = tooMuch * bonusFactor;\n if (isCached) {\n bonus += 0.1 * bonusFactor;\n }\n meanDensity = lowerValue + bonus;\n }\n } else {\n meanDensity = dprValue > 1 ? Math.sqrt(lowerValue * higherValue) : lowerValue;\n }\n return meanDensity > dprValue;\n }\n function applyBestCandidate(img) {\n var srcSetCandidates;\n var matchingSet = pf.getSet(img);\n var evaluated = false;\n if (matchingSet !== \"pending\") {\n evaluated = evalId;\n if (matchingSet) {\n srcSetCandidates = pf.setRes(matchingSet);\n pf.applySetCandidate(srcSetCandidates, img);\n }\n }\n img[pf.ns].evaled = evaluated;\n }\n function ascendingSort(a, b) {\n return a.res - b.res;\n }\n function setSrcToCur(img, src, set) {\n var candidate;\n if (!set && src) {\n set = img[pf.ns].sets;\n set = set && set[set.length - 1];\n }\n candidate = getCandidateForSrc(src, set);\n if (candidate) {\n src = pf.makeUrl(src);\n img[pf.ns].curSrc = src;\n img[pf.ns].curCan = candidate;\n if (!candidate.res) {\n setResolution(candidate, candidate.set.sizes);\n }\n }\n return candidate;\n }\n function getCandidateForSrc(src, set) {\n var i, candidate, candidates;\n if (src && set) {\n candidates = pf.parseSet(set);\n src = pf.makeUrl(src);\n for (i = 0; i < candidates.length; i++) {\n if (src === pf.makeUrl(candidates[i].url)) {\n candidate = candidates[i];\n break;\n }\n }\n }\n return candidate;\n }\n function getAllSourceElements(picture, candidates) {\n var i, len, source, srcset;\n\n // SPEC mismatch intended for size and perf:\n // actually only source elements preceding the img should be used\n // also note: don't use qsa here, because IE8 sometimes doesn't like source as the key part in a selector\n var sources = picture.getElementsByTagName(\"source\");\n for (i = 0, len = sources.length; i < len; i++) {\n source = sources[i];\n source[pf.ns] = true;\n srcset = source.getAttribute(\"srcset\");\n\n // if source does not have a srcset attribute, skip\n if (srcset) {\n candidates.push({\n srcset: srcset,\n media: source.getAttribute(\"media\"),\n type: source.getAttribute(\"type\"),\n sizes: source.getAttribute(\"sizes\")\n });\n }\n }\n }\n\n /**\n * Srcset Parser\n * By Alex Bell | MIT License\n *\n * @returns Array [{url: _, d: _, w: _, h:_, set:_(????)}, ...]\n *\n * Based super duper closely on the reference algorithm at:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n */\n\n // 1. Let input be the value passed to this algorithm.\n // (TO-DO : Explain what \"set\" argument is here. Maybe choose a more\n // descriptive & more searchable name. Since passing the \"set\" in really has\n // nothing to do with parsing proper, I would prefer this assignment eventually\n // go in an external fn.)\n function parseSrcset(input, set) {\n function collectCharacters(regEx) {\n var chars,\n match = regEx.exec(input.substring(pos));\n if (match) {\n chars = match[0];\n pos += chars.length;\n return chars;\n }\n }\n var inputLength = input.length,\n url,\n descriptors,\n currentDescriptor,\n state,\n c,\n // 2. Let position be a pointer into input, initially pointing at the start\n // of the string.\n pos = 0,\n // 3. Let candidates be an initially empty source set.\n candidates = [];\n\n /**\n * Adds descriptor properties to a candidate, pushes to the candidates array\n * @return undefined\n */\n // (Declared outside of the while loop so that it's only created once.\n // (This fn is defined before it is used, in order to pass JSHINT.\n // Unfortunately this breaks the sequencing of the spec comments. :/ )\n function parseDescriptors() {\n // 9. Descriptor parser: Let error be no.\n var pError = false,\n // 10. Let width be absent.\n // 11. Let density be absent.\n // 12. Let future-compat-h be absent. (We're implementing it now as h)\n w,\n d,\n h,\n i,\n candidate = {},\n desc,\n lastChar,\n value,\n intVal,\n floatVal;\n\n // 13. For each descriptor in descriptors, run the appropriate set of steps\n // from the following list:\n for (i = 0; i < descriptors.length; i++) {\n desc = descriptors[i];\n lastChar = desc[desc.length - 1];\n value = desc.substring(0, desc.length - 1);\n intVal = parseInt(value, 10);\n floatVal = parseFloat(value);\n\n // If the descriptor consists of a valid non-negative integer followed by\n // a U+0077 LATIN SMALL LETTER W character\n if (regexNonNegativeInteger.test(value) && lastChar === \"w\") {\n // If width and density are not both absent, then let error be yes.\n if (w || d) {\n pError = true;\n }\n\n // Apply the rules for parsing non-negative integers to the descriptor.\n // If the result is zero, let error be yes.\n // Otherwise, let width be the result.\n if (intVal === 0) {\n pError = true;\n } else {\n w = intVal;\n }\n\n // If the descriptor consists of a valid floating-point number followed by\n // a U+0078 LATIN SMALL LETTER X character\n } else if (regexFloatingPoint.test(value) && lastChar === \"x\") {\n // If width, density and future-compat-h are not all absent, then let error\n // be yes.\n if (w || d || h) {\n pError = true;\n }\n\n // Apply the rules for parsing floating-point number values to the descriptor.\n // If the result is less than zero, let error be yes. Otherwise, let density\n // be the result.\n if (floatVal < 0) {\n pError = true;\n } else {\n d = floatVal;\n }\n\n // If the descriptor consists of a valid non-negative integer followed by\n // a U+0068 LATIN SMALL LETTER H character\n } else if (regexNonNegativeInteger.test(value) && lastChar === \"h\") {\n // If height and density are not both absent, then let error be yes.\n if (h || d) {\n pError = true;\n }\n\n // Apply the rules for parsing non-negative integers to the descriptor.\n // If the result is zero, let error be yes. Otherwise, let future-compat-h\n // be the result.\n if (intVal === 0) {\n pError = true;\n } else {\n h = intVal;\n }\n\n // Anything else, Let error be yes.\n } else {\n pError = true;\n }\n } // (close step 13 for loop)\n\n // 15. If error is still no, then append a new image source to candidates whose\n // URL is url, associated with a width width if not absent and a pixel\n // density density if not absent. Otherwise, there is a parse error.\n if (!pError) {\n candidate.url = url;\n if (w) {\n candidate.w = w;\n }\n if (d) {\n candidate.d = d;\n }\n if (h) {\n candidate.h = h;\n }\n if (!h && !d && !w) {\n candidate.d = 1;\n }\n if (candidate.d === 1) {\n set.has1x = true;\n }\n candidate.set = set;\n candidates.push(candidate);\n }\n } // (close parseDescriptors fn)\n\n /**\n * Tokenizes descriptor properties prior to parsing\n * Returns undefined.\n * (Again, this fn is defined before it is used, in order to pass JSHINT.\n * Unfortunately this breaks the logical sequencing of the spec comments. :/ )\n */\n function tokenize() {\n // 8.1. Descriptor tokeniser: Skip whitespace\n collectCharacters(regexLeadingSpaces);\n\n // 8.2. Let current descriptor be the empty string.\n currentDescriptor = \"\";\n\n // 8.3. Let state be in descriptor.\n state = \"in descriptor\";\n while (true) {\n // 8.4. Let c be the character at position.\n c = input.charAt(pos);\n\n // Do the following depending on the value of state.\n // For the purpose of this step, \"EOF\" is a special character representing\n // that position is past the end of input.\n\n // In descriptor\n if (state === \"in descriptor\") {\n // Do the following, depending on the value of c:\n\n // Space character\n // If current descriptor is not empty, append current descriptor to\n // descriptors and let current descriptor be the empty string.\n // Set state to after descriptor.\n if (isSpace(c)) {\n if (currentDescriptor) {\n descriptors.push(currentDescriptor);\n currentDescriptor = \"\";\n state = \"after descriptor\";\n }\n\n // U+002C COMMA (,)\n // Advance position to the next character in input. If current descriptor\n // is not empty, append current descriptor to descriptors. Jump to the step\n // labeled descriptor parser.\n } else if (c === \",\") {\n pos += 1;\n if (currentDescriptor) {\n descriptors.push(currentDescriptor);\n }\n parseDescriptors();\n return;\n\n // U+0028 LEFT PARENTHESIS (()\n // Append c to current descriptor. Set state to in parens.\n } else if (c === \"\\u0028\") {\n currentDescriptor = currentDescriptor + c;\n state = \"in parens\";\n\n // EOF\n // If current descriptor is not empty, append current descriptor to\n // descriptors. Jump to the step labeled descriptor parser.\n } else if (c === \"\") {\n if (currentDescriptor) {\n descriptors.push(currentDescriptor);\n }\n parseDescriptors();\n return;\n\n // Anything else\n // Append c to current descriptor.\n } else {\n currentDescriptor = currentDescriptor + c;\n }\n // (end \"in descriptor\"\n\n // In parens\n } else if (state === \"in parens\") {\n // U+0029 RIGHT PARENTHESIS ())\n // Append c to current descriptor. Set state to in descriptor.\n if (c === \")\") {\n currentDescriptor = currentDescriptor + c;\n state = \"in descriptor\";\n\n // EOF\n // Append current descriptor to descriptors. Jump to the step labeled\n // descriptor parser.\n } else if (c === \"\") {\n descriptors.push(currentDescriptor);\n parseDescriptors();\n return;\n\n // Anything else\n // Append c to current descriptor.\n } else {\n currentDescriptor = currentDescriptor + c;\n }\n\n // After descriptor\n } else if (state === \"after descriptor\") {\n // Do the following, depending on the value of c:\n // Space character: Stay in this state.\n if (isSpace(c)) {\n\n // EOF: Jump to the step labeled descriptor parser.\n } else if (c === \"\") {\n parseDescriptors();\n return;\n\n // Anything else\n // Set state to in descriptor. Set position to the previous character in input.\n } else {\n state = \"in descriptor\";\n pos -= 1;\n }\n }\n\n // Advance position to the next character in input.\n pos += 1;\n\n // Repeat this step.\n } // (close while true loop)\n }\n\n // 4. Splitting loop: Collect a sequence of characters that are space\n // characters or U+002C COMMA characters. If any U+002C COMMA characters\n // were collected, that is a parse error.\n while (true) {\n collectCharacters(regexLeadingCommasOrSpaces);\n\n // 5. If position is past the end of input, return candidates and abort these steps.\n if (pos >= inputLength) {\n return candidates; // (we're done, this is the sole return path)\n }\n\n // 6. Collect a sequence of characters that are not space characters,\n // and let that be url.\n url = collectCharacters(regexLeadingNotSpaces);\n\n // 7. Let descriptors be a new empty list.\n descriptors = [];\n\n // 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n //\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n // more than one character, that is a parse error.\n if (url.slice(-1) === \",\") {\n url = url.replace(regexTrailingCommas, \"\");\n // (Jump ahead to step 9 to skip tokenization and just push the candidate).\n parseDescriptors();\n\n //\tOtherwise, follow these substeps:\n } else {\n tokenize();\n } // (close else of step 8)\n\n // 16. Return to the step labeled splitting loop.\n } // (Close of big while loop.)\n }\n\n /*\n * Sizes Parser\n *\n * By Alex Bell | MIT License\n *\n * Non-strict but accurate and lightweight JS Parser for the string value
\n *\n * Reference algorithm at:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-sizes-attribute\n *\n * Most comments are copied in directly from the spec\n * (except for comments in parens).\n *\n * Grammar is:\n * = # [ , ]? | \n * = \n * = \n * http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#attr-img-sizes\n *\n * E.g. \"(max-width: 30em) 100vw, (max-width: 50em) 70vw, 100vw\"\n * or \"(min-width: 30em), calc(30vw - 15px)\" or just \"30vw\"\n *\n * Returns the first valid with a media condition that evaluates to true,\n * or \"100vw\" if all valid media conditions evaluate to false.\n *\n */\n\n function parseSizes(strValue) {\n // (Percentage CSS lengths are not allowed in this case, to avoid confusion:\n // https://html.spec.whatwg.org/multipage/embedded-content.html#valid-source-size-list\n // CSS allows a single optional plus or minus sign:\n // http://www.w3.org/TR/CSS2/syndata.html#numbers\n // CSS is ASCII case-insensitive:\n // http://www.w3.org/TR/CSS2/syndata.html#characters )\n // Spec allows exponential notation for type:\n // http://dev.w3.org/csswg/css-values/#numbers\n var regexCssLengthWithUnits = /^(?:[+-]?[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i;\n\n // (This is a quick and lenient test. Because of optional unlimited-depth internal\n // grouping parens and strict spacing rules, this could get very complicated.)\n var regexCssCalc = /^calc\\((?:[0-9a-z \\.\\+\\-\\*\\/\\(\\)]+)\\)$/i;\n var i;\n var unparsedSizesList;\n var unparsedSizesListLength;\n var unparsedSize;\n var lastComponentValue;\n var size;\n\n // UTILITY FUNCTIONS\n\n // (Toy CSS parser. The goals here are:\n // 1) expansive test coverage without the weight of a full CSS parser.\n // 2) Avoiding regex wherever convenient.\n // Quick tests: http://jsfiddle.net/gtntL4gr/3/\n // Returns an array of arrays.)\n function parseComponentValues(str) {\n var chrctr;\n var component = \"\";\n var componentArray = [];\n var listArray = [];\n var parenDepth = 0;\n var pos = 0;\n var inComment = false;\n function pushComponent() {\n if (component) {\n componentArray.push(component);\n component = \"\";\n }\n }\n function pushComponentArray() {\n if (componentArray[0]) {\n listArray.push(componentArray);\n componentArray = [];\n }\n }\n\n // (Loop forwards from the beginning of the string.)\n while (true) {\n chrctr = str.charAt(pos);\n if (chrctr === \"\") {\n // ( End of string reached.)\n pushComponent();\n pushComponentArray();\n return listArray;\n } else if (inComment) {\n if (chrctr === \"*\" && str[pos + 1] === \"/\") {\n // (At end of a comment.)\n inComment = false;\n pos += 2;\n pushComponent();\n continue;\n } else {\n pos += 1; // (Skip all characters inside comments.)\n continue;\n }\n } else if (isSpace(chrctr)) {\n // (If previous character in loop was also a space, or if\n // at the beginning of the string, do not add space char to\n // component.)\n if (str.charAt(pos - 1) && isSpace(str.charAt(pos - 1)) || !component) {\n pos += 1;\n continue;\n } else if (parenDepth === 0) {\n pushComponent();\n pos += 1;\n continue;\n } else {\n // (Replace any space character with a plain space for legibility.)\n chrctr = \" \";\n }\n } else if (chrctr === \"(\") {\n parenDepth += 1;\n } else if (chrctr === \")\") {\n parenDepth -= 1;\n } else if (chrctr === \",\") {\n pushComponent();\n pushComponentArray();\n pos += 1;\n continue;\n } else if (chrctr === \"/\" && str.charAt(pos + 1) === \"*\") {\n inComment = true;\n pos += 2;\n continue;\n }\n component = component + chrctr;\n pos += 1;\n }\n }\n function isValidNonNegativeSourceSizeValue(s) {\n if (regexCssLengthWithUnits.test(s) && parseFloat(s) >= 0) {\n return true;\n }\n if (regexCssCalc.test(s)) {\n return true;\n }\n // ( http://www.w3.org/TR/CSS2/syndata.html#numbers says:\n // \"-0 is equivalent to 0 and is not a negative number.\" which means that\n // unitless zero and unitless negative zero must be accepted as special cases.)\n if (s === \"0\" || s === \"-0\" || s === \"+0\") {\n return true;\n }\n return false;\n }\n\n // When asked to parse a sizes attribute from an element, parse a\n // comma-separated list of component values from the value of the element's\n // sizes attribute (or the empty string, if the attribute is absent), and let\n // unparsed sizes list be the result.\n // http://dev.w3.org/csswg/css-syntax/#parse-comma-separated-list-of-component-values\n\n unparsedSizesList = parseComponentValues(strValue);\n unparsedSizesListLength = unparsedSizesList.length;\n\n // For each unparsed size in unparsed sizes list:\n for (i = 0; i < unparsedSizesListLength; i++) {\n unparsedSize = unparsedSizesList[i];\n\n // 1. Remove all consecutive s from the end of unparsed size.\n // ( parseComponentValues() already omits spaces outside of parens. )\n\n // If unparsed size is now empty, that is a parse error; continue to the next\n // iteration of this algorithm.\n // ( parseComponentValues() won't push an empty array. )\n\n // 2. If the last component value in unparsed size is a valid non-negative\n // , let size be its value and remove the component value\n // from unparsed size. Any CSS function other than the calc() function is\n // invalid. Otherwise, there is a parse error; continue to the next iteration\n // of this algorithm.\n // http://dev.w3.org/csswg/css-syntax/#parse-component-value\n lastComponentValue = unparsedSize[unparsedSize.length - 1];\n if (isValidNonNegativeSourceSizeValue(lastComponentValue)) {\n size = lastComponentValue;\n unparsedSize.pop();\n } else {\n continue;\n }\n\n // 3. Remove all consecutive s from the end of unparsed\n // size. If unparsed size is now empty, return size and exit this algorithm.\n // If this was not the last item in unparsed sizes list, that is a parse error.\n if (unparsedSize.length === 0) {\n return size;\n }\n\n // 4. Parse the remaining component values in unparsed size as a\n // . If it does not parse correctly, or it does parse\n // correctly but the evaluates to false, continue to the\n // next iteration of this algorithm.\n // (Parsing all possible compound media conditions in JS is heavy, complicated,\n // and the payoff is unclear. Is there ever an situation where the\n // media condition parses incorrectly but still somehow evaluates to true?\n // Can we just rely on the browser/polyfill to do it?)\n unparsedSize = unparsedSize.join(\" \");\n if (!pf.matchesMedia(unparsedSize)) {\n continue;\n }\n\n // 5. Return size and exit this algorithm.\n return size;\n }\n\n // If the above algorithm exhausts unparsed sizes list without returning a\n // size value, return 100vw.\n return \"100vw\";\n }\n\n // namespace\n pf.ns = (\"pf\" + new Date().getTime()).substr(0, 9);\n\n // srcset support test\n pf.supSrcset = \"srcset\" in image;\n pf.supSizes = \"sizes\" in image;\n pf.supPicture = !!window.HTMLPictureElement;\n\n // UC browser does claim to support srcset and picture, but not sizes,\n // this extended test reveals the browser does support nothing\n if (pf.supSrcset && pf.supPicture && !pf.supSizes) {\n (function (image2) {\n image.srcset = \"data:,a\";\n image2.src = \"data:,a\";\n pf.supSrcset = image.complete === image2.complete;\n pf.supPicture = pf.supSrcset && pf.supPicture;\n })(document.createElement(\"img\"));\n }\n\n // Safari9 has basic support for sizes, but does't expose the `sizes` idl attribute\n if (pf.supSrcset && !pf.supSizes) {\n (function () {\n var width2 = \"data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==\";\n var width1 = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n var img = document.createElement(\"img\");\n var test = function () {\n var width = img.width;\n if (width === 2) {\n pf.supSizes = true;\n }\n alwaysCheckWDescriptor = pf.supSrcset && !pf.supSizes;\n isSupportTestReady = true;\n // force async\n setTimeout(picturefill);\n };\n img.onload = test;\n img.onerror = test;\n img.setAttribute(\"sizes\", \"9px\");\n img.srcset = width1 + \" 1w,\" + width2 + \" 9w\";\n img.src = width1;\n })();\n } else {\n isSupportTestReady = true;\n }\n\n // using pf.qsa instead of dom traversing does scale much better,\n // especially on sites mixing responsive and non-responsive images\n pf.selShort = \"picture>img,img[srcset]\";\n pf.sel = pf.selShort;\n pf.cfg = cfg;\n\n /**\n * Shortcut property for `devicePixelRatio` ( for easy overriding in tests )\n */\n pf.DPR = DPR || 1;\n pf.u = units;\n\n // container of supported mime types that one might need to qualify before using\n pf.types = types;\n pf.setSize = noop;\n\n /**\n * Gets a string and returns the absolute URL\n * @param src\n * @returns {String} absolute URL\n */\n\n pf.makeUrl = memoize(function (src) {\n anchor.href = src;\n return anchor.href;\n });\n\n /**\n * Gets a DOM element or document and a selctor and returns the found matches\n * Can be extended with jQuery/Sizzle for IE7 support\n * @param context\n * @param sel\n * @returns {NodeList|Array}\n */\n pf.qsa = function (context, sel) {\n return \"querySelector\" in context ? context.querySelectorAll(sel) : [];\n };\n\n /**\n * Shortcut method for matchMedia ( for easy overriding in tests )\n * wether native or pf.mMQ is used will be decided lazy on first call\n * @returns {boolean}\n */\n pf.matchesMedia = function () {\n if (window.matchMedia && (matchMedia(\"(min-width: 0.1em)\") || {}).matches) {\n pf.matchesMedia = function (media) {\n return !media || matchMedia(media).matches;\n };\n } else {\n pf.matchesMedia = pf.mMQ;\n }\n return pf.matchesMedia.apply(this, arguments);\n };\n\n /**\n * A simplified matchMedia implementation for IE8 and IE9\n * handles only min-width/max-width with px or em values\n * @param media\n * @returns {boolean}\n */\n pf.mMQ = function (media) {\n return media ? evalCSS(media) : true;\n };\n\n /**\n * Returns the calculated length in css pixel from the given sourceSizeValue\n * http://dev.w3.org/csswg/css-values-3/#length-value\n * intended Spec mismatches:\n * * Does not check for invalid use of CSS functions\n * * Does handle a computed length of 0 the same as a negative and therefore invalid value\n * @param sourceSizeValue\n * @returns {Number}\n */\n pf.calcLength = function (sourceSizeValue) {\n var value = evalCSS(sourceSizeValue, true) || false;\n if (value < 0) {\n value = false;\n }\n return value;\n };\n\n /**\n * Takes a type string and checks if its supported\n */\n\n pf.supportsType = function (type) {\n return type ? types[type] : true;\n };\n\n /**\n * Parses a sourceSize into mediaCondition (media) and sourceSizeValue (length)\n * @param sourceSizeStr\n * @returns {*}\n */\n pf.parseSize = memoize(function (sourceSizeStr) {\n var match = (sourceSizeStr || \"\").match(regSize);\n return {\n media: match && match[1],\n length: match && match[2]\n };\n });\n pf.parseSet = function (set) {\n if (!set.cands) {\n set.cands = parseSrcset(set.srcset, set);\n }\n return set.cands;\n };\n\n /**\n * returns 1em in css px for html/body default size\n * function taken from respondjs\n * @returns {*|number}\n */\n pf.getEmValue = function () {\n var body;\n if (!eminpx && (body = document.body)) {\n var div = document.createElement(\"div\"),\n originalHTMLCSS = docElem.style.cssText,\n originalBodyCSS = body.style.cssText;\n div.style.cssText = baseStyle;\n\n // 1em in a media query is the value of the default font size of the browser\n // reset docElem and body to ensure the correct value is returned\n docElem.style.cssText = fsCss;\n body.style.cssText = fsCss;\n body.appendChild(div);\n eminpx = div.offsetWidth;\n body.removeChild(div);\n\n //also update eminpx before returning\n eminpx = parseFloat(eminpx, 10);\n\n // restore the original values\n docElem.style.cssText = originalHTMLCSS;\n body.style.cssText = originalBodyCSS;\n }\n return eminpx || 16;\n };\n\n /**\n * Takes a string of sizes and returns the width in pixels as a number\n */\n pf.calcListLength = function (sourceSizeListStr) {\n // Split up source size list, ie ( max-width: 30em ) 100%, ( max-width: 50em ) 50%, 33%\n //\n // or (min-width:30em) calc(30% - 15px)\n if (!(sourceSizeListStr in sizeLengthCache) || cfg.uT) {\n var winningLength = pf.calcLength(parseSizes(sourceSizeListStr));\n sizeLengthCache[sourceSizeListStr] = !winningLength ? units.width : winningLength;\n }\n return sizeLengthCache[sourceSizeListStr];\n };\n\n /**\n * Takes a candidate object with a srcset property in the form of url/\n * ex. \"images/pic-medium.png 1x, images/pic-medium-2x.png 2x\" or\n * \"images/pic-medium.png 400w, images/pic-medium-2x.png 800w\" or\n * \"images/pic-small.png\"\n * Get an array of image candidates in the form of\n * {url: \"/foo/bar.png\", resolution: 1}\n * where resolution is http://dev.w3.org/csswg/css-values-3/#resolution-value\n * If sizes is specified, res is calculated\n */\n pf.setRes = function (set) {\n var candidates;\n if (set) {\n candidates = pf.parseSet(set);\n for (var i = 0, len = candidates.length; i < len; i++) {\n setResolution(candidates[i], set.sizes);\n }\n }\n return candidates;\n };\n pf.setRes.res = setResolution;\n pf.applySetCandidate = function (candidates, img) {\n if (!candidates.length) {\n return;\n }\n var candidate, i, j, length, bestCandidate, curSrc, curCan, candidateSrc, abortCurSrc;\n var imageData = img[pf.ns];\n var dpr = pf.DPR;\n curSrc = imageData.curSrc || img[curSrcProp];\n curCan = imageData.curCan || setSrcToCur(img, curSrc, candidates[0].set);\n\n // if we have a current source, we might either become lazy or give this source some advantage\n if (curCan && curCan.set === candidates[0].set) {\n // if browser can abort image request and the image has a higher pixel density than needed\n // and this image isn't downloaded yet, we skip next part and try to save bandwidth\n abortCurSrc = supportAbort && !img.complete && curCan.res - 0.1 > dpr;\n if (!abortCurSrc) {\n curCan.cached = true;\n\n // if current candidate is \"best\", \"better\" or \"okay\",\n // set it to bestCandidate\n if (curCan.res >= dpr) {\n bestCandidate = curCan;\n }\n }\n }\n if (!bestCandidate) {\n candidates.sort(ascendingSort);\n length = candidates.length;\n bestCandidate = candidates[length - 1];\n for (i = 0; i < length; i++) {\n candidate = candidates[i];\n if (candidate.res >= dpr) {\n j = i - 1;\n\n // we have found the perfect candidate,\n // but let's improve this a little bit with some assumptions ;-)\n if (candidates[j] && (abortCurSrc || curSrc !== pf.makeUrl(candidate.url)) && chooseLowRes(candidates[j].res, candidate.res, dpr, candidates[j].cached)) {\n bestCandidate = candidates[j];\n } else {\n bestCandidate = candidate;\n }\n break;\n }\n }\n }\n if (bestCandidate) {\n candidateSrc = pf.makeUrl(bestCandidate.url);\n imageData.curSrc = candidateSrc;\n imageData.curCan = bestCandidate;\n if (candidateSrc !== curSrc) {\n pf.setSrc(img, bestCandidate);\n }\n pf.setSize(img);\n }\n };\n pf.setSrc = function (img, bestCandidate) {\n var origWidth;\n img.src = bestCandidate.url;\n\n // although this is a specific Safari issue, we don't want to take too much different code paths\n if (bestCandidate.set.type === \"image/svg+xml\") {\n origWidth = img.style.width;\n img.style.width = img.offsetWidth + 1 + \"px\";\n\n // next line only should trigger a repaint\n // if... is only done to trick dead code removal\n if (img.offsetWidth + 1) {\n img.style.width = origWidth;\n }\n }\n };\n pf.getSet = function (img) {\n var i, set, supportsType;\n var match = false;\n var sets = img[pf.ns].sets;\n for (i = 0; i < sets.length && !match; i++) {\n set = sets[i];\n if (!set.srcset || !pf.matchesMedia(set.media) || !(supportsType = pf.supportsType(set.type))) {\n continue;\n }\n if (supportsType === \"pending\") {\n set = supportsType;\n }\n match = set;\n break;\n }\n return match;\n };\n pf.parseSets = function (element, parent, options) {\n var srcsetAttribute, imageSet, isWDescripor, srcsetParsed;\n var hasPicture = parent && parent.nodeName.toUpperCase() === \"PICTURE\";\n var imageData = element[pf.ns];\n if (imageData.src === undefined || options.src) {\n imageData.src = getImgAttr.call(element, \"src\");\n if (imageData.src) {\n setImgAttr.call(element, srcAttr, imageData.src);\n } else {\n removeImgAttr.call(element, srcAttr);\n }\n }\n if (imageData.srcset === undefined || options.srcset || !pf.supSrcset || element.srcset) {\n srcsetAttribute = getImgAttr.call(element, \"srcset\");\n imageData.srcset = srcsetAttribute;\n srcsetParsed = true;\n }\n imageData.sets = [];\n if (hasPicture) {\n imageData.pic = true;\n getAllSourceElements(parent, imageData.sets);\n }\n if (imageData.srcset) {\n imageSet = {\n srcset: imageData.srcset,\n sizes: getImgAttr.call(element, \"sizes\")\n };\n imageData.sets.push(imageSet);\n isWDescripor = (alwaysCheckWDescriptor || imageData.src) && regWDesc.test(imageData.srcset || \"\");\n\n // add normal src as candidate, if source has no w descriptor\n if (!isWDescripor && imageData.src && !getCandidateForSrc(imageData.src, imageSet) && !imageSet.has1x) {\n imageSet.srcset += \", \" + imageData.src;\n imageSet.cands.push({\n url: imageData.src,\n d: 1,\n set: imageSet\n });\n }\n } else if (imageData.src) {\n imageData.sets.push({\n srcset: imageData.src,\n sizes: null\n });\n }\n imageData.curCan = null;\n imageData.curSrc = undefined;\n\n // if img has picture or the srcset was removed or has a srcset and does not support srcset at all\n // or has a w descriptor (and does not support sizes) set support to false to evaluate\n imageData.supported = !(hasPicture || imageSet && !pf.supSrcset || isWDescripor && !pf.supSizes);\n if (srcsetParsed && pf.supSrcset && !imageData.supported) {\n if (srcsetAttribute) {\n setImgAttr.call(element, srcsetAttr, srcsetAttribute);\n element.srcset = \"\";\n } else {\n removeImgAttr.call(element, srcsetAttr);\n }\n }\n if (imageData.supported && !imageData.srcset && (!imageData.src && element.src || element.src !== pf.makeUrl(imageData.src))) {\n if (imageData.src === null) {\n element.removeAttribute(\"src\");\n } else {\n element.src = imageData.src;\n }\n }\n imageData.parsed = true;\n };\n pf.fillImg = function (element, options) {\n var imageData;\n var extreme = options.reselect || options.reevaluate;\n\n // expando for caching data on the img\n if (!element[pf.ns]) {\n element[pf.ns] = {};\n }\n imageData = element[pf.ns];\n\n // if the element has already been evaluated, skip it\n // unless `options.reevaluate` is set to true ( this, for example,\n // is set to true when running `picturefill` on `resize` ).\n if (!extreme && imageData.evaled === evalId) {\n return;\n }\n if (!imageData.parsed || options.reevaluate) {\n pf.parseSets(element, element.parentNode, options);\n }\n if (!imageData.supported) {\n applyBestCandidate(element);\n } else {\n imageData.evaled = evalId;\n }\n };\n pf.setupRun = function () {\n if (!alreadyRun || isVwDirty || DPR !== window.devicePixelRatio) {\n updateMetrics();\n }\n };\n\n // If picture is supported, well, that's awesome.\n if (pf.supPicture) {\n picturefill = noop;\n pf.fillImg = noop;\n } else {\n // Set up picture polyfill by polling the document\n (function () {\n var isDomReady;\n var regReady = window.attachEvent ? /d$|^c/ : /d$|^c|^i/;\n var run = function () {\n var readyState = document.readyState || \"\";\n timerId = setTimeout(run, readyState === \"loading\" ? 200 : 999);\n if (document.body) {\n pf.fillImgs();\n isDomReady = isDomReady || regReady.test(readyState);\n if (isDomReady) {\n clearTimeout(timerId);\n }\n }\n };\n var timerId = setTimeout(run, document.body ? 9 : 99);\n\n // Also attach picturefill on resize and readystatechange\n // http://modernjavascript.blogspot.com/2013/08/building-better-debounce.html\n var debounce = function (func, wait) {\n var timeout, timestamp;\n var later = function () {\n var last = new Date() - timestamp;\n if (last < wait) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n func();\n }\n };\n return function () {\n timestamp = new Date();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n }\n };\n };\n var lastClientWidth = docElem.clientHeight;\n var onResize = function () {\n isVwDirty = Math.max(window.innerWidth || 0, docElem.clientWidth) !== units.width || docElem.clientHeight !== lastClientWidth;\n lastClientWidth = docElem.clientHeight;\n if (isVwDirty) {\n pf.fillImgs();\n }\n };\n on(window, \"resize\", debounce(onResize, 99));\n on(document, \"readystatechange\", run);\n })();\n }\n pf.picturefill = picturefill;\n //use this internally for easy monkey patching/performance testing\n pf.fillImgs = picturefill;\n pf.teardownRun = noop;\n\n /* expose methods for testing */\n picturefill._ = pf;\n window.picturefillCFG = {\n pf: pf,\n push: function (args) {\n var name = args.shift();\n if (typeof pf[name] === \"function\") {\n pf[name].apply(pf, args);\n } else {\n cfg[name] = args[0];\n if (alreadyRun) {\n pf.fillImgs({\n reselect: true\n });\n }\n }\n }\n };\n while (setOptions && setOptions.length) {\n window.picturefillCFG.push(setOptions.shift());\n }\n\n /* expose picturefill */\n window.picturefill = picturefill;\n\n /* expose picturefill */\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n // CommonJS, just export\n module.exports = picturefill;\n } else if (typeof define === \"function\" && define.amd) {\n // AMD support\n define(\"picturefill\", function () {\n return picturefill;\n });\n }\n\n // IE8 evals this sync, so it must be the last thing we do\n if (!pf.supPicture) {\n types[\"image/webp\"] = detectTypeSupport(\"image/webp\", \"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==\");\n }\n})(window, document);","/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.12\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n if (typeof exports === 'object' && typeof module === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define(\"whatInput\", [], factory);else if (typeof exports === 'object') exports[\"whatInput\"] = factory();else root[\"whatInput\"] = factory();\n})(this, function () {\n return (/******/function (modules) {\n // webpackBootstrap\n /******/ // The module cache\n /******/\n var installedModules = {};\n\n /******/ // The require function\n /******/\n function __webpack_require__(moduleId) {\n /******/ // Check if module is in cache\n /******/if (installedModules[moduleId]) /******/return installedModules[moduleId].exports;\n\n /******/ // Create a new module (and put it into the cache)\n /******/\n var module = installedModules[moduleId] = {\n /******/exports: {},\n /******/id: moduleId,\n /******/loaded: false\n /******/\n };\n\n /******/ // Execute the module function\n /******/\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n /******/ // Flag the module as loaded\n /******/\n module.loaded = true;\n\n /******/ // Return the exports of the module\n /******/\n return module.exports;\n /******/\n }\n\n /******/ // expose the modules object (__webpack_modules__)\n /******/\n __webpack_require__.m = modules;\n\n /******/ // expose the module cache\n /******/\n __webpack_require__.c = installedModules;\n\n /******/ // __webpack_public_path__\n /******/\n __webpack_require__.p = \"\";\n\n /******/ // Load entry module and return exports\n /******/\n return __webpack_require__(0);\n /******/\n }\n /************************************************************************/\n /******/([/* 0 */\n /***/function (module, exports) {\n 'use strict';\n\n module.exports = function () {\n /*\n * bail out if there is no document or window\n * (i.e. in a node/non-DOM environment)\n *\n * Return a stubbed API instead\n */\n if (typeof document === 'undefined' || typeof window === 'undefined') {\n return {\n // always return \"initial\" because no interaction will ever be detected\n ask: function ask() {\n return 'initial';\n },\n // always return null\n element: function element() {\n return null;\n },\n // no-op\n ignoreKeys: function ignoreKeys() {},\n // no-op\n specificKeys: function specificKeys() {},\n // no-op\n registerOnChange: function registerOnChange() {},\n // no-op\n unRegisterOnChange: function unRegisterOnChange() {}\n };\n }\n\n /*\n * variables\n */\n\n // cache document.documentElement\n var docElem = document.documentElement;\n\n // currently focused dom element\n var currentElement = null;\n\n // last used input type\n var currentInput = 'initial';\n\n // last used input intent\n var currentIntent = currentInput;\n\n // UNIX timestamp of current event\n var currentTimestamp = Date.now();\n\n // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`\n var shouldPersist = false;\n\n // form input types\n var formInputs = ['button', 'input', 'select', 'textarea'];\n\n // empty array for holding callback functions\n var functionList = [];\n\n // list of modifier keys commonly used with the mouse and\n // can be safely ignored to prevent false keyboard detection\n var ignoreMap = [16,\n // shift\n 17,\n // control\n 18,\n // alt\n 91,\n // Windows key / left Apple cmd\n 93 // Windows menu / right Apple cmd\n ];\n\n var specificMap = [];\n\n // mapping of events to input types\n var inputMap = {\n keydown: 'keyboard',\n keyup: 'keyboard',\n mousedown: 'mouse',\n mousemove: 'mouse',\n MSPointerDown: 'pointer',\n MSPointerMove: 'pointer',\n pointerdown: 'pointer',\n pointermove: 'pointer',\n touchstart: 'touch',\n touchend: 'touch'\n\n // boolean: true if the page is being scrolled\n };\n var isScrolling = false;\n\n // store current mouse position\n var mousePos = {\n x: null,\n y: null\n\n // map of IE 10 pointer events\n };\n var pointerMap = {\n 2: 'touch',\n 3: 'touch',\n // treat pen like touch\n 4: 'mouse'\n\n // check support for passive event listeners\n };\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n // fail silently\n\n /*\n * set up\n */\n\n var setUp = function setUp() {\n // add correct mouse wheel event mapping to `inputMap`\n inputMap[detectWheel()] = 'mouse';\n addListeners();\n };\n\n /*\n * events\n */\n\n var addListeners = function addListeners() {\n // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n // can only demonstrate potential, but not actual, interaction\n // and are treated separately\n var options = supportsPassive ? {\n passive: true,\n capture: true\n } : true;\n document.addEventListener('DOMContentLoaded', setPersist, true);\n\n // pointer events (mouse, pen, touch)\n if (window.PointerEvent) {\n window.addEventListener('pointerdown', setInput, true);\n window.addEventListener('pointermove', setIntent, true);\n } else if (window.MSPointerEvent) {\n window.addEventListener('MSPointerDown', setInput, true);\n window.addEventListener('MSPointerMove', setIntent, true);\n } else {\n // mouse events\n window.addEventListener('mousedown', setInput, true);\n window.addEventListener('mousemove', setIntent, true);\n\n // touch events\n if ('ontouchstart' in window) {\n window.addEventListener('touchstart', setInput, options);\n window.addEventListener('touchend', setInput, true);\n }\n }\n\n // mouse wheel\n window.addEventListener(detectWheel(), setIntent, options);\n\n // keyboard events\n window.addEventListener('keydown', setInput, true);\n window.addEventListener('keyup', setInput, true);\n\n // focus events\n window.addEventListener('focusin', setElement, true);\n window.addEventListener('focusout', clearElement, true);\n };\n\n // checks if input persistence should happen and\n // get saved state from session storage if true (defaults to `false`)\n var setPersist = function setPersist() {\n shouldPersist = !(docElem.getAttribute('data-whatpersist') === 'false' || document.body.getAttribute('data-whatpersist') === 'false');\n if (shouldPersist) {\n // check for session variables and use if available\n try {\n if (window.sessionStorage.getItem('what-input')) {\n currentInput = window.sessionStorage.getItem('what-input');\n }\n if (window.sessionStorage.getItem('what-intent')) {\n currentIntent = window.sessionStorage.getItem('what-intent');\n }\n } catch (e) {\n // fail silently\n }\n }\n\n // always run these so at least `initial` state is set\n doUpdate('input');\n doUpdate('intent');\n };\n\n // checks conditions before updating new input\n var setInput = function setInput(event) {\n var eventKey = event.which;\n var value = inputMap[event.type];\n if (value === 'pointer') {\n value = pointerType(event);\n }\n var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1;\n var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1;\n var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch';\n\n // prevent touch detection from being overridden by event execution order\n if (validateTouch(value)) {\n shouldUpdate = false;\n }\n if (shouldUpdate && currentInput !== value) {\n currentInput = value;\n persistInput('input', currentInput);\n doUpdate('input');\n }\n if (shouldUpdate && currentIntent !== value) {\n // preserve intent for keyboard interaction with form fields\n var activeElem = document.activeElement;\n var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form'));\n if (notFormInput) {\n currentIntent = value;\n persistInput('intent', currentIntent);\n doUpdate('intent');\n }\n }\n };\n\n // updates the doc and `inputTypes` array with new input\n var doUpdate = function doUpdate(which) {\n docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);\n fireFunctions(which);\n };\n\n // updates input intent for `mousemove` and `pointermove`\n var setIntent = function setIntent(event) {\n var value = inputMap[event.type];\n if (value === 'pointer') {\n value = pointerType(event);\n }\n\n // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove\n detectScrolling(event);\n\n // only execute if scrolling isn't happening\n if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) {\n currentIntent = value;\n persistInput('intent', currentIntent);\n doUpdate('intent');\n }\n };\n var setElement = function setElement(event) {\n if (!event.target.nodeName) {\n // If nodeName is undefined, clear the element\n // This can happen if click inside an