{"version":3,"sources":["webpack:///webpack/bootstrap ef3a246c416434402452?dfee","webpack:///./src/js/tools/DOM.js?c6d8","webpack:///./src/js/tools/Event.js","webpack:///./src/js/tools/utils.js?5134","webpack:///./src/js/tools/MQ.js","webpack:///./~/fizzy-ui-utils/utils.js","webpack:///./src/js/components/fontFaceObserver.js","webpack:///./~/flickity/js/flickity.js","webpack:///./~/lodash.throttle/index.js","webpack:///external \"jQuery\"?0cb8","webpack:///./src/js/vendor/choices/constants.js","webpack:///./src/js/vendor/choices/lib/utils.js","webpack:///./src/js/vendor/scroll-js.js?74a0","webpack:///(webpack)/buildin/global.js","webpack:///./~/js-cookie/src/js.cookie.js","webpack:///./~/ev-emitter/ev-emitter.js","webpack:///./src/js/vendor/choices/components/wrapped-element.js","webpack:///./~/flickity/js/index.js","webpack:///./~/get-size/get-size.js","webpack:///./~/lodash-es/_Symbol.js","webpack:///./~/lodash-es/isPlainObject.js","webpack:///./~/process/browser.js","webpack:///./~/redux/es/compose.js","webpack:///./~/redux/es/createStore.js","webpack:///./~/redux/es/index.js","webpack:///./~/redux/es/utils/warning.js","webpack:///./~/tap-listener/tap-listener.js","webpack:///./~/unipointer/unipointer.js","webpack:///./src/js/components/breadcrumb.js","webpack:///./src/js/components/carousel.js","webpack:///./src/js/components/carouselImg.js","webpack:///./src/js/components/datepicker.js","webpack:///./src/js/components/gallery.js","webpack:///./src/js/components/gmap.js","webpack:///./src/js/components/header.js","webpack:///./src/js/components/hint.js","webpack:///./src/js/components/label.js","webpack:///./src/js/components/logo.js","webpack:///./src/js/components/macy.js","webpack:///./src/js/components/menuMain.js","webpack:///./src/js/components/menuMainSub.js","webpack:///./src/js/components/menuTabs.js","webpack:///./src/js/components/profile.js","webpack:///./src/js/components/scroll.js","webpack:///./src/js/components/select.js","webpack:///./src/js/components/slideLink.js","webpack:///./src/js/components/tableResponsive.js","webpack:///./src/js/components/tabs.js","webpack:///./src/js/components/toTop.js","webpack:///./src/js/components/toggle.js","webpack:///./src/js/components/tooltip.js","webpack:///./src/js/components/years.js","webpack:///./src/js/components/youtube.js","webpack:///./src/js/app.js","webpack:///./src/js/vendor/choices/actions/choices.js","webpack:///./src/js/vendor/choices/actions/groups.js","webpack:///./src/js/vendor/choices/actions/items.js","webpack:///./src/js/vendor/choices/actions/misc.js","webpack:///./src/js/vendor/choices/choices.js","webpack:///./src/js/vendor/choices/components/container.js","webpack:///./src/js/vendor/choices/components/dropdown.js","webpack:///./src/js/vendor/choices/components/input.js","webpack:///./src/js/vendor/choices/components/list.js","webpack:///./src/js/vendor/choices/components/wrapped-input.js","webpack:///./src/js/vendor/choices/components/wrapped-select.js","webpack:///./src/js/vendor/choices/reducers/choices.js","webpack:///./src/js/vendor/choices/reducers/groups.js","webpack:///./src/js/vendor/choices/reducers/index.js","webpack:///./src/js/vendor/choices/reducers/items.js","webpack:///./src/js/vendor/choices/store/store.js","webpack:///./src/js/vendor/choices/templates.js","webpack:///./~/basiclightbox/dist/basicLightbox.min.js","webpack:///./~/classnames/index.js","webpack:///./~/deepmerge/dist/cjs.js","webpack:///./~/desandro-matches-selector/matches-selector.js","webpack:///./~/flatpickr/dist/flatpickr.js","webpack:///./~/flatpickr/dist/l10n/cs.js","webpack:///./~/flickity/js/add-remove-cell.js","webpack:///./~/flickity/js/animate.js","webpack:///./~/flickity/js/cell.js","webpack:///./~/flickity/js/drag.js","webpack:///./~/flickity/js/lazyload.js","webpack:///./~/flickity/js/page-dots.js","webpack:///./~/flickity/js/player.js","webpack:///./~/flickity/js/prev-next-button.js","webpack:///./~/flickity/js/slide.js","webpack:///./~/fontfaceobserver/fontfaceobserver.standalone.js","webpack:///./~/fuse.js/src/fuse.js","webpack:///./~/get-scrollbar-width/index.js","webpack:///./~/headroom.js/dist/headroom.js","webpack:///./~/lightgallery.js/lib/js/lg-utils.js","webpack:///./~/lightgallery.js/lib/js/lightgallery.js","webpack:///./~/lodash-es/_baseGetTag.js","webpack:///./~/lodash-es/_freeGlobal.js","webpack:///./~/lodash-es/_getPrototype.js","webpack:///./~/lodash-es/_getRawTag.js","webpack:///./~/lodash-es/_objectToString.js","webpack:///./~/lodash-es/_overArg.js","webpack:///./~/lodash-es/_root.js","webpack:///./~/lodash-es/isObjectLike.js","webpack:///./~/macy/dist/macy.js","webpack:///./~/nanoscroller/bin/javascripts/jquery.nanoscroller.js","webpack:///./~/redux/es/applyMiddleware.js","webpack:///./~/redux/es/bindActionCreators.js","webpack:///./~/redux/es/combineReducers.js","webpack:///./~/symbol-observable/index.js","webpack:///./~/symbol-observable/lib/index.js","webpack:///./~/symbol-observable/lib/ponyfill.js","webpack:///./~/tippy.js/dist/tippy.js","webpack:///./~/unidragger/unidragger.js","webpack:///(webpack)/buildin/module.js","webpack:///./~/whatwg-fetch/fetch.js","webpack:///./src/css/media-queries.json"],"names":["addClass","element","className","classList","add","removeClass","remove","replace","RegExp","split","join","hasClass","contains","test","append","parent","appendChild","parentNode","removeChild","wrap","wrapper","insertBefore","createElement","type","classes","document","forEach","outerWidth","includeMargin","style","window","getComputedStyle","margin","parseInt","marginLeft","marginRight","offsetWidth","getItemsWidth","items","map","item","reduce","sum","value","on","types","handler","selector","temp","event","target","matches","_proxy","addEventListener","off","removeEventListener","scroll","body","SCROLL_OPTIONS","easing","getOption","option","App","options","loadScript","url","callback","script","src","onload","iconSVG","id","ICONS_PATH","scrollTo","isMobile","scrolled","documentElement","scrollTop","header","querySelector","offset","getBoundingClientRect","top","pageYOffset","isScrollingUp","clientHeight","to","toElement","MQ","device","devices","getDevices","query","find","showWarning","notify","showDevices","breakpoint","media","matchMedia","Object","keys","acc","push","queries","console","table","log","getBreakpoint","message","FONTS","weight","onLoaded","Cookies","set","expires","onFail","getLoaders","loaders","font","variants","variant","load","fontLoader","Promise","all","init","get","then","catch","DEFAULT_CLASSNAMES","containerOuter","containerInner","input","inputCloned","list","listItems","listSingle","listDropdown","itemSelectable","itemDisabled","itemChoice","placeholder","group","groupHeading","button","activeState","focusState","openState","disabledState","highlightedState","hiddenState","flippedState","loadingState","noResults","noChoices","DEFAULT_CONFIG","silent","renderChoiceLimit","maxItemCount","addItems","removeItems","removeItemButton","editItems","duplicateItems","delimiter","paste","searchEnabled","searchChoices","searchFloor","searchResultLimit","searchFields","position","resetScrollPosition","regexFilter","shouldSort","shouldSortItems","placeholderValue","searchPlaceholderValue","prependValue","appendValue","renderSelectedChoices","loadingText","noResultsText","noChoicesText","itemSelectText","addItemText","maxItemText","uniqueItemText","fuseOptions","includeScore","callbackOnInit","callbackOnCreateTemplates","EVENTS","showDropdown","hideDropdown","change","choice","search","addItem","removeItem","highlightItem","ACTION_TYPES","ADD_CHOICE","FILTER_CHOICES","ACTIVATE_CHOICES","CLEAR_CHOICES","ADD_GROUP","ADD_ITEM","REMOVE_ITEM","HIGHLIGHT_ITEM","CLEAR_ALL","KEY_CODES","BACK_KEY","DELETE_KEY","ENTER_KEY","A_KEY","ESC_KEY","UP_KEY","DOWN_KEY","PAGE_UP_KEY","PAGE_DOWN_KEY","SCROLLING_SPEED","capitalise","str","txt","charAt","toUpperCase","substr","toLowerCase","generateChars","length","chars","i","randomChar","getRandomNumber","toString","generateId","prefix","name","getType","obj","prototype","call","slice","isType","clas","undefined","isNode","Node","o","nodeType","nodeName","isElement","HTMLElement","extend","extended","arguments","merge","prop","hasOwnProperty","whichTransitionEvent","t","el","transitions","transition","OTransition","MozTransition","WebkitTransition","whichAnimationEvent","animations","animation","OAnimation","MozAnimation","WebkitAnimation","getParentsUntil","elem","parents","parentType","hasAttribute","tagName","selectorType","nextSibling","getSiblings","siblings","sibling","firstChild","findAncestor","cls","parentElement","findAncestorByAttrName","attr","debounce","func","wait","immediate","timeout","context","args","later","apply","callNow","clearTimeout","setTimeout","getElemDistance","location","offsetParent","offsetTop","getElementOffset","elOffset","Math","max","offsetHeight","getAdjacentEl","startEl","direction","children","Array","from","querySelectorAll","startPos","indexOf","operatorDirection","getScrollPosition","scrollY","innerHeight","isInView","isScrolledIntoView","isVisible","stripHTML","html","innerHTML","textContent","innerText","addAnimation","animationEvent","removeAnimation","min","floor","random","strToEl","tmpEl","cleanedInput","trim","r","getWidthOfInput","width","testEl","padding","left","whiteSpace","inputStyle","fontSize","fontFamily","fontWeight","fontStyle","letterSpacing","textTransform","sortByAlpha","a","b","labelA","label","labelB","sortByScore","score","dispatchEvent","customArgs","CustomEvent","detail","bubbles","cancelable","regex","expression","source","animMap","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","getEasing","defaultEasing","easeFunc","warn","Scroll","Error","x","y","fromY","duration","moveElement","startTime","requestAnimationFrame","currentTime","Date","now","time","resolve","container","currentContainerScrollYPos","elementScrollYPos","errorMsg","error","reject","WrappedElement","instance","classNames","parentInstance","isDisabled","tabIndex","origStyle","getAttribute","setAttribute","removeAttribute","disabled","eventType","data","VISIBLE_CLASS","prev","next","isInit","pressInterval","checkNav","maxScroll","scrollWidth","clientWidth","currentScroll","scrollLeft","destroy","update","listWidth","itemsWidth","onPress","setInterval","nav","closest","onRelease","clearInterval","Event","throttle","preventDefault","elements","OPTIONS","groupCells","contain","pageDots","prevNextButtons","DISABLED_CLASS","checkArrows","carousel","arrows","slides","index","selectedIndex","previous","wrapAround","pager","numOfSlides","setPager","prevArrow","nextArrow","time_24hr","locale","animate","altInput","altFormat","minuteIncrement","disableMobile","optionsData","JSON","parse","datepicker","flatpickr","timeContainer","timeArrows","labels","hours","minutes","hourElement","minuteElement","hourLabel","minuteLabel","icon","lightGallery","prevHtml","nextHtml","close","caption","BASE_PATH","API_KEY","INFOBOX_URL","SCRIPT_URL","getCoordinates","address","fetch","getMarkers","getAddress","encodeURIComponent","initMap","markers","initAddress","response","ok","json","initMarkers","coordinates","zoom","results","geometry","google","maps","Map","center","disableDefaultUI","Marker","MARKER_SQUARE","size","Size","origin","Point","anchor","MARKER_ROUND","MARKER_TYPES","LatLng","bounds","LatLngBounds","infos","markerData","markerPos","markerType","marker","infoContent","places","place","img","tel","email","web","info","InfoBox","content","pixelOffset","infoBoxClearance","closeBoxURL","addListener","open","fitBounds","onLoad","tolerance","down","up","FIXED_CLASS","headroom","prepare","arrow","interactive","tippy","ACTIVE_CLASS","onChange","onFocusIn","onFocusOut","checkDisabled","sign","SCROLLBAR_WIDTH","getScrollbarWidth","DESKTOP_BP","TABLET_BP","columns","breakAt","trueOrder","macy","Macy","recalculate","runOnImageLoad","SCROLLABLE_SELECTOR","ITEM_SELECTOR","TOGGLE_SELECTOR","TOGGLE_USER_MENU_SELECTOR","SUBMENU_SELECTOR","MENU_SELECTOR","FOCUSED_CLASS","OPENED_CLASS","HTML_OPENED_CLASS","isDragging","onMouseover","submenu","menu","submenuBox","menuBox","diff","right","isBleeding","link","blur","onToggle","isOpened","onToggleUserMenu","closeUserMenu","openUserMenu","scrollable","maxHeight","menuHeight","onTouchend","isSubmenu","isToggleUserMenu","isMenu","preventBodyScroll","isMenuOpened","scrollableHeight","scrollHeight","preventMenuOverscroll","isTop","isBottom","LEFT_SCROLLABLE_CLASS","RIGHT_SCROLLABLE_CLASS","wrapWidth","height","onScroll","$win","$","$scroll","BOTTOM_CLASS","contentClass","sliderClass","paneClass","onUpdate","values","currentTarget","maximum","checkBottom","checkScroll","each","_","$pane","isPaneVisible","is","nanoScroller","select","itemList","passedElement","isPlaceholder","SELECTOR","onClick","holder","gradientLeft","gradientRight","checkTable","holderWidth","tableWidth","TAB_SELECTOR","TABLIST_SELECTOR","CONTROLS_ATTR","SELECTED_ATTR","HIDDEN_ATTR","hash","initialPanel","changeHashWithoutJump","history","pushState","setTabSelected","tab","state","setPanelVisible","panel","getTab","getSiblingTabs","getPanel","getSiblingPanels","tabs","changeTab","panels","setPanelInitial","focus","onTabClick","profileNav","onHashChange","tablists","tablist","checkVisible","isPageShort","isScrolled","TOGGLEABLE_ATTR","TOGGLEABLE_SELECTOR","TRANSITION_DURATION","isAnimating","href","isSimple","switchLabel","resetHeight","newLabel","labelElement","oldLabel","more","SELECTOR_TRIGGER","getOpened","filter","getLinks","links","openedTooltips","onAwayClick","MENU_ATTR","prevLabel","nextLabel","itemsNumber","lastItem","lastIndex","getIndex","step","setFocus","scrollToTop","setVisibility","setNavLabel","goTo","prevItem","nextItem","VIDEO_ATTR","VIDEO_SELECTOR","VIDEO_ID","CLOSE_SELECTOR","TEMPLATE","lightbox","onOpen","videoID","template","show","onClose","components","run","initComponent","component","addChoice","groupId","elementId","customProperties","keyCode","filterChoices","activateChoices","active","clearChoices","addGroup","choiceId","highlighted","clearAll","Choices","userConfig","defaultConfig","choices","sortFilter","config","userDefaults","includes","store","render","initialised","currentState","prevState","currentValue","isTextElement","isSelectOneElement","isSelectMultipleElement","isSelectElement","isValidElementType","isIe11","navigator","userAgent","match","isScrollingOnIe","highlightPosition","canSearch","presetChoices","presetItems","getValue","concat","baseId","idNames","bind","_onFocus","_onBlur","_onKeyUp","_onKeyDown","_onClick","_onTouchMove","_onTouchEnd","_onMouseDown","_onMouseOver","wasTap","cuttingTheMustard","canInit","_createTemplates","_createInput","subscribe","_addEventListeners","_removeEventListeners","reveal","revert","clearStore","templates","groups","fragment","groupFragment","createDocumentFragment","getGroupChoices","selected","sort","groupChoices","dropdownGroup","_getTemplate","renderChoices","withinGroup","choicesFragment","isSearching","appendChoice","shouldRender","dropdownItem","rendererableChoices","placeholderChoices","normalChoices","choiceLimit","sortedChoices","itemListFragment","itemsFiltered","getItemsReducedToValues","itemsFilteredString","setValue","selectedOptionsFragment","addOptionToFragment","setOptions","addItemToFragment","listItem","getState","stateChanged","activeGroups","getGroupsFilteredByActive","activeChoices","getChoicesFilteredByActive","choiceListFragment","choiceList","clear","activePlaceholders","activeChoice","renderGroups","activeItems","getItemsFilteredByActive","canAddItem","_canAddItem","childNodes","_highlightChoice","notice","renderItems","runEvent","getGroupById","dispatch","eventResponse","groupValue","triggerEvent","getItems","unhighlightItem","_removeItem","excludedId","_triggerChange","focusInput","dropdown","isActive","getVerticalPos","activate","blurInput","hide","deactivate","valueOnly","selectedItems","itemValue","handleValue","itemType","handleType","object","_addChoice","_addItem","string","getChoices","choiceValue","findAndSelectChoice","val","foundChoice","replaceChoices","_clearChoices","removeLoadingState","result","_addGroup","shouldSetInputWidth","enable","disable","fn","_handleLoadingState","_ajaxCallback","placeholderChoice","getPlaceholderChoice","itemId","itemToRemove","_selectPlaceholderChoice","hasShiftKey","passedId","getChoiceById","passedKeyCode","hasActiveDropdown","clearInput","hasHighlightedItems","some","setWidth","removeHighlightedItems","isLoading","placeholderItem","getChild","addLoadingState","setPlaceholder","isUnique","parsedResults","newValue","haystack","getSearchableChoices","needle","assign","fuse","isFocussed","hasUnactiveChoices","resultCount","_searchChoices","addEventListeners","removeEventListeners","e","hasFocusedInput","hasItems","hasChildren","keyString","String","fromCharCode","backKey","deleteKey","enterKey","aKey","escapeKey","upKey","downKey","pageUpKey","pageDownKey","ctrlDownKey","ctrlKey","metaKey","onAKey","activeElement","highlightAll","onEnterKey","_handleButtonAction","_handleChoiceAction","onEscapeKey","onDirectionKey","directionInt","skipKey","nextEl","pop","currentEl","_scrollToChoice","onDeleteKey","_handleBackspace","keyDownActions","outerHTML","_handleSearch","touches","stopPropagation","shiftKey","buttonTarget","itemTarget","choiceTarget","_handleItemAction","targetWithinDropdown","shouldHighlightChoice","unhighlightAll","removeFocusState","focusActions","text","addFocusState","blurActions","dropdownHeight","choiceHeight","choicePos","containerScrollPos","scrollPos","endPoint","animateScroll","strength","choiceListScrollTop","continueAnimation","distance","passedEl","highlightedChoices","setActiveDescendant","passedValue","passedLabel","passedOptionId","removeActiveItems","isSelected","choiceLabel","choiceElementId","valueKey","labelKey","getElementsByTagName","valueOf","isOptDisabled","globalClasses","callbackTemplate","userTemplates","conceal","passedGroups","getOptionGroups","getPlaceholderOption","passedOptions","getOptions","allChoices","hasSelectedChoice","handleChoice","shouldPreselect","handlePresetItem","Container","isOpen","isFlipped","onFocus","onBlur","dropdownPos","winHeight","shouldFlip","activeDescendantID","removeActiveDescendant","originalElement","Dropdown","dimensions","ceil","Input","onPaste","onInput","enforceWidth","getWidth","List","node","WrappedInput","WrappedSelect","defaultState","action","activateOptions","appReducer","combineReducers","rootReducer","passedState","newState","Store","createStore","devToolsExtension","current","filtered","getChoicesFilteredBySelectable","reverse","getGroups","hasActiveOptions","foundGroup","TEMPLATES","passedElementType","role","ariaAutoComplete","localClasses","ariaSelected","ariaDisabled","ariaMultiSelectable","choiceGroup"],"mappings":"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EAAmB;AACxC,KAAIA,SAAS,SAAb,EAAwB;AACvBkF,UAAQE,GAAR,QAAiBE,OAAjB,EAA4B,gDAA5B;AACA;AACD,CAJM,C;;;;;;ACrFP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,GAAG;AACH;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;;;;;;;;;;;AC7OD;AACA;;AAEA,IAAMC,QAAQ;AACb,cAAa,CACZ;AACCC,UAAQ,GADT;AAEClF,SAAO;AAFR,EADY,EAKZ;AACCkF,UAAQ,GADT;AAEClF,SAAO;AAFR,EALY,EASZ;AACCkF,UAAQ,GADT;AAEClF,SAAO;AAFR,EATY,CADA;AAeb,UAAS,CACR;AACCkF,UAAQ,GADT;AAEClF,SAAO;AAFR,EADQ;AAfI,CAAd;;AAuBA,IAAMmF,WAAW,SAAXA,QAAW,GAAM;AACtBvF,UAASmD,eAAT,CAAyB1E,SAAzB,IAAsC,eAAtC;AACA+G,CAAA,iDAAAA,CAAQC,GAAR,CAAY,aAAZ,EAA2B,MAA3B,EAAmC;AAClCC,WAAS;AADyB,EAAnC;AAGA,CALD;;AAOA,IAAMC,SAAS,SAATA,MAAS,GAAM;AACpB3F,UAASmD,eAAT,CAAyB1E,SAAzB,IAAsC,eAAtC;AACA,CAFD;;AAIA,IAAMmH,aAAa,SAAbA,UAAa,GAAM;AACxB,KAAMC,UAAU,EAAhB;;AAEAlB,QAAOC,IAAP,CAAYS,KAAZ,EAAmBpF,OAAnB,CAA2B,UAAC6F,IAAD,EAAU;AACpC,MAAMC,WAAWV,MAAMS,IAAN,EAAYhF,GAAZ,CAAgB,UAACkF,OAAD;AAAA,UAAa,IAAI,wDAAJ,CAAqBF,IAArB,EAA2BE,OAA3B,EAAoCC,IAApC,EAAb;AAAA,GAAhB,CAAjB;;AAEAJ,UAAQf,IAAR,mCAAgBiB,QAAhB;AACA,EAJD;;AAMA,QAAOF,OAAP;AACA,CAVD;;AAaO,IAAMK,aAAaC,QAAQC,GAAR,CAAYR,YAAZ,CAAnB;;AAEA,IAAMS,OAAO,SAAPA,IAAO,GAAM;AACzB,KAAI,iDAAAb,CAAQc,GAAR,CAAY,aAAZ,MAA+B,MAAnC,EAA2C;AAC1C;AACA;;AAED,QAAOJ,WACLK,IADK,CACAhB,QADA,EAELiB,KAFK,CAECb,MAFD,CAAP;AAGA,CARM,C;;;;;;ACpDP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC;AACjC,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iCAAiC;AAC5C,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gCAAgC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,cAAc;AAC3B;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,wBAAwB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;ACt1BD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO,YAAY;AAC9B,WAAW,QAAQ;AACnB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,QAAQ;AACnB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,8CAA8C,kBAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO,YAAY;AAC9B,WAAW,QAAQ;AACnB;AACA,WAAW,QAAQ;AACnB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,oBAAoB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACtbA,wB;;;;;;;;;;;;;;ACCO,IAAMc,qBAAqB;AAChCC,kBAAgB,SADgB;AAEhCC,kBAAgB,gBAFgB;AAGhCC,SAAO,gBAHyB;AAIhCC,eAAa,wBAJmB;AAKhCC,QAAM,eAL0B;AAMhCC,aAAW,yBANqB;AAOhCC,cAAY,uBAPoB;AAQhCC,gBAAc,yBARkB;AAShClG,QAAM,eAT0B;AAUhCmG,kBAAgB,2BAVgB;AAWhCC,gBAAc,yBAXkB;AAYhCC,cAAY,uBAZoB;AAahCC,eAAa,sBAbmB;AAchCC,SAAO,gBAdyB;AAehCC,gBAAc,kBAfkB;AAgBhCC,UAAQ,iBAhBwB;AAiBhCC,eAAa,WAjBmB;AAkBhCC,cAAY,YAlBoB;AAmBhCC,aAAW,SAnBqB;AAoBhCC,iBAAe,aApBiB;AAqBhCC,oBAAkB,gBArBc;AAsBhCC,eAAa,WAtBmB;AAuBhCC,gBAAc,YAvBkB;AAwBhCC,gBAAc,YAxBkB;AAyBhCC,aAAW,gBAzBqB;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;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,2DAA2D;AAC3D,6BAA6B,EAAE;AAC/B;;AAEA,SAAS,oBAAoB;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;;AAEA,2BAA2B;AAC3B,CAAC;;;;;;;ACpKD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;AChND;;AAEA;AACA;;AAEA;;;;;;;;;;;ACLA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7DA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;ACvLtC;AAAA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA,kEAAkE,aAAa;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;;;;;;AC/BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,IAAI;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,yBAAyB;AACvC;;AAEA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA,mBAAmB,aAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,YAAY,yBAAyB;;AAErC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;;;;;;;;;;;;ACvPA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;ACfA;AAAA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,C;;;;;;ACpBA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;AChHD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;;;;;;;;;;;;ACvSD;AACA;AACA;AACA;AACA;;AAGO,IAAM/R,OAAO,gBAAM;AACzB,KAAM7H,UAAUwB,SAASsD,aAAT,CAAuB,eAAvB,CAAhB;;AAEA,KAAI,CAAC9E,OAAL,EAAc;;AAEd,KAAMya,gBAAgB,YAAtB;AACA,KAAMvZ,OAA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,EAAE,OAAO,oCAAoC,UAAU,GAAG,EAAE,GAAG,SAAS,E;;;;;;ACA1pG;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB;;AAEhB;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,GAAG;AAAA;AACH,EAAE;AACF;AACA;AACA,CAAC;;;;;;;;AC/CD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,sCAAsC;AACtC;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;;;;;;;AChGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,CAAC;;;;;;;ACpDD;AACA;AACA;AACA;AACA;AACA,CAAC,qBAAqB;;AAEtB;AACA;AACA,+DAA+D;AAC/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,yEAAyE;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA6B,iCAAiC;AAC9D,2BAA2B,gCAAgC;AAC3D;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,kBAAkB;AAChD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,kCAAkC,iDAAiD,EAAE;AACrF;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,8BAA8B,0BAA0B,EAAE;AAC1D;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf;AACA;AACA,wBAAwB,2BAA2B,EAAE;AACrD;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,wBAAwB,6BAA6B,EAAE;AACvD;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,+CAA+C,EAAE;AACjF;AACA;AACA,KAAK;AACL,wBAAwB,+BAA+B,EAAE;AACzD,wBAAwB,8BAA8B,EAAE;AACxD;AACA;AACA,KAAK;AACL,wBAAwB,2BAA2B,EAAE;AACrD,wBAAwB,4BAA4B,EAAE;AACtD,wBAAwB,2DAA2D,EAAE;AACrF,wBAAwB,+BAA+B,EAAE;AACzD,wBAAwB,uBAAuB,EAAE;AACjD;AACA;AACA,KAAK;AACL,wBAAwB,iCAAiC,EAAE;AAC3D,wBAAwB,4BAA4B,EAAE;AACtD,wBAAwB,0BAA0B,EAAE;AACpD,wBAAwB,sBAAsB,EAAE;AAChD,wBAAwB,gDAAgD,EAAE;AAC1E;;AAEA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,oCAAoC,EAAE;AAClG;AACA;AACA,uCAAuC,oBAAoB;AAC3D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,2BAA2B;AAClE,oCAAoC,uBAAuB;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,mCAAmC,EAAE;AACrF;AACA,kDAAkD,iCAAiC,EAAE;AACrF;AACA,6BAA6B,mDAAmD;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,2BAA2B,EAAE;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,0DAA0D,EAAE;AAC3H;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,kDAAkD,YAAY,EAAE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,4BAA4B;AAC1C;AACA;AACA,2BAA2B,0BAA0B;AACrD;AACA;AACA,0CAA0C,6BAA6B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kCAAkC,EAAE;AAClE;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,8BAA8B,kCAAkC,EAAE;AAClE;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kBAAkB;AACrD,iCAAiC,+BAA+B;AAChE,uCAAuC,uBAAuB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sCAAsC,EAAE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,4CAA4C,2BAA2B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,KAAK;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iBAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kBAAkB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,QAAQ;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,+BAA+B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,qBAAqB,EAAE;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,oCAAoC,iEAAiE;AACrG;AACA;AACA,8BAA8B,kCAAkC,EAAE;AAClE;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,8BAA8B,mCAAmC,EAAE;AACnE;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,6BAA6B,EAAE;AAC7D;AACA,SAAS;AACT;AACA,8BAA8B,6BAA6B,EAAE;AAC7D;AACA,SAAS;AACT;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA,kCAAkC,KAAK;AACvC;AACA;AACA;AACA;AACA,uBAAuB,gCAAgC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,yCAAyC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,kCAAkC,EAAE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oCAAoC,EAAE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,+DAA+D,EAAE;AACvG;AACA,oCAAoC,oEAAoE,EAAE;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,kCAAkC,EAAE;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,qCAAqC,EAAE;AACrF;AACA;AACA;AACA;AACA,8CAA8C,qCAAqC,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,iDAAiD,EAAE;AAC3G,iDAAiD,kCAAkC,EAAE;AACrF;AACA;AACA,uCAAuC,uBAAuB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,kCAAkC,UAAU,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4BAA4B,EAAE;AAC5D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,mBAAmB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,8BAA8B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+BAA+B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,sBAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sDAAsD,EAAE;AAC1F;AACA;AACA;AACA,sCAAsC,qDAAqD,EAAE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,wBAAwB;AACxB;AACA;AACA,yCAAyC;AACzC;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;AC9lED;AACA;AACA;AACA;AACA,yBAAyB;AACzB,CAAC,4BAA4B;;AAE7B;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,cAAc;;AAE5D,CAAC;;;;;;;ACrED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;;AAEA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;ACrLD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;AC1ND;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;ACzFD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO,IAAI,YAAY,OAAO,UAAU,QAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB,EAAE,sBAAsB,eAAe;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;ACjYD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;ACtHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;ACjLD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;ACpND;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA,mBAAmB,aAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,mBAAmB,gCAAgC;AACnD;;AAEA;;AAEA;AACA;;AAEA,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,KAAK;AACL,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,eAAe,oBAAoB;AACnC;AACA;AACA;;AAEA;;AAEA,iBAAiB,cAAc;AAC/B;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC,SAAS;AAC9C;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,yCAAyC,SAAS;AAClD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA,eAAe,qBAAqB;AACpC;AACA;;AAEA,eAAe,qBAAqB;AACpC;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,iCAAiC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,aAAa;AAC5B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,eAAe,qBAAqB;AACpC,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA,sBAAsB,YAAY;AAClC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,SAAS;AACnB;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA,CAAC;;;;;;;ACrzBD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;;;AC/BA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA6B;AAC7B;AACA;;AAEA,eAAe,sBAAsB;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB,IAAI;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB,IAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,gBAAgB,IAAI;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB,IAAI;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB,IAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,gBAAgB,IAAI;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,gBAAgB,IAAI;AACpB,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,gBAAgB,IAAI;AACpB,gBAAgB,KAAK;AACrB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,gBAAgB,IAAI;AACpB,gBAAgB,KAAK;AACrB,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,gBAAgB,IAAI;AACpB,gBAAgB,KAAK;AACrB,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACldD;AACA;AACA;AAAA;AAAA;AAAA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,CAAC,E;;;;;;ACzKD;AACA;AACA;AAAA;AAAA;AAAA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,sBAAsB;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET,2BAA2B,wBAAwB;;AAEnD;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mJAAmJ;;AAEnJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB,OAAO;AACvB,iBAAiB,OAAO;AACxB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,oBAAoB;AAC/C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2BAA2B,oBAAoB;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,OAAO;AACvB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB;AACA;;AAEA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;;AAEA;AACA;;AAEA,+BAA+B,0BAA0B;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB,aAAa;;AAEb;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;;AAEb;AACA;AACA;;AAEA,2BAA2B,2BAA2B;AACtD;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,2BAA2B,2BAA2B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA,2BAA2B,2BAA2B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA,2BAA2B,2BAA2B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2BAA2B;AACtD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,uBAAuB,0BAA0B;AACjD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+BAA+B,uBAAuB;AACtD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC,E;;;;;;;;;;AC94C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AA+D,wCAAwC,eAAe,8BAA8B,0BAA0B,6GAA6G,mBAAmB,cAAc,+CAA+C,8DAA8D,0CAA0C,wCAAwC,wFAAwF,gHAAgH,oCAAoC,kIAAkI,uDAAuD,gBAAgB,EAAE,+BAA+B,wFAAwF,mEAAmE,0CAA0C,+BAA+B,4JAA4J,8BAA8B,oBAAoB,gCAAgC,sBAAsB,cAAc,2NAA2N,qCAAqC;;;;;;;ACA1wT;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,WAAW;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,iBAAiB;AACrC,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,wBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,mCAAmC,sBAAsB;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,mCAAmC,mBAAmB;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,mBAAmB,KAAK;AACxB;AACA;AACA,mCAAmC,yBAAyB;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,aAAa;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,cAAc;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;;AAED;;;;;;;;;AC/8BA;AAAA,mDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,SAAS;AACtB;AACA;AACA,wEAAwE,aAAa;AACrF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,wBAAwB;AACxB;AACA,OAAO;AACP;AACA;AACA,C;;;;;;;AC/CA;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;AC9CsB;AACtB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mEAAmE;AACnE;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,+EAAyB;;AAEpE;AACA;AACA;;AAEA;AACA,mCAAmC,aAAa;AAChD;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,iBAAiB,wBAAwB;AACzC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,8BAA8B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;ACjIA;;;;;;;;sDCAA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F,SAAS;;;AAGT;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA;;AAEA;AACA,4B;;;;;;;;AC5BA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA,E;;;;;;ACtBA;AACA;AACA;AACA;AACA,CAAC,qBAAqB;;AAEtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU,QAAQ;AAClB,UAAU,OAAO;AACjB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,QAAQ;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU,QAAQ;AAClB,WAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU,QAAQ;AAClB,UAAU,QAAQ;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,UAAU;AACpB,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,QAAQ;AAClB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,UAAU;AACpB,UAAU,OAAO;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,QAAQ;AAClB,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,WAAW;AACrB;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU,yBAAyB;AACnC,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kCAAkC;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,IAAI;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA,cAAc;AACd;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,mBAAmB;AACnB,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,gBAAgB;;AAE5D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,gBAAgB;;AAEtF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB,uBAAuB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B,2BAA2B;AAC3B,gCAAgC;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gDAAgD;;AAEhD;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,cAAc;AAC5B;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA,wBAAwB;AACxB,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,4BAA4B;AAC5B;;AAEA,qCAAqC;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB,cAAc,OAAO;AACrB,aAAa,WAAW;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,mBAAmB;AAClC;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,IAAI;AACJ;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kBAAkB;AAC9B;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,4BAA4B;AACzC,aAAa,YAAY;AACzB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B,iDAAiD,uCAAuC,kDAAkD;AAC1I,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA,cAAc,OAAO;AACrB;AACA,cAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;AAQD;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG,qBAAqB;AACxB,4BAA4B,8CAA8C;AAC1E;AACA;AACA,OAAO,8EAA8E;AACrF;AACA;AACA,OAAO,gFAAgF;AACvF,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,QAAQ;AAClB,UAAU,OAAO;AACjB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,GAAG,IAAI;;AAEP,sBAAsB;AACtB;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,QAAQ;AAClB,UAAU,OAAO;AACjB,UAAU,QAAQ;AAClB,WAAW,MAAM;AACjB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA,UAAU,WAAW;AACrB,UAAU,QAAQ;AAClB,UAAU,OAAO;AACjB,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU,QAAQ;AAClB,UAAU,QAAQ;AAClB,UAAU,OAAO;AACjB,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU,UAAU;AACpB,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;;AAEA,gCAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP,4BAA4B,mBAAmB;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,UAAU,yBAAyB;AACnC,UAAU,OAAO;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,iCAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,eAAe;AACf;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,eAAe;AACf;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP,sDAAsD;AACtD,4DAA4D;AAC5D;AACA,sBAAsB;AACtB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;ACt9HD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;AC9QD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;ACrBA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,mBAAmB;AAC3D;AACA;;AAEA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;;AAEA;AACA;AACA,wCAAwC,4BAA4B;AACpE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD,SAAS;AACT;AACA,SAAS;AACT,8EAA8E;AAC9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,uBAAuB;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,uCAAuC,0BAA0B;AACjE;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B,0BAA0B,eAAe;AACxE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA,KAAK;AACL;AACA;AACA,CAAC;;;;;;;AC5cD,kBAAkB,oFAAoF,mP","file":"app.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// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 53);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ef3a246c416434402452","export const addClass = (element, className) => {\n\tif (element.classList) {\n\t\telement.classList.add(className);\n\t} else {\n\t\telement.className += ' ' + className;\n\t}\n};\n\nexport const removeClass = (element, className) => {\n\tif (element.classList) {\n\t\telement.classList.remove(className);\n\t} else {\n\t\telement.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n\t}\n};\n\nexport const hasClass = (element, className) => {\n\tif (element.classList) {\n\t\treturn element.classList.contains(className);\n\t} else {\n\t\treturn new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n\t}\n};\n\nexport const append = (element, parent) => {\n\tparent.appendChild(element);\n};\n\nexport const remove = (element) => {\n\tif (element && element.parentNode) {\n\t\telement.parentNode.removeChild(element);\n\t}\n};\n\nexport const wrap = (element, wrapper) => {\n\telement.parentNode.insertBefore(wrapper, element);\n\twrapper.appendChild(element);\n};\n\nexport const createElement = (type, classes = '') => {\n\tconst element = document.createElement(type);\n\n\tclasses.split(' ').forEach((className) => addClass(element, className));\n\n\treturn element;\n};\n\nexport const outerWidth = (element, includeMargin) => {\n\tconst style = window.getComputedStyle(element);\n\tlet margin = 0;\n\n\tif (includeMargin) {\n\t\tmargin = parseInt(style.marginLeft) + parseInt(style.marginRight);\n\t}\n\n\treturn element.offsetWidth + margin;\n};\n\nexport const getItemsWidth = (items) => items\n\t.map((item) => outerWidth(item, true))\n\t.reduce((sum, value) => sum + value, 0);\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/tools/DOM.js","export const on = (element, types, handler, selector) => {\n\tlet temp = handler;\n\n\ttypes.split(' ').forEach((type) => {\n\t\tif (typeof selector === 'string') {\n\t\t\ttemp = function(event) {\n\t\t\t\tif (event.target && event.target.matches(`${selector}, ${selector} *`)) {\n\t\t\t\t\thandler(event);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\thandler._proxy = temp;\n\t\telement.addEventListener(type, temp);\n\t});\n};\n\nexport const off = (element, types, handler) => {\n\ttypes.split(' ').forEach((type) => {\n\t\telement.removeEventListener(type, handler._proxy);\n\t});\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/tools/Event.js","import { append } from './DOM';\nimport Scroll from '../vendor/scroll-js';\n\n\nconst scroll = new Scroll(document.body);\nconst SCROLL_OPTIONS = {\n\teasing: 'easeInCubic',\n};\n\n\nexport const getOption = (option) => window.App ? window.App.options[option] : null;\n\nexport const loadScript = (url, callback) => {\n\tconst script = document.createElement('script');\n\n\tscript.src = url;\n\tscript.onload = callback;\n\tappend(script, document.body);\n};\n\nexport const iconSVG = (id, classes = '') => {\n\tconst ICONS_PATH = getOption('iconsPath') || '/img/bg/';\n\n\n\treturn `\n\t\t\n\t\t\t\n\t\t\n\t`;\n};\n\nexport const scrollTo = (target, isMobile) => {\n\tif (isMobile) {\n\t\tconst scrolled = document.documentElement.scrollTop || document.body.scrollTop || 0;\n\t\tconst header = document.querySelector('.header');\n\t\tlet offset = target.getBoundingClientRect().top + window.pageYOffset;\n\t\tconst isScrollingUp = scrolled - offset > 0;\n\n\n\t\tif (isScrollingUp) {\n\t\t\toffset -= header.clientHeight;\n\n\t\t\treturn scroll.to(0, offset, SCROLL_OPTIONS);\n\t\t}\n\t}\n\n\treturn scroll.toElement(target, SCROLL_OPTIONS);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/tools/utils.js","import queries from '../../css/media-queries.json';\n\n\nexport const MQ = (device) => {\n\tconst devices = getDevices();\n\tlet query = devices.find((item) => item.device === device);\n\n\tconst showWarning = () => {\n\t\tnotify(`Device \"${device}\" doesn't exist! Use one of the devices below.`, 'warning');\n\t\tshowDevices();\n\t};\n\n\tif (query) {\n\t\tconst breakpoint = query.breakpoint;\n\t\tlet media = breakpoint;\n\n\t\tquery = device.split(/(?=Max|Min)/);\n\n\t\tif (query[1]) {\n\t\t\tswitch (query[1]) {\n\t\t\t\tcase 'Min':\n\t\t\t\t\tmedia = `(min-width: ${breakpoint}px)`;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Max':\n\t\t\t\t\tmedia = `(max-width: ${breakpoint - 1}px)`;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tshowWarning();\n\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn window.matchMedia(media).matches;\n\t} else {\n\t\tshowWarning();\n\n\t\treturn false;\n\t}\n};\n\n\nexport const getDevices = () => Object.keys(queries).reduce((acc, device) => {\n\tif (device !== 'is') {\n\t\tacc.push({\n\t\t\tdevice: `${device}Max`,\n\t\t\tbreakpoint: parseInt(queries[device] - 1),\n\t\t});\n\n\t\tacc.push({\n\t\t\tdevice: `${device}Min`,\n\t\t\tbreakpoint: parseInt(queries[device]),\n\t\t});\n\t} else {\n\t\tObject.keys(queries[device]).map((item) => {\n\t\t\tacc.push({\n\t\t\t\tdevice: item,\n\t\t\t\tbreakpoint:queries[device][item],\n\t\t\t});\n\t\t});\n\t}\n\n\treturn acc;\n}, []);\n\n\nexport const showDevices = () => {\n\tconst devices = getDevices();\n\n\tif (console.table) {\n\t\tconsole.table(devices);\n\t} else {\n\t\tconsole.log(devices.map((item) => `${item.device}: ${item.breakpoint}`));\n\t}\n};\n\n\nexport const getBreakpoint = (device) => {\n\tconst devices = getDevices();\n\tconst query = devices.find((item) => item.device === device);\n\n\treturn query && query.breakpoint || 0;\n};\n\n\nexport const notify = (message, type) => {\n\tif (type === 'warning') {\n\t\tconsole.log(`%c${message}`, 'font-weight: bold; font-size: 16px; color: red');\n\t}\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/tools/MQ.js","/**\n * Fizzy UI utils v2.0.5\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( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n var ary = [];\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n ary = obj;\n } else if ( obj && typeof obj == 'object' &&\n typeof obj.length == 'number' ) {\n // convert nodeList to array\n for ( var i=0; i < obj.length; i++ ) {\n ary.push( obj[i] );\n }\n } else {\n // array of single index\n ary.push( obj );\n }\n return ary;\n};\n\n// ----- removeFrom ----- //\n\nutils.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\nutils.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\nutils.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' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\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\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n if ( timeout ) {\n clearTimeout( timeout );\n }\n var args = arguments;\n\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold || 100 );\n };\n};\n\n// ----- docReady ----- //\n\nutils.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/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar 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 */\nutils.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 )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n 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 +\n ': ' + 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\nreturn utils;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fizzy-ui-utils/utils.js\n// module id = 4\n// module chunks = 1","import FontFaceObserver from 'fontfaceobserver';\nimport Cookies from 'js-cookie';\n\nconst FONTS = {\n\t'Open Sans': [\n\t\t{\n\t\t\tweight: 300,\n\t\t\tstyle: 'normal',\n\t\t},\n\t\t{\n\t\t\tweight: 400,\n\t\t\tstyle: 'normal',\n\t\t},\n\t\t{\n\t\t\tweight: 700,\n\t\t\tstyle: 'normal',\n\t\t},\n\t],\n\t'Vafle': [\n\t\t{\n\t\t\tweight: 400,\n\t\t\tstyle: 'normal',\n\t\t},\n\t],\n};\n\nconst onLoaded = () => {\n\tdocument.documentElement.className += ' fonts-loaded';\n\tCookies.set('fontsLoaded', 'true', {\n\t\texpires: 7,\n\t});\n};\n\nconst onFail = () => {\n\tdocument.documentElement.className += ' fonts-failed';\n};\n\nconst getLoaders = () => {\n\tconst loaders = [];\n\n\tObject.keys(FONTS).forEach((font) => {\n\t\tconst variants = FONTS[font].map((variant) => new FontFaceObserver(font, variant).load());\n\n\t\tloaders.push(...variants);\n\t});\n\n\treturn loaders;\n};\n\n\nexport const fontLoader = Promise.all(getLoaders());\n\nexport const init = () => {\n\tif (Cookies.get('fontsLoaded') === 'true') {\n\t\treturn;\n\t}\n\n\treturn fontLoader\n\t\t.then(onLoaded)\n\t\t.catch(onFail);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/fontFaceObserver.js","// Flickity main\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate'\n ], 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(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction 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\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction 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 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\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // 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()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._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\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.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\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\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\n this.emitEvent('activate');\n\n var index;\n var initialIndex = this.options.initialIndex;\n if ( this.isInitActivated ) {\n index = this.selectedIndex;\n } else if ( initialIndex !== undefined ) {\n index = this.cells[ initialIndex ] ? initialIndex : 0;\n } else {\n index = 0;\n }\n // select instantly\n this.select( index, false, true );\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n};\n\n// slider positions the cells\nproto._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\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.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 or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._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\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.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 */\nproto._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\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n });\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) {\n return;\n }\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\n var canCellFit = this._getCanCellFit();\n\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\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n if ( canCellFit.call( this, i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\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\nproto._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' &&\n groupCells.match(/^(\\d+)%$/);\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n return function( i, slideWidth ) {\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar 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\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._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\nproto._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\nproto._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 */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\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 = 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 */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\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 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\n this.dispatchEvent('select');\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\nproto._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\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.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\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\n/**\n * select slide from number or cell element\n * @param {Element or Number} elem\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell;\n if ( typeof value == 'number' ) {\n cell = this.cells[ value ];\n } else {\n // use string as selector\n if ( typeof value == 'string' ) {\n value = this.element.querySelector( value );\n }\n // get cell from element\n cell = this.getCell( value );\n }\n // select slide that has cell\n for ( var i=0; cell && i < this.slides.length; i++ ) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf( cell );\n if ( index != -1 ) {\n this.select( i, isWrap, isInstant );\n return;\n }\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem\n * @returns {Flickity.Cell} item\n */\nproto.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\n * @returns {Array} cells - Flickity.Cells\n */\nproto.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 */\nproto.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\n * @returns {Flickit.Cell} cell\n */\nproto.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 */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\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// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\nproto.childUIPointerDown = function( event ) {\n this.emitEvent( 'childUIPointerDown', [ event ] );\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n if ( !this.isActive ) {\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\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\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\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n if ( !this.options.accessibility ||\n ( document.activeElement && document.activeElement != this.element ) ) {\n return;\n }\n\n if ( event.keyCode == 37 ) {\n // go left\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n } else if ( event.keyCode == 39 ) {\n // go right\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n // destroy cells\n this.cells.forEach( function( cell ) {\n cell.destroy();\n });\n this.unselectSelectedSlide();\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\nproto.destroy = function() {\n this.deactivate();\n window.removeEventListener( 'resize', this );\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\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {Element} elem\n * @returns {Flickity}\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/flickity/js/flickity.js\n// module id = 6\n// module chunks = 1","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\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/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\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\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\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 * 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\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 result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\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 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\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\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) && objectToString.call(value) == symbolTag);\n}\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 = throttle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash.throttle/index.js\n// module id = 7\n// module chunks = 1","module.exports = jQuery;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"jQuery\"\n// module id = 8\n// module chunks = 0 1","\nexport const DEFAULT_CLASSNAMES = {\n containerOuter: 'choices',\n containerInner: 'choices__inner',\n input: 'choices__input',\n inputCloned: 'choices__input--cloned',\n list: 'choices__list',\n listItems: 'choices__list--multiple',\n listSingle: 'choices__list--single',\n listDropdown: 'choices__list--dropdown',\n item: 'choices__item',\n itemSelectable: 'choices__item--selectable',\n itemDisabled: 'choices__item--disabled',\n itemChoice: 'choices__item--choice',\n placeholder: 'choices__placeholder',\n group: 'choices__group',\n groupHeading: 'choices__heading',\n button: 'choices__button',\n activeState: 'is-active',\n focusState: 'is-focused',\n openState: 'is-open',\n disabledState: 'is-disabled',\n highlightedState: 'is-highlighted',\n hiddenState: 'is-hidden',\n flippedState: 'is-flipped',\n loadingState: 'is-loading',\n noResults: 'has-no-results',\n noChoices: 'has-no-choices',\n};\n\nexport const DEFAULT_CONFIG = {\n silent: false,\n renderChoiceLimit: -1,\n maxItemCount: -1,\n addItems: true,\n removeItems: true,\n removeItemButton: false,\n editItems: false,\n duplicateItems: true,\n delimiter: ',',\n paste: true,\n searchEnabled: true,\n searchChoices: true,\n searchFloor: 1,\n searchResultLimit: 4,\n searchFields: ['label', 'value'],\n position: 'auto',\n resetScrollPosition: true,\n regexFilter: null,\n shouldSort: true,\n shouldSortItems: false,\n placeholder: true,\n placeholderValue: null,\n searchPlaceholderValue: null,\n prependValue: null,\n appendValue: null,\n renderSelectedChoices: 'auto',\n loadingText: 'Loading...',\n noResultsText: 'No results found',\n noChoicesText: 'No choices to choose from',\n itemSelectText: 'Press to select',\n addItemText: value => `Press Enter to add \"${value}\"`,\n maxItemText: maxItemCount => `Only ${maxItemCount} values can be added.`,\n uniqueItemText: 'Only unique values can be added.',\n fuseOptions: {\n includeScore: true,\n },\n callbackOnInit: null,\n callbackOnCreateTemplates: null,\n};\n\nexport const EVENTS = {\n showDropdown: 'showDropdown',\n hideDropdown: 'hideDropdown',\n change: 'change',\n choice: 'choice',\n search: 'search',\n addItem: 'addItem',\n removeItem: 'removeItem',\n highlightItem: 'highlightItem',\n};\n\nexport const ACTION_TYPES = {\n ADD_CHOICE: 'ADD_CHOICE',\n FILTER_CHOICES: 'FILTER_CHOICES',\n ACTIVATE_CHOICES: 'ACTIVATE_CHOICES',\n CLEAR_CHOICES: 'CLEAR_CHOICES',\n ADD_GROUP: 'ADD_GROUP',\n ADD_ITEM: 'ADD_ITEM',\n REMOVE_ITEM: 'REMOVE_ITEM',\n HIGHLIGHT_ITEM: 'HIGHLIGHT_ITEM',\n CLEAR_ALL: 'CLEAR_ALL',\n};\n\nexport const KEY_CODES = {\n BACK_KEY: 46,\n DELETE_KEY: 8,\n ENTER_KEY: 13,\n A_KEY: 65,\n ESC_KEY: 27,\n UP_KEY: 38,\n DOWN_KEY: 40,\n PAGE_UP_KEY: 33,\n PAGE_DOWN_KEY: 34,\n};\n\nexport const SCROLLING_SPEED = 4;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/constants.js","/* eslint-disable */\n\n/**\n * Capitalises the first letter of each word in a string\n * @param {String} str String to capitalise\n * @return {String} Capitalised string\n */\nexport const capitalise = function(str) {\n return str.replace(/\\w\\S*/g, txt => txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase());\n};\n\n/**\n * Generates a string of random chars\n * @param {Number} length Length of the string to generate\n * @return {String} String of random chars\n */\nexport const generateChars = function(length) {\n let chars = '';\n\n for (let i = 0; i < length; i++) {\n const randomChar = getRandomNumber(0, 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n};\n\n/**\n * Generates a unique id based on an element\n * @param {HTMLElement} element Element to generate the id from\n * @param {String} Prefix for the Id\n * @return {String} Unique Id\n */\nexport const generateId = function(element, prefix) {\n let id = element.id || (element.name && (`${element.name}-${generateChars(2)}`)) || generateChars(4);\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = prefix + id;\n\n return id;\n};\n\n\n/**\n * Tests the type of an object\n * @param {String} type Type to test object against\n * @param {Object} obj Object to be tested\n * @return {Boolean}\n */\nexport const getType = function(obj) {\n return Object.prototype.toString.call(obj).slice(8, -1);\n};\n\n/**\n * Tests the type of an object\n * @param {String} type Type to test object against\n * @param {Object} obj Object to be tested\n * @return {Boolean}\n */\nexport const isType = function(type, obj) {\n const clas = getType(obj);\n return obj !== undefined && obj !== null && clas === type;\n};\n\n/**\n * Tests to see if a passed object is a node\n * @param {Object} obj Object to be tested\n * @return {Boolean}\n */\nexport const isNode = o => (\n typeof Node === 'object' ? o instanceof Node :\n o && typeof o === 'object' && typeof o.nodeType === 'number' && typeof o.nodeName === 'string'\n );\n\n/**\n * Tests to see if a passed object is an element\n * @param {Object} obj Object to be tested\n * @return {Boolean}\n */\nexport const isElement = o => (\n typeof HTMLElement === 'object' ? o instanceof HTMLElement : // DOM2\n o && typeof o === 'object' && o !== null && o.nodeType === 1 && typeof o.nodeName === 'string'\n );\n\n/**\n * Merges unspecified amount of objects into new object\n * @private\n * @return {Object} Merged object of arguments\n */\nexport const extend = function() {\n const extended = {};\n const length = arguments.length;\n\n /**\n * Merge one object into another\n * @param {Object} obj Object to merge into extended object\n */\n const merge = function(obj) {\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n // If deep merge and property is an object, merge properties\n if (isType('Object', obj[prop])) {\n extended[prop] = extend(true, extended[prop], obj[prop]);\n } else {\n extended[prop] = obj[prop];\n }\n }\n }\n };\n\n // Loop through each passed argument\n for (let i = 0; i < length; i++) {\n // store argument at position i\n const obj = arguments[i];\n\n // If we are in fact dealing with an object, merge it.\n if (isType('Object', obj)) {\n merge(obj);\n }\n }\n\n return extended;\n};\n\n/**\n * CSS transition end event listener\n * @return\n */\nexport const whichTransitionEvent = function() {\n let t,\n el = document.createElement('fakeelement');\n\n const transitions = {\n transition: 'transitionend',\n OTransition: 'oTransitionEnd',\n MozTransition: 'transitionend',\n WebkitTransition: 'webkitTransitionEnd',\n };\n\n for (t in transitions) {\n if (el.style[t] !== undefined) {\n return transitions[t];\n }\n }\n};\n\n/**\n * CSS animation end event listener\n * @return\n */\nexport const whichAnimationEvent = function() {\n let t,\n el = document.createElement('fakeelement');\n\n const animations = {\n animation: 'animationend',\n OAnimation: 'oAnimationEnd',\n MozAnimation: 'animationend',\n WebkitAnimation: 'webkitAnimationEnd',\n };\n\n for (t in animations) {\n if (el.style[t] !== undefined) {\n return animations[t];\n }\n }\n};\n\n/**\n * Get the ancestors of each element in the current set of matched elements,\n * up to but not including the element matched by the selector\n * @param {NodeElement} elem Element to begin search from\n * @param {NodeElement} parent Parent to find\n * @param {String} selector Class to find\n * @return {Array} Array of parent elements\n */\nexport const getParentsUntil = function(elem, parent, selector) {\n const parents = [];\n // Get matches\n for (; elem && elem !== document; elem = elem.parentNode) {\n // Check if parent has been reached\n if (parent) {\n const parentType = parent.charAt(0);\n\n // If parent is a class\n if (parentType === '.') {\n if (elem.classList.contains(parent.substr(1))) {\n break;\n }\n }\n\n // If parent is an ID\n if (parentType === '#') {\n if (elem.id === parent.substr(1)) {\n break;\n }\n }\n\n // If parent is a data attribute\n if (parentType === '[') {\n if (elem.hasAttribute(parent.substr(1, parent.length - 1))) {\n break;\n }\n }\n\n // If parent is a tag\n if (elem.tagName.toLowerCase() === parent) {\n break;\n }\n }\n if (selector) {\n const selectorType = selector.charAt(0);\n\n // If selector is a class\n if (selectorType === '.') {\n if (elem.classList.contains(selector.substr(1))) {\n parents.push(elem);\n }\n }\n\n // If selector is an ID\n if (selectorType === '#') {\n if (elem.id === selector.substr(1)) {\n parents.push(elem);\n }\n }\n\n // If selector is a data attribute\n if (selectorType === '[') {\n if (elem.hasAttribute(selector.substr(1, selector.length - 1))) {\n parents.push(elem);\n }\n }\n\n // If selector is a tag\n if (elem.tagName.toLowerCase() === selector) {\n parents.push(elem);\n }\n } else {\n parents.push(elem);\n }\n }\n\n // Return parents if any exist\n if (parents.length === 0) {\n return null;\n }\n return parents;\n};\n\nexport const wrap = function(element, wrapper) {\n wrapper = wrapper || document.createElement('div');\n if (element.nextSibling) {\n element.parentNode.insertBefore(wrapper, element.nextSibling);\n } else {\n element.parentNode.appendChild(wrapper);\n }\n return wrapper.appendChild(element);\n};\n\nexport const getSiblings = function(elem) {\n const siblings = [];\n let sibling = elem.parentNode.firstChild;\n for (; sibling; sibling = sibling.nextSibling) {\n if (sibling.nodeType === 1 && sibling !== elem) {\n siblings.push(sibling);\n }\n }\n return siblings;\n};\n\n/**\n * Find ancestor in DOM tree\n * @param {NodeElement} el Element to start search from\n * @param {[type]} cls Class of parent\n * @return {NodeElement} Found parent element\n */\nexport const findAncestor = function(el, cls) {\n while ((el = el.parentElement) && !el.classList.contains(cls));\n return el;\n};\n\n/**\n * Find ancestor in DOM tree by attribute name\n * @param {NodeElement} el Element to start search from\n * @param {string} attr Attribute name of parent\n * @return {?NodeElement} Found parent element or null\n */\nexport const findAncestorByAttrName = function(el, attr) {\n let target = el;\n\n while (target) {\n if (target.hasAttribute(attr)) {\n return target;\n }\n\n target = target.parentElement;\n }\n\n return null;\n};\n\n/**\n * Debounce an event handler.\n * @param {Function} func Function to run after wait\n * @param {Number} wait The delay before the function is executed\n * @param {Boolean} immediate If passed, trigger the function on the leading edge, instead of the trailing.\n * @return {Function} A function will be called after it stops being called for a given delay\n */\nexport const debounce = function(func, wait, immediate) {\n let timeout;\n return function() {\n let context = this,\n args = arguments;\n const later = function() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n\n/**\n * Get an element's distance from the top of the page\n * @private\n * @param {NodeElement} el Element to test for\n * @return {Number} Elements Distance from top of page\n */\nexport const getElemDistance = function(el) {\n let location = 0;\n if (el.offsetParent) {\n do {\n location += el.offsetTop;\n el = el.offsetParent;\n } while (el);\n }\n return location >= 0 ? location : 0;\n};\n\n/**\n * Determine element height multiplied by any offsets\n * @private\n * @param {HTMLElement} el Element to test for\n * @return {Number} Height of element\n */\nexport const getElementOffset = function(el, offset) {\n let elOffset = offset;\n if (elOffset > 1) elOffset = 1;\n if (elOffset > 0) elOffset = 0;\n\n return Math.max(el.offsetHeight * elOffset);\n};\n\n/**\n * Get the next or previous element from a given start point\n * @param {HTMLElement} startEl Element to start position from\n * @param {String} className The class we will look through\n * @param {Number} direction Positive next element, negative previous element\n * @return {[HTMLElement} Found element\n */\nexport const getAdjacentEl = (startEl, className, direction = 1) => {\n if (!startEl || !className) return;\n\n const parent = startEl.parentNode.parentNode;\n const children = Array.from(parent.querySelectorAll(className));\n\n const startPos = children.indexOf(startEl);\n const operatorDirection = direction > 0 ? 1 : -1;\n\n return children[startPos + operatorDirection];\n};\n\n/**\n * Get scroll position based on top/bottom position\n * @private\n * @return {String} Position of scroll\n */\nexport const getScrollPosition = function(position) {\n if (position === 'bottom') {\n // Scroll position from the bottom of the viewport\n return Math.max((window.scrollY || window.pageYOffset) + (window.innerHeight || document.documentElement.clientHeight));\n }\n // Scroll position from the top of the viewport\n return (window.scrollY || window.pageYOffset);\n};\n\n/**\n * Determine whether an element is within the viewport\n * @param {HTMLElement} el Element to test\n * @return {String} Position of scroll\n * @return {Boolean}\n */\nexport const isInView = function(el, position, offset) {\n // If the user has scrolled further than the distance from the element to the top of its parent\n return this.getScrollPosition(position) > (this.getElemDistance(el) + this.getElementOffset(el, offset));\n};\n\n/**\n * Determine whether an element is within\n * @param {HTMLElement} el Element to test\n * @param {HTMLElement} parent Scrolling parent\n * @param {Number} direction Whether element is visible from above or below\n * @return {Boolean}\n */\nexport const isScrolledIntoView = (el, parent, direction = 1) => {\n if (!el) return;\n\n let isVisible;\n\n if (direction > 0) {\n // In view from bottom\n isVisible = (parent.scrollTop + parent.offsetHeight) >= (el.offsetTop + el.offsetHeight);\n } else {\n // In view from top\n isVisible = el.offsetTop >= parent.scrollTop;\n }\n\n return isVisible;\n};\n\n/**\n * Remove html tags from a string\n * @param {String} Initial string/html\n * @return {String} Sanitised string\n */\nexport const stripHTML = function(html) {\n const el = document.createElement('DIV');\n el.innerHTML = html;\n return el.textContent || el.innerText || '';\n};\n\n/**\n * Adds animation to an element and removes it upon animation completion\n * @param {Element} el Element to add animation to\n * @param {String} animation Animation class to add to element\n * @return\n */\nexport const addAnimation = (el, animation) => {\n const animationEvent = whichAnimationEvent();\n\n const removeAnimation = () => {\n el.classList.remove(animation);\n el.removeEventListener(animationEvent, removeAnimation, false);\n };\n\n el.classList.add(animation);\n el.addEventListener(animationEvent, removeAnimation, false);\n};\n\n\n/**\n * Get a random number between a range\n * @param {Number} min Minimum range\n * @param {Number} max Maximum range\n * @return {Number} Random number\n */\nexport const getRandomNumber = function(min, max) {\n return Math.floor(Math.random() * (max - min) + min);\n};\n\n/**\n * Turn a string into a node\n * @param {String} String to convert\n * @return {HTMLElement} Converted node element\n */\nexport const strToEl = (function() {\n const tmpEl = document.createElement('div');\n return function(str) {\n const cleanedInput = str.trim();\n let r;\n tmpEl.innerHTML = cleanedInput;\n r = tmpEl.children[0];\n\n while (tmpEl.firstChild) {\n tmpEl.removeChild(tmpEl.firstChild);\n }\n\n return r;\n };\n}());\n\n/**\n * Sets the width of a passed input based on its value\n * @return {Number} Width of input\n */\nexport const getWidthOfInput = (input) => {\n const value = input.value || input.placeholder;\n let width = input.offsetWidth;\n\n if (value) {\n const testEl = strToEl(`${value}`);\n testEl.style.position = 'absolute';\n testEl.style.padding = '0';\n testEl.style.top = '-9999px';\n testEl.style.left = '-9999px';\n testEl.style.width = 'auto';\n testEl.style.whiteSpace = 'pre';\n\n if (document.body.contains(input) && window.getComputedStyle) {\n const inputStyle = window.getComputedStyle(input);\n\n if (inputStyle) {\n testEl.style.fontSize = inputStyle.fontSize;\n testEl.style.fontFamily = inputStyle.fontFamily;\n testEl.style.fontWeight = inputStyle.fontWeight;\n testEl.style.fontStyle = inputStyle.fontStyle;\n testEl.style.letterSpacing = inputStyle.letterSpacing;\n testEl.style.textTransform = inputStyle.textTransform;\n testEl.style.padding = inputStyle.padding;\n }\n }\n\n document.body.appendChild(testEl);\n\n if (value && testEl.offsetWidth !== input.offsetWidth) {\n width = testEl.offsetWidth + 4;\n }\n\n document.body.removeChild(testEl);\n }\n\n return `${width}px`;\n};\n\n/**\n * Sorting function for current and previous string\n * @param {String} a Current value\n * @param {String} b Next value\n * @return {Number} -1 for after previous,\n * 1 for before,\n * 0 for same location\n */\nexport const sortByAlpha = (a, b) => {\n const labelA = (a.label || a.value).toLowerCase();\n const labelB = (b.label || b.value).toLowerCase();\n\n if (labelA < labelB) return -1;\n if (labelA > labelB) return 1;\n return 0;\n};\n\n/**\n * Sort by numeric score\n * @param {Object} a Current value\n * @param {Object} b Next value\n * @return {Number} -1 for after previous,\n * 1 for before,\n * 0 for same location\n */\nexport const sortByScore = (a, b) => a.score - b.score;\n\n/**\n * Dispatch native event\n * @param {NodeElement} element Element to trigger event on\n * @param {String} type Type of event to trigger\n * @param {Object} customArgs Data to pass with event\n * @return {Object} Triggered event\n */\nexport const dispatchEvent = (element, type, customArgs = null) => {\n const event = new CustomEvent(type, {\n detail: customArgs,\n bubbles: true,\n cancelable: true,\n });\n\n return element.dispatchEvent(event);\n};\n\n/**\n * Tests value against a regular expression\n * @param {string} value Value to test\n * @return {Boolean} Whether test passed/failed\n * @private\n */\nexport const regexFilter = (value, regex) => {\n if (!value || !regex) {\n return false;\n }\n\n const expression = new RegExp(regex.source, 'i');\n return expression.test(value);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/lib/utils.js","/**\n * Map to hold easing functions.\n * @type {Object}\n */\nlet animMap = {\n\tlinear: function (t) { return t; },\n\teaseInQuad: function (t) { return t*t; },\n\teaseOutQuad: function (t) { return t*(2-t); },\n\teaseInOutQuad: function (t) { return t<.5 ? 2*t*t : -1+(4-2*t)*t; },\n\teaseInCubic: function (t) { return t*t*t; },\n\teaseOutCubic: function (t) { return (--t)*t*t+1; },\n\teaseInOutCubic: function (t) { return t<.5 ? 4*t*t*t : (t-1)*(2*t-2)*(2*t-2)+1; },\n\teaseInQuart: function (t) { return t*t*t*t; },\n\teaseOutQuart: function (t) { return 1-(--t)*t*t*t; },\n\teaseInOutQuart: function (t) { return t<.5 ? 8*t*t*t*t : 1-8*(--t)*t*t*t; },\n\teaseInQuint: function (t) { return t*t*t*t*t; },\n\teaseOutQuint: function (t) { return 1+(--t)*t*t*t*t; },\n\teaseInOutQuint: function (t) { return t<.5 ? 16*t*t*t*t*t : 1+16*(--t)*t*t*t*t; },\n};\n\n/**\n * Gets an easing function based on supplied easing string.\n * @param {String} easing - The easing id\n * @returns {Function} - Returns the easing function\n */\nlet getEasing = (easing) => {\n\tlet defaultEasing = 'linear',\n\t\teaseFunc = animMap[easing || defaultEasing];\n\tif (!easeFunc) {\n\t\tconsole.warn('Scroll error: scroller does not support an easing option of ' + easing + '. Using \"' + defaultEasing + '\" instead');\n\t\teaseFunc = animMap[easing];\n\t}\n\treturn easeFunc;\n};\n\n/**\n * Scroll class.\n * @class Scroll\n * @param {object} options - Options to pass\n * @param {HTMLElement} options.el - The element to apply scroll to\n */\nexport default class Scroll {\n\n\t/**\n\t * When the scroll is instantiated.\n\t * @param {HTMLElement} el - The element to scroll (the viewport)\n\t */\n\tconstructor (el) {\n\t\tif (el && !(el instanceof Node)) {\n\t\t\tthrow new Error(`Scroll error: element passed to Scroll constructor must be a DOM node, you passed ${el}!`);\n\t\t}\n\t\tthis.el = el || document.body;\n\t}\n\n\t/**\n\t * Scrolls the element until it's scroll properties match the coordinates provided.\n\t * @param {Number} x - The pixel along the horizontal axis of the element that you want displayed in the upper left.\n\t * @param {Number} y - The pixel along the vertical axis of the element that you want displayed in the upper left.\n\t * @param {Object} [options] - Scroll options\n\t * @param {Number} [options.duration]- The amount of time for the animation\n\t * @param {string} [options.easing] - The easing function to use\n\t * @return {Promise}\n\t */\n\tto (x, y, options) {\n\t\tlet elem = this.el,\n\t\t\tfromY = elem === document.body ? window.pageYOffset : elem.scrollTop;\n\t\t// defaults\n\t\toptions = options || {};\n\t\toptions.duration = options.duration || 400;\n\n\t\t/**\n\t\t * Sets element's property to a value.\n\t\t * @param {string} prop - The property to set\n\t\t * @param {Number} value - The number value\n\t\t */\n\t\tlet moveElement = (prop, value) => {\n\t\t\tlet el = this.el;\n\t\t\tel[prop] = value;\n\t\t\t// scroll the html element also for cross-browser compatibility\n\t\t\t// (ie. silly browsers like IE who need the html element to scroll too)\n\t\t\tif (el === this.document.body) {\n\t\t\t\tthis.document.documentElement[prop] = value;\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Does a bit of calculating and scrolls an element.\n\t\t * @param {HTMLElement} el - The element to be scrolled\n\t\t * @param {Number} from - The number of where to scroll from\n\t\t * @param {Number} to - The number of where to scroll to\n\t\t * @param {string} prop - The property to animate\n\t\t * @param {Number} startTime - The timestamp of when the animation should start\n\t\t * @param {Number} duration - The amount of time for the animation\n\t\t * @param {Function} easeFunc - The easing function to use\n\t\t * @param [callback]\n\t\t */\n\t\tlet scroll = (el, from, to, prop, startTime, duration, easeFunc, callback) => {\n\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\tlet currentTime = Date.now(),\n\t\t\t\t\ttime = Math.min(1, ((currentTime - startTime) / duration));\n\n\t\t\t\tif (from === to) {\n\t\t\t\t\treturn callback ? callback() : null;\n\t\t\t\t}\n\n\t\t\t\tmoveElement(prop, (easeFunc(time) * (to - from)) + from);\n\n\t\t\t\tfrom = el[prop] || this.document.body[prop] || this.document.documentElement[prop] || 0;\n\n\t\t\t\t/* prevent scrolling, if already there, or at end */\n\t\t\t\tif (time < 1) {\n\t\t\t\t\tscroll(el, from, to, prop, startTime, duration, easeFunc, callback);\n\t\t\t\t} else if (callback) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\treturn new Promise((resolve) => {\n\t\t\tscroll(elem, fromY, y, 'scrollTop', Date.now(), options.duration, getEasing(options.easing), resolve);\n\t\t});\n\t}\n\n\t/**\n\t * Returns document element\n\t * @returns {HTMLDocument}\n\t */\n\tget document () {\n\t\treturn document;\n\t}\n\n\t/**\n\t * Scroll to an element.\n\t * @param {HTMLElement} el - The element to scroll to.\n\t * @param {Object} [options] - The scroll options\n\t */\n\ttoElement (el, options) {\n\t\tlet container = this.el;\n\t\tlet currentContainerScrollYPos = 0;\n\t\tlet elementScrollYPos = el ? el.offsetTop : 0;\n\t\tlet errorMsg;\n\n\t\tif (!el) {\n\t\t\terrorMsg = 'The element passed to Scroll.toElement() was undefined';\n\t\t\tconsole.error(errorMsg);\n\t\t\treturn Promise.reject(new Error(errorMsg));\n\t\t}\n\n\t\t// if the container is the document body or document itself, we'll\n\t\t// need a different set of coordinates for accuracy\n\t\tif (container === document.body) {\n\t\t\t// using pageYOffset for cross-browser compatibility\n\t\t\tcurrentContainerScrollYPos = window.pageYOffset;\n\t\t\t// must add containers scroll y position to ensure an absolute value that does not change\n\t\t\telementScrollYPos = el.getBoundingClientRect().top + currentContainerScrollYPos;\n\t\t}\n\n\t\treturn this.to(0, elementScrollYPos, options);\n\t}\n\n\t/**\n\t * Use this to clean up the DOM when done.\n\t */\n\tdestroy () {}\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/scroll-js.js","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 12\n// module chunks = 1","/*!\n * JavaScript Cookie v2.2.0\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader = false;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api (key, value, attributes) {\n\t\t\tvar result;\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Write\n\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tattributes = extend({\n\t\t\t\t\tpath: '/'\n\t\t\t\t}, api.defaults, attributes);\n\n\t\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\t\tvar expires = new Date();\n\t\t\t\t\texpires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n\t\t\t\t\tattributes.expires = expires;\n\t\t\t\t}\n\n\t\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\t\ttry {\n\t\t\t\t\tresult = JSON.stringify(value);\n\t\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\t\tvalue = result;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\n\t\t\t\tif (!converter.write) {\n\t\t\t\t\tvalue = encodeURIComponent(String(value))\n\t\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = converter.write(value, key);\n\t\t\t\t}\n\n\t\t\t\tkey = encodeURIComponent(String(key));\n\t\t\t\tkey = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n\t\t\t\tkey = key.replace(/[\\(\\)]/g, escape);\n\n\t\t\t\tvar stringifiedAttributes = '';\n\n\t\t\t\tfor (var attributeName in attributes) {\n\t\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName];\n\t\t\t\t}\n\t\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t\t}\n\n\t\t\t// Read\n\n\t\t\tif (!key) {\n\t\t\t\tresult = {};\n\t\t\t}\n\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t\t// calling \"get()\"\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar rdecode = /(%[0-9A-Z]{2})+/g;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!this.json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = parts[0].replace(rdecode, decodeURIComponent);\n\t\t\t\t\tcookie = converter.read ?\n\t\t\t\t\t\tconverter.read(cookie, name) : converter(cookie, name) ||\n\t\t\t\t\t\tcookie.replace(rdecode, decodeURIComponent);\n\n\t\t\t\t\tif (this.json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tresult = cookie;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!key) {\n\t\t\t\t\t\tresult[name] = cookie;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\tapi.set = api;\n\t\tapi.get = function (key) {\n\t\t\treturn api.call(api, key);\n\t\t};\n\t\tapi.getJSON = function () {\n\t\t\treturn api.apply({\n\t\t\t\tjson: true\n\t\t\t}, [].slice.call(arguments));\n\t\t};\n\t\tapi.defaults = {};\n\n\t\tapi.remove = function (key, attributes) {\n\t\t\tapi(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/js-cookie/src/js.cookie.js\n// module id = 13\n// module chunks = 1 2","/**\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\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\n//////////////////\n// WEBPACK FOOTER\n// ./~/ev-emitter/ev-emitter.js\n// module id = 14\n// module chunks = 1","import { dispatchEvent } from '../lib/utils';\n\nexport default class WrappedElement {\n constructor(instance, element, classNames) {\n this.parentInstance = instance;\n this.element = element;\n this.classNames = classNames;\n this.isDisabled = false;\n }\n\n getElement() {\n return this.element;\n }\n\n getValue() {\n return this.element.value;\n }\n\n conceal() {\n // Hide passed input\n this.element.classList.add(\n this.classNames.input,\n this.classNames.hiddenState,\n );\n\n // Remove element from tab index\n this.element.tabIndex = '-1';\n\n // Backup original styles if any\n const origStyle = this.element.getAttribute('style');\n\n if (origStyle) {\n this.element.setAttribute('data-choice-orig-style', origStyle);\n }\n\n this.element.setAttribute('style', 'display:none;');\n this.element.setAttribute('aria-hidden', 'true');\n this.element.setAttribute('data-choice', 'active');\n }\n\n reveal() {\n // Reinstate passed element\n this.element.classList.remove(\n this.classNames.input,\n this.classNames.hiddenState,\n );\n this.element.removeAttribute('tabindex');\n\n // Recover original styles if any\n const origStyle = this.element.getAttribute('data-choice-orig-style');\n\n if (origStyle) {\n this.element.removeAttribute('data-choice-orig-style');\n this.element.setAttribute('style', origStyle);\n } else {\n this.element.removeAttribute('style');\n }\n this.element.removeAttribute('aria-hidden');\n this.element.removeAttribute('data-choice');\n\n // Re-assign values - this is weird, I know\n this.element.value = this.element.value;\n }\n\n enable() {\n this.element.removeAttribute('disabled');\n this.element.disabled = false;\n this.isDisabled = false;\n }\n\n disable() {\n this.element.setAttribute('disabled', '');\n this.element.disabled = true;\n this.isDisabled = true;\n }\n\n triggerEvent(eventType, data) {\n dispatchEvent(this.element, eventType, data);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/components/wrapped-element.js","/*!\n * Flickity v2.0.10\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * http://flickity.metafizzy.co\n * Copyright 2017 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload'\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n})( window, function factory( Flickity ) {\n /*jshint strict: false*/\n return Flickity;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/flickity/js/index.js\n// module id = 16\n// module chunks = 1","/*!\n * getSize v2.0.2\n * measure size of elements\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n/*global define: false, module: false, console: false */\n\n( function( window, factory ) {\n 'use strict';\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( function() {\n return factory();\n });\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\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction 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\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction 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 */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See http://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * WebKit measures the outer-width on style.width on border-box elems\n * IE & 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\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n\n getSize.isBoxSizeOuter = isBoxSizeOuter = getStyleSize( style.width ) == 200;\n body.removeChild( div );\n\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction 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\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\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\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\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\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\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/get-size/get-size.js\n// module id = 17\n// module chunks = 1","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash-es/_Symbol.js\n// module id = 18\n// module chunks = 1","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash-es/isPlainObject.js\n// module id = 19\n// module chunks = 1","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 20\n// module chunks = 1","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(undefined, arguments));\n };\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/es/compose.js\n// module id = 21\n// module chunks = 1","import isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nexport var ActionTypes = {\n INIT: '@@redux/INIT'\n\n /**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n};export default function createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return { unsubscribe: unsubscribe };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/es/createStore.js\n// module id = 22\n// module chunks = 1","import createStore from './createStore';\nimport combineReducers from './combineReducers';\nimport bindActionCreators from './bindActionCreators';\nimport applyMiddleware from './applyMiddleware';\nimport compose from './compose';\nimport warning from './utils/warning';\n\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/es/index.js\n// module id = 23\n// module chunks = 1","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/es/utils/warning.js\n// module id = 24\n// module chunks = 1","/*!\n * Tap listener v2.0.0\n * listens to taps\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: 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( [\n 'unipointer/unipointer'\n ], function( Unipointer ) {\n return factory( window, Unipointer );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('unipointer')\n );\n } else {\n // browser global\n window.TapListener = factory(\n window,\n window.Unipointer\n );\n }\n\n}( window, function factory( window, Unipointer ) {\n\n'use strict';\n\n// -------------------------- TapListener -------------------------- //\n\nfunction TapListener( elem ) {\n this.bindTap( elem );\n}\n\n// inherit Unipointer & EventEmitter\nvar proto = TapListener.prototype = Object.create( Unipointer.prototype );\n\n/**\n * bind tap event to element\n * @param {Element} elem\n */\nproto.bindTap = function( elem ) {\n if ( !elem ) {\n return;\n }\n this.unbindTap();\n this.tapElement = elem;\n this._bindStartEvent( elem, true );\n};\n\nproto.unbindTap = function() {\n if ( !this.tapElement ) {\n return;\n }\n this._bindStartEvent( this.tapElement, true );\n delete this.tapElement;\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n // ignore emulated mouse up clicks\n if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n return;\n }\n\n var pointerPoint = Unipointer.getPointerPoint( pointer );\n var boundingRect = this.tapElement.getBoundingClientRect();\n var scrollX = window.pageXOffset;\n var scrollY = window.pageYOffset;\n // calculate if pointer is inside tapElement\n var isInside = pointerPoint.x >= boundingRect.left + scrollX &&\n pointerPoint.x <= boundingRect.right + scrollX &&\n pointerPoint.y >= boundingRect.top + scrollY &&\n pointerPoint.y <= boundingRect.bottom + scrollY;\n // trigger callback if pointer is inside element\n if ( isInside ) {\n this.emitEvent( 'tap', [ event, pointer ] );\n }\n\n // set flag for emulated clicks 300ms after touchend\n if ( event.type != 'mouseup' ) {\n this.isIgnoringMouseUp = true;\n // reset flag after 300ms\n var _this = this;\n setTimeout( function() {\n delete _this.isIgnoringMouseUp;\n }, 400 );\n }\n};\n\nproto.destroy = function() {\n this.pointerDone();\n this.unbindTap();\n};\n\n// ----- ----- //\n\nreturn TapListener;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/tap-listener/tap-listener.js\n// module id = 25\n// module chunks = 1","/*!\n * Unipointer v2.2.1\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( [\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.Unipointer = factory(\n window,\n window.EvEmitter\n );\n }\n\n}( window, function factory( window, EvEmitter ) {\n\n'use strict';\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n this._bindStartEvent( elem, false );\n};\n\n/**\n * works as unbinder, as you can ._bindStart( false ) to unbind\n * @param {Boolean} isBind - will unbind if falsey\n */\nproto._bindStartEvent = function( elem, isBind ) {\n // munge isBind, default to true\n isBind = isBind === undefined ? true : !!isBind;\n var bindMethod = isBind ? 'addEventListener' : 'removeEventListener';\n\n if ( window.PointerEvent ) {\n // Pointer Events. Chrome 55, IE11, Edge 14\n elem[ bindMethod ]( 'pointerdown', this );\n } else {\n // listen for both, for devices like Chrome Pixel\n elem[ bindMethod ]( 'mousedown', this );\n elem[ bindMethod ]( 'touchstart', this );\n }\n};\n\n// trigger handler methods for events\nproto.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\nproto.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\nproto.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\nproto.ontouchstart = function( event ) {\n this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.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 */\nproto._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\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\n this.pointerDown( event, pointer );\n};\n\nproto.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\nvar postStartEvents = {\n mousedown: [ 'mousemove', 'mouseup' ],\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._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\nproto._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\n delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerMove( event, event );\n }\n};\n\nproto.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 */\nproto._pointerMove = function( event, pointer ) {\n this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerUp( event, event );\n }\n};\n\nproto.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 */\nproto._pointerUp = function( event, pointer ) {\n this._pointerDone();\n this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n // remove events\n this._unbindPostStartEvents();\n this.pointerDone();\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerCancel( event, event );\n }\n};\n\nproto.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 */\nproto._pointerCancel = function( event, pointer ) {\n this._pointerDone();\n this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// ----- ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n};\n\n// ----- ----- //\n\nreturn Unipointer;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/unipointer/unipointer.js\n// module id = 26\n// module chunks = 1","import * as Event from '../tools/Event';\nimport { MQ } from '../tools/MQ';\nimport { fontLoader } from './fontFaceObserver';\nimport { addClass, removeClass, hasClass, getItemsWidth } from '../tools/DOM';\nimport throttle from 'lodash.throttle';\n\n\nexport const init = () => {\n\tconst element = document.querySelector('.m-breadcrumb');\n\n\tif (!element) return;\n\n\tconst VISIBLE_CLASS = 'is-visible';\n\tconst wrap = element.querySelector('.m-breadcrumb__wrap');\n\tconst list = element.querySelector('.m-breadcrumb__list');\n\tconst prev = element.querySelector('.m-breadcrumb__nav--prev');\n\tconst next = element.querySelector('.m-breadcrumb__nav--next');\n\tconst items = [...element.querySelectorAll('.m-breadcrumb__item')];\n\tlet isInit = false;\n\tlet pressInterval;\n\n\tconst checkNav = () => {\n\t\tif (!isInit) return;\n\n\t\tconst maxScroll = wrap.scrollWidth - wrap.clientWidth;\n\t\tconst currentScroll = wrap.scrollLeft;\n\n\t\tif (currentScroll <= 0) {\n\t\t\tremoveClass(prev, VISIBLE_CLASS);\n\t\t} else {\n\t\t\taddClass(prev, VISIBLE_CLASS);\n\t\t}\n\n\t\tif (currentScroll >= maxScroll) {\n\t\t\tremoveClass(next, VISIBLE_CLASS);\n\t\t} else {\n\t\t\taddClass(next, VISIBLE_CLASS);\n\t\t}\n\t};\n\n\tconst init = () => {\n\t\tif (isInit) return;\n\n\t\tcheckNav();\n\n\t\tisInit = true;\n\t};\n\n\tconst destroy = () => {\n\t\tif (!isInit) return;\n\n\t\tremoveClass(prev, VISIBLE_CLASS);\n\t\tremoveClass(next, VISIBLE_CLASS);\n\n\t\tisInit = false;\n\t};\n\n\tconst update = () => {\n\t\tif (MQ('tabletMax')) return;\n\n\t\tconst listWidth = list.offsetWidth;\n\t\tconst itemsWidth = getItemsWidth(items);\n\n\t\tif (itemsWidth > listWidth) {\n\t\t\tinit();\n\t\t} else {\n\t\t\tdestroy();\n\t\t}\n\n\t\tcheckNav();\n\t};\n\n\tconst onPress = (event) => {\n\t\tpressInterval = setInterval(() => {\n\t\t\tconst nav = event.target.closest('.m-breadcrumb__nav');\n\t\t\tlet scrollLeft = 0;\n\n\t\t\tif (hasClass(nav, 'm-breadcrumb__nav--next')) {\n\t\t\t\tscrollLeft = 10;\n\t\t\t} else if (hasClass(nav, 'm-breadcrumb__nav--prev')) {\n\t\t\t\tscrollLeft = -10;\n\t\t\t}\n\n\t\t\twrap.scrollLeft += scrollLeft;\n\t\t}, 20);\n\t};\n\n\tconst onRelease = () => {\n\t\tclearInterval(pressInterval);\n\t};\n\n\n\tfontLoader.then(() => update());\n\n\tEvent.on(window, 'resize', throttle(update, 100));\n\tEvent.on(wrap, 'scroll', throttle(checkNav, 100));\n\tEvent.on(prev, 'click mousedown touchstart', (event) => event.preventDefault());\n\tEvent.on(next, 'click mousedown touchstart', (event) => event.preventDefault());\n\tEvent.on(prev, 'mousedown touchstart', onPress);\n\tEvent.on(next, 'mousedown touchstart', onPress);\n\tEvent.on(prev, 'mouseup mouseleave touchend', onRelease);\n\tEvent.on(next, 'mouseup mouseleave touchend', onRelease);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/breadcrumb.js","import * as Event from '../tools/Event';\nimport { addClass, removeClass } from '../tools/DOM';\nimport Flickity from 'flickity';\n\n\nexport const init = () => {\n\tconst elements = [...document.querySelectorAll('.js-carousel')];\n\n\tconst OPTIONS = {\n\t\tgroupCells: true,\n\t\tcontain: true,\n\t\tpageDots: false,\n\t\tprevNextButtons: false,\n\t};\n\tconst DISABLED_CLASS = 'is-disabled';\n\n\tconst checkArrows = (carousel, arrows) => {\n\t\tconst { prev, next } = arrows;\n\t\tconst slides = carousel.slides.length;\n\t\tconst index = carousel.selectedIndex;\n\n\t\tif (slides === 1) {\n\t\t\tif (next) {\n\t\t\t\taddClass(next, DISABLED_CLASS);\n\t\t\t}\n\t\t\tif (prev) {\n\t\t\t\taddClass(prev, DISABLED_CLASS);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (next) {\n\t\t\tremoveClass(next, DISABLED_CLASS);\n\t\t}\n\t\tif (prev) {\n\t\t\tremoveClass(prev, DISABLED_CLASS);\n\t\t}\n\n\t\tif (index === 0) {\n\t\t\tif (prev) {\n\t\t\t\taddClass(prev, DISABLED_CLASS);\n\t\t\t}\n\t\t} else if (index + 1 === slides) {\n\t\t\tif (next) {\n\t\t\t\taddClass(next, DISABLED_CLASS);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst init = (element) => {\n\t\tconst carousel = new Flickity(element, OPTIONS);\n\t\tconst prev = element.parentNode.querySelector('.arrow--prev');\n\t\tconst next = element.parentNode.querySelector('.arrow--next');\n\n\t\tcheckArrows(carousel, { prev, next });\n\n\t\tcarousel.on('select', () => {\n\t\t\tcheckArrows(carousel, { prev, next });\n\t\t});\n\n\t\tif (next) {\n\t\t\tEvent.on(next, 'click', (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tcarousel.next();\n\t\t\t});\n\t\t}\n\n\t\tif (prev) {\n\t\t\tEvent.on(prev, 'click', (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tcarousel.previous();\n\t\t\t});\n\t\t}\n\t};\n\n\n\telements.forEach(init);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/carousel.js","import * as Event from '../tools/Event';\nimport Flickity from 'flickity';\n\n\nexport const init = () => {\n\tconst elements = [...document.querySelectorAll('.js-carousel-img')];\n\n\tconst OPTIONS = {\n\t\tgroupCells: true,\n\t\tpageDots: false,\n\t\tprevNextButtons: false,\n\t\twrapAround: true,\n\t};\n\n\tconst init = (element) => {\n\t\tconst carousel = new Flickity(element, OPTIONS);\n\t\tconst parentNode = element.parentNode;\n\t\tconst prev = parentNode.querySelector('.c-carousel__prev');\n\t\tconst next = parentNode.querySelector('.c-carousel__next');\n\t\tconst pager = parentNode.querySelector('.c-carousel__pager');\n\t\tconst numOfSlides = carousel.slides.length;\n\n\t\tconst setPager = (index = 1) => pager.innerText = `${index}/${numOfSlides}`;\n\n\t\tsetPager();\n\n\t\tcarousel.on('select', () => {\n\t\t\tconst index = carousel.selectedIndex + 1;\n\n\t\t\tsetPager(index);\n\t\t});\n\n\t\tEvent.on(next, 'click', (event) => {\n\t\t\tevent.preventDefault();\n\t\t\tcarousel.next();\n\t\t});\n\n\t\tEvent.on(prev, 'click', (event) => {\n\t\t\tevent.preventDefault();\n\t\t\tcarousel.previous();\n\t\t});\n\t};\n\n\n\telements.forEach(init);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/carouselImg.js","import flatpickr from 'flatpickr';\nimport { Czech } from 'flatpickr/dist/l10n/cs';\nimport merge from 'deepmerge';\nimport { iconSVG } from '../tools/utils';\nimport { addClass, hasClass, append } from '../tools/DOM';\n\n\nexport const init = () => {\n\tconst elements = [...document.querySelectorAll('.js-datepicker')];\n\n\tconst OPTIONS = {\n\t\tprevArrow: iconSVG('angle-l'),\n\t\tnextArrow: iconSVG('angle-r'),\n\t\ttime_24hr: true,\n\t\tlocale: Czech,\n\t\tanimate: false,\n\t\taltInput: true,\n\t\taltFormat: 'j. F Y',\n\t\tminuteIncrement: 10,\n\t\tdisableMobile: true,\n\t};\n\n\tconst init = (element) => {\n\t\tconst optionsData = element.getAttribute('data-options');\n\t\tconst options = optionsData ? JSON.parse(optionsData)[0] : {};\n\t\tconst datepicker = flatpickr(element, merge(OPTIONS, options.options ? options.options : {}));\n\n\t\tif (datepicker.timeContainer) {\n\t\t\tconst timeArrows = [...datepicker.timeContainer.querySelectorAll('.arrowUp, .arrowDown')];\n\t\t\tconst { hours, minutes } = options.labels;\n\t\t\tconst hourElement = datepicker.hourElement;\n\t\t\tconst minuteElement = datepicker.minuteElement;\n\t\t\tconst hourLabel = document.createElement('span');\n\t\t\tconst minuteLabel = document.createElement('span');\n\n\t\t\taddClass(hourLabel, 'label');\n\t\t\taddClass(minuteLabel, 'label');\n\t\t\thourLabel.textContent = hours;\n\t\t\tminuteLabel.textContent = minutes;\n\n\t\t\tappend(hourLabel, hourElement.parentNode);\n\t\t\tappend(minuteLabel, minuteElement.parentNode);\n\n\t\t\ttimeArrows.forEach((element) => {\n\t\t\t\tlet icon;\n\n\t\t\t\thasClass(element, 'arrowDown') ? icon = 'angle-d' : icon = 'angle-u';\n\n\t\t\t\telement.innerHTML = iconSVG(icon);\n\t\t\t});\n\t\t}\n\n\t\treturn datepicker;\n\t};\n\n\n\telements.forEach(init);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/datepicker.js","import 'lightgallery.js';\nimport { iconSVG } from '../tools/utils';\nimport { addClass, removeClass } from '../tools/DOM';\n\n\nconst lightGallery = window.lightGallery;\n\n\nexport const init = () => {\n\tconst elements = [...document.querySelectorAll('.js-gallery')];\n\n\n\telements.forEach((element) => {\n\t\tlightGallery(element, {\n\t\t\tselector: '[data-gallery]',\n\t\t\tprevHtml: iconSVG('angle-l'),\n\t\t\tnextHtml: iconSVG('angle-r'),\n\t\t});\n\n\t\telement.addEventListener('onAfterOpen', () => {\n\t\t\tconst close = document.querySelector('.lg-close');\n\n\t\t\tclose.innerHTML = iconSVG('close');\n\t\t});\n\n\t\telement.addEventListener('onBeforeSlide', () => {\n\t\t\tconst caption = document.querySelector('.lg-sub-html');\n\n\t\t\taddClass(caption, 'is-hidden');\n\t\t});\n\n\t\telement.addEventListener('onAfterSlide', () => {\n\t\t\tconst caption = document.querySelector('.lg-sub-html');\n\n\t\t\tremoveClass(caption, 'is-hidden');\n\t\t});\n\t});\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/gallery.js","/* global google, InfoBox */\nimport { loadScript, iconSVG, getOption } from '../tools/utils';\nimport 'whatwg-fetch';\n\n\nexport const init = () => {\n\tconst BASE_PATH = getOption('basePath');\n\tconst elements = [...document.querySelectorAll('.b-gmap__holder')];\n\n\tif (!elements.length) return;\n\n\tconst API_KEY = 'AIzaSyDGlupN-YLw9J-0eBQRohCUMMlRh4Jf5TQ';\n\tconst INFOBOX_URL = `${BASE_PATH}js/infobox.js`;\n\tconst SCRIPT_URL = `https://maps.googleapis.com/maps/api/js?key=${API_KEY}`;\n\n\tconst getCoordinates = (address) => {\n\t\tconst url = `https://maps.googleapis.com/maps/api/geocode/json?address=${address}&key=${API_KEY}`;\n\n\t\treturn fetch(url);\n\t};\n\n\tconst getMarkers = (element) => {\n\t\tconst url = element.getAttribute('data-markers');\n\n\t\tif (url) return fetch(url);\n\n\t\treturn false;\n\t};\n\n\tconst getAddress = (element) => {\n\t\tconst address = element.getAttribute('data-address');\n\n\t\tif (address) return encodeURIComponent(address);\n\n\t\treturn false;\n\t};\n\n\tconst initMap = (element) => {\n\t\tconst address = getAddress(element);\n\t\tconst markers = getMarkers(element);\n\n\n\t\tif (address) {\n\t\t\tinitAddress(element, address);\n\t\t} else if (markers) {\n\t\t\tmarkers\n\t\t\t\t.then((response) => {\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\treturn response.json();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then((markers) => {\n\t\t\t\t\tloadScript(INFOBOX_URL, () => initMarkers(element, markers));\n\t\t\t\t});\n\t\t}\n\t};\n\n\tconst initAddress = (element, address) => {\n\t\tconst coordinates = getCoordinates(address);\n\t\tconst zoom = parseInt(element.getAttribute('data-zoom')) || 17;\n\n\t\tcoordinates\n\t\t\t.then((response) => {\n\t\t\t\tif (response.ok) {\n\t\t\t\t\treturn response.json();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.then((data) => {\n\t\t\t\tconst location = data.results[0].geometry.location;\n\n\t\t\t\tconst map = new google.maps.Map(element, {\n\t\t\t\t\tzoom: zoom,\n\t\t\t\t\tcenter: location,\n\t\t\t\t\tdisableDefaultUI: true,\n\t\t\t\t});\n\n\t\t\t\tnew google.maps.Marker({\n\t\t\t\t\tposition: location,\n\t\t\t\t\tmap: map,\n\t\t\t\t});\n\t\t\t});\n\t};\n\n\tconst initMarkers = (element, markers) => {\n\t\tconst MARKER_SQUARE = {\n\t\t\tsize: new google.maps.Size(36, 41),\n\t\t\torigin: new google.maps.Point(0, 0),\n\t\t\tanchor: new google.maps.Point(18, 41),\n\t\t};\n\t\tconst MARKER_ROUND = {\n\t\t\tsize: new google.maps.Size(40, 48),\n\t\t\torigin: new google.maps.Point(0, 0),\n\t\t\tanchor: new google.maps.Point(20, 48),\n\t\t};\n\t\tconst MARKER_TYPES = [\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/vut.svg`,\n\t\t\t\tsize: MARKER_SQUARE.size,\n\t\t\t\torigin: MARKER_SQUARE.origin,\n\t\t\t\tanchor: MARKER_SQUARE.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/fa.svg`,\n\t\t\t\tsize: MARKER_SQUARE.size,\n\t\t\t\torigin: MARKER_SQUARE.origin,\n\t\t\t\tanchor: MARKER_SQUARE.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/fekt.svg`,\n\t\t\t\tsize: MARKER_SQUARE.size,\n\t\t\t\torigin: MARKER_SQUARE.origin,\n\t\t\t\tanchor: MARKER_SQUARE.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/fch.svg`,\n\t\t\t\tsize: MARKER_SQUARE.size,\n\t\t\t\torigin: MARKER_SQUARE.origin,\n\t\t\t\tanchor: MARKER_SQUARE.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/fit.svg`,\n\t\t\t\tsize: MARKER_SQUARE.size,\n\t\t\t\torigin: MARKER_SQUARE.origin,\n\t\t\t\tanchor: MARKER_SQUARE.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/fast.svg`,\n\t\t\t\tsize: MARKER_SQUARE.size,\n\t\t\t\torigin: MARKER_SQUARE.origin,\n\t\t\t\tanchor: MARKER_SQUARE.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/fp.svg`,\n\t\t\t\tsize: MARKER_SQUARE.size,\n\t\t\t\torigin: MARKER_SQUARE.origin,\n\t\t\t\tanchor: MARKER_SQUARE.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/fsi.svg`,\n\t\t\t\tsize: MARKER_SQUARE.size,\n\t\t\t\torigin: MARKER_SQUARE.origin,\n\t\t\t\tanchor: MARKER_SQUARE.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/favu.svg`,\n\t\t\t\tsize: MARKER_SQUARE.size,\n\t\t\t\torigin: MARKER_SQUARE.origin,\n\t\t\t\tanchor: MARKER_SQUARE.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/usi.svg`,\n\t\t\t\tsize: MARKER_SQUARE.size,\n\t\t\t\torigin: MARKER_SQUARE.origin,\n\t\t\t\tanchor: MARKER_SQUARE.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/sti.svg`,\n\t\t\t\tsize: MARKER_SQUARE.size,\n\t\t\t\torigin: MARKER_SQUARE.origin,\n\t\t\t\tanchor: MARKER_SQUARE.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/cesa.svg`,\n\t\t\t\tsize: MARKER_SQUARE.size,\n\t\t\t\torigin: MARKER_SQUARE.origin,\n\t\t\t\tanchor: MARKER_SQUARE.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/sport.svg`,\n\t\t\t\tsize: MARKER_ROUND.size,\n\t\t\t\torigin: MARKER_ROUND.origin,\n\t\t\t\tanchor: MARKER_ROUND.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/cafeteria.svg`,\n\t\t\t\tsize: MARKER_ROUND.size,\n\t\t\t\torigin: MARKER_ROUND.origin,\n\t\t\t\tanchor: MARKER_ROUND.anchor,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: `${BASE_PATH}img/bg/markers/dormitory.svg`,\n\t\t\t\tsize: MARKER_ROUND.size,\n\t\t\t\torigin: MARKER_ROUND.origin,\n\t\t\t\tanchor: MARKER_ROUND.anchor,\n\t\t\t},\n\t\t];\n\n\t\tconst center = new google.maps.LatLng(markers[0].location[0], markers[0].location[1]);\n\t\tconst bounds = new google.maps.LatLngBounds();\n\t\tconst map = new google.maps.Map(element, {\n\t\t\tzoom: 14,\n\t\t\tcenter: center,\n\t\t\tdisableDefaultUI: true,\n\t\t});\n\t\tconst infos = [];\n\n\t\tmarkers.forEach((markerData) => {\n\t\t\tconst markerPos = new google.maps.LatLng(markerData.location[0], markerData.location[1]);\n\t\t\tconst markerType = markerData.type ? MARKER_TYPES[markerData.type] : MARKER_TYPES[0];\n\t\t\tconst marker = new google.maps.Marker({\n\t\t\t\tposition: markerPos,\n\t\t\t\tmap: map,\n\t\t\t\ticon: markerType,\n\t\t\t});\n\t\t\tlet infoContent = '';\n\n\t\t\tmarkerData.places.forEach((place) => {\n\t\t\t\tinfoContent += `
\n\t\t\t\t\t\t${place.img ? `\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t` : ''}\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t

${place.name}

\n\n\t\t\t\t\t\t\t${place.address ? `\n\t\t\t\t\t\t\t\t

${place.address}

\n\t\t\t\t\t\t\t` : ''}\n\n\t\t\t\t\t\t\t${place.tel || place.email || place.web ? `\n\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t${place.tel ? `\n\t\t\t\t\t\t\t\t\t\t${place.tel}
\n\t\t\t\t\t\t\t\t\t` : ''}\n\n\t\t\t\t\t\t\t\t\t${place.email ? `\n\t\t\t\t\t\t\t\t\t\t${place.email}
\n\t\t\t\t\t\t\t\t\t` : ''}\n\n\t\t\t\t\t\t\t\t\t${place.web ? `\n\t\t\t\t\t\t\t\t\t\t${place.web}\n\t\t\t\t\t\t\t\t\t` : ''}\n\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t` : ''}\n\t\t\t\t\t\t
\n\t\t\t\t\t
`;\n\t\t\t});\n\n\t\t\tconst info = new InfoBox({\n\t\t\t\tcontent: `
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t${infoContent}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t${iconSVG('close')}\n\t\t\t\t\t\t\t\tZavřít\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
`,\n\t\t\t\tpixelOffset: new google.maps.Size(50, -75),\n\t\t\t\tinfoBoxClearance: new google.maps.Size(20, 20),\n\t\t\t\tcloseBoxURL: `${BASE_PATH}img/bg/close.gif`,\n\t\t\t});\n\n\t\t\tinfos.push(info);\n\n\t\t\tmarker.addListener('click', () => {\n\t\t\t\tinfos.forEach((item) => item.close());\n\n\t\t\t\tinfo.open(map, marker);\n\t\t\t});\n\t\t\tbounds.extend(markerPos);\n\t\t});\n\n\t\tmap.fitBounds(bounds);\n\t};\n\n\tconst onLoad = () => elements.forEach(initMap);\n\n\tloadScript(SCRIPT_URL, onLoad);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/gmap.js","import Headroom from 'headroom.js';\nimport * as Event from '../tools/Event';\nimport { MQ } from '../tools/MQ';\nimport { addClass, removeClass } from '../tools/DOM';\nimport throttle from 'lodash.throttle';\n\n\nexport const init = () => {\n\tconst OPTIONS = {\n\t\ttolerance: {\n\t\t\tdown: 10,\n\t\t\tup: 20,\n\t\t},\n\t\toffset: 200,\n\t};\n\tconst FIXED_CLASS = 'header-fixed';\n\tconst header = document.querySelector('.header');\n\tconst html = document.documentElement;\n\tconst headroom = new Headroom(header, OPTIONS);\n\tlet isInit = false;\n\n\tconst prepare = () => {\n\t\tconst isMobile = MQ('tabletMax');\n\n\t\tif (isMobile) {\n\t\t\tinit();\n\t\t} else {\n\t\t\tdestroy();\n\t\t}\n\t};\n\n\tconst init = () => {\n\t\tif (isInit) return;\n\n\t\theadroom.init();\n\t\taddClass(html, FIXED_CLASS);\n\t\tisInit = true;\n\t};\n\n\tconst destroy = () => {\n\t\tif (!isInit) return;\n\n\t\theadroom.destroy();\n\t\tremoveClass(html, FIXED_CLASS);\n\t\tisInit = false;\n\t};\n\n\n\tprepare();\n\n\tEvent.on(window, 'resize', throttle(prepare, 100));\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/header.js","import tippy from 'tippy.js';\n\n\nexport const init = () => {\n\tconst elements = [...document.querySelectorAll('.js-hint')];\n\n\tconst OPTIONS = {\n\t\tarrow: true,\n\t\tinteractive: true,\n\t\tduration: 300,\n\t\tposition: 'right-start',\n\t};\n\n\tconst init = (element) => tippy(element, OPTIONS);\n\n\n\telements.forEach(init);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/hint.js","import * as Event from '../tools/Event';\nimport { addClass, removeClass } from '../tools/DOM';\n\n\nexport const init = () => {\n\tconst labels = [...document.querySelectorAll('.inp__label--inside')];\n\tconst ACTIVE_CLASS = 'is-active';\n\tconst DISABLED_CLASS = 'is-disabled';\n\n\tconst init = (label) => {\n\t\tconst id = label.getAttribute('for');\n\t\tconst input = document.querySelector(`[id='${id}']`);\n\t\tconst placeholder = input.getAttribute('placeholder');\n\n\t\tconst onChange = () => {\n\t\t\tconst value = input.value;\n\n\t\t\tif (value === placeholder) return;\n\n\t\t\tif (value) {\n\t\t\t\taddClass(label, ACTIVE_CLASS);\n\t\t\t} else {\n\t\t\t\tremoveClass(label, ACTIVE_CLASS);\n\t\t\t}\n\t\t};\n\n\t\tconst onFocusIn = () => {\n\t\t\taddClass(label, ACTIVE_CLASS);\n\t\t};\n\n\t\tconst onFocusOut = () => {\n\t\t\tif (input.value === '') {\n\t\t\t\tremoveClass(label, ACTIVE_CLASS);\n\t\t\t}\n\t\t};\n\n\t\tconst checkDisabled = () => {\n\t\t\tconst isDisabled = input.hasAttribute('disabled');\n\n\t\t\tif (isDisabled) {\n\t\t\t\taddClass(label, DISABLED_CLASS);\n\t\t\t}\n\t\t};\n\n\n\t\tif (input.tagName === 'INPUT') {\n\t\t\tonChange();\n\t\t}\n\n\t\tcheckDisabled();\n\n\t\tEvent.on(input, 'change', onChange);\n\t\tEvent.on(input, 'focusin', onFocusIn);\n\t\tEvent.on(input, 'focusout', onFocusOut);\n\t};\n\n\n\tlabels.forEach(init);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/label.js","import { addClass } from '../tools/DOM';\n\n\nexport const init = () => {\n\tconst element = document.querySelector('.header__logo-main');\n\tconst sign = document.querySelector('.header__logo-sign');\n\n\tif (!element) return;\n\n\tconst timeout = element.getAttribute('data-timeout') || 3000;\n\n\tconst init = () => {\n\t\taddClass(element, 'is-hidden');\n\n\t\tif (sign) {\n\t\t\taddClass(sign, 'is-visible');\n\t\t}\n\t};\n\n\n\tsetTimeout(init, timeout);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/logo.js","import Macy from 'macy';\nimport getScrollbarWidth from 'get-scrollbar-width';\nimport { getBreakpoint } from '../tools/MQ';\nimport { fontLoader } from './fontFaceObserver';\n\n\nexport const init = () => {\n\tconst element = document.querySelectorAll('.js-macy');\n\n\tif (!element.length) return;\n\n\tconst SCROLLBAR_WIDTH = getScrollbarWidth();\n\tconst DESKTOP_BP = getBreakpoint('desktopMin') - SCROLLBAR_WIDTH - 1;\n\tconst TABLET_BP = getBreakpoint('tabletMin') - SCROLLBAR_WIDTH - 1;\n\tconst OPTIONS = {\n\t\tcontainer: '.js-macy',\n\t\tcolumns: 3,\n\t\tbreakAt: {},\n\t\ttrueOrder: true,\n\t};\n\tOPTIONS.breakAt[DESKTOP_BP] = { columns: 2 };\n\tOPTIONS.breakAt[TABLET_BP] = { columns: 1 };\n\n\tconst macy = Macy(OPTIONS);\n\n\tconst recalculate = () => macy.recalculate(true, true);\n\n\tfontLoader.then(() => recalculate());\n\n\tmacy.runOnImageLoad(() => {\n\t\trecalculate();\n\t});\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/macy.js","import * as Event from '../tools/Event';\nimport { addClass, removeClass, hasClass } from '../tools/DOM';\nimport { MQ } from '../tools/MQ';\n\n\nexport const init = () => {\n\tconst SCROLLABLE_SELECTOR = '.m-main__list--main';\n\tconst ITEM_SELECTOR = '.m-main__item';\n\tconst TOGGLE_SELECTOR = '.m-main__toggle';\n\tconst TOGGLE_USER_MENU_SELECTOR = '.js-user-menu';\n\tconst SUBMENU_SELECTOR = '.m-main__submenu';\n\tconst MENU_SELECTOR = '.m-main';\n\tconst FOCUSED_CLASS = 'is-focused';\n\tconst OPENED_CLASS = 'is-opened';\n\tconst HTML_OPENED_CLASS = 'menu-opened';\n\tconst html = document.documentElement;\n\tconst items = [...document.querySelectorAll(ITEM_SELECTOR)];\n\tlet isDragging = false;\n\n\tconst onMouseover = (event) => {\n\t\tconst item = event.target.closest(ITEM_SELECTOR);\n\t\tconst submenu = item.querySelector(SUBMENU_SELECTOR);\n\n\t\tif (!submenu) return;\n\n\t\tsubmenu.style.left = '';\n\n\t\tconst menu = item.closest(MENU_SELECTOR);\n\t\tconst submenuBox = submenu.getBoundingClientRect();\n\t\tconst menuBox = menu.getBoundingClientRect();\n\t\tconst diff = submenuBox.right - menuBox.right;\n\t\tconst isBleeding = diff > 0;\n\n\n\t\titems.forEach((item) => {\n\t\t\tconst link = item.querySelector('.m-main__link');\n\n\t\t\tremoveClass(item, FOCUSED_CLASS);\n\t\t\tlink.blur();\n\t\t});\n\n\t\tif (isBleeding) {\n\t\t\tsubmenu.style.left = `-${diff}px`;\n\t\t}\n\t};\n\n\tconst onFocusIn = (event) => {\n\t\tif (MQ('desktopMax')) return;\n\n\t\tonMouseover(event);\n\n\t\tconst item = event.target.closest(ITEM_SELECTOR);\n\n\t\taddClass(item, FOCUSED_CLASS);\n\t};\n\n\tconst onFocusOut = (event) => {\n\t\tif (MQ('desktopMax')) return;\n\n\t\tconst item = event.target.closest(ITEM_SELECTOR);\n\n\t\tremoveClass(item, FOCUSED_CLASS);\n\t};\n\n\tconst onToggle = (event) => {\n\t\tevent.preventDefault();\n\t\tconst menu = event.target.closest(MENU_SELECTOR);\n\t\tconst isOpened = hasClass(menu, OPENED_CLASS);\n\n\t\tif (isOpened) {\n\t\t\tclose(menu);\n\t\t} else {\n\t\t\topen(menu);\n\t\t}\n\t};\n\n\tconst onToggleUserMenu = (event) => {\n\t\tevent.preventDefault();\n\t\tconst submenu = event.target.closest(ITEM_SELECTOR).querySelector(SUBMENU_SELECTOR);\n\t\tconst isOpened = hasClass(submenu, OPENED_CLASS);\n\n\t\tif (isOpened) {\n\t\t\tcloseUserMenu(submenu);\n\t\t} else {\n\t\t\topenUserMenu(submenu);\n\t\t}\n\t};\n\n\tconst closeUserMenu = (submenu) => {\n\t\tremoveClass(submenu, OPENED_CLASS);\n\t};\n\n\tconst openUserMenu = (submenu) => {\n\t\tconst menu = document.querySelector(MENU_SELECTOR);\n\n\t\tclose(menu);\n\t\taddClass(submenu, OPENED_CLASS);\n\t};\n\n\tconst close = (menu) => {\n\t\tconst scrollable = menu.querySelector(SCROLLABLE_SELECTOR);\n\n\t\tif (scrollable) {\n\t\t\tscrollable.style.maxHeight = '';\n\t\t}\n\n\t\tremoveClass(menu, OPENED_CLASS);\n\t\tremoveClass(html, HTML_OPENED_CLASS);\n\t};\n\n\tconst open = (menu) => {\n\t\tconst menuHeight = document.querySelector('.header__menu').offsetHeight;\n\t\tconst maxHeight = window.innerHeight - menuHeight;\n\n\t\tmenu.querySelector(SCROLLABLE_SELECTOR).style.maxHeight = `${maxHeight}px`;\n\n\t\taddClass(menu, OPENED_CLASS);\n\t\taddClass(html, HTML_OPENED_CLASS);\n\t};\n\n\tconst onTouchend = (event) => {\n\t\tconst submenu = [...document.querySelectorAll(SUBMENU_SELECTOR)];\n\t\tconst isSubmenu = event.target.closest(SUBMENU_SELECTOR);\n\t\tconst isToggleUserMenu = event.target.closest(TOGGLE_USER_MENU_SELECTOR);\n\n\t\tif (!isSubmenu && !isToggleUserMenu) {\n\t\t\tsubmenu.forEach(closeUserMenu);\n\t\t}\n\n\t\tif (isDragging) return;\n\n\t\tconst menu = [...document.querySelectorAll(MENU_SELECTOR)];\n\t\tconst isMenu = event.target.closest(MENU_SELECTOR);\n\n\t\tif (!isMenu) {\n\t\t\tmenu.forEach(close);\n\t\t}\n\t};\n\n\tconst preventBodyScroll = (event) => {\n\t\tisDragging = true;\n\n\t\tconst isMenuOpened = hasClass(html, HTML_OPENED_CLASS);\n\n\n\t\tif (isMenuOpened) {\n\t\t\tconst scrollable = event.target.closest(SCROLLABLE_SELECTOR);\n\n\t\t\tif (scrollable) {\n\t\t\t\tconst scrollableHeight = scrollable.scrollHeight;\n\t\t\t\tconst offsetHeight = scrollable.offsetHeight;\n\n\t\t\t\tif (scrollableHeight > offsetHeight) return;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tconst preventMenuOverscroll = (event) => {\n\t\tconst scrollable = event.target.closest(SCROLLABLE_SELECTOR);\n\t\tconst scrolled = scrollable.scrollTop;\n\t\tconst isTop = scrolled === 0;\n\t\tconst isBottom = scrollable.scrollHeight === scrollable.scrollTop + scrollable.offsetHeight;\n\n\n\t\tif (isTop) {\n\t\t\tscrollable.scrollTop = 1;\n\t\t} else if (isBottom) {\n\t\t\tscrollable.scrollTop -= 1;\n\t\t}\n\t};\n\n\n\titems.forEach((item) => {\n\t\tEvent.on(item, 'mouseenter', onMouseover);\n\t\tEvent.on(item, 'focusin', onFocusIn);\n\t\tEvent.on(item, 'focusout', onFocusOut);\n\t});\n\tEvent.on(document, 'click', onToggle, TOGGLE_SELECTOR);\n\tEvent.on(document, 'click', onToggleUserMenu, TOGGLE_USER_MENU_SELECTOR);\n\tEvent.on(document, 'touchstart', () => { isDragging = false; });\n\tEvent.on(document, 'touchend click', onTouchend);\n\tEvent.on(document, 'touchmove', preventBodyScroll);\n\tEvent.on(html, 'touchstart', preventMenuOverscroll, SCROLLABLE_SELECTOR);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/menuMain.js","import * as Event from '../tools/Event';\nimport { fontLoader } from './fontFaceObserver';\nimport { addClass, removeClass, getItemsWidth } from '../tools/DOM';\nimport throttle from 'lodash.throttle';\n\n\nexport const init = () => {\n\tconst elements = [...document.querySelectorAll('.m-main--sub')];\n\n\tconst prepare = (element) => {\n\t\tconst LEFT_SCROLLABLE_CLASS = 'is-left-scrollable';\n\t\tconst RIGHT_SCROLLABLE_CLASS = 'is-right-scrollable';\n\t\tconst wrap = element.querySelector('.m-main__wrap');\n\t\tconst items = [...element.querySelectorAll('.m-main__item')];\n\t\tlet isInit = false;\n\n\t\tconst init = () => {\n\t\t\tif (isInit) return;\n\n\t\t\tcheckNav();\n\n\t\t\tisInit = true;\n\t\t};\n\n\t\tconst update = () => {\n\t\t\tconst wrapWidth = wrap.offsetWidth;\n\t\t\tconst itemsWidth = getItemsWidth(items);\n\n\t\t\tif (itemsWidth > wrapWidth) {\n\t\t\t\tinit();\n\t\t\t} else {\n\t\t\t\tdestroy();\n\t\t\t}\n\n\t\t\tcheckNav();\n\t\t};\n\n\t\tconst destroy = () => {\n\t\t\tif (!isInit) return;\n\n\t\t\tremoveClass(element, LEFT_SCROLLABLE_CLASS);\n\t\t\tremoveClass(element, RIGHT_SCROLLABLE_CLASS);\n\n\t\t\tisInit = false;\n\t\t};\n\n\t\tconst checkNav = () => {\n\t\t\tif (!isInit) return;\n\n\t\t\tconst maxScroll = wrap.scrollWidth - wrap.clientWidth;\n\t\t\tconst currentScroll = wrap.scrollLeft;\n\n\t\t\tif (currentScroll <= 0) {\n\t\t\t\tremoveClass(element, LEFT_SCROLLABLE_CLASS);\n\t\t\t} else {\n\t\t\t\taddClass(element, LEFT_SCROLLABLE_CLASS);\n\t\t\t}\n\n\t\t\tif (currentScroll >= maxScroll) {\n\t\t\t\tremoveClass(element, RIGHT_SCROLLABLE_CLASS);\n\t\t\t} else {\n\t\t\t\taddClass(element, RIGHT_SCROLLABLE_CLASS);\n\t\t\t}\n\t\t};\n\n\n\t\tfontLoader.then(() => update());\n\n\t\tEvent.on(window, 'resize', throttle(update, 100));\n\t\tEvent.on(wrap, 'scroll', throttle(checkNav, 100));\n\t};\n\n\n\telements.forEach(prepare);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/menuMainSub.js","import * as Event from '../tools/Event';\nimport { fontLoader } from './fontFaceObserver';\nimport { addClass, removeClass, getItemsWidth } from '../tools/DOM';\nimport throttle from 'lodash.throttle';\n\n\nexport const init = () => {\n\tconst elements = [...document.querySelectorAll('.m-tabs')];\n\n\tconst prepare = (element) => {\n\t\tconst LEFT_SCROLLABLE_CLASS = 'is-left-scrollable';\n\t\tconst RIGHT_SCROLLABLE_CLASS = 'is-right-scrollable';\n\t\tconst wrap = element.querySelector('.m-tabs__wrap');\n\t\tconst items = [...element.querySelectorAll('.m-tabs__item')];\n\t\tlet isInit = false;\n\n\t\tconst init = () => {\n\t\t\tif (isInit) return;\n\n\t\t\tcheckNav();\n\n\t\t\tisInit = true;\n\t\t};\n\n\t\tconst update = () => {\n\t\t\tconst wrapWidth = wrap.offsetWidth;\n\t\t\tconst itemsWidth = getItemsWidth(items);\n\n\t\t\tif (itemsWidth > wrapWidth) {\n\t\t\t\tinit();\n\t\t\t} else {\n\t\t\t\tdestroy();\n\t\t\t}\n\n\t\t\tcheckNav();\n\t\t};\n\n\t\tconst destroy = () => {\n\t\t\tif (!isInit) return;\n\n\t\t\tremoveClass(element, LEFT_SCROLLABLE_CLASS);\n\t\t\tremoveClass(element, RIGHT_SCROLLABLE_CLASS);\n\n\t\t\tisInit = false;\n\t\t};\n\n\t\tconst checkNav = () => {\n\t\t\tif (!isInit) return;\n\n\t\t\tconst maxScroll = wrap.scrollWidth - wrap.clientWidth;\n\t\t\tconst currentScroll = wrap.scrollLeft;\n\n\t\t\tif (currentScroll <= 0) {\n\t\t\t\tremoveClass(element, LEFT_SCROLLABLE_CLASS);\n\t\t\t} else {\n\t\t\t\taddClass(element, LEFT_SCROLLABLE_CLASS);\n\t\t\t}\n\n\t\t\tif (currentScroll >= maxScroll) {\n\t\t\t\tremoveClass(element, RIGHT_SCROLLABLE_CLASS);\n\t\t\t} else {\n\t\t\t\taddClass(element, RIGHT_SCROLLABLE_CLASS);\n\t\t\t}\n\t\t};\n\n\n\t\tfontLoader.then(() => update());\n\n\t\tEvent.on(window, 'resize', throttle(update, 100));\n\t\tEvent.on(wrap, 'scroll', throttle(checkNav, 100));\n\t};\n\n\n\telements.forEach(prepare);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/menuTabs.js","import * as Event from '../tools/Event';\nimport { addClass, removeClass } from '../tools/DOM';\nimport { MQ } from '../tools/MQ';\nimport throttle from 'lodash.throttle';\n\n\nexport const init = () => {\n\tconst menu = document.querySelector('.b-profile__nav');\n\tconst FIXED_CLASS = 'is-fixed';\n\tlet offset = 0;\n\tlet isInit = false;\n\n\tif (!menu) return;\n\n\tconst init = () => {\n\t\tremoveClass(menu, FIXED_CLASS);\n\t\tisInit = false;\n\n\t\tif (MQ('tabletMax')) return;\n\n\t\tconst height = window.innerHeight;\n\t\toffset = menu.offsetTop + menu.offsetHeight;\n\n\t\tif (offset > height) {\n\t\t\taddClass(menu, FIXED_CLASS);\n\t\t\tisInit = true;\n\t\t}\n\n\t\tonScroll();\n\t};\n\n\tconst onScroll = () => {\n\t\tif (!isInit) return;\n\n\t\tconst scrolled = (document.documentElement.scrollTop || document.body.scrollTop || 0) + window.innerHeight;\n\n\n\t\tif (scrolled >= offset) {\n\t\t\tremoveClass(menu, FIXED_CLASS);\n\t\t} else {\n\t\t\taddClass(menu, FIXED_CLASS);\n\t\t}\n\t};\n\n\n\tinit();\n\n\tEvent.on(window, 'resize', throttle(init, 100));\n\tEvent.on(window, 'scroll', throttle(onScroll, 100));\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/profile.js","import $ from 'jquery';\nimport { fontLoader } from './fontFaceObserver';\nimport 'nanoscroller';\nimport throttle from 'lodash.throttle';\n\n\nexport const init = () => {\n\tconst $win = $(window);\n\tconst $scroll = $('.scroll');\n\tconst BOTTOM_CLASS = 'is-bottom';\n\tconst OPTIONS = {\n\t\tcontentClass: 'scroll__content',\n\t\tsliderClass: 'scroll__slider',\n\t\tpaneClass: 'scroll__pane',\n\t};\n\n\tconst onUpdate = (event, values) => {\n\t\tconst $scroll = $(event.currentTarget);\n\t\tconst { position, maximum } = values;\n\n\t\tcheckBottom($scroll, position, maximum);\n\t};\n\n\tconst checkBottom = ($scroll, position, maximum) => {\n\t\tif (position === maximum) {\n\t\t\t$scroll.addClass(BOTTOM_CLASS);\n\t\t} else {\n\t\t\t$scroll.removeClass(BOTTOM_CLASS);\n\t\t}\n\t};\n\n\tconst checkScroll = () => {\n\t\trequestAnimationFrame(() => {\n\t\t\t$scroll.each((_, item) => {\n\t\t\t\tconst $scroll = $(item);\n\t\t\t\tconst $pane = $scroll.find('.scroll__pane');\n\t\t\t\tconst isPaneVisible = $pane.is(':visible');\n\t\t\t\tlet maximum = 0;\n\n\t\t\t\tif (isPaneVisible) {\n\t\t\t\t\tmaximum = 1;\n\t\t\t\t}\n\n\t\t\t\tcheckBottom($scroll, 0, maximum);\n\t\t\t});\n\t\t});\n\t};\n\n\n\tfontLoader.then(() => {\n\t\t$scroll\n\t\t\t.nanoScroller(OPTIONS)\n\t\t\t.on('update', onUpdate);\n\n\t\tcheckScroll();\n\t});\n\n\n\t$win.on('resize', throttle(checkScroll, 100));\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/scroll.js","import Choices from '../vendor/choices/choices';\nimport { addClass } from '../tools/DOM';\n\n\nexport const init = () => {\n\tconst elements = [...document.querySelectorAll('.js-select')];\n\n\tconst OPTIONS = {\n\t\tsearchEnabled: false,\n\t\tsearchChoices: false,\n\t\tshouldSort: false,\n\t};\n\n\n\tconst init = (element) => {\n\t\tconst select = new Choices(element, OPTIONS);\n\t\tconst placeholder = select.itemList.element.querySelector('.choices__placeholder');\n\t\tconst id = select.passedElement.element.getAttribute('id');\n\t\tconst label = document.querySelector(`[for='${id}']`);\n\n\n\t\tif (!placeholder) {\n\t\t\taddClass(label, 'is-active');\n\t\t}\n\n\t\tselect.passedElement.element.addEventListener('choice', (event) => {\n\t\t\tconst isPlaceholder = event.detail.choice.placeholder;\n\n\t\t\tif (!isPlaceholder) {\n\t\t\t\taddClass(label, 'is-active');\n\t\t\t}\n\t\t});\n\n\t\treturn select;\n\t};\n\n\n\telements.forEach(init);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/select.js","import * as Event from '../tools/Event';\nimport { MQ } from '../tools/MQ';\nimport { scrollTo } from '../tools/utils';\n\n\nexport const init = () => {\n\tconst SELECTOR = '[data-slide]';\n\n\tconst onClick = (event) => {\n\t\tconst element = event.target.closest(SELECTOR);\n\t\tconst isMobile = MQ('tabletMax');\n\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tconst target = document.querySelector(element.getAttribute('data-slide'));\n\n\t\tif (target) {\n\t\t\tscrollTo(target, isMobile)\n\t\t\t\t.then(() => element.blur());\n\t\t}\n\t};\n\n\n\tEvent.on(document, 'click', onClick, SELECTOR);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/slideLink.js","import * as Event from '../tools/Event';\nimport { fontLoader } from './fontFaceObserver';\nimport { addClass, removeClass, append, remove, createElement, wrap } from '../tools/DOM';\nimport throttle from 'lodash.throttle';\n\n\nexport const init = () => {\n\tconst elements = [...document.querySelectorAll('.table-responsive')];\n\n\tconst prepare = (element) => {\n\t\tconst LEFT_SCROLLABLE_CLASS = 'is-left-scrollable';\n\t\tconst RIGHT_SCROLLABLE_CLASS = 'is-right-scrollable';\n\t\tconst table = element.querySelector('table');\n\t\tconst holder = createElement('div', 'table-responsive__holder');\n\t\tconst gradientLeft = createElement('div', 'table-responsive__gradient table-responsive__gradient--left');\n\t\tconst gradientRight = createElement('div', 'table-responsive__gradient table-responsive__gradient--right');\n\t\tlet isInit = false;\n\n\t\tconst init = () => {\n\t\t\tif (isInit) return;\n\n\t\t\tcheckTable();\n\n\t\t\tisInit = true;\n\t\t};\n\n\t\tconst update = () => {\n\t\t\tconst holderWidth = holder.offsetWidth;\n\t\t\tconst tableWidth = table.offsetWidth;\n\n\t\t\tif (tableWidth > holderWidth) {\n\t\t\t\tinit();\n\t\t\t} else {\n\t\t\t\tdestroy();\n\t\t\t}\n\n\t\t\tcheckTable();\n\t\t};\n\n\t\tconst destroy = () => {\n\t\t\tif (!isInit) return;\n\n\t\t\tremoveClass(element, LEFT_SCROLLABLE_CLASS);\n\t\t\tremoveClass(element, RIGHT_SCROLLABLE_CLASS);\n\t\t\tremove(gradientLeft);\n\t\t\tremove(gradientRight);\n\n\t\t\tisInit = false;\n\t\t};\n\n\t\tconst checkTable = () => {\n\t\t\tif (!isInit) return;\n\n\t\t\tconst maxScroll = holder.scrollWidth - holder.clientWidth;\n\t\t\tconst currentScroll = holder.scrollLeft;\n\n\t\t\tif (currentScroll <= 0) {\n\t\t\t\tremoveClass(element, LEFT_SCROLLABLE_CLASS);\n\t\t\t\tremove(gradientLeft);\n\t\t\t} else {\n\t\t\t\taddClass(element, LEFT_SCROLLABLE_CLASS);\n\t\t\t\tappend(gradientLeft, element);\n\t\t\t}\n\n\t\t\tif (currentScroll >= maxScroll) {\n\t\t\t\tremoveClass(element, RIGHT_SCROLLABLE_CLASS);\n\t\t\t\tremove(gradientRight);\n\t\t\t} else {\n\t\t\t\taddClass(element, RIGHT_SCROLLABLE_CLASS);\n\t\t\t\tappend(gradientRight, element);\n\t\t\t}\n\t\t};\n\n\n\t\twrap(table, holder);\n\n\t\tfontLoader.then(() => update());\n\n\t\tEvent.on(window, 'resize', throttle(update, 100));\n\t\tEvent.on(holder, 'scroll', throttle(checkTable, 100));\n\t};\n\n\n\telements.forEach(prepare);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/tableResponsive.js","import * as Event from '../tools/Event';\nimport { MQ } from '../tools/MQ';\nimport { scrollTo } from '../tools/utils';\n\n\nexport const init = () => {\n\tconst TAB_SELECTOR = '[role=\"tab\"]';\n\tconst TABLIST_SELECTOR = '[role=\"tablist\"]';\n\tconst CONTROLS_ATTR = 'aria-controls';\n\tconst SELECTED_ATTR = 'aria-selected';\n\tconst HIDDEN_ATTR = 'aria-hidden';\n\tconst hash = window.location.hash;\n\tlet initialPanel = null;\n\n\tif (hash && hash !== '#') {\n\t\tinitialPanel = document.querySelector(hash);\n\t}\n\n\tconst changeHashWithoutJump = (hash) => {\n\t\tif (history.pushState) {\n\t\t\thistory.pushState(null, null, `#${hash}`);\n\t\t} else {\n\t\t\twindow.location.hash = hash;\n\t\t}\n\t};\n\n\tconst setTabSelected = (tab, state) => {\n\t\tif (!tab) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (state) {\n\t\t\ttab.setAttribute(SELECTED_ATTR, state);\n\t\t} else {\n\t\t\ttab.removeAttribute(SELECTED_ATTR);\n\t\t}\n\t};\n\n\tconst setPanelVisible = (panel, state) => {\n\t\tif (!panel) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (state) {\n\t\t\tpanel.removeAttribute(HIDDEN_ATTR);\n\t\t} else {\n\t\t\tpanel.setAttribute(HIDDEN_ATTR, true);\n\t\t}\n\t};\n\n\tconst getTab = (panel) => document.querySelector(`[${CONTROLS_ATTR}='${panel.getAttribute('id')}']`);\n\n\tconst getSiblingTabs = (tab) => [...tab.closest(TABLIST_SELECTOR).querySelectorAll(TAB_SELECTOR)];\n\n\tconst getPanel = (tab) => document.querySelector(`#${tab.getAttribute(CONTROLS_ATTR)}`);\n\n\tconst getSiblingPanels = (tabs) => [...tabs].map(getPanel);\n\n\tconst changeTab = (tab) => {\n\t\tconst tabs = getSiblingTabs(tab);\n\t\tconst panel = getPanel(tab);\n\t\tconst panels = getSiblingPanels(tabs);\n\t\tconst hash = panel.getAttribute('id');\n\n\t\ttabs.forEach((tab) => setTabSelected(tab, false));\n\t\tpanels.forEach((panel) => setPanelVisible(panel, false));\n\n\t\tsetTabSelected(tab, true);\n\t\tsetPanelVisible(panel, true);\n\t\tchangeHashWithoutJump(hash);\n\t};\n\n\tconst setPanelInitial = (panel) => {\n\t\tconst tab = getTab(panel);\n\t\tconst isMobile = MQ('tabletMax');\n\n\t\tchangeTab(tab);\n\n\t\tscrollTo(panel, isMobile)\n\t\t\t.then(() => panel.focus());\n\t};\n\n\tconst onTabClick = (event) => {\n\t\tevent.preventDefault();\n\n\t\tconst tab = event.target.closest(TAB_SELECTOR);\n\t\tconst panel = getPanel(tab);\n\t\tconst isMobile = MQ('tabletMax');\n\t\tconst profileNav = tab.closest('.b-profile__nav.is-fixed');\n\n\t\tchangeTab(tab);\n\n\t\tif (panel.getBoundingClientRect().top < 0 || profileNav) {\n\t\t\tscrollTo(panel, isMobile)\n\t\t\t\t.then(() => panel.focus());\n\t\t}\n\t};\n\n\tconst onHashChange = () => {\n\t\tconst hash = window.location.hash;\n\t\tconst tablists = [...document.querySelectorAll(TABLIST_SELECTOR)];\n\t\tlet tabs = [];\n\n\t\ttablists.forEach((tablist) => {\n\t\t\ttabs.push(tablist.querySelector(TAB_SELECTOR));\n\t\t});\n\n\t\tif (hash !== '') {\n\t\t\ttabs = [document.querySelector(`${TAB_SELECTOR}[href=\"${hash}\"]`)];\n\t\t}\n\n\t\ttabs.forEach(changeTab);\n\t};\n\n\n\tif (initialPanel && initialPanel.getAttribute('role') === 'tabpanel') {\n\t\tsetPanelInitial(initialPanel);\n\t}\n\n\tEvent.on(document, 'click', onTabClick, TAB_SELECTOR);\n\tEvent.on(window, 'hashchange', onHashChange);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/tabs.js","import * as Event from '../tools/Event';\nimport Scroll from '../vendor/scroll-js';\nimport { addClass, removeClass } from '../tools/DOM';\n\n\nexport const init = () => {\n\tconst SELECTOR = '.js-top';\n\tconst VISIBLE_CLASS = 'is-visible';\n\tconst element = document.querySelector(SELECTOR);\n\tconst scroll = new Scroll(document.body);\n\n\tif (!element) return;\n\n\tconst onClick = (event) => {\n\t\tevent.preventDefault();\n\n\t\tscroll\n\t\t\t.to(0, 0, {\n\t\t\t\teasing: 'easeInCubic',\n\t\t\t});\n\t};\n\n\tconst checkVisible = () => {\n\t\tconst height = document.body.scrollHeight;\n\t\tconst scrolled = document.documentElement.scrollTop || document.body.scrollTop || 0;\n\t\tconst isPageShort = height <= 2500;\n\t\tconst isScrolled = scrolled > 200;\n\n\t\tremoveClass(element, VISIBLE_CLASS);\n\n\t\tif (isPageShort) return;\n\n\t\tif (isScrolled) {\n\t\t\taddClass(element, VISIBLE_CLASS);\n\t\t}\n\t};\n\n\n\tcheckVisible();\n\n\tEvent.on(document, 'click', onClick, SELECTOR);\n\tEvent.on(window, 'resize scroll', checkVisible);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/toTop.js","import * as Event from '../tools/Event';\nimport { hasClass, addClass, removeClass } from '../tools/DOM';\nimport { MQ } from '../tools/MQ';\n\n\nexport const init = () => {\n\tconst SELECTOR = '.js-toggle';\n\tconst OPENED_CLASS = 'is-opened';\n\tconst ACTIVE_CLASS = 'is-active';\n\tconst TOGGLE_SELECTOR = '[data-toggle]';\n\tconst TOGGLEABLE_ATTR = 'data-toggleable';\n\tconst TOGGLEABLE_SELECTOR = `[${TOGGLEABLE_ATTR}]`;\n\tconst TRANSITION_DURATION = 300;\n\tlet isAnimating = false;\n\tlet isDragging = false;\n\n\tconst onClick = (event) => {\n\t\tevent.preventDefault();\n\n\t\tif (isAnimating || isDragging) return;\n\n\t\tconst link = event.target.closest(SELECTOR);\n\n\t\tif (hasClass(link, 'footer__title') && MQ('tabletMin')) return;\n\n\t\tconst href = link.getAttribute('href');\n\t\tlet isSimple = false;\n\t\tlet item;\n\n\n\t\tif (!!href && href !== '#') {\n\t\t\titem = document.querySelector(href);\n\t\t\tisSimple = true;\n\t\t} else {\n\t\t\titem = link.closest(TOGGLE_SELECTOR);\n\t\t\tisAnimating = true;\n\t\t}\n\n\t\tconst isOpened = hasClass(item, OPENED_CLASS);\n\n\t\tif (isOpened) {\n\t\t\tclose(item, isSimple);\n\t\t\tremoveClass(link, ACTIVE_CLASS);\n\t\t} else {\n\t\t\topen(item, isSimple);\n\t\t\taddClass(link, ACTIVE_CLASS);\n\t\t}\n\n\t\tswitchLabel(link);\n\t\tresetHeight(item.querySelector(TOGGLEABLE_SELECTOR));\n\t};\n\n\tconst switchLabel = (link) => {\n\t\tconst newLabel = link.getAttribute('data-less');\n\t\tconst labelElement = link.querySelector('.link-more__label');\n\n\t\tif (!newLabel && !labelElement) return;\n\n\t\tconst oldLabel = labelElement.innerText;\n\n\t\tlabelElement.innerText = newLabel;\n\t\tlink.setAttribute('data-less', oldLabel);\n\t};\n\n\tconst open = (item, isSimple) => {\n\t\tif (isSimple) {\n\t\t\tconst focus = item.querySelector('[data-focus]');\n\n\t\t\taddClass(item, OPENED_CLASS);\n\n\t\t\tif (focus) {\n\t\t\t\tsetTimeout(() => focus.focus(), 300);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst more = item.querySelector(TOGGLEABLE_SELECTOR);\n\t\tconst height = more.scrollHeight;\n\n\t\taddClass(item, OPENED_CLASS);\n\t\tmore.style.height = `${height}px`;\n\t};\n\n\tconst close = (item, isSimple) => {\n\t\tif (isSimple) {\n\t\t\tremoveClass(item, OPENED_CLASS);\n\t\t\treturn;\n\t\t}\n\n\t\tconst more = item.querySelector(TOGGLEABLE_SELECTOR);\n\t\tconst height = more.scrollHeight;\n\n\t\tmore.style.height = `${height}px`;\n\n\t\tsetTimeout(() => {\n\t\t\tremoveClass(item, OPENED_CLASS);\n\t\t\tmore.style.height = '0px';\n\t\t}, 20);\n\t};\n\n\tconst resetHeight = (item) => setTimeout(() => {\n\t\tif (!item) return;\n\n\t\titem.style.height = '';\n\t\tisAnimating = false;\n\t}, TRANSITION_DURATION);\n\n\n\tEvent.on(document, 'touchstart', () => { isDragging = false; }, SELECTOR);\n\tEvent.on(document, 'touchmove', () => { isDragging = true; }, SELECTOR);\n\tEvent.on(document, 'click touchend', onClick, SELECTOR);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/toggle.js","import * as Event from '../tools/Event';\nimport { addClass, removeClass, hasClass } from '../tools/DOM';\n\n\nexport const init = () => {\n\tconst SELECTOR_TRIGGER = '[data-tooltip]';\n\tconst SELECTOR = '.tooltip';\n\tconst OPENED_CLASS = 'is-opened';\n\n\tconst isOpened = (target) => hasClass(target, OPENED_CLASS);\n\n\tconst getOpened = () => [...document.querySelectorAll(SELECTOR)].filter(isOpened);\n\n\tconst getLinks = (target) => [...document.querySelectorAll(`[data-tooltip=\"#${target.getAttribute('id')}\"]`)];\n\n\tconst open = (target) => {\n\t\tconst links = getLinks(target);\n\t\taddClass(target, OPENED_CLASS);\n\n\t\tlinks.forEach((link) => addClass(link, OPENED_CLASS));\n\n\t};\n\n\tconst close = (target) => {\n\t\tconst links = getLinks(target);\n\t\tremoveClass(target, OPENED_CLASS);\n\n\t\tlinks.forEach((link) => removeClass(link, OPENED_CLASS));\n\t};\n\n\tconst onClick = (event) => {\n\t\tconst element = event.target.closest(SELECTOR_TRIGGER);\n\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tconst target = document.querySelector(element.getAttribute('data-tooltip'));\n\n\t\tif (isOpened(target)) {\n\t\t\tclose(target);\n\t\t} else {\n\t\t\topen(target);\n\t\t}\n\n\t\tconst openedTooltips = getOpened().filter((element) => element !== target);\n\n\t\topenedTooltips.forEach(close);\n\t};\n\n\tconst onAwayClick = (event) => {\n\t\tconst element = event.target.closest(SELECTOR_TRIGGER) || event.target.closest(SELECTOR);\n\n\t\tif (element) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst openedTooltips = getOpened();\n\n\t\topenedTooltips.forEach(close);\n\t};\n\n\tEvent.on(document, 'click', onClick, SELECTOR_TRIGGER);\n\tEvent.on(document, 'click', onAwayClick);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/tooltip.js","import * as Event from '../tools/Event';\nimport { scrollTo } from '../tools/utils';\nimport { MQ } from '../tools/MQ';\n\n\nexport const init = () => {\n\tconst elements = [...document.querySelectorAll('.js-years')];\n\tconst MENU_ATTR = 'data-menu';\n\tconst HIDDEN_ATTR = 'aria-hidden';\n\n\tconst init = (element) => {\n\t\tconst prev = element.querySelector('.link-nav--prev');\n\t\tconst next = element.querySelector('.link-nav--next');\n\t\tconst prevLabel = prev.querySelector('.link-nav__label');\n\t\tconst nextLabel = next.querySelector('.link-nav__label');\n\t\tconst items = [...element.querySelectorAll(`[${MENU_ATTR}]`)];\n\t\tconst itemsNumber = items.length;\n\t\tlet lastItem = items.filter((item) => item.getAttribute(HIDDEN_ATTR) !== 'true');\n\t\tlet lastIndex = items.indexOf(lastItem[0]);\n\n\t\tconst getIndex = (step) => (lastIndex + step + itemsNumber) % itemsNumber;\n\n\t\tconst setFocus = (element) => {\n\t\t\tsetTimeout(() => {\n\t\t\t\telement.focus();\n\t\t\t}, 100);\n\t\t};\n\n\t\tconst scrollToTop = (scrollable) => {\n\t\t\tif (!scrollable) return;\n\n\t\t\tscrollable.scrollTop = 0;\n\n\n\t\t\tif (scrollable.getBoundingClientRect().top < 0 && MQ('tabletMin')) {\n\t\t\t\tscrollTo(scrollable)\n\t\t\t\t\t.then(() => setFocus(scrollable));\n\t\t\t} else {\n\t\t\t\tsetFocus(scrollable);\n\t\t\t}\n\t\t};\n\n\t\tconst setVisibility = (lastIndex) => (item, index) => {\n\t\t\tif (index === lastIndex) {\n\t\t\t\titem.removeAttribute(HIDDEN_ATTR);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\titem.setAttribute(HIDDEN_ATTR, 'true');\n\t\t};\n\n\t\tconst setNavLabel = (item, label) => item.textContent = label;\n\n\t\tconst goTo = (step) => {\n\t\t\tif (itemsNumber <= 2) {\n\t\t\t\tswitch (step) {\n\t\t\t\t\tcase -1:\n\t\t\t\t\t\tlastIndex = 0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tlastIndex = 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlastIndex = getIndex(step);\n\t\t\t\tconst prevItem = items[getIndex(-1)];\n\t\t\t\tconst nextItem = items[getIndex(1)];\n\n\t\t\t\tsetNavLabel(prevLabel, prevItem.getAttribute(MENU_ATTR));\n\t\t\t\tsetNavLabel(nextLabel, nextItem.getAttribute(MENU_ATTR));\n\t\t\t}\n\n\t\t\tlastItem = items[lastIndex];\n\t\t\tconst scrollable = lastItem.querySelector('.scroll__content');\n\n\t\t\tscrollToTop(scrollable);\n\t\t\titems.forEach(setVisibility(lastIndex));\n\t\t};\n\n\t\tEvent.on(next, 'click', (event) => {\n\t\t\tevent.preventDefault();\n\t\t\tgoTo(1);\n\t\t});\n\n\t\tEvent.on(prev, 'click', (event) => {\n\t\t\tevent.preventDefault();\n\t\t\tgoTo(-1);\n\t\t});\n\t};\n\n\n\telements.forEach(init);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/years.js","import * as basiclightbox from 'basiclightbox';\nimport * as Event from '../tools/Event';\nimport { iconSVG } from '../tools/utils';\n\n\nexport const init = () => {\n\tconst VIDEO_ATTR = 'data-youtube';\n\tconst VIDEO_SELECTOR = `[${VIDEO_ATTR}]`;\n\tconst VIDEO_ID = '{{ videoID }}';\n\tconst CLOSE_SELECTOR = '.basicLightbox__close';\n\tconst TEMPLATE = `\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\tZavřít\n\t\t\t${iconSVG('close')}\n\t\t\n\t`;\n\tlet lightbox;\n\n\tconst onOpen = (event) => {\n\t\tevent.preventDefault();\n\n\t\tconst target = event.target.closest(VIDEO_SELECTOR);\n\t\tconst videoID = target.getAttribute(VIDEO_ATTR);\n\t\tconst template = TEMPLATE.replace(VIDEO_ID, videoID);\n\n\t\tlightbox = basiclightbox.create(template);\n\t\tlightbox.show();\n\t};\n\n\tconst onClose = (event) => {\n\t\tevent.preventDefault();\n\n\t\tlightbox.close();\n\t};\n\n\n\tEvent.on(document, 'click', onOpen, VIDEO_SELECTOR);\n\tEvent.on(document, 'click', onClose, CLOSE_SELECTOR);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/youtube.js","// Components\nimport * as fontFaceObserver from './components/fontFaceObserver';\nimport * as gmap from './components/gmap';\nimport * as scroll from './components/scroll';\nimport * as slideLink from './components/slideLink';\nimport * as carousel from './components/carousel';\nimport * as tooltip from './components/tooltip';\nimport * as breadcrumb from './components/breadcrumb';\nimport * as menuMainSub from './components/menuMainSub';\nimport * as macy from './components/macy';\nimport * as tabs from './components/tabs';\nimport * as years from './components/years';\nimport * as datepicker from './components/datepicker';\nimport * as select from './components/select';\nimport * as toTop from './components/toTop';\nimport * as toggle from './components/toggle';\nimport * as youtube from './components/youtube';\nimport * as gallery from './components/gallery';\nimport * as menuMain from './components/menuMain';\nimport * as header from './components/header';\nimport * as hint from './components/hint';\nimport * as profile from './components/profile';\nimport * as logo from './components/logo';\nimport * as label from './components/label';\nimport * as carouselImg from './components/carouselImg';\nimport * as tableResponsive from './components/tableResponsive';\nimport * as menuTabs from './components/menuTabs';\n\nconst components = [\n\tfontFaceObserver,\n\tgmap,\n\tscroll,\n\tslideLink,\n\tcarousel,\n\ttooltip,\n\tbreadcrumb,\n\tmenuMainSub,\n\tmacy,\n\ttabs,\n\tyears,\n\tdatepicker,\n\tselect,\n\ttoTop,\n\ttoggle,\n\tyoutube,\n\tgallery,\n\tmenuMain,\n\theader,\n\thint,\n\tprofile,\n\tlogo,\n\tlabel,\n\tcarouselImg,\n\ttableResponsive,\n\tmenuTabs,\n];\n\nwindow.App = {\n\trun(options) {\n\t\tthis.options = options;\n\n\t\tcomponents.forEach(this.initComponent);\n\t},\n\n\tinitComponent(component) {\n\t\treturn component.init();\n\t},\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/app.js","import { ACTION_TYPES } from './../constants';\n\nexport const addChoice = (\n value,\n label,\n id,\n groupId,\n disabled,\n elementId,\n customProperties,\n placeholder,\n keyCode,\n) => ({\n type: ACTION_TYPES.ADD_CHOICE,\n value,\n label,\n id,\n groupId,\n disabled,\n elementId,\n customProperties,\n placeholder,\n keyCode,\n});\n\nexport const filterChoices = results => ({\n type: ACTION_TYPES.FILTER_CHOICES,\n results,\n});\n\nexport const activateChoices = (active = true) => ({\n type: ACTION_TYPES.ACTIVATE_CHOICES,\n active,\n});\n\nexport const clearChoices = () => ({\n type: ACTION_TYPES.CLEAR_CHOICES,\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/actions/choices.js","import { ACTION_TYPES } from './../constants';\n\n/* eslint-disable import/prefer-default-export */\nexport const addGroup = (value, id, active, disabled) => ({\n type: ACTION_TYPES.ADD_GROUP,\n value,\n id,\n active,\n disabled,\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/actions/groups.js","import { ACTION_TYPES } from './../constants';\n\nexport const addItem = (\n value,\n label,\n id,\n choiceId,\n groupId,\n customProperties,\n placeholder,\n keyCode,\n) => ({\n type: ACTION_TYPES.ADD_ITEM,\n value,\n label,\n id,\n choiceId,\n groupId,\n customProperties,\n placeholder,\n keyCode,\n});\n\nexport const removeItem = (id, choiceId) => ({\n type: ACTION_TYPES.REMOVE_ITEM,\n id,\n choiceId,\n});\n\nexport const highlightItem = (id, highlighted) => ({\n type: ACTION_TYPES.HIGHLIGHT_ITEM,\n id,\n highlighted,\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/actions/items.js","/* eslint-disable import/prefer-default-export */\nexport const clearAll = () => ({\n type: 'CLEAR_ALL',\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/actions/misc.js","import Fuse from 'fuse.js';\nimport Store from './store/store';\nimport Dropdown from './components/dropdown';\nimport Container from './components/container';\nimport Input from './components/input';\nimport List from './components/list';\nimport WrappedInput from './components/wrapped-input';\nimport WrappedSelect from './components/wrapped-select';\nimport { DEFAULT_CONFIG, DEFAULT_CLASSNAMES, EVENTS, KEY_CODES, SCROLLING_SPEED } from './constants';\nimport { TEMPLATES } from './templates';\nimport { addChoice, filterChoices, activateChoices, clearChoices } from './actions/choices';\nimport { addItem, removeItem, highlightItem } from './actions/items';\nimport { addGroup } from './actions/groups';\nimport { clearAll } from './actions/misc';\nimport {\n isScrolledIntoView,\n getAdjacentEl,\n wrap,\n getType,\n isType,\n isElement,\n strToEl,\n extend,\n sortByAlpha,\n sortByScore,\n generateId,\n findAncestorByAttrName,\n regexFilter,\n} from './lib/utils';\n// import './lib/polyfills';\n\n/**\n * Choices\n */\nexport default class Choices {\n constructor(element = '[data-choice]', userConfig = {}) {\n // If there are multiple elements, create a new instance\n // for each element besides the first one (as that already has an instance)\n if (isType('String', element)) {\n const elements = document.querySelectorAll(element);\n if (elements.length > 1) {\n for (let i = 1; i < elements.length; i += 1) {\n const el = elements[i];\n /* eslint-disable no-new */\n new Choices(el, userConfig);\n }\n }\n }\n\n const defaultConfig = {\n ...DEFAULT_CONFIG,\n items: [],\n choices: [],\n classNames: DEFAULT_CLASSNAMES,\n sortFilter: sortByAlpha,\n };\n\n // Merge options with user options\n this.config = extend(defaultConfig, Choices.userDefaults, userConfig);\n\n if (!['auto', 'always'].includes(this.config.renderSelectedChoices)) {\n this.config.renderSelectedChoices = 'auto';\n }\n\n // Create data store\n this.store = new Store(this.render);\n\n // State tracking\n this.initialised = false;\n this.currentState = {};\n this.prevState = {};\n this.currentValue = '';\n\n // Retrieve triggering element (i.e. element with 'data-choice' trigger)\n const passedElement = isType('String', element) ? document.querySelector(element) : element;\n\n this.isTextElement = passedElement.type === 'text';\n this.isSelectOneElement = passedElement.type === 'select-one';\n this.isSelectMultipleElement = passedElement.type === 'select-multiple';\n this.isSelectElement = this.isSelectOneElement || this.isSelectMultipleElement;\n this.isValidElementType = this.isTextElement || this.isSelectElement;\n\n if (this.isTextElement) {\n this.passedElement = new WrappedInput(this, passedElement, this.config.classNames);\n } else if (this.isSelectElement) {\n this.passedElement = new WrappedSelect(this, passedElement, this.config.classNames);\n }\n\n if (!this.passedElement) {\n if (!this.config.silent) {\n console.error('Passed element not found');\n }\n return false;\n }\n\n this.isIe11 = !!(navigator.userAgent.match(/Trident/) && navigator.userAgent.match(/rv[ :]11/));\n this.isScrollingOnIe = false;\n\n if (this.config.shouldSortItems === true && this.isSelectOneElement) {\n if (!this.config.silent) {\n console.warn(\n 'shouldSortElements: Type of passed element is \\'select-one\\', falling back to false.',\n );\n }\n }\n\n this.highlightPosition = 0;\n this.canSearch = this.config.searchEnabled;\n\n this.placeholder = false;\n if (!this.isSelectOneElement) {\n this.placeholder = this.config.placeholder ?\n (this.config.placeholderValue || this.passedElement.element.getAttribute('placeholder')) :\n false;\n }\n\n // Assign preset choices from passed object\n this.presetChoices = this.config.choices;\n // Assign preset items from passed object first\n this.presetItems = this.config.items;\n\n // Then add any values passed from attribute\n if (this.passedElement.getValue()) {\n this.presetItems = this.presetItems.concat(\n this.passedElement.getValue().split(this.config.delimiter),\n );\n }\n\n // Set unique base Id\n this.baseId = generateId(this.passedElement.element, 'choices-');\n\n this.idNames = {\n itemChoice: 'item-choice',\n };\n\n // Bind methods\n this.render = this.render.bind(this);\n\n // Bind event handlers\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n this._onKeyUp = this._onKeyUp.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onTouchMove = this._onTouchMove.bind(this);\n this._onTouchEnd = this._onTouchEnd.bind(this);\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onMouseOver = this._onMouseOver.bind(this);\n\n // Monitor touch taps/scrolls\n this.wasTap = true;\n\n // Cutting the mustard\n const cuttingTheMustard = 'classList' in document.documentElement;\n if (!cuttingTheMustard && !this.config.silent) {\n console.error('Choices: Your browser doesn\\'t support Choices');\n }\n\n const canInit = isElement(this.passedElement.element) && this.isValidElementType;\n\n if (canInit) {\n // If element has already been initialised with Choices\n if (this.passedElement.element.getAttribute('data-choice') === 'active') {\n return false;\n }\n\n // Let's go\n this.init();\n } else if (!this.config.silent) {\n console.error('Incompatible input passed');\n }\n }\n\n /* ========================================\n = Public functions =\n ======================================== */\n\n /**\n * Initialise Choices\n * @return\n * @public\n */\n init() {\n if (this.initialised) {\n return;\n }\n\n // Set initialise flag\n this.initialised = true;\n // Create required elements\n this._createTemplates();\n // Generate input markup\n this._createInput();\n // Subscribe store to render method\n this.store.subscribe(this.render);\n // Render any items\n this.render();\n // Trigger event listeners\n this._addEventListeners();\n\n const callback = this.config.callbackOnInit;\n // Run callback if it is a function\n if (callback && isType('Function', callback)) {\n callback.call(this);\n }\n }\n\n /**\n * Destroy Choices and nullify values\n * @return\n * @public\n */\n destroy() {\n if (!this.initialised) {\n return;\n }\n\n // Remove all event listeners\n this._removeEventListeners();\n this.passedElement.reveal();\n this.containerOuter.revert(this.passedElement.element);\n\n // Clear data store\n this.clearStore();\n\n // Nullify instance-specific data\n this.config.templates = null;\n\n // Uninitialise\n this.initialised = false;\n }\n\n /**\n * Render group choices into a DOM fragment and append to choice list\n * @param {Array} groups Groups to add to list\n * @param {Array} choices Choices to add to groups\n * @param {DocumentFragment} fragment Fragment to add groups and options to (optional)\n * @return {DocumentFragment} Populated options fragment\n * @private\n */\n renderGroups(groups, choices, fragment) {\n const groupFragment = fragment || document.createDocumentFragment();\n const filter = this.config.sortFilter;\n const getGroupChoices = group => choices.filter((choice) => {\n if (this.isSelectOneElement) {\n return choice.groupId === group.id;\n }\n return choice.groupId === group.id && (this.config.renderSelectedChoices === 'always' || !choice.selected);\n });\n\n // If sorting is enabled, filter groups\n if (this.config.shouldSort) {\n groups.sort(filter);\n }\n\n groups.forEach((group) => {\n const groupChoices = getGroupChoices(group);\n\n if (groupChoices.length >= 1) {\n const dropdownGroup = this._getTemplate('choiceGroup', group);\n groupFragment.appendChild(dropdownGroup);\n this.renderChoices(groupChoices, groupFragment, true);\n }\n });\n\n return groupFragment;\n }\n\n /**\n * Render choices into a DOM fragment and append to choice list\n * @param {Array} choices Choices to add to list\n * @param {DocumentFragment} fragment Fragment to add choices to (optional)\n * @return {DocumentFragment} Populated choices fragment\n * @private\n */\n renderChoices(choices, fragment, withinGroup = false) {\n // Create a fragment to store our list items (so we don't have to update the DOM for each item)\n const choicesFragment = fragment || document.createDocumentFragment();\n const { renderSelectedChoices, searchResultLimit, renderChoiceLimit } = this.config;\n const filter = this.isSearching ? sortByScore : this.config.sortFilter;\n const appendChoice = (choice) => {\n const shouldRender = renderSelectedChoices === 'auto' ?\n (this.isSelectOneElement || !choice.selected) :\n true;\n if (shouldRender) {\n const dropdownItem = this._getTemplate('choice', choice, this.config.itemSelectText);\n choicesFragment.appendChild(dropdownItem);\n }\n };\n\n let rendererableChoices = choices;\n\n if (renderSelectedChoices === 'auto' && !this.isSelectOneElement) {\n rendererableChoices = choices.filter(choice => !choice.selected);\n }\n\n // Split array into placeholders and \"normal\" choices\n const { placeholderChoices, normalChoices } = rendererableChoices.reduce((acc, choice) => {\n if (choice.placeholder) {\n acc.placeholderChoices.push(choice);\n } else {\n acc.normalChoices.push(choice);\n }\n return acc;\n }, { placeholderChoices: [], normalChoices: [] });\n\n // If sorting is enabled or the user is searching, filter choices\n if (this.config.shouldSort || this.isSearching) {\n normalChoices.sort(filter);\n }\n\n let choiceLimit = rendererableChoices.length;\n\n // Prepend placeholeder\n const sortedChoices = [...placeholderChoices, ...normalChoices];\n\n if (this.isSearching) {\n choiceLimit = searchResultLimit;\n } else if (renderChoiceLimit > 0 && !withinGroup) {\n choiceLimit = renderChoiceLimit;\n }\n\n // Add each choice to dropdown within range\n for (let i = 0; i < choiceLimit; i += 1) {\n if (sortedChoices[i]) {\n appendChoice(sortedChoices[i]);\n }\n }\n\n return choicesFragment;\n }\n\n /**\n * Render items into a DOM fragment and append to items list\n * @param {Array} items Items to add to list\n * @param {DocumentFragment} [fragment] Fragment to add items to (optional)\n * @return\n * @private\n */\n renderItems(items, fragment = null) {\n // Create fragment to add elements to\n const itemListFragment = fragment || document.createDocumentFragment();\n\n // If sorting is enabled, filter items\n if (this.config.shouldSortItems && !this.isSelectOneElement) {\n items.sort(this.config.sortFilter);\n }\n\n if (this.isTextElement) {\n // Simplify store data to just values\n const itemsFiltered = this.store.getItemsReducedToValues(items);\n const itemsFilteredString = itemsFiltered.join(this.config.delimiter);\n\n // Update the value of the hidden input\n this.passedElement.setValue(itemsFilteredString);\n } else {\n const selectedOptionsFragment = document.createDocumentFragment();\n const addOptionToFragment = (item) => {\n // Create a standard select option\n const option = this._getTemplate('option', item);\n // Append it to fragment\n selectedOptionsFragment.appendChild(option);\n };\n\n // Add each list item to list\n items.forEach(item => addOptionToFragment(item));\n // Update the options of the hidden input\n this.passedElement.setOptions(selectedOptionsFragment);\n }\n\n const addItemToFragment = (item) => {\n // Create new list element\n const listItem = this._getTemplate('item', item, this.config.removeItemButton);\n // Append it to list\n itemListFragment.appendChild(listItem);\n };\n\n // Add each list item to list\n items.forEach(item => addItemToFragment(item));\n\n return itemListFragment;\n }\n\n /**\n * Render DOM with values\n * @return\n * @private\n */\n render() {\n this.currentState = this.store.getState();\n const stateChanged = (\n this.currentState.choices !== this.prevState.choices ||\n this.currentState.groups !== this.prevState.groups ||\n this.currentState.items !== this.prevState.items\n );\n\n if (!stateChanged) {\n return;\n }\n\n /* Choices */\n\n if (this.isSelectElement) {\n // Get active groups/choices\n const activeGroups = this.store.getGroupsFilteredByActive();\n const activeChoices = this.store.getChoicesFilteredByActive();\n\n let choiceListFragment = document.createDocumentFragment();\n\n // Clear choices\n this.choiceList.clear();\n\n // Scroll back to top of choices list\n if (this.config.resetScrollPosition) {\n this.choiceList.scrollTo(0);\n }\n\n // If we have grouped options\n if (activeGroups.length >= 1 && !this.isSearching) {\n // If we have a placeholder choice along with groups\n const activePlaceholders = activeChoices.filter(\n activeChoice => activeChoice.placeholder === true && activeChoice.groupId === -1,\n );\n if (activePlaceholders.length >= 1) {\n choiceListFragment = this.renderChoices(activePlaceholders, choiceListFragment);\n }\n choiceListFragment = this.renderGroups(activeGroups, activeChoices, choiceListFragment);\n } else if (activeChoices.length >= 1) {\n choiceListFragment = this.renderChoices(activeChoices, choiceListFragment);\n }\n\n const activeItems = this.store.getItemsFilteredByActive();\n const canAddItem = this._canAddItem(activeItems, this.input.getValue());\n\n // If we have choices to show\n if (choiceListFragment.childNodes && choiceListFragment.childNodes.length > 0) {\n // ...and we can select them\n if (canAddItem.response) {\n // ...append them and highlight the first choice\n this.choiceList.append(choiceListFragment);\n this._highlightChoice();\n } else {\n // ...otherwise show a notice\n this.choiceList.append(this._getTemplate('notice', canAddItem.notice));\n }\n } else {\n // Otherwise show a notice\n let dropdownItem;\n let notice;\n\n if (this.isSearching) {\n notice = isType('Function', this.config.noResultsText) ?\n this.config.noResultsText() :\n this.config.noResultsText;\n\n dropdownItem = this._getTemplate('notice', notice, 'no-results');\n } else {\n notice = isType('Function', this.config.noChoicesText) ?\n this.config.noChoicesText() :\n this.config.noChoicesText;\n\n dropdownItem = this._getTemplate('notice', notice, 'no-choices');\n }\n\n this.choiceList.append(dropdownItem);\n }\n }\n\n /* Items */\n\n // Get active items (items that can be selected)\n const activeItems = this.store.getItemsFilteredByActive() || [];\n // Clear list\n this.itemList.clear();\n\n if (activeItems.length) {\n // Create a fragment to store our list items\n // (so we don't have to update the DOM for each item)\n const itemListFragment = this.renderItems(activeItems);\n\n // If we have items to add\n if (itemListFragment.childNodes) {\n // Update list\n this.itemList.append(itemListFragment);\n }\n }\n\n this.prevState = this.currentState;\n }\n\n /**\n * Select item (a selected item can be deleted)\n * @param {Element} item Element to select\n * @param {Boolean} [runEvent=true] Whether to trigger 'highlightItem' event\n * @return {Object} Class instance\n * @public\n */\n highlightItem(item, runEvent = true) {\n if (!item) {\n return this;\n }\n\n const id = item.id;\n const groupId = item.groupId;\n const group = groupId >= 0 ? this.store.getGroupById(groupId) : null;\n\n this.store.dispatch(\n highlightItem(id, true),\n );\n\n if (runEvent) {\n const eventResponse = {\n id,\n value: item.value,\n label: item.label,\n };\n\n if (group && group.value) {\n eventResponse.groupValue = group.value;\n }\n\n this.passedElement.triggerEvent(EVENTS.highlightItem, eventResponse);\n }\n\n return this;\n }\n\n /**\n * Deselect item\n * @param {Element} item Element to de-select\n * @return {Object} Class instance\n * @public\n */\n unhighlightItem(item) {\n if (!item) {\n return this;\n }\n\n const id = item.id;\n const groupId = item.groupId;\n const group = groupId >= 0 ? this.store.getGroupById(groupId) : null;\n const eventResponse = {\n id,\n value: item.value,\n label: item.label,\n };\n\n if (group && group.value) {\n eventResponse.groupValue = group.value;\n }\n\n this.store.dispatch(highlightItem(id, false));\n this.passedElement.triggerEvent(EVENTS.highlightItem, eventResponse);\n\n return this;\n }\n\n /**\n * Highlight items within store\n * @return {Object} Class instance\n * @public\n */\n highlightAll() {\n const items = this.store.getItems();\n items.forEach(item => this.highlightItem(item));\n return this;\n }\n\n /**\n * Deselect items within store\n * @return {Object} Class instance\n * @public\n */\n unhighlightAll() {\n const items = this.store.getItems();\n items.forEach(item => this.unhighlightItem(item));\n return this;\n }\n\n /**\n * Remove an item from the store by its value\n * @param {String} value Value to search for\n * @return {Object} Class instance\n * @public\n */\n removeItemsByValue(value) {\n if (!value || !isType('String', value)) {\n return this;\n }\n\n const items = this.store.getItemsFilteredByActive();\n\n items.forEach((item) => {\n if (item.value === value) {\n this._removeItem(item);\n }\n });\n\n return this;\n }\n\n /**\n * Remove all items from store array\n * @note Removed items are soft deleted\n * @param {Number} excludedId Optionally exclude item by ID\n * @return {Object} Class instance\n * @public\n */\n removeActiveItems(excludedId) {\n const items = this.store.getItemsFilteredByActive();\n\n items.forEach((item) => {\n if (item.active && excludedId !== item.id) {\n this._removeItem(item);\n }\n });\n\n return this;\n }\n\n /**\n * Remove all selected items from store\n * @note Removed items are soft deleted\n * @return {Object} Class instance\n * @public\n */\n removeHighlightedItems(runEvent = false) {\n const items = this.store.getItemsFilteredByActive();\n\n items.forEach((item) => {\n if (item.highlighted && item.active) {\n this._removeItem(item);\n // If this action was performed by the user\n // trigger the event\n if (runEvent) {\n this._triggerChange(item.value);\n }\n }\n });\n\n return this;\n }\n\n /**\n * Show dropdown to user by adding active state class\n * @return {Object} Class instance\n * @public\n */\n showDropdown(focusInput = false) {\n if (this.dropdown.isActive) {\n return this;\n }\n\n this.containerOuter.open(this.dropdown.getVerticalPos());\n this.dropdown.show();\n this.input.activate(focusInput);\n this.passedElement.triggerEvent(EVENTS.showDropdown, {});\n\n return this;\n }\n\n /**\n * Hide dropdown from user\n * @return {Object} Class instance\n * @public\n */\n hideDropdown(blurInput = false) {\n if (!this.dropdown.isActive) {\n return this;\n }\n\n this.containerOuter.close();\n this.dropdown.hide();\n this.input.deactivate(blurInput);\n this.passedElement.triggerEvent(EVENTS.hideDropdown, {});\n\n return this;\n }\n\n /**\n * Determine whether to hide or show dropdown based on its current state\n * @return {Object} Class instance\n * @public\n */\n toggleDropdown() {\n if (this.dropdown.isActive) {\n this.hideDropdown();\n } else {\n this.showDropdown(true);\n }\n\n return this;\n }\n\n /**\n * Get value(s) of input (i.e. inputted items (text) or selected choices (select))\n * @param {Boolean} valueOnly Get only values of selected items, otherwise return selected items\n * @return {Array/String} selected value (select-one) or\n * array of selected items (inputs & select-multiple)\n * @public\n */\n getValue(valueOnly = false) {\n const items = this.store.getItemsFilteredByActive();\n const selectedItems = [];\n\n items.forEach((item) => {\n const itemValue = valueOnly ? item.value : item;\n if (this.isTextElement || item.active) {\n selectedItems.push(itemValue);\n }\n });\n\n return this.isSelectOneElement ? selectedItems[0] : selectedItems;\n }\n\n /**\n * Set value of input. If the input is a select box, a choice will\n * be created and selected otherwise an item will created directly.\n * @param {Array} args Array of value objects or value strings\n * @return {Object} Class instance\n * @public\n */\n setValue(args) {\n if (!this.initialised) {\n return this;\n }\n\n // Convert args to an iterable array\n const values = [...args];\n const handleValue = (item) => {\n const itemType = getType(item).toLowerCase();\n const handleType = {\n object: () => {\n if (!item.value) {\n return;\n }\n\n // If we are dealing with a select input, we need to create an option first\n // that is then selected. For text inputs we can just add items normally.\n if (!this.isTextElement) {\n this._addChoice(\n item.value,\n item.label,\n true,\n false, -1,\n item.customProperties,\n item.placeholder,\n );\n } else {\n this._addItem(\n item.value,\n item.label,\n item.id,\n undefined,\n item.customProperties,\n item.placeholder,\n );\n }\n },\n string: () => {\n if (!this.isTextElement) {\n this._addChoice(\n item,\n item,\n true,\n false, -1,\n null,\n );\n } else {\n this._addItem(item);\n }\n },\n };\n\n handleType[itemType]();\n };\n\n values.forEach(value => handleValue(value));\n\n return this;\n }\n\n /**\n * Select value of select box via the value of an existing choice\n * @param {Array/String} value An array of strings of a single string\n * @return {Object} Class instance\n * @public\n */\n setValueByChoice(value) {\n if (this.isTextElement) {\n return this;\n }\n\n const choices = this.store.getChoices();\n // If only one value has been passed, convert to array\n const choiceValue = isType('Array', value) ? value : [value];\n const findAndSelectChoice = (val) => {\n // Check 'value' property exists and the choice isn't already selected\n const foundChoice = choices.find(choice => choice.value === val);\n\n if (foundChoice && !foundChoice.selected) {\n this._addItem(\n foundChoice.value,\n foundChoice.label,\n foundChoice.id,\n foundChoice.groupId,\n foundChoice.customProperties,\n foundChoice.placeholder,\n foundChoice.keyCode,\n );\n }\n };\n\n // Loop through each value and\n choiceValue.forEach(val => findAndSelectChoice(val));\n\n return this;\n }\n\n /**\n * Direct populate choices\n * @param {Array} choices - Choices to insert\n * @param {String} value - Name of 'value' property\n * @param {String} label - Name of 'label' property\n * @param {Boolean} replaceChoices Whether existing choices should be removed\n * @return {Object} Class instance\n * @public\n */\n setChoices(choices, value, label, replaceChoices = false) {\n if (\n !this.initialised ||\n !this.isSelectElement ||\n !isType('Array', choices) ||\n !value\n ) {\n return this;\n }\n\n // Clear choices if needed\n if (replaceChoices) {\n this._clearChoices();\n }\n\n // Add choices if passed\n if (choices && choices.length) {\n this.containerOuter.removeLoadingState();\n\n choices.forEach((result) => {\n if (result.choices) {\n this._addGroup(\n result,\n (result.id || null),\n value,\n label,\n );\n } else {\n this._addChoice(\n result[value],\n result[label],\n result.selected,\n result.disabled,\n undefined,\n result.customProperties,\n result.placeholder,\n );\n }\n });\n }\n\n return this;\n }\n\n /**\n * Clear items,choices and groups\n * @note Hard delete\n * @return {Object} Class instance\n * @public\n */\n clearStore() {\n this.store.dispatch(clearAll());\n return this;\n }\n\n /**\n * Set value of input to blank\n * @return {Object} Class instance\n * @public\n */\n clearInput() {\n const shouldSetInputWidth = !this.isSelectOneElement;\n this.input.clear(shouldSetInputWidth);\n\n if (!this.isTextElement && this.config.searchEnabled) {\n this.isSearching = false;\n this.store.dispatch(activateChoices(true));\n }\n\n return this;\n }\n\n /**\n * Enable interaction with Choices\n * @return {Object} Class instance\n */\n enable() {\n if (!this.initialised) {\n return this;\n }\n\n this.passedElement.enable();\n\n if (this.containerOuter.isDisabled) {\n this._addEventListeners();\n this.input.enable();\n this.containerOuter.enable();\n }\n\n return this;\n }\n\n /**\n * Disable interaction with Choices\n * @return {Object} Class instance\n * @public\n */\n disable() {\n if (!this.initialised) {\n return this;\n }\n\n this.passedElement.disable();\n\n if (!this.containerOuter.isDisabled) {\n this._removeEventListeners();\n this.input.disable();\n this.containerOuter.disable();\n }\n\n return this;\n }\n\n /**\n * Populate options via ajax callback\n * @param {Function} fn Function that actually makes an AJAX request\n * @return {Object} Class instance\n * @public\n */\n ajax(fn) {\n if (!this.initialised || !this.isSelectElement) {\n return this;\n }\n\n // Show loading text\n requestAnimationFrame(() => this._handleLoadingState(true));\n // Run callback\n fn(this._ajaxCallback());\n\n return this;\n }\n\n /* ===== End of Public functions ====== */\n\n /* =============================================\n = Private functions =\n ============================================= */\n\n /**\n * Call change callback\n * @param {String} value - last added/deleted/selected value\n * @return\n * @private\n */\n _triggerChange(value) {\n if (!value) {\n return;\n }\n\n this.passedElement.triggerEvent(EVENTS.change, {\n value,\n });\n }\n\n /**\n * Select placeholder choice\n */\n _selectPlaceholderChoice() {\n const placeholderChoice = this.store.getPlaceholderChoice();\n\n if (placeholderChoice) {\n this._addItem(\n placeholderChoice.value,\n placeholderChoice.label,\n placeholderChoice.id,\n placeholderChoice.groupId,\n null,\n placeholderChoice.placeholder,\n );\n this._triggerChange(placeholderChoice.value);\n }\n }\n\n\n /**\n * Process enter/click of an item button\n * @param {Array} activeItems The currently active items\n * @param {Element} element Button being interacted with\n * @return\n * @private\n */\n _handleButtonAction(activeItems, element) {\n if (\n !activeItems ||\n !element ||\n !this.config.removeItems ||\n !this.config.removeItemButton\n ) {\n return;\n }\n\n const itemId = element.parentNode.getAttribute('data-id');\n const itemToRemove = activeItems.find(item => item.id === parseInt(itemId, 10));\n\n // Remove item associated with button\n this._removeItem(itemToRemove);\n this._triggerChange(itemToRemove.value);\n\n if (this.isSelectOneElement) {\n this._selectPlaceholderChoice();\n }\n }\n\n /**\n * Process click of an item\n * @param {Array} activeItems The currently active items\n * @param {Element} element Item being interacted with\n * @param {Boolean} hasShiftKey Whether the user has the shift key active\n * @return\n * @private\n */\n _handleItemAction(activeItems, element, hasShiftKey = false) {\n if (\n !activeItems ||\n !element ||\n !this.config.removeItems ||\n this.isSelectOneElement\n ) {\n return;\n }\n\n const passedId = element.getAttribute('data-id');\n\n // We only want to select one item with a click\n // so we deselect any items that aren't the target\n // unless shift is being pressed\n activeItems.forEach((item) => {\n if (item.id === parseInt(passedId, 10) && !item.highlighted) {\n this.highlightItem(item);\n } else if (!hasShiftKey && item.highlighted) {\n this.unhighlightItem(item);\n }\n });\n\n // Focus input as without focus, a user cannot do anything with a\n // highlighted item\n this.input.focus();\n }\n\n /**\n * Process click of a choice\n * @param {Array} activeItems The currently active items\n * @param {Element} element Choice being interacted with\n * @return\n */\n _handleChoiceAction(activeItems, element) {\n if (!activeItems || !element) {\n return;\n }\n\n // If we are clicking on an option\n const id = element.getAttribute('data-id');\n const choice = this.store.getChoiceById(id);\n const passedKeyCode = activeItems[0] && activeItems[0].keyCode ? activeItems[0].keyCode : null;\n const hasActiveDropdown = this.dropdown.isActive;\n\n // Update choice keyCode\n choice.keyCode = passedKeyCode;\n\n this.passedElement.triggerEvent(EVENTS.choice, {\n choice,\n });\n\n if (choice && !choice.disabled) {\n const canAddItem = this._canAddItem(activeItems, choice.value);\n\n if (canAddItem.response) {\n this._addItem(\n choice.value,\n choice.label,\n choice.id,\n choice.groupId,\n choice.customProperties,\n choice.placeholder,\n choice.keyCode,\n );\n this._triggerChange(choice.value);\n }\n }\n\n this.clearInput();\n\n // We wont to close the dropdown if we are dealing with a single select box\n if (hasActiveDropdown && this.isSelectOneElement) {\n this.hideDropdown();\n this.containerOuter.focus();\n }\n }\n\n /**\n * Process back space event\n * @param {Array} activeItems items\n * @return\n * @private\n */\n _handleBackspace(activeItems) {\n if (!this.config.removeItems || !activeItems) {\n return;\n }\n\n const lastItem = activeItems[activeItems.length - 1];\n const hasHighlightedItems = activeItems.some(item => item.highlighted);\n\n // If editing the last item is allowed and there are not other selected items,\n // we can edit the item value. Otherwise if we can remove items, remove all selected items\n if (this.config.editItems && !hasHighlightedItems && lastItem) {\n this.input.setValue(lastItem.value);\n this.input.setWidth();\n this._removeItem(lastItem);\n this._triggerChange(lastItem.value);\n } else {\n if (!hasHighlightedItems) {\n // Highlight last item if none already highlighted\n this.highlightItem(lastItem, false);\n }\n this.removeHighlightedItems(true);\n }\n }\n\n /**\n * Apply or remove a loading state to the component.\n * @param {Boolean} isLoading default value set to 'true'.\n * @return\n * @private\n */\n _handleLoadingState(isLoading = true) {\n let placeholderItem = this.itemList.getChild(`.${this.config.classNames.placeholder}`);\n if (isLoading) {\n this.containerOuter.addLoadingState();\n if (this.isSelectOneElement) {\n if (!placeholderItem) {\n placeholderItem = this._getTemplate('placeholder', this.config.loadingText);\n this.itemList.append(placeholderItem);\n } else {\n placeholderItem.innerHTML = this.config.loadingText;\n }\n } else {\n this.input.setPlaceholder(this.config.loadingText);\n }\n } else {\n this.containerOuter.removeLoadingState();\n\n if (this.isSelectOneElement) {\n placeholderItem.innerHTML = (this.placeholder || '');\n } else {\n this.input.setPlaceholder(this.placeholder || '');\n }\n }\n }\n\n\n /**\n * Validates whether an item can be added by a user\n * @param {Array} activeItems The currently active items\n * @param {String} value Value of item to add\n * @return {Object} Response: Whether user can add item\n * Notice: Notice show in dropdown\n */\n _canAddItem(activeItems, value) {\n let canAddItem = true;\n let notice = isType('Function', this.config.addItemText) ?\n this.config.addItemText(value) :\n this.config.addItemText;\n\n if (this.isSelectMultipleElement || this.isTextElement) {\n if (this.config.maxItemCount > 0 && this.config.maxItemCount <= activeItems.length) {\n // If there is a max entry limit and we have reached that limit\n // don't update\n canAddItem = false;\n notice = isType('Function', this.config.maxItemText) ?\n this.config.maxItemText(this.config.maxItemCount) :\n this.config.maxItemText;\n }\n }\n\n if (this.isTextElement && this.config.addItems && canAddItem && this.config.regexFilter) {\n // If a user has supplied a regular expression filter\n // determine whether we can update based on whether\n // our regular expression passes\n canAddItem = regexFilter(value, this.config.regexFilter);\n }\n\n // If no duplicates are allowed, and the value already exists\n // in the array\n const isUnique = !activeItems.some((item) => {\n if (isType('String', value)) {\n return item.value === value.trim();\n }\n\n return item.value === value;\n });\n\n if (!isUnique &&\n !this.config.duplicateItems &&\n !this.isSelectOneElement &&\n canAddItem\n ) {\n canAddItem = false;\n notice = isType('Function', this.config.uniqueItemText) ?\n this.config.uniqueItemText(value) :\n this.config.uniqueItemText;\n }\n\n return {\n response: canAddItem,\n notice,\n };\n }\n\n /**\n * Retrieve the callback used to populate component's choices in an async way.\n * @returns {Function} The callback as a function.\n * @private\n */\n _ajaxCallback() {\n return (results, value, label) => {\n if (!results || !value) {\n return;\n }\n\n const parsedResults = isType('Object', results) ? [results] : results;\n\n if (parsedResults && isType('Array', parsedResults) && parsedResults.length) {\n // Remove loading states/text\n this._handleLoadingState(false);\n // Add each result as a choice\n parsedResults.forEach((result) => {\n if (result.choices) {\n const groupId = (result.id || null);\n this._addGroup(\n result,\n groupId,\n value,\n label,\n );\n } else {\n this._addChoice(\n result[value],\n result[label],\n result.selected,\n result.disabled,\n undefined,\n result.customProperties,\n result.placeholder,\n );\n }\n });\n\n if (this.isSelectOneElement) {\n this._selectPlaceholderChoice();\n }\n } else {\n // No results, remove loading state\n this._handleLoadingState(false);\n }\n };\n }\n\n /**\n * Filter choices based on search value\n * @param {String} value Value to filter by\n * @return\n * @private\n */\n _searchChoices(value) {\n const newValue = isType('String', value) ? value.trim() : value;\n const currentValue = isType('String', this.currentValue) ?\n this.currentValue.trim() :\n this.currentValue;\n\n if (newValue.length < 1 && newValue === `${currentValue} `) {\n return 0;\n }\n\n // If new value matches the desired length and is not the same as the current value with a space\n const haystack = this.store.getSearchableChoices();\n const needle = newValue;\n const keys = isType('Array', this.config.searchFields) ?\n this.config.searchFields :\n [this.config.searchFields];\n const options = Object.assign(this.config.fuseOptions, { keys });\n const fuse = new Fuse(haystack, options);\n const results = fuse.search(needle);\n\n this.currentValue = newValue;\n this.highlightPosition = 0;\n this.isSearching = true;\n this.store.dispatch(filterChoices(results));\n\n return results.length;\n }\n\n /**\n * Determine the action when a user is searching\n * @param {String} value Value entered by user\n * @return\n * @private\n */\n _handleSearch(value) {\n if (!value || !this.input.isFocussed) {\n return;\n }\n\n const choices = this.store.getChoices();\n const hasUnactiveChoices = choices.some(option => !option.active);\n\n // Check that we have a value to search and the input was an alphanumeric character\n if (value && value.length >= this.config.searchFloor) {\n const resultCount = this.config.searchChoices ? this._searchChoices(value) : 0;\n // Trigger search event\n this.passedElement.triggerEvent(EVENTS.search, {\n value,\n resultCount,\n });\n } else if (hasUnactiveChoices) {\n // Otherwise reset choices to active\n this.isSearching = false;\n this.store.dispatch(activateChoices(true));\n }\n }\n\n /**\n * Trigger event listeners\n * @return\n * @private\n */\n _addEventListeners() {\n document.addEventListener('keyup', this._onKeyUp);\n document.addEventListener('keydown', this._onKeyDown);\n document.addEventListener('click', this._onClick);\n document.addEventListener('touchmove', this._onTouchMove);\n document.addEventListener('touchend', this._onTouchEnd);\n document.addEventListener('mousedown', this._onMouseDown);\n document.addEventListener('mouseover', this._onMouseOver);\n\n if (this.isSelectOneElement) {\n this.containerOuter.element.addEventListener('focus', this._onFocus);\n this.containerOuter.element.addEventListener('blur', this._onBlur);\n }\n\n this.input.element.addEventListener('focus', this._onFocus);\n this.input.element.addEventListener('blur', this._onBlur);\n\n this.input.addEventListeners();\n }\n\n /**\n * Remove event listeners\n * @return\n * @private\n */\n _removeEventListeners() {\n document.removeEventListener('keyup', this._onKeyUp);\n document.removeEventListener('keydown', this._onKeyDown);\n document.removeEventListener('click', this._onClick);\n document.removeEventListener('touchmove', this._onTouchMove);\n document.removeEventListener('touchend', this._onTouchEnd);\n document.removeEventListener('mousedown', this._onMouseDown);\n document.removeEventListener('mouseover', this._onMouseOver);\n\n if (this.isSelectOneElement) {\n this.containerOuter.element.removeEventListener('focus', this._onFocus);\n this.containerOuter.element.removeEventListener('blur', this._onBlur);\n }\n\n this.input.element.removeEventListener('focus', this._onFocus);\n this.input.element.removeEventListener('blur', this._onBlur);\n\n this.input.removeEventListeners();\n }\n\n /**\n * Key down event\n * @param {Object} e Event\n * @return\n */\n _onKeyDown(e) {\n if (e.target !== this.input.element && !this.containerOuter.element.contains(e.target)) {\n return;\n }\n\n const target = e.target;\n const activeItems = this.store.getItemsFilteredByActive();\n const hasFocusedInput = this.input.isFocussed;\n const hasActiveDropdown = this.dropdown.isActive;\n const hasItems = this.itemList.hasChildren;\n const keyString = String.fromCharCode(e.keyCode);\n const backKey = KEY_CODES.BACK_KEY;\n const deleteKey = KEY_CODES.DELETE_KEY;\n const enterKey = KEY_CODES.ENTER_KEY;\n const aKey = KEY_CODES.A_KEY;\n const escapeKey = KEY_CODES.ESC_KEY;\n const upKey = KEY_CODES.UP_KEY;\n const downKey = KEY_CODES.DOWN_KEY;\n const pageUpKey = KEY_CODES.PAGE_UP_KEY;\n const pageDownKey = KEY_CODES.PAGE_DOWN_KEY;\n const ctrlDownKey = (e.ctrlKey || e.metaKey);\n\n // If a user is typing and the dropdown is not active\n if (!this.isTextElement && this.config.searchEnabled && /[a-zA-Z0-9-_ ]/.test(keyString)) {\n this.showDropdown(true);\n }\n\n this.canSearch = this.config.searchEnabled;\n\n const onAKey = () => {\n // If CTRL + A or CMD + A have been pressed and there are items to select\n if (ctrlDownKey && hasItems) {\n this.canSearch = false;\n if (\n this.config.removeItems &&\n !this.input.getValue() &&\n this.input.element === document.activeElement\n ) {\n // Highlight items\n this.highlightAll();\n }\n }\n };\n\n const onEnterKey = () => {\n // If enter key is pressed and the input has a value\n if (this.isTextElement && target.value) {\n const value = this.input.getValue();\n const canAddItem = this._canAddItem(activeItems, value);\n\n // All is good, add\n if (canAddItem.response) {\n this.hideDropdown();\n this._addItem(value);\n this._triggerChange(value);\n this.clearInput();\n }\n }\n\n if (target.hasAttribute('data-button')) {\n this._handleButtonAction(activeItems, target);\n e.preventDefault();\n }\n\n if (hasActiveDropdown) {\n e.preventDefault();\n const highlighted = this.dropdown.getChild(`.${this.config.classNames.highlightedState}`);\n\n // If we have a highlighted choice\n if (highlighted) {\n // add enter keyCode value\n if (activeItems[0]) {\n activeItems[0].keyCode = enterKey;\n }\n this._handleChoiceAction(activeItems, highlighted);\n }\n } else if (this.isSelectOneElement) {\n // Open single select dropdown if it's not active\n this.showDropdown(true);\n e.preventDefault();\n }\n };\n\n const onEscapeKey = () => {\n if (hasActiveDropdown) {\n this.hideDropdown();\n this.containerOuter.focus();\n }\n };\n\n const onDirectionKey = () => {\n // If up or down key is pressed, traverse through options\n if (hasActiveDropdown || this.isSelectOneElement) {\n // Show dropdown if focus\n this.showDropdown(true);\n\n this.canSearch = false;\n\n const directionInt = e.keyCode === downKey || e.keyCode === pageDownKey ? 1 : -1;\n const skipKey = e.metaKey || e.keyCode === pageDownKey || e.keyCode === pageUpKey;\n\n let nextEl;\n if (skipKey) {\n if (directionInt > 0) {\n nextEl = Array.from(\n this.dropdown.element.querySelectorAll('[data-choice-selectable]'),\n ).pop();\n } else {\n nextEl = this.dropdown.element.querySelector('[data-choice-selectable]');\n }\n } else {\n const currentEl = this.dropdown.element.querySelector(\n `.${this.config.classNames.highlightedState}`,\n );\n if (currentEl) {\n nextEl = getAdjacentEl(currentEl, '[data-choice-selectable]', directionInt);\n } else {\n nextEl = this.dropdown.element.querySelector('[data-choice-selectable]');\n }\n }\n\n if (nextEl) {\n // We prevent default to stop the cursor moving\n // when pressing the arrow\n if (!isScrolledIntoView(nextEl, this.choiceList, directionInt)) {\n this._scrollToChoice(nextEl, directionInt);\n }\n this._highlightChoice(nextEl);\n }\n\n // Prevent default to maintain cursor position whilst\n // traversing dropdown options\n e.preventDefault();\n }\n };\n\n const onDeleteKey = () => {\n // If backspace or delete key is pressed and the input has no value\n if (hasFocusedInput && !e.target.value && !this.isSelectOneElement) {\n this._handleBackspace(activeItems);\n e.preventDefault();\n }\n };\n\n // Map keys to key actions\n const keyDownActions = {\n [aKey]: onAKey,\n [enterKey]: onEnterKey,\n [escapeKey]: onEscapeKey,\n [upKey]: onDirectionKey,\n [pageUpKey]: onDirectionKey,\n [downKey]: onDirectionKey,\n [pageDownKey]: onDirectionKey,\n [deleteKey]: onDeleteKey,\n [backKey]: onDeleteKey,\n };\n\n // If keycode has a function, run it\n if (keyDownActions[e.keyCode]) {\n keyDownActions[e.keyCode]();\n }\n }\n\n /**\n * Key up event\n * @param {Object} e Event\n * @return\n * @private\n */\n _onKeyUp(e) {\n if (e.target !== this.input.element) {\n return;\n }\n\n const value = this.input.getValue();\n const activeItems = this.store.getItemsFilteredByActive();\n const canAddItem = this._canAddItem(activeItems, value);\n\n // We are typing into a text input and have a value, we want to show a dropdown\n // notice. Otherwise hide the dropdown\n if (this.isTextElement) {\n if (value) {\n if (canAddItem.notice) {\n const dropdownItem = this._getTemplate('notice', canAddItem.notice);\n this.dropdown.element.innerHTML = dropdownItem.outerHTML;\n }\n\n if (canAddItem.response === true) {\n this.showDropdown();\n } else if (!canAddItem.notice) {\n this.hideDropdown();\n }\n } else {\n this.hideDropdown();\n }\n } else {\n const backKey = KEY_CODES.BACK_KEY;\n const deleteKey = KEY_CODES.DELETE_KEY;\n\n // If user has removed value...\n if ((e.keyCode === backKey || e.keyCode === deleteKey) && !e.target.value) {\n // ...and it is a multiple select input, activate choices (if searching)\n if (!this.isTextElement && this.isSearching) {\n this.isSearching = false;\n this.store.dispatch(activateChoices(true));\n }\n } else if (this.canSearch && canAddItem.response) {\n this._handleSearch(this.input.getValue());\n }\n }\n // Re-establish canSearch value from changes in _onKeyDown\n this.canSearch = this.config.searchEnabled;\n }\n\n /**\n * Touch move event\n * @return\n * @private\n */\n _onTouchMove() {\n if (this.wasTap === true) {\n this.wasTap = false;\n }\n }\n\n /**\n * Touch end event\n * @param {Object} e Event\n * @return\n * @private\n */\n _onTouchEnd(e) {\n const target = (e.target || e.touches[0].target);\n\n // If a user tapped within our container...\n if (this.wasTap === true && this.containerOuter.element.contains(target)) {\n // ...and we aren't dealing with a single select box, show dropdown/focus input\n if (\n (target === this.containerOuter.element || target === this.containerInner.element) &&\n !this.isSelectOneElement\n ) {\n if (this.isTextElement) {\n // If text element, we only want to focus the input\n this.input.focus();\n } else {\n // If a select box, we want to show the dropdown\n this.showDropdown(true);\n }\n }\n // Prevents focus event firing\n e.stopPropagation();\n }\n\n this.wasTap = true;\n }\n\n /**\n * Mouse down event\n * @param {Object} e Event\n * @return\n * @private\n */\n _onMouseDown(e) {\n const target = e.target;\n\n // If we have our mouse down on the scrollbar and are on IE11...\n if (target.contains(this.choiceList.element) && this.isIe11) {\n this.isScrollingOnIe = true;\n }\n\n if (this.containerOuter.element.contains(target) && target !== this.input.element) {\n const activeItems = this.store.getItemsFilteredByActive();\n const hasShiftKey = e.shiftKey;\n\n const buttonTarget = findAncestorByAttrName(target, 'data-button');\n const itemTarget = findAncestorByAttrName(target, 'data-item');\n const choiceTarget = findAncestorByAttrName(target, 'data-choice');\n\n if (buttonTarget) {\n this._handleButtonAction(activeItems, buttonTarget);\n } else if (itemTarget) {\n this._handleItemAction(activeItems, itemTarget, hasShiftKey);\n } else if (choiceTarget) {\n this._handleChoiceAction(activeItems, choiceTarget);\n }\n\n e.preventDefault();\n }\n }\n\n /**\n * Mouse over (hover) event\n * @param {Object} e Event\n * @return\n * @private\n */\n _onMouseOver(e) {\n // If the dropdown is either the target or one of its children is the target\n const targetWithinDropdown = (\n e.target === this.dropdown || this.dropdown.element.contains(e.target)\n );\n const shouldHighlightChoice = targetWithinDropdown && e.target.hasAttribute('data-choice');\n\n if (shouldHighlightChoice) {\n this._highlightChoice(e.target);\n }\n }\n\n /**\n * Click event\n * @param {Object} e Event\n * @return\n * @private\n */\n _onClick(e) {\n const target = e.target;\n const hasActiveDropdown = this.dropdown.isActive;\n const activeItems = this.store.getItemsFilteredByActive();\n\n // If target is something that concerns us\n if (this.containerOuter.element.contains(target)) {\n if (!hasActiveDropdown) {\n if (this.isTextElement) {\n if (document.activeElement !== this.input.element) {\n this.input.focus();\n }\n } else if (this.canSearch) {\n this.showDropdown(true);\n } else {\n this.showDropdown();\n // code smell\n this.containerOuter.focus();\n }\n } else if (\n this.isSelectOneElement &&\n target !== this.input.element &&\n !this.dropdown.element.contains(target)\n ) {\n this.hideDropdown(true);\n }\n } else {\n const hasHighlightedItems = activeItems.some(item => item.highlighted);\n\n // De-select any highlighted items\n if (hasHighlightedItems) {\n this.unhighlightAll();\n }\n\n // Remove focus state\n this.containerOuter.removeFocusState();\n\n // Close all other dropdowns\n this.hideDropdown();\n }\n }\n\n /**\n * Focus event\n * @param {Object} e Event\n * @return\n * @private\n */\n _onFocus(e) {\n const target = e.target;\n if (!this.containerOuter.element.contains(target)) {\n return;\n }\n\n const focusActions = {\n text: () => {\n if (target === this.input.element) {\n this.containerOuter.addFocusState();\n }\n },\n 'select-one': () => {\n this.containerOuter.addFocusState();\n if (target === this.input.element) {\n // Show dropdown if it isn't already showing\n this.showDropdown();\n }\n },\n 'select-multiple': () => {\n if (target === this.input.element) {\n // If element is a select box, the focused element is the container and the dropdown\n // isn't already open, focus and show dropdown\n this.containerOuter.addFocusState();\n this.showDropdown(true);\n }\n },\n };\n\n focusActions[this.passedElement.element.type]();\n }\n\n /**\n * Blur event\n * @param {Object} e Event\n * @return\n * @private\n */\n _onBlur(e) {\n const target = e.target;\n // If target is something that concerns us\n if (this.containerOuter.element.contains(target) && !this.isScrollingOnIe) {\n const activeItems = this.store.getItemsFilteredByActive();\n const hasHighlightedItems = activeItems.some(item => item.highlighted);\n const blurActions = {\n text: () => {\n if (target === this.input.element) {\n // Remove the focus state\n this.containerOuter.removeFocusState();\n // De-select any highlighted items\n if (hasHighlightedItems) {\n this.unhighlightAll();\n }\n this.hideDropdown();\n }\n },\n 'select-one': () => {\n this.containerOuter.removeFocusState();\n if (target === this.containerOuter.element) {\n // Hide dropdown if it is showing\n if (!this.canSearch) {\n this.hideDropdown();\n }\n }\n if (target === this.input.element) {\n // Hide dropdown if it is showing\n this.hideDropdown();\n }\n },\n 'select-multiple': () => {\n if (target === this.input.element) {\n // Remove the focus state\n this.containerOuter.removeFocusState();\n this.hideDropdown();\n // De-select any highlighted items\n if (hasHighlightedItems) {\n this.unhighlightAll();\n }\n }\n },\n };\n\n blurActions[this.passedElement.element.type]();\n } else {\n // On IE11, clicking the scollbar blurs our input and thus\n // closes the dropdown. To stop this, we refocus our input\n // if we know we are on IE *and* are scrolling.\n this.isScrollingOnIe = false;\n this.input.element.focus();\n }\n }\n\n /**\n * Scroll to an option element\n * @param {HTMLElement} choice Option to scroll to\n * @param {Number} direction Whether option is above or below\n * @return\n * @private\n */\n _scrollToChoice(choice, direction) {\n if (!choice) {\n return;\n }\n\n const dropdownHeight = this.choiceList.height;\n const choiceHeight = choice.offsetHeight;\n // Distance from bottom of element to top of parent\n const choicePos = choice.offsetTop + choiceHeight;\n // Scroll position of dropdown\n const containerScrollPos = this.choiceList.scrollPos + dropdownHeight;\n // Difference between the choice and scroll position\n const endPoint = direction > 0 ? (\n (this.choiceList.scrollPos + choicePos) - containerScrollPos) :\n choice.offsetTop;\n\n const animateScroll = () => {\n const strength = SCROLLING_SPEED;\n const choiceListScrollTop = this.choiceList.scrollPos;\n let continueAnimation = false;\n let easing;\n let distance;\n\n if (direction > 0) {\n easing = (endPoint - choiceListScrollTop) / strength;\n distance = easing > 1 ? easing : 1;\n\n this.choiceList.scrollTo(choiceListScrollTop + distance);\n if (choiceListScrollTop < endPoint) {\n continueAnimation = true;\n }\n } else {\n easing = (choiceListScrollTop - endPoint) / strength;\n distance = easing > 1 ? easing : 1;\n\n this.choiceList.scrollTo(choiceListScrollTop - distance);\n if (choiceListScrollTop > endPoint) {\n continueAnimation = true;\n }\n }\n\n if (continueAnimation) {\n requestAnimationFrame((time) => {\n animateScroll(time, endPoint, direction);\n });\n }\n };\n\n requestAnimationFrame((time) => {\n animateScroll(time, endPoint, direction);\n });\n }\n\n /**\n * Highlight choice\n * @param {HTMLElement} [el] Element to highlight\n * @return\n * @private\n */\n _highlightChoice(el = null) {\n // Highlight first element in dropdown\n const choices = Array.from(this.dropdown.element.querySelectorAll('[data-choice-selectable]'));\n let passedEl = el;\n\n if (choices && choices.length) {\n const highlightedChoices = Array.from(\n this.dropdown.element.querySelectorAll(`.${this.config.classNames.highlightedState}`),\n );\n const hasActiveDropdown = this.dropdown.isActive;\n\n // Remove any highlighted choices\n highlightedChoices.forEach((choice) => {\n choice.classList.remove(this.config.classNames.highlightedState);\n choice.setAttribute('aria-selected', 'false');\n });\n\n if (passedEl) {\n this.highlightPosition = choices.indexOf(passedEl);\n } else {\n // Highlight choice based on last known highlight location\n if (choices.length > this.highlightPosition) {\n // If we have an option to highlight\n passedEl = choices[this.highlightPosition];\n } else {\n // Otherwise highlight the option before\n passedEl = choices[choices.length - 1];\n }\n\n if (!passedEl) {\n passedEl = choices[0];\n }\n }\n\n // Highlight given option, and set accessiblity attributes\n passedEl.classList.add(this.config.classNames.highlightedState);\n passedEl.setAttribute('aria-selected', 'true');\n\n if (hasActiveDropdown) {\n // IE11 ignores aria-label and blocks virtual keyboard\n // if aria-activedescendant is set without a dropdown\n this.input.setActiveDescendant(passedEl.id);\n this.containerOuter.setActiveDescendant(passedEl.id);\n }\n }\n }\n\n /**\n * Add item to store with correct value\n * @param {String} value Value to add to store\n * @param {String} [label] Label to add to store\n * @param {Number} [choiceId=-1] ID of the associated choice that was selected\n * @param {Number} [groupId=-1] ID of group choice is within. Negative number indicates no group\n * @param {Object} [customProperties] Object containing user defined properties\n * @return {Object} Class instance\n * @public\n */\n _addItem(\n value,\n label = null,\n choiceId = -1,\n groupId = -1,\n customProperties = null,\n placeholder = false,\n keyCode = null,\n ) {\n let passedValue = isType('String', value) ? value.trim() : value;\n const passedKeyCode = keyCode;\n const items = this.store.getItems();\n const passedLabel = label || passedValue;\n const passedOptionId = parseInt(choiceId, 10) || -1;\n\n // Get group if group ID passed\n const group = groupId >= 0 ? this.store.getGroupById(groupId) : null;\n\n // Generate unique id\n const id = items ? items.length + 1 : 1;\n\n // If a prepended value has been passed, prepend it\n if (this.config.prependValue) {\n passedValue = this.config.prependValue + passedValue.toString();\n }\n\n // If an appended value has been passed, append it\n if (this.config.appendValue) {\n passedValue += this.config.appendValue.toString();\n }\n\n this.store.dispatch(\n addItem(\n passedValue,\n passedLabel,\n id,\n passedOptionId,\n groupId,\n customProperties,\n placeholder,\n passedKeyCode,\n ),\n );\n\n if (this.isSelectOneElement) {\n this.removeActiveItems(id);\n }\n\n // Trigger change event\n if (group && group.value) {\n this.passedElement.triggerEvent(EVENTS.addItem, {\n id,\n value: passedValue,\n label: passedLabel,\n groupValue: group.value,\n keyCode: passedKeyCode,\n });\n } else {\n this.passedElement.triggerEvent(EVENTS.addItem, {\n id,\n value: passedValue,\n label: passedLabel,\n keyCode: passedKeyCode,\n });\n }\n\n return this;\n }\n\n /**\n * Remove item from store\n * @param {Object} item Item to remove\n * @return {Object} Class instance\n * @public\n */\n _removeItem(item) {\n if (!item || !isType('Object', item)) {\n return this;\n }\n\n const id = item.id;\n const value = item.value;\n const label = item.label;\n const choiceId = item.choiceId;\n const groupId = item.groupId;\n const group = groupId >= 0 ? this.store.getGroupById(groupId) : null;\n\n this.store.dispatch(removeItem(id, choiceId));\n\n if (group && group.value) {\n this.passedElement.triggerEvent(EVENTS.removeItem, {\n id,\n value,\n label,\n groupValue: group.value,\n });\n } else {\n this.passedElement.triggerEvent(EVENTS.removeItem, {\n id,\n value,\n label,\n });\n }\n\n return this;\n }\n\n /**\n * Add choice to dropdown\n * @param {String} value Value of choice\n * @param {String} [label] Label of choice\n * @param {Boolean} [isSelected=false] Whether choice is selected\n * @param {Boolean} [isDisabled=false] Whether choice is disabled\n * @param {Number} [groupId=-1] ID of group choice is within. Negative number indicates no group\n * @param {Object} [customProperties] Object containing user defined properties\n * @return\n * @private\n */\n _addChoice(\n value,\n label = null,\n isSelected = false,\n isDisabled = false,\n groupId = -1,\n customProperties = null,\n placeholder = false,\n keyCode = null,\n ) {\n if (typeof value === 'undefined' || value === null) {\n return;\n }\n\n // Generate unique id\n const choices = this.store.getChoices();\n const choiceLabel = label || value;\n const choiceId = choices ? choices.length + 1 : 1;\n const choiceElementId = `${this.baseId}-${this.idNames.itemChoice}-${choiceId}`;\n\n this.store.dispatch(\n addChoice(\n value,\n choiceLabel,\n choiceId,\n groupId,\n isDisabled,\n choiceElementId,\n customProperties,\n placeholder,\n keyCode,\n ),\n );\n\n if (isSelected) {\n this._addItem(\n value,\n choiceLabel,\n choiceId,\n undefined,\n customProperties,\n placeholder,\n keyCode,\n );\n }\n }\n\n /**\n * Clear all choices added to the store.\n * @return\n * @private\n */\n _clearChoices() {\n this.store.dispatch(\n clearChoices(),\n );\n }\n\n /**\n * Add group to dropdown\n * @param {Object} group Group to add\n * @param {Number} id Group ID\n * @param {String} [valueKey] name of the value property on the object\n * @param {String} [labelKey] name of the label property on the object\n * @return\n * @private\n */\n _addGroup(group, id, valueKey = 'value', labelKey = 'label') {\n const groupChoices = isType('Object', group) ?\n group.choices :\n Array.from(group.getElementsByTagName('OPTION'));\n const groupId = id || Math.floor(new Date().valueOf() * Math.random());\n const isDisabled = group.disabled ? group.disabled : false;\n\n if (groupChoices) {\n this.store.dispatch(\n addGroup(\n group.label,\n groupId,\n true,\n isDisabled,\n ),\n );\n\n groupChoices.forEach((option) => {\n const isOptDisabled = option.disabled || (option.parentNode && option.parentNode.disabled);\n this._addChoice(\n option[valueKey],\n (isType('Object', option)) ? option[labelKey] : option.innerHTML,\n option.selected,\n isOptDisabled,\n groupId,\n option.customProperties,\n option.placeholder,\n );\n });\n } else {\n this.store.dispatch(\n addGroup(\n group.label,\n group.id,\n false,\n group.disabled,\n ),\n );\n }\n }\n\n /**\n * Get template from name\n * @param {String} template Name of template to get\n * @param {...} args Data to pass to template\n * @return {HTMLElement} Template\n * @private\n */\n _getTemplate(template, ...args) {\n if (!template) {\n return null;\n }\n const templates = this.config.templates;\n const globalClasses = this.config.classNames;\n return templates[template].call(this, globalClasses, ...args);\n }\n\n /**\n * Create HTML element based on type and arguments\n * @return\n * @private\n */\n _createTemplates() {\n // User's custom templates\n const callbackTemplate = this.config.callbackOnCreateTemplates;\n let userTemplates = {};\n if (callbackTemplate && isType('Function', callbackTemplate)) {\n userTemplates = callbackTemplate.call(this, strToEl);\n }\n\n this.config.templates = extend(TEMPLATES, userTemplates);\n }\n\n /**\n * Create DOM structure around passed select element\n * @return\n * @private\n */\n _createInput() {\n const direction = this.passedElement.element.getAttribute('dir') || 'ltr';\n const containerOuter = this._getTemplate('containerOuter',\n direction,\n this.isSelectElement,\n this.isSelectOneElement,\n this.config.searchEnabled,\n this.passedElement.element.type,\n );\n const containerInner = this._getTemplate('containerInner');\n const itemList = this._getTemplate('itemList', this.isSelectOneElement);\n const choiceList = this._getTemplate('choiceList', this.isSelectOneElement);\n const input = this._getTemplate('input');\n const dropdown = this._getTemplate('dropdown');\n\n this.containerOuter = new Container(this, containerOuter, this.config.classNames);\n this.containerInner = new Container(this, containerInner, this.config.classNames);\n this.input = new Input(this, input, this.config.classNames);\n this.choiceList = new List(this, choiceList, this.config.classNames);\n this.itemList = new List(this, itemList, this.config.classNames);\n this.dropdown = new Dropdown(this, dropdown, this.config.classNames);\n\n this.passedElement.conceal();\n\n // Wrap input in container preserving DOM ordering\n wrap(this.passedElement.element, this.containerInner.element);\n // Wrapper inner container with outer container\n wrap(this.containerInner.element, this.containerOuter.element);\n\n if (this.isSelectOneElement) {\n this.input.setPlaceholder(this.config.searchPlaceholderValue || '');\n } else if (this.placeholder) {\n this.input.setPlaceholder(this.placeholder);\n this.input.setWidth(true);\n }\n\n if (!this.config.addItems) {\n this.disable();\n }\n\n this.containerOuter.element.appendChild(this.containerInner.element);\n this.containerOuter.element.appendChild(this.dropdown.element);\n this.containerInner.element.appendChild(itemList);\n\n if (!this.isTextElement) {\n dropdown.appendChild(choiceList);\n }\n\n if (!this.isSelectOneElement) {\n this.containerInner.element.appendChild(this.input.element);\n } else if (this.canSearch) {\n dropdown.insertBefore(input, dropdown.firstChild);\n }\n\n if (this.isSelectElement) {\n const passedGroups = this.passedElement.getOptionGroups();\n\n this.highlightPosition = 0;\n this.isSearching = false;\n\n if (passedGroups && passedGroups.length) {\n // If we have a placeholder option\n const placeholderChoice = this.passedElement.getPlaceholderOption();\n if (placeholderChoice && placeholderChoice.parentNode.tagName === 'SELECT') {\n this._addChoice(\n placeholderChoice.value,\n placeholderChoice.innerHTML,\n placeholderChoice.selected,\n placeholderChoice.disabled,\n undefined,\n undefined,\n /* placeholder */ true,\n );\n }\n\n passedGroups.forEach((group) => {\n this._addGroup(group, (group.id || null));\n });\n } else {\n const passedOptions = this.passedElement.getOptions();\n const filter = this.config.sortFilter;\n const allChoices = this.presetChoices;\n\n // Create array of options from option elements\n passedOptions.forEach((o) => {\n allChoices.push({\n value: o.value,\n label: o.innerHTML,\n selected: o.selected,\n disabled: o.disabled || o.parentNode.disabled,\n placeholder: o.hasAttribute('placeholder'),\n });\n });\n\n // If sorting is enabled or the user is searching, filter choices\n if (this.config.shouldSort) {\n allChoices.sort(filter);\n }\n\n // Determine whether there is a selected choice\n const hasSelectedChoice = allChoices.some(choice => choice.selected);\n const handleChoice = (choice, index) => {\n if (this.isSelectElement) {\n // If the choice is actually a group\n if (choice.choices) {\n this._addGroup(choice, choice.id || null);\n } else {\n // If there is a selected choice already or the choice is not\n // the first in the array, add each choice normally\n // Otherwise pre-select the first choice in the array if it's a single select\n const shouldPreselect = this.isSelectOneElement && !hasSelectedChoice && index === 0;\n const isSelected = shouldPreselect ? true : choice.selected;\n const isDisabled = shouldPreselect ? false : choice.disabled;\n\n this._addChoice(\n choice.value,\n choice.label,\n isSelected,\n isDisabled,\n undefined,\n choice.customProperties,\n choice.placeholder,\n );\n }\n } else {\n this._addChoice(\n choice.value,\n choice.label,\n choice.selected,\n choice.disabled,\n undefined,\n choice.customProperties,\n choice.placeholder,\n );\n }\n };\n\n // Add each choice\n allChoices.forEach((choice, index) => handleChoice(choice, index));\n }\n } else if (this.isTextElement) {\n const handlePresetItem = (item) => {\n const itemType = getType(item);\n if (itemType === 'Object') {\n if (!item.value) {\n return;\n }\n this._addItem(\n item.value,\n item.label,\n item.id,\n undefined,\n item.customProperties,\n item.placeholder,\n );\n } else if (itemType === 'String') {\n this._addItem(item);\n }\n };\n\n this.presetItems.forEach(item => handlePresetItem(item));\n }\n }\n\n /* ===== End of Private functions ====== */\n}\n\nChoices.userDefaults = {};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/choices.js","export default class Container {\n constructor(instance, element, classNames) {\n this.parentInstance = instance;\n this.element = element;\n this.classNames = classNames;\n this.config = instance.config;\n this.isOpen = false;\n this.isFlipped = false;\n this.isFocussed = false;\n this.isDisabled = false;\n this.isLoading = false;\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n }\n\n getElement() {\n return this.element;\n }\n\n /**\n * Add event listeners\n */\n addEventListeners() {\n this.element.addEventListener('focus', this.onFocus);\n this.element.addEventListener('blur', this.onBlur);\n }\n\n /**\n * Remove event listeners\n */\n\n /** */\n removeEventListeners() {\n this.element.removeEventListener('focus', this.onFocus);\n this.element.removeEventListener('blur', this.onBlur);\n }\n\n /**\n * Set focussed state\n */\n onFocus() {\n this.isFocussed = true;\n }\n\n /**\n * Remove blurred state\n */\n onBlur() {\n this.isFocussed = false;\n }\n\n /**\n * Determine whether container should be flipped\n * based on passed dropdown position\n * @param {Number} dropdownPos\n * @returns\n */\n shouldFlip(dropdownPos) {\n if (dropdownPos === undefined) {\n return false;\n }\n\n const body = document.body;\n const html = document.documentElement;\n const winHeight = Math.max(\n body.scrollHeight,\n body.offsetHeight,\n html.clientHeight,\n html.scrollHeight,\n html.offsetHeight,\n );\n\n // If flip is enabled and the dropdown bottom position is\n // greater than the window height flip the dropdown.\n let shouldFlip = false;\n if (this.config.position === 'auto') {\n shouldFlip = dropdownPos >= winHeight;\n } else if (this.config.position === 'top') {\n shouldFlip = true;\n }\n\n return shouldFlip;\n }\n\n /**\n * Set active descendant attribute\n * @param {Number} activeDescendant ID of active descendant\n */\n setActiveDescendant(activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n }\n\n /**\n * Remove active descendant attribute\n */\n removeActiveDescendant() {\n this.element.removeAttribute('aria-activedescendant');\n }\n\n open(dropdownPos) {\n this.element.classList.add(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isOpen = true;\n\n if (this.shouldFlip(dropdownPos)) {\n this.element.classList.add(this.classNames.flippedState);\n this.isFlipped = true;\n }\n }\n\n close() {\n this.element.classList.remove(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'false');\n this.removeActiveDescendant();\n this.isOpen = false;\n\n // A dropdown flips if it does not have space within the page\n if (this.isFlipped) {\n this.element.classList.remove(this.classNames.flippedState);\n this.isFlipped = false;\n }\n }\n\n focus() {\n if (!this.isFocussed) {\n this.element.focus();\n }\n }\n\n addFocusState() {\n this.element.classList.add(this.classNames.focusState);\n }\n\n removeFocusState() {\n this.element.classList.remove(this.classNames.focusState);\n }\n\n /**\n * Remove disabled state\n */\n enable() {\n this.element.classList.remove(this.config.classNames.disabledState);\n this.element.removeAttribute('aria-disabled');\n if (this.parentInstance.isSelectOneElement) {\n this.element.setAttribute('tabindex', '0');\n }\n this.isDisabled = false;\n }\n\n /**\n * Set disabled state\n */\n disable() {\n this.element.classList.add(this.config.classNames.disabledState);\n this.element.setAttribute('aria-disabled', 'true');\n if (this.parentInstance.isSelectOneElement) {\n this.element.setAttribute('tabindex', '-1');\n }\n this.isDisabled = true;\n }\n\n revert(originalElement) {\n // Move passed element back to original position\n this.element.parentNode.insertBefore(\n originalElement,\n this.element,\n );\n // Remove container\n this.element.parentNode.removeChild(this.element);\n }\n\n /**\n * Add loading state to element\n */\n addLoadingState() {\n this.element.classList.add(this.classNames.loadingState);\n this.element.setAttribute('aria-busy', 'true');\n this.isLoading = true;\n }\n\n /**\n * Remove loading state from element\n */\n removeLoadingState() {\n this.element.classList.remove(this.classNames.loadingState);\n this.element.removeAttribute('aria-busy');\n this.isLoading = false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/components/container.js","export default class Dropdown {\n constructor(instance, element, classNames) {\n this.parentInstance = instance;\n this.element = element;\n this.classNames = classNames;\n this.dimensions = null;\n this.position = null;\n this.isActive = false;\n }\n\n getElement() {\n return this.element;\n }\n\n /**\n * Determine how far the top of our element is from\n * the top of the window\n * @return {Number} Vertical position\n */\n getVerticalPos() {\n this.dimensions = this.element.getBoundingClientRect();\n this.position = Math.ceil(this.dimensions.top + window.pageYOffset + this.element.offsetHeight);\n return this.position;\n }\n\n /**\n * Find element that matches passed selector\n * @return {HTMLElement}\n */\n getChild(selector) {\n return this.element.querySelector(selector);\n }\n\n /**\n * Show dropdown to user by adding active state class\n * @return {Object} Class instance\n * @public\n */\n show() {\n this.element.classList.add(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isActive = true;\n return this.parentInstance;\n }\n\n /**\n * Hide dropdown from user\n * @return {Object} Class instance\n * @public\n */\n hide() {\n this.element.classList.remove(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'false');\n this.isActive = false;\n return this.parentInstance;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/components/dropdown.js","import { getWidthOfInput } from '../lib/utils';\n\nexport default class Input {\n constructor(instance, element, classNames) {\n this.parentInstance = instance;\n this.element = element;\n this.classNames = classNames;\n this.isFocussed = this.element === document.activeElement;\n this.isDisabled = false;\n\n // Bind event listeners\n this.onPaste = this.onPaste.bind(this);\n this.onInput = this.onInput.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n }\n\n getElement() {\n return this.element;\n }\n\n addEventListeners() {\n this.element.addEventListener('input', this.onInput);\n this.element.addEventListener('paste', this.onPaste);\n this.element.addEventListener('focus', this.onFocus);\n this.element.addEventListener('blur', this.onBlur);\n }\n\n removeEventListeners() {\n this.element.removeEventListener('input', this.onInput);\n this.element.removeEventListener('paste', this.onPaste);\n this.element.removeEventListener('focus', this.onFocus);\n this.element.removeEventListener('blur', this.onBlur);\n }\n\n /**\n * Input event\n * @return\n * @private\n */\n onInput() {\n if (!this.parentInstance.isSelectOneElement) {\n this.setWidth();\n }\n }\n\n /**\n * Paste event\n * @param {Object} e Event\n * @return\n * @private\n */\n onPaste(e) {\n // Disable pasting into the input if option has been set\n if (e.target === this.element && !this.parentInstance.config.paste) {\n e.preventDefault();\n }\n }\n\n /**\n * Set focussed state\n */\n onFocus() {\n this.isFocussed = true;\n }\n\n /**\n * Remove focussed state\n */\n onBlur() {\n this.isFocussed = false;\n }\n\n activate(focusInput) {\n // Optionally focus the input if we have a search input\n if (focusInput && this.parentInstance.canSearch && document.activeElement !== this.element) {\n this.element.focus();\n }\n }\n\n deactivate(blurInput) {\n this.removeActiveDescendant();\n // Optionally blur the input if we have a search input\n if (blurInput && this.parentInstance.canSearch && document.activeElement === this.element) {\n this.element.blur();\n }\n }\n\n enable() {\n this.element.removeAttribute('disabled');\n this.isDisabled = false;\n }\n\n disable() {\n this.element.setAttribute('disabled', '');\n this.isDisabled = true;\n }\n\n focus() {\n if (!this.isFocussed) {\n this.element.focus();\n }\n }\n\n /**\n * Set value of input to blank\n * @return {Object} Class instance\n * @public\n */\n clear(setWidth = true) {\n if (this.element.value) {\n this.element.value = '';\n }\n\n if (setWidth) {\n this.setWidth();\n }\n\n return this.parentInstance;\n }\n\n /**\n * Set the correct input width based on placeholder\n * value or input value\n * @return\n */\n setWidth(enforceWidth) {\n if (this.parentInstance.placeholder) {\n // If there is a placeholder, we only want to set the width of the input when it is a greater\n // length than 75% of the placeholder. This stops the input jumping around.\n if (\n (this.element.value &&\n this.element.value.length >= (this.parentInstance.placeholder.length / 1.25)) ||\n enforceWidth\n ) {\n this.element.style.width = this.getWidth();\n }\n } else {\n // If there is no placeholder, resize input to contents\n this.element.style.width = this.getWidth();\n }\n }\n\n getWidth() {\n return getWidthOfInput(this.element);\n }\n\n setPlaceholder(placeholder) {\n this.element.placeholder = placeholder;\n }\n\n setValue(value) {\n this.element.value = value;\n }\n\n getValue() {\n return this.element.value;\n }\n\n setActiveDescendant(activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n }\n\n removeActiveDescendant() {\n this.element.removeAttribute('aria-activedescendant');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/components/input.js","export default class List {\n constructor(instance, element, classNames) {\n this.parentInstance = instance;\n this.element = element;\n this.classNames = classNames;\n this.scrollPos = this.element.scrollTop;\n this.height = this.element.offsetHeight;\n this.hasChildren = !!this.element.children;\n }\n\n getElement() {\n return this.element;\n }\n\n /**\n * Clear List contents\n */\n clear() {\n this.element.innerHTML = '';\n }\n\n /**\n * Scroll to passed position on Y axis\n */\n scrollTo(scrollPos = 0) {\n this.element.scrollTop = scrollPos;\n }\n /**\n * Append node to element\n */\n append(node) {\n this.element.appendChild(node);\n }\n\n /**\n * Find element that matches passed selector\n * @return {HTMLElement}\n */\n getChild(selector) {\n return this.element.querySelector(selector);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/components/list.js","import WrappedElement from './wrapped-element';\n\nexport default class WrappedInput extends WrappedElement {\n constructor(instance, element, classNames) {\n super(instance, element, classNames);\n this.parentInstance = instance;\n this.element = element;\n this.classNames = classNames;\n }\n\n getElement() {\n super.getElement();\n }\n\n conceal() {\n super.conceal();\n }\n\n reveal() {\n super.reveal();\n }\n\n enable() {\n super.enable();\n }\n\n disable() {\n super.enable();\n }\n\n setValue(value) {\n this.element.setAttribute('value', value);\n this.element.value = value;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/components/wrapped-input.js","import WrappedElement from './wrapped-element';\n\nexport default class WrappedSelect extends WrappedElement {\n constructor(instance, element, classNames) {\n super(instance, element, classNames);\n this.parentInstance = instance;\n this.element = element;\n this.classNames = classNames;\n }\n\n getElement() {\n super.getElement();\n }\n\n conceal() {\n super.conceal();\n }\n\n reveal() {\n super.reveal();\n }\n\n enable() {\n super.enable();\n }\n\n disable() {\n super.enable();\n }\n\n setOptions(options) {\n this.element.innerHTML = '';\n this.element.appendChild(options);\n }\n\n getPlaceholderOption() {\n return this.element.querySelector('option[placeholder]');\n }\n\n getOptions() {\n return Array.from(this.element.options);\n }\n\n getOptionGroups() {\n return Array.from(this.element.getElementsByTagName('OPTGROUP'));\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/components/wrapped-select.js","export const defaultState = [];\n\nexport default function choices(state = defaultState, action) {\n switch (action.type) {\n case 'ADD_CHOICE': {\n /*\n A disabled choice appears in the choice dropdown but cannot be selected\n A selected choice has been added to the passed input's value (added as an item)\n An active choice appears within the choice dropdown\n */\n return [...state, {\n id: action.id,\n elementId: action.elementId,\n groupId: action.groupId,\n value: action.value,\n label: (action.label || action.value),\n disabled: (action.disabled || false),\n selected: false,\n active: true,\n score: 9999,\n customProperties: action.customProperties,\n placeholder: (action.placeholder || false),\n keyCode: null,\n }];\n }\n\n case 'ADD_ITEM': {\n // If all choices need to be activated\n if (action.activateOptions) {\n return state.map((obj) => {\n const choice = obj;\n choice.active = action.active;\n return choice;\n });\n }\n\n // When an item is added and it has an associated choice,\n // we want to disable it so it can't be chosen again\n if (action.choiceId > -1) {\n return state.map((obj) => {\n const choice = obj;\n if (choice.id === parseInt(action.choiceId, 10)) {\n choice.selected = true;\n }\n return choice;\n });\n }\n\n return state;\n }\n\n case 'REMOVE_ITEM': {\n // When an item is removed and it has an associated choice,\n // we want to re-enable it so it can be chosen again\n if (action.choiceId > -1) {\n return state.map((obj) => {\n const choice = obj;\n if (choice.id === parseInt(action.choiceId, 10)) {\n choice.selected = false;\n }\n return choice;\n });\n }\n\n return state;\n }\n\n case 'FILTER_CHOICES': {\n return state.map((obj) => {\n const choice = obj;\n // Set active state based on whether choice is\n // within filtered results\n choice.active = action.results.some(({ item, score }) => {\n if (item.id === choice.id) {\n choice.score = score;\n return true;\n }\n return false;\n });\n\n return choice;\n });\n }\n\n case 'ACTIVATE_CHOICES': {\n return state.map((obj) => {\n const choice = obj;\n choice.active = action.active;\n return choice;\n });\n }\n\n case 'CLEAR_CHOICES': {\n return defaultState;\n }\n\n default: {\n return state;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/reducers/choices.js","export const defaultState = [];\n\nexport default function groups(state = defaultState, action) {\n switch (action.type) {\n case 'ADD_GROUP': {\n return [...state, {\n id: action.id,\n value: action.value,\n active: action.active,\n disabled: action.disabled,\n }];\n }\n\n case 'CLEAR_CHOICES': {\n return [];\n }\n\n default: {\n return state;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/reducers/groups.js","import { combineReducers } from 'redux';\nimport items from './items';\nimport groups from './groups';\nimport choices from './choices';\n\nconst appReducer = combineReducers({\n items,\n groups,\n choices,\n});\n\nconst rootReducer = (passedState, action) => {\n let state = passedState;\n // If we are clearing all items, groups and options we reassign\n // state and then pass that state to our proper reducer. This isn't\n // mutating our actual state\n // See: http://stackoverflow.com/a/35641992\n if (action.type === 'CLEAR_ALL') {\n state = undefined;\n }\n\n return appReducer(state, action);\n};\n\nexport default rootReducer;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/reducers/index.js","export const defaultState = [];\n\nexport default function items(state = defaultState, action) {\n switch (action.type) {\n case 'ADD_ITEM': {\n // Add object to items array\n const newState = [...state, {\n id: action.id,\n choiceId: action.choiceId,\n groupId: action.groupId,\n value: action.value,\n label: action.label,\n active: true,\n highlighted: false,\n customProperties: action.customProperties,\n placeholder: (action.placeholder || false),\n keyCode: null,\n }];\n\n return newState.map((obj) => {\n const item = obj;\n if (item.highlighted) {\n item.highlighted = false;\n }\n return item;\n });\n }\n\n case 'REMOVE_ITEM': {\n // Set item to inactive\n return state.map((obj) => {\n const item = obj;\n if (item.id === action.id) {\n item.active = false;\n }\n return item;\n });\n }\n\n case 'HIGHLIGHT_ITEM': {\n return state.map((obj) => {\n const item = obj;\n if (item.id === action.id) {\n item.highlighted = action.highlighted;\n }\n return item;\n });\n }\n\n default: {\n return state;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/reducers/items.js","import { createStore } from 'redux';\nimport rootReducer from './../reducers/index';\n\nexport default class Store {\n\tconstructor() {\n\tthis.store = createStore(\n rootReducer,\n window.devToolsExtension ?\n window.devToolsExtension() :\n undefined,\n );\n}\n\n /**\n * Subscribe store to function call (wrapped Redux method)\n * @param {Function} onChange Function to trigger when state changes\n * @return\n */\n\tsubscribe(onChange) {\n\tthis.store.subscribe(onChange);\n}\n\n /**\n * Dispatch event to store (wrapped Redux method)\n * @param {Function} action Action function to trigger\n * @return\n */\n\tdispatch(action) {\n\tthis.store.dispatch(action);\n}\n\n /**\n * Get store object (wrapping Redux method)\n * @return {Object} State\n */\n\tgetState() {\n\treturn this.store.getState();\n}\n\n /**\n * Get items from store\n * @return {Array} Item objects\n */\n\tgetItems() {\n\tconst state = this.store.getState();\n\treturn state.items;\n}\n\n /**\n * Get active items from store\n * @return {Array} Item objects\n */\n\tgetItemsFilteredByActive() {\n\tconst items = this.getItems();\n\tconst values = items.filter(item => item.active === true, []);\n\n\treturn values;\n}\n\n /**\n * Get items from store reduced to just their values\n * @return {Array} Item objects\n */\n\tgetItemsReducedToValues(items = this.getItems()) {\n\tconst values = items.reduce((prev, current) => {\n\tprev.push(current.value);\n\treturn prev;\n}, []);\n\n\treturn values;\n}\n\n /**\n * Get choices from store\n * @return {Array} Option objects\n */\n\tgetChoices() {\n\tconst state = this.store.getState();\n\treturn state.choices;\n}\n\n /**\n * Get active choices from store\n * @return {Array} Option objects\n */\n\tgetChoicesFilteredByActive() {\n\tconst choices = this.getChoices();\n\tconst values = choices.filter(choice => choice.active === true);\n\n\treturn values;\n}\n\n /**\n * Get selectable choices from store\n * @return {Array} Option objects\n */\n\tgetChoicesFilteredBySelectable() {\n\tconst choices = this.getChoices();\n\tconst values = choices.filter(choice => choice.disabled !== true);\n\n\treturn values;\n}\n\n /**\n * Get choices that can be searched (excluding placeholders)\n * @return {Array} Option objects\n */\n\tgetSearchableChoices() {\n\tconst filtered = this.getChoicesFilteredBySelectable();\n\treturn filtered.filter(choice => choice.placeholder !== true);\n}\n\n /**\n * Get single choice by it's ID\n * @return {Object} Found choice\n */\n\tgetChoiceById(id) {\n\tif (id) {\n\tconst choices = this.getChoicesFilteredByActive();\n\tconst foundChoice = choices.find(choice => choice.id === parseInt(id, 10));\n\treturn foundChoice;\n}\n\treturn false;\n}\n\n /**\n * Get placeholder choice from store\n * @return {Object} Found placeholder\n */\n\tgetPlaceholderChoice() {\n\tconst choices = this.getChoices();\n\tconst placeholderChoice = [...choices]\n .reverse()\n .find(choice => choice.placeholder === true);\n\n\treturn placeholderChoice;\n}\n\n /**\n * Get groups from store\n * @return {Array} Group objects\n */\n\tgetGroups() {\n\tconst state = this.store.getState();\n\treturn state.groups;\n}\n\n /**\n * Get active groups from store\n * @return {Array} Group objects\n */\n\tgetGroupsFilteredByActive() {\n\tconst groups = this.getGroups();\n\tconst choices = this.getChoices();\n\n\tconst values = groups.filter((group) => {\n\tconst isActive = group.active === true && group.disabled === false;\n\tconst hasActiveOptions = choices.some(choice =>\n choice.active === true && choice.disabled === false,\n );\n\treturn isActive && hasActiveOptions;\n}, []);\n\n\treturn values;\n}\n\n /**\n * Get group by group id\n * @param {Number} id Group ID\n * @return {Object} Group data\n */\n\tgetGroupById(id) {\n\tconst groups = this.getGroups();\n\tconst foundGroup = groups.find(group => group.id === parseInt(id, 10));\n\n\treturn foundGroup;\n}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/store/store.js","import classNames from 'classnames';\nimport { strToEl } from './lib/utils';\n\nexport const TEMPLATES = {\n containerOuter(\n globalClasses,\n direction,\n isSelectElement,\n isSelectOneElement,\n searchEnabled,\n passedElementType,\n ) {\n const tabIndex = isSelectOneElement ? 'tabindex=\"0\"' : '';\n let role = isSelectElement ? 'role=\"listbox\"' : '';\n let ariaAutoComplete = '';\n\n if (isSelectElement && searchEnabled) {\n role = 'role=\"combobox\"';\n ariaAutoComplete = 'aria-autocomplete=\"list\"';\n }\n\n return strToEl(`\n \n \n `);\n },\n containerInner(globalClasses) {\n return strToEl(`\n
\n `);\n },\n itemList(globalClasses, isSelectOneElement) {\n const localClasses = classNames(\n globalClasses.list, {\n [globalClasses.listSingle]: (isSelectOneElement),\n [globalClasses.listItems]: (!isSelectOneElement),\n },\n );\n\n return strToEl(`\n
\n `);\n },\n placeholder(globalClasses, value) {\n return strToEl(`\n
\n ${value}\n
\n `);\n },\n item(globalClasses, data, removeItemButton) {\n const ariaSelected = data.active ? 'aria-selected=\"true\"' : '';\n const ariaDisabled = data.disabled ? 'aria-disabled=\"true\"' : '';\n\n let localClasses = classNames(\n globalClasses.item, {\n [globalClasses.highlightedState]: data.highlighted,\n [globalClasses.itemSelectable]: !data.highlighted,\n [globalClasses.placeholder]: data.placeholder,\n },\n );\n\n if (removeItemButton) {\n localClasses = classNames(\n globalClasses.item, {\n [globalClasses.highlightedState]: data.highlighted,\n [globalClasses.itemSelectable]: !data.disabled,\n [globalClasses.placeholder]: data.placeholder,\n },\n );\n\n return strToEl(`\n \n ${data.label}\n Remove item\n \n \n `);\n }\n\n return strToEl(`\n \n ${data.label}\n \n `);\n },\n choiceList(globalClasses, isSelectOneElement) {\n const ariaMultiSelectable = !isSelectOneElement ?\n 'aria-multiselectable=\"true\"' :\n '';\n\n return strToEl(`\n \n \n `);\n },\n choiceGroup(globalClasses, data) {\n const ariaDisabled = data.disabled ? 'aria-disabled=\"true\"' : '';\n const localClasses = classNames(\n globalClasses.group, {\n [globalClasses.itemDisabled]: data.disabled,\n },\n );\n\n return strToEl(`\n \n
${data.value}
\n \n `);\n },\n choice(globalClasses, data, itemSelectText) {\n const role = data.groupId > 0 ? 'role=\"treeitem\"' : 'role=\"option\"';\n const localClasses = classNames(\n globalClasses.item,\n globalClasses.itemChoice, {\n [globalClasses.itemDisabled]: data.disabled,\n [globalClasses.itemSelectable]: !data.disabled,\n [globalClasses.placeholder]: data.placeholder,\n },\n );\n\n return strToEl(`\n \n ${data.label}\n \n `);\n },\n input(globalClasses) {\n const localClasses = classNames(\n globalClasses.input,\n globalClasses.inputCloned,\n );\n\n return strToEl(`\n \n `);\n },\n dropdown(globalClasses) {\n const localClasses = classNames(\n globalClasses.list,\n globalClasses.listDropdown,\n );\n\n return strToEl(`\n \n \n `);\n },\n notice(globalClasses, label, type = '') {\n const localClasses = classNames(\n globalClasses.item,\n globalClasses.itemChoice, {\n [globalClasses.noResults]: (type === 'no-results'),\n [globalClasses.noChoices]: (type === 'no-choices'),\n },\n );\n\n return strToEl(`\n
\n ${label}\n
\n `);\n },\n option(globalClasses, data) {\n return strToEl(`\n \n `);\n },\n};\n\nexport default TEMPLATES;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/vendor/choices/templates.js","!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var t;t=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this,t.basicLightbox=e()}}(function(){return function e(t,n,o){function r(f,c){if(!n[f]){if(!t[f]){var a=\"function\"==typeof require&&require;if(!c&&a)return a(f,!0);if(i)return i(f,!0);var l=new Error(\"Cannot find module '\"+f+\"'\");throw l.code=\"MODULE_NOT_FOUND\",l}var u=n[f]={exports:{}};t[f][0].call(u.exports,function(e){var n=t[f][1][e];return r(n||e)},u,u.exports,e,t,n,o)}return n[f].exports}for(var i=\"function\"==typeof require&&require,f=0;f0&&void 0!==arguments[0]?arguments[0]:{};return e=Object.assign({},e),!1!==e.closable&&(e.closable=!0),\"function\"==typeof e.className&&(e.className=e.className()),\"string\"!=typeof e.className&&(e.className=null),\"function\"!=typeof e.beforeShow&&(e.beforeShow=function(){}),\"function\"!=typeof e.afterShow&&(e.afterShow=function(){}),\"function\"!=typeof e.beforeClose&&(e.beforeClose=function(){}),\"function\"!=typeof e.afterClose&&(e.afterClose=function(){}),\"function\"==typeof e.beforePlaceholder&&(e.beforePlaceholder=e.beforePlaceholder()),\"string\"!=typeof e.beforePlaceholder&&(e.beforePlaceholder=\"\"),\"function\"==typeof e.afterPlaceholder&&(e.afterPlaceholder=e.afterPlaceholder()),\"string\"!=typeof e.afterPlaceholder&&(e.afterPlaceholder=\"\"),e},i=function(e){var t=e.children;return 1===t.length&&\"IMG\"===t[0].tagName},f=n.visible=function(e){return null!=(e=e||document.querySelector(\".basicLightbox\"))&&!0===e.ownerDocument.body.contains(e)},c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",t=arguments[1],n=document.createElement(\"div\");return n.classList.add(\"basicLightbox\"),null!=t.className&&n.classList.add(t.className),n.innerHTML=\"\\n\\t\\t\"+t.beforePlaceholder+'\\n\\t\\t
\\n\\t\\t\\t'+e+\"\\n\\t\\t
\\n\\t\\t\"+t.afterPlaceholder+\"\\n\\t\",!0===i(n.querySelector(\".basicLightbox__placeholder\"))&&n.classList.add(\"basicLightbox--img\"),n},a=function(e,t){return document.body.appendChild(e),setTimeout(function(){requestAnimationFrame(function(){return e.classList.add(\"basicLightbox--visible\"),t()})},10),!0},l=function(e,t){return e.classList.remove(\"basicLightbox--visible\"),setTimeout(function(){requestAnimationFrame(function(){return!1===f(e)?t():(e.parentElement.removeChild(e),t())})},410),!0};n.create=function(e,t){t=r(t);var n=c(e,t),i=function(){return n},u=function(){return f(n)},s=function(e){return!1!==t.beforeShow(b)&&a(n,function(){if(t.afterShow(b),\"function\"==typeof e)return e(b)})},d=function(e){return!1!==t.beforeClose(b)&&l(n,function(){if(t.afterClose(b),\"function\"==typeof e)return e(b)})};!0===t.closable&&(n.onclick=function(e){e.target===this&&(d(),o(e))});var b={element:i,visible:u,show:s,close:d};return b}},{}]},{},[1])(1)});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/basiclightbox/dist/basicLightbox.min.js\n// module id = 73\n// module chunks = 1","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/classnames/index.js\n// module id = 74\n// module chunks = 1","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n return Array.isArray(val) ? [] : {}\n}\n\nfunction cloneIfNecessary(value, optionsArgument) {\n var clone = optionsArgument && optionsArgument.clone === true;\n return (clone && isMergeableObject(value)) ? deepmerge(emptyTarget(value), value, optionsArgument) : value\n}\n\nfunction defaultArrayMerge(target, source, optionsArgument) {\n var destination = target.slice();\n source.forEach(function(e, i) {\n if (typeof destination[i] === 'undefined') {\n destination[i] = cloneIfNecessary(e, optionsArgument);\n } else if (isMergeableObject(e)) {\n destination[i] = deepmerge(target[i], e, optionsArgument);\n } else if (target.indexOf(e) === -1) {\n destination.push(cloneIfNecessary(e, optionsArgument));\n }\n });\n return destination\n}\n\nfunction mergeObject(target, source, optionsArgument) {\n var destination = {};\n if (isMergeableObject(target)) {\n Object.keys(target).forEach(function(key) {\n destination[key] = cloneIfNecessary(target[key], optionsArgument);\n });\n }\n Object.keys(source).forEach(function(key) {\n if (!isMergeableObject(source[key]) || !target[key]) {\n destination[key] = cloneIfNecessary(source[key], optionsArgument);\n } else {\n destination[key] = deepmerge(target[key], source[key], optionsArgument);\n }\n });\n return destination\n}\n\nfunction deepmerge(target, source, optionsArgument) {\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var options = optionsArgument || { arrayMerge: defaultArrayMerge };\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n if (!sourceAndTargetTypesMatch) {\n return cloneIfNecessary(source, optionsArgument)\n } else if (sourceIsArray) {\n var arrayMerge = options.arrayMerge || defaultArrayMerge;\n return arrayMerge(target, source, optionsArgument)\n } else {\n return mergeObject(target, source, optionsArgument)\n }\n}\n\ndeepmerge.all = function deepmergeAll(array, optionsArgument) {\n if (!Array.isArray(array) || array.length < 2) {\n throw new Error('first argument should be an array with at least two elements')\n }\n\n // we are sure there are at least 2 values, so it is safe to have no initial value\n return array.reduce(function(prev, next) {\n return deepmerge(prev, next, optionsArgument)\n })\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/deepmerge/dist/cjs.js\n// module id = 75\n// module chunks = 1","/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\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.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/desandro-matches-selector/matches-selector.js\n// module id = 76\n// module chunks = 1","/* flatpickr v4.1.4, @license MIT */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.flatpickr = factory());\n}(this, (function () { 'use strict';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n};\n\nfunction compareDates(date1, date2, timeless) {\r\n if (timeless !== false) {\r\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\r\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\r\n }\r\n return date1.getTime() - date2.getTime();\r\n}\r\nvar monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\r\nvar getWeek = function (givenDate) {\r\n var onejan = new Date(givenDate.getFullYear(), 0, 1);\r\n return Math.ceil(((givenDate.getTime() - onejan.getTime()) / 86400000 +\r\n onejan.getDay() +\r\n 1) /\r\n 7);\r\n};\r\nvar duration = {\r\n DAY: 86400000,\r\n};\n\nvar defaults = {\r\n _disable: [],\r\n _enable: [],\r\n allowInput: false,\r\n altFormat: \"F j, Y\",\r\n altInput: false,\r\n altInputClass: \"form-control input\",\r\n animate: typeof window === \"object\" &&\r\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\r\n ariaDateFormat: \"F j, Y\",\r\n clickOpens: true,\r\n closeOnSelect: true,\r\n conjunction: \", \",\r\n dateFormat: \"Y-m-d\",\r\n defaultHour: 12,\r\n defaultMinute: 0,\r\n defaultSeconds: 0,\r\n disable: [],\r\n disableMobile: false,\r\n enable: [],\r\n enableSeconds: false,\r\n enableTime: false,\r\n errorHandler: console.warn,\r\n getWeek: getWeek,\r\n hourIncrement: 1,\r\n ignoredFocusElements: [],\r\n inline: false,\r\n locale: \"default\",\r\n minuteIncrement: 5,\r\n mode: \"single\",\r\n nextArrow: \"\",\r\n noCalendar: false,\r\n onChange: [],\r\n onClose: [],\r\n onDayCreate: [],\r\n onDestroy: [],\r\n onKeyDown: [],\r\n onMonthChange: [],\r\n onOpen: [],\r\n onParseConfig: [],\r\n onReady: [],\r\n onValueUpdate: [],\r\n onYearChange: [],\r\n plugins: [],\r\n position: \"auto\",\r\n positionElement: undefined,\r\n prevArrow: \"\",\r\n shorthandCurrentMonth: false,\r\n static: false,\r\n time_24hr: false,\r\n weekNumbers: false,\r\n wrap: false,\r\n};\n\nvar english = {\r\n weekdays: {\r\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\r\n longhand: [\r\n \"Sunday\",\r\n \"Monday\",\r\n \"Tuesday\",\r\n \"Wednesday\",\r\n \"Thursday\",\r\n \"Friday\",\r\n \"Saturday\",\r\n ],\r\n },\r\n months: {\r\n shorthand: [\r\n \"Jan\",\r\n \"Feb\",\r\n \"Mar\",\r\n \"Apr\",\r\n \"May\",\r\n \"Jun\",\r\n \"Jul\",\r\n \"Aug\",\r\n \"Sep\",\r\n \"Oct\",\r\n \"Nov\",\r\n \"Dec\",\r\n ],\r\n longhand: [\r\n \"January\",\r\n \"February\",\r\n \"March\",\r\n \"April\",\r\n \"May\",\r\n \"June\",\r\n \"July\",\r\n \"August\",\r\n \"September\",\r\n \"October\",\r\n \"November\",\r\n \"December\",\r\n ],\r\n },\r\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\r\n firstDayOfWeek: 0,\r\n ordinal: function (nth) {\r\n var s = nth % 100;\r\n if (s > 3 && s < 21)\r\n return \"th\";\r\n switch (s % 10) {\r\n case 1:\r\n return \"st\";\r\n case 2:\r\n return \"nd\";\r\n case 3:\r\n return \"rd\";\r\n default:\r\n return \"th\";\r\n }\r\n },\r\n rangeSeparator: \" to \",\r\n weekAbbreviation: \"Wk\",\r\n scrollTitle: \"Scroll to increment\",\r\n toggleTitle: \"Click to toggle\",\r\n amPM: [\"AM\", \"PM\"],\r\n};\n\nvar pad = function (number) { return (\"0\" + number).slice(-2); };\r\nvar int = function (bool) { return (bool === true ? 1 : 0); };\r\nfunction debounce(func, wait, immediate) {\r\n if (immediate === void 0) { immediate = false; }\r\n var timeout;\r\n return function () {\r\n var context = this, args = arguments;\r\n timeout !== null && clearTimeout(timeout);\r\n timeout = window.setTimeout(function () {\r\n timeout = null;\r\n if (!immediate)\r\n func.apply(context, args);\r\n }, wait);\r\n if (immediate && !timeout)\r\n func.apply(context, args);\r\n };\r\n}\r\nvar arrayify = function (obj) {\r\n return obj instanceof Array ? obj : [obj];\r\n};\r\nfunction mouseDelta(e) {\r\n var delta = e.wheelDelta || -e.deltaY;\r\n return delta >= 0 ? 1 : -1;\r\n}\n\nfunction toggleClass(elem, className, bool) {\r\n if (bool === true)\r\n return elem.classList.add(className);\r\n elem.classList.remove(className);\r\n}\r\nfunction createElement(tag, className, content) {\r\n var e = window.document.createElement(tag);\r\n className = className || \"\";\r\n content = content || \"\";\r\n e.className = className;\r\n if (content !== undefined)\r\n e.textContent = content;\r\n return e;\r\n}\r\nfunction clearNode(node) {\r\n while (node.firstChild)\r\n node.removeChild(node.firstChild);\r\n}\r\nfunction findParent(node, condition) {\r\n if (condition(node))\r\n return node;\r\n else if (node.parentNode)\r\n return findParent(node.parentNode, condition);\r\n return undefined;\r\n}\r\nfunction createNumberInput(inputClassName) {\r\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\r\n numInput.type = \"text\";\r\n numInput.pattern = \"\\\\d*\";\r\n wrapper.appendChild(numInput);\r\n wrapper.appendChild(arrowUp);\r\n wrapper.appendChild(arrowDown);\r\n return wrapper;\r\n}\n\nvar do_nothing = function () { return undefined; };\r\nvar revFormat = {\r\n D: do_nothing,\r\n F: function (dateObj, monthName, locale) {\r\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\r\n },\r\n G: function (dateObj, hour) {\r\n dateObj.setHours(parseFloat(hour));\r\n },\r\n H: function (dateObj, hour) {\r\n dateObj.setHours(parseFloat(hour));\r\n },\r\n J: function (dateObj, day) {\r\n dateObj.setDate(parseFloat(day));\r\n },\r\n K: function (dateObj, amPM, locale) {\r\n dateObj.setHours(dateObj.getHours() % 12 +\r\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\r\n },\r\n M: function (dateObj, shortMonth, locale) {\r\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\r\n },\r\n S: function (dateObj, seconds) {\r\n dateObj.setSeconds(parseFloat(seconds));\r\n },\r\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\r\n W: function (dateObj, weekNum) {\r\n var weekNumber = parseInt(weekNum);\r\n return new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\r\n },\r\n Y: function (dateObj, year) {\r\n dateObj.setFullYear(parseFloat(year));\r\n },\r\n Z: function (_, ISODate) { return new Date(ISODate); },\r\n d: function (dateObj, day) {\r\n dateObj.setDate(parseFloat(day));\r\n },\r\n h: function (dateObj, hour) {\r\n dateObj.setHours(parseFloat(hour));\r\n },\r\n i: function (dateObj, minutes) {\r\n dateObj.setMinutes(parseFloat(minutes));\r\n },\r\n j: function (dateObj, day) {\r\n dateObj.setDate(parseFloat(day));\r\n },\r\n l: do_nothing,\r\n m: function (dateObj, month) {\r\n dateObj.setMonth(parseFloat(month) - 1);\r\n },\r\n n: function (dateObj, month) {\r\n dateObj.setMonth(parseFloat(month) - 1);\r\n },\r\n s: function (dateObj, seconds) {\r\n dateObj.setSeconds(parseFloat(seconds));\r\n },\r\n w: do_nothing,\r\n y: function (dateObj, year) {\r\n dateObj.setFullYear(2000 + parseFloat(year));\r\n },\r\n};\r\nvar tokenRegex = {\r\n D: \"(\\\\w+)\",\r\n F: \"(\\\\w+)\",\r\n G: \"(\\\\d\\\\d|\\\\d)\",\r\n H: \"(\\\\d\\\\d|\\\\d)\",\r\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\r\n K: \"\",\r\n M: \"(\\\\w+)\",\r\n S: \"(\\\\d\\\\d|\\\\d)\",\r\n U: \"(.+)\",\r\n W: \"(\\\\d\\\\d|\\\\d)\",\r\n Y: \"(\\\\d{4})\",\r\n Z: \"(.+)\",\r\n d: \"(\\\\d\\\\d|\\\\d)\",\r\n h: \"(\\\\d\\\\d|\\\\d)\",\r\n i: \"(\\\\d\\\\d|\\\\d)\",\r\n j: \"(\\\\d\\\\d|\\\\d)\",\r\n l: \"(\\\\w+)\",\r\n m: \"(\\\\d\\\\d|\\\\d)\",\r\n n: \"(\\\\d\\\\d|\\\\d)\",\r\n s: \"(\\\\d\\\\d|\\\\d)\",\r\n w: \"(\\\\d\\\\d|\\\\d)\",\r\n y: \"(\\\\d{2})\",\r\n};\r\nvar formats = {\r\n Z: function (date) { return date.toISOString(); },\r\n D: function (date, locale, options) {\r\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\r\n },\r\n F: function (date, locale, options) {\r\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\r\n },\r\n G: function (date, locale, options) {\r\n return pad(formats.h(date, locale, options));\r\n },\r\n H: function (date) { return pad(date.getHours()); },\r\n J: function (date, locale) {\r\n return locale.ordinal !== undefined\r\n ? date.getDate() + locale.ordinal(date.getDate())\r\n : date.getDate();\r\n },\r\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\r\n M: function (date, locale) {\r\n return monthToStr(date.getMonth(), true, locale);\r\n },\r\n S: function (date) { return pad(date.getSeconds()); },\r\n U: function (date) { return date.getTime() / 1000; },\r\n W: function (date, _, options) {\r\n return options.getWeek(date);\r\n },\r\n Y: function (date) { return date.getFullYear(); },\r\n d: function (date) { return pad(date.getDate()); },\r\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\r\n i: function (date) { return pad(date.getMinutes()); },\r\n j: function (date) { return date.getDate(); },\r\n l: function (date, locale) {\r\n return locale.weekdays.longhand[date.getDay()];\r\n },\r\n m: function (date) { return pad(date.getMonth() + 1); },\r\n n: function (date) { return date.getMonth() + 1; },\r\n s: function (date) { return date.getSeconds(); },\r\n w: function (date) { return date.getDay(); },\r\n y: function (date) { return String(date.getFullYear()).substring(2); },\r\n};\n\nif (typeof Object.assign !== \"function\") {\r\n Object.assign = function (target) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n if (!target) {\r\n throw TypeError(\"Cannot convert undefined or null to object\");\r\n }\r\n var _loop_1 = function (source) {\r\n if (source) {\r\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\r\n }\r\n };\r\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\r\n var source = args_1[_a];\r\n _loop_1(source);\r\n }\r\n return target;\r\n };\r\n}\n\nfunction FlatpickrInstance(element, instanceConfig) {\r\n var self = {};\r\n self.parseDate = parseDate;\r\n self.formatDate = formatDate;\r\n self._animationLoop = [];\r\n self._handlers = [];\r\n self._bind = bind;\r\n self._setHoursFromDate = setHoursFromDate;\r\n self.changeMonth = changeMonth;\r\n self.changeYear = changeYear;\r\n self.clear = clear;\r\n self.close = close;\r\n self._createElement = createElement;\r\n self.destroy = destroy;\r\n self.isEnabled = isEnabled;\r\n self.jumpToDate = jumpToDate;\r\n self.open = open;\r\n self.redraw = redraw;\r\n self.set = set;\r\n self.setDate = setDate;\r\n self.toggle = toggle;\r\n function setupHelperFunctions() {\r\n self.utils = {\r\n getDaysInMonth: function (month, yr) {\r\n if (month === void 0) { month = self.currentMonth; }\r\n if (yr === void 0) { yr = self.currentYear; }\r\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\r\n return 29;\r\n return self.l10n.daysInMonth[month];\r\n },\r\n };\r\n }\r\n function init() {\r\n self.element = self.input = element;\r\n self.isOpen = false;\r\n parseConfig();\r\n setupLocale();\r\n setupInputs();\r\n setupDates();\r\n setupHelperFunctions();\r\n if (!self.isMobile)\r\n build();\r\n bindEvents();\r\n if (self.selectedDates.length || self.config.noCalendar) {\r\n if (self.config.enableTime) {\r\n setHoursFromDate(self.config.noCalendar\r\n ? self.latestSelectedDateObj || self.config.minDate\r\n : undefined);\r\n }\r\n updateValue(false);\r\n }\r\n self.showTimeInput =\r\n self.selectedDates.length > 0 || self.config.noCalendar;\r\n if (self.weekWrapper !== undefined && self.daysContainer !== undefined) {\r\n self.calendarContainer.style.width =\r\n self.daysContainer.offsetWidth + self.weekWrapper.offsetWidth + \"px\";\r\n }\r\n if (!self.isMobile)\r\n positionCalendar();\r\n triggerEvent(\"onReady\");\r\n }\r\n function bindToInstance(fn) {\r\n return fn.bind(self);\r\n }\r\n function updateTime(e) {\r\n if (self.config.noCalendar && self.selectedDates.length === 0) {\r\n var minDate = self.config.minDate;\r\n self.setDate(new Date().setHours(!minDate ? self.config.defaultHour : minDate.getHours(), !minDate ? self.config.defaultMinute : minDate.getMinutes(), !minDate || !self.config.enableSeconds\r\n ? self.config.defaultSeconds\r\n : minDate.getSeconds()), false);\r\n setHoursFromInputs();\r\n updateValue();\r\n }\r\n timeWrapper(e);\r\n if (self.selectedDates.length === 0)\r\n return;\r\n if (!self.minDateHasTime ||\r\n e.type !== \"input\" ||\r\n e.target.value.length >= 2) {\r\n setHoursFromInputs();\r\n updateValue();\r\n }\r\n else {\r\n setTimeout(function () {\r\n setHoursFromInputs();\r\n updateValue();\r\n }, 1000);\r\n }\r\n }\r\n function ampm2military(hour, amPM) {\r\n return hour % 12 + 12 * int(amPM === self.l10n.amPM[1]);\r\n }\r\n function military2ampm(hour) {\r\n switch (hour % 24) {\r\n case 0:\r\n case 12:\r\n return 12;\r\n default:\r\n return hour % 12;\r\n }\r\n }\r\n function setHoursFromInputs() {\r\n if (self.hourElement === undefined || self.minuteElement === undefined)\r\n return;\r\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\r\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\r\n : 0;\r\n if (self.amPM !== undefined)\r\n hours = ampm2military(hours, self.amPM.textContent);\r\n if (self.config.minDate &&\r\n self.minDateHasTime &&\r\n self.latestSelectedDateObj &&\r\n compareDates(self.latestSelectedDateObj, self.config.minDate) === 0) {\r\n hours = Math.max(hours, self.config.minDate.getHours());\r\n if (hours === self.config.minDate.getHours())\r\n minutes = Math.max(minutes, self.config.minDate.getMinutes());\r\n }\r\n if (self.config.maxDate &&\r\n self.maxDateHasTime &&\r\n self.latestSelectedDateObj &&\r\n compareDates(self.latestSelectedDateObj, self.config.maxDate) === 0) {\r\n hours = Math.min(hours, self.config.maxDate.getHours());\r\n if (hours === self.config.maxDate.getHours())\r\n minutes = Math.min(minutes, self.config.maxDate.getMinutes());\r\n }\r\n setHours(hours, minutes, seconds);\r\n }\r\n function setHoursFromDate(dateObj) {\r\n var date = dateObj || self.latestSelectedDateObj;\r\n if (date)\r\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\r\n }\r\n function setHours(hours, minutes, seconds) {\r\n if (self.latestSelectedDateObj !== undefined) {\r\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\r\n }\r\n if (!self.hourElement || !self.minuteElement || self.isMobile)\r\n return;\r\n self.hourElement.value = pad(!self.config.time_24hr\r\n ? (12 + hours) % 12 + 12 * int(hours % 12 === 0)\r\n : hours);\r\n self.minuteElement.value = pad(minutes);\r\n if (self.amPM !== undefined)\r\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\r\n if (self.secondElement !== undefined)\r\n self.secondElement.value = pad(seconds);\r\n }\r\n function onYearInput(event) {\r\n var year = parseInt(event.target.value) + (event.delta || 0);\r\n if (year.toString().length === 4 || event.key === \"Enter\") {\r\n self.currentYearElement.blur();\r\n if (!/[^\\d]/.test(year.toString()))\r\n changeYear(year);\r\n }\r\n }\r\n function bind(element, event, handler) {\r\n if (event instanceof Array)\r\n return event.forEach(function (ev) { return bind(element, ev, handler); });\r\n if (element instanceof Array)\r\n return element.forEach(function (el) { return bind(el, event, handler); });\r\n element.addEventListener(event, handler);\r\n self._handlers.push({ element: element, event: event, handler: handler });\r\n }\r\n function onClick(handler) {\r\n return function (evt) {\r\n evt.which === 1 && handler(evt);\r\n };\r\n }\r\n function triggerChange() {\r\n triggerEvent(\"onChange\");\r\n }\r\n function bindEvents() {\r\n if (self.config.wrap) {\r\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\r\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\r\n return bind(el, \"click\", self[evt]);\r\n });\r\n });\r\n }\r\n if (self.isMobile) {\r\n setupMobile();\r\n return;\r\n }\r\n var debouncedResize = debounce(onResize, 50);\r\n self._debouncedChange = debounce(triggerChange, 300);\r\n if (self.config.mode === \"range\" &&\r\n self.daysContainer &&\r\n !/iPhone|iPad|iPod/i.test(navigator.userAgent))\r\n bind(self.daysContainer, \"mouseover\", function (e) {\r\n return onMouseOver(e.target);\r\n });\r\n bind(window.document.body, \"keydown\", onKeyDown);\r\n if (!self.config.static)\r\n bind(self._input, \"keydown\", onKeyDown);\r\n if (!self.config.inline && !self.config.static)\r\n bind(window, \"resize\", debouncedResize);\r\n if (window.ontouchstart !== undefined)\r\n bind(window.document.body, \"touchstart\", documentClick);\r\n bind(window.document.body, \"mousedown\", onClick(documentClick));\r\n bind(self._input, \"blur\", documentClick);\r\n if (self.config.clickOpens === true) {\r\n bind(self._input, \"focus\", self.open);\r\n bind(self._input, \"mousedown\", onClick(self.open));\r\n }\r\n if (self.daysContainer !== undefined) {\r\n self.monthNav.addEventListener(\"wheel\", function (e) { return e.preventDefault(); });\r\n bind(self.monthNav, \"wheel\", debounce(onMonthNavScroll, 10));\r\n bind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\r\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\r\n bind(self.daysContainer, \"mousedown\", onClick(selectDate));\r\n if (self.config.animate) {\r\n bind(self.daysContainer, [\"webkitAnimationEnd\", \"animationend\"], animateDays);\r\n bind(self.monthNav, [\"webkitAnimationEnd\", \"animationend\"], animateMonths);\r\n }\r\n }\r\n if (self.timeContainer !== undefined &&\r\n self.minuteElement !== undefined &&\r\n self.hourElement !== undefined) {\r\n var selText = function (e) {\r\n return e.target.select();\r\n };\r\n bind(self.timeContainer, [\"wheel\", \"input\", \"increment\"], updateTime);\r\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\r\n bind(self.timeContainer, [\"wheel\", \"increment\"], self._debouncedChange);\r\n bind(self.timeContainer, \"input\", triggerChange);\r\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\r\n if (self.secondElement !== undefined)\r\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\r\n if (self.amPM !== undefined) {\r\n bind(self.amPM, \"mousedown\", onClick(function (e) {\r\n updateTime(e);\r\n triggerChange();\r\n }));\r\n }\r\n }\r\n }\r\n function processPostDayAnimation() {\r\n self._animationLoop.forEach(function (f) { return f(); });\r\n self._animationLoop = [];\r\n }\r\n function animateDays(e) {\r\n if (self.daysContainer && self.daysContainer.childNodes.length > 1) {\r\n switch (e.animationName) {\r\n case \"fpSlideLeft\":\r\n self.daysContainer.lastChild &&\r\n self.daysContainer.lastChild.classList.remove(\"slideLeftNew\");\r\n self.daysContainer.removeChild(self.daysContainer\r\n .firstChild);\r\n self.days = self.daysContainer.firstChild;\r\n processPostDayAnimation();\r\n break;\r\n case \"fpSlideRight\":\r\n self.daysContainer.firstChild &&\r\n self.daysContainer.firstChild.classList.remove(\"slideRightNew\");\r\n self.daysContainer.removeChild(self.daysContainer\r\n .lastChild);\r\n self.days = self.daysContainer.firstChild;\r\n processPostDayAnimation();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n function animateMonths(e) {\r\n switch (e.animationName) {\r\n case \"fpSlideLeftNew\":\r\n case \"fpSlideRightNew\":\r\n self.navigationCurrentMonth.classList.remove(\"slideLeftNew\");\r\n self.navigationCurrentMonth.classList.remove(\"slideRightNew\");\r\n var nav = self.navigationCurrentMonth;\r\n while (nav.nextSibling &&\r\n /curr/.test(nav.nextSibling.className))\r\n self.monthNav.removeChild(nav.nextSibling);\r\n while (nav.previousSibling &&\r\n /curr/.test(nav.previousSibling.className))\r\n self.monthNav.removeChild(nav.previousSibling);\r\n self.oldCurMonth = undefined;\r\n break;\r\n }\r\n }\r\n function jumpToDate(jumpDate) {\r\n var jumpTo = jumpDate !== undefined\r\n ? parseDate(jumpDate)\r\n : self.latestSelectedDateObj ||\r\n (self.config.minDate && self.config.minDate > self.now\r\n ? self.config.minDate\r\n : self.config.maxDate && self.config.maxDate < self.now\r\n ? self.config.maxDate\r\n : self.now);\r\n try {\r\n if (jumpTo !== undefined) {\r\n self.currentYear = jumpTo.getFullYear();\r\n self.currentMonth = jumpTo.getMonth();\r\n }\r\n }\r\n catch (e) {\r\n e.message = \"Invalid date supplied: \" + jumpTo;\r\n self.config.errorHandler(e);\r\n }\r\n self.redraw();\r\n }\r\n function timeIncrement(e) {\r\n if (~e.target.className.indexOf(\"arrow\"))\r\n incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\r\n }\r\n function incrementNumInput(e, delta, inputElem) {\r\n var target = e && e.target;\r\n var input = inputElem ||\r\n (target && target.parentNode && target.parentNode.firstChild);\r\n var event = createEvent(\"increment\");\r\n event.delta = delta;\r\n input && input.dispatchEvent(event);\r\n }\r\n function build() {\r\n var fragment = window.document.createDocumentFragment();\r\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\r\n self.calendarContainer.tabIndex = -1;\r\n if (!self.config.noCalendar) {\r\n fragment.appendChild(buildMonthNav());\r\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\r\n if (self.config.weekNumbers) {\r\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\r\n self.innerContainer.appendChild(weekWrapper);\r\n self.weekNumbers = weekNumbers;\r\n self.weekWrapper = weekWrapper;\r\n }\r\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\r\n self.rContainer.appendChild(buildWeekdays());\r\n if (!self.daysContainer) {\r\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\r\n self.daysContainer.tabIndex = -1;\r\n }\r\n buildDays();\r\n self.rContainer.appendChild(self.daysContainer);\r\n self.innerContainer.appendChild(self.rContainer);\r\n fragment.appendChild(self.innerContainer);\r\n }\r\n if (self.config.enableTime) {\r\n fragment.appendChild(buildTime());\r\n }\r\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\r\n toggleClass(self.calendarContainer, \"animate\", self.config.animate);\r\n self.calendarContainer.appendChild(fragment);\r\n var customAppend = self.config.appendTo !== undefined && self.config.appendTo.nodeType;\r\n if (self.config.inline || self.config.static) {\r\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\r\n if (self.config.inline) {\r\n if (!customAppend && self.element.parentNode)\r\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\r\n else if (self.config.appendTo !== undefined)\r\n self.config.appendTo.appendChild(self.calendarContainer);\r\n }\r\n if (self.config.static) {\r\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\r\n if (self.element.parentNode)\r\n self.element.parentNode.insertBefore(wrapper, self.element);\r\n wrapper.appendChild(self.element);\r\n if (self.altInput)\r\n wrapper.appendChild(self.altInput);\r\n wrapper.appendChild(self.calendarContainer);\r\n }\r\n }\r\n if (!self.config.static && !self.config.inline)\r\n (self.config.appendTo !== undefined\r\n ? self.config.appendTo\r\n : window.document.body).appendChild(self.calendarContainer);\r\n }\r\n function createDay(className, date, dayNumber, i) {\r\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\r\n dayElement.dateObj = date;\r\n dayElement.$i = i;\r\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\r\n if (compareDates(date, self.now) === 0) {\r\n self.todayDateElem = dayElement;\r\n dayElement.classList.add(\"today\");\r\n }\r\n if (dateIsEnabled) {\r\n dayElement.tabIndex = -1;\r\n if (isDateSelected(date)) {\r\n dayElement.classList.add(\"selected\");\r\n self.selectedDateElem = dayElement;\r\n if (self.config.mode === \"range\") {\r\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\r\n compareDates(date, self.selectedDates[0]) === 0);\r\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\r\n compareDates(date, self.selectedDates[1]) === 0);\r\n }\r\n }\r\n }\r\n else {\r\n dayElement.classList.add(\"disabled\");\r\n if (self.selectedDates[0] &&\r\n self.minRangeDate &&\r\n date > self.minRangeDate &&\r\n date < self.selectedDates[0])\r\n self.minRangeDate = date;\r\n else if (self.selectedDates[0] &&\r\n self.maxRangeDate &&\r\n date < self.maxRangeDate &&\r\n date > self.selectedDates[0])\r\n self.maxRangeDate = date;\r\n }\r\n if (self.config.mode === \"range\") {\r\n if (isDateInRange(date) && !isDateSelected(date))\r\n dayElement.classList.add(\"inRange\");\r\n if (self.selectedDates.length === 1 &&\r\n self.minRangeDate !== undefined &&\r\n self.maxRangeDate !== undefined &&\r\n (date < self.minRangeDate || date > self.maxRangeDate))\r\n dayElement.classList.add(\"notAllowed\");\r\n }\r\n if (self.weekNumbers &&\r\n className !== \"prevMonthDay\" &&\r\n dayNumber % 7 === 1) {\r\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" +\r\n self.config.getWeek(date) +\r\n \"\");\r\n }\r\n triggerEvent(\"onDayCreate\", dayElement);\r\n return dayElement;\r\n }\r\n function focusOnDay(currentIndex, offset) {\r\n var newIndex = currentIndex + offset || 0, targetNode = (currentIndex !== undefined\r\n ? self.days.childNodes[newIndex]\r\n : self.selectedDateElem ||\r\n self.todayDateElem ||\r\n self.days.childNodes[0]);\r\n var focus = function () {\r\n targetNode = targetNode || self.days.childNodes[newIndex];\r\n targetNode.focus();\r\n if (self.config.mode === \"range\")\r\n onMouseOver(targetNode);\r\n };\r\n if (targetNode === undefined && offset !== 0) {\r\n if (offset > 0) {\r\n self.changeMonth(1, true, undefined, true);\r\n newIndex = newIndex % 42;\r\n }\r\n else if (offset < 0) {\r\n self.changeMonth(-1, true, undefined, true);\r\n newIndex += 42;\r\n }\r\n return afterDayAnim(focus);\r\n }\r\n focus();\r\n }\r\n function afterDayAnim(fn) {\r\n self.config.animate === true ? self._animationLoop.push(fn) : fn();\r\n }\r\n function buildDays(delta) {\r\n if (self.daysContainer === undefined) {\r\n return;\r\n }\r\n var firstOfMonth = (new Date(self.currentYear, self.currentMonth, 1).getDay() -\r\n self.l10n.firstDayOfWeek +\r\n 7) %\r\n 7, isRangeMode = self.config.mode === \"range\";\r\n var prevMonthDays = self.utils.getDaysInMonth((self.currentMonth - 1 + 12) % 12);\r\n var daysInMonth = self.utils.getDaysInMonth(), days = window.document.createDocumentFragment();\r\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\r\n if (self.weekNumbers && self.weekNumbers.firstChild)\r\n self.weekNumbers.textContent = \"\";\r\n if (isRangeMode) {\r\n self.minRangeDate = new Date(self.currentYear, self.currentMonth - 1, dayNumber);\r\n self.maxRangeDate = new Date(self.currentYear, self.currentMonth + 1, (42 - firstOfMonth) % daysInMonth);\r\n }\r\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\r\n days.appendChild(createDay(\"prevMonthDay\", new Date(self.currentYear, self.currentMonth - 1, dayNumber), dayNumber, dayIndex));\r\n }\r\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\r\n days.appendChild(createDay(\"\", new Date(self.currentYear, self.currentMonth, dayNumber), dayNumber, dayIndex));\r\n }\r\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth; dayNum++, dayIndex++) {\r\n days.appendChild(createDay(\"nextMonthDay\", new Date(self.currentYear, self.currentMonth + 1, dayNum % daysInMonth), dayNum, dayIndex));\r\n }\r\n if (isRangeMode && self.selectedDates.length === 1 && days.childNodes[0]) {\r\n self._hidePrevMonthArrow =\r\n self._hidePrevMonthArrow ||\r\n (!!self.minRangeDate &&\r\n self.minRangeDate > days.childNodes[0].dateObj);\r\n self._hideNextMonthArrow =\r\n self._hideNextMonthArrow ||\r\n (!!self.maxRangeDate &&\r\n self.maxRangeDate <\r\n new Date(self.currentYear, self.currentMonth + 1, 1));\r\n }\r\n else\r\n updateNavigationCurrentMonth();\r\n var dayContainer = createElement(\"div\", \"dayContainer\");\r\n dayContainer.appendChild(days);\r\n if (!self.config.animate || delta === undefined)\r\n clearNode(self.daysContainer);\r\n else {\r\n while (self.daysContainer.childNodes.length > 1)\r\n self.daysContainer.removeChild(self.daysContainer.firstChild);\r\n }\r\n if (delta && delta >= 0)\r\n self.daysContainer.appendChild(dayContainer);\r\n else\r\n self.daysContainer.insertBefore(dayContainer, self.daysContainer.firstChild);\r\n self.days = self.daysContainer.childNodes[0];\r\n }\r\n function buildMonthNav() {\r\n var monthNavFragment = window.document.createDocumentFragment();\r\n self.monthNav = createElement(\"div\", \"flatpickr-month\");\r\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\r\n self.prevMonthNav.innerHTML = self.config.prevArrow;\r\n self.currentMonthElement = createElement(\"span\", \"cur-month\");\r\n self.currentMonthElement.title = self.l10n.scrollTitle;\r\n var yearInput = createNumberInput(\"cur-year\");\r\n self.currentYearElement = yearInput.childNodes[0];\r\n self.currentYearElement.title = self.l10n.scrollTitle;\r\n if (self.config.minDate)\r\n self.currentYearElement.min = self.config.minDate\r\n .getFullYear()\r\n .toString();\r\n if (self.config.maxDate) {\r\n self.currentYearElement.max = self.config.maxDate\r\n .getFullYear()\r\n .toString();\r\n self.currentYearElement.disabled =\r\n !!self.config.minDate &&\r\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\r\n }\r\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\r\n self.nextMonthNav.innerHTML = self.config.nextArrow;\r\n self.navigationCurrentMonth = createElement(\"div\", \"flatpickr-current-month\");\r\n self.navigationCurrentMonth.appendChild(self.currentMonthElement);\r\n self.navigationCurrentMonth.appendChild(yearInput);\r\n monthNavFragment.appendChild(self.prevMonthNav);\r\n monthNavFragment.appendChild(self.navigationCurrentMonth);\r\n monthNavFragment.appendChild(self.nextMonthNav);\r\n self.monthNav.appendChild(monthNavFragment);\r\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\r\n get: function () { return self.__hidePrevMonthArrow; },\r\n set: function (bool) {\r\n if (self.__hidePrevMonthArrow !== bool)\r\n self.prevMonthNav.style.display = bool ? \"none\" : \"block\";\r\n self.__hidePrevMonthArrow = bool;\r\n },\r\n });\r\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\r\n get: function () { return self.__hideNextMonthArrow; },\r\n set: function (bool) {\r\n if (self.__hideNextMonthArrow !== bool)\r\n self.nextMonthNav.style.display = bool ? \"none\" : \"block\";\r\n self.__hideNextMonthArrow = bool;\r\n },\r\n });\r\n updateNavigationCurrentMonth();\r\n return self.monthNav;\r\n }\r\n function buildTime() {\r\n self.calendarContainer.classList.add(\"hasTime\");\r\n if (self.config.noCalendar)\r\n self.calendarContainer.classList.add(\"noCalendar\");\r\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\r\n self.timeContainer.tabIndex = -1;\r\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\r\n var hourInput = createNumberInput(\"flatpickr-hour\");\r\n self.hourElement = hourInput.childNodes[0];\r\n var minuteInput = createNumberInput(\"flatpickr-minute\");\r\n self.minuteElement = minuteInput.childNodes[0];\r\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\r\n self.hourElement.value = pad(self.latestSelectedDateObj\r\n ? self.latestSelectedDateObj.getHours()\r\n : self.config.time_24hr\r\n ? self.config.defaultHour\r\n : military2ampm(self.config.defaultHour));\r\n self.minuteElement.value = pad(self.latestSelectedDateObj\r\n ? self.latestSelectedDateObj.getMinutes()\r\n : self.config.defaultMinute);\r\n self.hourElement.step = self.config.hourIncrement.toString();\r\n self.minuteElement.step = self.config.minuteIncrement.toString();\r\n self.hourElement.min = self.config.time_24hr ? \"0\" : \"1\";\r\n self.hourElement.max = self.config.time_24hr ? \"23\" : \"12\";\r\n self.minuteElement.min = \"0\";\r\n self.minuteElement.max = \"59\";\r\n self.hourElement.title = self.minuteElement.title = self.l10n.scrollTitle;\r\n self.timeContainer.appendChild(hourInput);\r\n self.timeContainer.appendChild(separator);\r\n self.timeContainer.appendChild(minuteInput);\r\n if (self.config.time_24hr)\r\n self.timeContainer.classList.add(\"time24hr\");\r\n if (self.config.enableSeconds) {\r\n self.timeContainer.classList.add(\"hasSeconds\");\r\n var secondInput = createNumberInput(\"flatpickr-second\");\r\n self.secondElement = secondInput.childNodes[0];\r\n self.secondElement.value = pad(self.latestSelectedDateObj\r\n ? self.latestSelectedDateObj.getSeconds()\r\n : self.config.defaultSeconds);\r\n self.secondElement.step = self.minuteElement.step;\r\n self.secondElement.min = self.minuteElement.min;\r\n self.secondElement.max = self.minuteElement.max;\r\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\r\n self.timeContainer.appendChild(secondInput);\r\n }\r\n if (!self.config.time_24hr) {\r\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\r\n ? self.hourElement.value\r\n : self.config.defaultHour) > 11)]);\r\n self.amPM.title = self.l10n.toggleTitle;\r\n self.amPM.tabIndex = -1;\r\n self.timeContainer.appendChild(self.amPM);\r\n }\r\n return self.timeContainer;\r\n }\r\n function buildWeekdays() {\r\n if (!self.weekdayContainer)\r\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\r\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\r\n var weekdays = self.l10n.weekdays.shorthand.slice();\r\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\r\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\r\n }\r\n self.weekdayContainer.innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\r\n return self.weekdayContainer;\r\n }\r\n function buildWeeks() {\r\n self.calendarContainer.classList.add(\"hasWeeks\");\r\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\r\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\r\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\r\n weekWrapper.appendChild(weekNumbers);\r\n return {\r\n weekWrapper: weekWrapper,\r\n weekNumbers: weekNumbers,\r\n };\r\n }\r\n function changeMonth(value, is_offset, animate, from_keyboard) {\r\n if (is_offset === void 0) { is_offset = true; }\r\n if (animate === void 0) { animate = self.config.animate; }\r\n if (from_keyboard === void 0) { from_keyboard = false; }\r\n var delta = is_offset ? value : value - self.currentMonth;\r\n if ((delta < 0 && self._hidePrevMonthArrow) ||\r\n (delta > 0 && self._hideNextMonthArrow))\r\n return;\r\n self.currentMonth += delta;\r\n if (self.currentMonth < 0 || self.currentMonth > 11) {\r\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\r\n self.currentMonth = (self.currentMonth + 12) % 12;\r\n triggerEvent(\"onYearChange\");\r\n }\r\n buildDays(animate ? delta : undefined);\r\n if (!animate) {\r\n triggerEvent(\"onMonthChange\");\r\n return updateNavigationCurrentMonth();\r\n }\r\n var nav = self.navigationCurrentMonth;\r\n if (delta < 0) {\r\n while (nav.nextSibling &&\r\n /curr/.test(nav.nextSibling.className))\r\n self.monthNav.removeChild(nav.nextSibling);\r\n }\r\n else if (delta > 0) {\r\n while (nav.previousSibling &&\r\n /curr/.test(nav.previousSibling.className))\r\n self.monthNav.removeChild(nav.previousSibling);\r\n }\r\n self.oldCurMonth = self.navigationCurrentMonth;\r\n self.navigationCurrentMonth = self.monthNav.insertBefore(self.oldCurMonth.cloneNode(true), delta > 0 ? self.oldCurMonth.nextSibling : self.oldCurMonth);\r\n var daysContainer = self.daysContainer;\r\n if (daysContainer.firstChild && daysContainer.lastChild) {\r\n if (delta > 0) {\r\n daysContainer.firstChild.classList.add(\"slideLeft\");\r\n daysContainer.lastChild.classList.add(\"slideLeftNew\");\r\n self.oldCurMonth.classList.add(\"slideLeft\");\r\n self.navigationCurrentMonth.classList.add(\"slideLeftNew\");\r\n }\r\n else if (delta < 0) {\r\n daysContainer.firstChild.classList.add(\"slideRightNew\");\r\n daysContainer.lastChild.classList.add(\"slideRight\");\r\n self.oldCurMonth.classList.add(\"slideRight\");\r\n self.navigationCurrentMonth.classList.add(\"slideRightNew\");\r\n }\r\n }\r\n self.currentMonthElement = self.navigationCurrentMonth\r\n .firstChild;\r\n self.currentYearElement = self.navigationCurrentMonth.lastChild\r\n .childNodes[0];\r\n updateNavigationCurrentMonth();\r\n if (self.oldCurMonth.firstChild)\r\n self.oldCurMonth.firstChild.textContent = monthToStr(self.currentMonth - delta, self.config.shorthandCurrentMonth, self.l10n);\r\n afterDayAnim(function () { return triggerEvent(\"onMonthChange\"); });\r\n if (from_keyboard &&\r\n document.activeElement &&\r\n document.activeElement.$i) {\r\n var index_1 = document.activeElement.$i;\r\n afterDayAnim(function () {\r\n focusOnDay(index_1, 0);\r\n });\r\n }\r\n }\r\n function clear(triggerChangeEvent) {\r\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\r\n self.input.value = \"\";\r\n if (self.altInput)\r\n self.altInput.value = \"\";\r\n if (self.mobileInput)\r\n self.mobileInput.value = \"\";\r\n self.selectedDates = [];\r\n self.latestSelectedDateObj = undefined;\r\n self.showTimeInput = false;\r\n self.redraw();\r\n if (triggerChangeEvent)\r\n triggerEvent(\"onChange\");\r\n }\r\n function close() {\r\n self.isOpen = false;\r\n if (!self.isMobile) {\r\n self.calendarContainer.classList.remove(\"open\");\r\n self._input.classList.remove(\"active\");\r\n }\r\n triggerEvent(\"onClose\");\r\n }\r\n function destroy() {\r\n if (self.config !== undefined)\r\n triggerEvent(\"onDestroy\");\r\n for (var i = self._handlers.length; i--;) {\r\n var h = self._handlers[i];\r\n h.element.removeEventListener(h.event, h.handler);\r\n }\r\n self._handlers = [];\r\n if (self.mobileInput) {\r\n if (self.mobileInput.parentNode)\r\n self.mobileInput.parentNode.removeChild(self.mobileInput);\r\n self.mobileInput = undefined;\r\n }\r\n else if (self.calendarContainer && self.calendarContainer.parentNode)\r\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\r\n if (self.altInput) {\r\n self.input.type = \"text\";\r\n if (self.altInput.parentNode)\r\n self.altInput.parentNode.removeChild(self.altInput);\r\n delete self.altInput;\r\n }\r\n if (self.input) {\r\n self.input.type = self.input._type;\r\n self.input.classList.remove(\"flatpickr-input\");\r\n self.input.removeAttribute(\"readonly\");\r\n self.input.value = \"\";\r\n }\r\n [\r\n \"_showTimeInput\",\r\n \"latestSelectedDateObj\",\r\n \"_hideNextMonthArrow\",\r\n \"_hidePrevMonthArrow\",\r\n \"__hideNextMonthArrow\",\r\n \"__hidePrevMonthArrow\",\r\n \"isMobile\",\r\n \"isOpen\",\r\n \"selectedDateElem\",\r\n \"minDateHasTime\",\r\n \"maxDateHasTime\",\r\n \"days\",\r\n \"daysContainer\",\r\n \"_input\",\r\n \"_positionElement\",\r\n \"innerContainer\",\r\n \"rContainer\",\r\n \"monthNav\",\r\n \"todayDateElem\",\r\n \"calendarContainer\",\r\n \"weekdayContainer\",\r\n \"prevMonthNav\",\r\n \"nextMonthNav\",\r\n \"currentMonthElement\",\r\n \"currentYearElement\",\r\n \"navigationCurrentMonth\",\r\n \"selectedDateElem\",\r\n \"config\",\r\n ].forEach(function (k) {\r\n try {\r\n delete self[k];\r\n }\r\n catch (_) { }\r\n });\r\n }\r\n function isCalendarElem(elem) {\r\n if (self.config.appendTo && self.config.appendTo.contains(elem))\r\n return true;\r\n return self.calendarContainer.contains(elem);\r\n }\r\n function documentClick(e) {\r\n if (self.isOpen && !self.config.inline) {\r\n var isCalendarElement = isCalendarElem(e.target);\r\n var isInput = e.target === self.input ||\r\n e.target === self.altInput ||\r\n self.element.contains(e.target) ||\r\n (e.path &&\r\n e.path.indexOf &&\r\n (~e.path.indexOf(self.input) ||\r\n ~e.path.indexOf(self.altInput)));\r\n var lostFocus = e.type === \"blur\"\r\n ? isInput &&\r\n e.relatedTarget &&\r\n !isCalendarElem(e.relatedTarget)\r\n : !isInput && !isCalendarElement;\r\n if (lostFocus &&\r\n self.config.ignoredFocusElements.indexOf(e.target) === -1) {\r\n self.close();\r\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\r\n self.clear(false);\r\n self.redraw();\r\n }\r\n }\r\n }\r\n }\r\n function changeYear(newYear) {\r\n if (!newYear ||\r\n (self.currentYearElement.min &&\r\n newYear < parseInt(self.currentYearElement.min)) ||\r\n (self.currentYearElement.max &&\r\n newYear > parseInt(self.currentYearElement.max)))\r\n return;\r\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\r\n self.currentYear = newYearNum || self.currentYear;\r\n if (self.config.maxDate &&\r\n self.currentYear === self.config.maxDate.getFullYear()) {\r\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\r\n }\r\n else if (self.config.minDate &&\r\n self.currentYear === self.config.minDate.getFullYear()) {\r\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\r\n }\r\n if (isNewYear) {\r\n self.redraw();\r\n triggerEvent(\"onYearChange\");\r\n }\r\n }\r\n function isEnabled(date, timeless) {\r\n if (timeless === void 0) { timeless = true; }\r\n var dateToCheck = self.parseDate(date, undefined, timeless);\r\n if ((self.config.minDate &&\r\n dateToCheck &&\r\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\r\n (self.config.maxDate &&\r\n dateToCheck &&\r\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\r\n return false;\r\n if (!self.config.enable.length && !self.config.disable.length)\r\n return true;\r\n if (dateToCheck === undefined)\r\n return false;\r\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\r\n for (var i = 0, d = void 0; i < array.length; i++) {\r\n d = array[i];\r\n if (typeof d === \"function\" &&\r\n d(dateToCheck))\r\n return bool;\r\n else if (d instanceof Date &&\r\n dateToCheck !== undefined &&\r\n d.getTime() === dateToCheck.getTime())\r\n return bool;\r\n else if (typeof d === \"string\" && dateToCheck !== undefined) {\r\n var parsed = self.parseDate(d, undefined, true);\r\n return parsed && parsed.getTime() === dateToCheck.getTime()\r\n ? bool\r\n : !bool;\r\n }\r\n else if (typeof d === \"object\" &&\r\n dateToCheck !== undefined &&\r\n d.from &&\r\n d.to &&\r\n dateToCheck.getTime() >= d.from.getTime() &&\r\n dateToCheck.getTime() <= d.to.getTime())\r\n return bool;\r\n }\r\n return !bool;\r\n }\r\n function onKeyDown(e) {\r\n var isInput = e.target === self._input;\r\n var calendarElem = isCalendarElem(e.target);\r\n var allowInput = self.config.allowInput;\r\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\r\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\r\n if (e.key === \"Enter\" && isInput) {\r\n if (allowInput) {\r\n self.setDate(self._input.value, true, e.target === self.altInput\r\n ? self.config.altFormat\r\n : self.config.dateFormat);\r\n return e.target.blur();\r\n }\r\n else\r\n self.open();\r\n }\r\n else if (calendarElem || allowKeydown || allowInlineKeydown) {\r\n var isTimeObj = !!self.timeContainer &&\r\n self.timeContainer.contains(e.target);\r\n switch (e.key) {\r\n case \"Enter\":\r\n if (isTimeObj)\r\n updateValue();\r\n else\r\n selectDate(e);\r\n break;\r\n case \"Escape\":\r\n e.preventDefault();\r\n self.close();\r\n break;\r\n case \"Backspace\":\r\n case \"Delete\":\r\n if (isInput && !self.config.allowInput)\r\n self.clear();\r\n break;\r\n case \"ArrowLeft\":\r\n case \"ArrowRight\":\r\n if (!isTimeObj) {\r\n e.preventDefault();\r\n if (self.daysContainer) {\r\n var delta_1 = e.key === \"ArrowRight\" ? 1 : -1;\r\n if (!e.ctrlKey)\r\n focusOnDay(e.target.$i, delta_1);\r\n else\r\n changeMonth(delta_1, true, undefined, true);\r\n }\r\n }\r\n else if (self.hourElement)\r\n self.hourElement.focus();\r\n break;\r\n case \"ArrowUp\":\r\n case \"ArrowDown\":\r\n e.preventDefault();\r\n var delta = e.key === \"ArrowDown\" ? 1 : -1;\r\n if (self.daysContainer && e.target.$i !== undefined) {\r\n if (e.ctrlKey) {\r\n changeYear(self.currentYear - delta);\r\n focusOnDay(e.target.$i, 0);\r\n }\r\n else if (!isTimeObj)\r\n focusOnDay(e.target.$i, delta * 7);\r\n }\r\n else if (self.config.enableTime) {\r\n if (!isTimeObj && self.hourElement)\r\n self.hourElement.focus();\r\n updateTime(e);\r\n self._debouncedChange();\r\n }\r\n break;\r\n case \"Tab\":\r\n if (e.target === self.hourElement) {\r\n e.preventDefault();\r\n self.minuteElement.select();\r\n }\r\n else if (e.target === self.minuteElement &&\r\n (self.secondElement || self.amPM)) {\r\n e.preventDefault();\r\n if (self.secondElement !== undefined)\r\n self.secondElement.focus();\r\n else if (self.amPM !== undefined)\r\n self.amPM.focus();\r\n }\r\n else if (e.target === self.secondElement && self.amPM) {\r\n e.preventDefault();\r\n self.amPM.focus();\r\n }\r\n break;\r\n case self.l10n.amPM[0].charAt(0):\r\n if (self.amPM !== undefined && e.target === self.amPM) {\r\n self.amPM.textContent = self.l10n.amPM[0];\r\n setHoursFromInputs();\r\n updateValue();\r\n }\r\n break;\r\n case self.l10n.amPM[1].charAt(0):\r\n if (self.amPM !== undefined && e.target === self.amPM) {\r\n self.amPM.textContent = self.l10n.amPM[1];\r\n setHoursFromInputs();\r\n updateValue();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n triggerEvent(\"onKeyDown\", e);\r\n }\r\n }\r\n function onMouseOver(elem) {\r\n if (self.selectedDates.length !== 1 ||\r\n !elem.classList.contains(\"flatpickr-day\") ||\r\n self.minRangeDate === undefined ||\r\n self.maxRangeDate === undefined)\r\n return;\r\n var hoverDate = elem.dateObj, initialDate = self.parseDate(self.selectedDates[0], undefined, true), rangeStartDate = Math.min(hoverDate.getTime(), self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate.getTime(), self.selectedDates[0].getTime()), containsDisabled = false;\r\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\r\n if (!isEnabled(new Date(t))) {\r\n containsDisabled = true;\r\n break;\r\n }\r\n }\r\n var _loop_1 = function (i, date) {\r\n var timestamp = date.getTime();\r\n var outOfRange = timestamp < self.minRangeDate.getTime() ||\r\n timestamp > self.maxRangeDate.getTime(), dayElem = self.days.childNodes[i];\r\n if (outOfRange) {\r\n dayElem.classList.add(\"notAllowed\");\r\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\r\n dayElem.classList.remove(c);\r\n });\r\n return \"continue\";\r\n }\r\n else if (containsDisabled && !outOfRange)\r\n return \"continue\";\r\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\r\n dayElem.classList.remove(c);\r\n });\r\n var minRangeDate = Math.max(self.minRangeDate.getTime(), rangeStartDate), maxRangeDate = Math.min(self.maxRangeDate.getTime(), rangeEndDate);\r\n elem.classList.add(hoverDate < self.selectedDates[0] ? \"startRange\" : \"endRange\");\r\n if (initialDate < hoverDate && timestamp === initialDate.getTime())\r\n dayElem.classList.add(\"startRange\");\r\n else if (initialDate > hoverDate && timestamp === initialDate.getTime())\r\n dayElem.classList.add(\"endRange\");\r\n if (timestamp >= minRangeDate && timestamp <= maxRangeDate)\r\n dayElem.classList.add(\"inRange\");\r\n };\r\n for (var i = 0, date = self.days.childNodes[i].dateObj; i < 42; i++, date =\r\n self.days.childNodes[i] &&\r\n self.days.childNodes[i].dateObj) {\r\n _loop_1(i, date);\r\n }\r\n }\r\n function onResize() {\r\n if (self.isOpen && !self.config.static && !self.config.inline)\r\n positionCalendar();\r\n }\r\n function open(e, positionElement) {\r\n if (positionElement === void 0) { positionElement = self._input; }\r\n if (self.isMobile) {\r\n if (e) {\r\n e.preventDefault();\r\n e.target && e.target.blur();\r\n }\r\n setTimeout(function () {\r\n self.mobileInput !== undefined && self.mobileInput.click();\r\n }, 0);\r\n triggerEvent(\"onOpen\");\r\n return;\r\n }\r\n if (self._input.disabled || self.config.inline)\r\n return;\r\n var wasOpen = self.isOpen;\r\n self.isOpen = true;\r\n positionCalendar(positionElement);\r\n self.calendarContainer.classList.add(\"open\");\r\n self._input.classList.add(\"active\");\r\n !wasOpen && triggerEvent(\"onOpen\");\r\n }\r\n function minMaxDateSetter(type) {\r\n return function (date) {\r\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date));\r\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\r\n if (dateObj !== undefined) {\r\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\r\n dateObj.getHours() > 0 ||\r\n dateObj.getMinutes() > 0 ||\r\n dateObj.getSeconds() > 0;\r\n }\r\n if (self.selectedDates) {\r\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\r\n if (!self.selectedDates.length && type === \"min\")\r\n setHoursFromDate(dateObj);\r\n updateValue();\r\n }\r\n if (self.daysContainer) {\r\n redraw();\r\n if (dateObj !== undefined)\r\n self.currentYearElement[type] = dateObj.getFullYear().toString();\r\n else\r\n self.currentYearElement.removeAttribute(type);\r\n self.currentYearElement.disabled =\r\n !!inverseDateObj &&\r\n dateObj !== undefined &&\r\n inverseDateObj.getFullYear() === dateObj.getFullYear();\r\n }\r\n };\r\n }\r\n function parseConfig() {\r\n var boolOpts = [\r\n \"wrap\",\r\n \"weekNumbers\",\r\n \"allowInput\",\r\n \"clickOpens\",\r\n \"time_24hr\",\r\n \"enableTime\",\r\n \"noCalendar\",\r\n \"altInput\",\r\n \"shorthandCurrentMonth\",\r\n \"inline\",\r\n \"static\",\r\n \"enableSeconds\",\r\n \"disableMobile\",\r\n ];\r\n var hooks = [\r\n \"onChange\",\r\n \"onClose\",\r\n \"onDayCreate\",\r\n \"onDestroy\",\r\n \"onKeyDown\",\r\n \"onMonthChange\",\r\n \"onOpen\",\r\n \"onParseConfig\",\r\n \"onReady\",\r\n \"onValueUpdate\",\r\n \"onYearChange\",\r\n ];\r\n self.config = __assign({}, flatpickr.defaultConfig);\r\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\r\n var formats$$1 = {};\r\n Object.defineProperty(self.config, \"enable\", {\r\n get: function () { return self.config._enable || []; },\r\n set: function (dates) {\r\n self.config._enable = parseDateRules(dates);\r\n },\r\n });\r\n Object.defineProperty(self.config, \"disable\", {\r\n get: function () { return self.config._disable || []; },\r\n set: function (dates) {\r\n self.config._disable = parseDateRules(dates);\r\n },\r\n });\r\n if (!userConfig.dateFormat && userConfig.enableTime) {\r\n formats$$1.dateFormat = userConfig.noCalendar\r\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\r\n : flatpickr.defaultConfig.dateFormat +\r\n \" H:i\" +\r\n (userConfig.enableSeconds ? \":S\" : \"\");\r\n }\r\n if (userConfig.altInput && userConfig.enableTime && !userConfig.altFormat) {\r\n formats$$1.altFormat = userConfig.noCalendar\r\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\r\n : flatpickr.defaultConfig.altFormat +\r\n (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\r\n }\r\n Object.defineProperty(self.config, \"minDate\", {\r\n get: function () { return self.config._minDate; },\r\n set: minMaxDateSetter(\"min\"),\r\n });\r\n Object.defineProperty(self.config, \"maxDate\", {\r\n get: function () { return self.config._maxDate; },\r\n set: minMaxDateSetter(\"max\"),\r\n });\r\n Object.assign(self.config, formats$$1, userConfig);\r\n for (var i = 0; i < boolOpts.length; i++)\r\n self.config[boolOpts[i]] =\r\n self.config[boolOpts[i]] === true ||\r\n self.config[boolOpts[i]] === \"true\";\r\n for (var i = hooks.length; i--;) {\r\n if (self.config[hooks[i]] !== undefined) {\r\n self.config[hooks[i]] = arrayify(self.config[hooks[i]] || []).map(bindToInstance);\r\n }\r\n }\r\n for (var i = 0; i < self.config.plugins.length; i++) {\r\n var pluginConf = self.config.plugins[i](self) || {};\r\n for (var key in pluginConf) {\r\n if (~hooks.indexOf(key)) {\r\n self.config[key] = arrayify(pluginConf[key])\r\n .map(bindToInstance)\r\n .concat(self.config[key]);\r\n }\r\n else if (typeof userConfig[key] === \"undefined\")\r\n self.config[key] = pluginConf[key];\r\n }\r\n }\r\n self.isMobile =\r\n !self.config.disableMobile &&\r\n !self.config.inline &&\r\n self.config.mode === \"single\" &&\r\n !self.config.disable.length &&\r\n !self.config.enable.length &&\r\n !self.config.weekNumbers &&\r\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n triggerEvent(\"onParseConfig\");\r\n }\r\n function setupLocale() {\r\n if (typeof self.config.locale !== \"object\" &&\r\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\r\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\r\n self.l10n = __assign({}, flatpickr.l10ns.default, typeof self.config.locale === \"object\"\r\n ? self.config.locale\r\n : self.config.locale !== \"default\"\r\n ? flatpickr.l10ns[self.config.locale]\r\n : undefined);\r\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\r\n }\r\n function positionCalendar(positionElement) {\r\n if (positionElement === void 0) { positionElement = self._positionElement; }\r\n if (self.calendarContainer === undefined)\r\n return;\r\n var calendarHeight = self.calendarContainer.offsetHeight, calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPos === \"above\" ||\r\n (configPos !== \"below\" &&\r\n distanceFromBottom < calendarHeight &&\r\n inputBounds.top > calendarHeight);\r\n var top = window.pageYOffset +\r\n inputBounds.top +\r\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\r\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\r\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\r\n if (self.config.inline)\r\n return;\r\n var left = window.pageXOffset + inputBounds.left;\r\n var right = window.document.body.offsetWidth - inputBounds.right;\r\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\r\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\r\n if (self.config.static)\r\n return;\r\n self.calendarContainer.style.top = top + \"px\";\r\n if (!rightMost) {\r\n self.calendarContainer.style.left = left + \"px\";\r\n self.calendarContainer.style.right = \"auto\";\r\n }\r\n else {\r\n self.calendarContainer.style.left = \"auto\";\r\n self.calendarContainer.style.right = right + \"px\";\r\n }\r\n }\r\n function redraw() {\r\n if (self.config.noCalendar || self.isMobile)\r\n return;\r\n buildWeekdays();\r\n updateNavigationCurrentMonth();\r\n buildDays();\r\n }\r\n function selectDate(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n var isSelectable = function (day) {\r\n return day.classList &&\r\n day.classList.contains(\"flatpickr-day\") &&\r\n !day.classList.contains(\"disabled\") &&\r\n !day.classList.contains(\"notAllowed\");\r\n };\r\n var t = findParent(e.target, isSelectable);\r\n if (t === undefined)\r\n return;\r\n var target = t;\r\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\r\n var shouldChangeMonth = selectedDate.getMonth() !== self.currentMonth &&\r\n self.config.mode !== \"range\";\r\n self.selectedDateElem = target;\r\n if (self.config.mode === \"single\")\r\n self.selectedDates = [selectedDate];\r\n else if (self.config.mode === \"multiple\") {\r\n var selectedIndex = isDateSelected(selectedDate);\r\n if (selectedIndex)\r\n self.selectedDates.splice(parseInt(selectedIndex), 1);\r\n else\r\n self.selectedDates.push(selectedDate);\r\n }\r\n else if (self.config.mode === \"range\") {\r\n if (self.selectedDates.length === 2)\r\n self.clear();\r\n self.selectedDates.push(selectedDate);\r\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\r\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\r\n }\r\n setHoursFromInputs();\r\n if (shouldChangeMonth) {\r\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\r\n self.currentYear = selectedDate.getFullYear();\r\n self.currentMonth = selectedDate.getMonth();\r\n if (isNewYear)\r\n triggerEvent(\"onYearChange\");\r\n triggerEvent(\"onMonthChange\");\r\n }\r\n buildDays();\r\n if (self.config.minDate &&\r\n self.minDateHasTime &&\r\n self.config.enableTime &&\r\n compareDates(selectedDate, self.config.minDate) === 0)\r\n setHoursFromDate(self.config.minDate);\r\n updateValue();\r\n if (self.config.enableTime)\r\n setTimeout(function () { return (self.showTimeInput = true); }, 50);\r\n if (self.config.mode === \"range\") {\r\n if (self.selectedDates.length === 1) {\r\n onMouseOver(target);\r\n self._hidePrevMonthArrow =\r\n self._hidePrevMonthArrow ||\r\n (self.minRangeDate !== undefined &&\r\n self.minRangeDate >\r\n self.days.childNodes[0].dateObj);\r\n self._hideNextMonthArrow =\r\n self._hideNextMonthArrow ||\r\n (self.maxRangeDate !== undefined &&\r\n self.maxRangeDate <\r\n new Date(self.currentYear, self.currentMonth + 1, 1));\r\n }\r\n else\r\n updateNavigationCurrentMonth();\r\n }\r\n triggerEvent(\"onChange\");\r\n if (!shouldChangeMonth)\r\n focusOnDay(target.$i, 0);\r\n else\r\n afterDayAnim(function () { return self.selectedDateElem && self.selectedDateElem.focus(); });\r\n if (self.hourElement !== undefined)\r\n setTimeout(function () { return self.hourElement !== undefined && self.hourElement.select(); }, 451);\r\n if (self.config.closeOnSelect) {\r\n var single = self.config.mode === \"single\" && !self.config.enableTime;\r\n var range = self.config.mode === \"range\" &&\r\n self.selectedDates.length === 2 &&\r\n !self.config.enableTime;\r\n if (single || range)\r\n self.close();\r\n }\r\n }\r\n function set(option, value) {\r\n if (option !== null && typeof option === \"object\")\r\n Object.assign(self.config, option);\r\n else\r\n self.config[option] = value;\r\n self.redraw();\r\n jumpToDate();\r\n }\r\n function setSelectedDate(inputDate, format) {\r\n var dates = [];\r\n if (inputDate instanceof Array)\r\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\r\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\r\n dates = [self.parseDate(inputDate, format)];\r\n else if (typeof inputDate === \"string\") {\r\n switch (self.config.mode) {\r\n case \"single\":\r\n dates = [self.parseDate(inputDate, format)];\r\n break;\r\n case \"multiple\":\r\n dates = inputDate\r\n .split(self.config.conjunction)\r\n .map(function (date) { return self.parseDate(date, format); });\r\n break;\r\n case \"range\":\r\n dates = inputDate\r\n .split(self.l10n.rangeSeparator)\r\n .map(function (date) { return self.parseDate(date, format); });\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n else\r\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\r\n self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });\r\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\r\n }\r\n function setDate(date, triggerChange, format) {\r\n if (triggerChange === void 0) { triggerChange = false; }\r\n if (date !== 0 && !date)\r\n return self.clear(triggerChange);\r\n setSelectedDate(date, format);\r\n self.showTimeInput = self.selectedDates.length > 0;\r\n self.latestSelectedDateObj = self.selectedDates[0];\r\n self.redraw();\r\n jumpToDate();\r\n setHoursFromDate();\r\n updateValue(triggerChange);\r\n if (triggerChange)\r\n triggerEvent(\"onChange\");\r\n }\r\n function parseDateRules(arr) {\r\n return arr\r\n .map(function (rule) {\r\n if (typeof rule === \"string\" ||\r\n typeof rule === \"number\" ||\r\n rule instanceof Date) {\r\n return self.parseDate(rule, undefined, true);\r\n }\r\n else if (rule &&\r\n typeof rule === \"object\" &&\r\n rule.from &&\r\n rule.to)\r\n return {\r\n from: self.parseDate(rule.from, undefined),\r\n to: self.parseDate(rule.to, undefined),\r\n };\r\n return rule;\r\n })\r\n .filter(function (x) { return x; });\r\n }\r\n function setupDates() {\r\n self.selectedDates = [];\r\n self.now = new Date();\r\n var preloadedDate = self.config.defaultDate || self.input.value;\r\n if (preloadedDate)\r\n setSelectedDate(preloadedDate, self.config.dateFormat);\r\n var initialDate = self.selectedDates.length\r\n ? self.selectedDates[0]\r\n : self.config.minDate &&\r\n self.config.minDate.getTime() > self.now.getTime()\r\n ? self.config.minDate\r\n : self.config.maxDate &&\r\n self.config.maxDate.getTime() < self.now.getTime()\r\n ? self.config.maxDate\r\n : self.now;\r\n self.currentYear = initialDate.getFullYear();\r\n self.currentMonth = initialDate.getMonth();\r\n if (self.selectedDates.length)\r\n self.latestSelectedDateObj = self.selectedDates[0];\r\n self.minDateHasTime =\r\n !!self.config.minDate &&\r\n (self.config.minDate.getHours() > 0 ||\r\n self.config.minDate.getMinutes() > 0 ||\r\n self.config.minDate.getSeconds() > 0);\r\n self.maxDateHasTime =\r\n !!self.config.maxDate &&\r\n (self.config.maxDate.getHours() > 0 ||\r\n self.config.maxDate.getMinutes() > 0 ||\r\n self.config.maxDate.getSeconds() > 0);\r\n Object.defineProperty(self, \"showTimeInput\", {\r\n get: function () { return self._showTimeInput; },\r\n set: function (bool) {\r\n self._showTimeInput = bool;\r\n if (self.calendarContainer)\r\n toggleClass(self.calendarContainer, \"showTimeInput\", bool);\r\n positionCalendar();\r\n },\r\n });\r\n }\r\n function formatDate(dateObj, frmt) {\r\n if (self.config !== undefined && self.config.formatDate !== undefined)\r\n return self.config.formatDate(dateObj, frmt);\r\n return frmt\r\n .split(\"\")\r\n .map(function (c, i, arr) {\r\n return formats[c] && arr[i - 1] !== \"\\\\\"\r\n ? formats[c](dateObj, self.l10n, self.config)\r\n : c !== \"\\\\\" ? c : \"\";\r\n })\r\n .join(\"\");\r\n }\r\n function parseDate(date, givenFormat, timeless) {\r\n if (date !== 0 && !date)\r\n return undefined;\r\n var parsedDate;\r\n var date_orig = date;\r\n if (date instanceof Date)\r\n parsedDate = new Date(date.getTime());\r\n else if (typeof date !== \"string\" &&\r\n date.toFixed !== undefined)\r\n parsedDate = new Date(date);\r\n else if (typeof date === \"string\") {\r\n var format = givenFormat || (self.config || flatpickr.defaultConfig).dateFormat;\r\n var datestr = String(date).trim();\r\n if (datestr === \"today\") {\r\n parsedDate = new Date();\r\n timeless = true;\r\n }\r\n else if (/Z$/.test(datestr) ||\r\n /GMT$/.test(datestr))\r\n parsedDate = new Date(date);\r\n else if (self.config && self.config.parseDate)\r\n parsedDate = self.config.parseDate(date, format);\r\n else {\r\n parsedDate =\r\n !self.config || !self.config.noCalendar\r\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\r\n : new Date(new Date().setHours(0, 0, 0, 0));\r\n var matched = void 0, ops = [];\r\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\r\n var token = format[i];\r\n var isBackSlash = token === \"\\\\\";\r\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\r\n if (tokenRegex[token] && !escaped) {\r\n regexStr += tokenRegex[token];\r\n var match = new RegExp(regexStr).exec(date);\r\n if (match && (matched = true)) {\r\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\r\n fn: revFormat[token],\r\n val: match[++matchIndex],\r\n });\r\n }\r\n }\r\n else if (!isBackSlash)\r\n regexStr += \".\";\r\n ops.forEach(function (_a) {\r\n var fn = _a.fn, val = _a.val;\r\n return (parsedDate =\r\n fn(parsedDate, val, self.l10n) || parsedDate);\r\n });\r\n }\r\n parsedDate = matched ? parsedDate : undefined;\r\n }\r\n }\r\n if (!(parsedDate instanceof Date)) {\r\n self.config.errorHandler(new Error(\"Invalid date provided: \" + date_orig));\r\n return undefined;\r\n }\r\n if (timeless === true)\r\n parsedDate.setHours(0, 0, 0, 0);\r\n return parsedDate;\r\n }\r\n function setupInputs() {\r\n self.input = self.config.wrap\r\n ? element.querySelector(\"[data-input]\")\r\n : element;\r\n if (!self.input) {\r\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\r\n return;\r\n }\r\n self.input._type = self.input.type;\r\n self.input.type = \"text\";\r\n self.input.classList.add(\"flatpickr-input\");\r\n self._input = self.input;\r\n if (self.config.altInput) {\r\n self.altInput = createElement(self.input.nodeName, self.input.className + \" \" + self.config.altInputClass);\r\n self._input = self.altInput;\r\n self.altInput.placeholder = self.input.placeholder;\r\n self.altInput.disabled = self.input.disabled;\r\n self.altInput.required = self.input.required;\r\n self.altInput.type = \"text\";\r\n self.input.type = \"hidden\";\r\n if (!self.config.static && self.input.parentNode)\r\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\r\n }\r\n if (!self.config.allowInput)\r\n self._input.setAttribute(\"readonly\", \"readonly\");\r\n self._positionElement = self.config.positionElement || self._input;\r\n }\r\n function setupMobile() {\r\n var inputType = self.config.enableTime\r\n ? self.config.noCalendar ? \"time\" : \"datetime-local\"\r\n : \"date\";\r\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\r\n self.mobileInput.step = self.input.getAttribute(\"step\") || \"any\";\r\n self.mobileInput.tabIndex = 1;\r\n self.mobileInput.type = inputType;\r\n self.mobileInput.disabled = self.input.disabled;\r\n self.mobileInput.placeholder = self.input.placeholder;\r\n self.mobileFormatStr =\r\n inputType === \"datetime-local\"\r\n ? \"Y-m-d\\\\TH:i:S\"\r\n : inputType === \"date\" ? \"Y-m-d\" : \"H:i:S\";\r\n if (self.selectedDates.length) {\r\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\r\n }\r\n if (self.config.minDate)\r\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\r\n if (self.config.maxDate)\r\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\r\n self.input.type = \"hidden\";\r\n if (self.altInput !== undefined)\r\n self.altInput.type = \"hidden\";\r\n try {\r\n if (self.input.parentNode)\r\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\r\n }\r\n catch (_a) { }\r\n bind(self.mobileInput, \"change\", function (e) {\r\n self.setDate(e.target.value, false, self.mobileFormatStr);\r\n triggerEvent(\"onChange\");\r\n triggerEvent(\"onClose\");\r\n });\r\n }\r\n function toggle() {\r\n if (self.isOpen)\r\n return self.close();\r\n self.open();\r\n }\r\n function triggerEvent(event, data) {\r\n var hooks = self.config[event];\r\n if (hooks !== undefined && hooks.length > 0) {\r\n for (var i = 0; hooks[i] && i < hooks.length; i++)\r\n hooks[i](self.selectedDates, self.input.value, self, data);\r\n }\r\n if (event === \"onChange\") {\r\n self.input.dispatchEvent(createEvent(\"change\"));\r\n self.input.dispatchEvent(createEvent(\"input\"));\r\n }\r\n }\r\n function createEvent(name) {\r\n var e = document.createEvent(\"Event\");\r\n e.initEvent(name, true, true);\r\n return e;\r\n }\r\n function isDateSelected(date) {\r\n for (var i = 0; i < self.selectedDates.length; i++) {\r\n if (compareDates(self.selectedDates[i], date) === 0)\r\n return \"\" + i;\r\n }\r\n return false;\r\n }\r\n function isDateInRange(date) {\r\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\r\n return false;\r\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\r\n compareDates(date, self.selectedDates[1]) <= 0);\r\n }\r\n function updateNavigationCurrentMonth() {\r\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\r\n return;\r\n self.currentMonthElement.textContent =\r\n monthToStr(self.currentMonth, self.config.shorthandCurrentMonth, self.l10n) + \" \";\r\n self.currentYearElement.value = self.currentYear.toString();\r\n self._hidePrevMonthArrow =\r\n self.config.minDate !== undefined &&\r\n (self.currentYear === self.config.minDate.getFullYear()\r\n ? self.currentMonth <= self.config.minDate.getMonth()\r\n : self.currentYear < self.config.minDate.getFullYear());\r\n self._hideNextMonthArrow =\r\n self.config.maxDate !== undefined &&\r\n (self.currentYear === self.config.maxDate.getFullYear()\r\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\r\n : self.currentYear > self.config.maxDate.getFullYear());\r\n }\r\n function updateValue(triggerChange) {\r\n if (triggerChange === void 0) { triggerChange = true; }\r\n if (!self.selectedDates.length)\r\n return self.clear(triggerChange);\r\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\r\n self.mobileInput.value =\r\n self.latestSelectedDateObj !== undefined\r\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\r\n : \"\";\r\n }\r\n var joinChar = self.config.mode !== \"range\"\r\n ? self.config.conjunction\r\n : self.l10n.rangeSeparator;\r\n self.input.value = self.selectedDates\r\n .map(function (dObj) { return self.formatDate(dObj, self.config.dateFormat); })\r\n .join(joinChar);\r\n if (self.altInput !== undefined) {\r\n self.altInput.value = self.selectedDates\r\n .map(function (dObj) { return self.formatDate(dObj, self.config.altFormat); })\r\n .join(joinChar);\r\n }\r\n if (triggerChange !== false)\r\n triggerEvent(\"onValueUpdate\");\r\n }\r\n function onMonthNavScroll(e) {\r\n e.preventDefault();\r\n var isYear = self.currentYearElement.parentNode &&\r\n self.currentYearElement.parentNode.contains(e.target);\r\n if (e.target === self.currentMonthElement || isYear) {\r\n var delta = mouseDelta(e);\r\n if (isYear) {\r\n changeYear(self.currentYear + delta);\r\n e.target.value = self.currentYear.toString();\r\n }\r\n else\r\n self.changeMonth(delta, true, false);\r\n }\r\n }\r\n function onMonthNavClick(e) {\r\n var isPrevMonth = self.prevMonthNav.contains(e.target);\r\n var isNextMonth = self.nextMonthNav.contains(e.target);\r\n if (isPrevMonth || isNextMonth)\r\n changeMonth(isPrevMonth ? -1 : 1);\r\n else if (e.target === self.currentYearElement) {\r\n e.preventDefault();\r\n self.currentYearElement.select();\r\n }\r\n else if (e.target.className === \"arrowUp\")\r\n self.changeYear(self.currentYear + 1);\r\n else if (e.target.className === \"arrowDown\")\r\n self.changeYear(self.currentYear - 1);\r\n }\r\n function timeWrapper(e) {\r\n e.preventDefault();\r\n var isKeyDown = e.type === \"keydown\", input = e.target;\r\n if (self.amPM !== undefined && e.target === self.amPM) {\r\n self.amPM.textContent =\r\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\r\n }\r\n var min = Number(input.min), max = Number(input.max), step = Number(input.step), curValue = parseInt(input.value, 10), delta = e.delta ||\r\n (isKeyDown\r\n ? e.which === 38 ? 1 : -1\r\n : Math.max(-1, Math.min(1, e.wheelDelta || -e.deltaY)) || 0);\r\n var newValue = curValue + step * delta;\r\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\r\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\r\n if (newValue < min) {\r\n newValue =\r\n max +\r\n newValue +\r\n int(!isHourElem) +\r\n (int(isHourElem) && int(!self.amPM));\r\n if (isMinuteElem)\r\n incrementNumInput(undefined, -1, self.hourElement);\r\n }\r\n else if (newValue > max) {\r\n newValue =\r\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\r\n if (isMinuteElem)\r\n incrementNumInput(undefined, 1, self.hourElement);\r\n }\r\n if (self.amPM &&\r\n isHourElem &&\r\n (step === 1\r\n ? newValue + curValue === 23\r\n : Math.abs(newValue - curValue) > step)) {\r\n self.amPM.textContent =\r\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\r\n }\r\n input.value = pad(newValue);\r\n }\r\n }\r\n init();\r\n return self;\r\n}\r\nfunction _flatpickr(nodeList, config) {\r\n var nodes = Array.prototype.slice.call(nodeList);\r\n var instances = [];\r\n for (var i = 0; i < nodes.length; i++) {\r\n var node = nodes[i];\r\n try {\r\n if (node.getAttribute(\"data-fp-omit\") !== null)\r\n continue;\r\n if (node._flatpickr !== undefined) {\r\n node._flatpickr.destroy();\r\n node._flatpickr = undefined;\r\n }\r\n node._flatpickr = FlatpickrInstance(node, config || {});\r\n instances.push(node._flatpickr);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n return instances.length === 1 ? instances[0] : instances;\r\n}\r\nif (typeof HTMLElement !== \"undefined\") {\r\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\r\n return _flatpickr(this, config);\r\n };\r\n HTMLElement.prototype.flatpickr = function (config) {\r\n return _flatpickr([this], config);\r\n };\r\n}\r\nvar flatpickr;\r\nflatpickr = function (selector, config) {\r\n if (selector instanceof NodeList)\r\n return _flatpickr(selector, config);\r\n else if (typeof selector === \"string\")\r\n return _flatpickr(window.document.querySelectorAll(selector), config);\r\n return _flatpickr([selector], config);\r\n};\r\nif (typeof window === \"object\")\r\n window.flatpickr = flatpickr;\r\nflatpickr.defaultConfig = defaults;\r\nflatpickr.l10ns = {\r\n en: __assign({}, english),\r\n default: __assign({}, english),\r\n};\r\nflatpickr.localize = function (l10n) {\r\n flatpickr.l10ns.default = __assign({}, flatpickr.l10ns.default, l10n);\r\n};\r\nflatpickr.setDefaults = function (config) {\r\n flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);\r\n};\r\nif (typeof jQuery !== \"undefined\") {\r\n jQuery.fn.flatpickr = function (config) {\r\n return _flatpickr(this, config);\r\n };\r\n}\r\nDate.prototype.fp_incr = function (days) {\r\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\r\n};\r\nvar flatpickr$1 = flatpickr;\n\nreturn flatpickr$1;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/flatpickr/dist/flatpickr.js\n// module id = 77\n// module chunks = 1","/* flatpickr v4.1.4, @license MIT */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.cs = {})));\n}(this, (function (exports) { 'use strict';\n\nvar fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\r\n ? window.flatpickr\r\n : {\r\n l10ns: {},\r\n };\r\nvar Czech = {\r\n weekdays: {\r\n shorthand: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"],\r\n longhand: [\r\n \"Neděle\",\r\n \"Pondělí\",\r\n \"Úterý\",\r\n \"Středa\",\r\n \"Čtvrtek\",\r\n \"Pátek\",\r\n \"Sobota\",\r\n ],\r\n },\r\n months: {\r\n shorthand: [\r\n \"Led\",\r\n \"Ún\",\r\n \"Bře\",\r\n \"Dub\",\r\n \"Kvě\",\r\n \"Čer\",\r\n \"Čvc\",\r\n \"Srp\",\r\n \"Zář\",\r\n \"Říj\",\r\n \"Lis\",\r\n \"Pro\",\r\n ],\r\n longhand: [\r\n \"Leden\",\r\n \"Únor\",\r\n \"Březen\",\r\n \"Duben\",\r\n \"Květen\",\r\n \"Červen\",\r\n \"Červenec\",\r\n \"Srpen\",\r\n \"Září\",\r\n \"Říjen\",\r\n \"Listopad\",\r\n \"Prosinec\",\r\n ],\r\n },\r\n rangeSeparator: \" do \",\r\n firstDayOfWeek: 1,\r\n ordinal: function () {\r\n return \".\";\r\n },\r\n};\r\nfp.l10ns.cs = Czech;\r\nvar cs = fp.l10ns;\n\nexports.Czech = Czech;\nexports['default'] = cs;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/flatpickr/dist/l10n/cs.js\n// module id = 78\n// module chunks = 1","// add, remove cell\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n cells.forEach( function( cell ) {\n fragment.appendChild( cell.element );\n });\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {Element, Array, NodeList} elems\n * @param {Integer} index\n */\nproto.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\n if ( index === 0 ) {\n // prepend, add to start\n this.cells = cells.concat( this.cells );\n } else if ( isAppend ) {\n // append, add to end\n this.cells = this.cells.concat( cells );\n } else {\n // insert in this.cells\n var endCells = this.cells.splice( index, len - index );\n this.cells = this.cells.concat( cells ).concat( endCells );\n }\n\n this._sizeCells( cells );\n\n var selectedIndexDelta = index > this.selectedIndex ? 0 : cells.length;\n this._cellAddedRemoved( index, selectedIndexDelta );\n};\n\nproto.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {Element, Array, NodeList} elems\n */\nproto.remove = function( elems ) {\n var cells = this.getCells( elems );\n var selectedIndexDelta = 0;\n var len = cells.length;\n var i, cell;\n // calculate selectedIndexDelta, easier if done in seperate loop\n for ( i=0; i < len; i++ ) {\n cell = cells[i];\n var wasBefore = this.cells.indexOf( cell ) < this.selectedIndex;\n selectedIndexDelta -= wasBefore ? 1 : 0;\n }\n\n for ( i=0; i < len; i++ ) {\n cell = cells[i];\n cell.remove();\n // remove item from collection\n utils.removeFrom( this.cells, cell );\n }\n\n if ( cells.length ) {\n // update stuff\n this._cellAddedRemoved( 0, selectedIndexDelta );\n }\n};\n\n// updates when cells are added or removed\nproto._cellAddedRemoved = function( changedCellIndex, selectedIndexDelta ) {\n // TODO this math isn't perfect with grouped slides\n selectedIndexDelta = selectedIndexDelta || 0;\n this.selectedIndex += selectedIndexDelta;\n this.selectedIndex = Math.max( 0, Math.min( this.slides.length - 1, this.selectedIndex ) );\n\n this.cellChange( changedCellIndex, true );\n // backwards compatibility\n this.emitEvent( 'cellAddedRemoved', [ changedCellIndex, selectedIndexDelta ] );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = this.cells.indexOf( cell );\n this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n var prevSlideableWidth = this.slideableWidth;\n this._positionCells( changedCellIndex );\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\n // position slider\n if ( this.options.freeScroll ) {\n // shift x by change in slideableWidth\n // TODO fix position shifts when prepending w/ freeScroll\n var deltaX = prevSlideableWidth - this.slideableWidth;\n this.x += deltaX * this.cellAlign;\n this.positionSlider();\n } else {\n // do not position slider after lazy load\n if ( isPositioningSlider ) {\n this.positionSliderAtSelected();\n }\n this.select( this.selectedIndex );\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/flickity/js/add-remove-cell.js\n// module id = 79\n// module chunks = 1","// animate\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'fizzy-ui-utils/utils'\n ], function( utils ) {\n return factory( window, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, utils ) {\n\n'use strict';\n\n// -------------------------- requestAnimationFrame -------------------------- //\n\n// get rAF, prefixed, if present\nvar requestAnimationFrame = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame;\n\n// fallback to setTimeout\nvar lastTime = 0;\nif ( !requestAnimationFrame ) {\n requestAnimationFrame = function( callback ) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max( 0, 16 - ( currTime - lastTime ) );\n var id = setTimeout( callback, timeToCall );\n lastTime = currTime + timeToCall;\n return id;\n };\n}\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n });\n }\n};\n\n\nvar transformProperty = ( function () {\n var style = document.documentElement.style;\n if ( typeof style.transform == 'string' ) {\n return 'transform';\n }\n return 'WebkitTransform';\n})();\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\n if ( this.options.wrapAround && this.cells.length > 1 ) {\n x = utils.modulo( x, this.slideableWidth );\n x = x - this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n x = x + this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft && transformProperty ? -x : x;\n var value = this.getPositionValue( x );\n // use 3D tranforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style[ transformProperty ] = this.isAnimating ?\n 'translate3d(' + value + ',0,0)' : 'translateX(' + value + ')';\n\n // scroll event\n var firstSlide = this.slides[0];\n if ( firstSlide ) {\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n }\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n if ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if ( this.restingFrames > 2 ) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n this.positionSlider();\n this.dispatchEvent('settle');\n }\n};\n\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n for ( var i=0; i < cells.length; i++ ) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift( cellShift );\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i=0; i < cells.length; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.isPointerDown ) {\n return;\n }\n // change the position to drag position by applying force\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no cells\n if ( this.isPointerDown || this.isFreeScrolling || !this.cells.length ) {\n return;\n }\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/flickity/js/animate.js\n// module id = 80\n// module chunks = 1","// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size'\n ], function( getSize ) {\n return factory( window, getSize );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n this.element.style.position = 'absolute';\n this.x = 0;\n this.shift = 0;\n};\n\nproto.destroy = function() {\n // reset style\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[ side ] = '';\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n // render position of cell with in slider\n var side = this.parent.originSide;\n this.element.style[ side ] = this.parent.getPositionValue( x );\n};\n\n/**\n * @param {Integer} factor - 0, 1, or -1\n**/\nproto.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/flickity/js/cell.js\n// module id = 81\n// module chunks = 1","// drag\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, Unidragger, utils ) {\n return factory( window, Flickity, Unidragger, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: true,\n dragThreshold: 3,\n});\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nvar isTouch = 'createTouch' in document;\nvar isTouchmoveScrollCanceled = false;\n\nproto._createDrag = function() {\n this.on( 'activate', this.bindDrag );\n this.on( 'uiChange', this._uiChangeDrag );\n this.on( 'childUIPointerDown', this._childUIPointerDownDrag );\n this.on( 'deactivate', this.unbindDrag );\n // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\n // #457, RubaXa/Sortable#973\n if ( isTouch && !isTouchmoveScrollCanceled ) {\n window.addEventListener( 'touchmove', function() {});\n isTouchmoveScrollCanceled = true;\n }\n};\n\nproto.bindDrag = function() {\n if ( !this.options.draggable || this.isDragBound ) {\n return;\n }\n this.element.classList.add('is-draggable');\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.isDragBound = true;\n};\n\nproto.unbindDrag = function() {\n if ( !this.isDragBound ) {\n return;\n }\n this.element.classList.remove('is-draggable');\n this.unbindHandles();\n delete this.isDragBound;\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\nproto._childUIPointerDownDrag = function( event ) {\n event.preventDefault();\n this.pointerDownFocus( event );\n};\n\n// -------------------------- pointer events -------------------------- //\n\n// nodes that have text fields\nvar cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true,\n};\n\nproto.pointerDown = function( event, pointer ) {\n // dismiss inputs with text fields. #403, #404\n var isCursorInput = cursorNodes[ event.target.nodeName ] &&\n !clickTypes[ event.target.type ];\n if ( isCursorInput ) {\n // reset pointerDown logic\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n return;\n }\n\n this._dragPointerDown( event, pointer );\n\n // kludge to blur focused inputs in dragger\n var focused = document.activeElement;\n if ( focused && focused.blur && focused != this.element &&\n // do not blur body for IE9 & 10, #117\n focused != document.body ) {\n focused.blur();\n }\n this.pointerDownFocus( event );\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // bind move and end events\n this._bindPostStartEvents( event );\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener( 'scroll', this );\n\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nproto.pointerDownFocus = function( event ) {\n // focus element, if not touch, and its not an input or select\n var canPointerDown = getCanPointerDown( event );\n if ( !this.options.accessibility || canPointerDown ) {\n return;\n }\n var prevScrollY = window.pageYOffset;\n this.element.focus();\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\nvar focusNodes = {\n INPUT: true,\n SELECT: true,\n};\n\nfunction getCanPointerDown( event ) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[ event.target.nodeName ];\n return isTouchStart || isTouchPointer || isFocusNode;\n}\n\nproto.canPreventDefaultOnPointerDown = function( event ) {\n // prevent default, unless touchstart or input\n var canPointerDown = getCanPointerDown( event );\n return !canPointerDown;\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n var dragX = this.dragStartPosition + moveVector.x * direction;\n\n if ( !this.options.wrapAround && this.slides.length ) {\n // slow drag\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n if ( this.options.freeScroll ) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\n var index = this.dragEndRestingSelect();\n\n if ( this.options.freeScroll && !this.options.wrapAround ) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select( index );\n delete this.isDragSelect;\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected slide\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // if contain, keep going if distance is equal to minDistance\n function( d, md ) { return d <= md; } : function( d, md ) { return d < md; };\n while ( condition( distance, minDistance ) ) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance( -restingX, index );\n if ( distance === null ) {\n break;\n }\n distance = Math.abs( distance );\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment\n };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x\n * @param {Integer} index - slide index\n */\nproto.getSlideDistance = function( x, index ) {\n var len = this.slides.length;\n // wrap around if at least 2 slides\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var slide = this.slides[ slideIndex ];\n if ( !slide ) {\n return null;\n }\n // add distance for wrap-around slides\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index / len ) : 0;\n return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100 ) {\n return 0;\n }\n\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n var delta = this.previousDragX - this.dragX;\n if ( distance > 0 && delta > 0 ) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if ( distance < 0 && delta < 0 ) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n // get clickedCell, if cell was clicked\n var clickedCell = this.getParentCell( event.target );\n var cellElem = clickedCell && clickedCell.element;\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n}\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/flickity/js/drag.js\n// module id = 82\n// module chunks = 1","// lazyload\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n cellElems.forEach( function( cellElem ) {\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n });\n // load lazy images\n lazyImages.forEach( function( img ) {\n new LazyLoader( img, this );\n }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.nodeName == 'IMG' &&\n cellElem.getAttribute('data-flickity-lazyload') ) {\n return [ cellElem ];\n }\n // select lazy images in cell\n var imgs = cellElem.querySelectorAll('img[data-flickity-lazyload]');\n return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n // load image\n this.img.src = this.img.getAttribute('data-flickity-lazyload');\n // remove attr\n this.img.removeAttribute('data-flickity-lazyload');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n this.img.classList.add( className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/flickity/js/lazyload.js\n// module id = 83\n// module chunks = 1","// page dots\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'tap-listener/tap-listener',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, TapListener, utils ) {\n return factory( window, Flickity, TapListener, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('tap-listener'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.TapListener,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, TapListener, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = new TapListener();\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n // events\n this.on( 'tap', this.onTap );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n this.setDots();\n this.bindTap( this.holder );\n // add to DOM\n this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.holder );\n TapListener.prototype.destroy.call( this );\n};\n\nPageDots.prototype.setDots = function() {\n // get difference between number of slides and number of dots\n var delta = this.parent.slides.length - this.dots.length;\n if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.prototype.addDots = function( count ) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n while ( count ) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n fragment.appendChild( dot );\n newDots.push( dot );\n count--;\n }\n this.holder.appendChild( fragment );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( function( dot ) {\n this.holder.removeChild( dot );\n }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.className = 'dot';\n }\n // don't proceed if no dots\n if ( !this.dots.length ) {\n return;\n }\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\n this.selectedDot.className = 'dot is-selected';\n};\n\nPageDots.prototype.onTap = function( event ) {\n var target = event.target;\n // only care about dot clicks\n if ( target.nodeName != 'LI' ) {\n return;\n }\n\n this.parent.uiChange();\n var index = this.dots.indexOf( target );\n this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n this.deactivate();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true\n});\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n // events\n this.on( 'activate', this.activatePageDots );\n this.on( 'select', this.updateSelectedPageDots );\n this.on( 'cellChange', this.updatePageDots );\n this.on( 'resize', this.updatePageDots );\n this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/flickity/js/page-dots.js\n// module id = 84\n// module chunks = 1","// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'fizzy-ui-utils/utils',\n './flickity'\n ], function( EvEmitter, utils, Flickity ) {\n return factory( EvEmitter, utils, Flickity );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EvEmitter,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Page Visibility -------------------------- //\n// https://developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API\n\nvar hiddenProperty, visibilityEvent;\nif ( 'hidden' in document ) {\n hiddenProperty = 'hidden';\n visibilityEvent = 'visibilitychange';\n} else if ( 'webkitHidden' in document ) {\n hiddenProperty = 'webkitHidden';\n visibilityEvent = 'webkitvisibilitychange';\n}\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n if ( visibilityEvent ) {\n this.onVisibilityChange = function() {\n this.visibilityChange();\n }.bind( this );\n this.onVisibilityPlay = function() {\n this.visibilityPlay();\n }.bind( this );\n }\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n var isPageHidden = document[ hiddenProperty ];\n if ( visibilityEvent && isPageHidden ) {\n document.addEventListener( visibilityEvent, this.onVisibilityPlay );\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n if ( visibilityEvent ) {\n document.addEventListener( visibilityEvent, this.onVisibilityChange );\n }\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function() {\n // do not tick if not playing\n if ( this.state != 'playing' ) {\n return;\n }\n\n var time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n if ( visibilityEvent ) {\n document.removeEventListener( visibilityEvent, this.onVisibilityChange );\n }\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if paused\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isPageHidden = document[ hiddenProperty ];\n this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n this.play();\n document.removeEventListener( visibilityEvent, this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true\n});\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n this.player = new Player( this );\n\n this.on( 'activate', this.activatePlayer );\n this.on( 'uiChange', this.stopPlayer );\n this.on( 'pointerDown', this.stopPlayer );\n this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n this.player.play();\n};\n\nproto.stopPlayer = function() {\n this.player.stop();\n};\n\nproto.pausePlayer = function() {\n this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n this.player.stop();\n this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n this.player.unpause();\n this.element.removeEventListener( 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/flickity/js/player.js\n// module id = 85\n// module chunks = 1","// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'tap-listener/tap-listener',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, TapListener, utils ) {\n return factory( window, Flickity, TapListener, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('tap-listener'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.TapListener,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, TapListener, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = new TapListener();\n\nPrevNextButton.prototype._create = function() {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n var element = this.element = document.createElement('button');\n element.className = 'flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next';\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n // init as disabled\n this.disable();\n\n element.setAttribute( 'aria-label', this.isPrevious ? 'previous' : 'next' );\n\n // create arrow\n var svg = this.createSVG();\n element.appendChild( svg );\n // events\n this.on( 'tap', this.onTap );\n this.parent.on( 'select', this.update.bind( this ) );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n this.bindTap( this.element );\n // click events from keyboard\n this.element.addEventListener( 'click', this );\n // add to DOM\n this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.element );\n // do regular TapListener destroy\n TapListener.prototype.destroy.call( this );\n // click events from keyboard\n this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n var svg = document.createElementNS( svgURI, 'svg');\n svg.setAttribute( 'viewBox', '0 0 100 100' );\n var path = document.createElementNS( svgURI, 'path');\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n path.setAttribute( 'd', pathMovements );\n path.setAttribute( 'class', 'arrow' );\n // rotate arrow\n if ( !this.isLeft ) {\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n }\n svg.appendChild( path );\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.onTap = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[ method ]();\n};\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n // only allow clicks from keyboard\n var focused = document.activeElement;\n if ( focused && focused == this.element ) {\n this.onTap();\n }\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\n this.enable();\n return;\n }\n var lastIndex = slides.length ? slides.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30\n }\n});\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n if ( !this.options.prevNextButtons ) {\n return;\n }\n\n this.prevButton = new PrevNextButton( -1, this );\n this.nextButton = new PrevNextButton( 1, this );\n\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/flickity/js/prev-next-button.js\n// module id = 86\n// module chunks = 1","// slide\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\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.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.changeSelectedClass('add');\n};\n\nproto.unselect = function() {\n this.changeSelectedClass('remove');\n};\n\nproto.changeSelectedClass = function( method ) {\n this.cells.forEach( function( cell ) {\n cell.element.classList[ method ]('is-selected');\n });\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n });\n};\n\nreturn Slide;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/flickity/js/slide.js\n// module id = 87\n// module chunks = 1","/* Font Face Observer v2.0.13 - © Bram Stein. License: BSD-3-Clause */(function(){function l(a,b){document.addEventListener?a.addEventListener(\"scroll\",b,!1):a.attachEvent(\"scroll\",b)}function m(a){document.body?a():document.addEventListener?document.addEventListener(\"DOMContentLoaded\",function c(){document.removeEventListener(\"DOMContentLoaded\",c);a()}):document.attachEvent(\"onreadystatechange\",function k(){if(\"interactive\"==document.readyState||\"complete\"==document.readyState)document.detachEvent(\"onreadystatechange\",k),a()})};function r(a){this.a=document.createElement(\"div\");this.a.setAttribute(\"aria-hidden\",\"true\");this.a.appendChild(document.createTextNode(a));this.b=document.createElement(\"span\");this.c=document.createElement(\"span\");this.h=document.createElement(\"span\");this.f=document.createElement(\"span\");this.g=-1;this.b.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";this.c.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\nthis.f.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";this.h.style.cssText=\"display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;\";this.b.appendChild(this.h);this.c.appendChild(this.f);this.a.appendChild(this.b);this.a.appendChild(this.c)}\nfunction t(a,b){a.a.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:\"+b+\";\"}function y(a){var b=a.a.offsetWidth,c=b+100;a.f.style.width=c+\"px\";a.c.scrollLeft=c;a.b.scrollLeft=a.b.scrollWidth+100;return a.g!==b?(a.g=b,!0):!1}function z(a,b){function c(){var a=k;y(a)&&a.a.parentNode&&b(a.g)}var k=a;l(a.b,c);l(a.c,c);y(a)};function A(a,b){var c=b||{};this.family=a;this.style=c.style||\"normal\";this.weight=c.weight||\"normal\";this.stretch=c.stretch||\"normal\"}var B=null,C=null,E=null,F=null;function G(){if(null===C)if(J()&&/Apple/.test(window.navigator.vendor)){var a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent);C=!!a&&603>parseInt(a[1],10)}else C=!1;return C}function J(){null===F&&(F=!!document.fonts);return F}\nfunction K(){if(null===E){var a=document.createElement(\"div\");try{a.style.font=\"condensed 100px sans-serif\"}catch(b){}E=\"\"!==a.style.font}return E}function L(a,b){return[a.style,a.weight,K()?a.stretch:\"\",\"100px\",b].join(\" \")}\nA.prototype.load=function(a,b){var c=this,k=a||\"BESbswy\",q=0,D=b||3E3,H=(new Date).getTime();return new Promise(function(a,b){if(J()&&!G()){var M=new Promise(function(a,b){function e(){(new Date).getTime()-H>=D?b():document.fonts.load(L(c,'\"'+c.family+'\"'),k).then(function(c){1<=c.length?a():setTimeout(e,25)},function(){b()})}e()}),N=new Promise(function(a,c){q=setTimeout(c,D)});Promise.race([N,M]).then(function(){clearTimeout(q);a(c)},function(){b(c)})}else m(function(){function u(){var b;if(b=-1!=\nf&&-1!=g||-1!=f&&-1!=h||-1!=g&&-1!=h)(b=f!=g&&f!=h&&g!=h)||(null===B&&(b=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent),B=!!b&&(536>parseInt(b[1],10)||536===parseInt(b[1],10)&&11>=parseInt(b[2],10))),b=B&&(f==v&&g==v&&h==v||f==w&&g==w&&h==w||f==x&&g==x&&h==x)),b=!b;b&&(d.parentNode&&d.parentNode.removeChild(d),clearTimeout(q),a(c))}function I(){if((new Date).getTime()-H>=D)d.parentNode&&d.parentNode.removeChild(d),b(c);else{var a=document.hidden;if(!0===a||void 0===a)f=e.a.offsetWidth,\ng=n.a.offsetWidth,h=p.a.offsetWidth,u();q=setTimeout(I,50)}}var e=new r(k),n=new r(k),p=new r(k),f=-1,g=-1,h=-1,v=-1,w=-1,x=-1,d=document.createElement(\"div\");d.dir=\"ltr\";t(e,L(c,\"sans-serif\"));t(n,L(c,\"serif\"));t(p,L(c,\"monospace\"));d.appendChild(e.a);d.appendChild(n.a);d.appendChild(p.a);document.body.appendChild(d);v=e.a.offsetWidth;w=n.a.offsetWidth;x=p.a.offsetWidth;I();z(e,function(a){f=a;u()});t(e,L(c,'\"'+c.family+'\",sans-serif'));z(n,function(a){g=a;u()});t(n,L(c,'\"'+c.family+'\",serif'));\nz(p,function(a){h=a;u()});t(p,L(c,'\"'+c.family+'\",monospace'))})})};\"object\"===typeof module?module.exports=A:(window.FontFaceObserver=A,window.FontFaceObserver.prototype.load=A.prototype.load);}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fontfaceobserver/fontfaceobserver.standalone.js\n// module id = 88\n// module chunks = 1","/**\n * @license\n * Fuse - Lightweight fuzzy-search\n *\n * Copyright (c) 2012-2016 Kirollos Risk .\n * All Rights Reserved. Apache Software License 2.0\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n;(function (global) {\n 'use strict'\n\n /** @type {function(...*)} */\n function log () {\n console.log.apply(console, arguments)\n }\n\n var defaultOptions = {\n // The name of the identifier property. If specified, the returned result will be a list\n // of the items' dentifiers, otherwise it will be a list of the items.\n id: null,\n\n // Indicates whether comparisons should be case sensitive.\n\n caseSensitive: false,\n\n // An array of values that should be included from the searcher's output. When this array\n // contains elements, each result in the list will be of the form `{ item: ..., include1: ..., include2: ... }`.\n // Values you can include are `score`, `matchedLocations`\n include: [],\n\n // Whether to sort the result list, by score\n shouldSort: true,\n\n // The search function to use\n // Note that the default search function ([[Function]]) must conform to the following API:\n //\n // @param pattern The pattern string to search\n // @param options The search option\n // [[Function]].constructor = function(pattern, options)\n //\n // @param text: the string to search in for the pattern\n // @return Object in the form of:\n // - isMatch: boolean\n // - score: Int\n // [[Function]].prototype.search = function(text)\n searchFn: BitapSearcher,\n\n // Default sort function\n sortFn: function (a, b) {\n return a.score - b.score\n },\n\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: deepValue,\n\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n\n // Will print to the console. Useful for debugging.\n verbose: false,\n\n // When true, the search algorithm will search individual words **and** the full string,\n // computing the final score as a function of both. Note that when `tokenize` is `true`,\n // the `threshold`, `distance`, and `location` are inconsequential for individual tokens.\n tokenize: false,\n\n // When true, the result set will only include records that match all tokens. Will only work\n // if `tokenize` is also true.\n matchAllTokens: false,\n\n // Regex used to separate words when searching. Only applicable when `tokenize` is `true`.\n tokenSeparator: / +/g,\n\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength: 1,\n\n // When true, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n findAllMatches: false\n }\n\n /**\n * @constructor\n * @param {!Array} list\n * @param {!Object} options\n */\n function Fuse (list, options) {\n var key\n\n this.list = list\n this.options = options = options || {}\n\n for (key in defaultOptions) {\n if (!defaultOptions.hasOwnProperty(key)) {\n continue;\n }\n // Add boolean type options\n if (typeof defaultOptions[key] === 'boolean') {\n this.options[key] = key in options ? options[key] : defaultOptions[key];\n // Add all other options\n } else {\n this.options[key] = options[key] || defaultOptions[key]\n }\n }\n }\n\n Fuse.VERSION = '2.7.3'\n\n /**\n * Sets a new list for Fuse to match against.\n * @param {!Array} list\n * @return {!Array} The newly set list\n * @public\n */\n Fuse.prototype.set = function (list) {\n this.list = list\n return list\n }\n\n Fuse.prototype.search = function (pattern) {\n if (this.options.verbose) log('\\nSearch term:', pattern, '\\n')\n\n this.pattern = pattern\n this.results = []\n this.resultMap = {}\n this._keyMap = null\n\n this._prepareSearchers()\n this._startSearch()\n this._computeScore()\n this._sort()\n\n var output = this._format()\n return output\n }\n\n Fuse.prototype._prepareSearchers = function () {\n var options = this.options\n var pattern = this.pattern\n var searchFn = options.searchFn\n var tokens = pattern.split(options.tokenSeparator)\n var i = 0\n var len = tokens.length\n\n if (this.options.tokenize) {\n this.tokenSearchers = []\n for (; i < len; i++) {\n this.tokenSearchers.push(new searchFn(tokens[i], options))\n }\n }\n this.fullSeacher = new searchFn(pattern, options)\n }\n\n Fuse.prototype._startSearch = function () {\n var options = this.options\n var getFn = options.getFn\n var list = this.list\n var listLen = list.length\n var keys = this.options.keys\n var keysLen = keys.length\n var key\n var weight\n var item = null\n var i\n var j\n\n // Check the first item in the list, if it's a string, then we assume\n // that every item in the list is also a string, and thus it's a flattened array.\n if (typeof list[0] === 'string') {\n // Iterate over every item\n for (i = 0; i < listLen; i++) {\n this._analyze('', list[i], i, i)\n }\n } else {\n this._keyMap = {}\n // Otherwise, the first item is an Object (hopefully), and thus the searching\n // is done on the values of the keys of each item.\n // Iterate over every item\n for (i = 0; i < listLen; i++) {\n item = list[i]\n // Iterate over every key\n for (j = 0; j < keysLen; j++) {\n key = keys[j]\n if (typeof key !== 'string') {\n weight = (1 - key.weight) || 1\n this._keyMap[key.name] = {\n weight: weight\n }\n if (key.weight <= 0 || key.weight > 1) {\n throw new Error('Key weight has to be > 0 and <= 1')\n }\n key = key.name\n } else {\n this._keyMap[key] = {\n weight: 1\n }\n }\n this._analyze(key, getFn(item, key, []), item, i)\n }\n }\n }\n }\n\n Fuse.prototype._analyze = function (key, text, entity, index) {\n var options = this.options\n var words\n var scores\n var exists = false\n var existingResult\n var averageScore\n var finalScore\n var scoresLen\n var mainSearchResult\n var tokenSearcher\n var termScores\n var word\n var tokenSearchResult\n var hasMatchInText\n var checkTextMatches\n var i\n var j\n\n // Check if the text can be searched\n if (text === undefined || text === null) {\n return\n }\n\n scores = []\n\n var numTextMatches = 0\n\n if (typeof text === 'string') {\n words = text.split(options.tokenSeparator)\n\n if (options.verbose) log('---------\\nKey:', key)\n\n if (this.options.tokenize) {\n for (i = 0; i < this.tokenSearchers.length; i++) {\n tokenSearcher = this.tokenSearchers[i]\n\n if (options.verbose) log('Pattern:', tokenSearcher.pattern)\n\n termScores = []\n hasMatchInText = false\n\n for (j = 0; j < words.length; j++) {\n word = words[j]\n tokenSearchResult = tokenSearcher.search(word)\n var obj = {}\n if (tokenSearchResult.isMatch) {\n obj[word] = tokenSearchResult.score\n exists = true\n hasMatchInText = true\n scores.push(tokenSearchResult.score)\n } else {\n obj[word] = 1\n if (!this.options.matchAllTokens) {\n scores.push(1)\n }\n }\n termScores.push(obj)\n }\n\n if (hasMatchInText) {\n numTextMatches++\n }\n\n if (options.verbose) log('Token scores:', termScores)\n }\n\n averageScore = scores[0]\n scoresLen = scores.length\n for (i = 1; i < scoresLen; i++) {\n averageScore += scores[i]\n }\n averageScore = averageScore / scoresLen\n\n if (options.verbose) log('Token score average:', averageScore)\n }\n\n mainSearchResult = this.fullSeacher.search(text)\n if (options.verbose) log('Full text score:', mainSearchResult.score)\n\n finalScore = mainSearchResult.score\n if (averageScore !== undefined) {\n finalScore = (finalScore + averageScore) / 2\n }\n\n if (options.verbose) log('Score average:', finalScore)\n\n checkTextMatches = (this.options.tokenize && this.options.matchAllTokens) ? numTextMatches >= this.tokenSearchers.length : true\n\n if (options.verbose) log('Check Matches', checkTextMatches)\n\n // If a match is found, add the item to , including its score\n if ((exists || mainSearchResult.isMatch) && checkTextMatches) {\n // Check if the item already exists in our results\n existingResult = this.resultMap[index]\n\n if (existingResult) {\n // Use the lowest score\n // existingResult.score, bitapResult.score\n existingResult.output.push({\n key: key,\n score: finalScore,\n matchedIndices: mainSearchResult.matchedIndices\n })\n } else {\n // Add it to the raw result list\n this.resultMap[index] = {\n item: entity,\n output: [{\n key: key,\n score: finalScore,\n matchedIndices: mainSearchResult.matchedIndices\n }]\n }\n\n this.results.push(this.resultMap[index])\n }\n }\n } else if (isArray(text)) {\n for (i = 0; i < text.length; i++) {\n this._analyze(key, text[i], entity, index)\n }\n }\n }\n\n Fuse.prototype._computeScore = function () {\n var i\n var j\n var keyMap = this._keyMap\n var totalScore\n var output\n var scoreLen\n var score\n var weight\n var results = this.results\n var bestScore\n var nScore\n\n if (this.options.verbose) log('\\n\\nComputing score:\\n')\n\n for (i = 0; i < results.length; i++) {\n totalScore = 0\n output = results[i].output\n scoreLen = output.length\n\n bestScore = 1\n\n for (j = 0; j < scoreLen; j++) {\n score = output[j].score\n weight = keyMap ? keyMap[output[j].key].weight : 1\n\n nScore = score * weight\n\n if (weight !== 1) {\n bestScore = Math.min(bestScore, nScore)\n } else {\n totalScore += nScore\n output[j].nScore = nScore\n }\n }\n\n if (bestScore === 1) {\n results[i].score = totalScore / scoreLen\n } else {\n results[i].score = bestScore\n }\n\n if (this.options.verbose) log(results[i])\n }\n }\n\n Fuse.prototype._sort = function () {\n var options = this.options\n if (options.shouldSort) {\n if (options.verbose) log('\\n\\nSorting....')\n this.results.sort(options.sortFn)\n }\n }\n\n Fuse.prototype._format = function () {\n var options = this.options\n var getFn = options.getFn\n var finalOutput = []\n var i\n var len\n var results = this.results\n var replaceValue\n var getItemAtIndex\n var include = options.include\n\n if (options.verbose) log('\\n\\nOutput:\\n\\n', results)\n\n // Helper function, here for speed-up, which replaces the item with its value,\n // if the options specifies it,\n replaceValue = options.id ? function (index) {\n results[index].item = getFn(results[index].item, options.id, [])[0]\n } : function () {}\n\n getItemAtIndex = function (index) {\n var record = results[index]\n var data\n var j\n var output\n var _item\n var _result\n\n // If `include` has values, put the item in the result\n if (include.length > 0) {\n data = {\n item: record.item\n }\n if (include.indexOf('matches') !== -1) {\n output = record.output\n data.matches = []\n for (j = 0; j < output.length; j++) {\n _item = output[j]\n _result = {\n indices: _item.matchedIndices\n }\n if (_item.key) {\n _result.key = _item.key\n }\n data.matches.push(_result)\n }\n }\n\n if (include.indexOf('score') !== -1) {\n data.score = results[index].score\n }\n\n } else {\n data = record.item\n }\n\n return data\n }\n\n // From the results, push into a new array only the item identifier (if specified)\n // of the entire item. This is because we don't want to return the ,\n // since it contains other metadata\n for (i = 0, len = results.length; i < len; i++) {\n replaceValue(i)\n finalOutput.push(getItemAtIndex(i))\n }\n\n return finalOutput\n }\n\n // Helpers\n\n function deepValue (obj, path, list) {\n var firstSegment\n var remaining\n var dotIndex\n var value\n var i\n var len\n\n if (!path) {\n // If there's no path left, we've gotten to the object we care about.\n list.push(obj)\n } else {\n dotIndex = path.indexOf('.')\n\n if (dotIndex !== -1) {\n firstSegment = path.slice(0, dotIndex)\n remaining = path.slice(dotIndex + 1)\n } else {\n firstSegment = path\n }\n\n value = obj[firstSegment]\n if (value !== null && value !== undefined) {\n if (!remaining && (typeof value === 'string' || typeof value === 'number')) {\n list.push(value)\n } else if (isArray(value)) {\n // Search each item in the array.\n for (i = 0, len = value.length; i < len; i++) {\n deepValue(value[i], remaining, list)\n }\n } else if (remaining) {\n // An object. Recurse further.\n deepValue(value, remaining, list)\n }\n }\n }\n\n return list\n }\n\n function isArray (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]'\n }\n\n /**\n * Adapted from \"Diff, Match and Patch\", by Google\n *\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Modified by: Kirollos Risk \n * -----------------------------------------------\n * Details: the algorithm and structure was modified to allow the creation of\n * instances with a method which does the actual\n * bitap search. The (the string that is searched for) is only defined\n * once per instance and thus it eliminates redundant re-creation when searching\n * over a list of strings.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n * you may not use this file except in compliance with the License.\n *\n * @constructor\n */\n function BitapSearcher (pattern, options) {\n options = options || {}\n this.options = options\n this.options.location = options.location || BitapSearcher.defaultOptions.location\n this.options.distance = 'distance' in options ? options.distance : BitapSearcher.defaultOptions.distance\n this.options.threshold = 'threshold' in options ? options.threshold : BitapSearcher.defaultOptions.threshold\n this.options.maxPatternLength = options.maxPatternLength || BitapSearcher.defaultOptions.maxPatternLength\n\n this.pattern = options.caseSensitive ? pattern : pattern.toLowerCase()\n this.patternLen = pattern.length\n\n if (this.patternLen <= this.options.maxPatternLength) {\n this.matchmask = 1 << (this.patternLen - 1)\n this.patternAlphabet = this._calculatePatternAlphabet()\n }\n }\n\n BitapSearcher.defaultOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100,\n\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n\n // Machine word size\n maxPatternLength: 32\n }\n\n /**\n * Initialize the alphabet for the Bitap algorithm.\n * @return {Object} Hash of character locations.\n * @private\n */\n BitapSearcher.prototype._calculatePatternAlphabet = function () {\n var mask = {},\n i = 0\n\n for (i = 0; i < this.patternLen; i++) {\n mask[this.pattern.charAt(i)] = 0\n }\n\n for (i = 0; i < this.patternLen; i++) {\n mask[this.pattern.charAt(i)] |= 1 << (this.pattern.length - i - 1)\n }\n\n return mask\n }\n\n /**\n * Compute and return the score for a match with `e` errors and `x` location.\n * @param {number} errors Number of errors in match.\n * @param {number} location Location of match.\n * @return {number} Overall score for match (0.0 = good, 1.0 = bad).\n * @private\n */\n BitapSearcher.prototype._bitapScore = function (errors, location) {\n var accuracy = errors / this.patternLen,\n proximity = Math.abs(this.options.location - location)\n\n if (!this.options.distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n return accuracy + (proximity / this.options.distance)\n }\n\n /**\n * Compute and return the result of the search\n * @param {string} text The text to search in\n * @return {{isMatch: boolean, score: number}} Literal containing:\n * isMatch - Whether the text is a match or not\n * score - Overall score for the match\n * @public\n */\n BitapSearcher.prototype.search = function (text) {\n var options = this.options\n var i\n var j\n var textLen\n var findAllMatches\n var location\n var threshold\n var bestLoc\n var binMin\n var binMid\n var binMax\n var start, finish\n var bitArr\n var lastBitArr\n var charMatch\n var score\n var locations\n var matches\n var isMatched\n var matchMask\n var matchedIndices\n var matchesLen\n var match\n\n text = options.caseSensitive ? text : text.toLowerCase()\n\n if (this.pattern === text) {\n // Exact match\n return {\n isMatch: true,\n score: 0,\n matchedIndices: [[0, text.length - 1]]\n }\n }\n\n // When pattern length is greater than the machine word length, just do a a regex comparison\n if (this.patternLen > options.maxPatternLength) {\n matches = text.match(new RegExp(this.pattern.replace(options.tokenSeparator, '|')))\n isMatched = !!matches\n\n if (isMatched) {\n matchedIndices = []\n for (i = 0, matchesLen = matches.length; i < matchesLen; i++) {\n match = matches[i]\n matchedIndices.push([text.indexOf(match), match.length - 1])\n }\n }\n\n return {\n isMatch: isMatched,\n // TODO: revisit this score\n score: isMatched ? 0.5 : 1,\n matchedIndices: matchedIndices\n }\n }\n\n findAllMatches = options.findAllMatches\n\n location = options.location\n // Set starting location at beginning text and initialize the alphabet.\n textLen = text.length\n // Highest score beyond which we give up.\n threshold = options.threshold\n // Is there a nearby exact match? (speedup)\n bestLoc = text.indexOf(this.pattern, location)\n\n // a mask of the matches\n matchMask = []\n for (i = 0; i < textLen; i++) {\n matchMask[i] = 0\n }\n\n if (bestLoc != -1) {\n threshold = Math.min(this._bitapScore(0, bestLoc), threshold)\n // What about in the other direction? (speed up)\n bestLoc = text.lastIndexOf(this.pattern, location + this.patternLen)\n\n if (bestLoc != -1) {\n threshold = Math.min(this._bitapScore(0, bestLoc), threshold)\n }\n }\n\n bestLoc = -1\n score = 1\n locations = []\n binMax = this.patternLen + textLen\n\n for (i = 0; i < this.patternLen; i++) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n binMin = 0\n binMid = binMax\n while (binMin < binMid) {\n if (this._bitapScore(i, location + binMid) <= threshold) {\n binMin = binMid\n } else {\n binMax = binMid\n }\n binMid = Math.floor((binMax - binMin) / 2 + binMin)\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid\n start = Math.max(1, location - binMid + 1)\n if (findAllMatches) {\n finish = textLen;\n } else {\n finish = Math.min(location + binMid, textLen) + this.patternLen\n }\n\n // Initialize the bit array\n bitArr = Array(finish + 2)\n\n bitArr[finish + 1] = (1 << i) - 1\n\n for (j = finish; j >= start; j--) {\n charMatch = this.patternAlphabet[text.charAt(j - 1)]\n\n if (charMatch) {\n matchMask[j - 1] = 1\n }\n\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch\n\n if (i !== 0) {\n // Subsequent passes: fuzzy match.\n bitArr[j] |= (((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1) | lastBitArr[j + 1]\n }\n if (bitArr[j] & this.matchmask) {\n score = this._bitapScore(i, j - 1)\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (score <= threshold) {\n // Indeed it is\n threshold = score\n bestLoc = j - 1\n locations.push(bestLoc)\n\n // Already passed loc, downhill from here on in.\n if (bestLoc <= location) {\n break\n }\n\n // When passing loc, don't exceed our current distance from loc.\n start = Math.max(1, 2 * location - bestLoc)\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n if (this._bitapScore(i + 1, location) > threshold) {\n break\n }\n lastBitArr = bitArr\n }\n\n matchedIndices = this._getMatchedIndices(matchMask)\n\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n return {\n isMatch: bestLoc >= 0,\n score: score === 0 ? 0.001 : score,\n matchedIndices: matchedIndices\n }\n }\n\n BitapSearcher.prototype._getMatchedIndices = function (matchMask) {\n var matchedIndices = []\n var start = -1\n var end = -1\n var i = 0\n var match\n var len = matchMask.length\n for (; i < len; i++) {\n match = matchMask[i]\n if (match && start === -1) {\n start = i\n } else if (!match && start !== -1) {\n end = i - 1\n if ((end - start) + 1 >= this.options.minMatchCharLength) {\n matchedIndices.push([start, end])\n }\n start = -1\n }\n }\n if (matchMask[i - 1]) {\n if ((i-1 - start) + 1 >= this.options.minMatchCharLength) {\n matchedIndices.push([start, i - 1])\n }\n }\n return matchedIndices\n }\n\n // Export to Common JS Loader\n if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = Fuse\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function () {\n return Fuse\n })\n } else {\n // Browser globals (root is window)\n global.Fuse = Fuse\n }\n\n})(this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fuse.js/src/fuse.js\n// module id = 89\n// module chunks = 1","function isServer() {\n return !(typeof window !== 'undefined' && window.document);\n}\n\nmodule.exports = function getScrollBarWidth() {\n // default to 15px server-side as this is true for many browsers\n if(isServer()) return 0;\n\n const inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '200px';\n\n const outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '200px';\n outer.style.height = '150px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n const w1 = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n if (w1 === w2) w2 = outer.clientWidth;\n\n document.body.removeChild(outer);\n\n return w1 - w2;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/get-scrollbar-width/index.js\n// module id = 90\n// module chunks = 1","/*!\n * headroom.js v0.9.4 - Give your page some headroom. Hide your header until you need it\n * Copyright (c) 2017 Nick Williams - http://wicky.nillia.ms/headroom.js\n * License: MIT\n */\n\n(function(root, factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n }\n else if (typeof exports === 'object') {\n // COMMONJS\n module.exports = factory();\n }\n else {\n // BROWSER\n root.Headroom = factory();\n }\n}(this, function() {\n 'use strict';\n\n /* exported features */\n \n var features = {\n bind : !!(function(){}.bind),\n classList : 'classList' in document.documentElement,\n rAF : !!(window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame)\n };\n window.requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\n \n /**\n * Handles debouncing of events via requestAnimationFrame\n * @see http://www.html5rocks.com/en/tutorials/speed/animations/\n * @param {Function} callback The callback to handle whichever event\n */\n function Debouncer (callback) {\n this.callback = callback;\n this.ticking = false;\n }\n Debouncer.prototype = {\n constructor : Debouncer,\n \n /**\n * dispatches the event to the supplied callback\n * @private\n */\n update : function() {\n this.callback && this.callback();\n this.ticking = false;\n },\n \n /**\n * ensures events don't get stacked\n * @private\n */\n requestTick : function() {\n if(!this.ticking) {\n requestAnimationFrame(this.rafCallback || (this.rafCallback = this.update.bind(this)));\n this.ticking = true;\n }\n },\n \n /**\n * Attach this as the event listeners\n */\n handleEvent : function() {\n this.requestTick();\n }\n };\n /**\n * Check if object is part of the DOM\n * @constructor\n * @param {Object} obj element to check\n */\n function isDOMElement(obj) {\n return obj && typeof window !== 'undefined' && (obj === window || obj.nodeType);\n }\n \n /**\n * Helper function for extending objects\n */\n function extend (object /*, objectN ... */) {\n if(arguments.length <= 0) {\n throw new Error('Missing arguments in extend function');\n }\n \n var result = object || {},\n key,\n i;\n \n for (i = 1; i < arguments.length; i++) {\n var replacement = arguments[i] || {};\n \n for (key in replacement) {\n // Recurse into object except if the object is a DOM element\n if(typeof result[key] === 'object' && ! isDOMElement(result[key])) {\n result[key] = extend(result[key], replacement[key]);\n }\n else {\n result[key] = result[key] || replacement[key];\n }\n }\n }\n \n return result;\n }\n \n /**\n * Helper function for normalizing tolerance option to object format\n */\n function normalizeTolerance (t) {\n return t === Object(t) ? t : { down : t, up : t };\n }\n \n /**\n * UI enhancement for fixed headers.\n * Hides header when scrolling down\n * Shows header when scrolling up\n * @constructor\n * @param {DOMElement} elem the header element\n * @param {Object} options options for the widget\n */\n function Headroom (elem, options) {\n options = extend(options, Headroom.options);\n \n this.lastKnownScrollY = 0;\n this.elem = elem;\n this.tolerance = normalizeTolerance(options.tolerance);\n this.classes = options.classes;\n this.offset = options.offset;\n this.scroller = options.scroller;\n this.initialised = false;\n this.onPin = options.onPin;\n this.onUnpin = options.onUnpin;\n this.onTop = options.onTop;\n this.onNotTop = options.onNotTop;\n this.onBottom = options.onBottom;\n this.onNotBottom = options.onNotBottom;\n }\n Headroom.prototype = {\n constructor : Headroom,\n \n /**\n * Initialises the widget\n */\n init : function() {\n if(!Headroom.cutsTheMustard) {\n return;\n }\n \n this.debouncer = new Debouncer(this.update.bind(this));\n this.elem.classList.add(this.classes.initial);\n \n // defer event registration to handle browser\n // potentially restoring previous scroll position\n setTimeout(this.attachEvent.bind(this), 100);\n \n return this;\n },\n \n /**\n * Unattaches events and removes any classes that were added\n */\n destroy : function() {\n var classes = this.classes;\n \n this.initialised = false;\n \n for (var key in classes) {\n if(classes.hasOwnProperty(key)) {\n this.elem.classList.remove(classes[key]);\n }\n }\n \n this.scroller.removeEventListener('scroll', this.debouncer, false);\n },\n \n /**\n * Attaches the scroll event\n * @private\n */\n attachEvent : function() {\n if(!this.initialised){\n this.lastKnownScrollY = this.getScrollY();\n this.initialised = true;\n this.scroller.addEventListener('scroll', this.debouncer, false);\n \n this.debouncer.handleEvent();\n }\n },\n \n /**\n * Unpins the header if it's currently pinned\n */\n unpin : function() {\n var classList = this.elem.classList,\n classes = this.classes;\n \n if(classList.contains(classes.pinned) || !classList.contains(classes.unpinned)) {\n classList.add(classes.unpinned);\n classList.remove(classes.pinned);\n this.onUnpin && this.onUnpin.call(this);\n }\n },\n \n /**\n * Pins the header if it's currently unpinned\n */\n pin : function() {\n var classList = this.elem.classList,\n classes = this.classes;\n \n if(classList.contains(classes.unpinned)) {\n classList.remove(classes.unpinned);\n classList.add(classes.pinned);\n this.onPin && this.onPin.call(this);\n }\n },\n \n /**\n * Handles the top states\n */\n top : function() {\n var classList = this.elem.classList,\n classes = this.classes;\n \n if(!classList.contains(classes.top)) {\n classList.add(classes.top);\n classList.remove(classes.notTop);\n this.onTop && this.onTop.call(this);\n }\n },\n \n /**\n * Handles the not top state\n */\n notTop : function() {\n var classList = this.elem.classList,\n classes = this.classes;\n \n if(!classList.contains(classes.notTop)) {\n classList.add(classes.notTop);\n classList.remove(classes.top);\n this.onNotTop && this.onNotTop.call(this);\n }\n },\n \n bottom : function() {\n var classList = this.elem.classList,\n classes = this.classes;\n \n if(!classList.contains(classes.bottom)) {\n classList.add(classes.bottom);\n classList.remove(classes.notBottom);\n this.onBottom && this.onBottom.call(this);\n }\n },\n \n /**\n * Handles the not top state\n */\n notBottom : function() {\n var classList = this.elem.classList,\n classes = this.classes;\n \n if(!classList.contains(classes.notBottom)) {\n classList.add(classes.notBottom);\n classList.remove(classes.bottom);\n this.onNotBottom && this.onNotBottom.call(this);\n }\n },\n \n /**\n * Gets the Y scroll position\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY\n * @return {Number} pixels the page has scrolled along the Y-axis\n */\n getScrollY : function() {\n return (this.scroller.pageYOffset !== undefined)\n ? this.scroller.pageYOffset\n : (this.scroller.scrollTop !== undefined)\n ? this.scroller.scrollTop\n : (document.documentElement || document.body.parentNode || document.body).scrollTop;\n },\n \n /**\n * Gets the height of the viewport\n * @see http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript\n * @return {int} the height of the viewport in pixels\n */\n getViewportHeight : function () {\n return window.innerHeight\n || document.documentElement.clientHeight\n || document.body.clientHeight;\n },\n \n /**\n * Gets the physical height of the DOM element\n * @param {Object} elm the element to calculate the physical height of which\n * @return {int} the physical height of the element in pixels\n */\n getElementPhysicalHeight : function (elm) {\n return Math.max(\n elm.offsetHeight,\n elm.clientHeight\n );\n },\n \n /**\n * Gets the physical height of the scroller element\n * @return {int} the physical height of the scroller element in pixels\n */\n getScrollerPhysicalHeight : function () {\n return (this.scroller === window || this.scroller === document.body)\n ? this.getViewportHeight()\n : this.getElementPhysicalHeight(this.scroller);\n },\n \n /**\n * Gets the height of the document\n * @see http://james.padolsey.com/javascript/get-document-height-cross-browser/\n * @return {int} the height of the document in pixels\n */\n getDocumentHeight : function () {\n var body = document.body,\n documentElement = document.documentElement;\n \n return Math.max(\n body.scrollHeight, documentElement.scrollHeight,\n body.offsetHeight, documentElement.offsetHeight,\n body.clientHeight, documentElement.clientHeight\n );\n },\n \n /**\n * Gets the height of the DOM element\n * @param {Object} elm the element to calculate the height of which\n * @return {int} the height of the element in pixels\n */\n getElementHeight : function (elm) {\n return Math.max(\n elm.scrollHeight,\n elm.offsetHeight,\n elm.clientHeight\n );\n },\n \n /**\n * Gets the height of the scroller element\n * @return {int} the height of the scroller element in pixels\n */\n getScrollerHeight : function () {\n return (this.scroller === window || this.scroller === document.body)\n ? this.getDocumentHeight()\n : this.getElementHeight(this.scroller);\n },\n \n /**\n * determines if the scroll position is outside of document boundaries\n * @param {int} currentScrollY the current y scroll position\n * @return {bool} true if out of bounds, false otherwise\n */\n isOutOfBounds : function (currentScrollY) {\n var pastTop = currentScrollY < 0,\n pastBottom = currentScrollY + this.getScrollerPhysicalHeight() > this.getScrollerHeight();\n \n return pastTop || pastBottom;\n },\n \n /**\n * determines if the tolerance has been exceeded\n * @param {int} currentScrollY the current scroll y position\n * @return {bool} true if tolerance exceeded, false otherwise\n */\n toleranceExceeded : function (currentScrollY, direction) {\n return Math.abs(currentScrollY-this.lastKnownScrollY) >= this.tolerance[direction];\n },\n \n /**\n * determine if it is appropriate to unpin\n * @param {int} currentScrollY the current y scroll position\n * @param {bool} toleranceExceeded has the tolerance been exceeded?\n * @return {bool} true if should unpin, false otherwise\n */\n shouldUnpin : function (currentScrollY, toleranceExceeded) {\n var scrollingDown = currentScrollY > this.lastKnownScrollY,\n pastOffset = currentScrollY >= this.offset;\n \n return scrollingDown && pastOffset && toleranceExceeded;\n },\n \n /**\n * determine if it is appropriate to pin\n * @param {int} currentScrollY the current y scroll position\n * @param {bool} toleranceExceeded has the tolerance been exceeded?\n * @return {bool} true if should pin, false otherwise\n */\n shouldPin : function (currentScrollY, toleranceExceeded) {\n var scrollingUp = currentScrollY < this.lastKnownScrollY,\n pastOffset = currentScrollY <= this.offset;\n \n return (scrollingUp && toleranceExceeded) || pastOffset;\n },\n \n /**\n * Handles updating the state of the widget\n */\n update : function() {\n var currentScrollY = this.getScrollY(),\n scrollDirection = currentScrollY > this.lastKnownScrollY ? 'down' : 'up',\n toleranceExceeded = this.toleranceExceeded(currentScrollY, scrollDirection);\n \n if(this.isOutOfBounds(currentScrollY)) { // Ignore bouncy scrolling in OSX\n return;\n }\n \n if (currentScrollY <= this.offset ) {\n this.top();\n } else {\n this.notTop();\n }\n \n if(currentScrollY + this.getViewportHeight() >= this.getScrollerHeight()) {\n this.bottom();\n }\n else {\n this.notBottom();\n }\n \n if(this.shouldUnpin(currentScrollY, toleranceExceeded)) {\n this.unpin();\n }\n else if(this.shouldPin(currentScrollY, toleranceExceeded)) {\n this.pin();\n }\n \n this.lastKnownScrollY = currentScrollY;\n }\n };\n /**\n * Default options\n * @type {Object}\n */\n Headroom.options = {\n tolerance : {\n up : 0,\n down : 0\n },\n offset : 0,\n scroller: window,\n classes : {\n pinned : 'headroom--pinned',\n unpinned : 'headroom--unpinned',\n top : 'headroom--top',\n notTop : 'headroom--not-top',\n bottom : 'headroom--bottom',\n notBottom : 'headroom--not-bottom',\n initial : 'headroom'\n }\n };\n Headroom.cutsTheMustard = typeof features !== 'undefined' && features.rAF && features.bind && features.classList;\n\n return Headroom;\n}));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/headroom.js/dist/headroom.js\n// module id = 91\n// module chunks = 1","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.lgUtils = mod.exports;\n }\n})(this, function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n /*\r\n *@todo remove function from window and document. Update on and off functions\r\n */\n window.getAttribute = function (label) {\n return window[label];\n };\n\n window.setAttribute = function (label, value) {\n window[label] = value;\n };\n\n document.getAttribute = function (label) {\n return document[label];\n };\n\n document.setAttribute = function (label, value) {\n document[label] = value;\n };\n\n var utils = {\n wrap: function wrap(el, className) {\n if (!el) {\n return;\n }\n\n var wrapper = document.createElement('div');\n wrapper.className = className;\n el.parentNode.insertBefore(wrapper, el);\n el.parentNode.removeChild(el);\n wrapper.appendChild(el);\n },\n\n addClass: function addClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n el.classList.add(className);\n } else {\n el.className += ' ' + className;\n }\n },\n\n removeClass: function removeClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n },\n\n hasClass: function hasClass(el, className) {\n if (el.classList) {\n return el.classList.contains(className);\n } else {\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);\n }\n\n return false;\n },\n\n // ex Transform\n // ex TransitionTimingFunction\n setVendor: function setVendor(el, property, value) {\n if (!el) {\n return;\n }\n\n el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value;\n el.style['webkit' + property] = value;\n el.style['moz' + property] = value;\n el.style['ms' + property] = value;\n el.style['o' + property] = value;\n },\n\n trigger: function trigger(el, event) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!el) {\n return;\n }\n\n var customEvent = new CustomEvent(event, {\n detail: detail\n });\n el.dispatchEvent(customEvent);\n },\n\n Listener: {\n uid: 0\n },\n on: function on(el, events, fn) {\n if (!el) {\n return;\n }\n\n events.split(' ').forEach(function (event) {\n var _id = el.getAttribute('lg-event-uid') || '';\n utils.Listener.uid++;\n _id += '&' + utils.Listener.uid;\n el.setAttribute('lg-event-uid', _id);\n utils.Listener[event + utils.Listener.uid] = fn;\n el.addEventListener(event.split('.')[0], fn, false);\n });\n },\n\n off: function off(el, event) {\n if (!el) {\n return;\n }\n\n var _id = el.getAttribute('lg-event-uid');\n if (_id) {\n _id = _id.split('&');\n for (var i = 0; i < _id.length; i++) {\n if (_id[i]) {\n var _event = event + _id[i];\n if (_event.substring(0, 1) === '.') {\n for (var key in utils.Listener) {\n if (utils.Listener.hasOwnProperty(key)) {\n if (key.split('.').indexOf(_event.split('.')[1]) > -1) {\n el.removeEventListener(key.split('.')[0], utils.Listener[key]);\n el.setAttribute('lg-event-uid', el.getAttribute('lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[key];\n }\n }\n }\n } else {\n el.removeEventListener(_event.split('.')[0], utils.Listener[_event]);\n el.setAttribute('lg-event-uid', el.getAttribute('lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[_event];\n }\n }\n }\n }\n },\n\n param: function param(obj) {\n return Object.keys(obj).map(function (k) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]);\n }).join('&');\n }\n };\n\n exports.default = utils;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lightgallery.js/lib/js/lg-utils.js\n// module id = 269\n// module chunks = 1","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['./lg-utils'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(require('./lg-utils'));\n } else {\n var mod = {\n exports: {}\n };\n factory(global.lgUtils);\n global.lightgallery = mod.exports;\n }\n})(this, function (_lgUtils) {\n 'use strict';\n\n var _lgUtils2 = _interopRequireDefault(_lgUtils);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n /** Polyfill the CustomEvent() constructor functionality in Internet Explorer 9 and higher */\n (function () {\n\n if (typeof window.CustomEvent === 'function') {\n return false;\n }\n\n function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n CustomEvent.prototype = window.Event.prototype;\n\n window.CustomEvent = CustomEvent;\n })();\n\n window.utils = _lgUtils2.default;\n window.lgData = {\n uid: 0\n };\n\n window.lgModules = {};\n var defaults = {\n\n mode: 'lg-slide',\n\n // Ex : 'ease'\n cssEasing: 'ease',\n\n //'for jquery animation'\n easing: 'linear',\n speed: 600,\n height: '100%',\n width: '100%',\n addClass: '',\n startClass: 'lg-start-zoom',\n backdropDuration: 150,\n hideBarsDelay: 6000,\n\n useLeft: false,\n\n closable: true,\n loop: true,\n escKey: true,\n keyPress: true,\n controls: true,\n slideEndAnimatoin: true,\n hideControlOnEnd: false,\n mousewheel: false,\n\n getCaptionFromTitleOrAlt: true,\n\n // .lg-item || '.lg-sub-html'\n appendSubHtmlTo: '.lg-sub-html',\n\n subHtmlSelectorRelative: false,\n\n /**\r\n * @desc number of preload slides\r\n * will exicute only after the current slide is fully loaded.\r\n *\r\n * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th\r\n * slide will be loaded in the background after the 4th slide is fully loaded..\r\n * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...\r\n *\r\n */\n preload: 1,\n showAfterLoad: true,\n selector: '',\n selectWithin: '',\n nextHtml: '',\n prevHtml: '',\n\n // 0, 1\n index: false,\n\n iframeMaxWidth: '100%',\n\n download: true,\n counter: true,\n appendCounterTo: '.lg-toolbar',\n\n swipeThreshold: 50,\n enableSwipe: true,\n enableDrag: true,\n\n dynamic: false,\n dynamicEl: [],\n galleryId: 1\n };\n\n function Plugin(element, options) {\n\n // Current lightGallery element\n this.el = element;\n\n // lightGallery settings\n this.s = _extends({}, defaults, options);\n\n // When using dynamic mode, ensure dynamicEl is an array\n if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) {\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\n }\n\n // lightGallery modules\n this.modules = {};\n\n // false when lightgallery complete first slide;\n this.lGalleryOn = false;\n\n this.lgBusy = false;\n\n // Timeout function for hiding controls;\n this.hideBartimeout = false;\n\n // To determine browser supports for touch events;\n this.isTouch = 'ontouchstart' in document.documentElement;\n\n // Disable hideControlOnEnd if sildeEndAnimation is true\n if (this.s.slideEndAnimatoin) {\n this.s.hideControlOnEnd = false;\n }\n\n this.items = [];\n\n // Gallery items\n if (this.s.dynamic) {\n this.items = this.s.dynamicEl;\n } else {\n if (this.s.selector === 'this') {\n this.items.push(this.el);\n } else if (this.s.selector !== '') {\n if (this.s.selectWithin) {\n this.items = document.querySelector(this.s.selectWithin).querySelectorAll(this.s.selector);\n } else {\n this.items = this.el.querySelectorAll(this.s.selector);\n }\n } else {\n this.items = this.el.children;\n }\n }\n\n // .lg-item\n\n this.___slide = '';\n\n // .lg-outer\n this.outer = '';\n\n this.init();\n\n return this;\n }\n\n Plugin.prototype.init = function () {\n\n var _this = this;\n\n // s.preload should not be more than $item.length\n if (_this.s.preload > _this.items.length) {\n _this.s.preload = _this.items.length;\n }\n\n // if dynamic option is enabled execute immediately\n var _hash = window.location.hash;\n if (_hash.indexOf('lg=' + this.s.galleryId) > 0) {\n\n _this.index = parseInt(_hash.split('&slide=')[1], 10);\n\n _lgUtils2.default.addClass(document.body, 'lg-from-hash');\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n }\n\n if (_this.s.dynamic) {\n\n _lgUtils2.default.trigger(this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || 0;\n\n // prevent accidental double execution\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n } else {\n\n for (var i = 0; i < _this.items.length; i++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n\n // Using different namespace for click because click event should not unbind if selector is same object('this')\n _lgUtils2.default.on(_this.items[index], 'click.lgcustom', function (e) {\n\n e.preventDefault();\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || index;\n\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _this.build(_this.index);\n _lgUtils2.default.addClass(document.body, 'lg-on');\n }\n });\n })(i);\n }\n }\n };\n\n Plugin.prototype.build = function (index) {\n\n var _this = this;\n\n _this.structure();\n\n for (var key in window.lgModules) {\n _this.modules[key] = new window.lgModules[key](_this.el);\n }\n\n // initiate slide function\n _this.slide(index, false, false);\n\n if (_this.s.keyPress) {\n _this.keyPress();\n }\n\n if (_this.items.length > 1) {\n\n _this.arrow();\n\n setTimeout(function () {\n _this.enableDrag();\n _this.enableSwipe();\n }, 50);\n\n if (_this.s.mousewheel) {\n _this.mousewheel();\n }\n }\n\n _this.counter();\n\n _this.closeGallery();\n\n _lgUtils2.default.trigger(_this.el, 'onAfterOpen');\n\n // Hide controllers if mouse doesn't move for some period\n _lgUtils2.default.on(_this.outer, 'mousemove.lg click.lg touchstart.lg', function () {\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-items');\n\n clearTimeout(_this.hideBartimeout);\n\n // Timeout will be cleared on each slide movement also\n _this.hideBartimeout = setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-items');\n }, _this.s.hideBarsDelay);\n });\n };\n\n Plugin.prototype.structure = function () {\n var list = '';\n var controls = '';\n var i = 0;\n var subHtmlCont = '';\n var template;\n var _this = this;\n\n document.body.insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.setVendor(document.querySelector('.lg-backdrop'), 'TransitionDuration', this.s.backdropDuration + 'ms');\n\n // Create gallery items\n for (i = 0; i < this.items.length; i++) {\n list += '
';\n }\n\n // Create controlls\n if (this.s.controls && this.items.length > 1) {\n controls = '
' + '
' + this.s.prevHtml + '
' + '
' + this.s.nextHtml + '
' + '
';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n subHtmlCont = '
';\n }\n\n template = '
' + '
' + '
' + list + '
' + '
' + '' + '
' + controls + subHtmlCont + '
' + '
';\n\n document.body.insertAdjacentHTML('beforeend', template);\n this.outer = document.querySelector('.lg-outer');\n this.___slide = this.outer.querySelectorAll('.lg-item');\n\n if (this.s.useLeft) {\n _lgUtils2.default.addClass(this.outer, 'lg-use-left');\n\n // Set mode lg-slide if use left is true;\n this.s.mode = 'lg-slide';\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-use-css3');\n }\n\n // For fixed height gallery\n _this.setTop();\n _lgUtils2.default.on(window, 'resize.lg orientationchange.lg', function () {\n setTimeout(function () {\n _this.setTop();\n }, 100);\n });\n\n // add class lg-current to remove initial transition\n _lgUtils2.default.addClass(this.___slide[this.index], 'lg-current');\n\n // add Class for css support and transition mode\n if (this.doCss()) {\n _lgUtils2.default.addClass(this.outer, 'lg-css3');\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-css');\n\n // Set speed 0 because no animation will happen if browser doesn't support css3\n this.s.speed = 0;\n }\n\n _lgUtils2.default.addClass(this.outer, this.s.mode);\n\n if (this.s.enableDrag && this.items.length > 1) {\n _lgUtils2.default.addClass(this.outer, 'lg-grab');\n }\n\n if (this.s.showAfterLoad) {\n _lgUtils2.default.addClass(this.outer, 'lg-show-after-load');\n }\n\n if (this.doCss()) {\n var inner = this.outer.querySelector('.lg-inner');\n _lgUtils2.default.setVendor(inner, 'TransitionTimingFunction', this.s.cssEasing);\n _lgUtils2.default.setVendor(inner, 'TransitionDuration', this.s.speed + 'ms');\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(document.querySelector('.lg-backdrop'), 'in');\n });\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-visible');\n }, this.s.backdropDuration);\n\n if (this.s.download) {\n this.outer.querySelector('.lg-toolbar').insertAdjacentHTML('beforeend', '');\n }\n\n // Store the current scroll top value to scroll back after closing the gallery..\n this.prevScrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n };\n\n // For fixed height gallery\n Plugin.prototype.setTop = function () {\n if (this.s.height !== '100%') {\n var wH = window.innerHeight;\n var top = (wH - parseInt(this.s.height, 10)) / 2;\n var lGallery = this.outer.querySelector('.lg');\n if (wH >= parseInt(this.s.height, 10)) {\n lGallery.style.top = top + 'px';\n } else {\n lGallery.style.top = '0px';\n }\n }\n };\n\n // Find css3 support\n Plugin.prototype.doCss = function () {\n // check for css animation support\n var support = function support() {\n var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];\n var root = document.documentElement;\n var i = 0;\n for (i = 0; i < transition.length; i++) {\n if (transition[i] in root.style) {\n return true;\n }\n }\n };\n\n if (support()) {\n return true;\n }\n\n return false;\n };\n\n /**\r\n * @desc Check the given src is video\r\n * @param {String} src\r\n * @return {Object} video type\r\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\r\n */\n Plugin.prototype.isVideo = function (src, index) {\n\n if (!src) {\n throw new Error(\"Make sure that slide \" + index + \" has an image/video src\");\n }\n\n var html;\n if (this.s.dynamic) {\n html = this.s.dynamicEl[index].html;\n } else {\n html = this.items[index].getAttribute('data-html');\n }\n\n if (!src && html) {\n return {\n html5: true\n };\n }\n\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)/i);\n var vimeo = src.match(/\\/\\/(?:www\\.)?vimeo.com\\/([0-9a-z\\-_]+)/i);\n var dailymotion = src.match(/\\/\\/(?:www\\.)?dai.ly\\/([0-9a-z\\-_]+)/i);\n var vk = src.match(/\\/\\/(?:www\\.)?(?:vk\\.com|vkontakte\\.ru)\\/(?:video_ext\\.php\\?)(.*)/i);\n\n if (youtube) {\n return {\n youtube: youtube\n };\n } else if (vimeo) {\n return {\n vimeo: vimeo\n };\n } else if (dailymotion) {\n return {\n dailymotion: dailymotion\n };\n } else if (vk) {\n return {\n vk: vk\n };\n }\n };\n\n /**\r\n * @desc Create image counter\r\n * Ex: 1/10\r\n */\n Plugin.prototype.counter = function () {\n if (this.s.counter) {\n this.outer.querySelector(this.s.appendCounterTo).insertAdjacentHTML('beforeend', '
' + (parseInt(this.index, 10) + 1) + ' / ' + this.items.length + '
');\n }\n };\n\n /**\r\n * @desc add sub-html into the slide\r\n * @param {Number} index - index of the slide\r\n */\n Plugin.prototype.addHtml = function (index) {\n var subHtml = null;\n var currentEle;\n if (this.s.dynamic) {\n subHtml = this.s.dynamicEl[index].subHtml;\n } else {\n currentEle = this.items[index];\n subHtml = currentEle.getAttribute('data-sub-html');\n if (this.s.getCaptionFromTitleOrAlt && !subHtml) {\n subHtml = currentEle.getAttribute('title');\n if (subHtml && currentEle.querySelector('img')) {\n subHtml = currentEle.querySelector('img').getAttribute('alt');\n }\n }\n }\n\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n\n // get first letter of subhtml\n // if first letter starts with . or # get the html form the jQuery object\n var fL = subHtml.substring(0, 1);\n if (fL === '.' || fL === '#') {\n if (this.s.subHtmlSelectorRelative && !this.s.dynamic) {\n subHtml = currentEle.querySelector(subHtml).innerHTML;\n } else {\n subHtml = document.querySelector(subHtml).innerHTML;\n }\n }\n } else {\n subHtml = '';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n this.outer.querySelector(this.s.appendSubHtmlTo).innerHTML = subHtml;\n } else {\n this.___slide[index].insertAdjacentHTML('beforeend', subHtml);\n }\n\n // Add lg-empty-html class if title doesn't exist\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n if (subHtml === '') {\n _lgUtils2.default.addClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n } else {\n _lgUtils2.default.removeClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n }\n }\n\n _lgUtils2.default.trigger(this.el, 'onAfterAppendSubHtml', {\n index: index\n });\n };\n\n /**\r\n * @desc Preload slides\r\n * @param {Number} index - index of the slide\r\n */\n Plugin.prototype.preload = function (index) {\n var i = 1;\n var j = 1;\n for (i = 1; i <= this.s.preload; i++) {\n if (i >= this.items.length - index) {\n break;\n }\n\n this.loadContent(index + i, false, 0);\n }\n\n for (j = 1; j <= this.s.preload; j++) {\n if (index - j < 0) {\n break;\n }\n\n this.loadContent(index - j, false, 0);\n }\n };\n\n /**\r\n * @desc Load slide content into slide.\r\n * @param {Number} index - index of the slide.\r\n * @param {Boolean} rec - if true call loadcontent() function again.\r\n * @param {Boolean} delay - delay for adding complete class. it is 0 except first time.\r\n */\n Plugin.prototype.loadContent = function (index, rec, delay) {\n\n var _this = this;\n var _hasPoster = false;\n var _img;\n var _src;\n var _poster;\n var _srcset;\n var _sizes;\n var _html;\n var getResponsiveSrc = function getResponsiveSrc(srcItms) {\n var rsWidth = [];\n var rsSrc = [];\n for (var i = 0; i < srcItms.length; i++) {\n var __src = srcItms[i].split(' ');\n\n // Manage empty space\n if (__src[0] === '') {\n __src.splice(0, 1);\n }\n\n rsSrc.push(__src[0]);\n rsWidth.push(__src[1]);\n }\n\n var wWidth = window.innerWidth;\n for (var j = 0; j < rsWidth.length; j++) {\n if (parseInt(rsWidth[j], 10) > wWidth) {\n _src = rsSrc[j];\n break;\n }\n }\n };\n\n if (_this.s.dynamic) {\n\n if (_this.s.dynamicEl[index].poster) {\n _hasPoster = true;\n _poster = _this.s.dynamicEl[index].poster;\n }\n\n _html = _this.s.dynamicEl[index].html;\n _src = _this.s.dynamicEl[index].src;\n\n if (_this.s.dynamicEl[index].responsive) {\n var srcDyItms = _this.s.dynamicEl[index].responsive.split(',');\n getResponsiveSrc(srcDyItms);\n }\n\n _srcset = _this.s.dynamicEl[index].srcset;\n _sizes = _this.s.dynamicEl[index].sizes;\n } else {\n\n if (_this.items[index].getAttribute('data-poster')) {\n _hasPoster = true;\n _poster = _this.items[index].getAttribute('data-poster');\n }\n\n _html = _this.items[index].getAttribute('data-html');\n _src = _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src');\n\n if (_this.items[index].getAttribute('data-responsive')) {\n var srcItms = _this.items[index].getAttribute('data-responsive').split(',');\n getResponsiveSrc(srcItms);\n }\n\n _srcset = _this.items[index].getAttribute('data-srcset');\n _sizes = _this.items[index].getAttribute('data-sizes');\n }\n\n //if (_src || _srcset || _sizes || _poster) {\n\n var iframe = false;\n if (_this.s.dynamic) {\n if (_this.s.dynamicEl[index].iframe) {\n iframe = true;\n }\n } else {\n if (_this.items[index].getAttribute('data-iframe') === 'true') {\n iframe = true;\n }\n }\n\n var _isVideo = _this.isVideo(_src, index);\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-loaded')) {\n if (iframe) {\n _this.___slide[index].insertAdjacentHTML('afterbegin', '
');\n } else if (_hasPoster) {\n var videoClass = '';\n if (_isVideo && _isVideo.youtube) {\n videoClass = 'lg-has-youtube';\n } else if (_isVideo && _isVideo.vimeo) {\n videoClass = 'lg-has-vimeo';\n } else {\n videoClass = 'lg-has-html5';\n }\n\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n } else if (_isVideo) {\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.trigger(_this.el, 'hasVideo', {\n index: index,\n src: _src,\n html: _html\n });\n } else {\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n }\n\n _lgUtils2.default.trigger(_this.el, 'onAferAppendSlide', {\n index: index\n });\n\n _img = _this.___slide[index].querySelector('.lg-object');\n if (_sizes) {\n _img.setAttribute('sizes', _sizes);\n }\n\n if (_srcset) {\n _img.setAttribute('srcset', _srcset);\n try {\n picturefill({\n elements: [_img[0]]\n });\n } catch (e) {\n console.error('Make sure you have included Picturefill version 2');\n }\n }\n\n if (this.s.appendSubHtmlTo !== '.lg-sub-html') {\n _this.addHtml(index);\n }\n\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-loaded');\n }\n\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n\n // For first time add some delay for displaying the start animation.\n var _speed = 0;\n\n // Do not change the delay value because it is required for zoom plugin.\n // If gallery opened from direct url (hash) speed value should be 0\n if (delay && !_lgUtils2.default.hasClass(document.body, 'lg-from-hash')) {\n _speed = delay;\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n\n _lgUtils2.default.trigger(_this.el, 'onSlideItemLoad', {\n index: index,\n delay: delay || 0\n });\n }, _speed);\n });\n\n // @todo check load state for html5 videos\n if (_isVideo && _isVideo.html5 && !_hasPoster) {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n }\n\n if (rec === true) {\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-complete')) {\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n _this.preload(index);\n });\n } else {\n _this.preload(index);\n }\n }\n\n //}\n };\n\n /**\r\n * @desc slide function for lightgallery\r\n ** Slide() gets call on start\r\n ** ** Set lg.on true once slide() function gets called.\r\n ** Call loadContent() on slide() function inside setTimeout\r\n ** ** On first slide we do not want any animation like slide of fade\r\n ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately\r\n ** ** Else loadContent() should wait for the transition to complete.\r\n ** ** So set timeout s.speed + 50\r\n <=> ** loadContent() will load slide content in to the particular slide\r\n ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function.\r\n ** ** preload will execute only when the previous slide is fully loaded (images iframe)\r\n ** ** avoid simultaneous image load\r\n <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value\r\n ** loadContent() <====> Preload();\r\n \r\n * @param {Number} index - index of the slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\r\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\r\n */\n Plugin.prototype.slide = function (index, fromTouch, fromThumb) {\n\n var _prevIndex = 0;\n for (var i = 0; i < this.___slide.length; i++) {\n if (_lgUtils2.default.hasClass(this.___slide[i], 'lg-current')) {\n _prevIndex = i;\n break;\n }\n }\n\n var _this = this;\n\n // Prevent if multiple call\n // Required for hsh plugin\n if (_this.lGalleryOn && _prevIndex === index) {\n return;\n }\n\n var _length = this.___slide.length;\n var _time = _this.lGalleryOn ? this.s.speed : 0;\n var _next = false;\n var _prev = false;\n\n if (!_this.lgBusy) {\n\n if (this.s.download) {\n var _src;\n if (_this.s.dynamic) {\n _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src);\n } else {\n _src = _this.items[index].getAttribute('data-download-url') !== 'false' && (_this.items[index].getAttribute('data-download-url') || _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src'));\n }\n\n if (_src) {\n document.getElementById('lg-download').setAttribute('href', _src);\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-download');\n } else {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-download');\n }\n }\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n\n _this.lgBusy = true;\n\n clearTimeout(_this.hideBartimeout);\n\n // Add title if this.s.appendSubHtmlTo === lg-sub-html\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n\n // wait for slide animation to complete\n setTimeout(function () {\n _this.addHtml(index);\n }, _time);\n }\n\n this.arrowDisable(index);\n\n if (!fromTouch) {\n\n // remove all transitions\n _lgUtils2.default.addClass(_this.outer, 'lg-no-trans');\n\n for (var j = 0; j < this.___slide.length; j++) {\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-prev-slide');\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-next-slide');\n }\n\n if (index < _prevIndex) {\n _prev = true;\n if (index === 0 && _prevIndex === _length - 1 && !fromThumb) {\n _prev = false;\n _next = true;\n }\n } else if (index > _prevIndex) {\n _next = true;\n if (index === _length - 1 && _prevIndex === 0 && !fromThumb) {\n _prev = true;\n _next = false;\n }\n }\n\n if (_prev) {\n\n //prevslide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-prev-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-next-slide');\n } else if (_next) {\n\n // next slide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-next-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-prev-slide');\n }\n\n // give 50 ms for browser to add/remove class\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n\n //_this.$slide.eq(_prevIndex).removeClass('lg-current');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n\n // reset all transitions\n _lgUtils2.default.removeClass(_this.outer, 'lg-no-trans');\n }, 50);\n } else {\n\n var touchPrev = index - 1;\n var touchNext = index + 1;\n\n if (index === 0 && _prevIndex === _length - 1) {\n\n // next slide\n touchNext = 0;\n touchPrev = _length - 1;\n } else if (index === _length - 1 && _prevIndex === 0) {\n\n // prev slide\n touchNext = 0;\n touchPrev = _length - 1;\n }\n\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-prev-slide'), 'lg-prev-slide');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-next-slide'), 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[touchPrev], 'lg-prev-slide');\n _lgUtils2.default.addClass(_this.___slide[touchNext], 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n }\n\n if (_this.lGalleryOn) {\n setTimeout(function () {\n _this.loadContent(index, true, 0);\n }, this.s.speed + 50);\n\n setTimeout(function () {\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }, this.s.speed);\n } else {\n _this.loadContent(index, true, _this.s.backdropDuration);\n\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }\n\n _this.lGalleryOn = true;\n\n if (this.s.counter) {\n if (document.getElementById('lg-counter-current')) {\n document.getElementById('lg-counter-current').innerHTML = index + 1;\n }\n }\n }\n };\n\n /**\r\n * @desc Go to next slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n */\n Plugin.prototype.goToNextSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index + 1 < _this.___slide.length) {\n _this.index++;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = 0;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-right-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-right-end');\n }, 400);\n }\n }\n }\n };\n\n /**\r\n * @desc Go to previous slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n */\n Plugin.prototype.goToPrevSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index > 0) {\n _this.index--;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = _this.items.length - 1;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-left-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-left-end');\n }, 400);\n }\n }\n }\n };\n\n Plugin.prototype.keyPress = function () {\n var _this = this;\n if (this.items.length > 1) {\n _lgUtils2.default.on(window, 'keyup.lg', function (e) {\n if (_this.items.length > 1) {\n if (e.keyCode === 37) {\n e.preventDefault();\n _this.goToPrevSlide();\n }\n\n if (e.keyCode === 39) {\n e.preventDefault();\n _this.goToNextSlide();\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'keydown.lg', function (e) {\n if (_this.s.escKey === true && e.keyCode === 27) {\n e.preventDefault();\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-thumb-open')) {\n _this.destroy();\n } else {\n _lgUtils2.default.removeClass(_this.outer, 'lg-thumb-open');\n }\n }\n });\n };\n\n Plugin.prototype.arrow = function () {\n var _this = this;\n _lgUtils2.default.on(this.outer.querySelector('.lg-prev'), 'click.lg', function () {\n _this.goToPrevSlide();\n });\n\n _lgUtils2.default.on(this.outer.querySelector('.lg-next'), 'click.lg', function () {\n _this.goToNextSlide();\n });\n };\n\n Plugin.prototype.arrowDisable = function (index) {\n\n // Disable arrows if s.hideControlOnEnd is true\n if (!this.s.loop && this.s.hideControlOnEnd) {\n var next = this.outer.querySelector('.lg-next');\n var prev = this.outer.querySelector('.lg-prev');\n if (index + 1 < this.___slide.length) {\n next.removeAttribute('disabled');\n _lgUtils2.default.removeClass(next, 'disabled');\n } else {\n next.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(next, 'disabled');\n }\n\n if (index > 0) {\n prev.removeAttribute('disabled');\n _lgUtils2.default.removeClass(prev, 'disabled');\n } else {\n next.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(next, 'disabled');\n }\n }\n };\n\n Plugin.prototype.setTranslate = function (el, xValue, yValue) {\n // jQuery supports Automatic CSS prefixing since jQuery 1.8.0\n if (this.s.useLeft) {\n el.style.left = xValue;\n } else {\n _lgUtils2.default.setVendor(el, 'Transform', 'translate3d(' + xValue + 'px, ' + yValue + 'px, 0px)');\n }\n };\n\n Plugin.prototype.touchMove = function (startCoords, endCoords) {\n\n var distance = endCoords - startCoords;\n\n if (Math.abs(distance) > 15) {\n // reset opacity and transition duration\n _lgUtils2.default.addClass(this.outer, 'lg-dragging');\n\n // move current slide\n this.setTranslate(this.___slide[this.index], distance, 0);\n\n // move next and prev slide with current slide\n this.setTranslate(document.querySelector('.lg-prev-slide'), -this.___slide[this.index].clientWidth + distance, 0);\n this.setTranslate(document.querySelector('.lg-next-slide'), this.___slide[this.index].clientWidth + distance, 0);\n }\n };\n\n Plugin.prototype.touchEnd = function (distance) {\n var _this = this;\n\n // keep slide animation for any mode while dragg/swipe\n if (_this.s.mode !== 'lg-slide') {\n _lgUtils2.default.addClass(_this.outer, 'lg-slide');\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n if (!_lgUtils2.default.hasClass(this.___slide[i], 'lg-current') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-prev-slide') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-next-slide')) {\n this.___slide[i].style.opacity = '0';\n }\n }\n\n // set transition duration\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-dragging');\n if (distance < 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToNextSlide(true);\n } else if (distance > 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToPrevSlide(true);\n } else if (Math.abs(distance) < 5) {\n\n // Trigger click if distance is less than 5 pix\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n for (var i = 0; i < _this.___slide.length; i++) {\n _this.___slide[i].removeAttribute('style');\n }\n });\n\n // remove slide class once drag/swipe is completed if mode is not slide\n setTimeout(function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging') && _this.s.mode !== 'lg-slide') {\n _lgUtils2.default.removeClass(_this.outer, 'lg-slide');\n }\n }, _this.s.speed + 100);\n };\n\n Plugin.prototype.enableSwipe = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isMoved = false;\n\n if (_this.s.enableSwipe && _this.isTouch && _this.doCss()) {\n\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'touchstart.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed') && !_this.lgBusy) {\n e.preventDefault();\n _this.manageSwipeClass();\n startCoords = e.targetTouches[0].pageX;\n }\n });\n }\n\n for (var j = 0; j < _this.___slide.length; j++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[j], 'touchmove.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n e.preventDefault();\n endCoords = e.targetTouches[0].pageX;\n _this.touchMove(startCoords, endCoords);\n isMoved = true;\n }\n });\n }\n\n for (var k = 0; k < _this.___slide.length; k++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[k], 'touchend.lg', function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n } else {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n }\n });\n }\n }\n };\n\n Plugin.prototype.enableDrag = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isDraging = false;\n var isMoved = false;\n if (_this.s.enableDrag && !_this.isTouch && _this.doCss()) {\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'mousedown.lg', function (e) {\n // execute only on .lg-object\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n e.preventDefault();\n\n if (!_this.lgBusy) {\n _this.manageSwipeClass();\n startCoords = e.pageX;\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.outer.scrollLeft += 1;\n _this.outer.scrollLeft -= 1;\n\n // *\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-grab');\n _lgUtils2.default.addClass(_this.outer, 'lg-grabbing');\n\n _lgUtils2.default.trigger(_this.el, 'onDragstart');\n }\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'mousemove.lg', function (e) {\n if (isDraging) {\n isMoved = true;\n endCoords = e.pageX;\n _this.touchMove(startCoords, endCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragmove');\n }\n });\n\n _lgUtils2.default.on(window, 'mouseup.lg', function (e) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragend');\n } else if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n // Prevent execution on click\n if (isDraging) {\n isDraging = false;\n _lgUtils2.default.removeClass(_this.outer, 'lg-grabbing');\n _lgUtils2.default.addClass(_this.outer, 'lg-grab');\n }\n });\n }\n };\n\n Plugin.prototype.manageSwipeClass = function () {\n var touchNext = this.index + 1;\n var touchPrev = this.index - 1;\n var length = this.___slide.length;\n if (this.s.loop) {\n if (this.index === 0) {\n touchPrev = length - 1;\n } else if (this.index === length - 1) {\n touchNext = 0;\n }\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-next-slide');\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-prev-slide');\n }\n\n if (touchPrev > -1) {\n _lgUtils2.default.addClass(this.___slide[touchPrev], 'lg-prev-slide');\n }\n\n _lgUtils2.default.addClass(this.___slide[touchNext], 'lg-next-slide');\n };\n\n Plugin.prototype.mousewheel = function () {\n var _this = this;\n _lgUtils2.default.on(_this.outer, 'mousewheel.lg', function (e) {\n\n if (!e.deltaY) {\n return;\n }\n\n if (e.deltaY > 0) {\n _this.goToPrevSlide();\n } else {\n _this.goToNextSlide();\n }\n\n e.preventDefault();\n });\n };\n\n Plugin.prototype.closeGallery = function () {\n\n var _this = this;\n var mousedown = false;\n _lgUtils2.default.on(this.outer.querySelector('.lg-close'), 'click.lg', function () {\n _this.destroy();\n });\n\n if (_this.s.closable) {\n\n // If you drag the slide and release outside gallery gets close on chrome\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\n _lgUtils2.default.on(_this.outer, 'mousedown.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap')) {\n mousedown = true;\n } else {\n mousedown = false;\n }\n });\n\n _lgUtils2.default.on(_this.outer, 'mouseup.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap') && mousedown) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging')) {\n _this.destroy();\n }\n }\n });\n }\n };\n\n Plugin.prototype.destroy = function (d) {\n\n var _this = this;\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onBeforeClose');\n }\n\n document.body.scrollTop = _this.prevScrollTop;\n document.documentElement.scrollTop = _this.prevScrollTop;\n\n /**\r\n * if d is false or undefined destroy will only close the gallery\r\n * plugins instance remains with the element\r\n *\r\n * if d is true destroy will completely remove the plugin\r\n */\n\n if (d) {\n if (!_this.s.dynamic) {\n // only when not using dynamic mode is $items a jquery collection\n\n for (var i = 0; i < this.items.length; i++) {\n _lgUtils2.default.off(this.items[i], '.lg');\n _lgUtils2.default.off(this.items[i], '.lgcustom');\n }\n }\n\n var lguid = _this.el.getAttribute('lg-uid');\n delete window.lgData[lguid];\n _this.el.removeAttribute('lg-uid');\n }\n\n // Unbind all events added by lightGallery\n _lgUtils2.default.off(this.el, '.lgtm');\n\n // Distroy all lightGallery modules\n for (var key in window.lgModules) {\n if (_this.modules[key]) {\n _this.modules[key].destroy();\n }\n }\n\n this.lGalleryOn = false;\n\n clearTimeout(_this.hideBartimeout);\n this.hideBartimeout = false;\n _lgUtils2.default.off(window, '.lg');\n _lgUtils2.default.removeClass(document.body, 'lg-on');\n _lgUtils2.default.removeClass(document.body, 'lg-from-hash');\n\n if (_this.outer) {\n _lgUtils2.default.removeClass(_this.outer, 'lg-visible');\n }\n\n _lgUtils2.default.removeClass(document.querySelector('.lg-backdrop'), 'in');\n setTimeout(function () {\n try {\n if (_this.outer) {\n _this.outer.parentNode.removeChild(_this.outer);\n }\n\n if (document.querySelector('.lg-backdrop')) {\n document.querySelector('.lg-backdrop').parentNode.removeChild(document.querySelector('.lg-backdrop'));\n }\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onCloseAfter');\n }\n } catch (err) {}\n }, _this.s.backdropDuration + 50);\n };\n\n window.lightGallery = function (el, options) {\n if (!el) {\n return;\n }\n\n try {\n if (!el.getAttribute('lg-uid')) {\n var uid = 'lg' + window.lgData.uid++;\n window.lgData[uid] = new Plugin(el, options);\n el.setAttribute('lg-uid', uid);\n } else {\n try {\n window.lgData[el.getAttribute('lg-uid')].init();\n } catch (err) {\n console.error('lightGallery has not initiated properly');\n }\n }\n } catch (err) {\n console.error('lightGallery has not initiated properly');\n }\n };\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lightgallery.js/lib/js/lightgallery.js\n// module id = 270\n// module chunks = 1","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_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\nexport default baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash-es/_baseGetTag.js\n// module id = 271\n// module chunks = 1","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash-es/_freeGlobal.js\n// module id = 272\n// module chunks = 1","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash-es/_getPrototype.js\n// module id = 273\n// module chunks = 1","import Symbol from './_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\nexport default getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash-es/_getRawTag.js\n// module id = 274\n// module chunks = 1","/** 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\nexport default objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash-es/_objectToString.js\n// module id = 275\n// module chunks = 1","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash-es/_overArg.js\n// module id = 276\n// module chunks = 1","import freeGlobal from './_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\nexport default root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash-es/_root.js\n// module id = 277\n// module chunks = 1","/**\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\nexport default isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash-es/isObjectLike.js\n// module id = 278\n// module chunks = 1","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):t.Macy=n()}(this,function(){\"use strict\";function t(t,n){var e=void 0;return function(){e&&clearTimeout(e),e=setTimeout(t,n)}}function n(t,n){for(var e=t.length,o=e,r=[];e--;)r.push(n(t[o-e-1]));return r}function e(t,n){A(t,n,arguments.length>2&&void 0!==arguments[2]&&arguments[2])}function o(t){for(var n=t.options,e=t.responsiveOptions,o=t.keys,r=t.docWidth,i=void 0,s=0;s=a&&(i=n.breakAt[a],O(i,e))}return e}function r(t){for(var n=t.options,e=t.responsiveOptions,o=t.keys,r=t.docWidth,i=void 0,s=o.length-1;s>=0;s--){var a=parseInt(o[s],10);r<=a&&(i=n.breakAt[a],O(i,e))}return e}function i(t){var n=document.body.clientWidth,e={columns:t.columns};L(t.margin)?e.margin={x:t.margin.x,y:t.margin.y}:e.margin={x:t.margin,y:t.margin};var i=Object.keys(t.breakAt);return t.mobileFirst?o({options:t,responsiveOptions:e,keys:i,docWidth:n}):r({options:t,responsiveOptions:e,keys:i,docWidth:n})}function s(t){return i(t).columns}function a(t){return i(t).margin}function c(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],e=s(t),o=a(t).x,r=100/e;return n?1===e?\"100%\":(o=(e-1)*o/e,\"calc(\"+r+\"% - \"+o+\"px)\"):r}function u(t,n){var e=s(t.options),o=0,r=void 0,i=void 0;return 1===++n?0:(i=a(t.options).x,r=(i-(e-1)*i/e)*(n-1),o+=c(t.options,!1)*(n-1),\"calc(\"+o+\"% + \"+r+\"px)\")}function l(t){var n=0,e=t.container;m(t.rows,function(t){n=t>n?t:n}),e.style.height=n+\"px\"}function p(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=s(t.options),i=a(t.options).y;C(t,r,e),m(n,function(n){var e=0,r=parseInt(n.offsetHeight,10);isNaN(r)||(t.rows.forEach(function(n,o){n2&&void 0!==arguments[2]&&arguments[2],o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=s(t.options),i=a(t.options).y;C(t,r,e),m(n,function(n){t.lastcol===r&&(t.lastcol=0);var e=M(n,\"height\");e=parseInt(n.offsetHeight,10),isNaN(e)||(n.style.position=\"absolute\",n.style.top=t.rows[t.lastcol]+\"px\",n.style.left=\"\"+t.cols[t.lastcol],t.rows[t.lastcol]+=isNaN(e)?0:e+i,t.lastcol+=1,o&&(n.dataset.macyComplete=1))}),o&&(t.tmpRows=null),l(t)}var f=function t(n,e){if(!(this instanceof t))return new t(n,e);if(n=n.replace(/^\\s*/,\"\").replace(/\\s*$/,\"\"),e)return this.byCss(n,e);for(var o in this.selectors)if(e=o.split(\"/\"),new RegExp(e[1],e[2]).test(n))return this.selectors[o](n);return this.byCss(n)};f.prototype.byCss=function(t,n){return(n||document).querySelectorAll(t)},f.prototype.selectors={},f.prototype.selectors[/^\\.[\\w\\-]+$/]=function(t){return document.getElementsByClassName(t.substring(1))},f.prototype.selectors[/^\\w+$/]=function(t){return document.getElementsByTagName(t)},f.prototype.selectors[/^\\#[\\w\\-]+$/]=function(t){return document.getElementById(t.substring(1))};var m=function(t,n){for(var e=t.length,o=e;e--;)n(t[o-e-1])},v=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.running=!1,this.events=[],this.add(t)};v.prototype.run=function(){if(!this.running&&this.events.length>0){var t=this.events.shift();this.running=!0,t(),this.running=!1,this.run()}},v.prototype.add=function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return!!n&&(Array.isArray(n)?m(n,function(n){return t.add(n)}):(this.events.push(n),void this.run()))},v.prototype.clear=function(){this.events=[]};var d=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.instance=t,this.data=n,this},g=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.events={},this.instance=t};g.prototype.on=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!(!t||!n)&&(Array.isArray(this.events[t])||(this.events[t]=[]),this.events[t].push(n))},g.prototype.emit=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t||!Array.isArray(this.events[t]))return!1;var e=new d(this.instance,n);m(this.events[t],function(t){return t(e)})};var y=function(t){return!(\"naturalHeight\"in t&&t.naturalHeight+t.naturalWidth===0)||t.width+t.height!==0},E=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return new Promise(function(t,e){if(n.complete)return y(n)?t(n):e(n);n.addEventListener(\"load\",function(){return y(n)?t(n):e(n)}),n.addEventListener(\"error\",function(){return e(n)})}).then(function(n){e&&t.emit(t.constants.EVENT_IMAGE_LOAD,{img:n})}).catch(function(n){return t.emit(t.constants.EVENT_IMAGE_ERROR,{img:n})})},w=function(t,e){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return n(e,function(n){return E(t,n,o)})},A=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return Promise.all(w(t,n,e)).then(function(){t.emit(t.constants.EVENT_IMAGE_COMPLETE)})},I=function(n){return t(function(){n.emit(n.constants.EVENT_RESIZE),n.queue.add(function(){return n.recalculate(!0,!0)})},100)},N=function(t){if(t.container=f(t.options.container),t.container instanceof f||!t.container)return!!t.options.debug&&console.error(\"Error: Container not found\");delete t.options.container,t.container.length&&(t.container=t.container[0]),t.container.style.position=\"relative\"},T=function(t){t.queue=new v,t.events=new g(t),t.rows=[],t.resizer=I(t)},b=function(t){var n=f(\"img\",t.container);window.addEventListener(\"resize\",t.resizer),t.on(t.constants.EVENT_IMAGE_LOAD,function(){return t.recalculate(!1,!1)}),t.on(t.constants.EVENT_IMAGE_COMPLETE,function(){return t.recalculate(!0,!0)}),t.options.useOwnImageLoader||e(t,n,!t.options.waitForImages),t.emit(t.constants.EVENT_INITIALIZED)},_=function(t){N(t),T(t),b(t)},L=function(t){return t===Object(t)&&\"[object Array]\"!==Object.prototype.toString.call(t)},O=function(t,n){L(t)||(n.columns=t),L(t)&&t.columns&&(n.columns=t.columns),L(t)&&t.margin&&!L(t.margin)&&(n.margin={x:t.margin,y:t.margin}),L(t)&&t.margin&&L(t.margin)&&t.margin.x&&(n.margin.x=t.margin.x),L(t)&&t.margin&&L(t.margin)&&t.margin.y&&(n.margin.y=t.margin.y)},M=function(t,n){return window.getComputedStyle(t,null).getPropertyValue(n)},C=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(t.lastcol||(t.lastcol=0),t.rows.length<1&&(e=!0),e){t.rows=[],t.cols=[],t.lastcol=0;for(var o=n-1;o>=0;o--)t.rows[o]=0,t.cols[o]=u(t,o)}else if(t.tmpRows){t.rows=[];for(var o=n-1;o>=0;o--)t.rows[o]=t.tmpRows[o]}else{t.tmpRows=[];for(var o=n-1;o>=0;o--)t.tmpRows[o]=t.rows[o]}},V=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=n?t.container.children:f(':scope > *:not([data-macy-complete=\"1\"])',t.container),r=c(t.options);return m(o,function(t){n&&(t.dataset.macyComplete=0),t.style.width=r}),t.options.trueOrder?(h(t,o,n,e),t.emit(t.constants.EVENT_RECALCULATED)):(p(t,o,n,e),t.emit(t.constants.EVENT_RECALCULATED))},R=Object.assign||function(t){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:x;if(!(this instanceof t))return new t(n);this.options={},R(this.options,x,n),_(this)};return q.init=function(t){return console.warn(\"Depreciated: Macy.init will be removed in v3.0.0 opt to use Macy directly like so Macy({ /*options here*/ }) \"),new q(t)},q.prototype.recalculateOnImageLoad=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return e(this,f(\"img\",this.container),!t)},q.prototype.runOnImageLoad=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=f(\"img\",this.container);return this.on(this.constants.EVENT_IMAGE_COMPLETE,t),n&&this.on(this.constants.EVENT_IMAGE_LOAD,t),e(this,o,n)},q.prototype.recalculate=function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e&&this.queue.clear(),this.queue.add(function(){return V(t,n,e)})},q.prototype.remove=function(){window.removeEventListener(\"resize\",this.resizer),m(this.container.children,function(t){t.removeAttribute(\"data-macy-complete\"),t.removeAttribute(\"style\")}),this.container.removeAttribute(\"style\")},q.prototype.reInit=function(){this.recalculate(!0,!0),this.emit(this.constants.EVENT_INITIALIZED),window.addEventListener(\"resize\",this.resizer),this.container.style.position=\"relative\"},q.prototype.on=function(t,n){this.events.on(t,n)},q.prototype.emit=function(t,n){this.events.emit(t,n)},q.constants={EVENT_INITIALIZED:\"macy.initialized\",EVENT_RECALCULATED:\"macy.recalculated\",EVENT_IMAGE_LOAD:\"macy.image.load\",EVENT_IMAGE_ERROR:\"macy.image.error\",EVENT_IMAGE_COMPLETE:\"macy.images.complete\",EVENT_RESIZE:\"macy.resize\"},q.prototype.constants=q.constants,q});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/macy/dist/macy.js\n// module id = 279\n// module chunks = 1","/*! nanoScrollerJS - v0.8.7 - 2015\n* http://jamesflorentino.github.com/nanoScrollerJS/\n* Copyright (c) 2015 James Florentino; Licensed MIT */\n(function(factory) {\n if (typeof define === 'function' && define.amd) {\n return define(['jquery'], function($) {\n return factory($, window, document);\n });\n } else if (typeof exports === 'object') {\n return module.exports = factory(require('jquery'), window, document);\n } else {\n return factory(jQuery, window, document);\n }\n})(function($, window, document) {\n \"use strict\";\n var BROWSER_IS_IE7, BROWSER_SCROLLBAR_WIDTH, DOMSCROLL, DOWN, DRAG, ENTER, KEYDOWN, KEYUP, MOUSEDOWN, MOUSEENTER, MOUSEMOVE, MOUSEUP, MOUSEWHEEL, NanoScroll, PANEDOWN, RESIZE, SCROLL, SCROLLBAR, TOUCHMOVE, UP, WHEEL, cAF, defaults, getBrowserScrollbarWidth, hasTransform, isFFWithBuggyScrollbar, rAF, transform, _elementStyle, _prefixStyle, _vendor;\n defaults = {\n\n /**\n a classname for the pane element.\n @property paneClass\n @type String\n @default 'nano-pane'\n */\n paneClass: 'nano-pane',\n\n /**\n a classname for the slider element.\n @property sliderClass\n @type String\n @default 'nano-slider'\n */\n sliderClass: 'nano-slider',\n\n /**\n a classname for the content element.\n @property contentClass\n @type String\n @default 'nano-content'\n */\n contentClass: 'nano-content',\n\n /**\n a setting to enable native scrolling in iOS devices.\n @property iOSNativeScrolling\n @type Boolean\n @default false\n */\n iOSNativeScrolling: false,\n\n /**\n a setting to prevent the rest of the page being\n scrolled when user scrolls the `.content` element.\n @property preventPageScrolling\n @type Boolean\n @default false\n */\n preventPageScrolling: false,\n\n /**\n a setting to disable binding to the resize event.\n @property disableResize\n @type Boolean\n @default false\n */\n disableResize: false,\n\n /**\n a setting to make the scrollbar always visible.\n @property alwaysVisible\n @type Boolean\n @default false\n */\n alwaysVisible: false,\n\n /**\n a default timeout for the `flash()` method.\n @property flashDelay\n @type Number\n @default 1500\n */\n flashDelay: 1500,\n\n /**\n a minimum height for the `.slider` element.\n @property sliderMinHeight\n @type Number\n @default 20\n */\n sliderMinHeight: 20,\n\n /**\n a maximum height for the `.slider` element.\n @property sliderMaxHeight\n @type Number\n @default null\n */\n sliderMaxHeight: null,\n\n /**\n an alternate document context.\n @property documentContext\n @type Document\n @default null\n */\n documentContext: null,\n\n /**\n an alternate window context.\n @property windowContext\n @type Window\n @default null\n */\n windowContext: null\n };\n\n /**\n @property SCROLLBAR\n @type String\n @static\n @final\n @private\n */\n SCROLLBAR = 'scrollbar';\n\n /**\n @property SCROLL\n @type String\n @static\n @final\n @private\n */\n SCROLL = 'scroll';\n\n /**\n @property MOUSEDOWN\n @type String\n @final\n @private\n */\n MOUSEDOWN = 'mousedown';\n\n /**\n @property MOUSEENTER\n @type String\n @final\n @private\n */\n MOUSEENTER = 'mouseenter';\n\n /**\n @property MOUSEMOVE\n @type String\n @static\n @final\n @private\n */\n MOUSEMOVE = 'mousemove';\n\n /**\n @property MOUSEWHEEL\n @type String\n @final\n @private\n */\n MOUSEWHEEL = 'mousewheel';\n\n /**\n @property MOUSEUP\n @type String\n @static\n @final\n @private\n */\n MOUSEUP = 'mouseup';\n\n /**\n @property RESIZE\n @type String\n @final\n @private\n */\n RESIZE = 'resize';\n\n /**\n @property DRAG\n @type String\n @static\n @final\n @private\n */\n DRAG = 'drag';\n\n /**\n @property ENTER\n @type String\n @static\n @final\n @private\n */\n ENTER = 'enter';\n\n /**\n @property UP\n @type String\n @static\n @final\n @private\n */\n UP = 'up';\n\n /**\n @property PANEDOWN\n @type String\n @static\n @final\n @private\n */\n PANEDOWN = 'panedown';\n\n /**\n @property DOMSCROLL\n @type String\n @static\n @final\n @private\n */\n DOMSCROLL = 'DOMMouseScroll';\n\n /**\n @property DOWN\n @type String\n @static\n @final\n @private\n */\n DOWN = 'down';\n\n /**\n @property WHEEL\n @type String\n @static\n @final\n @private\n */\n WHEEL = 'wheel';\n\n /**\n @property KEYDOWN\n @type String\n @static\n @final\n @private\n */\n KEYDOWN = 'keydown';\n\n /**\n @property KEYUP\n @type String\n @static\n @final\n @private\n */\n KEYUP = 'keyup';\n\n /**\n @property TOUCHMOVE\n @type String\n @static\n @final\n @private\n */\n TOUCHMOVE = 'touchmove';\n\n /**\n @property BROWSER_IS_IE7\n @type Boolean\n @static\n @final\n @private\n */\n BROWSER_IS_IE7 = window.navigator.appName === 'Microsoft Internet Explorer' && /msie 7./i.test(window.navigator.appVersion) && window.ActiveXObject;\n\n /**\n @property BROWSER_SCROLLBAR_WIDTH\n @type Number\n @static\n @default null\n @private\n */\n BROWSER_SCROLLBAR_WIDTH = null;\n rAF = window.requestAnimationFrame;\n cAF = window.cancelAnimationFrame;\n _elementStyle = document.createElement('div').style;\n _vendor = (function() {\n var i, transform, vendor, vendors, _i, _len;\n vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'];\n for (i = _i = 0, _len = vendors.length; _i < _len; i = ++_i) {\n vendor = vendors[i];\n transform = vendors[i] + 'ransform';\n if (transform in _elementStyle) {\n return vendors[i].substr(0, vendors[i].length - 1);\n }\n }\n return false;\n })();\n _prefixStyle = function(style) {\n if (_vendor === false) {\n return false;\n }\n if (_vendor === '') {\n return style;\n }\n return _vendor + style.charAt(0).toUpperCase() + style.substr(1);\n };\n transform = _prefixStyle('transform');\n hasTransform = transform !== false;\n\n /**\n Returns browser's native scrollbar width\n @method getBrowserScrollbarWidth\n @return {Number} the scrollbar width in pixels\n @static\n @private\n */\n getBrowserScrollbarWidth = function() {\n var outer, outerStyle, scrollbarWidth;\n outer = document.createElement('div');\n outerStyle = outer.style;\n outerStyle.position = 'absolute';\n outerStyle.width = '100px';\n outerStyle.height = '100px';\n outerStyle.overflow = SCROLL;\n outerStyle.top = '-9999px';\n document.body.appendChild(outer);\n scrollbarWidth = outer.offsetWidth - outer.clientWidth;\n document.body.removeChild(outer);\n return scrollbarWidth;\n };\n isFFWithBuggyScrollbar = function() {\n var isOSXFF, ua, version;\n ua = window.navigator.userAgent;\n isOSXFF = /(?=.+Mac OS X)(?=.+Firefox)/.test(ua);\n if (!isOSXFF) {\n return false;\n }\n version = /Firefox\\/\\d{2}\\./.exec(ua);\n if (version) {\n version = version[0].replace(/\\D+/g, '');\n }\n return isOSXFF && +version > 23;\n };\n\n /**\n @class NanoScroll\n @param element {HTMLElement|Node} the main element\n @param options {Object} nanoScroller's options\n @constructor\n */\n NanoScroll = (function() {\n function NanoScroll(el, options) {\n this.el = el;\n this.options = options;\n BROWSER_SCROLLBAR_WIDTH || (BROWSER_SCROLLBAR_WIDTH = getBrowserScrollbarWidth());\n this.$el = $(this.el);\n this.doc = $(this.options.documentContext || document);\n this.win = $(this.options.windowContext || window);\n this.body = this.doc.find('body');\n this.$content = this.$el.children(\".\" + this.options.contentClass);\n this.$content.attr('tabindex', this.options.tabIndex || 0);\n this.content = this.$content[0];\n this.previousPosition = 0;\n if (this.options.iOSNativeScrolling && (this.el.style.WebkitOverflowScrolling != null)) {\n this.nativeScrolling();\n } else {\n this.generate();\n }\n this.createEvents();\n this.addEvents();\n this.reset();\n }\n\n\n /**\n Prevents the rest of the page being scrolled\n when user scrolls the `.nano-content` element.\n @method preventScrolling\n @param event {Event}\n @param direction {String} Scroll direction (up or down)\n @private\n */\n\n NanoScroll.prototype.preventScrolling = function(e, direction) {\n if (!this.isActive) {\n return;\n }\n if (e.type === DOMSCROLL) {\n if (direction === DOWN && e.originalEvent.detail > 0 || direction === UP && e.originalEvent.detail < 0) {\n e.preventDefault();\n }\n } else if (e.type === MOUSEWHEEL) {\n if (!e.originalEvent || !e.originalEvent.wheelDelta) {\n return;\n }\n if (direction === DOWN && e.originalEvent.wheelDelta < 0 || direction === UP && e.originalEvent.wheelDelta > 0) {\n e.preventDefault();\n }\n }\n };\n\n\n /**\n Enable iOS native scrolling\n @method nativeScrolling\n @private\n */\n\n NanoScroll.prototype.nativeScrolling = function() {\n this.$content.css({\n WebkitOverflowScrolling: 'touch'\n });\n this.iOSNativeScrolling = true;\n this.isActive = true;\n };\n\n\n /**\n Updates those nanoScroller properties that\n are related to current scrollbar position.\n @method updateScrollValues\n @private\n */\n\n NanoScroll.prototype.updateScrollValues = function() {\n var content, direction;\n content = this.content;\n this.maxScrollTop = content.scrollHeight - content.clientHeight;\n this.prevScrollTop = this.contentScrollTop || 0;\n this.contentScrollTop = content.scrollTop;\n direction = this.contentScrollTop > this.previousPosition ? \"down\" : this.contentScrollTop < this.previousPosition ? \"up\" : \"same\";\n this.previousPosition = this.contentScrollTop;\n if (direction !== \"same\") {\n this.$el.trigger('update', {\n position: this.contentScrollTop,\n maximum: this.maxScrollTop,\n direction: direction\n });\n }\n if (!this.iOSNativeScrolling) {\n this.maxSliderTop = this.paneHeight - this.sliderHeight;\n this.sliderTop = this.maxScrollTop === 0 ? 0 : this.contentScrollTop * this.maxSliderTop / this.maxScrollTop;\n }\n };\n\n\n /**\n Updates CSS styles for current scroll position.\n Uses CSS 2d transfroms and `window.requestAnimationFrame` if available.\n @method setOnScrollStyles\n @private\n */\n\n NanoScroll.prototype.setOnScrollStyles = function() {\n var cssValue;\n if (hasTransform) {\n cssValue = {};\n cssValue[transform] = \"translate(0, \" + this.sliderTop + \"px)\";\n } else {\n cssValue = {\n top: this.sliderTop\n };\n }\n if (rAF) {\n if (cAF && this.scrollRAF) {\n cAF(this.scrollRAF);\n }\n this.scrollRAF = rAF((function(_this) {\n return function() {\n _this.scrollRAF = null;\n return _this.slider.css(cssValue);\n };\n })(this));\n } else {\n this.slider.css(cssValue);\n }\n };\n\n\n /**\n Creates event related methods\n @method createEvents\n @private\n */\n\n NanoScroll.prototype.createEvents = function() {\n this.events = {\n down: (function(_this) {\n return function(e) {\n _this.isBeingDragged = true;\n _this.offsetY = e.pageY - _this.slider.offset().top;\n if (!_this.slider.is(e.target)) {\n _this.offsetY = 0;\n }\n _this.pane.addClass('active');\n _this.doc.bind(MOUSEMOVE, _this.events[DRAG]).bind(MOUSEUP, _this.events[UP]);\n _this.body.bind(MOUSEENTER, _this.events[ENTER]);\n return false;\n };\n })(this),\n drag: (function(_this) {\n return function(e) {\n _this.sliderY = e.pageY - _this.$el.offset().top - _this.paneTop - (_this.offsetY || _this.sliderHeight * 0.5);\n _this.scroll();\n if (_this.contentScrollTop >= _this.maxScrollTop && _this.prevScrollTop !== _this.maxScrollTop) {\n _this.$el.trigger('scrollend');\n } else if (_this.contentScrollTop === 0 && _this.prevScrollTop !== 0) {\n _this.$el.trigger('scrolltop');\n }\n return false;\n };\n })(this),\n up: (function(_this) {\n return function(e) {\n _this.isBeingDragged = false;\n _this.pane.removeClass('active');\n _this.doc.unbind(MOUSEMOVE, _this.events[DRAG]).unbind(MOUSEUP, _this.events[UP]);\n _this.body.unbind(MOUSEENTER, _this.events[ENTER]);\n return false;\n };\n })(this),\n resize: (function(_this) {\n return function(e) {\n _this.reset();\n };\n })(this),\n panedown: (function(_this) {\n return function(e) {\n _this.sliderY = (e.offsetY || e.originalEvent.layerY) - (_this.sliderHeight * 0.5);\n _this.scroll();\n _this.events.down(e);\n return false;\n };\n })(this),\n scroll: (function(_this) {\n return function(e) {\n _this.updateScrollValues();\n if (_this.isBeingDragged) {\n return;\n }\n if (!_this.iOSNativeScrolling) {\n _this.sliderY = _this.sliderTop;\n _this.setOnScrollStyles();\n }\n if (e == null) {\n return;\n }\n if (_this.contentScrollTop >= _this.maxScrollTop) {\n if (_this.options.preventPageScrolling) {\n _this.preventScrolling(e, DOWN);\n }\n if (_this.prevScrollTop !== _this.maxScrollTop) {\n _this.$el.trigger('scrollend');\n }\n } else if (_this.contentScrollTop === 0) {\n if (_this.options.preventPageScrolling) {\n _this.preventScrolling(e, UP);\n }\n if (_this.prevScrollTop !== 0) {\n _this.$el.trigger('scrolltop');\n }\n }\n };\n })(this),\n wheel: (function(_this) {\n return function(e) {\n var delta;\n if (e == null) {\n return;\n }\n delta = e.delta || e.wheelDelta || (e.originalEvent && e.originalEvent.wheelDelta) || -e.detail || (e.originalEvent && -e.originalEvent.detail);\n if (delta) {\n _this.sliderY += -delta / 3;\n }\n _this.scroll();\n return false;\n };\n })(this),\n enter: (function(_this) {\n return function(e) {\n var _ref;\n if (!_this.isBeingDragged) {\n return;\n }\n if ((e.buttons || e.which) !== 1) {\n return (_ref = _this.events)[UP].apply(_ref, arguments);\n }\n };\n })(this)\n };\n };\n\n\n /**\n Adds event listeners with jQuery.\n @method addEvents\n @private\n */\n\n NanoScroll.prototype.addEvents = function() {\n var events;\n this.removeEvents();\n events = this.events;\n if (!this.options.disableResize) {\n this.win.bind(RESIZE, events[RESIZE]);\n }\n if (!this.iOSNativeScrolling) {\n this.slider.bind(MOUSEDOWN, events[DOWN]);\n this.pane.bind(MOUSEDOWN, events[PANEDOWN]).bind(\"\" + MOUSEWHEEL + \" \" + DOMSCROLL, events[WHEEL]);\n }\n this.$content.bind(\"\" + SCROLL + \" \" + MOUSEWHEEL + \" \" + DOMSCROLL + \" \" + TOUCHMOVE, events[SCROLL]);\n };\n\n\n /**\n Removes event listeners with jQuery.\n @method removeEvents\n @private\n */\n\n NanoScroll.prototype.removeEvents = function() {\n var events;\n events = this.events;\n this.win.unbind(RESIZE, events[RESIZE]);\n if (!this.iOSNativeScrolling) {\n this.slider.unbind();\n this.pane.unbind();\n }\n this.$content.unbind(\"\" + SCROLL + \" \" + MOUSEWHEEL + \" \" + DOMSCROLL + \" \" + TOUCHMOVE, events[SCROLL]);\n };\n\n\n /**\n Generates nanoScroller's scrollbar and elements for it.\n @method generate\n @chainable\n @private\n */\n\n NanoScroll.prototype.generate = function() {\n var contentClass, cssRule, currentPadding, options, pane, paneClass, sliderClass;\n options = this.options;\n paneClass = options.paneClass, sliderClass = options.sliderClass, contentClass = options.contentClass;\n if (!(pane = this.$el.children(\".\" + paneClass)).length && !pane.children(\".\" + sliderClass).length) {\n this.$el.append(\"
\");\n }\n this.pane = this.$el.children(\".\" + paneClass);\n this.slider = this.pane.find(\".\" + sliderClass);\n if (BROWSER_SCROLLBAR_WIDTH === 0 && isFFWithBuggyScrollbar()) {\n currentPadding = window.getComputedStyle(this.content, null).getPropertyValue('padding-right').replace(/[^0-9.]+/g, '');\n cssRule = {\n right: -14,\n paddingRight: +currentPadding + 14\n };\n } else if (BROWSER_SCROLLBAR_WIDTH) {\n cssRule = {\n right: -BROWSER_SCROLLBAR_WIDTH\n };\n this.$el.addClass('has-scrollbar');\n }\n if (cssRule != null) {\n this.$content.css(cssRule);\n }\n return this;\n };\n\n\n /**\n @method restore\n @private\n */\n\n NanoScroll.prototype.restore = function() {\n this.stopped = false;\n if (!this.iOSNativeScrolling) {\n this.pane.show();\n }\n this.addEvents();\n };\n\n\n /**\n Resets nanoScroller's scrollbar.\n @method reset\n @chainable\n @example\n $(\".nano\").nanoScroller();\n */\n\n NanoScroll.prototype.reset = function() {\n var content, contentHeight, contentPosition, contentStyle, contentStyleOverflowY, paneBottom, paneHeight, paneOuterHeight, paneTop, parentMaxHeight, right, sliderHeight;\n if (this.iOSNativeScrolling) {\n this.contentHeight = this.content.scrollHeight;\n return;\n }\n if (!this.$el.find(\".\" + this.options.paneClass).length) {\n this.generate().stop();\n }\n if (this.stopped) {\n this.restore();\n }\n content = this.content;\n contentStyle = content.style;\n contentStyleOverflowY = contentStyle.overflowY;\n if (BROWSER_IS_IE7) {\n this.$content.css({\n height: this.$content.height()\n });\n }\n contentHeight = content.scrollHeight + BROWSER_SCROLLBAR_WIDTH;\n parentMaxHeight = parseInt(this.$el.css(\"max-height\"), 10);\n if (parentMaxHeight > 0) {\n this.$el.height(\"\");\n this.$el.height(content.scrollHeight > parentMaxHeight ? parentMaxHeight : content.scrollHeight);\n }\n paneHeight = this.pane.outerHeight(false);\n paneTop = parseInt(this.pane.css('top'), 10);\n paneBottom = parseInt(this.pane.css('bottom'), 10);\n paneOuterHeight = paneHeight + paneTop + paneBottom;\n sliderHeight = Math.round(paneOuterHeight / contentHeight * paneHeight);\n if (sliderHeight < this.options.sliderMinHeight) {\n sliderHeight = this.options.sliderMinHeight;\n } else if ((this.options.sliderMaxHeight != null) && sliderHeight > this.options.sliderMaxHeight) {\n sliderHeight = this.options.sliderMaxHeight;\n }\n if (contentStyleOverflowY === SCROLL && contentStyle.overflowX !== SCROLL) {\n sliderHeight += BROWSER_SCROLLBAR_WIDTH;\n }\n this.maxSliderTop = paneOuterHeight - sliderHeight;\n this.contentHeight = contentHeight;\n this.paneHeight = paneHeight;\n this.paneOuterHeight = paneOuterHeight;\n this.sliderHeight = sliderHeight;\n this.paneTop = paneTop;\n this.slider.height(sliderHeight);\n this.events.scroll();\n this.pane.show();\n this.isActive = true;\n if ((content.scrollHeight === content.clientHeight) || (this.pane.outerHeight(true) >= content.scrollHeight && contentStyleOverflowY !== SCROLL)) {\n this.pane.hide();\n this.isActive = false;\n } else if (this.el.clientHeight === content.scrollHeight && contentStyleOverflowY === SCROLL) {\n this.slider.hide();\n } else {\n this.slider.show();\n }\n this.pane.css({\n opacity: (this.options.alwaysVisible ? 1 : ''),\n visibility: (this.options.alwaysVisible ? 'visible' : '')\n });\n contentPosition = this.$content.css('position');\n if (contentPosition === 'static' || contentPosition === 'relative') {\n right = parseInt(this.$content.css('right'), 10);\n if (right) {\n this.$content.css({\n right: '',\n marginRight: right\n });\n }\n }\n return this;\n };\n\n\n /**\n @method scroll\n @private\n @example\n $(\".nano\").nanoScroller({ scroll: 'top' });\n */\n\n NanoScroll.prototype.scroll = function() {\n if (!this.isActive) {\n return;\n }\n this.sliderY = Math.max(0, this.sliderY);\n this.sliderY = Math.min(this.maxSliderTop, this.sliderY);\n this.$content.scrollTop(this.maxScrollTop * this.sliderY / this.maxSliderTop);\n if (!this.iOSNativeScrolling) {\n this.updateScrollValues();\n this.setOnScrollStyles();\n }\n return this;\n };\n\n\n /**\n Scroll at the bottom with an offset value\n @method scrollBottom\n @param offsetY {Number}\n @chainable\n @example\n $(\".nano\").nanoScroller({ scrollBottom: value });\n */\n\n NanoScroll.prototype.scrollBottom = function(offsetY) {\n if (!this.isActive) {\n return;\n }\n this.$content.scrollTop(this.contentHeight - this.$content.height() - offsetY).trigger(MOUSEWHEEL);\n this.stop().restore();\n return this;\n };\n\n\n /**\n Scroll at the top with an offset value\n @method scrollTop\n @param offsetY {Number}\n @chainable\n @example\n $(\".nano\").nanoScroller({ scrollTop: value });\n */\n\n NanoScroll.prototype.scrollTop = function(offsetY) {\n if (!this.isActive) {\n return;\n }\n this.$content.scrollTop(+offsetY).trigger(MOUSEWHEEL);\n this.stop().restore();\n return this;\n };\n\n\n /**\n Scroll to an element\n @method scrollTo\n @param node {Node} A node to scroll to.\n @chainable\n @example\n $(\".nano\").nanoScroller({ scrollTo: $('#a_node') });\n */\n\n NanoScroll.prototype.scrollTo = function(node) {\n if (!this.isActive) {\n return;\n }\n this.scrollTop(this.$el.find(node).get(0).offsetTop);\n return this;\n };\n\n\n /**\n To stop the operation.\n This option will tell the plugin to disable all event bindings and hide the gadget scrollbar from the UI.\n @method stop\n @chainable\n @example\n $(\".nano\").nanoScroller({ stop: true });\n */\n\n NanoScroll.prototype.stop = function() {\n if (cAF && this.scrollRAF) {\n cAF(this.scrollRAF);\n this.scrollRAF = null;\n }\n this.stopped = true;\n this.removeEvents();\n if (!this.iOSNativeScrolling) {\n this.pane.hide();\n }\n return this;\n };\n\n\n /**\n Destroys nanoScroller and restores browser's native scrollbar.\n @method destroy\n @chainable\n @example\n $(\".nano\").nanoScroller({ destroy: true });\n */\n\n NanoScroll.prototype.destroy = function() {\n if (!this.stopped) {\n this.stop();\n }\n if (!this.iOSNativeScrolling && this.pane.length) {\n this.pane.remove();\n }\n if (BROWSER_IS_IE7) {\n this.$content.height('');\n }\n this.$content.removeAttr('tabindex');\n if (this.$el.hasClass('has-scrollbar')) {\n this.$el.removeClass('has-scrollbar');\n this.$content.css({\n right: ''\n });\n }\n return this;\n };\n\n\n /**\n To flash the scrollbar gadget for an amount of time defined in plugin settings (defaults to 1,5s).\n Useful if you want to show the user (e.g. on pageload) that there is more content waiting for him.\n @method flash\n @chainable\n @example\n $(\".nano\").nanoScroller({ flash: true });\n */\n\n NanoScroll.prototype.flash = function() {\n if (this.iOSNativeScrolling) {\n return;\n }\n if (!this.isActive) {\n return;\n }\n this.reset();\n this.pane.addClass('flashed');\n setTimeout((function(_this) {\n return function() {\n _this.pane.removeClass('flashed');\n };\n })(this), this.options.flashDelay);\n return this;\n };\n\n return NanoScroll;\n\n })();\n $.fn.nanoScroller = function(settings) {\n return this.each(function() {\n var options, scrollbar;\n if (!(scrollbar = this.nanoscroller)) {\n options = $.extend({}, defaults, settings);\n this.nanoscroller = scrollbar = new NanoScroll(this, options);\n }\n if (settings && typeof settings === \"object\") {\n $.extend(scrollbar.options, settings);\n if (settings.scrollBottom != null) {\n return scrollbar.scrollBottom(settings.scrollBottom);\n }\n if (settings.scrollTop != null) {\n return scrollbar.scrollTop(settings.scrollTop);\n }\n if (settings.scrollTo) {\n return scrollbar.scrollTo(settings.scrollTo);\n }\n if (settings.scroll === 'bottom') {\n return scrollbar.scrollBottom(0);\n }\n if (settings.scroll === 'top') {\n return scrollbar.scrollTop(0);\n }\n if (settings.scroll && settings.scroll instanceof $) {\n return scrollbar.scrollTo(settings.scroll);\n }\n if (settings.stop) {\n return scrollbar.stop();\n }\n if (settings.destroy) {\n return scrollbar.destroy();\n }\n if (settings.flash) {\n return scrollbar.flash();\n }\n }\n return scrollbar.reset();\n });\n };\n $.fn.nanoScroller.Constructor = NanoScroll;\n});\n\n//# sourceMappingURL=jquery.nanoscroller.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/nanoscroller/bin/javascripts/jquery.nanoscroller.js\n// module id = 280\n// module chunks = 1","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport compose from './compose';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/es/applyMiddleware.js\n// module id = 281\n// module chunks = 1","function bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/es/bindActionCreators.js\n// module id = 282\n// module chunks = 1","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers);\n\n var unexpectedKeyCache = void 0;\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError = void 0;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/es/combineReducers.js\n// module id = 283\n// module chunks = 1","module.exports = require('./lib/index');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/symbol-observable/index.js\n// module id = 284\n// module chunks = 1","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _ponyfill = require('./ponyfill.js');\n\nvar _ponyfill2 = _interopRequireDefault(_ponyfill);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar root; /* global window */\n\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = (0, _ponyfill2['default'])(root);\nexports['default'] = result;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/symbol-observable/lib/index.js\n// module id = 285\n// module chunks = 1","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports['default'] = symbolObservablePonyfill;\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar _Symbol = root.Symbol;\n\n\tif (typeof _Symbol === 'function') {\n\t\tif (_Symbol.observable) {\n\t\t\tresult = _Symbol.observable;\n\t\t} else {\n\t\t\tresult = _Symbol('observable');\n\t\t\t_Symbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/symbol-observable/lib/ponyfill.js\n// module id = 286\n// module chunks = 1","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.tippy = factory());\n}(this, (function () { 'use strict';\n\nvar Browser = {};\n\nif (typeof window !== 'undefined') {\n Browser.SUPPORTED = 'requestAnimationFrame' in window;\n Browser.SUPPORTS_TOUCH = 'ontouchstart' in window;\n Browser.touch = false;\n Browser.dynamicInputDetection = true;\n // Chrome device/touch emulation can make this dynamic\n Browser.iOS = function () {\n return (/iPhone|iPad|iPod/.test(navigator.userAgent) && !window.MSStream\n );\n };\n}\n\n/**\n* The global storage array which holds all data reference objects\n* from every instance\n* This allows us to hide tooltips from all instances, finding the ref when\n* clicking on the body, and for followCursor\n*/\nvar Store = [];\n\n/**\n* Selector constants used for grabbing elements\n*/\nvar Selectors = {\n POPPER: '.tippy-popper',\n TOOLTIP: '.tippy-tooltip',\n CONTENT: '.tippy-tooltip-content',\n CIRCLE: '[x-circle]',\n ARROW: '[x-arrow]',\n TOOLTIPPED_EL: '[data-tooltipped]',\n CONTROLLER: '[data-tippy-controller]'\n\n /**\n * The default settings applied to each instance\n */\n};var Defaults = {\n html: false,\n position: 'top',\n animation: 'shift',\n animateFill: true,\n arrow: false,\n arrowSize: 'regular',\n delay: 0,\n trigger: 'mouseenter focus',\n duration: 350,\n interactive: false,\n interactiveBorder: 2,\n theme: 'dark',\n size: 'regular',\n distance: 10,\n offset: 0,\n hideOnClick: true,\n multiple: false,\n followCursor: false,\n inertia: false,\n flipDuration: 350,\n sticky: false,\n stickyDuration: 200,\n appendTo: function appendTo() {\n return document.body;\n },\n zIndex: 9999,\n touchHold: false,\n performance: false,\n dynamicTitle: false,\n popperOptions: {}\n\n /**\n * The keys of the defaults object for reducing down into a new object\n * Used in `getIndividualSettings()`\n */\n};var DefaultsKeys = Browser.SUPPORTED && Object.keys(Defaults);\n\n/**\n* Hides all poppers\n* @param {Object} exclude - refData to exclude if needed\n*/\nfunction hideAllPoppers(exclude) {\n Store.forEach(function (refData) {\n var popper = refData.popper,\n tippyInstance = refData.tippyInstance,\n _refData$settings = refData.settings,\n appendTo = _refData$settings.appendTo,\n hideOnClick = _refData$settings.hideOnClick,\n trigger = _refData$settings.trigger;\n\n // Don't hide already hidden ones\n\n if (!appendTo.contains(popper)) return;\n\n // hideOnClick can have the truthy value of 'persistent', so strict check is needed\n var isHideOnClick = hideOnClick === true || trigger.indexOf('focus') !== -1;\n var isNotCurrentRef = !exclude || popper !== exclude.popper;\n\n if (isHideOnClick && isNotCurrentRef) {\n tippyInstance.hide(popper);\n }\n });\n}\n\nvar matches = {};\n\nif (typeof Element !== 'undefined') {\n var e = Element.prototype;\n matches = e.matches || e.matchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector || e.msMatchesSelector || function (s) {\n var matches = (this.document || this.ownerDocument).querySelectorAll(s),\n i = matches.length;\n while (--i >= 0 && matches.item(i) !== this) {}\n return i > -1;\n };\n}\n\nvar matches$1 = matches;\n\n/**\n* Ponyfill to get the closest parent element\n* @param {Element} element - child of parent to be returned\n* @param {String} parentSelector - selector to match the parent if found\n* @return {Element}\n*/\nfunction closest(element, parentSelector) {\n var _closest = Element.prototype.closest || function (selector) {\n var el = this;\n while (el) {\n if (matches$1.call(el, selector)) {\n return el;\n }\n el = el.parentElement;\n }\n };\n\n return _closest.call(element, parentSelector);\n}\n\n/**\n* Ponyfill for Array.prototype.find\n* @param {Array} arr\n* @param {Function} checkFn\n* @return item in the array\n*/\nfunction find(arr, checkFn) {\n if (Array.prototype.find) {\n return arr.find(checkFn);\n }\n\n // use `filter` as fallback\n return arr.filter(checkFn)[0];\n}\n\n/**\n* Adds the needed event listeners\n*/\nfunction bindEventListeners() {\n var touchHandler = function touchHandler() {\n Browser.touch = true;\n\n if (Browser.iOS()) {\n document.body.classList.add('tippy-touch');\n }\n\n if (Browser.dynamicInputDetection && window.performance) {\n document.addEventListener('mousemove', mousemoveHandler);\n }\n };\n\n var mousemoveHandler = function () {\n var time = void 0;\n\n return function () {\n var now = performance.now();\n\n // Chrome 60+ is 1 mousemove per rAF, use 20ms time difference\n if (now - time < 20) {\n Browser.touch = false;\n document.removeEventListener('mousemove', mousemoveHandler);\n if (!Browser.iOS()) {\n document.body.classList.remove('tippy-touch');\n }\n }\n\n time = now;\n };\n }();\n\n var clickHandler = function clickHandler(event) {\n // Simulated events dispatched on the document\n if (!(event.target instanceof Element)) {\n return hideAllPoppers();\n }\n\n var el = closest(event.target, Selectors.TOOLTIPPED_EL);\n var popper = closest(event.target, Selectors.POPPER);\n\n if (popper) {\n var ref = find(Store, function (ref) {\n return ref.popper === popper;\n });\n var interactive = ref.settings.interactive;\n\n if (interactive) return;\n }\n\n if (el) {\n var _ref = find(Store, function (ref) {\n return ref.el === el;\n });\n var _ref$settings = _ref.settings,\n hideOnClick = _ref$settings.hideOnClick,\n multiple = _ref$settings.multiple,\n trigger = _ref$settings.trigger;\n\n // Hide all poppers except the one belonging to the element that was clicked IF\n // `multiple` is false AND they are a touch user, OR\n // `multiple` is false AND it's triggered by a click\n\n if (!multiple && Browser.touch || !multiple && trigger.indexOf('click') !== -1) {\n return hideAllPoppers(_ref);\n }\n\n // If hideOnClick is not strictly true or triggered by a click don't hide poppers\n if (hideOnClick !== true || trigger.indexOf('click') !== -1) return;\n }\n\n // Don't trigger a hide for tippy controllers, and don't needlessly run loop\n if (closest(event.target, Selectors.CONTROLLER) || !document.querySelector(Selectors.POPPER)) return;\n\n hideAllPoppers();\n };\n\n var blurHandler = function blurHandler(event) {\n var _document = document,\n el = _document.activeElement;\n\n if (el && el.blur && matches$1.call(el, Selectors.TOOLTIPPED_EL)) {\n el.blur();\n }\n };\n\n // Hook events\n document.addEventListener('click', clickHandler);\n document.addEventListener('touchstart', touchHandler);\n window.addEventListener('blur', blurHandler);\n\n if (!Browser.SUPPORTS_TOUCH && (navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0)) {\n document.addEventListener('pointerdown', touchHandler);\n }\n}\n\n/**\n* To run a single time, once DOM is presumed to be ready\n* @return {Boolean} whether the function has run or not\n*/\nfunction init() {\n if (init.done) return false;\n init.done = true;\n\n bindEventListeners();\n\n return true;\n}\n\n/**\n* Waits until next repaint to execute a fn\n* @param {Function} fn\n*/\nfunction defer(fn) {\n window.requestAnimationFrame(function () {\n setTimeout(fn, 0);\n });\n}\n\n/**\n* Returns the supported prefixed property - only `webkit` is needed, `moz`, `ms` and `o` are obsolete\n* @param {String} property\n* @return {String} - browser supported prefixed property\n*/\nfunction prefix(property) {\n var prefixes = [false, 'webkit'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var _prefix = prefixes[i];\n var prefixedProp = _prefix ? '' + _prefix + upperProp : property;\n if (typeof window.document.body.style[prefixedProp] !== 'undefined') {\n return prefixedProp;\n }\n }\n\n return null;\n}\n\n/**\n* Ponyfill for Array.prototype.findIndex\n* @param {Array} arr\n* @param {Function} checkFn\n* @return index of the item in the array\n*/\nfunction findIndex(arr, checkFn) {\n if (Array.prototype.findIndex) {\n return arr.findIndex(checkFn);\n }\n\n // fallback\n return arr.indexOf(find(arr, checkFn));\n}\n\n/**\n* Removes the title from the tooltipped element, setting `data-original-title`\n* appropriately\n* @param {Element} el\n*/\nfunction removeTitle(el) {\n var title = el.getAttribute('title');\n\n // Only set `data-original-title` attr if there is a title\n if (title) {\n el.setAttribute('data-original-title', title);\n }\n\n el.removeAttribute('title');\n}\n\n/**\n* Determines if an element is visible in the viewport\n* @param {Element} el\n* @return {Boolean}\n*/\nfunction elementIsInViewport(el) {\n var rect = el.getBoundingClientRect();\n\n return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);\n}\n\n/**\n* Triggers a document repaint or reflow for CSS transition\n* @param {Element} tooltip\n* @param {Element} circle\n*/\nfunction triggerReflow(tooltip, circle) {\n // Safari needs the specific 'transform' property to be accessed\n circle ? window.getComputedStyle(circle)[prefix('transform')] : window.getComputedStyle(tooltip).opacity;\n}\n\n/**\n* Modifies elements' class lists\n* @param {Element[]} els - Array of elements\n* @param {Function} callback\n*/\nfunction modifyClassList(els, callback) {\n els.forEach(function (el) {\n if (!el) return;\n callback(el.classList);\n });\n}\n\n/**\n* Returns inner elements of the popper element\n* @param {Element} popper\n* @return {Object}\n*/\nfunction getInnerElements(popper) {\n return {\n tooltip: popper.querySelector(Selectors.TOOLTIP),\n circle: popper.querySelector(Selectors.CIRCLE),\n content: popper.querySelector(Selectors.CONTENT)\n };\n}\n\n/**\n* Applies the transition duration to each element\n* @param {Element[]} els - Array of elements\n* @param {Number} duration\n*/\nfunction applyTransitionDuration(els, duration) {\n els.forEach(function (el) {\n if (!el) return;\n\n var isContent = matches$1.call(el, Selectors.CONTENT);\n\n var _duration = isContent ? Math.round(duration / 1.3) : duration;\n\n el.style[prefix('transitionDuration')] = _duration + 'ms';\n });\n}\n\n/**\n* Determines if a popper is currently visible\n* @param {Element} popper\n* @return {Boolean}\n*/\nfunction isVisible(popper) {\n return popper.style.visibility === 'visible';\n}\n\nfunction noop() {}\n\nfunction isObjectLiteral(input) {\n return !!input && input.toString() === '[object Object]';\n}\n\n/**\n* Returns the non-shifted placement (e.g., 'bottom-start' => 'bottom')\n* @param {String} placement\n* @return {String}\n*/\nfunction getCorePlacement(placement) {\n return placement.replace(/-.+/, '');\n}\n\n/**\n* Mousemove event listener callback method for follow cursor setting\n* @param {MouseEvent} e\n*/\nfunction followCursorHandler(e) {\n var _this = this;\n\n var data = find(Store, function (data) {\n return data.el === _this;\n });\n\n var popper = data.popper,\n offset = data.settings.offset;\n\n\n var position = getCorePlacement(popper.getAttribute('x-placement'));\n var halfPopperWidth = Math.round(popper.offsetWidth / 2);\n var halfPopperHeight = Math.round(popper.offsetHeight / 2);\n var viewportPadding = 5;\n var pageWidth = document.documentElement.offsetWidth || document.body.offsetWidth;\n\n var pageX = e.pageX,\n pageY = e.pageY;\n\n\n var x = void 0,\n y = void 0;\n\n switch (position) {\n case 'top':\n x = pageX - halfPopperWidth + offset;\n y = pageY - 2 * halfPopperHeight;\n break;\n case 'bottom':\n x = pageX - halfPopperWidth + offset;\n y = pageY + 10;\n break;\n case 'left':\n x = pageX - 2 * halfPopperWidth;\n y = pageY - halfPopperHeight + offset;\n break;\n case 'right':\n x = pageX + 5;\n y = pageY - halfPopperHeight + offset;\n break;\n }\n\n var isRightOverflowing = pageX + viewportPadding + halfPopperWidth + offset > pageWidth;\n var isLeftOverflowing = pageX - viewportPadding - halfPopperWidth + offset < 0;\n\n // Prevent left/right overflow\n if (position === 'top' || position === 'bottom') {\n if (isRightOverflowing) {\n x = pageWidth - viewportPadding - 2 * halfPopperWidth;\n }\n\n if (isLeftOverflowing) {\n x = viewportPadding;\n }\n }\n\n popper.style[prefix('transform')] = 'translate3d(' + x + 'px, ' + y + 'px, 0)';\n}\n\n/**\n* Returns an array of elements based on the selector input\n* @param {String|Element|Element[]} selector\n* @return {Element[]}\n*/\nfunction getArrayOfElements(selector) {\n if (selector instanceof Element || isObjectLiteral(selector)) {\n return [selector];\n }\n\n if (selector instanceof NodeList) {\n return [].slice.call(selector);\n }\n\n if (Array.isArray(selector)) {\n return selector;\n }\n\n try {\n return [].slice.call(document.querySelectorAll(selector));\n } catch (_) {\n return [];\n }\n}\n\n/**\n* Prepares the callback functions for `show` and `hide` methods\n* @param {Object} data\n* @param {Number} duration\n* @param {Function} callback - callback function to fire once transitions complete\n*/\nfunction onTransitionEnd(data, duration, callback) {\n // Make callback synchronous if duration is 0\n if (!duration) {\n return callback();\n }\n\n var _getInnerElements = getInnerElements(data.popper),\n tooltip = _getInnerElements.tooltip;\n\n var transitionendFired = false;\n\n var listeners = function listeners(action) {\n tooltip[action + 'EventListener']('webkitTransitionEnd', listenerCallback);\n tooltip[action + 'EventListener']('transitionend', listenerCallback);\n };\n\n var listenerCallback = function listenerCallback(e) {\n if (e.target === tooltip && !transitionendFired) {\n transitionendFired = true;\n listeners('remove');\n callback();\n }\n };\n\n // Fire callback upon transition completion\n listeners('add');\n\n // Fallback: transitionend listener sometimes may not fire\n clearTimeout(data._transitionendTimeout);\n data._transitionendTimeout = setTimeout(function () {\n if (!transitionendFired) {\n listeners('remove');\n callback();\n }\n }, duration);\n}\n\n/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.12.9\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n // NOTE: 1 DOM access here\n var offsetParent = element && element.offsetParent;\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement;\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\n/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nvar isIE10 = undefined;\n\nvar isIE10$1 = function isIE10$1() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n};\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE10$1() ? html['offset' + axis] + computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')] + computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')] : 0);\n}\n\nfunction getWindowSizes() {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE10$1() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar defineProperty = function defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10$1()) {\n try {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var isIE10 = isIE10$1();\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = getScroll(html);\n var scrollLeft = getScroll(html, 'left');\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n // NOTE: 1 DOM access here\n var boundaries = { top: 0, left: 0 };\n var offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var styles = getComputedStyle(element);\n var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find$1(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex$1(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find$1(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex$1(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length - 1; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find$1(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n // floor sides to avoid blurry text\n var offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right)\n };\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find$1(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find$1(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement);\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find$1(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults$1 = {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults$1;\n\n/**\n* Returns the distance taking into account the default distance due to\n* the transform: translate setting in CSS\n* @param {Number} distance\n* @return {String}\n*/\nfunction getOffsetDistanceInPx(distance) {\n return -(distance - Defaults.distance) + 'px';\n}\n\nvar classCallCheck$1 = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass$1 = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar _extends$1 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n* Creates a new popper instance\n* @param {Object} data\n* @return {Object} - the popper instance\n*/\nfunction createPopperInstance(data) {\n var el = data.el,\n popper = data.popper,\n _data$settings = data.settings,\n position = _data$settings.position,\n popperOptions = _data$settings.popperOptions,\n offset = _data$settings.offset,\n distance = _data$settings.distance,\n flipDuration = _data$settings.flipDuration;\n\n var _getInnerElements = getInnerElements(popper),\n tooltip = _getInnerElements.tooltip;\n\n var config = _extends$1({\n placement: position\n }, popperOptions || {}, {\n modifiers: _extends$1({}, popperOptions ? popperOptions.modifiers : {}, {\n flip: _extends$1({\n padding: distance + 5 /* 5px from viewport boundary */\n }, popperOptions && popperOptions.modifiers ? popperOptions.modifiers.flip : {}),\n offset: _extends$1({\n offset: offset\n }, popperOptions && popperOptions.modifiers ? popperOptions.modifiers.offset : {})\n }),\n onUpdate: function onUpdate() {\n var styles = tooltip.style;\n styles.top = '';\n styles.bottom = '';\n styles.left = '';\n styles.right = '';\n styles[getCorePlacement(popper.getAttribute('x-placement'))] = getOffsetDistanceInPx(distance);\n }\n });\n\n // Update the popper's position whenever its content changes\n // Not supported in IE10 unless polyfilled\n if (window.MutationObserver) {\n var styles = popper.style;\n\n var observer = new MutationObserver(function () {\n styles[prefix('transitionDuration')] = '0ms';\n data.popperInstance.update();\n defer(function () {\n styles[prefix('transitionDuration')] = flipDuration + 'ms';\n });\n });\n\n observer.observe(popper, {\n childList: true,\n subtree: true,\n characterData: true\n });\n\n data._mutationObservers.push(observer);\n }\n\n return new Popper(el, popper, config);\n}\n\n/**\n* Appends the popper and creates a popper instance if one does not exist\n* Also updates its position if need be and enables event listeners\n* @param {Object} data - the element/popper reference data\n*/\nfunction mountPopper(data) {\n var el = data.el,\n popper = data.popper,\n _data$settings = data.settings,\n appendTo = _data$settings.appendTo,\n followCursor = _data$settings.followCursor;\n\n // Already on the DOM\n\n if (appendTo.contains(popper)) return;\n\n appendTo.appendChild(popper);\n\n if (!data.popperInstance) {\n data.popperInstance = createPopperInstance(data);\n } else {\n data.popperInstance.update();\n if (!followCursor || Browser.touch) {\n data.popperInstance.enableEventListeners();\n }\n }\n\n // Since touch is determined dynamically, followCursor is set on mount\n if (followCursor && !Browser.touch) {\n el.addEventListener('mousemove', followCursorHandler);\n data.popperInstance.disableEventListeners();\n }\n}\n\n/**\n* Updates a popper's position on each animation frame to make it stick to a moving element\n* @param {Object} refData\n*/\nfunction makeSticky(refData) {\n var popper = refData.popper,\n popperInstance = refData.popperInstance,\n stickyDuration = refData.settings.stickyDuration;\n\n\n var applyTransitionDuration = function applyTransitionDuration() {\n return popper.style[prefix('transitionDuration')] = stickyDuration + 'ms';\n };\n\n var removeTransitionDuration = function removeTransitionDuration() {\n return popper.style[prefix('transitionDuration')] = '';\n };\n\n var updatePosition = function updatePosition() {\n popperInstance && popperInstance.scheduleUpdate();\n\n applyTransitionDuration();\n\n isVisible(popper) ? window.requestAnimationFrame(updatePosition) : removeTransitionDuration();\n };\n\n // Wait until Popper's position has been updated initially\n defer(updatePosition);\n}\n\n/**\n* Returns an object of settings to override global settings\n* @param {Element} el - the tooltipped element\n* @param {Object} instanceSettings\n* @return {Object} - individual settings\n*/\nfunction getIndividualSettings(el, instanceSettings) {\n var settings = DefaultsKeys.reduce(function (acc, key) {\n var val = el.getAttribute('data-' + key.toLowerCase()) || instanceSettings[key];\n\n // Convert strings to booleans\n if (val === 'false') val = false;\n if (val === 'true') val = true;\n\n // Convert number strings to true numbers\n if (isFinite(val) && !isNaN(parseFloat(val))) {\n val = parseFloat(val);\n }\n\n // Convert array strings to actual arrays\n if (typeof val === 'string' && val.trim().charAt(0) === '[') {\n val = JSON.parse(val);\n }\n\n acc[key] = val;\n\n return acc;\n }, {});\n\n return _extends$1({}, instanceSettings, settings);\n}\n\n/**\n* Creates a popper element then returns it\n* @param {Number} id - the popper id\n* @param {String} title - the tooltip's `title` attribute\n* @param {Object} settings - individual settings\n* @return {Element} - the popper element\n*/\nfunction createPopperElement(id, title, settings) {\n var position = settings.position,\n distance = settings.distance,\n arrow = settings.arrow,\n animateFill = settings.animateFill,\n inertia = settings.inertia,\n animation = settings.animation,\n arrowSize = settings.arrowSize,\n size = settings.size,\n theme = settings.theme,\n html = settings.html,\n zIndex = settings.zIndex,\n interactive = settings.interactive;\n\n\n var popper = document.createElement('div');\n popper.setAttribute('class', 'tippy-popper');\n popper.setAttribute('role', 'tooltip');\n popper.setAttribute('aria-hidden', 'true');\n popper.setAttribute('id', 'tippy-tooltip-' + id);\n popper.style.zIndex = zIndex;\n\n var tooltip = document.createElement('div');\n tooltip.setAttribute('class', 'tippy-tooltip tippy-tooltip--' + size + ' leave');\n tooltip.setAttribute('data-animation', animation);\n\n theme.split(' ').forEach(function (t) {\n tooltip.classList.add(t + '-theme');\n });\n\n if (arrow) {\n // Add an arrow\n var _arrow = document.createElement('div');\n _arrow.setAttribute('class', 'arrow-' + arrowSize);\n _arrow.setAttribute('x-arrow', '');\n tooltip.appendChild(_arrow);\n }\n\n if (animateFill) {\n // Create animateFill circle element for animation\n tooltip.setAttribute('data-animatefill', '');\n var circle = document.createElement('div');\n circle.setAttribute('class', 'leave');\n circle.setAttribute('x-circle', '');\n tooltip.appendChild(circle);\n }\n\n if (inertia) {\n // Change transition timing function cubic bezier\n tooltip.setAttribute('data-inertia', '');\n }\n\n if (interactive) {\n tooltip.setAttribute('data-interactive', '');\n }\n\n // Tooltip content (text or HTML)\n var content = document.createElement('div');\n content.setAttribute('class', 'tippy-tooltip-content');\n\n if (html) {\n var templateId = void 0;\n\n if (html instanceof Element) {\n content.appendChild(html);\n templateId = '#' + html.id || 'tippy-html-template';\n } else {\n content.innerHTML = document.getElementById(html.replace('#', '')).innerHTML;\n templateId = html;\n }\n\n popper.classList.add('html-template');\n interactive && popper.setAttribute('tabindex', '-1');\n tooltip.setAttribute('data-template-id', templateId);\n } else {\n content.innerHTML = title;\n }\n\n // Init distance. Further updates are made in the popper instance's `onUpdate()` method\n tooltip.style[getCorePlacement(position)] = getOffsetDistanceInPx(distance);\n\n tooltip.appendChild(content);\n popper.appendChild(tooltip);\n\n return popper;\n}\n\n/**\n* Creates a trigger\n* @param {Object} event - the custom event specified in the `trigger` setting\n* @param {Element} el - tooltipped element\n* @param {Object} handlers - the handlers for each listener\n* @param {Boolean} touchHold\n* @return {Array} - array of listener objects\n*/\nfunction createTrigger(event, el, handlers, touchHold) {\n var listeners = [];\n\n if (event === 'manual') return listeners;\n\n // Enter\n el.addEventListener(event, handlers.handleTrigger);\n listeners.push({\n event: event,\n handler: handlers.handleTrigger\n });\n\n // Leave\n if (event === 'mouseenter') {\n if (Browser.SUPPORTS_TOUCH && touchHold) {\n el.addEventListener('touchstart', handlers.handleTrigger);\n listeners.push({\n event: 'touchstart',\n handler: handlers.handleTrigger\n });\n el.addEventListener('touchend', handlers.handleMouseleave);\n listeners.push({\n event: 'touchend',\n handler: handlers.handleMouseleave\n });\n }\n\n el.addEventListener('mouseleave', handlers.handleMouseleave);\n listeners.push({\n event: 'mouseleave',\n handler: handlers.handleMouseleave\n });\n }\n\n if (event === 'focus') {\n el.addEventListener('blur', handlers.handleBlur);\n listeners.push({\n event: 'blur',\n handler: handlers.handleBlur\n });\n }\n\n return listeners;\n}\n\n/**\n* Determines if the mouse's cursor is outside the interactive border\n* @param {MouseEvent} event\n* @param {Element} popper\n* @param {Object} settings\n* @return {Boolean}\n*/\nfunction cursorIsOutsideInteractiveBorder(event, popper, settings) {\n if (!popper.getAttribute('x-placement')) return true;\n\n var x = event.clientX,\n y = event.clientY;\n var interactiveBorder = settings.interactiveBorder,\n distance = settings.distance;\n\n\n var rect = popper.getBoundingClientRect();\n var corePosition = getCorePlacement(popper.getAttribute('x-placement'));\n var borderWithDistance = interactiveBorder + distance;\n\n var exceeds = {\n top: rect.top - y > interactiveBorder,\n bottom: y - rect.bottom > interactiveBorder,\n left: rect.left - x > interactiveBorder,\n right: x - rect.right > interactiveBorder\n };\n\n switch (corePosition) {\n case 'top':\n exceeds.top = rect.top - y > borderWithDistance;\n break;\n case 'bottom':\n exceeds.bottom = y - rect.bottom > borderWithDistance;\n break;\n case 'left':\n exceeds.left = rect.left - x > borderWithDistance;\n break;\n case 'right':\n exceeds.right = x - rect.right > borderWithDistance;\n break;\n }\n\n return exceeds.top || exceeds.bottom || exceeds.left || exceeds.right;\n}\n\n/**\n* Returns relevant listener callbacks for each ref\n* @param {Element} el\n* @param {Element} popper\n* @param {Object} settings\n* @return {Object} - relevant listener handlers\n*/\nfunction getEventListenerHandlers(el, popper, settings) {\n var _this = this;\n\n var position = settings.position,\n delay = settings.delay,\n duration = settings.duration,\n interactive = settings.interactive,\n interactiveBorder = settings.interactiveBorder,\n distance = settings.distance,\n hideOnClick = settings.hideOnClick,\n trigger = settings.trigger,\n touchHold = settings.touchHold,\n touchWait = settings.touchWait;\n\n\n var showDelay = void 0,\n hideDelay = void 0;\n\n var clearTimeouts = function clearTimeouts() {\n clearTimeout(showDelay);\n clearTimeout(hideDelay);\n };\n\n var _show = function _show() {\n clearTimeouts();\n\n // Not hidden. For clicking when it also has a `focus` event listener\n if (isVisible(popper)) return;\n\n var _delay = Array.isArray(delay) ? delay[0] : delay;\n\n if (delay) {\n showDelay = setTimeout(function () {\n return _this.show(popper);\n }, _delay);\n } else {\n _this.show(popper);\n }\n };\n\n var show = function show(event) {\n return _this.callbacks.wait ? _this.callbacks.wait.call(popper, _show, event) : _show();\n };\n\n var hide = function hide() {\n clearTimeouts();\n\n var _delay = Array.isArray(delay) ? delay[1] : delay;\n\n if (delay) {\n hideDelay = setTimeout(function () {\n return _this.hide(popper);\n }, _delay);\n } else {\n _this.hide(popper);\n }\n };\n\n var handleTrigger = function handleTrigger(event) {\n var mouseenterTouch = event.type === 'mouseenter' && Browser.SUPPORTS_TOUCH && Browser.touch;\n\n if (mouseenterTouch && touchHold) return;\n\n // Toggle show/hide when clicking click-triggered tooltips\n var isClick = event.type === 'click';\n var isNotPersistent = hideOnClick !== 'persistent';\n\n isClick && isVisible(popper) && isNotPersistent ? hide() : show(event);\n\n if (mouseenterTouch && Browser.iOS() && el.click) {\n el.click();\n }\n };\n\n var handleMouseleave = function handleMouseleave(event) {\n\n // Don't fire 'mouseleave', use the 'touchend'\n if (event.type === 'mouseleave' && Browser.SUPPORTS_TOUCH && Browser.touch && touchHold) {\n return;\n }\n\n if (interactive) {\n // Temporarily handle mousemove to check if the mouse left somewhere\n // other than its popper\n var handleMousemove = function handleMousemove(event) {\n\n var triggerHide = function triggerHide() {\n document.body.removeEventListener('mouseleave', hide);\n document.removeEventListener('mousemove', handleMousemove);\n hide();\n };\n\n var closestTooltippedEl = closest(event.target, Selectors.TOOLTIPPED_EL);\n\n var isOverPopper = closest(event.target, Selectors.POPPER) === popper;\n var isOverEl = closestTooltippedEl === el;\n var isClickTriggered = trigger.indexOf('click') !== -1;\n var isOverOtherTooltippedEl = closestTooltippedEl && closestTooltippedEl !== el;\n\n if (isOverOtherTooltippedEl) {\n return triggerHide();\n }\n\n if (isOverPopper || isOverEl || isClickTriggered) return;\n\n if (cursorIsOutsideInteractiveBorder(event, popper, settings)) {\n triggerHide();\n }\n };\n\n document.body.addEventListener('mouseleave', hide);\n document.addEventListener('mousemove', handleMousemove);\n\n return;\n }\n\n // If it's not interactive, just hide it\n hide();\n };\n\n var handleBlur = function handleBlur(event) {\n // Ignore blur on touch devices, if there is no `relatedTarget`, hide\n // If the related target is a popper, ignore\n if (!event.relatedTarget || Browser.touch) return;\n if (closest(event.relatedTarget, Selectors.POPPER)) return;\n\n hide();\n };\n\n return {\n handleTrigger: handleTrigger,\n handleMouseleave: handleMouseleave,\n handleBlur: handleBlur\n };\n}\n\n/**\n* Evaluates/modifies the settings object for appropriate behavior\n* @param {Object} settings\n* @return {Object} modified/evaluated settings\n*/\nfunction evaluateSettings(settings) {\n // animateFill is disabled if an arrow is true\n if (settings.arrow) {\n settings.animateFill = false;\n }\n\n // reassign appendTo into the result of evaluating appendTo\n // if it's set as a function instead of Element\n if (settings.appendTo && typeof settings.appendTo === 'function') {\n settings.appendTo = settings.appendTo();\n }\n\n return settings;\n}\n\nvar idCounter = 1;\n\n/**\n* Creates tooltips for all el elements that match the instance's selector\n* @param {Element[]} els\n* @return {Object[]} Array of ref data objects\n*/\nfunction createTooltips(els) {\n var _this = this;\n\n return els.reduce(function (acc, el) {\n var id = idCounter;\n\n var settings = _extends$1({}, evaluateSettings(_this.settings.performance ? _this.settings : getIndividualSettings(el, _this.settings)));\n\n if (typeof settings.html === 'function') settings.html = settings.html(el);\n\n var html = settings.html,\n trigger = settings.trigger,\n touchHold = settings.touchHold,\n dynamicTitle = settings.dynamicTitle;\n\n\n var title = el.getAttribute('title');\n if (!title && !html) return acc;\n\n el.setAttribute('data-tooltipped', '');\n el.setAttribute('aria-describedby', 'tippy-tooltip-' + id);\n removeTitle(el);\n\n var popper = createPopperElement(id, title, settings);\n var handlers = getEventListenerHandlers.call(_this, el, popper, settings);\n\n var listeners = [];\n\n trigger.trim().split(' ').forEach(function (event) {\n return listeners = listeners.concat(createTrigger(event, el, handlers, touchHold));\n });\n\n // Add a mutation observer to observe the reference element for `title`\n // attribute changes, then automatically update tooltip content\n var observer = void 0;\n\n if (dynamicTitle && window.MutationObserver) {\n var _getInnerElements = getInnerElements(popper),\n content = _getInnerElements.content;\n\n observer = new MutationObserver(function () {\n var title = el.getAttribute('title');\n if (title) {\n content.innerHTML = title;\n removeTitle(el);\n }\n });\n\n observer.observe(el, { attributes: true });\n }\n\n acc.push({\n id: id,\n el: el,\n popper: popper,\n settings: settings,\n listeners: listeners,\n tippyInstance: _this,\n _mutationObservers: [observer]\n });\n\n idCounter++;\n\n return acc;\n }, []);\n}\n\n/* Utility functions */\n/* Core library functions */\n/**\n* @param {String|Element|Element[]} selector\n* @param {Object} settings (optional) - the object of settings to be applied to the instance\n*/\n\nvar Tippy = function () {\n function Tippy(selector) {\n var settings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck$1(this, Tippy);\n\n // Use default browser tooltip on unsupported browsers\n if (!Browser.SUPPORTED) return;\n\n init();\n\n this.state = {\n destroyed: false\n };\n\n this.selector = selector;\n\n this.settings = _extends$1({}, Defaults, settings);\n\n if (settings.show || settings.shown || settings.hide || settings.hidden) {\n console.warn('Callbacks without the `on` prefix are deprecated (with the exception of `wait`).' + ' Use onShow, onShown, onHide, and onHidden instead.');\n }\n\n this.callbacks = {\n wait: settings.wait,\n show: settings.onShow || settings.show || noop,\n shown: settings.onShown || settings.shown || noop,\n hide: settings.onHide || settings.hide || noop,\n hidden: settings.onHidden || settings.hidden || noop\n };\n\n this.store = createTooltips.call(this, getArrayOfElements(selector));\n Store.push.apply(Store, this.store);\n }\n\n /**\n * Returns the reference element's popper element\n * @param {Element} el\n * @return {Element}\n */\n\n\n createClass$1(Tippy, [{\n key: 'getPopperElement',\n value: function getPopperElement(el) {\n try {\n return find(this.store, function (data) {\n return data.el === el;\n }).popper;\n } catch (e) {\n console.error('[getPopperElement]: Element passed as the argument does not exist in the instance');\n }\n }\n\n /**\n * Returns a popper's reference element\n * @param {Element} popper\n * @return {Element}\n */\n\n }, {\n key: 'getReferenceElement',\n value: function getReferenceElement(popper) {\n try {\n return find(this.store, function (data) {\n return data.popper === popper;\n }).el;\n } catch (e) {\n console.error('[getReferenceElement]: Popper passed as the argument does not exist in the instance');\n }\n }\n\n /**\n * Returns the reference data object from either the reference element or popper element\n * @param {Element} x (reference element or popper)\n * @return {Object}\n */\n\n }, {\n key: 'getReferenceData',\n value: function getReferenceData(x) {\n return find(this.store, function (data) {\n return data.el === x || data.popper === x;\n });\n }\n\n /**\n * Shows a popper\n * @param {Element} popper\n * @param {Number} customDuration (optional)\n */\n\n }, {\n key: 'show',\n value: function show(popper, customDuration) {\n var _this = this;\n\n if (this.state.destroyed) return;\n\n var data = find(this.store, function (data) {\n return data.popper === popper;\n });\n\n var _getInnerElements = getInnerElements(popper),\n tooltip = _getInnerElements.tooltip,\n circle = _getInnerElements.circle,\n content = _getInnerElements.content;\n\n // Destroy popper if its reference is no longer on the DOM (excluding refObjs)\n\n\n if (!this.selector.refObj && !document.body.contains(data.el)) {\n this.destroy(popper);\n return;\n }\n\n this.callbacks.show.call(popper);\n\n var el = data.el,\n _data$settings = data.settings,\n appendTo = _data$settings.appendTo,\n sticky = _data$settings.sticky,\n interactive = _data$settings.interactive,\n followCursor = _data$settings.followCursor,\n flipDuration = _data$settings.flipDuration,\n duration = _data$settings.duration;\n\n\n var _duration = customDuration !== undefined ? customDuration : Array.isArray(duration) ? duration[0] : duration;\n\n // Prevent a transition when popper changes position\n applyTransitionDuration([popper, tooltip, circle], 0);\n\n mountPopper(data);\n\n popper.style.visibility = 'visible';\n popper.setAttribute('aria-hidden', 'false');\n\n // Wait for popper's position to update\n defer(function () {\n if (!isVisible(popper)) return;\n\n // Sometimes the arrow will not be in the correct position, force another update\n if (!followCursor || Browser.touch) {\n data.popperInstance.update();\n applyTransitionDuration([popper], flipDuration);\n }\n\n // Re-apply transition durations\n applyTransitionDuration([tooltip, circle], _duration);\n\n // Make content fade out a bit faster than the tooltip if `animateFill`\n if (circle) content.style.opacity = 1;\n\n // Interactive tooltips receive a class of 'active'\n interactive && el.classList.add('active');\n\n // Update popper's position on every animation frame\n sticky && makeSticky(data);\n\n // Repaint/reflow is required for CSS transition when appending\n triggerReflow(tooltip, circle);\n\n modifyClassList([tooltip, circle], function (list) {\n list.contains('tippy-notransition') && list.remove('tippy-notransition');\n list.remove('leave');\n list.add('enter');\n });\n\n // Wait for transitions to complete\n onTransitionEnd(data, _duration, function () {\n if (!isVisible(popper) || data._onShownFired) return;\n\n // Focus interactive tooltips only\n interactive && popper.focus();\n // Remove transitions from tooltip\n tooltip.classList.add('tippy-notransition');\n // Prevents shown() from firing more than once from early transition cancellations\n data._onShownFired = true;\n\n _this.callbacks.shown.call(popper);\n });\n });\n }\n\n /**\n * Hides a popper\n * @param {Element} popper\n * @param {Number} customDuration (optional)\n */\n\n }, {\n key: 'hide',\n value: function hide(popper, customDuration) {\n var _this2 = this;\n\n if (this.state.destroyed) return;\n\n this.callbacks.hide.call(popper);\n\n var data = find(this.store, function (data) {\n return data.popper === popper;\n });\n\n var _getInnerElements2 = getInnerElements(popper),\n tooltip = _getInnerElements2.tooltip,\n circle = _getInnerElements2.circle,\n content = _getInnerElements2.content;\n\n var el = data.el,\n _data$settings2 = data.settings,\n appendTo = _data$settings2.appendTo,\n sticky = _data$settings2.sticky,\n interactive = _data$settings2.interactive,\n followCursor = _data$settings2.followCursor,\n html = _data$settings2.html,\n trigger = _data$settings2.trigger,\n duration = _data$settings2.duration;\n\n\n var _duration = customDuration !== undefined ? customDuration : Array.isArray(duration) ? duration[1] : duration;\n\n data._onShownFired = false;\n interactive && el.classList.remove('active');\n\n popper.style.visibility = 'hidden';\n popper.setAttribute('aria-hidden', 'true');\n\n applyTransitionDuration([tooltip, circle, circle ? content : null], _duration);\n\n if (circle) content.style.opacity = 0;\n\n modifyClassList([tooltip, circle], function (list) {\n list.contains('tippy-tooltip') && list.remove('tippy-notransition');\n list.remove('enter');\n list.add('leave');\n });\n\n // Re-focus click-triggered html elements\n // and the tooltipped element IS in the viewport (otherwise it causes unsightly scrolling\n // if the tooltip is closed and the element isn't in the viewport anymore)\n if (html && trigger.indexOf('click') !== -1 && elementIsInViewport(el)) {\n el.focus();\n }\n\n // Wait for transitions to complete\n onTransitionEnd(data, _duration, function () {\n // `isVisible` is not completely reliable to determine if we shouldn't\n // run the hidden callback, we need to check the computed opacity style.\n // This prevents glitchy behavior of the transition when quickly showing\n // and hiding a tooltip.\n if (isVisible(popper) || !appendTo.contains(popper) || getComputedStyle(tooltip).opacity === '1') return;\n\n el.removeEventListener('mousemove', followCursorHandler);\n data.popperInstance.disableEventListeners();\n appendTo.removeChild(popper);\n\n _this2.callbacks.hidden.call(popper);\n });\n }\n\n /**\n * Updates a popper with new content\n * @param {Element} popper\n */\n\n }, {\n key: 'update',\n value: function update(popper) {\n if (this.state.destroyed) return;\n\n var data = find(this.store, function (data) {\n return data.popper === popper;\n });\n\n var _getInnerElements3 = getInnerElements(popper),\n content = _getInnerElements3.content;\n\n var el = data.el,\n html = data.settings.html;\n\n\n if (html instanceof Element) {\n console.warn('Aborted: update() should not be used if `html` is a DOM element');\n return;\n }\n\n content.innerHTML = html ? document.getElementById(html.replace('#', '')).innerHTML : el.getAttribute('title') || el.getAttribute('data-original-title');\n\n if (!html) removeTitle(el);\n }\n\n /**\n * Destroys a popper\n * @param {Element} popper\n * @param {Boolean} _isLast - private param used by destroyAll to optimize\n */\n\n }, {\n key: 'destroy',\n value: function destroy(popper, _isLast) {\n var _this3 = this;\n\n if (this.state.destroyed) return;\n\n var data = find(this.store, function (data) {\n return data.popper === popper;\n });\n\n var el = data.el,\n popperInstance = data.popperInstance,\n listeners = data.listeners,\n _mutationObservers = data._mutationObservers;\n\n // Ensure the popper is hidden\n\n if (isVisible(popper)) {\n this.hide(popper, 0);\n }\n\n // Remove Tippy-only event listeners from tooltipped element\n listeners.forEach(function (listener) {\n return el.removeEventListener(listener.event, listener.handler);\n });\n\n // Restore original title\n el.setAttribute('title', el.getAttribute('data-original-title'));\n\n el.removeAttribute('data-original-title');\n el.removeAttribute('data-tooltipped');\n el.removeAttribute('aria-describedby');\n\n popperInstance && popperInstance.destroy();\n\n _mutationObservers.forEach(function (observer) {\n observer && observer.disconnect();\n });\n\n // Remove from store\n Store.splice(findIndex(Store, function (data) {\n return data.popper === popper;\n }), 1);\n\n // Ensure filter is called only once\n if (_isLast === undefined || _isLast) {\n this.store = Store.filter(function (data) {\n return data.tippyInstance === _this3;\n });\n }\n }\n\n /**\n * Destroys all tooltips created by the instance\n */\n\n }, {\n key: 'destroyAll',\n value: function destroyAll() {\n var _this4 = this;\n\n if (this.state.destroyed) return;\n\n var storeLength = this.store.length;\n\n this.store.forEach(function (_ref, index) {\n var popper = _ref.popper;\n\n _this4.destroy(popper, index === storeLength - 1);\n });\n\n this.store = null;\n this.state.destroyed = true;\n }\n }]);\n return Tippy;\n}();\n\nfunction tippy$2(selector, settings) {\n // Create a virtual object for custom positioning\n if (isObjectLiteral(selector)) {\n selector = {\n refObj: true,\n attributes: selector.attributes || {},\n getBoundingClientRect: selector.getBoundingClientRect,\n clientWidth: selector.clientWidth,\n clientHeight: selector.clientHeight,\n setAttribute: function setAttribute(key, val) {\n selector.attributes[key] = val;\n },\n getAttribute: function getAttribute(key) {\n return selector.attributes[key];\n },\n removeAttribute: function removeAttribute(key) {\n delete selector.attributes[key];\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n classList: {\n classNames: {},\n add: function add(key) {\n selector.classList.classNames[key] = true;\n },\n remove: function remove(key) {\n selector.classList.classNames[key] = false;\n return true;\n },\n contains: function contains(key) {\n return !!selector.classList.classNames[key];\n }\n }\n };\n }\n\n return new Tippy(selector, settings);\n}\n\ntippy$2.Browser = Browser;\ntippy$2.Defaults = Defaults;\ntippy$2.disableDynamicInputDetection = function () {\n return Browser.dynamicInputDetection = false;\n};\ntippy$2.enableDynamicInputDetection = function () {\n return Browser.dynamicInputDetection = true;\n};\n\nreturn tippy$2;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/tippy.js/dist/tippy.js\n// module id = 287\n// module chunks = 1","/*!\n * Unidragger v2.2.3\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: 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( [\n 'unipointer/unipointer'\n ], function( Unipointer ) {\n return factory( window, Unipointer );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('unipointer')\n );\n } else {\n // browser global\n window.Unidragger = factory(\n window,\n window.Unipointer\n );\n }\n\n}( window, function factory( window, Unipointer ) {\n\n'use strict';\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n this._bindHandles( false );\n};\n\n/**\n * works as unbinder, as you can .bindHandles( false ) to unbind\n * @param {Boolean} isBind - will unbind if falsey\n */\nproto._bindHandles = function( isBind ) {\n // munge isBind, default to true\n isBind = isBind === undefined ? true : !!isBind;\n // bind each handle\n var bindMethod = isBind ? 'addEventListener' : 'removeEventListener';\n for ( var i=0; i < this.handles.length; i++ ) {\n var handle = this.handles[i];\n this._bindStartEvent( handle, isBind );\n handle[ bindMethod ]( 'click', this );\n // touch-action: none to override browser touch gestures\n // metafizzy/flickity#540\n if ( window.PointerEvent ) {\n handle.style.touchAction = isBind ? this._touchActionValue : '';\n }\n }\n};\n\n// prototype so it can be overwriteable by Flickity\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n // dismiss range sliders\n if ( event.target.nodeName == 'INPUT' && event.target.type == 'range' ) {\n // reset pointerDown logic\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n return;\n }\n\n this._dragPointerDown( event, pointer );\n // kludge to blur focused inputs in dragger\n var focused = document.activeElement;\n if ( focused && focused.blur ) {\n focused.blur();\n }\n // bind move and end events\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// base pointer down logic\nproto._dragPointerDown = function( event, pointer ) {\n // track to see when dragging starts\n this.pointerDownPoint = Unipointer.getPointerPoint( pointer );\n\n var canPreventDefault = this.canPreventDefaultOnPointerDown( event, pointer );\n if ( canPreventDefault ) {\n event.preventDefault();\n }\n};\n\n// overwriteable method so Flickity can prevent for scrolling\nproto.canPreventDefaultOnPointerDown = function( event ) {\n // prevent default, unless touchstart or s and