{"version":3,"sources":["webpack:///./node_modules/flickity/dist/flickity.pkgd.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.bundle.js","webpack:///(webpack)/buildin/global.js"],"names":["window","factory","jQuery","arraySlice","Array","prototype","slice","console","logError","message","error","jQueryBridget","namespace","PluginClass","$","methodCall","$elems","methodName","args","returnValue","pluginMethodStr","each","i","elem","instance","data","method","charAt","value","apply","undefined","plainCall","options","option","_init","opts","isPlainObject","this","extend","fn","arg0","call","arguments","updateJQuery","bridget","EvEmitter","proto","on","eventName","listener","events","_events","listeners","indexOf","push","once","onceEvents","_onceEvents","off","length","index","splice","emitEvent","onceListeners","allOff","getStyleSize","num","parseFloat","isNaN","noop","measurements","measurementsLength","getZeroSize","size","width","height","innerWidth","innerHeight","outerWidth","outerHeight","getStyle","style","getComputedStyle","isBoxSizeOuter","isSetup","setup","div","document","createElement","padding","borderStyle","borderWidth","boxSizing","body","documentElement","appendChild","Math","round","getSize","removeChild","querySelector","nodeType","display","offsetWidth","offsetHeight","isBorderBox","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","matchesMethod","ElemProto","Element","matches","matchesSelector","prefixes","selector","utils","a","b","prop","makeArray","obj","isArray","removeFrom","ary","getParent","parentNode","getQueryElement","handleEvent","event","type","filterFindElements","elems","ffElems","forEach","HTMLElement","childElems","querySelectorAll","debounceMethod","_class","threshold","timeoutName","timeout","clearTimeout","_this","setTimeout","docReady","callback","readyState","addEventListener","toDashed","str","replace","match","$1","$2","toLowerCase","htmlInit","WidgetClass","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","attr","getAttribute","JSON","parse","className","Cell","parent","element","create","position","setAttribute","x","shift","originSide","destroy","unselect","side","transform","removeAttribute","setPosition","updateTarget","renderPosition","setDefaultTarget","marginProperty","target","cellAlign","sideOffset","adjustedX","percentPosition","getPositionValue","select","classList","add","remove","wrapShift","slideableWidth","Slide","isOriginLeft","cells","addCell","cell","max","beginMargin","firstMargin","endMargin","lastCell","getLastCell","lastMargin","slideWidth","getCellElements","map","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","requestAnimationFrame","wrapAround","modulo","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","cursorPosition","rightToLeft","translateX","slider","firstSlide","slides","positionX","progress","slidesWidth","dispatchEvent","selectedSlide","velocity","isPointerDown","isFreeScrolling","selectedIndex","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","cellShift","getFrictionFactor","force","isDraggable","dragForce","dragX","applyForce","selectedAttraction","animatePrototype","moveElements","toElem","GUID","instances","Flickity","queryElement","flickityGUID","$element","constructor","defaults","_create","accessibility","freeScrollFriction","friction","namespaceJQueryEvents","resize","setGallerySize","createMethods","id","guid","viewport","_createSlider","watchCSS","activate","isActive","_filterFindCellElements","children","reloadCells","tabIndex","selectInitialIndex","isInitActivated","cellSelector","_makeCells","positionCells","_getWrapShiftCells","cellElem","getLastSlide","_sizeCells","_positionCells","maxCellHeight","cellX","startCell","len","updateSlides","_containSlides","slide","nextMargin","canCellFit","_getCanCellFit","updateSelectedSlide","groupCells","number","parseInt","percentMatch","percent","reposition","positionSliderAtSelected","setCellAlign","cellAlignShorthands","center","left","right","shorthand","adaptiveHeight","_unshiftCells","gapX","cellIndex","_getGapCells","increment","contain","isRightToLeft","contentWidth","isContentSmaller","beginBound","endBound","min","emitArgs","$event","jQEvent","Event","trigger","isWrap","isInstant","_wrapSelect","prevIndex","startAnimation","wrapIndex","delta","abs","backWrapDelta","forewardWrapDelta","isDragSelect","previous","next","unselectSelectedSlide","selectedCells","selectedElements","selectedCell","selectedElement","initialIndex","queryCell","selectCell","getCellSlideIndex","getCell","getCells","getParentCell","getAdjacentCellElements","adjCount","cellElems","slideIndex","uiChange","childUIPointerDown","preventDefault","focus","onresize","isDragging","content","deactivate","onkeydown","isNotFocused","activeElement","handler","keyboardHandlers","keyCode","leftMethod","rightMethod","prevScrollY","pageYOffset","preventScroll","scrollTo","pageXOffset","removeEventListener","removeData","setJQuery","jq","Unipointer","Object","bindStartEvent","_bindStartEvent","unbindStartEvent","isAdd","bindMethod","startEvent","PointerEvent","getTouch","touches","touch","identifier","pointerIdentifier","onmousedown","button","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointer","pointerId","pointerDown","_bindPostStartEvents","postStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","pointerMove","onmouseup","_pointerUp","onpointerup","ontouchend","_pointerDone","pointerUp","_pointerReset","pointerDone","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","getPointerPoint","pageX","y","pageY","Unidragger","bindHandles","_bindHandles","unbindHandles","touchAction","_touchActionValue","handles","handle","okayPointerDown","pointerDownPointer","pointerDownBlur","cursorNodes","TEXTAREA","INPUT","SELECT","OPTION","clickTypes","radio","checkbox","submit","image","file","isCursorNode","nodeName","isClickType","isOkay","focused","blur","moveVector","_dragPointerMove","_dragMove","hasDragStarted","_dragStart","_dragPointerUp","_dragEnd","_staticClick","isPreventingClicks","dragStart","dragMove","bind","dragEnd","onclick","isIgnoringMouseUp","staticClick","draggable","dragThreshold","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","bindDrag","unbindDrag","_pointerDownPreventDefault","pointerDownFocus","pointerDownScroll","getScrollPosition","_pointerDownDefault","focusNodes","isTouchStart","isTouchPointer","pointerType","isFocusNode","isTouchScrolling","dragStartPosition","previousDragX","direction","originBound","dragMoveTime","Date","freeScroll","dragEndRestingSelect","restingX","getRestingPosition","dragEndBoostSelect","distance","getSlideDistance","positiveResting","_getClosestResting","negativeResting","minDistance","Infinity","condition","dist","minDist","isWrapAround","wrap","floor","clickedCell","onscroll","scroll","scrollMoveX","scrollMoveY","svgURI","PrevNextButton","getArrowMovements","shape","x0","x1","y1","x2","y2","x3","isEnabled","isPrevious","leftDirection","isLeft","disable","svg","createSVG","update","createElementNS","path","pathMovements","arrowShape","enable","disabled","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","PageDots","holder","dots","handleClick","onClick","setDots","addDots","removeDots","count","fragment","createDocumentFragment","newDots","dot","updateSelected","selectedDot","onTap","pageDots","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","state","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","hidden","tick","time","autoPlay","clear","stop","pause","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","getCellsFragment","insert","isAppend","insertCellElement","insertBefore","endCells","cellChange","append","prepend","minCellIndex","cellSizeChange","changedCellIndex","isPositioningSlider","prevSelectedElem","getCellLazyImages","lazyloadAttr","srcAttr","srcsetAttr","lazySelector","imgs","LazyLoader","img","flickity","load","_createLazyload","lazyLoad","lazyImages","lazyCellImages","src","srcset","onload","complete","onerror","lerp","t","_createAsNavFor","activateAsNavFor","deactivateAsNavFor","destroyAsNavFor","asNavForOption","asNavFor","setNavCompanion","companion","navCompanion","onNavCompanionSelect","navCompanionSelect","onNavStaticClick","companionCells","firstIndex","selectIndex","removeNavSelectedElements","navSelectedElements","changeNavSelectedClass","navElem","cellElement","ImagesLoaded","onAlways","queryElem","elements","getImages","jqDeferred","Deferred","check","images","addElementImages","addImage","background","addElementBackgroundImages","elementNodeTypes","childImgs","child","LoadingImage","Background","url","Image","reURL","exec","backgroundImage","addBackground","loadingImage","onProgress","progressedCount","hasAnyBroken","isLoaded","notify","debug","log","isComplete","jqMethod","getIsImageComplete","confirm","naturalWidth","proxyImage","unbindEvents","makeJQueryPlugin","imagesLoaded","promise","_createImagesLoaded","onImagesLoadedProgress","exports","_interopDefaultLegacy","e","$__default","_defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","key","_createClass","Constructor","protoProps","staticProps","_extends$1","assign","source","hasOwnProperty","_setPrototypeOf","o","p","setPrototypeOf","__proto__","TRANSITION_END","transitionEndEmulator","duration","called","one","Util","triggerTransitionEnd","getUID","prefix","random","getElementById","getSelectorFromElement","hrefAttr","trim","_","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","floatTransitionDelay","split","reflow","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","componentName","config","configTypes","property","expectedTypes","valueType","toString","RegExp","test","Error","toUpperCase","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","jQueryDetection","TypeError","version","jquery","emulateTransitionEnd","special","bindType","delegateType","is","handleObj","NAME$a","DATA_KEY$a","EVENT_KEY$a","JQUERY_NO_CONFLICT$a","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API$6","Alert","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","_jQueryInterface","_handleDismiss","alertInstance","get","noConflict","NAME$9","DATA_KEY$9","EVENT_KEY$9","DATA_API_KEY$6","JQUERY_NO_CONFLICT$9","CLASS_NAME_ACTIVE$3","EVENT_CLICK_DATA_API$5","EVENT_FOCUS_BLUR_DATA_API","EVENT_LOAD_DATA_API$2","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_INPUT","SELECTOR_BUTTON","Button","shouldAvoidTriggerChange","toggle","triggerChangeEvent","addAriaPressed","input","checked","contains","hasAttribute","toggleClass","avoidTriggerChange","initialButton","inputBtn","tagName","buttons","_i","_len","_button","NAME$8","DATA_KEY$8","EVENT_KEY$8","DATA_API_KEY$5","JQUERY_NO_CONFLICT$8","CLASS_NAME_ACTIVE$2","DIRECTION_NEXT","DIRECTION_PREV","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API$1","EVENT_CLICK_DATA_API$4","SELECTOR_ACTIVE_ITEM","Default$7","interval","keyboard","DefaultType$7","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","prev","cycle","clearInterval","_updateInterval","setInterval","visibilityState","to","activeIndex","_getItemIndex","_handleSwipe","absDeltax","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","clientX","end","move","which","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","addClass","elementInterval","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","action","ride","_dataApiClickHandler","carousels","$carousel","NAME$7","DATA_KEY$7","EVENT_KEY$7","JQUERY_NO_CONFLICT$7","CLASS_NAME_SHOW$6","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_HIDE$4","EVENT_HIDDEN$4","EVENT_CLICK_DATA_API$3","SELECTOR_DATA_TOGGLE$3","Default$6","DefaultType$6","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","filter","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","dimension","_getDimension","setTransitioning","scrollSize","getBoundingClientRect","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","currentTarget","$trigger","selectors","$target","isBrowser","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","Promise","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","ownerDocument","defaultView","getParentNode","host","getScrollParent","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","upperSide","html","scrollingElement","getBordersSize","styles","axis","sideA","sideB","computedStyle","getWindowSizes","createClass","defineProperties","_extends","getClientRect","offsets","bottom","top","rect","scrollTop","scrollLeft","result","sizes","clientWidth","clientHeight","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","subtract","modifier","includeScroll","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","boundariesElement","boundaries","excludeScroll","relativeOffset","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","_getWindowSizes","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","area","_ref","sort","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","getOuterSizes","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","secondaryMeasurement","find","arr","runModifiers","modifiers","ends","findIndex","cur","warn","enabled","isDestroyed","arrowStyles","attributes","flipped","positionFixed","flip","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","isNumeric","n","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","reverse","BEHAVIORS","parseOffset","offset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","toValue","index2","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","priority","primary","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","v","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","onLoad","modifierOptions","Defaults","Popper","classCallCheck","Utils","global","PopperUtils","Popper$1","NAME$6","DATA_KEY$6","EVENT_KEY$6","DATA_API_KEY$3","JQUERY_NO_CONFLICT$6","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","CLASS_NAME_DISABLED$1","CLASS_NAME_SHOW$5","CLASS_NAME_MENURIGHT","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_CLICK","EVENT_CLICK_DATA_API$2","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE$2","SELECTOR_MENU","Default$5","boundary","popperConfig","DefaultType$5","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","hideEvent","stopPropagation","Default","DefaultType","_getPlacement","$parentDropdown","_getOffset","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","NAME$5","DATA_KEY$5","EVENT_KEY$5","JQUERY_NO_CONFLICT$5","CLASS_NAME_OPEN","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","EVENT_HIDE$2","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS$1","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API$1","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Default$4","backdrop","DefaultType$4","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","modalTransitionDuration","modalBody","ELEMENT_NODE","_enforceFocus","shownEvent","transitionComplete","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","margin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","br","col","code","em","hr","h1","h2","h3","h4","h5","h6","li","ol","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","NAME$4","DATA_KEY$4","EVENT_KEY$4","JQUERY_NO_CONFLICT$4","CLASS_PREFIX$1","BSCLS_PREFIX_REGEX$1","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$3","HOVER_STATE_SHOW","HOVER_STATE_OUT","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","template","title","delay","container","fallbackPlacement","customClass","sanitize","DefaultType$3","Event$1","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","NAME","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","text","empty","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","$tip","tabClass","join","popperData","initConfigAnimation","NAME$3","DATA_KEY$3","EVENT_KEY$3","JQUERY_NO_CONFLICT$3","CLASS_PREFIX","BSCLS_PREFIX_REGEX","Default$2","DefaultType$2","Popover","_Tooltip","subClass","superClass","_getContent","CLASS_NAME_FADE$2","NAME$2","DATA_KEY$2","EVENT_KEY$2","JQUERY_NO_CONFLICT$2","CLASS_NAME_ACTIVE$1","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API","METHOD_POSITION","SELECTOR_NAV_LIST_GROUP$1","SELECTOR_NAV_LINKS","SELECTOR_LIST_ITEMS","Default$1","DefaultType$1","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","parents","scrollSpys","$spy","NAME$1","DATA_KEY$1","EVENT_KEY$1","JQUERY_NO_CONFLICT$1","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","Tab","listElement","itemSelector","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","JQUERY_NO_CONFLICT","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","EVENT_CLICK_DISMISS","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","autohide","Toast","_clearTimeout","_close","Scrollspy","g","Function","module"],"mappings":"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","file":"js/vendors~application~application_static~blocks~gmaps-e8817958edbda417e0c7.chunk.js","sourcesContent":["/*!\n * Flickity PACKAGED v2.3.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2021 Metafizzy\n */\n\n/**\n * Bridget makes jQuery widgets\n * v2.0.1\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n\n(function (window, factory) {\n // universal module definition\n /*jshint strict: false */ /* globals define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('jquery-bridget/jquery-bridget', ['jquery'], function (jQuery) {\n return factory(window, jQuery);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('jquery'));\n } else {\n // browser global\n window.jQueryBridget = factory(window, window.jQuery);\n }\n})(window, function factory(window, jQuery) {\n 'use strict';\n\n // ----- utils ----- //\n var arraySlice = Array.prototype.slice;\n\n // helper function for logging errors\n // $.error breaks jQuery chaining\n var console = window.console;\n var logError = typeof console == 'undefined' ? function () {} : function (message) {\n console.error(message);\n };\n\n // ----- jQueryBridget ----- //\n\n function jQueryBridget(namespace, PluginClass, $) {\n $ = $ || jQuery || window.jQuery;\n if (!$) {\n return;\n }\n\n // add option method -> $().plugin('option', {...})\n if (!PluginClass.prototype.option) {\n // option setter\n PluginClass.prototype.option = function (opts) {\n // bail out if not an object\n if (!$.isPlainObject(opts)) {\n return;\n }\n this.options = $.extend(true, this.options, opts);\n };\n }\n\n // make jQuery plugin\n $.fn[namespace] = function (arg0 /*, arg1 */) {\n if (typeof arg0 == 'string') {\n // method call $().plugin( 'methodName', { options } )\n // shift arguments by 1\n var args = arraySlice.call(arguments, 1);\n return methodCall(this, arg0, args);\n }\n // just $().plugin({ options })\n plainCall(this, arg0);\n return this;\n };\n\n // $().plugin('methodName')\n function methodCall($elems, methodName, args) {\n var returnValue;\n var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\n $elems.each(function (i, elem) {\n // get instance\n var instance = $.data(elem, namespace);\n if (!instance) {\n logError(namespace + ' not initialized. Cannot call methods, i.e. ' + pluginMethodStr);\n return;\n }\n var method = instance[methodName];\n if (!method || methodName.charAt(0) == '_') {\n logError(pluginMethodStr + ' is not a valid method');\n return;\n }\n\n // apply method, get return value\n var value = method.apply(instance, args);\n // set return value if value is returned, use only first value\n returnValue = returnValue === undefined ? value : returnValue;\n });\n return returnValue !== undefined ? returnValue : $elems;\n }\n function plainCall($elems, options) {\n $elems.each(function (i, elem) {\n var instance = $.data(elem, namespace);\n if (instance) {\n // set options & init\n instance.option(options);\n instance._init();\n } else {\n // initialize new instance\n instance = new PluginClass(elem, options);\n $.data(elem, namespace, instance);\n }\n });\n }\n updateJQuery($);\n }\n\n // ----- updateJQuery ----- //\n\n // set $.bridget for v1 backwards compatibility\n function updateJQuery($) {\n if (!$ || $ && $.bridget) {\n return;\n }\n $.bridget = jQueryBridget;\n }\n updateJQuery(jQuery || window.jQuery);\n\n // ----- ----- //\n\n return jQueryBridget;\n});\n\n/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n(function (global, factory) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if (typeof define == 'function' && define.amd) {\n // AMD - RequireJS\n define('ev-emitter/ev-emitter', factory);\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n})(typeof window != 'undefined' ? window : this, function () {\n function EvEmitter() {}\n var proto = EvEmitter.prototype;\n proto.on = function (eventName, listener) {\n if (!eventName || !listener) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[eventName] = events[eventName] || [];\n // only add once\n if (listeners.indexOf(listener) == -1) {\n listeners.push(listener);\n }\n return this;\n };\n proto.once = function (eventName, listener) {\n if (!eventName || !listener) {\n return;\n }\n // add event\n this.on(eventName, listener);\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[eventName] = onceEvents[eventName] || {};\n // set flag\n onceListeners[listener] = true;\n return this;\n };\n proto.off = function (eventName, listener) {\n var listeners = this._events && this._events[eventName];\n if (!listeners || !listeners.length) {\n return;\n }\n var index = listeners.indexOf(listener);\n if (index != -1) {\n listeners.splice(index, 1);\n }\n return this;\n };\n proto.emitEvent = function (eventName, args) {\n var listeners = this._events && this._events[eventName];\n if (!listeners || !listeners.length) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[eventName];\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n var isOnce = onceListeners && onceListeners[listener];\n if (isOnce) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off(eventName, listener);\n // unset once flag\n delete onceListeners[listener];\n }\n // trigger listener\n listener.apply(this, args);\n }\n return this;\n };\n proto.allOff = function () {\n delete this._events;\n delete this._onceEvents;\n };\n return EvEmitter;\n});\n\n/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n(function (window, factory) {\n /* jshint strict: false */ /* globals define, module */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('get-size/get-size', factory);\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n})(window, function factory() {\n 'use strict';\n\n // -------------------------- helpers -------------------------- //\n\n // get a number from a string, not a percentage\n function getStyleSize(value) {\n var num = parseFloat(value);\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN(num);\n return isValid && num;\n }\n function noop() {}\n var logError = typeof console == 'undefined' ? noop : function (message) {\n console.error(message);\n };\n\n // -------------------------- measurements -------------------------- //\n\n var measurements = ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', 'borderBottomWidth'];\n var measurementsLength = measurements.length;\n function getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n size[measurement] = 0;\n }\n return size;\n }\n\n // -------------------------- getStyle -------------------------- //\n\n /**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\n function getStyle(elem) {\n var style = getComputedStyle(elem);\n if (!style) {\n logError('Style returned ' + style + '. Are you running this code in a hidden iframe on Firefox? ' + 'See https://bit.ly/getsizebug1');\n }\n return style;\n }\n\n // -------------------------- setup -------------------------- //\n\n var isSetup = false;\n var isBoxSizeOuter;\n\n /**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\n function setup() {\n // setup once\n if (isSetup) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n var body = document.body || document.documentElement;\n body.appendChild(div);\n var style = getStyle(div);\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round(getStyleSize(style.width)) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n body.removeChild(div);\n }\n\n // -------------------------- getSize -------------------------- //\n\n function getSize(elem) {\n setup();\n\n // use querySeletor if elem is string\n if (typeof elem == 'string') {\n elem = document.querySelector(elem);\n }\n\n // do not proceed on non-objects\n if (!elem || typeof elem != 'object' || !elem.nodeType) {\n return;\n }\n var style = getStyle(elem);\n\n // if hidden, everything is 0\n if (style.display == 'none') {\n return getZeroSize();\n }\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n var value = style[measurement];\n var num = parseFloat(value);\n // any 'auto', 'medium' value will be 0\n size[measurement] = !isNaN(num) ? num : 0;\n }\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize(style.width);\n if (styleWidth !== false) {\n size.width = styleWidth + (\n // add padding and border unless it's already including it\n isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth);\n }\n var styleHeight = getStyleSize(style.height);\n if (styleHeight !== false) {\n size.height = styleHeight + (\n // add padding and border unless it's already including it\n isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight);\n }\n size.innerWidth = size.width - (paddingWidth + borderWidth);\n size.innerHeight = size.height - (paddingHeight + borderHeight);\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n return size;\n }\n return getSize;\n});\n\n/**\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\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('desandro-matches-selector/matches-selector', 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})(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 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 return function matchesSelector(elem, selector) {\n return elem[matchesMethod](selector);\n };\n});\n\n/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n(function (window, factory) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('fizzy-ui-utils/utils', ['desandro-matches-selector/matches-selector'], function (matchesSelector) {\n return factory(window, matchesSelector);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('desandro-matches-selector'));\n } else {\n // browser global\n window.fizzyUIUtils = factory(window, window.matchesSelector);\n }\n})(window, function factory(window, matchesSelector) {\n var utils = {};\n\n // ----- extend ----- //\n\n // extends objects\n utils.extend = function (a, b) {\n for (var prop in b) {\n a[prop] = b[prop];\n }\n return a;\n };\n\n // ----- modulo ----- //\n\n utils.modulo = function (num, div) {\n return (num % div + div) % div;\n };\n\n // ----- makeArray ----- //\n\n var arraySlice = Array.prototype.slice;\n\n // turn element or nodeList into an array\n utils.makeArray = function (obj) {\n if (Array.isArray(obj)) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if (obj === null || obj === undefined) {\n return [];\n }\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if (isArrayLike) {\n // convert nodeList to array\n return arraySlice.call(obj);\n }\n\n // array of single index\n return [obj];\n };\n\n // ----- removeFrom ----- //\n\n utils.removeFrom = function (ary, obj) {\n var index = ary.indexOf(obj);\n if (index != -1) {\n ary.splice(index, 1);\n }\n };\n\n // ----- getParent ----- //\n\n utils.getParent = function (elem, selector) {\n while (elem.parentNode && elem != document.body) {\n elem = elem.parentNode;\n if (matchesSelector(elem, selector)) {\n return elem;\n }\n }\n };\n\n // ----- getQueryElement ----- //\n\n // use element as selector string\n utils.getQueryElement = function (elem) {\n if (typeof elem == 'string') {\n return document.querySelector(elem);\n }\n return elem;\n };\n\n // ----- handleEvent ----- //\n\n // enable .ontype to trigger from .addEventListener( elem, 'type' )\n utils.handleEvent = function (event) {\n var method = 'on' + event.type;\n if (this[method]) {\n this[method](event);\n }\n };\n\n // ----- filterFindElements ----- //\n\n utils.filterFindElements = function (elems, selector) {\n // make array of elems\n elems = utils.makeArray(elems);\n var ffElems = [];\n elems.forEach(function (elem) {\n // check that elem is an actual element\n if (!(elem instanceof HTMLElement)) {\n return;\n }\n // add elem if no selector\n if (!selector) {\n ffElems.push(elem);\n return;\n }\n // filter & find items if we have a selector\n // filter\n if (matchesSelector(elem, selector)) {\n ffElems.push(elem);\n }\n // find children\n var childElems = elem.querySelectorAll(selector);\n // concat childElems to filterFound array\n for (var i = 0; i < childElems.length; i++) {\n ffElems.push(childElems[i]);\n }\n });\n return ffElems;\n };\n\n // ----- debounceMethod ----- //\n\n utils.debounceMethod = function (_class, methodName, threshold) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[methodName];\n var timeoutName = methodName + 'Timeout';\n _class.prototype[methodName] = function () {\n var timeout = this[timeoutName];\n clearTimeout(timeout);\n var args = arguments;\n var _this = this;\n this[timeoutName] = setTimeout(function () {\n method.apply(_this, args);\n delete _this[timeoutName];\n }, threshold);\n };\n };\n\n // ----- docReady ----- //\n\n utils.docReady = function (callback) {\n var readyState = document.readyState;\n if (readyState == 'complete' || readyState == 'interactive') {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout(callback);\n } else {\n document.addEventListener('DOMContentLoaded', callback);\n }\n };\n\n // ----- htmlInit ----- //\n\n // http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\n utils.toDashed = function (str) {\n return str.replace(/(.)([A-Z])/g, function (match, $1, $2) {\n return $1 + '-' + $2;\n }).toLowerCase();\n };\n var console = window.console;\n /**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\n utils.htmlInit = function (WidgetClass, namespace) {\n utils.docReady(function () {\n var dashedNamespace = utils.toDashed(namespace);\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll('[' + dataAttr + ']');\n var jsDashElems = document.querySelectorAll('.js-' + dashedNamespace);\n var elems = utils.makeArray(dataAttrElems).concat(utils.makeArray(jsDashElems));\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n elems.forEach(function (elem) {\n var attr = elem.getAttribute(dataAttr) || elem.getAttribute(dataOptionsAttr);\n var options;\n try {\n options = attr && JSON.parse(attr);\n } catch (error) {\n // log error, do not initialize\n if (console) {\n console.error('Error parsing ' + dataAttr + ' on ' + elem.className + ': ' + error);\n }\n return;\n }\n // initialize\n var instance = new WidgetClass(elem, options);\n // make available via $().data('namespace')\n if (jQuery) {\n jQuery.data(elem, namespace, instance);\n }\n });\n });\n };\n\n // ----- ----- //\n\n return utils;\n});\n\n// Flickity.Cell\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('flickity/js/cell', ['get-size/get-size'], function (getSize) {\n return factory(window, getSize);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('get-size'));\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(window, window.getSize);\n }\n})(window, function factory(window, getSize) {\n function Cell(elem, parent) {\n this.element = elem;\n this.parent = parent;\n this.create();\n }\n var proto = Cell.prototype;\n proto.create = function () {\n this.element.style.position = 'absolute';\n this.element.setAttribute('aria-hidden', 'true');\n this.x = 0;\n this.shift = 0;\n this.element.style[this.parent.originSide] = 0;\n };\n proto.destroy = function () {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[side] = '';\n this.element.style.transform = '';\n this.element.removeAttribute('aria-hidden');\n };\n proto.getSize = function () {\n this.size = getSize(this.element);\n };\n proto.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\n proto.updateTarget = proto.setDefaultTarget = function () {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[marginProperty] + this.size.width * this.parent.cellAlign;\n };\n proto.renderPosition = function (x) {\n // render position of cell with in slider\n var sideOffset = this.parent.originSide === 'left' ? 1 : -1;\n var adjustedX = this.parent.options.percentPosition ? x * sideOffset * (this.parent.size.innerWidth / this.size.width) : x * sideOffset;\n this.element.style.transform = 'translateX(' + this.parent.getPositionValue(adjustedX) + ')';\n };\n proto.select = function () {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n };\n proto.unselect = function () {\n this.element.classList.remove('is-selected');\n this.element.setAttribute('aria-hidden', 'true');\n };\n\n /**\n * @param {Integer} shift - 0, 1, or -1\n */\n proto.wrapShift = function (shift) {\n this.shift = shift;\n this.renderPosition(this.x + this.parent.slideableWidth * shift);\n };\n proto.remove = function () {\n this.element.parentNode.removeChild(this.element);\n };\n return Cell;\n});\n\n// slide\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('flickity/js/slide', 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})(window, function factory() {\n 'use strict';\n\n function 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 var proto = Slide.prototype;\n proto.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 proto.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 proto.getLastCell = function () {\n return this.cells[this.cells.length - 1];\n };\n proto.select = function () {\n this.cells.forEach(function (cell) {\n cell.select();\n });\n };\n proto.unselect = function () {\n this.cells.forEach(function (cell) {\n cell.unselect();\n });\n };\n proto.getCellElements = function () {\n return this.cells.map(function (cell) {\n return cell.element;\n });\n };\n return Slide;\n});\n\n// animate\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('flickity/js/animate', ['fizzy-ui-utils/utils'], function (utils) {\n return factory(window, utils);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('fizzy-ui-utils'));\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(window, window.fizzyUIUtils);\n }\n})(window, function factory(window, utils) {\n // -------------------------- animate -------------------------- //\n\n var proto = {};\n proto.startAnimation = function () {\n if (this.isAnimating) {\n return;\n }\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n };\n proto.animate = function () {\n this.applyDragForce();\n this.applySelectedAttraction();\n var previousX = this.x;\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 proto.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 -= this.slideableWidth;\n this.shiftWrapCells(x);\n }\n this.setTranslateX(x, this.isAnimating);\n this.dispatchScrollEvent();\n };\n proto.setTranslateX = function (x, is3d) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue(x);\n // use 3D transforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style.transform = is3d ? 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n };\n proto.dispatchScrollEvent = function () {\n var firstSlide = this.slides[0];\n if (!firstSlide) {\n return;\n }\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent('scroll', null, [progress, positionX]);\n };\n proto.positionSliderAtSelected = function () {\n if (!this.cells.length) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n };\n proto.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 proto.settle = function (previousX) {\n // keep track of frames where x hasn't moved\n var isResting = !this.isPointerDown && Math.round(this.x * 100) == Math.round(previousX * 100);\n if (isResting) {\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', null, [this.selectedIndex]);\n }\n };\n proto.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 proto._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 proto._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\n proto.integratePhysics = function () {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n };\n proto.applyForce = function (force) {\n this.velocity += force;\n };\n proto.getFrictionFactor = function () {\n return 1 - this.options[this.isFreeScrolling ? 'freeScrollFriction' : 'friction'];\n };\n proto.getRestingPosition = function () {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / (1 - this.getFrictionFactor());\n };\n proto.applyDragForce = function () {\n if (!this.isDraggable || !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 proto.applySelectedAttraction = function () {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n if (dragDown || this.isFreeScrolling || !this.slides.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 return proto;\n});\n\n// Flickity main\n/* eslint-disable max-params */\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('flickity/js/flickity', ['ev-emitter/ev-emitter', 'get-size/get-size', 'fizzy-ui-utils/utils', './cell', './slide', './animate'], function (EvEmitter, getSize, utils, Cell, Slide, animatePrototype) {\n return factory(window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('ev-emitter'), require('get-size'), require('fizzy-ui-utils'), require('./cell'), require('./slide'), require('./animate'));\n } else {\n // browser global\n var _Flickity = window.Flickity;\n window.Flickity = factory(window, window.EvEmitter, window.getSize, window.fizzyUIUtils, _Flickity.Cell, _Flickity.Slide, _Flickity.animatePrototype);\n }\n})(window, function factory(window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype) {\n /* eslint-enable max-params */\n\n // vars\n var jQuery = window.jQuery;\n var getComputedStyle = window.getComputedStyle;\n var console = window.console;\n function moveElements(elems, toElem) {\n elems = utils.makeArray(elems);\n while (elems.length) {\n toElem.appendChild(elems.shift());\n }\n }\n\n // -------------------------- Flickity -------------------------- //\n\n // globally unique identifiers\n var GUID = 0;\n // internal store of all Flickity intances\n var instances = {};\n function Flickity(element, options) {\n var queryElement = utils.getQueryElement(element);\n if (!queryElement) {\n if (console) {\n console.error('Bad element for Flickity: ' + (queryElement || element));\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if (this.element.flickityGUID) {\n var instance = instances[this.element.flickityGUID];\n if (instance) instance.option(options);\n return instance;\n }\n\n // add jQuery\n if (jQuery) {\n this.$element = jQuery(this.element);\n }\n // options\n this.options = utils.extend({}, this.constructor.defaults);\n this.option(options);\n\n // kick things off\n this._create();\n }\n Flickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075,\n // friction when free-scrolling\n friction: 0.28,\n // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true\n // watchCSS: false,\n // wrapAround: false\n };\n\n // hash of methods triggered on _create()\n Flickity.createMethods = [];\n var proto = Flickity.prototype;\n // inherit EventEmitter\n utils.extend(proto, EvEmitter.prototype);\n proto._create = function () {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[id] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n if (this.options.resize || this.options.watchCSS) {\n window.addEventListener('resize', this);\n }\n\n // add listeners from on option\n for (var eventName in this.options.on) {\n var listener = this.options.on[eventName];\n this.on(eventName, listener);\n }\n Flickity.createMethods.forEach(function (method) {\n this[method]();\n }, this);\n if (this.options.watchCSS) {\n this.watchCSS();\n } else {\n this.activate();\n }\n };\n\n /**\n * set options\n * @param {Object} opts - options to extend\n */\n proto.option = function (opts) {\n utils.extend(this.options, opts);\n };\n proto.activate = function () {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if (this.options.rightToLeft) {\n this.element.classList.add('flickity-rtl');\n }\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements(this.element.children);\n moveElements(cellElems, this.slider);\n this.viewport.appendChild(this.slider);\n this.element.appendChild(this.viewport);\n // get cells from children\n this.reloadCells();\n if (this.options.accessibility) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener('keydown', this);\n }\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n };\n\n // slider positions the cells\n proto._createSlider = function () {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[this.originSide] = 0;\n this.slider = slider;\n };\n proto._filterFindCellElements = function (elems) {\n return utils.filterFindElements(elems, this.options.cellSelector);\n };\n\n // goes through all children\n proto.reloadCells = function () {\n // collection of item elements\n this.cells = this._makeCells(this.slider.children);\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n };\n\n /**\n * turn elements into Flickity.Cells\n * @param {[Array, NodeList, HTMLElement]} elems - elements to make into cells\n * @returns {Array} items - collection of new Flickity Cells\n */\n proto._makeCells = function (elems) {\n var cellElems = this._filterFindCellElements(elems);\n\n // create new Flickity for collection\n var cells = cellElems.map(function (cellElem) {\n return new Cell(cellElem, this);\n }, this);\n return cells;\n };\n proto.getLastCell = function () {\n return this.cells[this.cells.length - 1];\n };\n proto.getLastSlide = function () {\n return this.slides[this.slides.length - 1];\n };\n\n // positions all cells\n proto.positionCells = function () {\n // size all cells\n this._sizeCells(this.cells);\n // position all cells\n this._positionCells(0);\n };\n\n /**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\n proto._positionCells = function (index) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if (index > 0) {\n var startCell = this.cells[index - 1];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for (var i = index; i < len; i++) {\n var cell = this.cells[i];\n cell.setPosition(cellX);\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max(cell.size.outerHeight, this.maxCellHeight);\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n };\n\n /**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\n proto._sizeCells = function (cells) {\n cells.forEach(function (cell) {\n cell.getSize();\n });\n };\n\n // -------------------------- -------------------------- //\n\n proto.updateSlides = function () {\n this.slides = [];\n if (!this.cells.length) {\n return;\n }\n var slide = new Slide(this);\n this.slides.push(slide);\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n var canCellFit = this._getCanCellFit();\n this.cells.forEach(function (cell, i) {\n // just add cell if first cell in slide\n if (!slide.cells.length) {\n slide.addCell(cell);\n return;\n }\n var slideWidth = slide.outerWidth - slide.firstMargin + (cell.size.outerWidth - cell.size[nextMargin]);\n if (canCellFit.call(this, i, slideWidth)) {\n slide.addCell(cell);\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n slide = new Slide(this);\n this.slides.push(slide);\n slide.addCell(cell);\n }\n }, this);\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n };\n proto._getCanCellFit = function () {\n var groupCells = this.options.groupCells;\n if (!groupCells) {\n return function () {\n return false;\n };\n } else if (typeof groupCells == 'number') {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt(groupCells, 10);\n return function (i) {\n return i % number !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' && groupCells.match(/^(\\d+)%$/);\n var percent = percentMatch ? parseInt(percentMatch[1], 10) / 100 : 1;\n return function (i, slideWidth) {\n /* eslint-disable-next-line no-invalid-this */\n return slideWidth <= (this.size.innerWidth + 1) * percent;\n };\n };\n\n // alias _init for jQuery plugin .flickity()\n proto._init = proto.reposition = function () {\n this.positionCells();\n this.positionSliderAtSelected();\n };\n proto.getSize = function () {\n this.size = getSize(this.element);\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n };\n var cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5\n },\n left: {\n left: 0,\n right: 1\n },\n right: {\n right: 0,\n left: 1\n }\n };\n proto.setCellAlign = function () {\n var shorthand = cellAlignShorthands[this.options.cellAlign];\n this.cellAlign = shorthand ? shorthand[this.originSide] : this.options.cellAlign;\n };\n proto.setGallerySize = function () {\n if (this.options.setGallerySize) {\n var height = this.options.adaptiveHeight && this.selectedSlide ? this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n };\n proto._getWrapShiftCells = function () {\n // only for wrap-around\n if (!this.options.wrapAround) {\n return;\n }\n // unshift previous cells\n this._unshiftCells(this.beforeShiftCells);\n this._unshiftCells(this.afterShiftCells);\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells(gapX, cellIndex, -1);\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells(gapX, 0, 1);\n };\n proto._getGapCells = function (gapX, cellIndex, increment) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while (gapX > 0) {\n var cell = this.cells[cellIndex];\n if (!cell) {\n break;\n }\n cells.push(cell);\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n };\n\n // ----- contain ----- //\n\n // contain cell targets so no excess sliding\n proto._containSlides = function () {\n if (!this.options.contain || this.options.wrapAround || !this.cells.length) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[endMargin];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[beginMargin];\n var endBound = contentWidth - this.size.innerWidth * (1 - this.cellAlign);\n // contain each cell target\n this.slides.forEach(function (slide) {\n if (isContentSmaller) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max(slide.target, beginBound);\n slide.target = Math.min(slide.target, endBound);\n }\n }, this);\n };\n\n // ----- ----- //\n\n /**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\n proto.dispatchEvent = function (type, event, args) {\n var emitArgs = event ? [event].concat(args) : args;\n this.emitEvent(type, emitArgs);\n if (jQuery && this.$element) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if (event) {\n // create jQuery event\n var jQEvent = new jQuery.Event(event);\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger($event, args);\n }\n };\n\n // -------------------------- select -------------------------- //\n\n /**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\n proto.select = function (index, isWrap, isInstant) {\n if (!this.isActive) {\n return;\n }\n index = parseInt(index, 10);\n this._wrapSelect(index);\n if (this.options.wrapAround || isWrap) {\n index = utils.modulo(index, this.slides.length);\n }\n // bail if invalid index\n if (!this.slides[index]) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if (isInstant) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if (this.options.adaptiveHeight) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent('select', null, [index]);\n // change event if new index\n if (index != prevIndex) {\n this.dispatchEvent('change', null, [index]);\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n };\n\n // wraps position for wrapAround, to move to closest slide. #113\n proto._wrapSelect = function (index) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if (!isWrapping) {\n return index;\n }\n var wrapIndex = utils.modulo(index, len);\n // go to shortest\n var delta = Math.abs(wrapIndex - this.selectedIndex);\n var backWrapDelta = Math.abs(wrapIndex + len - this.selectedIndex);\n var forewardWrapDelta = Math.abs(wrapIndex - len - this.selectedIndex);\n if (!this.isDragSelect && backWrapDelta < delta) {\n index += len;\n } else if (!this.isDragSelect && forewardWrapDelta < delta) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if (index < 0) {\n this.x -= this.slideableWidth;\n } else if (index >= len) {\n this.x += this.slideableWidth;\n }\n };\n proto.previous = function (isWrap, isInstant) {\n this.select(this.selectedIndex - 1, isWrap, isInstant);\n };\n proto.next = function (isWrap, isInstant) {\n this.select(this.selectedIndex + 1, isWrap, isInstant);\n };\n proto.updateSelectedSlide = function () {\n var slide = this.slides[this.selectedIndex];\n // selectedIndex could be outside of slides, if triggered before resize()\n if (!slide) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n };\n proto.unselectSelectedSlide = function () {\n if (this.selectedSlide) {\n this.selectedSlide.unselect();\n }\n };\n proto.selectInitialIndex = function () {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if (this.isInitActivated) {\n this.select(this.selectedIndex, false, true);\n return;\n }\n // select with selector string\n if (initialIndex && typeof initialIndex == 'string') {\n var cell = this.queryCell(initialIndex);\n if (cell) {\n this.selectCell(initialIndex, false, true);\n return;\n }\n }\n var index = 0;\n // select with number\n if (initialIndex && this.slides[initialIndex]) {\n index = initialIndex;\n }\n // select instantly\n this.select(index, false, true);\n };\n\n /**\n * select slide from number or cell element\n * @param {[Element, Number]} value - zero-based index or element to select\n * @param {Boolean} isWrap - enables wrapping around for extra index\n * @param {Boolean} isInstant - disables slide animation\n */\n proto.selectCell = function (value, isWrap, isInstant) {\n // get cell\n var cell = this.queryCell(value);\n if (!cell) {\n return;\n }\n var index = this.getCellSlideIndex(cell);\n this.select(index, isWrap, isInstant);\n };\n proto.getCellSlideIndex = function (cell) {\n // get index of slides that has cell\n for (var i = 0; i < this.slides.length; i++) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf(cell);\n if (index != -1) {\n return i;\n }\n }\n };\n\n // -------------------------- get cells -------------------------- //\n\n /**\n * get Flickity.Cell, given an Element\n * @param {Element} elem - matching cell element\n * @returns {Flickity.Cell} cell - matching cell\n */\n proto.getCell = function (elem) {\n // loop through cells to get the one that matches\n for (var i = 0; i < this.cells.length; i++) {\n var cell = this.cells[i];\n if (cell.element == elem) {\n return cell;\n }\n }\n };\n\n /**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\n proto.getCells = function (elems) {\n elems = utils.makeArray(elems);\n var cells = [];\n elems.forEach(function (elem) {\n var cell = this.getCell(elem);\n if (cell) {\n cells.push(cell);\n }\n }, this);\n return cells;\n };\n\n /**\n * get cell elements\n * @returns {Array} cellElems\n */\n proto.getCellElements = function () {\n return this.cells.map(function (cell) {\n return cell.element;\n });\n };\n\n /**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\n proto.getParentCell = function (elem) {\n // first check if elem is cell\n var cell = this.getCell(elem);\n if (cell) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent(elem, '.flickity-slider > *');\n return this.getCell(elem);\n };\n\n /**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\n proto.getAdjacentCellElements = function (adjCount, index) {\n if (!adjCount) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n var len = this.slides.length;\n if (1 + adjCount * 2 >= len) {\n return this.getCellElements();\n }\n var cellElems = [];\n for (var i = index - adjCount; i <= index + adjCount; i++) {\n var slideIndex = this.options.wrapAround ? utils.modulo(i, len) : i;\n var slide = this.slides[slideIndex];\n if (slide) {\n cellElems = cellElems.concat(slide.getCellElements());\n }\n }\n return cellElems;\n };\n\n /**\n * select slide from number or cell element\n * @param {[Element, String, Number]} selector - element, selector string, or index\n * @returns {Flickity.Cell} - matching cell\n */\n proto.queryCell = function (selector) {\n if (typeof selector == 'number') {\n // use number as index\n return this.cells[selector];\n }\n if (typeof selector == 'string') {\n // do not select invalid selectors from hash: #123, #/. #791\n if (selector.match(/^[#.]?[\\d/]/)) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector(selector);\n }\n // get cell from element\n return this.getCell(selector);\n };\n\n // -------------------------- events -------------------------- //\n\n proto.uiChange = function () {\n this.emitEvent('uiChange');\n };\n\n // keep focus on element when child UI elements are clicked\n proto.childUIPointerDown = function (event) {\n // HACK iOS does not allow touch events to bubble up?!\n if (event.type != 'touchstart') {\n event.preventDefault();\n }\n this.focus();\n };\n\n // ----- resize ----- //\n\n proto.onresize = function () {\n this.watchCSS();\n this.resize();\n };\n utils.debounceMethod(Flickity, 'onresize', 150);\n proto.resize = function () {\n // #1177 disable resize behavior when animating or dragging for iOS 15\n if (!this.isActive || this.isAnimating || this.isDragging) {\n return;\n }\n this.getSize();\n // wrap values\n if (this.options.wrapAround) {\n this.x = utils.modulo(this.x, this.slideableWidth);\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell(selectedElement, false, true);\n };\n\n // watches the :after property, activates/deactivates\n proto.watchCSS = function () {\n var watchOption = this.options.watchCSS;\n if (!watchOption) {\n return;\n }\n var afterContent = getComputedStyle(this.element, ':after').content;\n // activate if :after { content: 'flickity' }\n if (afterContent.indexOf('flickity') != -1) {\n this.activate();\n } else {\n this.deactivate();\n }\n };\n\n // ----- keydown ----- //\n\n // go previous/next if left/right keys pressed\n proto.onkeydown = function (event) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if (!this.options.accessibility || isNotFocused) {\n return;\n }\n var handler = Flickity.keyboardHandlers[event.keyCode];\n if (handler) {\n handler.call(this);\n }\n };\n Flickity.keyboardHandlers = {\n // left arrow\n 37: function () {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[leftMethod]();\n },\n // right arrow\n 39: function () {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[rightMethod]();\n }\n };\n\n // ----- focus ----- //\n\n proto.focus = function () {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ...\n // #Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({\n preventScroll: true\n });\n // hack to fix scroll jump after focus, #76\n if (window.pageYOffset != prevScrollY) {\n window.scrollTo(window.pageXOffset, prevScrollY);\n }\n };\n\n // -------------------------- destroy -------------------------- //\n\n // deactivate all Flickity functionality, but keep stuff available\n proto.deactivate = function () {\n if (!this.isActive) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach(function (cell) {\n cell.destroy();\n });\n this.element.removeChild(this.viewport);\n // move child elements back into element\n moveElements(this.slider.children, this.element);\n if (this.options.accessibility) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener('keydown', this);\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n };\n proto.destroy = function () {\n this.deactivate();\n window.removeEventListener('resize', this);\n this.allOff();\n this.emitEvent('destroy');\n if (jQuery && this.$element) {\n jQuery.removeData(this.element, 'flickity');\n }\n delete this.element.flickityGUID;\n delete instances[this.guid];\n };\n\n // -------------------------- prototype -------------------------- //\n\n utils.extend(proto, animatePrototype);\n\n // -------------------------- extras -------------------------- //\n\n /**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\n Flickity.data = function (elem) {\n elem = utils.getQueryElement(elem);\n var id = elem && elem.flickityGUID;\n return id && instances[id];\n };\n utils.htmlInit(Flickity, 'flickity');\n if (jQuery && jQuery.bridget) {\n jQuery.bridget('flickity', Flickity);\n }\n\n // set internal jQuery, for Webpack + jQuery v3, #478\n Flickity.setJQuery = function (jq) {\n jQuery = jq;\n };\n Flickity.Cell = Cell;\n Flickity.Slide = Slide;\n return Flickity;\n});\n\n/*!\n * Unipointer v2.4.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n(function (window, factory) {\n // universal module definition\n /* jshint strict: false */ /*global define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('unipointer/unipointer', ['ev-emitter/ev-emitter'], function (EvEmitter) {\n return factory(window, EvEmitter);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('ev-emitter'));\n } else {\n // browser global\n window.Unipointer = factory(window, window.EvEmitter);\n }\n})(window, function factory(window, EvEmitter) {\n function noop() {}\n function Unipointer() {}\n\n // inherit EvEmitter\n var proto = Unipointer.prototype = Object.create(EvEmitter.prototype);\n proto.bindStartEvent = function (elem) {\n this._bindStartEvent(elem, true);\n };\n proto.unbindStartEvent = function (elem) {\n this._bindStartEvent(elem, false);\n };\n\n /**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\n proto._bindStartEvent = function (elem, isAdd) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n // default to mouse events\n var startEvent = 'mousedown';\n if ('ontouchstart' in window) {\n // HACK prefer Touch Events as you can preventDefault on touchstart to\n // disable scroll in iOS & mobile Chrome metafizzy/flickity#1177\n startEvent = 'touchstart';\n } else if (window.PointerEvent) {\n // Pointer Events\n startEvent = 'pointerdown';\n }\n elem[bindMethod](startEvent, this);\n };\n\n // trigger handler methods for events\n proto.handleEvent = function (event) {\n var method = 'on' + event.type;\n if (this[method]) {\n this[method](event);\n }\n };\n\n // returns the touch that we're keeping track of\n proto.getTouch = function (touches) {\n for (var i = 0; i < touches.length; i++) {\n var touch = touches[i];\n if (touch.identifier == this.pointerIdentifier) {\n return touch;\n }\n }\n };\n\n // ----- start event ----- //\n\n proto.onmousedown = function (event) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n if (button && button !== 0 && button !== 1) {\n return;\n }\n this._pointerDown(event, event);\n };\n proto.ontouchstart = function (event) {\n this._pointerDown(event, event.changedTouches[0]);\n };\n proto.onpointerdown = function (event) {\n this._pointerDown(event, event);\n };\n\n /**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\n proto._pointerDown = function (event, pointer) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if (event.button || this.isPointerDown) {\n return;\n }\n this.isPointerDown = true;\n // save pointer identifier to match up touch events\n this.pointerIdentifier = pointer.pointerId !== undefined ?\n // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n this.pointerDown(event, pointer);\n };\n proto.pointerDown = function (event, pointer) {\n this._bindPostStartEvents(event);\n this.emitEvent('pointerDown', [event, pointer]);\n };\n\n // hash of events to be bound after start event\n var postStartEvents = {\n mousedown: ['mousemove', 'mouseup'],\n touchstart: ['touchmove', 'touchend', 'touchcancel'],\n pointerdown: ['pointermove', 'pointerup', 'pointercancel']\n };\n proto._bindPostStartEvents = function (event) {\n if (!event) {\n return;\n }\n // get proper events to match start event\n var events = postStartEvents[event.type];\n // bind events to node\n events.forEach(function (eventName) {\n window.addEventListener(eventName, this);\n }, this);\n // save these arguments\n this._boundPointerEvents = events;\n };\n proto._unbindPostStartEvents = function () {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if (!this._boundPointerEvents) {\n return;\n }\n this._boundPointerEvents.forEach(function (eventName) {\n window.removeEventListener(eventName, this);\n }, this);\n delete this._boundPointerEvents;\n };\n\n // ----- move event ----- //\n\n proto.onmousemove = function (event) {\n this._pointerMove(event, event);\n };\n proto.onpointermove = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerMove(event, event);\n }\n };\n proto.ontouchmove = function (event) {\n var touch = this.getTouch(event.changedTouches);\n if (touch) {\n this._pointerMove(event, touch);\n }\n };\n\n /**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\n proto._pointerMove = function (event, pointer) {\n this.pointerMove(event, pointer);\n };\n\n // public\n proto.pointerMove = function (event, pointer) {\n this.emitEvent('pointerMove', [event, pointer]);\n };\n\n // ----- end event ----- //\n\n proto.onmouseup = function (event) {\n this._pointerUp(event, event);\n };\n proto.onpointerup = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerUp(event, event);\n }\n };\n proto.ontouchend = function (event) {\n var touch = this.getTouch(event.changedTouches);\n if (touch) {\n this._pointerUp(event, touch);\n }\n };\n\n /**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\n proto._pointerUp = function (event, pointer) {\n this._pointerDone();\n this.pointerUp(event, pointer);\n };\n\n // public\n proto.pointerUp = function (event, pointer) {\n this.emitEvent('pointerUp', [event, pointer]);\n };\n\n // ----- pointer done ----- //\n\n // triggered on pointer up & pointer cancel\n proto._pointerDone = function () {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n };\n proto._pointerReset = function () {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n };\n proto.pointerDone = noop;\n\n // ----- pointer cancel ----- //\n\n proto.onpointercancel = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerCancel(event, event);\n }\n };\n proto.ontouchcancel = function (event) {\n var touch = this.getTouch(event.changedTouches);\n if (touch) {\n this._pointerCancel(event, touch);\n }\n };\n\n /**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\n proto._pointerCancel = function (event, pointer) {\n this._pointerDone();\n this.pointerCancel(event, pointer);\n };\n\n // public\n proto.pointerCancel = function (event, pointer) {\n this.emitEvent('pointerCancel', [event, pointer]);\n };\n\n // ----- ----- //\n\n // utility function for getting x/y coords from event\n Unipointer.getPointerPoint = function (pointer) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n };\n\n // ----- ----- //\n\n return Unipointer;\n});\n\n/*!\n * Unidragger v2.4.0\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('unidragger/unidragger', ['unipointer/unipointer'], function (Unipointer) {\n return factory(window, Unipointer);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('unipointer'));\n } else {\n // browser global\n window.Unidragger = factory(window, window.Unipointer);\n }\n})(window, function factory(window, Unipointer) {\n // -------------------------- Unidragger -------------------------- //\n\n function Unidragger() {}\n\n // inherit Unipointer & EvEmitter\n var proto = Unidragger.prototype = Object.create(Unipointer.prototype);\n\n // ----- bind start ----- //\n\n proto.bindHandles = function () {\n this._bindHandles(true);\n };\n proto.unbindHandles = function () {\n this._bindHandles(false);\n };\n\n /**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\n proto._bindHandles = function (isAdd) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n // bind each handle\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n var touchAction = isAdd ? this._touchActionValue : '';\n for (var i = 0; i < this.handles.length; i++) {\n var handle = this.handles[i];\n this._bindStartEvent(handle, isAdd);\n handle[bindMethod]('click', this);\n // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n if (window.PointerEvent) {\n handle.style.touchAction = touchAction;\n }\n }\n };\n\n // prototype so it can be overwriteable by Flickity\n proto._touchActionValue = 'none';\n\n // ----- start event ----- //\n\n /**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\n proto.pointerDown = function (event, pointer) {\n var isOkay = this.okayPointerDown(event);\n if (!isOkay) {\n return;\n }\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. flickity#842\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY\n };\n event.preventDefault();\n this.pointerDownBlur();\n // bind move and end events\n this._bindPostStartEvents(event);\n this.emitEvent('pointerDown', [event, pointer]);\n };\n\n // nodes that have text fields\n var cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n SELECT: true,\n OPTION: true\n };\n\n // input types that do not have text fields\n var clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true\n };\n\n // dismiss inputs with text fields. flickity#403, flickity#404\n proto.okayPointerDown = function (event) {\n var isCursorNode = cursorNodes[event.target.nodeName];\n var isClickType = clickTypes[event.target.type];\n var isOkay = !isCursorNode || isClickType;\n if (!isOkay) {\n this._pointerReset();\n }\n return isOkay;\n };\n\n // kludge to blur previously focused input\n proto.pointerDownBlur = function () {\n var focused = document.activeElement;\n // do not blur body for IE10, metafizzy/flickity#117\n var canBlur = focused && focused.blur && focused != document.body;\n if (canBlur) {\n focused.blur();\n }\n };\n\n // ----- move event ----- //\n\n /**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\n proto.pointerMove = function (event, pointer) {\n var moveVector = this._dragPointerMove(event, pointer);\n this.emitEvent('pointerMove', [event, pointer, moveVector]);\n this._dragMove(event, pointer, moveVector);\n };\n\n // base pointer move logic\n proto._dragPointerMove = function (event, pointer) {\n var moveVector = {\n x: pointer.pageX - this.pointerDownPointer.pageX,\n y: pointer.pageY - this.pointerDownPointer.pageY\n };\n // start drag if pointer has moved far enough to start drag\n if (!this.isDragging && this.hasDragStarted(moveVector)) {\n this._dragStart(event, pointer);\n }\n return moveVector;\n };\n\n // condition if pointer has moved far enough to start drag\n proto.hasDragStarted = function (moveVector) {\n return Math.abs(moveVector.x) > 3 || Math.abs(moveVector.y) > 3;\n };\n\n // ----- end event ----- //\n\n /**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\n proto.pointerUp = function (event, pointer) {\n this.emitEvent('pointerUp', [event, pointer]);\n this._dragPointerUp(event, pointer);\n };\n proto._dragPointerUp = function (event, pointer) {\n if (this.isDragging) {\n this._dragEnd(event, pointer);\n } else {\n // pointer didn't move enough for drag to start\n this._staticClick(event, pointer);\n }\n };\n\n // -------------------------- drag -------------------------- //\n\n // dragStart\n proto._dragStart = function (event, pointer) {\n this.isDragging = true;\n // prevent clicks\n this.isPreventingClicks = true;\n this.dragStart(event, pointer);\n };\n proto.dragStart = function (event, pointer) {\n this.emitEvent('dragStart', [event, pointer]);\n };\n\n // dragMove\n proto._dragMove = function (event, pointer, moveVector) {\n // do not drag if not dragging yet\n if (!this.isDragging) {\n return;\n }\n this.dragMove(event, pointer, moveVector);\n };\n proto.dragMove = function (event, pointer, moveVector) {\n event.preventDefault();\n this.emitEvent('dragMove', [event, pointer, moveVector]);\n };\n\n // dragEnd\n proto._dragEnd = function (event, pointer) {\n // set flags\n this.isDragging = false;\n // re-enable clicking async\n setTimeout(function () {\n delete this.isPreventingClicks;\n }.bind(this));\n this.dragEnd(event, pointer);\n };\n proto.dragEnd = function (event, pointer) {\n this.emitEvent('dragEnd', [event, pointer]);\n };\n\n // ----- onclick ----- //\n\n // handle all clicks and prevent clicks when dragging\n proto.onclick = function (event) {\n if (this.isPreventingClicks) {\n event.preventDefault();\n }\n };\n\n // ----- staticClick ----- //\n\n // triggered after pointer down & up with no/tiny movement\n proto._staticClick = function (event, pointer) {\n // ignore emulated mouse up clicks\n if (this.isIgnoringMouseUp && event.type == 'mouseup') {\n return;\n }\n this.staticClick(event, pointer);\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 setTimeout(function () {\n delete this.isIgnoringMouseUp;\n }.bind(this), 400);\n }\n };\n proto.staticClick = function (event, pointer) {\n this.emitEvent('staticClick', [event, pointer]);\n };\n\n // ----- utils ----- //\n\n Unidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n // ----- ----- //\n\n return Unidragger;\n});\n\n// drag\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('flickity/js/drag', ['./flickity', 'unidragger/unidragger', 'fizzy-ui-utils/utils'], 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(window, require('./flickity'), require('unidragger'), require('fizzy-ui-utils'));\n } else {\n // browser global\n window.Flickity = factory(window, window.Flickity, window.Unidragger, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, Unidragger, utils) {\n // ----- defaults ----- //\n\n utils.extend(Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3\n });\n\n // ----- create ----- //\n\n Flickity.createMethods.push('_createDrag');\n\n // -------------------------- drag prototype -------------------------- //\n\n var proto = Flickity.prototype;\n utils.extend(proto, Unidragger.prototype);\n proto._touchActionValue = 'pan-y';\n\n // -------------------------- -------------------------- //\n\n proto._createDrag = function () {\n this.on('activate', this.onActivateDrag);\n this.on('uiChange', this._uiChangeDrag);\n this.on('deactivate', this.onDeactivateDrag);\n this.on('cellChange', this.updateDraggable);\n // TODO updateDraggable on resize? if groupCells & slides change\n };\n\n proto.onActivateDrag = function () {\n this.handles = [this.viewport];\n this.bindHandles();\n this.updateDraggable();\n };\n proto.onDeactivateDrag = function () {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n };\n proto.updateDraggable = function () {\n // disable dragging if less than 2 slides. #278\n if (this.options.draggable == '>1') {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n if (this.isDraggable) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n };\n\n // backwards compatibility\n proto.bindDrag = function () {\n this.options.draggable = true;\n this.updateDraggable();\n };\n proto.unbindDrag = function () {\n this.options.draggable = false;\n this.updateDraggable();\n };\n proto._uiChangeDrag = function () {\n delete this.isFreeScrolling;\n };\n\n // -------------------------- pointer events -------------------------- //\n\n proto.pointerDown = function (event, pointer) {\n if (!this.isDraggable) {\n this._pointerDownDefault(event, pointer);\n return;\n }\n var isOkay = this.okayPointerDown(event);\n if (!isOkay) {\n return;\n }\n this._pointerDownPreventDefault(event);\n this.pointerDownFocus(event);\n // blur\n if (document.activeElement != this.element) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener('scroll', this);\n this._pointerDownDefault(event, pointer);\n };\n\n // default pointerDown logic, used for staticClick\n proto._pointerDownDefault = function (event, pointer) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY\n };\n // bind move and end events\n this._bindPostStartEvents(event);\n this.dispatchEvent('pointerDown', event, [pointer]);\n };\n var focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true\n };\n proto.pointerDownFocus = function (event) {\n var isFocusNode = focusNodes[event.target.nodeName];\n if (!isFocusNode) {\n this.focus();\n }\n };\n proto._pointerDownPreventDefault = function (event) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[event.target.nodeName];\n if (!isTouchStart && !isTouchPointer && !isFocusNode) {\n event.preventDefault();\n }\n };\n\n // ----- move ----- //\n\n proto.hasDragStarted = function (moveVector) {\n return Math.abs(moveVector.x) > this.options.dragThreshold;\n };\n\n // ----- up ----- //\n\n proto.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 proto.pointerDone = function () {\n window.removeEventListener('scroll', this);\n delete this.pointerDownScroll;\n };\n\n // -------------------------- dragging -------------------------- //\n\n proto.dragStart = function (event, pointer) {\n if (!this.isDraggable) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener('scroll', this);\n this.dispatchEvent('dragStart', event, [pointer]);\n };\n proto.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 proto.dragMove = function (event, pointer, moveVector) {\n if (!this.isDraggable) {\n return;\n }\n event.preventDefault();\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n if (this.options.wrapAround) {\n // wrap around move. #589\n moveVector.x %= this.slideableWidth;\n }\n var dragX = this.dragStartPosition + moveVector.x * direction;\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 this.dragX = dragX;\n this.dragMoveTime = new Date();\n this.dispatchEvent('dragMove', event, [pointer, moveVector]);\n };\n proto.dragEnd = function (event, pointer) {\n if (!this.isDraggable) {\n return;\n }\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 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 && -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 proto.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 ? 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 */\n proto._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 (dist, minDist) {\n return dist <= minDist;\n } : function (dist, minDist) {\n return dist < minDist;\n };\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 - horizontal position\n * @param {Integer} index - slide index\n * @returns {Number} - slide distance\n */\n proto.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 proto.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 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\n proto.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\n proto.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\n function getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n\n // ----- ----- //\n\n return Flickity;\n});\n\n// prev/next buttons\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('flickity/js/prev-next-button', ['./flickity', 'unipointer/unipointer', 'fizzy-ui-utils/utils'], function (Flickity, Unipointer, utils) {\n return factory(window, Flickity, Unipointer, utils);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('unipointer'), require('fizzy-ui-utils'));\n } else {\n // browser global\n factory(window, window.Flickity, window.Unipointer, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, Unipointer, utils) {\n 'use strict';\n\n var svgURI = 'http://www.w3.org/2000/svg';\n\n // -------------------------- PrevNextButton -------------------------- //\n\n function PrevNextButton(direction, parent) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n }\n PrevNextButton.prototype = Object.create(Unipointer.prototype);\n PrevNextButton.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 var element = this.element = document.createElement('button');\n element.className = 'flickity-button 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 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.parent.on('select', this.update.bind(this));\n this.on('pointerDown', this.parent.childUIPointerDown.bind(this.parent));\n };\n PrevNextButton.prototype.activate = function () {\n this.bindStartEvent(this.element);\n this.element.addEventListener('click', this);\n // add to DOM\n this.parent.element.appendChild(this.element);\n };\n PrevNextButton.prototype.deactivate = function () {\n // remove from DOM\n this.parent.element.removeChild(this.element);\n // click events\n this.unbindStartEvent(this.element);\n this.element.removeEventListener('click', this);\n };\n PrevNextButton.prototype.createSVG = function () {\n var svg = document.createElementNS(svgURI, 'svg');\n svg.setAttribute('class', 'flickity-button-icon');\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\n function 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' + ' L ' + shape.x1 + ',' + (shape.y1 + 50) + ' L ' + shape.x2 + ',' + (shape.y2 + 50) + ' L ' + shape.x3 + ',50 ' + ' L ' + shape.x2 + ',' + (50 - shape.y2) + ' L ' + shape.x1 + ',' + (50 - shape.y1) + ' Z';\n }\n PrevNextButton.prototype.handleEvent = utils.handleEvent;\n PrevNextButton.prototype.onclick = 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\n // ----- ----- //\n\n PrevNextButton.prototype.enable = function () {\n if (this.isEnabled) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n };\n PrevNextButton.prototype.disable = function () {\n if (!this.isEnabled) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n };\n PrevNextButton.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 PrevNextButton.prototype.destroy = function () {\n this.deactivate();\n this.allOff();\n };\n\n // -------------------------- Flickity prototype -------------------------- //\n\n utils.extend(Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60,\n y1: 50,\n x2: 70,\n y2: 40,\n x3: 30\n }\n });\n Flickity.createMethods.push('_createPrevNextButtons');\n var proto = Flickity.prototype;\n proto._createPrevNextButtons = function () {\n if (!this.options.prevNextButtons) {\n return;\n }\n this.prevButton = new PrevNextButton(-1, this);\n this.nextButton = new PrevNextButton(1, this);\n this.on('activate', this.activatePrevNextButtons);\n };\n proto.activatePrevNextButtons = function () {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on('deactivate', this.deactivatePrevNextButtons);\n };\n proto.deactivatePrevNextButtons = function () {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off('deactivate', this.deactivatePrevNextButtons);\n };\n\n // -------------------------- -------------------------- //\n\n Flickity.PrevNextButton = PrevNextButton;\n return Flickity;\n});\n\n// page dots\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('flickity/js/page-dots', ['./flickity', 'unipointer/unipointer', 'fizzy-ui-utils/utils'], function (Flickity, Unipointer, utils) {\n return factory(window, Flickity, Unipointer, utils);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('unipointer'), require('fizzy-ui-utils'));\n } else {\n // browser global\n factory(window, window.Flickity, window.Unipointer, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, Unipointer, utils) {\n // -------------------------- PageDots -------------------------- //\n\n function PageDots(parent) {\n this.parent = parent;\n this._create();\n }\n PageDots.prototype = Object.create(Unipointer.prototype);\n PageDots.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.handleClick = this.onClick.bind(this);\n this.on('pointerDown', this.parent.childUIPointerDown.bind(this.parent));\n };\n PageDots.prototype.activate = function () {\n this.setDots();\n this.holder.addEventListener('click', this.handleClick);\n this.bindStartEvent(this.holder);\n // add to DOM\n this.parent.element.appendChild(this.holder);\n };\n PageDots.prototype.deactivate = function () {\n this.holder.removeEventListener('click', this.handleClick);\n this.unbindStartEvent(this.holder);\n // remove from DOM\n this.parent.element.removeChild(this.holder);\n };\n PageDots.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 PageDots.prototype.addDots = function (count) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n var length = this.dots.length;\n var max = length + count;\n for (var i = length; i < max; i++) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n dot.setAttribute('aria-label', 'Page dot ' + (i + 1));\n fragment.appendChild(dot);\n newDots.push(dot);\n }\n this.holder.appendChild(fragment);\n this.dots = this.dots.concat(newDots);\n };\n PageDots.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 PageDots.prototype.updateSelected = function () {\n // remove selected class on previous\n if (this.selectedDot) {\n this.selectedDot.className = 'dot';\n this.selectedDot.removeAttribute('aria-current');\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 this.selectedDot.setAttribute('aria-current', 'step');\n };\n PageDots.prototype.onTap =\n // old method name, backwards-compatible\n PageDots.prototype.onClick = function (event) {\n var target = event.target;\n // only care about dot clicks\n if (target.nodeName != 'LI') {\n return;\n }\n this.parent.uiChange();\n var index = this.dots.indexOf(target);\n this.parent.select(index);\n };\n PageDots.prototype.destroy = function () {\n this.deactivate();\n this.allOff();\n };\n Flickity.PageDots = PageDots;\n\n // -------------------------- Flickity -------------------------- //\n\n utils.extend(Flickity.defaults, {\n pageDots: true\n });\n Flickity.createMethods.push('_createPageDots');\n var proto = Flickity.prototype;\n proto._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 proto.activatePageDots = function () {\n this.pageDots.activate();\n };\n proto.updateSelectedPageDots = function () {\n this.pageDots.updateSelected();\n };\n proto.updatePageDots = function () {\n this.pageDots.setDots();\n };\n proto.deactivatePageDots = function () {\n this.pageDots.deactivate();\n };\n\n // ----- ----- //\n\n Flickity.PageDots = PageDots;\n return Flickity;\n});\n\n// player & autoPlay\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('flickity/js/player', ['ev-emitter/ev-emitter', 'fizzy-ui-utils/utils', './flickity'], 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(require('ev-emitter'), require('fizzy-ui-utils'), require('./flickity'));\n } else {\n // browser global\n factory(window.EvEmitter, window.fizzyUIUtils, window.Flickity);\n }\n})(window, function factory(EvEmitter, utils, Flickity) {\n // -------------------------- Player -------------------------- //\n\n function Player(parent) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n this.onVisibilityChange = this.visibilityChange.bind(this);\n this.onVisibilityPlay = this.visibilityPlay.bind(this);\n }\n Player.prototype = Object.create(EvEmitter.prototype);\n\n // start play\n Player.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.hidden;\n if (isPageHidden) {\n document.addEventListener('visibilitychange', this.onVisibilityPlay);\n return;\n }\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener('visibilitychange', this.onVisibilityChange);\n // start ticking\n this.tick();\n };\n Player.prototype.tick = function () {\n // do not tick if not playing\n if (this.state != 'playing') {\n return;\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 Player.prototype.stop = function () {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener('visibilitychange', this.onVisibilityChange);\n };\n Player.prototype.clear = function () {\n clearTimeout(this.timeout);\n };\n Player.prototype.pause = function () {\n if (this.state == 'playing') {\n this.state = 'paused';\n this.clear();\n }\n };\n Player.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\n Player.prototype.visibilityChange = function () {\n var isPageHidden = document.hidden;\n this[isPageHidden ? 'pause' : 'unpause']();\n };\n Player.prototype.visibilityPlay = function () {\n this.play();\n document.removeEventListener('visibilitychange', this.onVisibilityPlay);\n };\n\n // -------------------------- Flickity -------------------------- //\n\n utils.extend(Flickity.defaults, {\n pauseAutoPlayOnHover: true\n });\n Flickity.createMethods.push('_createPlayer');\n var proto = Flickity.prototype;\n proto._createPlayer = function () {\n this.player = new Player(this);\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 proto.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\n proto.playPlayer = function () {\n this.player.play();\n };\n proto.stopPlayer = function () {\n this.player.stop();\n };\n proto.pausePlayer = function () {\n this.player.pause();\n };\n proto.unpausePlayer = function () {\n this.player.unpause();\n };\n proto.deactivatePlayer = function () {\n this.player.stop();\n this.element.removeEventListener('mouseenter', this);\n };\n\n // ----- mouseenter/leave ----- //\n\n // pause auto-play on hover\n proto.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\n proto.onmouseleave = function () {\n this.player.unpause();\n this.element.removeEventListener('mouseleave', this);\n };\n\n // ----- ----- //\n\n Flickity.Player = Player;\n return Flickity;\n});\n\n// add, remove cell\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('flickity/js/add-remove-cell', ['./flickity', 'fizzy-ui-utils/utils'], function (Flickity, utils) {\n return factory(window, Flickity, utils);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('fizzy-ui-utils'));\n } else {\n // browser global\n factory(window, window.Flickity, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, utils) {\n // append cells to a document fragment\n function 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\n var proto = Flickity.prototype;\n\n /**\n * Insert, prepend, or append cells\n * @param {[Element, Array, NodeList]} elems - Elements to insert\n * @param {Integer} index - Zero-based number to insert\n */\n proto.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 this._sizeCells(cells);\n this.cellChange(index, true);\n };\n proto.append = function (elems) {\n this.insert(elems, this.cells.length);\n };\n proto.prepend = function (elems) {\n this.insert(elems, 0);\n };\n\n /**\n * Remove cells\n * @param {[Element, Array, NodeList]} elems - ELements to remove\n */\n proto.remove = function (elems) {\n var cells = this.getCells(elems);\n if (!cells || !cells.length) {\n return;\n }\n var minCellIndex = this.cells.length - 1;\n // remove cells from collection & DOM\n cells.forEach(function (cell) {\n cell.remove();\n var index = this.cells.indexOf(cell);\n minCellIndex = Math.min(index, minCellIndex);\n utils.removeFrom(this.cells, cell);\n }, this);\n this.cellChange(minCellIndex, true);\n };\n\n /**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\n proto.cellSizeChange = function (elem) {\n var cell = this.getCell(elem);\n if (!cell) {\n return;\n }\n cell.getSize();\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 * @param {Boolean} isPositioningSlider - Positions slider after selection\n */\n proto.cellChange = function (changedCellIndex, isPositioningSlider) {\n var prevSelectedElem = this.selectedElement;\n this._positionCells(changedCellIndex);\n this._getWrapShiftCells();\n this.setGallerySize();\n // update selectedIndex\n // try to maintain position & select previous selected element\n var cell = this.getCell(prevSelectedElem);\n if (cell) {\n this.selectedIndex = this.getCellSlideIndex(cell);\n }\n this.selectedIndex = Math.min(this.slides.length - 1, this.selectedIndex);\n this.emitEvent('cellChange', [changedCellIndex]);\n // position slider\n this.select(this.selectedIndex);\n // do not position slider after lazy load\n if (isPositioningSlider) {\n this.positionSliderAtSelected();\n }\n };\n\n // ----- ----- //\n\n return Flickity;\n});\n\n// lazyload\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('flickity/js/lazyload', ['./flickity', 'fizzy-ui-utils/utils'], function (Flickity, utils) {\n return factory(window, Flickity, utils);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('fizzy-ui-utils'));\n } else {\n // browser global\n factory(window, window.Flickity, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, utils) {\n 'use strict';\n\n Flickity.createMethods.push('_createLazyload');\n var proto = Flickity.prototype;\n proto._createLazyload = function () {\n this.on('select', this.lazyLoad);\n };\n proto.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 function getCellLazyImages(cellElem) {\n // check if cell element is lazy image\n if (cellElem.nodeName == 'IMG') {\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n if (lazyloadAttr || srcAttr || srcsetAttr) {\n return [cellElem];\n }\n }\n // select lazy images in cell\n var lazySelector = 'img[data-flickity-lazyload], ' + 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll(lazySelector);\n return utils.makeArray(imgs);\n }\n\n // -------------------------- LazyLoader -------------------------- //\n\n /**\n * class to handle loading images\n * @param {Image} img - Image element\n * @param {Flickity} flickity - Flickity instance\n */\n function LazyLoader(img, flickity) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n }\n LazyLoader.prototype.handleEvent = utils.handleEvent;\n LazyLoader.prototype.load = function () {\n this.img.addEventListener('load', this);\n this.img.addEventListener('error', this);\n // get src & srcset\n var src = this.img.getAttribute('data-flickity-lazyload') || this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n // set src & serset\n this.img.src = src;\n if (srcset) {\n this.img.setAttribute('srcset', srcset);\n }\n // remove attr\n this.img.removeAttribute('data-flickity-lazyload');\n this.img.removeAttribute('data-flickity-lazyload-src');\n this.img.removeAttribute('data-flickity-lazyload-srcset');\n };\n LazyLoader.prototype.onload = function (event) {\n this.complete(event, 'flickity-lazyloaded');\n };\n LazyLoader.prototype.onerror = function (event) {\n this.complete(event, 'flickity-lazyerror');\n };\n LazyLoader.prototype.complete = function (event, className) {\n // unbind events\n this.img.removeEventListener('load', this);\n this.img.removeEventListener('error', this);\n var cell = this.flickity.getParentCell(this.img);\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange(cellElem);\n this.img.classList.add(className);\n this.flickity.dispatchEvent('lazyLoad', event, cellElem);\n };\n\n // ----- ----- //\n\n Flickity.LazyLoader = LazyLoader;\n return Flickity;\n});\n\n/*!\n * Flickity v2.3.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2021 Metafizzy\n */\n\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('flickity/js/index', ['./flickity', './drag', './prev-next-button', './page-dots', './player', './add-remove-cell', './lazyload'], factory);\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(require('./flickity'), require('./drag'), require('./prev-next-button'), require('./page-dots'), require('./player'), require('./add-remove-cell'), require('./lazyload'));\n }\n})(window, function factory(Flickity) {\n return Flickity;\n});\n\n/*!\n * Flickity asNavFor v2.0.2\n * enable asNavFor for Flickity\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 if (typeof define == 'function' && define.amd) {\n // AMD\n define('flickity-as-nav-for/as-nav-for', ['flickity/js/index', 'fizzy-ui-utils/utils'], factory);\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(require('flickity'), require('fizzy-ui-utils'));\n } else {\n // browser global\n window.Flickity = factory(window.Flickity, window.fizzyUIUtils);\n }\n})(window, function factory(Flickity, utils) {\n // -------------------------- asNavFor prototype -------------------------- //\n\n // Flickity.defaults.asNavFor = null;\n\n Flickity.createMethods.push('_createAsNavFor');\n var proto = Flickity.prototype;\n proto._createAsNavFor = function () {\n this.on('activate', this.activateAsNavFor);\n this.on('deactivate', this.deactivateAsNavFor);\n this.on('destroy', this.destroyAsNavFor);\n var asNavForOption = this.options.asNavFor;\n if (!asNavForOption) {\n return;\n }\n // HACK do async, give time for other flickity to be initalized\n var _this = this;\n setTimeout(function initNavCompanion() {\n _this.setNavCompanion(asNavForOption);\n });\n };\n proto.setNavCompanion = function (elem) {\n elem = utils.getQueryElement(elem);\n var companion = Flickity.data(elem);\n // stop if no companion or companion is self\n if (!companion || companion == this) {\n return;\n }\n this.navCompanion = companion;\n // companion select\n var _this = this;\n this.onNavCompanionSelect = function () {\n _this.navCompanionSelect();\n };\n companion.on('select', this.onNavCompanionSelect);\n // click\n this.on('staticClick', this.onNavStaticClick);\n this.navCompanionSelect(true);\n };\n proto.navCompanionSelect = function (isInstant) {\n // wait for companion & selectedCells first. #8\n var companionCells = this.navCompanion && this.navCompanion.selectedCells;\n if (!companionCells) {\n return;\n }\n // select slide that matches first cell of slide\n var selectedCell = companionCells[0];\n var firstIndex = this.navCompanion.cells.indexOf(selectedCell);\n var lastIndex = firstIndex + companionCells.length - 1;\n var selectIndex = Math.floor(lerp(firstIndex, lastIndex, this.navCompanion.cellAlign));\n this.selectCell(selectIndex, false, isInstant);\n // set nav selected class\n this.removeNavSelectedElements();\n // stop if companion has more cells than this one\n if (selectIndex >= this.cells.length) {\n return;\n }\n var selectedCells = this.cells.slice(firstIndex, lastIndex + 1);\n this.navSelectedElements = selectedCells.map(function (cell) {\n return cell.element;\n });\n this.changeNavSelectedClass('add');\n };\n function lerp(a, b, t) {\n return (b - a) * t + a;\n }\n proto.changeNavSelectedClass = function (method) {\n this.navSelectedElements.forEach(function (navElem) {\n navElem.classList[method]('is-nav-selected');\n });\n };\n proto.activateAsNavFor = function () {\n this.navCompanionSelect(true);\n };\n proto.removeNavSelectedElements = function () {\n if (!this.navSelectedElements) {\n return;\n }\n this.changeNavSelectedClass('remove');\n delete this.navSelectedElements;\n };\n proto.onNavStaticClick = function (event, pointer, cellElement, cellIndex) {\n if (typeof cellIndex == 'number') {\n this.navCompanion.selectCell(cellIndex);\n }\n };\n proto.deactivateAsNavFor = function () {\n this.removeNavSelectedElements();\n };\n proto.destroyAsNavFor = function () {\n if (!this.navCompanion) {\n return;\n }\n this.navCompanion.off('select', this.onNavCompanionSelect);\n this.off('staticClick', this.onNavStaticClick);\n delete this.navCompanion;\n };\n\n // ----- ----- //\n\n return Flickity;\n});\n\n/*!\n * imagesLoaded v4.1.4\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\n */\n\n(function (window, factory) {\n 'use strict';\n\n // universal module definition\n\n /*global define: false, module: false, require: false */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('imagesloaded/imagesloaded', ['ev-emitter/ev-emitter'], function (EvEmitter) {\n return factory(window, EvEmitter);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('ev-emitter'));\n } else {\n // browser global\n window.imagesLoaded = factory(window, window.EvEmitter);\n }\n})(typeof window !== 'undefined' ? window : this,\n// -------------------------- factory -------------------------- //\n\nfunction factory(window, EvEmitter) {\n var $ = window.jQuery;\n var console = window.console;\n\n // -------------------------- helpers -------------------------- //\n\n // extend objects\n function extend(a, b) {\n for (var prop in b) {\n a[prop] = b[prop];\n }\n return a;\n }\n var arraySlice = Array.prototype.slice;\n\n // turn element or nodeList into an array\n function makeArray(obj) {\n if (Array.isArray(obj)) {\n // use object if already an array\n return obj;\n }\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if (isArrayLike) {\n // convert nodeList to array\n return arraySlice.call(obj);\n }\n\n // array of single index\n return [obj];\n }\n\n // -------------------------- imagesLoaded -------------------------- //\n\n /**\n * @param {Array, Element, NodeList, String} elem\n * @param {Object or Function} options - if function, use as callback\n * @param {Function} onAlways - callback function\n */\n function ImagesLoaded(elem, options, onAlways) {\n // coerce ImagesLoaded() without new, to be new ImagesLoaded()\n if (!(this instanceof ImagesLoaded)) {\n return new ImagesLoaded(elem, options, onAlways);\n }\n // use elem as selector string\n var queryElem = elem;\n if (typeof elem == 'string') {\n queryElem = document.querySelectorAll(elem);\n }\n // bail if bad element\n if (!queryElem) {\n console.error('Bad element for imagesLoaded ' + (queryElem || elem));\n return;\n }\n this.elements = makeArray(queryElem);\n this.options = extend({}, this.options);\n // shift arguments if no options set\n if (typeof options == 'function') {\n onAlways = options;\n } else {\n extend(this.options, options);\n }\n if (onAlways) {\n this.on('always', onAlways);\n }\n this.getImages();\n if ($) {\n // add jQuery Deferred object\n this.jqDeferred = new $.Deferred();\n }\n\n // HACK check async to allow time to bind listeners\n setTimeout(this.check.bind(this));\n }\n ImagesLoaded.prototype = Object.create(EvEmitter.prototype);\n ImagesLoaded.prototype.options = {};\n ImagesLoaded.prototype.getImages = function () {\n this.images = [];\n\n // filter & find items if we have an item selector\n this.elements.forEach(this.addElementImages, this);\n };\n\n /**\n * @param {Node} element\n */\n ImagesLoaded.prototype.addElementImages = function (elem) {\n // filter siblings\n if (elem.nodeName == 'IMG') {\n this.addImage(elem);\n }\n // get background image on element\n if (this.options.background === true) {\n this.addElementBackgroundImages(elem);\n }\n\n // find children\n // no non-element nodes, #143\n var nodeType = elem.nodeType;\n if (!nodeType || !elementNodeTypes[nodeType]) {\n return;\n }\n var childImgs = elem.querySelectorAll('img');\n // concat childElems to filterFound array\n for (var i = 0; i < childImgs.length; i++) {\n var img = childImgs[i];\n this.addImage(img);\n }\n\n // get child background images\n if (typeof this.options.background == 'string') {\n var children = elem.querySelectorAll(this.options.background);\n for (i = 0; i < children.length; i++) {\n var child = children[i];\n this.addElementBackgroundImages(child);\n }\n }\n };\n var elementNodeTypes = {\n 1: true,\n 9: true,\n 11: true\n };\n ImagesLoaded.prototype.addElementBackgroundImages = function (elem) {\n var style = getComputedStyle(elem);\n if (!style) {\n // Firefox returns null if in a hidden iframe https://bugzil.la/548397\n return;\n }\n // get url inside url(\"...\")\n var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\n var matches = reURL.exec(style.backgroundImage);\n while (matches !== null) {\n var url = matches && matches[2];\n if (url) {\n this.addBackground(url, elem);\n }\n matches = reURL.exec(style.backgroundImage);\n }\n };\n\n /**\n * @param {Image} img\n */\n ImagesLoaded.prototype.addImage = function (img) {\n var loadingImage = new LoadingImage(img);\n this.images.push(loadingImage);\n };\n ImagesLoaded.prototype.addBackground = function (url, elem) {\n var background = new Background(url, elem);\n this.images.push(background);\n };\n ImagesLoaded.prototype.check = function () {\n var _this = this;\n this.progressedCount = 0;\n this.hasAnyBroken = false;\n // complete if no images\n if (!this.images.length) {\n this.complete();\n return;\n }\n function onProgress(image, elem, message) {\n // HACK - Chrome triggers event before object properties have changed. #83\n setTimeout(function () {\n _this.progress(image, elem, message);\n });\n }\n this.images.forEach(function (loadingImage) {\n loadingImage.once('progress', onProgress);\n loadingImage.check();\n });\n };\n ImagesLoaded.prototype.progress = function (image, elem, message) {\n this.progressedCount++;\n this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\n // progress event\n this.emitEvent('progress', [this, image, elem]);\n if (this.jqDeferred && this.jqDeferred.notify) {\n this.jqDeferred.notify(this, image);\n }\n // check if completed\n if (this.progressedCount == this.images.length) {\n this.complete();\n }\n if (this.options.debug && console) {\n console.log('progress: ' + message, image, elem);\n }\n };\n ImagesLoaded.prototype.complete = function () {\n var eventName = this.hasAnyBroken ? 'fail' : 'done';\n this.isComplete = true;\n this.emitEvent(eventName, [this]);\n this.emitEvent('always', [this]);\n if (this.jqDeferred) {\n var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\n this.jqDeferred[jqMethod](this);\n }\n };\n\n // -------------------------- -------------------------- //\n\n function LoadingImage(img) {\n this.img = img;\n }\n LoadingImage.prototype = Object.create(EvEmitter.prototype);\n LoadingImage.prototype.check = function () {\n // If complete is true and browser supports natural sizes,\n // try to check for image status manually.\n var isComplete = this.getIsImageComplete();\n if (isComplete) {\n // report based on naturalWidth\n this.confirm(this.img.naturalWidth !== 0, 'naturalWidth');\n return;\n }\n\n // If none of the checks above matched, simulate loading on detached element.\n this.proxyImage = new Image();\n this.proxyImage.addEventListener('load', this);\n this.proxyImage.addEventListener('error', this);\n // bind to image as well for Firefox. #191\n this.img.addEventListener('load', this);\n this.img.addEventListener('error', this);\n this.proxyImage.src = this.img.src;\n };\n LoadingImage.prototype.getIsImageComplete = function () {\n // check for non-zero, non-undefined naturalWidth\n // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\n return this.img.complete && this.img.naturalWidth;\n };\n LoadingImage.prototype.confirm = function (isLoaded, message) {\n this.isLoaded = isLoaded;\n this.emitEvent('progress', [this, this.img, message]);\n };\n\n // ----- events ----- //\n\n // trigger specified handler for event type\n LoadingImage.prototype.handleEvent = function (event) {\n var method = 'on' + event.type;\n if (this[method]) {\n this[method](event);\n }\n };\n LoadingImage.prototype.onload = function () {\n this.confirm(true, 'onload');\n this.unbindEvents();\n };\n LoadingImage.prototype.onerror = function () {\n this.confirm(false, 'onerror');\n this.unbindEvents();\n };\n LoadingImage.prototype.unbindEvents = function () {\n this.proxyImage.removeEventListener('load', this);\n this.proxyImage.removeEventListener('error', this);\n this.img.removeEventListener('load', this);\n this.img.removeEventListener('error', this);\n };\n\n // -------------------------- Background -------------------------- //\n\n function Background(url, element) {\n this.url = url;\n this.element = element;\n this.img = new Image();\n }\n\n // inherit LoadingImage prototype\n Background.prototype = Object.create(LoadingImage.prototype);\n Background.prototype.check = function () {\n this.img.addEventListener('load', this);\n this.img.addEventListener('error', this);\n this.img.src = this.url;\n // check if image is already complete\n var isComplete = this.getIsImageComplete();\n if (isComplete) {\n this.confirm(this.img.naturalWidth !== 0, 'naturalWidth');\n this.unbindEvents();\n }\n };\n Background.prototype.unbindEvents = function () {\n this.img.removeEventListener('load', this);\n this.img.removeEventListener('error', this);\n };\n Background.prototype.confirm = function (isLoaded, message) {\n this.isLoaded = isLoaded;\n this.emitEvent('progress', [this, this.element, message]);\n };\n\n // -------------------------- jQuery -------------------------- //\n\n ImagesLoaded.makeJQueryPlugin = function (jQuery) {\n jQuery = jQuery || window.jQuery;\n if (!jQuery) {\n return;\n }\n // set local variable\n $ = jQuery;\n // $().imagesLoaded()\n $.fn.imagesLoaded = function (options, callback) {\n var instance = new ImagesLoaded(this, options, callback);\n return instance.jqDeferred.promise($(this));\n };\n };\n // try making plugin\n ImagesLoaded.makeJQueryPlugin();\n\n // -------------------------- -------------------------- //\n\n return ImagesLoaded;\n});\n\n/*!\n * Flickity imagesLoaded v2.0.0\n * enables imagesLoaded option for Flickity\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n(function (window, factory) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['flickity/js/index', 'imagesloaded/imagesloaded'], function (Flickity, imagesLoaded) {\n return factory(window, Flickity, imagesLoaded);\n });\n } else if (typeof module == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('flickity'), require('imagesloaded'));\n } else {\n // browser global\n window.Flickity = factory(window, window.Flickity, window.imagesLoaded);\n }\n})(window, function factory(window, Flickity, imagesLoaded) {\n 'use strict';\n\n Flickity.createMethods.push('_createImagesLoaded');\n var proto = Flickity.prototype;\n proto._createImagesLoaded = function () {\n this.on('activate', this.imagesLoaded);\n };\n proto.imagesLoaded = function () {\n if (!this.options.imagesLoaded) {\n return;\n }\n var _this = this;\n function onImagesLoadedProgress(instance, image) {\n var cell = _this.getParentCell(image.img);\n _this.cellSizeChange(cell && cell.element);\n if (!_this.options.freeScroll) {\n _this.positionSliderAtSelected();\n }\n }\n imagesLoaded(this.slider).on('progress', onImagesLoadedProgress);\n };\n return Flickity;\n});","/*!\n * Bootstrap v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery')) : typeof define === 'function' && define.amd ? define(['exports', 'jquery'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery));\n})(this, function (exports, $) {\n 'use strict';\n\n function _interopDefaultLegacy(e) {\n return e && typeof e === 'object' && 'default' in e ? e : {\n 'default': e\n };\n }\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\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 function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n function _extends$1() {\n _extends$1 = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends$1.apply(this, arguments);\n }\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n }\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * Private TransitionEnd Helpers\n */\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return \"\" + obj;\n }\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($__default[\"default\"](event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined;\n }\n };\n }\n function transitionEndEmulator(duration) {\n var _this = this;\n var called = false;\n $__default[\"default\"](this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n function setTransitionEndSupport() {\n $__default[\"default\"].fn.emulateTransitionEnd = transitionEndEmulator;\n $__default[\"default\"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * Public Util API\n */\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (_) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n var transitionDuration = $__default[\"default\"](element).css('transition-duration');\n var transitionDelay = $__default[\"default\"](element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $__default[\"default\"](element).trigger(TRANSITION_END);\n },\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n if (!element.parentNode) {\n return null;\n }\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n var version = $__default[\"default\"].fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n\n /**\n * Constants\n */\n\n var NAME$a = 'alert';\n var VERSION$a = '4.6.2';\n var DATA_KEY$a = 'bs.alert';\n var EVENT_KEY$a = \".\" + DATA_KEY$a;\n var DATA_API_KEY$7 = '.data-api';\n var JQUERY_NO_CONFLICT$a = $__default[\"default\"].fn[NAME$a];\n var CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE$5 = 'fade';\n var CLASS_NAME_SHOW$7 = 'show';\n var EVENT_CLOSE = \"close\" + EVENT_KEY$a;\n var EVENT_CLOSED = \"closed\" + EVENT_KEY$a;\n var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$a + DATA_API_KEY$7;\n var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n /**\n * Class definition\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n if (element) {\n rootElement = this._getRootElement(element);\n }\n var customEvent = this._triggerCloseEvent(rootElement);\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n this._removeElement(rootElement);\n };\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$a);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n if (selector) {\n parent = document.querySelector(selector);\n }\n if (!parent) {\n parent = $__default[\"default\"](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n }\n return parent;\n };\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $__default[\"default\"].Event(EVENT_CLOSE);\n $__default[\"default\"](element).trigger(closeEvent);\n return closeEvent;\n };\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n $__default[\"default\"](element).removeClass(CLASS_NAME_SHOW$7);\n if (!$__default[\"default\"](element).hasClass(CLASS_NAME_FADE$5)) {\n this._destroyElement(element);\n return;\n }\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $__default[\"default\"](element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n _proto._destroyElement = function _destroyElement(element) {\n $__default[\"default\"](element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$a);\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY$a, data);\n }\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n alertInstance.close(this);\n };\n };\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$a;\n }\n }]);\n return Alert;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$a] = Alert._jQueryInterface;\n $__default[\"default\"].fn[NAME$a].Constructor = Alert;\n $__default[\"default\"].fn[NAME$a].noConflict = function () {\n $__default[\"default\"].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Alert._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$9 = 'button';\n var VERSION$9 = '4.6.2';\n var DATA_KEY$9 = 'bs.button';\n var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$9 = $__default[\"default\"].fn[NAME$9];\n var CLASS_NAME_ACTIVE$3 = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\n var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$6;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$9 + DATA_API_KEY$6 + \" \" + (\"blur\" + EVENT_KEY$9 + DATA_API_KEY$6);\n var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$9 + DATA_API_KEY$6;\n var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"button\"]';\n var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n var SELECTOR_ACTIVE$2 = '.active';\n var SELECTOR_BUTTON = '.btn';\n /**\n * Class definition\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n this.shouldAvoidTriggerChange = false;\n } // Getters\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $__default[\"default\"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n if (rootElement) {\n var input = this._element.querySelector(SELECTOR_INPUT);\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2);\n if (activeElement) {\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$3);\n }\n }\n }\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3);\n }\n if (!this.shouldAvoidTriggerChange) {\n $__default[\"default\"](input).trigger('change');\n }\n }\n input.focus();\n addAriaPressed = false;\n }\n }\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3));\n }\n if (triggerChangeEvent) {\n $__default[\"default\"](this._element).toggleClass(CLASS_NAME_ACTIVE$3);\n }\n }\n };\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$9);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$9);\n if (!data) {\n data = new Button(this);\n $element.data(DATA_KEY$9, data);\n }\n data.shouldAvoidTriggerChange = avoidTriggerChange;\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$9;\n }\n }]);\n return Button;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n if (!$__default[\"default\"](button).hasClass(CLASS_NAME_BUTTON)) {\n button = $__default[\"default\"](button).closest(SELECTOR_BUTTON)[0];\n }\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(SELECTOR_INPUT);\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($__default[\"default\"](button), 'toggle', initialButton.tagName === 'INPUT');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $__default[\"default\"](event.target).closest(SELECTOR_BUTTON)[0];\n $__default[\"default\"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$2, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE$3);\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE$3);\n }\n } // find all button toggles\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4));\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n if (_button.getAttribute('aria-pressed') === 'true') {\n _button.classList.add(CLASS_NAME_ACTIVE$3);\n } else {\n _button.classList.remove(CLASS_NAME_ACTIVE$3);\n }\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$9] = Button._jQueryInterface;\n $__default[\"default\"].fn[NAME$9].Constructor = Button;\n $__default[\"default\"].fn[NAME$9].noConflict = function () {\n $__default[\"default\"].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Button._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$8 = 'carousel';\n var VERSION$8 = '4.6.2';\n var DATA_KEY$8 = 'bs.carousel';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $__default[\"default\"].fn[NAME$8];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var CLASS_NAME_CAROUSEL = 'carousel';\n var CLASS_NAME_ACTIVE$2 = 'active';\n var CLASS_NAME_SLIDE = 'slide';\n var CLASS_NAME_RIGHT = 'carousel-item-right';\n var CLASS_NAME_LEFT = 'carousel-item-left';\n var CLASS_NAME_NEXT = 'carousel-item-next';\n var CLASS_NAME_PREV = 'carousel-item-prev';\n var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n var DIRECTION_NEXT = 'next';\n var DIRECTION_PREV = 'prev';\n var DIRECTION_LEFT = 'left';\n var DIRECTION_RIGHT = 'right';\n var EVENT_SLIDE = \"slide\" + EVENT_KEY$8;\n var EVENT_SLID = \"slid\" + EVENT_KEY$8;\n var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$8;\n var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$8;\n var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$8;\n var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$8;\n var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$8;\n var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$8;\n var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$8;\n var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$8;\n var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$8;\n var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$5;\n var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$8 + DATA_API_KEY$5;\n var SELECTOR_ACTIVE$1 = '.active';\n var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n var SELECTOR_ITEM = '.carousel-item';\n var SELECTOR_ITEM_IMG = '.carousel-item img';\n var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n var SELECTOR_INDICATORS = '.carousel-indicators';\n var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n var Default$7 = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType$7 = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n };\n /**\n * Class definition\n */\n\n var Carousel = /*#__PURE__*/function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n this._addEventListeners();\n } // Getters\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT);\n }\n };\n _proto.nextWhenVisible = function nextWhenVisible() {\n var $element = $__default[\"default\"](this._element); // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n\n if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n this.next();\n }\n };\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV);\n }\n };\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n clearInterval(this._interval);\n this._interval = null;\n };\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n if (this._config.interval && !this._isPaused) {\n this._updateInterval();\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n _proto.to = function to(index) {\n var _this = this;\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n var activeIndex = this._getItemIndex(this._activeElement);\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n $__default[\"default\"](this._element).one(EVENT_SLID, function () {\n return _this.to(index);\n });\n return;\n }\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n this._slide(direction, this._items[index]);\n };\n _proto.dispose = function dispose() {\n $__default[\"default\"](this._element).off(EVENT_KEY$8);\n $__default[\"default\"].removeData(this._element, DATA_KEY$8);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends$1({}, Default$7, config);\n Util.typeCheckConfig(NAME$8, config, DefaultType$7);\n return config;\n };\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n var direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n if (direction < 0) {\n this.next();\n }\n };\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n if (this._config.keyboard) {\n $__default[\"default\"](this._element).on(EVENT_KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n if (this._config.pause === 'hover') {\n $__default[\"default\"](this._element).on(EVENT_MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(EVENT_MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n if (!this._touchSupported) {\n return;\n }\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;\n };\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n _this3._handleSwipe();\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n $__default[\"default\"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n return e.preventDefault();\n });\n if (this._pointerEvent) {\n $__default[\"default\"](this._element).on(EVENT_POINTERDOWN, function (event) {\n return start(event);\n });\n $__default[\"default\"](this._element).on(EVENT_POINTERUP, function (event) {\n return end(event);\n });\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n $__default[\"default\"](this._element).on(EVENT_TOUCHSTART, function (event) {\n return start(event);\n });\n $__default[\"default\"](this._element).on(EVENT_TOUCHMOVE, function (event) {\n return move(event);\n });\n $__default[\"default\"](this._element).on(EVENT_TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n }\n };\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n return this._items.indexOf(element);\n };\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === DIRECTION_NEXT;\n var isPrevDirection = direction === DIRECTION_PREV;\n var activeIndex = this._getItemIndex(activeElement);\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n var delta = direction === DIRECTION_PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n var slideEvent = $__default[\"default\"].Event(EVENT_SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $__default[\"default\"](this._element).trigger(slideEvent);\n return slideEvent;\n };\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n $__default[\"default\"](indicators).removeClass(CLASS_NAME_ACTIVE$2);\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n if (nextIndicator) {\n $__default[\"default\"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2);\n }\n }\n };\n _proto._updateInterval = function _updateInterval() {\n var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n if (!element) {\n return;\n }\n var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = elementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n };\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n var activeElementIndex = this._getItemIndex(activeElement);\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n var nextElementIndex = this._getItemIndex(nextElement);\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT;\n orderClassName = CLASS_NAME_NEXT;\n eventDirectionName = DIRECTION_LEFT;\n } else {\n directionalClassName = CLASS_NAME_RIGHT;\n orderClassName = CLASS_NAME_PREV;\n eventDirectionName = DIRECTION_RIGHT;\n }\n if (nextElement && $__default[\"default\"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) {\n this._isSliding = false;\n return;\n }\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n this._isSliding = true;\n if (isCycling) {\n this.pause();\n }\n this._setActiveIndicatorElement(nextElement);\n this._activeElement = nextElement;\n var slidEvent = $__default[\"default\"].Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SLIDE)) {\n $__default[\"default\"](nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $__default[\"default\"](activeElement).addClass(directionalClassName);\n $__default[\"default\"](nextElement).addClass(directionalClassName);\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $__default[\"default\"](activeElement).one(Util.TRANSITION_END, function () {\n $__default[\"default\"](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$2);\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $__default[\"default\"](_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2);\n $__default[\"default\"](nextElement).addClass(CLASS_NAME_ACTIVE$2);\n this._isSliding = false;\n $__default[\"default\"](this._element).trigger(slidEvent);\n }\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$8);\n var _config = _extends$1({}, Default$7, $__default[\"default\"](this).data());\n if (typeof config === 'object') {\n _config = _extends$1({}, _config, config);\n }\n var action = typeof config === 'string' ? config : _config.slide;\n if (!data) {\n data = new Carousel(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$8, data);\n }\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n if (!selector) {\n return;\n }\n var target = $__default[\"default\"](selector)[0];\n if (!target || !$__default[\"default\"](target).hasClass(CLASS_NAME_CAROUSEL)) {\n return;\n }\n var config = _extends$1({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n var slideIndex = this.getAttribute('data-slide-to');\n if (slideIndex) {\n config.interval = false;\n }\n Carousel._jQueryInterface.call($__default[\"default\"](target), config);\n if (slideIndex) {\n $__default[\"default\"](target).data(DATA_KEY$8).to(slideIndex);\n }\n event.preventDefault();\n };\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$7;\n }\n }]);\n return Carousel;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$1, function () {\n var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $__default[\"default\"](carousels[i]);\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$8] = Carousel._jQueryInterface;\n $__default[\"default\"].fn[NAME$8].Constructor = Carousel;\n $__default[\"default\"].fn[NAME$8].noConflict = function () {\n $__default[\"default\"].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return Carousel._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$7 = 'collapse';\n var VERSION$7 = '4.6.2';\n var DATA_KEY$7 = 'bs.collapse';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$7 = $__default[\"default\"].fn[NAME$7];\n var CLASS_NAME_SHOW$6 = 'show';\n var CLASS_NAME_COLLAPSE = 'collapse';\n var CLASS_NAME_COLLAPSING = 'collapsing';\n var CLASS_NAME_COLLAPSED = 'collapsed';\n var DIMENSION_WIDTH = 'width';\n var DIMENSION_HEIGHT = 'height';\n var EVENT_SHOW$4 = \"show\" + EVENT_KEY$7;\n var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$7;\n var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$7;\n var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$7;\n var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$7 + DATA_API_KEY$4;\n var SELECTOR_ACTIVES = '.show, .collapsing';\n var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"collapse\"]';\n var Default$6 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$6 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n /**\n * Class definition\n */\n\n var Collapse = /*#__PURE__*/function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3));\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n this._triggerArray.push(elem);\n }\n }\n this._parent = this._config.parent ? this._getParent() : null;\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n this.hide();\n } else {\n this.show();\n }\n };\n _proto.show = function show() {\n var _this = this;\n if (this._isTransitioning || $__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n return;\n }\n var actives;\n var activesData;\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n return elem.classList.contains(CLASS_NAME_COLLAPSE);\n });\n if (actives.length === 0) {\n actives = null;\n }\n }\n if (actives) {\n activesData = $__default[\"default\"](actives).not(this._selector).data(DATA_KEY$7);\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n var startEvent = $__default[\"default\"].Event(EVENT_SHOW$4);\n $__default[\"default\"](this._element).trigger(startEvent);\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n if (actives) {\n Collapse._jQueryInterface.call($__default[\"default\"](actives).not(this._selector), 'hide');\n if (!activesData) {\n $__default[\"default\"](actives).data(DATA_KEY$7, null);\n }\n }\n var dimension = this._getDimension();\n $__default[\"default\"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n if (this._triggerArray.length) {\n $__default[\"default\"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n }\n this.setTransitioning(true);\n var complete = function complete() {\n $__default[\"default\"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n _this._element.style[dimension] = '';\n _this.setTransitioning(false);\n $__default[\"default\"](_this._element).trigger(EVENT_SHOWN$4);\n };\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n _proto.hide = function hide() {\n var _this2 = this;\n if (this._isTransitioning || !$__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n return;\n }\n var startEvent = $__default[\"default\"].Event(EVENT_HIDE$4);\n $__default[\"default\"](this._element).trigger(startEvent);\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n var dimension = this._getDimension();\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $__default[\"default\"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n var triggerArrayLength = this._triggerArray.length;\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n if (selector !== null) {\n var $elem = $__default[\"default\"]([].slice.call(document.querySelectorAll(selector)));\n if (!$elem.hasClass(CLASS_NAME_SHOW$6)) {\n $__default[\"default\"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n this.setTransitioning(true);\n var complete = function complete() {\n _this2.setTransitioning(false);\n $__default[\"default\"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4);\n };\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$7);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends$1({}, Default$6, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$7, config, DefaultType$6);\n return config;\n };\n _proto._getDimension = function _getDimension() {\n var hasWidth = $__default[\"default\"](this._element).hasClass(DIMENSION_WIDTH);\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n };\n _proto._getParent = function _getParent() {\n var _this3 = this;\n var parent;\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $__default[\"default\"](children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $__default[\"default\"](element).hasClass(CLASS_NAME_SHOW$6);\n if (triggerArray.length) {\n $__default[\"default\"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$7);\n var _config = _extends$1({}, Default$6, $element.data(), typeof config === 'object' && config ? config : {});\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n if (!data) {\n data = new Collapse(this, _config);\n $element.data(DATA_KEY$7, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }]);\n return Collapse;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n var $trigger = $__default[\"default\"](this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $__default[\"default\"](selectors).each(function () {\n var $target = $__default[\"default\"](this);\n var data = $target.data(DATA_KEY$7);\n var config = data ? 'toggle' : $trigger.data();\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$7] = Collapse._jQueryInterface;\n $__default[\"default\"].fn[NAME$7].Constructor = Collapse;\n $__default[\"default\"].fn[NAME$7].noConflict = function () {\n $__default[\"default\"].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Collapse._jQueryInterface;\n };\n\n /**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\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 */\n var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n var timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n }();\n function 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 function 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 var 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 */\n var 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 */\n function 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 */\n function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.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 */\n function 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 */\n function 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 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 if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n return getScrollParent(getParentNode(element));\n }\n\n /**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\n function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n }\n var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\n var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n /**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\n function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\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 */\n function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n var nodeName = offsetParent && offsetParent.nodeName;\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n return offsetParent;\n }\n function isOffsetContainer(element) {\n var nodeName = element.nodeName;\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 */\n function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\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 */\n function 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 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 */\n function getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\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 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 */\n function includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\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\n function getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n }\n function getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n }\n function getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n }\n var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var 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 return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var defineProperty = function (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 return obj;\n };\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\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 */\n function 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 */\n function 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 try {\n if (isIE(10)) {\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 } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\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(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\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 result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n return getClientRect(result);\n }\n function getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\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);\n var marginLeft = parseFloat(styles.marginLeft);\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 if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n return offsets;\n }\n function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\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 var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\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 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 */\n function 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 var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n }\n\n /**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\n function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\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 * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\n function getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = {\n top: 0,\n left: 0\n };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\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 var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\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 padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n return boundaries;\n }\n function getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\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 */\n function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\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 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 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 var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n var variation = placement.split('-')[1];\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 * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\n function getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\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 */\n function getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\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 */\n function getOppositePlacement(placement) {\n var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n };\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 */\n function 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 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 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 */\n function find(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 */\n function findIndex(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(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 */\n function runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\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 data = fn(data, modifier);\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 */\n function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\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, this.options.positionFixed);\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 data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : '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 */\n function 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 */\n function getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n for (var i = 0; i < prefixes.length; 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 * Destroys the popper.\n * @method\n * @memberof Popper\n */\n function 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.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n this.disableEventListeners();\n\n // remove the popper if user explicitly 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 */\n function getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n }\n function attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, {\n 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 */\n function setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, {\n passive: true\n });\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 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 */\n function 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 */\n function 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 */\n function 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 */\n function 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 */\n function 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 */\n function 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 */\n function 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 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 */\n function applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\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 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, {\n position: options.positionFixed ? 'fixed' : 'absolute'\n });\n return options;\n }\n\n /**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\n function getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n var noRound = function noRound(v) {\n return v;\n };\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n }\n var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\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 */\n function 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(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 var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\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 // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\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 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 */\n function isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\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 */\n function 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 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 var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\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 conjunction\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]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\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 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 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 */\n function 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-end` (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 */\n var 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`\n var 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 */\n function clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\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 var 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 */\n function 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 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 var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n var flipOrder = [];\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 flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\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 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 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\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\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 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 */\n function keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\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 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 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 */\n function 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 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 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 */\n function 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(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\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 */\n function 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 var basePlacement = placement.split('-')[0];\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\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 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 */\n function 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 // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n options.boundaries = boundaries;\n var order = options.priority;\n var popper = data.offsets.popper;\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 order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n data.offsets.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 */\n function 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 var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\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 */\n function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\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 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 data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\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 */\n function 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 var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\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 */\n var 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 * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, 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 * > You can read more on this at 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 * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A 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 always has 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 * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points 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 * 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 conjunction 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 * 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 * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\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 * 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 * 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 * 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 your 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 information used by Popper.js.\n * This object is 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 overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For 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 */\n var Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\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 * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\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, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\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\n var Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the 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 var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\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 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 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 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 * Schedules 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\n Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n Popper.placements = placements;\n Popper.Defaults = Defaults;\n var Popper$1 = Popper;\n\n /**\n * Constants\n */\n\n var NAME$6 = 'dropdown';\n var VERSION$6 = '4.6.2';\n var DATA_KEY$6 = 'bs.dropdown';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$6 = $__default[\"default\"].fn[NAME$6];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE$1);\n var CLASS_NAME_DISABLED$1 = 'disabled';\n var CLASS_NAME_SHOW$5 = 'show';\n var CLASS_NAME_DROPUP = 'dropup';\n var CLASS_NAME_DROPRIGHT = 'dropright';\n var CLASS_NAME_DROPLEFT = 'dropleft';\n var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n var CLASS_NAME_POSITION_STATIC = 'position-static';\n var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$6;\n var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$6;\n var EVENT_SHOW$3 = \"show\" + EVENT_KEY$6;\n var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$6;\n var EVENT_CLICK = \"click\" + EVENT_KEY$6;\n var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n var SELECTOR_FORM_CHILD = '.dropdown form';\n var SELECTOR_MENU = '.dropdown-menu';\n var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n var PLACEMENT_TOP = 'top-start';\n var PLACEMENT_TOPEND = 'top-end';\n var PLACEMENT_BOTTOM = 'bottom-start';\n var PLACEMENT_BOTTOMEND = 'bottom-end';\n var PLACEMENT_RIGHT = 'right-start';\n var PLACEMENT_LEFT = 'left-start';\n var Default$5 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var DefaultType$5 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n };\n /**\n * Class definition\n */\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n this._addEventListeners();\n } // Getters\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n var isActive = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5);\n Dropdown._clearMenus();\n if (isActive) {\n return;\n }\n this.show(true);\n };\n _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n return;\n }\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW$3, relatedTarget);\n var parent = Dropdown._getParentFromElement(this._element);\n $__default[\"default\"](parent).trigger(showEvent);\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Totally disable Popper for Dropdowns in Navbar\n\n if (!this._inNavbar && usePopper) {\n // Check for Popper dependency\n if (typeof Popper$1 === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n var referenceElement = this._element;\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n if (this._config.boundary !== 'scrollParent') {\n $__default[\"default\"](parent).addClass(CLASS_NAME_POSITION_STATIC);\n }\n this._popper = new Popper$1(referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement && $__default[\"default\"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n }\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_SHOWN$3, relatedTarget));\n };\n _proto.hide = function hide() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n return;\n }\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n var parent = Dropdown._getParentFromElement(this._element);\n $__default[\"default\"](parent).trigger(hideEvent);\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n if (this._popper) {\n this._popper.destroy();\n }\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n };\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$6);\n $__default[\"default\"](this._element).off(EVENT_KEY$6);\n this._element = null;\n this._menu = null;\n if (this._popper !== null) {\n this._popper.destroy();\n this._popper = null;\n }\n };\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n $__default[\"default\"](this._element).on(EVENT_CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n _this.toggle();\n });\n };\n _proto._getConfig = function _getConfig(config) {\n config = _extends$1({}, this.constructor.Default, $__default[\"default\"](this._element).data(), config);\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n return config;\n };\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU);\n }\n }\n return this._menu;\n };\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $__default[\"default\"](this._element.parentNode);\n var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT;\n } else if ($__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND;\n }\n return placement;\n };\n _proto._detectNavbar = function _detectNavbar() {\n return $__default[\"default\"](this._element).closest('.navbar').length > 0;\n };\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n var offset = {};\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends$1({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n return offset;\n };\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }; // Disable Popper if we have a static display\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n return _extends$1({}, popperConfig, this._config.popperConfig);\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$6);\n var _config = typeof config === 'object' ? config : null;\n if (!data) {\n data = new Dropdown(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$6, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n var context = $__default[\"default\"](toggles[i]).data(DATA_KEY$6);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n if (!context) {\n continue;\n }\n var dropdownMenu = context._menu;\n if (!$__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5)) {\n continue;\n }\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default[\"default\"].contains(parent, event.target)) {\n continue;\n }\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n $__default[\"default\"](parent).trigger(hideEvent);\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n }\n toggles[i].setAttribute('aria-expanded', 'false');\n if (context._popper) {\n context._popper.destroy();\n }\n $__default[\"default\"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n }\n };\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n if (selector) {\n parent = document.querySelector(selector);\n }\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default[\"default\"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n if (this.disabled || $__default[\"default\"](this).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n var parent = Dropdown._getParentFromElement(this);\n var isActive = $__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5);\n if (!isActive && event.which === ESCAPE_KEYCODE$1) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) {\n if (event.which === ESCAPE_KEYCODE$1) {\n $__default[\"default\"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n }\n $__default[\"default\"](this).trigger('click');\n return;\n }\n var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n return $__default[\"default\"](item).is(':visible');\n });\n if (items.length === 0) {\n return;\n }\n var index = items.indexOf(event.target);\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n if (index < 0) {\n index = 0;\n }\n items[index].focus();\n };\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n return Dropdown;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$2 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n event.preventDefault();\n event.stopPropagation();\n Dropdown._jQueryInterface.call($__default[\"default\"](this), 'toggle');\n }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$6] = Dropdown._jQueryInterface;\n $__default[\"default\"].fn[NAME$6].Constructor = Dropdown;\n $__default[\"default\"].fn[NAME$6].noConflict = function () {\n $__default[\"default\"].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.6.2';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $__default[\"default\"].fn[NAME$5];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n var CLASS_NAME_BACKDROP = 'modal-backdrop';\n var CLASS_NAME_OPEN = 'modal-open';\n var CLASS_NAME_FADE$4 = 'fade';\n var CLASS_NAME_SHOW$4 = 'show';\n var CLASS_NAME_STATIC = 'modal-static';\n var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$5;\n var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$2;\n var SELECTOR_DIALOG = '.modal-dialog';\n var SELECTOR_MODAL_BODY = '.modal-body';\n var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"modal\"]';\n var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"modal\"]';\n var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n var SELECTOR_STICKY_CONTENT = '.sticky-top';\n var Default$4 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$4 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n /**\n * Class definition\n */\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(SELECTOR_DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n _proto.show = function show(relatedTarget) {\n var _this = this;\n if (this._isShown || this._isTransitioning) {\n return;\n }\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW$2, {\n relatedTarget: relatedTarget\n });\n $__default[\"default\"](this._element).trigger(showEvent);\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n this._isShown = true;\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n this._isTransitioning = true;\n }\n this._checkScrollbar();\n this._setScrollbar();\n this._adjustDialog();\n this._setEscapeEvent();\n this._setResizeEvent();\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) {\n return _this.hide(event);\n });\n $__default[\"default\"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n $__default[\"default\"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n if ($__default[\"default\"](event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n _proto.hide = function hide(event) {\n var _this2 = this;\n if (event) {\n event.preventDefault();\n }\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$2);\n $__default[\"default\"](this._element).trigger(hideEvent);\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n this._isShown = false;\n var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n if (transition) {\n this._isTransitioning = true;\n }\n this._setEscapeEvent();\n this._setResizeEvent();\n $__default[\"default\"](document).off(EVENT_FOCUSIN);\n $__default[\"default\"](this._element).removeClass(CLASS_NAME_SHOW$4);\n $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS$1);\n $__default[\"default\"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $__default[\"default\"](htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN);\n $__default[\"default\"].removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends$1({}, Default$4, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$4);\n return config;\n };\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n var hideEventPrevented = $__default[\"default\"].Event(EVENT_HIDE_PREVENTED);\n $__default[\"default\"](this._element).trigger(hideEventPrevented);\n if (hideEventPrevented.isDefaultPrevented()) {\n return;\n }\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default[\"default\"](this._element).off(Util.TRANSITION_END);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n if (!isModalOverflowing) {\n $__default[\"default\"](_this3._element).one(Util.TRANSITION_END, function () {\n _this3._element.style.overflowY = '';\n }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n }\n }).emulateTransitionEnd(modalTransitionDuration);\n this._element.focus();\n };\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n if ($__default[\"default\"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n if (transition) {\n Util.reflow(this._element);\n }\n $__default[\"default\"](this._element).addClass(CLASS_NAME_SHOW$4);\n if (this._config.focus) {\n this._enforceFocus();\n }\n var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$2, {\n relatedTarget: relatedTarget\n });\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n _this4._isTransitioning = false;\n $__default[\"default\"](_this4._element).trigger(shownEvent);\n };\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default[\"default\"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n $__default[\"default\"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $__default[\"default\"](_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n if (this._isShown) {\n $__default[\"default\"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault();\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $__default[\"default\"](this._element).off(EVENT_KEYDOWN_DISMISS);\n }\n };\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n if (this._isShown) {\n $__default[\"default\"](window).on(EVENT_RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $__default[\"default\"](window).off(EVENT_RESIZE);\n }\n };\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._showBackdrop(function () {\n $__default[\"default\"](document.body).removeClass(CLASS_NAME_OPEN);\n _this8._resetAdjustments();\n _this8._resetScrollbar();\n $__default[\"default\"](_this8._element).trigger(EVENT_HIDDEN$2);\n });\n };\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $__default[\"default\"](this._backdrop).remove();\n this._backdrop = null;\n }\n };\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n var animate = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : '';\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = CLASS_NAME_BACKDROP;\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n $__default[\"default\"](this._backdrop).appendTo(document.body);\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n if (event.target !== event.currentTarget) {\n return;\n }\n if (_this9._config.backdrop === 'static') {\n _this9._triggerBackdropTransition();\n } else {\n _this9.hide();\n }\n });\n if (animate) {\n Util.reflow(this._backdrop);\n }\n $__default[\"default\"](this._backdrop).addClass(CLASS_NAME_SHOW$4);\n if (!callback) {\n return;\n }\n if (!animate) {\n callback();\n return;\n }\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $__default[\"default\"](this._backdrop).removeClass(CLASS_NAME_SHOW$4);\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n if (callback) {\n callback();\n }\n };\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n $__default[\"default\"](fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $__default[\"default\"](element).css('padding-right');\n $__default[\"default\"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $__default[\"default\"](stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $__default[\"default\"](element).css('margin-right');\n $__default[\"default\"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $__default[\"default\"](document.body).css('padding-right');\n $__default[\"default\"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n $__default[\"default\"](document.body).addClass(CLASS_NAME_OPEN);\n };\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n $__default[\"default\"](fixedContent).each(function (index, element) {\n var padding = $__default[\"default\"](element).data('padding-right');\n $__default[\"default\"](element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n $__default[\"default\"](elements).each(function (index, element) {\n var margin = $__default[\"default\"](element).data('margin-right');\n if (typeof margin !== 'undefined') {\n $__default[\"default\"](element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $__default[\"default\"](document.body).data('padding-right');\n $__default[\"default\"](document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$5);\n var _config = _extends$1({}, Default$4, $__default[\"default\"](this).data(), typeof config === 'object' && config ? config : {});\n if (!data) {\n data = new Modal(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$5, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }]);\n return Modal;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n var _this11 = this;\n var target;\n var selector = Util.getSelectorFromElement(this);\n if (selector) {\n target = document.querySelector(selector);\n }\n var config = $__default[\"default\"](target).data(DATA_KEY$5) ? 'toggle' : _extends$1({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n var $target = $__default[\"default\"](target).one(EVENT_SHOW$2, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n $target.one(EVENT_HIDDEN$2, function () {\n if ($__default[\"default\"](_this11).is(':visible')) {\n _this11.focus();\n }\n });\n });\n Modal._jQueryInterface.call($__default[\"default\"](target), config, this);\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$5] = Modal._jQueryInterface;\n $__default[\"default\"].fn[NAME$5].Constructor = Modal;\n $__default[\"default\"].fn[NAME$5].noConflict = function () {\n $__default[\"default\"].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));\n }\n return true;\n }\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true;\n }\n }\n return false;\n }\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread\n\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n if (_ret === \"continue\") continue;\n }\n return createdDocument.body.innerHTML;\n }\n\n /**\n * Constants\n */\n\n var NAME$4 = 'tooltip';\n var VERSION$4 = '4.6.2';\n var DATA_KEY$4 = 'bs.tooltip';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var JQUERY_NO_CONFLICT$4 = $__default[\"default\"].fn[NAME$4];\n var CLASS_PREFIX$1 = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var CLASS_NAME_FADE$3 = 'fade';\n var CLASS_NAME_SHOW$3 = 'show';\n var HOVER_STATE_SHOW = 'show';\n var HOVER_STATE_OUT = 'out';\n var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n var SELECTOR_ARROW = '.arrow';\n var TRIGGER_HOVER = 'hover';\n var TRIGGER_FOCUS = 'focus';\n var TRIGGER_CLICK = 'click';\n var TRIGGER_MANUAL = 'manual';\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$3 = {\n animation: true,\n template: '
' + '
' + '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var DefaultType$3 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n };\n var Event$1 = {\n HIDE: \"hide\" + EVENT_KEY$4,\n HIDDEN: \"hidden\" + EVENT_KEY$4,\n SHOW: \"show\" + EVENT_KEY$4,\n SHOWN: \"shown\" + EVENT_KEY$4,\n INSERTED: \"inserted\" + EVENT_KEY$4,\n CLICK: \"click\" + EVENT_KEY$4,\n FOCUSIN: \"focusin\" + EVENT_KEY$4,\n FOCUSOUT: \"focusout\" + EVENT_KEY$4,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$4,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$4\n };\n /**\n * Class definition\n */\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n if (typeof Popper$1 === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n } // Private\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n this._setListeners();\n } // Getters\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $__default[\"default\"](event.currentTarget).data(dataKey);\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n context._activeTrigger.click = !context._activeTrigger.click;\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($__default[\"default\"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) {\n this._leave(null, this);\n return;\n }\n this._enter(null, this);\n }\n };\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $__default[\"default\"].removeData(this.element, this.constructor.DATA_KEY);\n $__default[\"default\"](this.element).off(this.constructor.EVENT_KEY);\n $__default[\"default\"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n if (this.tip) {\n $__default[\"default\"](this.tip).remove();\n }\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n if (this._popper) {\n this._popper.destroy();\n }\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n _proto.show = function show() {\n var _this = this;\n if ($__default[\"default\"](this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n var showEvent = $__default[\"default\"].Event(this.constructor.Event.SHOW);\n if (this.isWithContent() && this._isEnabled) {\n $__default[\"default\"](this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $__default[\"default\"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n if (this.config.animation) {\n $__default[\"default\"](tip).addClass(CLASS_NAME_FADE$3);\n }\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n var attachment = this._getAttachment(placement);\n this.addAttachmentClass(attachment);\n var container = this._getContainer();\n $__default[\"default\"](tip).data(this.constructor.DATA_KEY, this);\n if (!$__default[\"default\"].contains(this.element.ownerDocument.documentElement, this.tip)) {\n $__default[\"default\"](tip).appendTo(container);\n }\n $__default[\"default\"](this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper$1(this.element, tip, this._getPopperConfig(attachment));\n $__default[\"default\"](tip).addClass(CLASS_NAME_SHOW$3);\n $__default[\"default\"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n }\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $__default[\"default\"](_this.element).trigger(_this.constructor.Event.SHOWN);\n if (prevHoverState === HOVER_STATE_OUT) {\n _this._leave(null, _this);\n }\n };\n if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $__default[\"default\"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n _proto.hide = function hide(callback) {\n var _this2 = this;\n var tip = this.getTipElement();\n var hideEvent = $__default[\"default\"].Event(this.constructor.Event.HIDE);\n var complete = function complete() {\n if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n _this2._cleanTipClass();\n _this2.element.removeAttribute('aria-describedby');\n $__default[\"default\"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n if (callback) {\n callback();\n }\n };\n $__default[\"default\"](this.element).trigger(hideEvent);\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n $__default[\"default\"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $__default[\"default\"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n this._hoverState = '';\n };\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n return this.tip;\n };\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($__default[\"default\"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$3);\n };\n _proto.setElementContent = function setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$__default[\"default\"](content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($__default[\"default\"](content).text());\n }\n return;\n }\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n return title;\n } // Private\n ;\n\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _extends$1({}, defaultBsConfig, this.config.popperConfig);\n };\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n var offset = {};\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends$1({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n return offset;\n };\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n if (Util.isElement(this.config.container)) {\n return $__default[\"default\"](this.config.container);\n }\n return $__default[\"default\"](document).find(this.config.container);\n };\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $__default[\"default\"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $__default[\"default\"](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n $__default[\"default\"](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n if (this.config.selector) {\n this.config = _extends$1({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n _proto._fixTitle = function _fixTitle() {\n var titleType = typeof this.element.getAttribute('data-original-title');\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n if ($__default[\"default\"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n }\n if (context._isWithActiveTrigger()) {\n return;\n }\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n return false;\n };\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $__default[\"default\"](this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _extends$1({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n return config;\n };\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n return config;\n };\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default[\"default\"](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper;\n this._cleanTipClass();\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$4);\n var _config = typeof config === 'object' && config;\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n if (!data) {\n data = new Tooltip(this, _config);\n $element.data(DATA_KEY$4, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$4;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$4;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$1;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$4;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$3;\n }\n }]);\n return Tooltip;\n }();\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$4] = Tooltip._jQueryInterface;\n $__default[\"default\"].fn[NAME$4].Constructor = Tooltip;\n $__default[\"default\"].fn[NAME$4].noConflict = function () {\n $__default[\"default\"].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$3 = 'popover';\n var VERSION$3 = '4.6.2';\n var DATA_KEY$3 = 'bs.popover';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var JQUERY_NO_CONFLICT$3 = $__default[\"default\"].fn[NAME$3];\n var CLASS_PREFIX = 'bs-popover';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var CLASS_NAME_FADE$2 = 'fade';\n var CLASS_NAME_SHOW$2 = 'show';\n var SELECTOR_TITLE = '.popover-header';\n var SELECTOR_CONTENT = '.popover-body';\n var Default$2 = _extends$1({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '
' + '
' + '

' + '
'\n });\n var DefaultType$2 = _extends$1({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n var Event = {\n HIDE: \"hide\" + EVENT_KEY$3,\n HIDDEN: \"hidden\" + EVENT_KEY$3,\n SHOW: \"show\" + EVENT_KEY$3,\n SHOWN: \"shown\" + EVENT_KEY$3,\n INSERTED: \"inserted\" + EVENT_KEY$3,\n CLICK: \"click\" + EVENT_KEY$3,\n FOCUSIN: \"focusin\" + EVENT_KEY$3,\n FOCUSOUT: \"focusout\" + EVENT_KEY$3,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$3,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$3\n };\n /**\n * Class definition\n */\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n return this.tip;\n };\n _proto.setContent = function setContent() {\n var $tip = $__default[\"default\"](this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n var content = this._getContent();\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n $tip.removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$2);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default[\"default\"](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$3);\n var _config = typeof config === 'object' ? config : null;\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n if (!data) {\n data = new Popover(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$3, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n _createClass(Popover, null, [{\n key: \"VERSION\",\n get:\n // Getters\n function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$3;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$3;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$3;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n return Popover;\n }(Tooltip);\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$3] = Popover._jQueryInterface;\n $__default[\"default\"].fn[NAME$3].Constructor = Popover;\n $__default[\"default\"].fn[NAME$3].noConflict = function () {\n $__default[\"default\"].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Popover._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$2 = 'scrollspy';\n var VERSION$2 = '4.6.2';\n var DATA_KEY$2 = 'bs.scrollspy';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $__default[\"default\"].fn[NAME$2];\n var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n var CLASS_NAME_ACTIVE$1 = 'active';\n var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$2;\n var EVENT_SCROLL = \"scroll\" + EVENT_KEY$2;\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$2 + DATA_API_KEY$1;\n var METHOD_OFFSET = 'offset';\n var METHOD_POSITION = 'position';\n var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n var SELECTOR_NAV_LINKS = '.nav-link';\n var SELECTOR_NAV_ITEMS = '.nav-item';\n var SELECTOR_LIST_ITEMS = '.list-group-item';\n var SELECTOR_DROPDOWN$1 = '.dropdown';\n var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n var Default$1 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$1 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n /**\n * Class definition\n */\n\n var ScrollSpy = /*#__PURE__*/function () {\n function ScrollSpy(element, config) {\n var _this = this;\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $__default[\"default\"](this._scrollElement).on(EVENT_SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n this._process();\n } // Getters\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$__default[\"default\"](target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n return null;\n }).filter(Boolean).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n _this2._targets.push(item[1]);\n });\n };\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$2);\n $__default[\"default\"](this._scrollElement).off(EVENT_KEY$2);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends$1({}, Default$1, typeof config === 'object' && config ? config : {});\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n var id = $__default[\"default\"](config.target).attr('id');\n if (!id) {\n id = Util.getUID(NAME$2);\n $__default[\"default\"](config.target).attr('id', id);\n }\n config.target = \"#\" + id;\n }\n Util.typeCheckConfig(NAME$2, config, DefaultType$1);\n return config;\n };\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n var scrollHeight = this._getScrollHeight();\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n return;\n }\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n this._clear();\n return;\n }\n for (var i = this._offsets.length; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n this._clear();\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n var $link = $__default[\"default\"]([].slice.call(document.querySelectorAll(queries.join(','))));\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1);\n $link.addClass(CLASS_NAME_ACTIVE$1);\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active\n // With both