{"version":3,"sources":["webpack:///./node_modules/unipointer/unipointer.js","webpack:///./node_modules/unidragger/unidragger.js","webpack:///./source/components/flickity/index.js","webpack:///./node_modules/flickity/js/animate.js","webpack:///./node_modules/flickity/js/page-dots.js","webpack:///./node_modules/ev-emitter/ev-emitter.js","webpack:///./node_modules/flickity/js/flickity.js","webpack:///./node_modules/flickity/js/index.js","webpack:///./node_modules/get-size/get-size.js","webpack:///./node_modules/flickity/js/drag.js","webpack:///./node_modules/fizzy-ui-utils/utils.js","webpack:///./node_modules/flickity/js/slide.js","webpack:///./node_modules/flickity/js/lazyload.js","webpack:///./node_modules/flickity/js/player.js","webpack:///./node_modules/flickity/js/add-remove-cell.js","webpack:///./node_modules/desandro-matches-selector/matches-selector.js","webpack:///./node_modules/flickity/js/cell.js","webpack:///./node_modules/flickity/js/prev-next-button.js"],"names":["__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","window","factory","__webpack_require__","EvEmitter","apply","exports","undefined","module","noop","Unipointer","proto","prototype","Object","create","bindStartEvent","elem","this","_bindStartEvent","unbindStartEvent","isAdd","bindMethod","startEvent","PointerEvent","handleEvent","event","method","type","getTouch","touches","i","length","touch","identifier","pointerIdentifier","onmousedown","button","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointer","isPointerDown","pointerId","pointerDown","_bindPostStartEvents","emitEvent","postStartEvents","mousedown","touchstart","pointerdown","events","forEach","eventName","addEventListener","_boundPointerEvents","_unbindPostStartEvents","removeEventListener","onmousemove","_pointerMove","onpointermove","ontouchmove","pointerMove","onmouseup","_pointerUp","onpointerup","ontouchend","_pointerDone","pointerUp","_pointerReset","pointerDone","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","getPointerPoint","x","pageX","y","pageY","Unidragger","bindHandles","_bindHandles","unbindHandles","touchAction","_touchActionValue","handles","handle","style","isOkay","okayPointerDown","pointerDownPointer","preventDefault","pointerDownBlur","cursorNodes","TEXTAREA","INPUT","SELECT","OPTION","clickTypes","radio","checkbox","submit","image","file","isCursorNode","target","nodeName","isClickType","focused","document","activeElement","canBlur","blur","body","moveVector","_dragPointerMove","_dragMove","isDragging","hasDragStarted","_dragStart","Math","abs","_dragPointerUp","_dragEnd","_staticClick","isPreventingClicks","dragStart","dragMove","setTimeout","bind","dragEnd","onclick","isIgnoringMouseUp","staticClick","d","__webpack_exports__","makeCarousel","wee_dom__WEBPACK_IMPORTED_MODULE_0__","flickity__WEBPACK_IMPORTED_MODULE_1__","flickity__WEBPACK_IMPORTED_MODULE_1___default","n","element","modifierClass","arguments","dataRef","slider","Flickity","wrapAround","pageDots","cellAlign","on","ready","$","addClass","attr","utils","startAnimation","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","_this","requestAnimationFrame","options","cells","modulo","slideableWidth","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","cursorPosition","rightToLeft","translateX","getPositionValue","transform","firstSlide","slides","positionX","progress","slidesWidth","dispatchEvent","positionSliderAtSelected","selectedSlide","velocity","position","percentPosition","round","size","innerWidth","isResting","isFreeScrolling","selectedIndex","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","shift","cell","cellShift","wrapShift","outerWidth","_unshiftCells","getFrictionFactor","applyForce","force","getRestingPosition","isDraggable","dragVelocity","dragX","dragForce","dragDown","distance","selectedAttraction","PageDots","parent","_create","holder","createElement","className","dots","handleClick","onClick","childUIPointerDown","activate","setDots","appendChild","deactivate","removeChild","delta","addDots","removeDots","count","fragment","createDocumentFragment","newDots","max","dot","setAttribute","push","concat","splice","updateSelected","selectedDot","removeAttribute","onTap","uiChange","index","indexOf","select","destroy","allOff","extend","defaults","createMethods","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","__WEBPACK_AMD_DEFINE_FACTORY__","global","call","listener","_events","listeners","once","onceEvents","_onceEvents","onceListeners","off","args","slice","isOnce","getSize","Cell","Slide","animatePrototype","jQuery","getComputedStyle","console","moveElements","elems","toElem","makeArray","GUID","instances","queryElement","getQueryElement","flickityGUID","instance","option","$element","constructor","error","accessibility","freeScrollFriction","friction","namespaceJQueryEvents","resize","setGallerySize","id","guid","originSide","viewport","_createSlider","watchCSS","opts","isActive","classList","add","cellElems","_filterFindCellElements","children","reloadCells","tabIndex","selectInitialIndex","isInitActivated","filterFindElements","cellSelector","_makeCells","positionCells","_getWrapShiftCells","map","cellElem","getLastCell","getLastSlide","_sizeCells","_positionCells","maxCellHeight","cellX","startCell","len","setPosition","outerHeight","updateSlides","_containSlides","slide","isOriginLeft","nextMargin","canCellFit","_getCanCellFit","slideWidth","firstMargin","addCell","updateTarget","updateSelectedSlide","groupCells","number","parseInt","percentMatch","match","percent","_init","reposition","setCellAlign","cellAlignShorthands","center","left","right","shorthand","height","adaptiveHeight","gapX","cellIndex","_getGapCells","increment","contain","isRightToLeft","beginMargin","endMargin","contentWidth","isContentSmaller","beginBound","endBound","min","emitArgs","$event","jQEvent","Event","trigger","isWrap","isInstant","_wrapSelect","prevIndex","isWrapping","wrapIndex","backWrapDelta","forewardWrapDelta","isDragSelect","previous","next","unselectSelectedSlide","selectedCells","selectedElements","getCellElements","selectedCell","selectedElement","unselect","initialIndex","queryCell","selectCell","value","getCellSlideIndex","getCell","getCells","getParentCell","getParent","getAdjacentCellElements","adjCount","slideIndex","selector","querySelector","focus","onresize","debounceMethod","watchOption","afterContent","content","onkeydown","isNotFocused","handler","keyboardHandlers","keyCode","37","leftMethod","39","rightMethod","prevScrollY","pageYOffset","preventScroll","scrollTo","pageXOffset","remove","removeData","data","htmlInit","bridget","setJQuery","jq","getStyleSize","num","parseFloat","isValid","isNaN","logError","message","measurements","measurementsLength","getZeroSize","width","innerHeight","measurement","getStyle","isBoxSizeOuter","isSetup","setup","div","padding","borderStyle","borderWidth","boxSizing","documentElement","nodeType","display","offsetWidth","offsetHeight","isBorderBox","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","draggable","dragThreshold","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","bindDrag","unbindDrag","_pointerDownPreventDefault","pointerDownFocus","pointerDownScroll","getScrollPosition","_pointerDownDefault","focusNodes","isFocusNode","isTouchStart","isTouchPointer","pointerType","isTouchScrolling","dragStartPosition","previousDragX","direction","originBound","dragMoveTime","Date","freeScroll","dragEndRestingSelect","restingX","dragEndBoostSelect","getSlideDistance","positiveResting","_getClosestResting","negativeResting","minDistance","Infinity","condition","dist","minDist","isWrapAround","wrap","floor","clickedCell","onscroll","scroll","scrollMoveX","scrollMoveY","matchesSelector","a","b","prop","arraySlice","Array","obj","isArray","isArrayLike","removeFrom","ary","parentNode","ffElems","HTMLElement","childElems","querySelectorAll","_class","methodName","threshold","timeoutName","timeout","clearTimeout","docReady","callback","readyState","toDashed","str","replace","$1","$2","toLowerCase","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","dataOptionsAttr","getAttribute","JSON","parse","lastCell","lastMargin","getCellLazyImages","lazyloadAttr","srcAttr","srcsetAttr","lazySelector","imgs","LazyLoader","img","flickity","load","_createLazyload","lazyLoad","lazyImages","lazyCellImages","src","srcset","onload","complete","onerror","cellSizeChange","Player","state","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","isPageHidden","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","changedCellIndex","isPositioningSlider","prevSelectedElem","matchesMethod","ElemProto","Element","matches","prefixes","prefix","side","renderPosition","setDefaultTarget","marginProperty","sideOffset","adjustedX","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"],"mappings":"sFAAA,IAAAA,EAAAC,GAQA,SAAAC,EAAAC,GAKIH,GACEI,EAAA,SACDH,EAAA,SAAEI,GACP,OAAAF,EAAAD,EAAAG,IACKC,MAAAC,EAAAP,QAAAQ,IAAAP,IAAAQ,EAAAF,QAAAN,IATL,CAwBCC,OAAA,SAAAA,EAAAG,GAED,aAEA,SAAAK,KAEA,SAAAC,KAGA,IAAAC,EAAAD,EAAAE,UAAAC,OAAAC,OAAAV,EAAAQ,WAEAD,EAAAI,eAAA,SAAAC,GACAC,KAAAC,gBAAAF,GAAA,IAGAL,EAAAQ,iBAAA,SAAAH,GACAC,KAAAC,gBAAAF,GAAA,IAOAL,EAAAO,gBAAA,SAAAF,EAAAI,GAEAA,OAAAb,IAAAa,KACA,IAAAC,EAAAD,EAAA,yCAGAE,EAAA,YACA,iBAAArB,EAGAqB,EAAA,aACGrB,EAAAsB,eAEHD,EAAA,eAEAN,EAAAK,GAAAC,EAAAL,OAIAN,EAAAa,YAAA,SAAAC,GACA,IAAAC,EAAA,KAAAD,EAAAE,KACAV,KAAAS,IACAT,KAAAS,GAAAD,IAKAd,EAAAiB,SAAA,SAAAC,GACA,QAAAC,EAAA,EAAgBA,EAAAD,EAAAE,OAAoBD,IAAA,CACpC,IAAAE,EAAAH,EAAAC,GACA,GAAAE,EAAAC,YAAAhB,KAAAiB,kBACA,OAAAF,IAOArB,EAAAwB,YAAA,SAAAV,GAEA,IAAAW,EAAAX,EAAAW,OACAA,GAAA,IAAAA,GAAA,IAAAA,GAGAnB,KAAAoB,aAAAZ,MAGAd,EAAA2B,aAAA,SAAAb,GACAR,KAAAoB,aAAAZ,IAAAc,eAAA,KAGA5B,EAAA6B,cAAA,SAAAf,GACAR,KAAAoB,aAAAZ,MAQAd,EAAA0B,aAAA,SAAAZ,EAAAgB,GAGAhB,EAAAW,QAAAnB,KAAAyB,gBAIAzB,KAAAyB,eAAA,EAEAzB,KAAAiB,uBAAA3B,IAAAkC,EAAAE,UAEAF,EAAAE,UAAAF,EAAAR,WAEAhB,KAAA2B,YAAAnB,EAAAgB,KAGA9B,EAAAiC,YAAA,SAAAnB,EAAAgB,GACAxB,KAAA4B,qBAAApB,GACAR,KAAA6B,UAAA,eAAArB,EAAAgB,KAIA,IAAAM,GACAC,WAAA,uBACAC,YAAA,sCACAC,aAAA,4CA+JA,OA5JAvC,EAAAkC,qBAAA,SAAApB,GACA,GAAAA,EAAA,CAIA,IAAA0B,EAAAJ,EAAAtB,EAAAE,MAEAwB,EAAAC,QAAA,SAAAC,GACApD,EAAAqD,iBAAAD,EAAApC,OACGA,MAEHA,KAAAsC,oBAAAJ,IAGAxC,EAAA6C,uBAAA,WAEAvC,KAAAsC,sBAGAtC,KAAAsC,oBAAAH,QAAA,SAAAC,GACApD,EAAAwD,oBAAAJ,EAAApC,OACGA,aAEHA,KAAAsC,sBAKA5C,EAAA+C,YAAA,SAAAjC,GACAR,KAAA0C,aAAAlC,MAGAd,EAAAiD,cAAA,SAAAnC,GACAA,EAAAkB,WAAA1B,KAAAiB,mBACAjB,KAAA0C,aAAAlC,MAIAd,EAAAkD,YAAA,SAAApC,GACA,IAAAO,EAAAf,KAAAW,SAAAH,EAAAc,gBACAP,GACAf,KAAA0C,aAAAlC,EAAAO,IAUArB,EAAAgD,aAAA,SAAAlC,EAAAgB,GACAxB,KAAA6C,YAAArC,EAAAgB,IAIA9B,EAAAmD,YAAA,SAAArC,EAAAgB,GACAxB,KAAA6B,UAAA,eAAArB,EAAAgB,KAMA9B,EAAAoD,UAAA,SAAAtC,GACAR,KAAA+C,WAAAvC,MAGAd,EAAAsD,YAAA,SAAAxC,GACAA,EAAAkB,WAAA1B,KAAAiB,mBACAjB,KAAA+C,WAAAvC,MAIAd,EAAAuD,WAAA,SAAAzC,GACA,IAAAO,EAAAf,KAAAW,SAAAH,EAAAc,gBACAP,GACAf,KAAA+C,WAAAvC,EAAAO,IAUArB,EAAAqD,WAAA,SAAAvC,EAAAgB,GACAxB,KAAAkD,eACAlD,KAAAmD,UAAA3C,EAAAgB,IAIA9B,EAAAyD,UAAA,SAAA3C,EAAAgB,GACAxB,KAAA6B,UAAA,aAAArB,EAAAgB,KAMA9B,EAAAwD,aAAA,WACAlD,KAAAoD,gBACApD,KAAAuC,yBACAvC,KAAAqD,eAGA3D,EAAA0D,cAAA,WAEApD,KAAAyB,eAAA,SACAzB,KAAAiB,mBAGAvB,EAAA2D,YAAA7D,EAIAE,EAAA4D,gBAAA,SAAA9C,GACAA,EAAAkB,WAAA1B,KAAAiB,mBACAjB,KAAAuD,eAAA/C,MAIAd,EAAA8D,cAAA,SAAAhD,GACA,IAAAO,EAAAf,KAAAW,SAAAH,EAAAc,gBACAP,GACAf,KAAAuD,eAAA/C,EAAAO,IAUArB,EAAA6D,eAAA,SAAA/C,EAAAgB,GACAxB,KAAAkD,eACAlD,KAAAyD,cAAAjD,EAAAgB,IAIA9B,EAAA+D,cAAA,SAAAjD,EAAAgB,GACAxB,KAAA6B,UAAA,iBAAArB,EAAAgB,KAMA/B,EAAAiE,gBAAA,SAAAlC,GACA,OACAmC,EAAAnC,EAAAoC,MACAC,EAAArC,EAAAsC,QAMArE,4BC3SA,IAAAX,EAAAC,GAQA,SAAAC,EAAAC,GAMIH,GACEI,EAAA,SACDH,EAAA,SAAEU,GACP,OAAAR,EAAAD,EAAAS,IACKL,MAAAC,EAAAP,QAAAQ,IAAAP,IAAAQ,EAAAF,QAAAN,IAVL,CAyBCC,OAAA,SAAAA,EAAAS,GAED,aAIA,SAAAsE,KAGA,IAAArE,EAAAqE,EAAApE,UAAAC,OAAAC,OAAAJ,EAAAE,WAIAD,EAAAsE,YAAA,WACAhE,KAAAiE,cAAA,IAGAvE,EAAAwE,cAAA,WACAlE,KAAAiE,cAAA,IAOAvE,EAAAuE,aAAA,SAAA9D,GAEAA,OAAAb,IAAAa,KAIA,IAFA,IAAAC,EAAAD,EAAA,yCACAgE,EAAAhE,EAAAH,KAAAoE,kBAAA,GACAvD,EAAA,EAAgBA,EAAAb,KAAAqE,QAAAvD,OAAyBD,IAAA,CACzC,IAAAyD,EAAAtE,KAAAqE,QAAAxD,GACAb,KAAAC,gBAAAqE,EAAAnE,GACAmE,EAAAlE,GAAA,QAAAJ,MAEAhB,EAAAsB,eACAgE,EAAAC,MAAAJ,iBAMAzE,EAAA0E,kBAAA,OASA1E,EAAAiC,YAAA,SAAAnB,EAAAgB,GACA,IAAAgD,EAAAxE,KAAAyE,gBAAAjE,GACAgE,IAKAxE,KAAA0E,oBACAd,MAAApC,EAAAoC,MACAE,MAAAtC,EAAAsC,OAGAtD,EAAAmE,iBACA3E,KAAA4E,kBAEA5E,KAAA4B,qBAAApB,GACAR,KAAA6B,UAAA,eAAArB,EAAAgB,MAIA,IAAAqD,GACAC,UAAA,EACAC,OAAA,EACAC,QAAA,EACAC,QAAA,GAIAC,GACAC,OAAA,EACAC,UAAA,EACAjE,QAAA,EACAkE,QAAA,EACAC,OAAA,EACAC,MAAA,GAiKA,OA7JA7F,EAAA+E,gBAAA,SAAAjE,GACA,IAAAgF,EAAAX,EAAArE,EAAAiF,OAAAC,UACAC,EAAAT,EAAA1E,EAAAiF,OAAA/E,MACA8D,GAAAgB,GAAAG,EAIA,OAHAnB,GACAxE,KAAAoD,gBAEAoB,GAIA9E,EAAAkF,gBAAA,WACA,IAAAgB,EAAAC,SAAAC,cAEAC,EAAAH,KAAAI,MAAAJ,GAAAC,SAAAI,KACAF,GACAH,EAAAI,QAWAtG,EAAAmD,YAAA,SAAArC,EAAAgB,GACA,IAAA0E,EAAAlG,KAAAmG,iBAAA3F,EAAAgB,GACAxB,KAAA6B,UAAA,eAAArB,EAAAgB,EAAA0E,IACAlG,KAAAoG,UAAA5F,EAAAgB,EAAA0E,IAIAxG,EAAAyG,iBAAA,SAAA3F,EAAAgB,GACA,IAAA0E,GACAvC,EAAAnC,EAAAoC,MAAA5D,KAAA0E,mBAAAd,MACAC,EAAArC,EAAAsC,MAAA9D,KAAA0E,mBAAAZ,OAMA,OAHA9D,KAAAqG,YAAArG,KAAAsG,eAAAJ,IACAlG,KAAAuG,WAAA/F,EAAAgB,GAEA0E,GAIAxG,EAAA4G,eAAA,SAAAJ,GACA,OAAAM,KAAAC,IAAAP,EAAAvC,GAAA,GAAA6C,KAAAC,IAAAP,EAAArC,GAAA,GAUAnE,EAAAyD,UAAA,SAAA3C,EAAAgB,GACAxB,KAAA6B,UAAA,aAAArB,EAAAgB,IACAxB,KAAA0G,eAAAlG,EAAAgB,IAGA9B,EAAAgH,eAAA,SAAAlG,EAAAgB,GACAxB,KAAAqG,WACArG,KAAA2G,SAAAnG,EAAAgB,GAGAxB,KAAA4G,aAAApG,EAAAgB,IAOA9B,EAAA6G,WAAA,SAAA/F,EAAAgB,GACAxB,KAAAqG,YAAA,EAEArG,KAAA6G,oBAAA,EACA7G,KAAA8G,UAAAtG,EAAAgB,IAGA9B,EAAAoH,UAAA,SAAAtG,EAAAgB,GACAxB,KAAA6B,UAAA,aAAArB,EAAAgB,KAIA9B,EAAA0G,UAAA,SAAA5F,EAAAgB,EAAA0E,GAEAlG,KAAAqG,YAIArG,KAAA+G,SAAAvG,EAAAgB,EAAA0E,IAGAxG,EAAAqH,SAAA,SAAAvG,EAAAgB,EAAA0E,GACA1F,EAAAmE,iBACA3E,KAAA6B,UAAA,YAAArB,EAAAgB,EAAA0E,KAIAxG,EAAAiH,SAAA,SAAAnG,EAAAgB,GAEAxB,KAAAqG,YAAA,EAEAW,WAAA,kBACAhH,KAAA6G,oBACGI,KAAAjH,OAEHA,KAAAkH,QAAA1G,EAAAgB,IAGA9B,EAAAwH,QAAA,SAAA1G,EAAAgB,GACAxB,KAAA6B,UAAA,WAAArB,EAAAgB,KAMA9B,EAAAyH,QAAA,SAAA3G,GACAR,KAAA6G,oBACArG,EAAAmE,kBAOAjF,EAAAkH,aAAA,SAAApG,EAAAgB,GAEAxB,KAAAoH,mBAAA,WAAA5G,EAAAE,OAIAV,KAAAqH,YAAA7G,EAAAgB,GAGA,WAAAhB,EAAAE,OACAV,KAAAoH,mBAAA,EAEAJ,WAAA,kBACAhH,KAAAoH,mBACKH,KAAAjH,MAAA,QAILN,EAAA2H,YAAA,SAAA7G,EAAAgB,GACAxB,KAAA6B,UAAA,eAAArB,EAAAgB,KAKAuC,EAAAL,gBAAAjE,EAAAiE,gBAIAK,yCCxRA7E,EAAAoI,EAAAC,EAAA,sBAAAC,IAAA,IAAAC,EAAAvI,EAAA,QAAAwI,EAAAxI,EAAA,QAAAyI,EAAAzI,EAAA0I,EAAAF,GAGMF,EAAe,SAACK,GAAoD,IAA3CC,EAAaC,UAAAjH,OAAA,QAAAxB,IAAAyI,UAAA,IAAAA,UAAA,GAAUC,EAAOD,UAAAjH,OAAA,QAAAxB,IAAAyI,UAAA,IAAAA,UAAA,GACnDE,EAAS,IAAIC,IAASL,GACxBM,YAAY,EACZC,UAAU,EACVC,UAAW,OACXC,IACIC,MAAK,WACDC,eAAE,oBAAoBC,SAASX,GAAeY,KAAK,WAAYV,OAK3E,OAAOC,yBCfX,IAAAnJ,EAAAC,GACA,SAAAC,EAAAC,GAIIH,GACEI,EAAA,SACDH,EAAA,SAAE4J,GACP,OAAA1J,EAAAD,EAAA2J,IACKvJ,MAAAC,EAAAP,QAAAQ,IAAAP,IAAAQ,EAAAF,QAAAN,IARL,CAwBCC,OAAA,SAAAA,EAAA2J,GAED,aAIA,IAAAjJ,GAEAkJ,eAAA,WACA5I,KAAA6I,cAIA7I,KAAA6I,aAAA,EACA7I,KAAA8I,cAAA,EACA9I,KAAA+I,YAGAA,QAAA,WACA/I,KAAAgJ,iBACAhJ,KAAAiJ,0BAEA,IAAAC,EAAAlJ,KAAA2D,EAMA,GAJA3D,KAAAmJ,mBACAnJ,KAAAoJ,iBACApJ,KAAAqJ,OAAAH,GAEAlJ,KAAA6I,YAAA,CACA,IAAAS,EAAAtJ,KACAuJ,sBAAA,WACAD,EAAAP,cAKAK,eAAA,WACA,IAAAzF,EAAA3D,KAAA2D,EAEA3D,KAAAwJ,QAAArB,YAAAnI,KAAAyJ,MAAA3I,OAAA,IACA6C,EAAAgF,EAAAe,OAAA/F,EAAA3D,KAAA2J,gBACAhG,GAAA3D,KAAA2J,eACA3J,KAAA4J,eAAAjG,IAGA3D,KAAA6J,cAAAlG,EAAA3D,KAAA6I,aACA7I,KAAA8J,uBAGAD,cAAA,SAAAlG,EAAAoG,GACApG,GAAA3D,KAAAgK,eAEArG,EAAA3D,KAAAwJ,QAAAS,aAAAtG,IACA,IAAAuG,EAAAlK,KAAAmK,iBAAAxG,GAGA3D,KAAAiI,OAAA1D,MAAA6F,UAAAL,EACA,eAAAG,EAAA,sBAAAA,EAAA,KAGAJ,oBAAA,WACA,IAAAO,EAAArK,KAAAsK,OAAA,GACA,GAAAD,EAAA,CAGA,IAAAE,GAAAvK,KAAA2D,EAAA0G,EAAA5E,OACA+E,EAAAD,EAAAvK,KAAAyK,YACAzK,KAAA0K,cAAA,eAAAF,EAAAD,MAGAI,yBAAA,WACA3K,KAAAyJ,MAAA3I,SAGAd,KAAA2D,GAAA3D,KAAA4K,cAAAnF,OACAzF,KAAA6K,SAAA,EACA7K,KAAAoJ,mBAGAe,iBAAA,SAAAW,GACA,OAAA9K,KAAAwJ,QAAAuB,gBAEA,IAAAvE,KAAAwE,MAAAF,EAAA9K,KAAAiL,KAAAC,WAAA,SAGA1E,KAAAwE,MAAAF,GAAA,MAIAzB,OAAA,SAAAH,GAEA,IAAAiC,GAAAnL,KAAAyB,eACA+E,KAAAwE,MAAA,IAAAhL,KAAA2D,IAAA6C,KAAAwE,MAAA,IAAA9B,GACAiC,GACAnL,KAAA8I,gBAGA9I,KAAA8I,cAAA,IACA9I,KAAA6I,aAAA,SACA7I,KAAAoL,gBAEApL,KAAAoJ,iBACApJ,KAAA0K,cAAA,eAAA1K,KAAAqL,kBAIAzB,eAAA,SAAAjG,GAEA,IAAA2H,EAAAtL,KAAAgK,eAAArG,EACA3D,KAAAuL,YAAAvL,KAAAwL,iBAAAF,GAAA,GAEA,IAAAG,EAAAzL,KAAAiL,KAAAC,YAAAvH,EAAA3D,KAAA2J,eAAA3J,KAAAgK,gBACAhK,KAAAuL,YAAAvL,KAAA0L,gBAAAD,EAAA,IAGAF,YAAA,SAAA9B,EAAAkC,EAAAC,GACA,QAAA/K,EAAA,EAAkBA,EAAA4I,EAAA3I,OAAkBD,IAAA,CACpC,IAAAgL,EAAApC,EAAA5I,GACAiL,EAAAH,EAAA,EAAAC,EAAA,EACAC,EAAAE,UAAAD,GACAH,GAAAE,EAAAZ,KAAAe,aAIAC,cAAA,SAAAxC,GACA,GAAAA,KAAA3I,OAGA,QAAAD,EAAA,EAAkBA,EAAA4I,EAAA3I,OAAkBD,IACpC4I,EAAA5I,GAAAkL,UAAA,IAMA5C,iBAAA,WACAnJ,KAAA2D,GAAA3D,KAAA6K,SACA7K,KAAA6K,UAAA7K,KAAAkM,qBAGAC,WAAA,SAAAC,GACApM,KAAA6K,UAAAuB,GAGAF,kBAAA,WACA,SAAAlM,KAAAwJ,QAAAxJ,KAAAoL,gBAAA,kCAGAiB,mBAAA,WAEA,OAAArM,KAAA2D,EAAA3D,KAAA6K,UAAA,EAAA7K,KAAAkM,sBAGAlD,eAAA,WACA,GAAAhJ,KAAAsM,aAAAtM,KAAAyB,cAAA,CAIA,IAAA8K,EAAAvM,KAAAwM,MAAAxM,KAAA2D,EACA8I,EAAAF,EAAAvM,KAAA6K,SACA7K,KAAAmM,WAAAM,KAGAxD,wBAAA,WAEA,IAAAyD,EAAA1M,KAAAsM,aAAAtM,KAAAyB,cACA,IAAAiL,IAAA1M,KAAAoL,iBAAApL,KAAAsK,OAAAxJ,OAAA,CAGA,IAAA6L,GAAA,EAAA3M,KAAA4K,cAAAnF,OAAAzF,KAAA2D,EACAyI,EAAAO,EAAA3M,KAAAwJ,QAAAoD,mBACA5M,KAAAmM,WAAAC,MAGA,OAAA1M,0BCvMA,IAAAZ,EAAAC,GACA,SAAAC,EAAAC,GAIIH,GACEI,EAAA,QACAA,EAAA,QACAA,EAAA,SACDH,EAAA,SAAEmJ,EAAAzI,EAAAkJ,GACP,OAAA1J,EAAAD,EAAAkJ,EAAAzI,EAAAkJ,IACKvJ,MAAAC,EAAAP,QAAAQ,IAAAP,IAAAQ,EAAAF,QAAAN,IAVL,CA6BCC,OAAA,SAAAA,EAAAkJ,EAAAzI,EAAAkJ,GAID,aAEA,SAAAkE,EAAAC,GACA9M,KAAA8M,SACA9M,KAAA+M,UAGAF,EAAAlN,UAAAC,OAAAC,OAAAJ,EAAAE,WAEAkN,EAAAlN,UAAAoN,QAAA,WAEA/M,KAAAgN,OAAAnH,SAAAoH,cAAA,MACAjN,KAAAgN,OAAAE,UAAA,qBAEAlN,KAAAmN,QAEAnN,KAAAoN,YAAApN,KAAAqN,QAAApG,KAAAjH,MACAA,KAAAsI,GAAA,cAAAtI,KAAA8M,OAAAQ,mBAAArG,KAAAjH,KAAA8M,UAGAD,EAAAlN,UAAA4N,SAAA,WACAvN,KAAAwN,UACAxN,KAAAgN,OAAA3K,iBAAA,QAAArC,KAAAoN,aACApN,KAAAF,eAAAE,KAAAgN,QAEAhN,KAAA8M,OAAAjF,QAAA4F,YAAAzN,KAAAgN,SAGAH,EAAAlN,UAAA+N,WAAA,WACA1N,KAAAgN,OAAAxK,oBAAA,QAAAxC,KAAAoN,aACApN,KAAAE,iBAAAF,KAAAgN,QAEAhN,KAAA8M,OAAAjF,QAAA8F,YAAA3N,KAAAgN,SAGAH,EAAAlN,UAAA6N,QAAA,WAEA,IAAAI,EAAA5N,KAAA8M,OAAAxC,OAAAxJ,OAAAd,KAAAmN,KAAArM,OACA8M,EAAA,EACA5N,KAAA6N,QAAAD,GACGA,EAAA,GACH5N,KAAA8N,YAAAF,IAIAf,EAAAlN,UAAAkO,QAAA,SAAAE,GAMA,IALA,IAAAC,EAAAnI,SAAAoI,yBACAC,KACApN,EAAAd,KAAAmN,KAAArM,OACAqN,EAAArN,EAAAiN,EAEAlN,EAAAC,EAAuBD,EAAAsN,EAAStN,IAAA,CAChC,IAAAuN,EAAAvI,SAAAoH,cAAA,MACAmB,EAAAlB,UAAA,MACAkB,EAAAC,aAAA,0BAAAxN,EAAA,IACAmN,EAAAP,YAAAW,GACAF,EAAAI,KAAAF,GAGApO,KAAAgN,OAAAS,YAAAO,GACAhO,KAAAmN,KAAAnN,KAAAmN,KAAAoB,OAAAL,IAGArB,EAAAlN,UAAAmO,WAAA,SAAAC,GAEA,IAAAD,EAAA9N,KAAAmN,KAAAqB,OAAAxO,KAAAmN,KAAArM,OAAAiN,KAEAD,EAAA3L,QAAA,SAAAiM,GACApO,KAAAgN,OAAAW,YAAAS,IACGpO,OAGH6M,EAAAlN,UAAA8O,eAAA,WAEAzO,KAAA0O,cACA1O,KAAA0O,YAAAxB,UAAA,MACAlN,KAAA0O,YAAAC,gBAAA,iBAGA3O,KAAAmN,KAAArM,SAGAd,KAAA0O,YAAA1O,KAAAmN,KAAAnN,KAAA8M,OAAAzB,eACArL,KAAA0O,YAAAxB,UAAA,kBACAlN,KAAA0O,YAAAL,aAAA,yBAGAxB,EAAAlN,UAAAiP,MACA/B,EAAAlN,UAAA0N,QAAA,SAAA7M,GACA,IAAAiF,EAAAjF,EAAAiF,OAEA,SAAAA,EAAAC,SAAA,CAIA1F,KAAA8M,OAAA+B,WACA,IAAAC,EAAA9O,KAAAmN,KAAA4B,QAAAtJ,GACAzF,KAAA8M,OAAAkC,OAAAF,KAGAjC,EAAAlN,UAAAsP,QAAA,WACAjP,KAAA0N,aACA1N,KAAAkP,UAGAhH,EAAA2E,WAIAlE,EAAAwG,OAAAjH,EAAAkH,UACAhH,UAAA,IAGAF,EAAAmH,cAAAf,KAAA,mBAEA,IAAA5O,EAAAwI,EAAAvI,UAmCA,OAjCAD,EAAA4P,gBAAA,WACAtP,KAAAwJ,QAAApB,WAGApI,KAAAoI,SAAA,IAAAyE,EAAA7M,MAEAA,KAAAsI,GAAA,WAAAtI,KAAAuP,kBACAvP,KAAAsI,GAAA,SAAAtI,KAAAwP,wBACAxP,KAAAsI,GAAA,aAAAtI,KAAAyP,gBACAzP,KAAAsI,GAAA,SAAAtI,KAAAyP,gBACAzP,KAAAsI,GAAA,aAAAtI,KAAA0P,sBAGAhQ,EAAA6P,iBAAA,WACAvP,KAAAoI,SAAAmF,YAGA7N,EAAA8P,uBAAA,WACAxP,KAAAoI,SAAAqG,kBAGA/O,EAAA+P,eAAA,WACAzP,KAAAoI,SAAAoF,WAGA9N,EAAAgQ,mBAAA,WACA1P,KAAAoI,SAAAsF,cAKAxF,EAAA2E,WAEA3E,0BCxLA,IAAAyH,EAAA5Q,GAQA,SAAA6Q,EAAA3Q,GAKI0Q,EAAA,EAAe5Q,EAAA,oBAAA4Q,IAAAE,KAAAxQ,EAAAH,EAAAG,EAAAE,GAAAoQ,OAAArQ,IAAAP,IAAAQ,EAAAF,QAAAN,IALnB,CAcC,oBAAAC,eAAA,WAED,aAEA,SAAAG,KAEA,IAAAO,EAAAP,EAAAQ,UAiFA,OA/EAD,EAAA4I,GAAA,SAAAlG,EAAA0N,GACA,GAAA1N,GAAA0N,EAAA,CAIA,IAAA5N,EAAAlC,KAAA+P,QAAA/P,KAAA+P,YAEAC,EAAA9N,EAAAE,GAAAF,EAAAE,OAMA,OAJA,GAAA4N,EAAAjB,QAAAe,IACAE,EAAA1B,KAAAwB,GAGA9P,OAGAN,EAAAuQ,KAAA,SAAA7N,EAAA0N,GACA,GAAA1N,GAAA0N,EAAA,CAIA9P,KAAAsI,GAAAlG,EAAA0N,GAGA,IAAAI,EAAAlQ,KAAAmQ,YAAAnQ,KAAAmQ,gBAEAC,EAAAF,EAAA9N,GAAA8N,EAAA9N,OAIA,OAFAgO,EAAAN,IAAA,EAEA9P,OAGAN,EAAA2Q,IAAA,SAAAjO,EAAA0N,GACA,IAAAE,EAAAhQ,KAAA+P,SAAA/P,KAAA+P,QAAA3N,GACA,GAAA4N,KAAAlP,OAAA,CAGA,IAAAgO,EAAAkB,EAAAjB,QAAAe,GAKA,OAJA,GAAAhB,GACAkB,EAAAxB,OAAAM,EAAA,GAGA9O,OAGAN,EAAAmC,UAAA,SAAAO,EAAAkO,GACA,IAAAN,EAAAhQ,KAAA+P,SAAA/P,KAAA+P,QAAA3N,GACA,GAAA4N,KAAAlP,OAAA,CAIAkP,IAAAO,MAAA,GACAD,QAIA,IAFA,IAAAF,EAAApQ,KAAAmQ,aAAAnQ,KAAAmQ,YAAA/N,GAEAvB,EAAA,EAAgBA,EAAAmP,EAAAlP,OAAsBD,IAAA,CACtC,IAAAiP,EAAAE,EAAAnP,GACA2P,EAAAJ,KAAAN,GACAU,IAGAxQ,KAAAqQ,IAAAjO,EAAA0N,UAEAM,EAAAN,IAGAA,EAAA1Q,MAAAY,KAAAsQ,GAGA,OAAAtQ,OAGAN,EAAAwP,OAAA,kBACAlP,KAAA+P,eACA/P,KAAAmQ,aAGAhR,0BC7GA,IAAAL,EAAAC,GAEA,SAAAC,EAAAC,GAIIH,GACEI,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,SACDH,EAAA,SAAEI,EAAAsR,EAAA9H,EAAA+H,EAAAC,EAAAC,GACP,OAAA3R,EAAAD,EAAAG,EAAAsR,EAAA9H,EAAA+H,EAAAC,EAAAC,IACKxR,MAAAC,EAAAP,QAAAQ,IAAAP,IAAAQ,EAAAF,QAAAN,IAbL,CAwCCC,OAAA,SAAAA,EAAAG,EAAAsR,EACD9H,EAAA+H,EAAAC,EAAAC,GAGA,aAGA,IAAAC,EAAA7R,EAAA6R,OACAC,EAAA9R,EAAA8R,iBACAC,EAAA/R,EAAA+R,QAEA,SAAAC,EAAAC,EAAAC,GACAD,EAAAtI,EAAAwI,UAAAF,GACA,MAAAA,EAAAnQ,OACAoQ,EAAAzD,YAAAwD,EAAArF,SAOA,IAAAwF,EAAA,EAEAC,KAEA,SAAAnJ,EAAAL,EAAA2B,GACA,IAAA8H,EAAA3I,EAAA4I,gBAAA1J,GACA,GAAAyJ,EAAA,CAQA,GAFAtR,KAAA6H,QAAAyJ,EAEAtR,KAAA6H,QAAA2J,aAAA,CACA,IAAAC,EAAAJ,EAAArR,KAAA6H,QAAA2J,cAEA,OADAC,KAAAC,OAAAlI,GACAiI,EAIAZ,IACA7Q,KAAA2R,SAAAd,EAAA7Q,KAAA6H,UAGA7H,KAAAwJ,QAAAb,EAAAwG,UAAiCnP,KAAA4R,YAAAxC,UACjCpP,KAAA0R,OAAAlI,GAGAxJ,KAAA+M,eAtBAgE,GACAA,EAAAc,MAAA,8BAAAP,GAAAzJ,IAwBAK,EAAAkH,UACA0C,eAAA,EAEAzJ,UAAA,SAGA0J,mBAAA,KACAC,SAAA,IACAC,uBAAA,EAEAlH,iBAAA,EACAmH,QAAA,EACAtF,mBAAA,KACAuF,gBAAA,GAMAjK,EAAAmH,iBAEA,IAAA3P,EAAAwI,EAAAvI,UAEAgJ,EAAAwG,OAAAzP,EAAAP,EAAAQ,WAEAD,EAAAqN,QAAA,WAEA,IAAAqF,EAAApS,KAAAqS,OAAAjB,EAqBA,QAAAhP,KApBApC,KAAA6H,QAAA2J,aAAAY,EACAf,EAAAe,GAAApS,KAEAA,KAAAqL,cAAA,EAEArL,KAAA8I,cAAA,EAEA9I,KAAA2D,EAAA,EACA3D,KAAA6K,SAAA,EACA7K,KAAAsS,WAAAtS,KAAAwJ,QAAAS,YAAA,eAEAjK,KAAAuS,SAAA1M,SAAAoH,cAAA,OACAjN,KAAAuS,SAAArF,UAAA,oBACAlN,KAAAwS,iBAEAxS,KAAAwJ,QAAA0I,QAAAlS,KAAAwJ,QAAAiJ,WACAzT,EAAAqD,iBAAA,SAAArC,MAIAA,KAAAwJ,QAAAlB,GAAA,CACA,IAAAwH,EAAA9P,KAAAwJ,QAAAlB,GAAAlG,GACApC,KAAAsI,GAAAlG,EAAA0N,GAGA5H,EAAAmH,cAAAlN,QAAA,SAAA1B,GACAT,KAAAS,MACGT,MAEHA,KAAAwJ,QAAAiJ,SACAzS,KAAAyS,WAEAzS,KAAAuN,YASA7N,EAAAgS,OAAA,SAAAgB,GACA/J,EAAAwG,OAAAnP,KAAAwJ,QAAAkJ,IAGAhT,EAAA6N,SAAA,WACA,IAAAvN,KAAA2S,SAAA,CAGA3S,KAAA2S,UAAA,EACA3S,KAAA6H,QAAA+K,UAAAC,IAAA,oBACA7S,KAAAwJ,QAAAS,aACAjK,KAAA6H,QAAA+K,UAAAC,IAAA,gBAGA7S,KAAAyQ,UAEA,IAAAqC,EAAA9S,KAAA+S,wBAAA/S,KAAA6H,QAAAmL,UACAhC,EAAA8B,EAAA9S,KAAAiI,QACAjI,KAAAuS,SAAA9E,YAAAzN,KAAAiI,QACAjI,KAAA6H,QAAA4F,YAAAzN,KAAAuS,UAEAvS,KAAAiT,cAEAjT,KAAAwJ,QAAAsI,gBAEA9R,KAAA6H,QAAAqL,SAAA,EAEAlT,KAAA6H,QAAAxF,iBAAA,UAAArC,OAGAA,KAAA6B,UAAA,YACA7B,KAAAmT,qBAEAnT,KAAAoT,iBAAA,EAEApT,KAAA0K,cAAA,WAIAhL,EAAA8S,cAAA,WAEA,IAAAvK,EAAApC,SAAAoH,cAAA,OACAhF,EAAAiF,UAAA,kBACAjF,EAAA1D,MAAAvE,KAAAsS,YAAA,EACAtS,KAAAiI,UAGAvI,EAAAqT,wBAAA,SAAA9B,GACA,OAAAtI,EAAA0K,mBAAApC,EAAAjR,KAAAwJ,QAAA8J,eAIA5T,EAAAuT,YAAA,WAEAjT,KAAAyJ,MAAAzJ,KAAAuT,WAAAvT,KAAAiI,OAAA+K,UACAhT,KAAAwT,gBACAxT,KAAAyT,qBACAzT,KAAAmS,kBAQAzS,EAAA6T,WAAA,SAAAtC,GACA,IAAA6B,EAAA9S,KAAA+S,wBAAA9B,GAGAxH,EAAAqJ,EAAAY,IAAA,SAAAC,GACA,WAAAjD,EAAAiD,EAAA3T,OACGA,MAEH,OAAAyJ,GAGA/J,EAAAkU,YAAA,WACA,OAAA5T,KAAAyJ,MAAAzJ,KAAAyJ,MAAA3I,OAAA,IAGApB,EAAAmU,aAAA,WACA,OAAA7T,KAAAsK,OAAAtK,KAAAsK,OAAAxJ,OAAA,IAIApB,EAAA8T,cAAA,WAEAxT,KAAA8T,WAAA9T,KAAAyJ,OAEAzJ,KAAA+T,eAAA,IAOArU,EAAAqU,eAAA,SAAAjF,GACAA,KAAA,EAGA9O,KAAAgU,cAAAlF,GAAA9O,KAAAgU,eAAA,EACA,IAAAC,EAAA,EAEA,GAAAnF,EAAA,GACA,IAAAoF,EAAAlU,KAAAyJ,MAAAqF,EAAA,GACAmF,EAAAC,EAAAvQ,EAAAuQ,EAAAjJ,KAAAe,WAGA,IADA,IAAAmI,EAAAnU,KAAAyJ,MAAA3I,OACAD,EAAAiO,EAAsBjO,EAAAsT,EAAStT,IAAA,CAC/B,IAAAgL,EAAA7L,KAAAyJ,MAAA5I,GACAgL,EAAAuI,YAAAH,GACAA,GAAApI,EAAAZ,KAAAe,WACAhM,KAAAgU,cAAAxN,KAAA2H,IAAAtC,EAAAZ,KAAAoJ,YAAArU,KAAAgU,eAGAhU,KAAA2J,eAAAsK,EAEAjU,KAAAsU,eAEAtU,KAAAuU,iBAEAvU,KAAAyK,YAAA0J,EAAAnU,KAAA6T,eAAApO,OAAAzF,KAAAsK,OAAA,GAAA7E,OAAA,GAOA/F,EAAAoU,WAAA,SAAArK,GACAA,EAAAtH,QAAA,SAAA0J,GACAA,EAAA4E,aAMA/Q,EAAA4U,aAAA,WAEA,GADAtU,KAAAsK,UACAtK,KAAAyJ,MAAA3I,OAAA,CAIA,IAAA0T,EAAA,IAAA7D,EAAA3Q,MACAA,KAAAsK,OAAAgE,KAAAkG,GACA,IAAAC,EAAA,QAAAzU,KAAAsS,WACAoC,EAAAD,EAAA,2BAEAE,EAAA3U,KAAA4U,iBAEA5U,KAAAyJ,MAAAtH,QAAA,SAAA0J,EAAAhL,GAEA,GAAA2T,EAAA/K,MAAA3I,OAAA,CAKA,IAAA+T,EAAAL,EAAAxI,WAAAwI,EAAAM,aACAjJ,EAAAZ,KAAAe,WAAAH,EAAAZ,KAAAyJ,IAEAC,EAAA9E,KAAA7P,KAAAa,EAAAgU,GACAL,EAAAO,QAAAlJ,IAGA2I,EAAAQ,eAEAR,EAAA,IAAA7D,EAAA3Q,MACAA,KAAAsK,OAAAgE,KAAAkG,GACAA,EAAAO,QAAAlJ,SAfA2I,EAAAO,QAAAlJ,IAiBG7L,MAEHwU,EAAAQ,eAEAhV,KAAAiV,wBAGAvV,EAAAkV,eAAA,WACA,IAAAM,EAAAlV,KAAAwJ,QAAA0L,WACA,IAAAA,EACA,kBACA,UAEG,oBAAAA,EAAA,CAEH,IAAAC,EAAAC,SAAAF,EAAA,IACA,gBAAArU,GACA,OAAAA,EAAAsU,IAAA,GAKA,IAAAE,EAAA,iBAAAH,GACAA,EAAAI,MAAA,YACAC,EAAAF,EAAAD,SAAAC,EAAA,aACA,gBAAAxU,EAAAgU,GAEA,OAAAA,IAAA7U,KAAAiL,KAAAC,WAAA,GAAAqK,IAKA7V,EAAA8V,MACA9V,EAAA+V,WAAA,WACAzV,KAAAwT,gBACAxT,KAAA2K,4BAGAjL,EAAA+Q,QAAA,WACAzQ,KAAAiL,KAAAwF,EAAAzQ,KAAA6H,SACA7H,KAAA0V,eACA1V,KAAAgK,eAAAhK,KAAAiL,KAAAC,WAAAlL,KAAAqI,WAGA,IAAAsN,GAEAC,QACAC,KAAA,GACAC,MAAA,IAEAD,MACAA,KAAA,EACAC,MAAA,GAEAA,OACAA,MAAA,EACAD,KAAA,IAgiBA,OA5hBAnW,EAAAgW,aAAA,WACA,IAAAK,EAAAJ,EAAA3V,KAAAwJ,QAAAnB,WACArI,KAAAqI,UAAA0N,IAAA/V,KAAAsS,YAAAtS,KAAAwJ,QAAAnB,WAGA3I,EAAAyS,eAAA,WACA,GAAAnS,KAAAwJ,QAAA2I,eAAA,CACA,IAAA6D,EAAAhW,KAAAwJ,QAAAyM,gBAAAjW,KAAA4K,cACA5K,KAAA4K,cAAAoL,OAAAhW,KAAAgU,cACAhU,KAAAuS,SAAAhO,MAAAyR,SAAA,OAIAtW,EAAA+T,mBAAA,WAEA,GAAAzT,KAAAwJ,QAAArB,WAAA,CAIAnI,KAAAiM,cAAAjM,KAAAwL,kBACAxL,KAAAiM,cAAAjM,KAAA0L,iBAGA,IAAAwK,EAAAlW,KAAAgK,eACAmM,EAAAnW,KAAAyJ,MAAA3I,OAAA,EACAd,KAAAwL,iBAAAxL,KAAAoW,aAAAF,EAAAC,GAAA,GAGAD,EAAAlW,KAAAiL,KAAAC,WAAAlL,KAAAgK,eAEAhK,KAAA0L,gBAAA1L,KAAAoW,aAAAF,EAAA,OAGAxW,EAAA0W,aAAA,SAAAF,EAAAC,EAAAE,GAEA,IAAA5M,KACA,MAAAyM,EAAA,GACA,IAAArK,EAAA7L,KAAAyJ,MAAA0M,GACA,IAAAtK,EACA,MAEApC,EAAA6E,KAAAzC,GACAsK,GAAAE,EACAH,GAAArK,EAAAZ,KAAAe,WAEA,OAAAvC,GAMA/J,EAAA6U,eAAA,WACA,GAAAvU,KAAAwJ,QAAA8M,UAAAtW,KAAAwJ,QAAArB,YAAAnI,KAAAyJ,MAAA3I,OAAA,CAGA,IAAAyV,EAAAvW,KAAAwJ,QAAAS,YACAuM,EAAAD,EAAA,2BACAE,EAAAF,EAAA,2BACAG,EAAA1W,KAAA2J,eAAA3J,KAAA4T,cAAA3I,KAAAwL,GAEAE,EAAAD,EAAA1W,KAAAiL,KAAAC,WAEA0L,EAAA5W,KAAAgK,eAAAhK,KAAAyJ,MAAA,GAAAwB,KAAAuL,GACAK,EAAAH,EAAA1W,KAAAiL,KAAAC,YAAA,EAAAlL,KAAAqI,WAEArI,KAAAsK,OAAAnI,QAAA,SAAAqS,GACAmC,EAEAnC,EAAA/O,OAAAiR,EAAA1W,KAAAqI,WAGAmM,EAAA/O,OAAAe,KAAA2H,IAAAqG,EAAA/O,OAAAmR,GACApC,EAAA/O,OAAAe,KAAAsQ,IAAAtC,EAAA/O,OAAAoR,KAEG7W,QAWHN,EAAAgL,cAAA,SAAAhK,EAAAF,EAAA8P,GACA,IAAAyG,EAAAvW,MAAA+N,OAAA+B,KAGA,GAFAtQ,KAAA6B,UAAAnB,EAAAqW,GAEAlG,GAAA7Q,KAAA2R,SAAA,CAEAjR,GAAAV,KAAAwJ,QAAAyI,sBAAA,eACA,IAAA+E,EAAAtW,EACA,GAAAF,EAAA,CAEA,IAAAyW,EAAA,IAAApG,EAAAqG,MAAA1W,GACAyW,EAAAvW,OACAsW,EAAAC,EAEAjX,KAAA2R,SAAAwF,QAAAH,EAAA1G,KAWA5Q,EAAAsP,OAAA,SAAAF,EAAAsI,EAAAC,GACA,GAAArX,KAAA2S,WAGA7D,EAAAsG,SAAAtG,EAAA,IACA9O,KAAAsX,YAAAxI,IAEA9O,KAAAwJ,QAAArB,YAAAiP,KACAtI,EAAAnG,EAAAe,OAAAoF,EAAA9O,KAAAsK,OAAAxJ,SAGAd,KAAAsK,OAAAwE,IAAA,CAGA,IAAAyI,EAAAvX,KAAAqL,cACArL,KAAAqL,cAAAyD,EACA9O,KAAAiV,sBACAoC,EACArX,KAAA2K,2BAEA3K,KAAA4I,iBAEA5I,KAAAwJ,QAAAyM,gBACAjW,KAAAmS,iBAGAnS,KAAA0K,cAAA,eAAAoE,IAEAA,GAAAyI,GACAvX,KAAA0K,cAAA,eAAAoE,IAGA9O,KAAA0K,cAAA,gBAIAhL,EAAA4X,YAAA,SAAAxI,GACA,IAAAqF,EAAAnU,KAAAsK,OAAAxJ,OACA0W,EAAAxX,KAAAwJ,QAAArB,YAAAgM,EAAA,EACA,IAAAqD,EACA,OAAA1I,EAEA,IAAA2I,EAAA9O,EAAAe,OAAAoF,EAAAqF,GAEAvG,EAAApH,KAAAC,IAAAgR,EAAAzX,KAAAqL,eACAqM,EAAAlR,KAAAC,IAAAgR,EAAAtD,EAAAnU,KAAAqL,eACAsM,EAAAnR,KAAAC,IAAAgR,EAAAtD,EAAAnU,KAAAqL,gBACArL,KAAA4X,cAAAF,EAAA9J,EACAkB,GAAAqF,GACGnU,KAAA4X,cAAAD,EAAA/J,IACHkB,GAAAqF,GAGArF,EAAA,EACA9O,KAAA2D,GAAA3D,KAAA2J,eACGmF,GAAAqF,IACHnU,KAAA2D,GAAA3D,KAAA2J,iBAIAjK,EAAAmY,SAAA,SAAAT,EAAAC,GACArX,KAAAgP,OAAAhP,KAAAqL,cAAA,EAAA+L,EAAAC,IAGA3X,EAAAoY,KAAA,SAAAV,EAAAC,GACArX,KAAAgP,OAAAhP,KAAAqL,cAAA,EAAA+L,EAAAC,IAGA3X,EAAAuV,oBAAA,WACA,IAAAT,EAAAxU,KAAAsK,OAAAtK,KAAAqL,eAEAmJ,IAIAxU,KAAA+X,wBAEA/X,KAAA4K,cAAA4J,EACAA,EAAAxF,SACAhP,KAAAgY,cAAAxD,EAAA/K,MACAzJ,KAAAiY,iBAAAzD,EAAA0D,kBAGAlY,KAAAmY,aAAA3D,EAAA/K,MAAA,GACAzJ,KAAAoY,gBAAApY,KAAAiY,iBAAA,KAGAvY,EAAAqY,sBAAA,WACA/X,KAAA4K,eACA5K,KAAA4K,cAAAyN,YAIA3Y,EAAAyT,mBAAA,WACA,IAAAmF,EAAAtY,KAAAwJ,QAAA8O,aAEA,GAAAtY,KAAAoT,gBACApT,KAAAgP,OAAAhP,KAAAqL,eAAA,UADA,CAKA,GAAAiN,GAAA,iBAAAA,EAAA,CACA,IAAAzM,EAAA7L,KAAAuY,UAAAD,GACA,GAAAzM,EAEA,YADA7L,KAAAwY,WAAAF,GAAA,MAKA,IAAAxJ,EAAA,EAEAwJ,GAAAtY,KAAAsK,OAAAgO,KACAxJ,EAAAwJ,GAGAtY,KAAAgP,OAAAF,GAAA,QASApP,EAAA8Y,WAAA,SAAAC,EAAArB,EAAAC,GAEA,IAAAxL,EAAA7L,KAAAuY,UAAAE,GACA,GAAA5M,EAAA,CAIA,IAAAiD,EAAA9O,KAAA0Y,kBAAA7M,GACA7L,KAAAgP,OAAAF,EAAAsI,EAAAC,KAGA3X,EAAAgZ,kBAAA,SAAA7M,GAEA,QAAAhL,EAAA,EAAkBA,EAAAb,KAAAsK,OAAAxJ,OAAwBD,IAAA,CAC1C,IAAA2T,EAAAxU,KAAAsK,OAAAzJ,GACAiO,EAAA0F,EAAA/K,MAAAsF,QAAAlD,GACA,OAAAiD,EACA,OAAAjO,IAYAnB,EAAAiZ,QAAA,SAAA5Y,GAEA,QAAAc,EAAA,EAAkBA,EAAAb,KAAAyJ,MAAA3I,OAAuBD,IAAA,CACzC,IAAAgL,EAAA7L,KAAAyJ,MAAA5I,GACA,GAAAgL,EAAAhE,SAAA9H,EACA,OAAA8L,IAUAnM,EAAAkZ,SAAA,SAAA3H,GACAA,EAAAtI,EAAAwI,UAAAF,GACA,IAAAxH,KAOA,OANAwH,EAAA9O,QAAA,SAAApC,GACA,IAAA8L,EAAA7L,KAAA2Y,QAAA5Y,GACA8L,GACApC,EAAA6E,KAAAzC,IAEG7L,MACHyJ,GAOA/J,EAAAwY,gBAAA,WACA,OAAAlY,KAAAyJ,MAAAiK,IAAA,SAAA7H,GACA,OAAAA,EAAAhE,WASAnI,EAAAmZ,cAAA,SAAA9Y,GAEA,IAAA8L,EAAA7L,KAAA2Y,QAAA5Y,GACA,OAAA8L,IAIA9L,EAAA4I,EAAAmQ,UAAA/Y,EAAA,wBACAC,KAAA2Y,QAAA5Y,KASAL,EAAAqZ,wBAAA,SAAAC,EAAAlK,GACA,IAAAkK,EACA,OAAAhZ,KAAA4K,cAAAsN,kBAEApJ,OAAAxP,IAAAwP,EAAA9O,KAAAqL,cAAAyD,EAEA,IAAAqF,EAAAnU,KAAAsK,OAAAxJ,OACA,OAAAkY,GAAA7E,EACA,OAAAnU,KAAAkY,kBAIA,IADA,IAAApF,KACAjS,EAAAiO,EAAAkK,EAAiCnY,GAAAiO,EAAAkK,EAAuBnY,IAAA,CACxD,IAAAoY,EAAAjZ,KAAAwJ,QAAArB,WAAAQ,EAAAe,OAAA7I,EAAAsT,GAAAtT,EACA2T,EAAAxU,KAAAsK,OAAA2O,GACAzE,IACA1B,IAAAvE,OAAAiG,EAAA0D,oBAGA,OAAApF,GAQApT,EAAA6Y,UAAA,SAAAW,GACA,oBAAAA,EAEA,OAAAlZ,KAAAyJ,MAAAyP,GAEA,oBAAAA,EAAA,CAEA,GAAAA,EAAA5D,MAAA,eACA,OAGA4D,EAAAlZ,KAAA6H,QAAAsR,cAAAD,GAGA,OAAAlZ,KAAA2Y,QAAAO,IAKAxZ,EAAAmP,SAAA,WACA7O,KAAA6B,UAAA,aAIAnC,EAAA4N,mBAAA,SAAA9M,GAEA,cAAAA,EAAAE,MACAF,EAAAmE,iBAEA3E,KAAAoZ,SAKA1Z,EAAA2Z,SAAA,WACArZ,KAAAyS,WACAzS,KAAAkS,UAGAvJ,EAAA2Q,eAAApR,EAAA,gBAEAxI,EAAAwS,OAAA,WAEA,GAAAlS,KAAA2S,WAAA3S,KAAA6I,cAAA7I,KAAAqG,WAAA,CAGArG,KAAAyQ,UAEAzQ,KAAAwJ,QAAArB,aACAnI,KAAA2D,EAAAgF,EAAAe,OAAA1J,KAAA2D,EAAA3D,KAAA2J,iBAEA3J,KAAAwT,gBACAxT,KAAAyT,qBACAzT,KAAAmS,iBACAnS,KAAA6B,UAAA,UAGA,IAAAuW,EAAApY,KAAAiY,kBAAAjY,KAAAiY,iBAAA,GACAjY,KAAAwY,WAAAJ,GAAA,QAIA1Y,EAAA+S,SAAA,WACA,IAAA8G,EAAAvZ,KAAAwJ,QAAAiJ,SACA,GAAA8G,EAAA,CAIA,IAAAC,EAAA1I,EAAA9Q,KAAA6H,QAAA,UAAA4R,SAEA,GAAAD,EAAAzK,QAAA,YACA/O,KAAAuN,WAEAvN,KAAA0N,eAOAhO,EAAAga,UAAA,SAAAlZ,GAEA,IAAAmZ,EAAA9T,SAAAC,eAAAD,SAAAC,eAAA9F,KAAA6H,QACA,GAAA7H,KAAAwJ,QAAAsI,gBAAA6H,EAAA,CAIA,IAAAC,EAAA1R,EAAA2R,iBAAArZ,EAAAsZ,SACAF,GACAA,EAAA/J,KAAA7P,QAIAkI,EAAA2R,kBAEAE,GAAA,WACA,IAAAC,EAAAha,KAAAwJ,QAAAS,YAAA,kBACAjK,KAAA6O,WACA7O,KAAAga,MAGAC,GAAA,WACA,IAAAC,EAAAla,KAAAwJ,QAAAS,YAAA,kBACAjK,KAAA6O,WACA7O,KAAAka,OAMAxa,EAAA0Z,MAAA,WAIA,IAAAe,EAAAnb,EAAAob,YACApa,KAAA6H,QAAAuR,OAAsBiB,eAAA,IAEtBrb,EAAAob,aAAAD,GACAnb,EAAAsb,SAAAtb,EAAAub,YAAAJ,IAOAza,EAAAgO,WAAA,WACA1N,KAAA2S,WAGA3S,KAAA6H,QAAA+K,UAAA4H,OAAA,oBACAxa,KAAA6H,QAAA+K,UAAA4H,OAAA,gBACAxa,KAAA+X,wBAEA/X,KAAAyJ,MAAAtH,QAAA,SAAA0J,GACAA,EAAAoD,YAEAjP,KAAA6H,QAAA8F,YAAA3N,KAAAuS,UAEAvB,EAAAhR,KAAAiI,OAAA+K,SAAAhT,KAAA6H,SACA7H,KAAAwJ,QAAAsI,gBACA9R,KAAA6H,QAAA8G,gBAAA,YACA3O,KAAA6H,QAAArF,oBAAA,UAAAxC,OAGAA,KAAA2S,UAAA,EACA3S,KAAA6B,UAAA,gBAGAnC,EAAAuP,QAAA,WACAjP,KAAA0N,aACA1O,EAAAwD,oBAAA,SAAAxC,MACAA,KAAAkP,SACAlP,KAAA6B,UAAA,WACAgP,GAAA7Q,KAAA2R,UACAd,EAAA4J,WAAAza,KAAA6H,QAAA,mBAEA7H,KAAA6H,QAAA2J,oBACAH,EAAArR,KAAAqS,OAKA1J,EAAAwG,OAAAzP,EAAAkR,GASA1I,EAAAwS,KAAA,SAAA3a,GACAA,EAAA4I,EAAA4I,gBAAAxR,GACA,IAAAqS,EAAArS,KAAAyR,aACA,OAAAY,GAAAf,EAAAe,IAGAzJ,EAAAgS,SAAAzS,EAAA,YAEA2I,KAAA+J,SACA/J,EAAA+J,QAAA,WAAA1S,GAIAA,EAAA2S,UAAA,SAAAC,GACAjK,EAAAiK,GAGA5S,EAAAwI,OACAxI,EAAAyI,QAEAzI,0BCr6BA,IAAAyH,EAAA7Q,EAAAC,GAWA,SAAAC,EAAAC,GAIIH,GACEI,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,SACDyQ,EAAA,EAAS5Q,EAAA,oBAAA4Q,IAAAvQ,MAAAC,EAAAP,GAAA6Q,OAAArQ,IAAAP,IAAAQ,EAAAF,QAAAN,IAZd,CA0BCC,OAAA,SAAAkJ,GACD,OAAAA,0BCtCA,IAAAyH,EAAA5Q,GASA,SAAAC,EAAAC,GAII0Q,EAAA,EAAe5Q,EAAA,oBAAA4Q,IAAAE,KAAAxQ,EAAAH,EAAAG,EAAAE,GAAAoQ,OAAArQ,IAAAP,IAAAQ,EAAAF,QAAAN,IAJnB,CAaCC,OAAA,WACD,aAKA,SAAA+b,EAAAtC,GACA,IAAAuC,EAAAC,WAAAxC,GAEAyC,GAAA,GAAAzC,EAAA1J,QAAA,OAAAoM,MAAAH,GACA,OAAAE,GAAAF,EAGA,SAAAxb,KAEA,IAAA4b,EAAA,oBAAArK,QAAAvR,EACA,SAAA6b,GACAtK,QAAAc,MAAAwJ,IAKAC,GACA,cACA,eACA,aACA,gBACA,aACA,cACA,YACA,eACA,kBACA,mBACA,iBACA,qBAGAC,EAAAD,EAAAxa,OAEA,SAAA0a,IASA,IARA,IAAAvQ,GACAwQ,MAAA,EACAzF,OAAA,EACA9K,WAAA,EACAwQ,YAAA,EACA1P,WAAA,EACAqI,YAAA,GAEAxT,EAAA,EAAgBA,EAAA0a,EAAwB1a,IAAA,CACxC,IAAA8a,EAAAL,EAAAza,GACAoK,EAAA0Q,GAAA,EAEA,OAAA1Q,EASA,SAAA2Q,EAAA7b,GACA,IAAAwE,EAAAuM,iBAAA/Q,GAMA,OALAwE,GACA6W,EAAA,kBAAA7W,EACA,6FAGAA,EAKA,IAEAsX,EAFAC,GAAA,EASA,SAAAC,IAEA,IAAAD,EAAA,CAGAA,GAAA,EAQA,IAAAE,EAAAnW,SAAAoH,cAAA,OACA+O,EAAAzX,MAAAkX,MAAA,QACAO,EAAAzX,MAAA0X,QAAA,kBACAD,EAAAzX,MAAA2X,YAAA,QACAF,EAAAzX,MAAA4X,YAAA,kBACAH,EAAAzX,MAAA6X,UAAA,aAEA,IAAAnW,EAAAJ,SAAAI,MAAAJ,SAAAwW,gBACApW,EAAAwH,YAAAuO,GACA,IAAAzX,EAAAqX,EAAAI,GAEAH,EAAA,KAAArV,KAAAwE,MAAA+P,EAAAxW,EAAAkX,QACAhL,EAAAoL,iBAEA5V,EAAA0H,YAAAqO,IAKA,SAAAvL,EAAA1Q,GASA,GARAgc,IAGA,iBAAAhc,IACAA,EAAA8F,SAAAsT,cAAApZ,IAIAA,GAAA,iBAAAA,KAAAuc,SAAA,CAIA,IAAA/X,EAAAqX,EAAA7b,GAGA,WAAAwE,EAAAgY,QACA,OAAAf,IAGA,IAAAvQ,KACAA,EAAAwQ,MAAA1b,EAAAyc,YACAvR,EAAA+K,OAAAjW,EAAA0c,aAKA,IAHA,IAAAC,EAAAzR,EAAAyR,YAAA,cAAAnY,EAAA6X,UAGAvb,EAAA,EAAgBA,EAAA0a,EAAwB1a,IAAA,CACxC,IAAA8a,EAAAL,EAAAza,GACA4X,EAAAlU,EAAAoX,GACAX,EAAAC,WAAAxC,GAEAxN,EAAA0Q,GAAAR,MAAAH,GAAA,EAAAA,EAGA,IAAA2B,EAAA1R,EAAA2R,YAAA3R,EAAA4R,aACAC,EAAA7R,EAAA8R,WAAA9R,EAAA+R,cACAC,EAAAhS,EAAAiS,WAAAjS,EAAAkS,YACAC,EAAAnS,EAAAoS,UAAApS,EAAAqS,aACAnB,EAAAlR,EAAAsS,gBAAAtS,EAAAuS,iBACAC,EAAAxS,EAAAyS,eAAAzS,EAAA0S,kBAEAC,EAAAlB,GAAAb,EAGAgC,EAAA9C,EAAAxW,EAAAkX,QACA,IAAAoC,IACA5S,EAAAwQ,MAAAoC,GAEAD,EAAA,EAAAjB,EAAAR,IAGA,IAAA2B,EAAA/C,EAAAxW,EAAAyR,QAaA,OAZA,IAAA8H,IACA7S,EAAA+K,OAAA8H,GAEAF,EAAA,EAAAd,EAAAW,IAGAxS,EAAAC,WAAAD,EAAAwQ,OAAAkB,EAAAR,GACAlR,EAAAyQ,YAAAzQ,EAAA+K,QAAA8G,EAAAW,GAEAxS,EAAAe,WAAAf,EAAAwQ,MAAAwB,EACAhS,EAAAoJ,YAAApJ,EAAA+K,OAAAoH,EAEAnS,GAGA,OAAAwF,0BC5MA,IAAA3R,EAAAC,GACA,SAAAC,EAAAC,GAIIH,GACEI,EAAA,QACAA,EAAA,QACAA,EAAA,SACDH,EAAA,SAAEmJ,EAAAnE,EAAA4E,GACP,OAAA1J,EAAAD,EAAAkJ,EAAAnE,EAAA4E,IACKvJ,MAAAC,EAAAP,QAAAQ,IAAAP,IAAAQ,EAAAF,QAAAN,IAVL,CA6BCC,OAAA,SAAAA,EAAAkJ,EAAAnE,EAAA4E,GAED,aAIAA,EAAAwG,OAAAjH,EAAAkH,UACA2O,UAAA,KACAC,cAAA,IAKA9V,EAAAmH,cAAAf,KAAA,eAIA,IAAA5O,EAAAwI,EAAAvI,UACAgJ,EAAAwG,OAAAzP,EAAAqE,EAAApE,WACAD,EAAA0E,kBAAA,QAIA1E,EAAAue,YAAA,WACAje,KAAAsI,GAAA,WAAAtI,KAAAke,gBACAle,KAAAsI,GAAA,WAAAtI,KAAAme,eACAne,KAAAsI,GAAA,aAAAtI,KAAAoe,kBACApe,KAAAsI,GAAA,aAAAtI,KAAAqe,kBAIA3e,EAAAwe,eAAA,WACAle,KAAAqE,SAAArE,KAAAuS,UACAvS,KAAAgE,cACAhE,KAAAqe,mBAGA3e,EAAA0e,iBAAA,WACApe,KAAAkE,gBACAlE,KAAA6H,QAAA+K,UAAA4H,OAAA,iBAGA9a,EAAA2e,gBAAA,WAEA,MAAAre,KAAAwJ,QAAAuU,UACA/d,KAAAsM,YAAAtM,KAAAsK,OAAAxJ,OAAA,EAEAd,KAAAsM,YAAAtM,KAAAwJ,QAAAuU,UAEA/d,KAAAsM,YACAtM,KAAA6H,QAAA+K,UAAAC,IAAA,gBAEA7S,KAAA6H,QAAA+K,UAAA4H,OAAA,iBAKA9a,EAAA4e,SAAA,WACAte,KAAAwJ,QAAAuU,WAAA,EACA/d,KAAAqe,mBAGA3e,EAAA6e,WAAA,WACAve,KAAAwJ,QAAAuU,WAAA,EACA/d,KAAAqe,mBAGA3e,EAAAye,cAAA,kBACAne,KAAAoL,iBAKA1L,EAAAiC,YAAA,SAAAnB,EAAAgB,GACA,GAAAxB,KAAAsM,YAAA,CAIA,IAAA9H,EAAAxE,KAAAyE,gBAAAjE,GACAgE,IAIAxE,KAAAwe,2BAAAhe,GACAR,KAAAye,iBAAAje,GAEAqF,SAAAC,eAAA9F,KAAA6H,SAEA7H,KAAA4E,kBAIA5E,KAAAwM,MAAAxM,KAAA2D,EACA3D,KAAAuS,SAAAK,UAAAC,IAAA,mBAEA7S,KAAA0e,kBAAAC,IACA3f,EAAAqD,iBAAA,SAAArC,MAEAA,KAAA4e,oBAAApe,EAAAgB,SAvBAxB,KAAA4e,oBAAApe,EAAAgB,IA2BA9B,EAAAkf,oBAAA,SAAApe,EAAAgB,GAGAxB,KAAA0E,oBACAd,MAAApC,EAAAoC,MACAE,MAAAtC,EAAAsC,OAGA9D,KAAA4B,qBAAApB,GACAR,KAAA0K,cAAA,cAAAlK,GAAAgB,KAGA,IAAAqd,GACA9Z,OAAA,EACAD,UAAA,EACAE,QAAA,GAqOA,SAAA2Z,IACA,OACAhb,EAAA3E,EAAAub,YACA1W,EAAA7E,EAAAob,aAMA,OA3OA1a,EAAA+e,iBAAA,SAAAje,GACA,IAAAse,EAAAD,EAAAre,EAAAiF,OAAAC,UACAoZ,GACA9e,KAAAoZ,SAIA1Z,EAAA8e,2BAAA,SAAAhe,GACA,IAAAue,EAAA,cAAAve,EAAAE,KACAse,EAAA,SAAAxe,EAAAye,YACAH,EAAAD,EAAAre,EAAAiF,OAAAC,UACAqZ,GAAAC,GAAAF,GACAte,EAAAmE,kBAMAjF,EAAA4G,eAAA,SAAAJ,GACA,OAAAM,KAAAC,IAAAP,EAAAvC,GAAA3D,KAAAwJ,QAAAwU,eAKAte,EAAAyD,UAAA,SAAA3C,EAAAgB,UACAxB,KAAAkf,iBACAlf,KAAAuS,SAAAK,UAAA4H,OAAA,mBACAxa,KAAA0K,cAAA,YAAAlK,GAAAgB,IACAxB,KAAA0G,eAAAlG,EAAAgB,IAGA9B,EAAA2D,YAAA,WACArE,EAAAwD,oBAAA,SAAAxC,aACAA,KAAA0e,mBAKAhf,EAAAoH,UAAA,SAAAtG,EAAAgB,GACAxB,KAAAsM,cAGAtM,KAAAmf,kBAAAnf,KAAA2D,EACA3D,KAAA4I,iBACA5J,EAAAwD,oBAAA,SAAAxC,MACAA,KAAA0K,cAAA,YAAAlK,GAAAgB,MAGA9B,EAAAmD,YAAA,SAAArC,EAAAgB,GACA,IAAA0E,EAAAlG,KAAAmG,iBAAA3F,EAAAgB,GACAxB,KAAA0K,cAAA,cAAAlK,GAAAgB,EAAA0E,IACAlG,KAAAoG,UAAA5F,EAAAgB,EAAA0E,IAGAxG,EAAAqH,SAAA,SAAAvG,EAAAgB,EAAA0E,GACA,GAAAlG,KAAAsM,YAAA,CAGA9L,EAAAmE,iBAEA3E,KAAAof,cAAApf,KAAAwM,MAEA,IAAA6S,EAAArf,KAAAwJ,QAAAS,aAAA,IACAjK,KAAAwJ,QAAArB,aAEAjC,EAAAvC,GAAA3D,KAAA2J,gBAEA,IAAA6C,EAAAxM,KAAAmf,kBAAAjZ,EAAAvC,EAAA0b,EAEA,IAAArf,KAAAwJ,QAAArB,YAAAnI,KAAAsK,OAAAxJ,OAAA,CAEA,IAAAwe,EAAA9Y,KAAA2H,KAAAnO,KAAAsK,OAAA,GAAA7E,OAAAzF,KAAAmf,mBACA3S,IAAA8S,EAAA,IAAA9S,EAAA8S,GAAA9S,EACA,IAAAqK,EAAArQ,KAAAsQ,KAAA9W,KAAA6T,eAAApO,OAAAzF,KAAAmf,mBACA3S,IAAAqK,EAAA,IAAArK,EAAAqK,GAAArK,EAGAxM,KAAAwM,QAEAxM,KAAAuf,aAAA,IAAAC,KACAxf,KAAA0K,cAAA,WAAAlK,GAAAgB,EAAA0E,MAGAxG,EAAAwH,QAAA,SAAA1G,EAAAgB,GACA,GAAAxB,KAAAsM,YAAA,CAGAtM,KAAAwJ,QAAAiW,aACAzf,KAAAoL,iBAAA,GAGA,IAAA0D,EAAA9O,KAAA0f,uBAEA,GAAA1f,KAAAwJ,QAAAiW,aAAAzf,KAAAwJ,QAAArB,WAAA,CAIA,IAAAwX,EAAA3f,KAAAqM,qBACArM,KAAAoL,iBAAAuU,EAAA3f,KAAAsK,OAAA,GAAA7E,SACAka,EAAA3f,KAAA6T,eAAApO,YACGzF,KAAAwJ,QAAAiW,YAAA3Q,GAAA9O,KAAAqL,gBAEHyD,GAAA9O,KAAA4f,6BAEA5f,KAAAof,cAIApf,KAAA4X,aAAA5X,KAAAwJ,QAAArB,WACAnI,KAAAgP,OAAAF,UACA9O,KAAA4X,aACA5X,KAAA0K,cAAA,UAAAlK,GAAAgB,MAGA9B,EAAAggB,qBAAA,WACA,IAAAC,EAAA3f,KAAAqM,qBAEAM,EAAAnG,KAAAC,IAAAzG,KAAA6f,kBAAAF,EAAA3f,KAAAqL,gBAEAyU,EAAA9f,KAAA+f,mBAAAJ,EAAAhT,EAAA,GACAqT,EAAAhgB,KAAA+f,mBAAAJ,EAAAhT,GAAA,GAEAmC,EAAAgR,EAAAnT,SAAAqT,EAAArT,SACAmT,EAAAhR,MAAAkR,EAAAlR,MACA,OAAAA,GAWApP,EAAAqgB,mBAAA,SAAAJ,EAAAhT,EAAA0J,GACA,IAAAvH,EAAA9O,KAAAqL,cACA4U,EAAAC,IACAC,EAAAngB,KAAAwJ,QAAA8M,UAAAtW,KAAAwJ,QAAArB,WAEA,SAAAiY,EAAAC,GACA,OAAAD,GAAAC,GACK,SAAAD,EAAAC,GACL,OAAAD,EAAAC,GAEA,MAAAF,EAAAxT,EAAAsT,GAAA,CAKA,GAHAnR,GAAAuH,EACA4J,EAAAtT,EACAA,EAAA3M,KAAA6f,kBAAAF,EAAA7Q,GACA,OAAAnC,EACA,MAEAA,EAAAnG,KAAAC,IAAAkG,GAEA,OACAA,SAAAsT,EAEAnR,QAAAuH,IAUA3W,EAAAmgB,iBAAA,SAAAlc,EAAAmL,GACA,IAAAqF,EAAAnU,KAAAsK,OAAAxJ,OAEAwf,EAAAtgB,KAAAwJ,QAAArB,YAAAgM,EAAA,EACA8E,EAAAqH,EAAA3X,EAAAe,OAAAoF,EAAAqF,GAAArF,EACA0F,EAAAxU,KAAAsK,OAAA2O,GACA,IAAAzE,EACA,YAGA,IAAA+L,EAAAD,EAAAtgB,KAAA2J,eAAAnD,KAAAga,MAAA1R,EAAAqF,GAAA,EACA,OAAAxQ,GAAA6Q,EAAA/O,OAAA8a,IAGA7gB,EAAAkgB,mBAAA,WAEA,QAAAtgB,IAAAU,KAAAof,gBAAApf,KAAAuf,cAEA,IAAAC,KAAAxf,KAAAuf,aAAA,IACA,SAGA,IAAA5S,EAAA3M,KAAA6f,kBAAA7f,KAAAwM,MAAAxM,KAAAqL,eACAuC,EAAA5N,KAAAof,cAAApf,KAAAwM,MACA,OAAAG,EAAA,GAAAiB,EAAA,EAEA,EACGjB,EAAA,GAAAiB,EAAA,GAEH,EAEA,GAKAlO,EAAA2H,YAAA,SAAA7G,EAAAgB,GAEA,IAAAif,EAAAzgB,KAAA6Y,cAAArY,EAAAiF,QACAkO,EAAA8M,KAAA5Y,QACAsO,EAAAsK,GAAAzgB,KAAAyJ,MAAAsF,QAAA0R,GACAzgB,KAAA0K,cAAA,cAAAlK,GAAAgB,EAAAmS,EAAAwC,KAKAzW,EAAAghB,SAAA,WACA,IAAAC,EAAAhC,IACAiC,EAAA5gB,KAAA0e,kBAAA/a,EAAAgd,EAAAhd,EACAkd,EAAA7gB,KAAA0e,kBAAA7a,EAAA8c,EAAA9c,GAEA2C,KAAAC,IAAAma,GAAA,GAAApa,KAAAC,IAAAoa,GAAA,IACA7gB,KAAAkD,gBAeAgF,0BCjYA,IAAApJ,EAAAC,GAOA,SAAAC,EAAAC,GAMIH,GACEI,EAAA,SACDH,EAAA,SAAE+hB,GACP,OAAA7hB,EAAAD,EAAA8hB,IACK1hB,MAAAC,EAAAP,QAAAQ,IAAAP,IAAAQ,EAAAF,QAAAN,IAVL,CAyBCC,OAAA,SAAAA,EAAA8hB,GAED,aAEA,IAAAnY,GAKAwG,OAAA,SAAA4R,EAAAC,GACA,QAAAC,KAAAD,EACAD,EAAAE,GAAAD,EAAAC,GAEA,OAAAF,GAKArX,OAAA,SAAAsR,EAAAgB,GACA,OAAAhB,EAAAgB,SAKAkF,EAAAC,MAAAxhB,UAAA4Q,MAGA5H,EAAAwI,UAAA,SAAAiQ,GACA,GAAAD,MAAAE,QAAAD,GAEA,OAAAA,EAGA,UAAAA,QAAA9hB,IAAA8hB,EACA,SAGA,IAAAE,EAAA,iBAAAF,GAAA,iBAAAA,EAAAtgB,OACA,OAAAwgB,EAEAJ,EAAArR,KAAAuR,IAIAA,IAKAzY,EAAA4Y,WAAA,SAAAC,EAAAJ,GACA,IAAAtS,EAAA0S,EAAAzS,QAAAqS,IACA,GAAAtS,GACA0S,EAAAhT,OAAAM,EAAA,IAMAnG,EAAAmQ,UAAA,SAAA/Y,EAAAmZ,GACA,MAAAnZ,EAAA0hB,YAAA1hB,GAAA8F,SAAAI,KAEA,GADAlG,IAAA0hB,WACAX,EAAA/gB,EAAAmZ,GACA,OAAAnZ,GAQA4I,EAAA4I,gBAAA,SAAAxR,GACA,uBAAAA,EACA8F,SAAAsT,cAAApZ,GAEAA,GAMA4I,EAAApI,YAAA,SAAAC,GACA,IAAAC,EAAA,KAAAD,EAAAE,KACAV,KAAAS,IACAT,KAAAS,GAAAD,IAMAmI,EAAA0K,mBAAA,SAAApC,EAAAiI,GAEAjI,EAAAtI,EAAAwI,UAAAF,GACA,IAAAyQ,KAyBA,OAvBAzQ,EAAA9O,QAAA,SAAApC,GAEA,GAAAA,aAAA4hB,YAIA,GAAAzI,EAAA,CAMA4H,EAAA/gB,EAAAmZ,IACAwI,EAAApT,KAAAvO,GAKA,IAFA,IAAA6hB,EAAA7hB,EAAA8hB,iBAAA3I,GAEArY,EAAA,EAAkBA,EAAA+gB,EAAA9gB,OAAuBD,IACzC6gB,EAAApT,KAAAsT,EAAA/gB,SAZA6gB,EAAApT,KAAAvO,KAgBA2hB,GAKA/Y,EAAA2Q,eAAA,SAAAwI,EAAAC,EAAAC,GACAA,KAAA,IAEA,IAAAvhB,EAAAqhB,EAAAniB,UAAAoiB,GACAE,EAAAF,EAAA,UAEAD,EAAAniB,UAAAoiB,GAAA,WACA,IAAAG,EAAAliB,KAAAiiB,GACAE,aAAAD,GAEA,IAAA5R,EAAAvI,UACAuB,EAAAtJ,KACAA,KAAAiiB,GAAAjb,WAAA,WACAvG,EAAArB,MAAAkK,EAAAgH,UACAhH,EAAA2Y,IACKD,KAMLrZ,EAAAyZ,SAAA,SAAAC,GACA,IAAAC,EAAAzc,SAAAyc,WACA,YAAAA,GAAA,eAAAA,EAEAtb,WAAAqb,GAEAxc,SAAAxD,iBAAA,mBAAAggB,IAOA1Z,EAAA4Z,SAAA,SAAAC,GACA,OAAAA,EAAAC,QAAA,uBAAAnN,EAAAoN,EAAAC,GACA,OAAAD,EAAA,IAAAC,IACGC,eAGH,IAAA7R,EAAA/R,EAAA+R,QA4CA,OAtCApI,EAAAgS,SAAA,SAAAkI,EAAAC,GACAna,EAAAyZ,SAAA,WACA,IAAAW,EAAApa,EAAA4Z,SAAAO,GACAE,EAAA,QAAAD,EACAE,EAAApd,SAAAgc,iBAAA,IAAAmB,EAAA,KACAE,EAAArd,SAAAgc,iBAAA,OAAAkB,GACA9R,EAAAtI,EAAAwI,UAAA8R,GACA1U,OAAA5F,EAAAwI,UAAA+R,IACAC,EAAAH,EAAA,WACAnS,EAAA7R,EAAA6R,OAEAI,EAAA9O,QAAA,SAAApC,GACA,IAEAyJ,EAFAd,EAAA3I,EAAAqjB,aAAAJ,IACAjjB,EAAAqjB,aAAAD,GAEA,IACA3Z,EAAAd,GAAA2a,KAAAC,MAAA5a,GACO,MAAAmJ,GAMP,YAJAd,GACAA,EAAAc,MAAA,iBAAAmR,EAAA,OAAAjjB,EAAAmN,UACA,KAAA2E,IAKA,IAAAJ,EAAA,IAAAoR,EAAA9iB,EAAAyJ,GAEAqH,GACAA,EAAA6J,KAAA3a,EAAA+iB,EAAArR,QASA9I,0BC9OA,IAAAgH,EAAA5Q,GACA,SAAAC,EAAAC,GAII0Q,EAAA,EAAe5Q,EAAA,oBAAA4Q,IAAAE,KAAAxQ,EAAAH,EAAAG,EAAAE,GAAAoQ,OAAArQ,IAAAP,IAAAQ,EAAAF,QAAAN,IAJnB,CAcCC,OAAA,WACD,aAEA,SAAA2R,EAAA7D,GACA9M,KAAA8M,SACA9M,KAAAyU,aAAA,QAAA3H,EAAAwF,WACAtS,KAAAyJ,SACAzJ,KAAAgM,WAAA,EACAhM,KAAAgW,OAAA,EAGA,IAAAtW,EAAAiR,EAAAhR,UA4CA,OA1CAD,EAAAqV,QAAA,SAAAlJ,GAKA,GAJA7L,KAAAyJ,MAAA6E,KAAAzC,GACA7L,KAAAgM,YAAAH,EAAAZ,KAAAe,WACAhM,KAAAgW,OAAAxP,KAAA2H,IAAAtC,EAAAZ,KAAAoJ,YAAArU,KAAAgW,QAEA,GAAAhW,KAAAyJ,MAAA3I,OAAA,CACAd,KAAA2D,EAAAkI,EAAAlI,EACA,IAAA6S,EAAAxW,KAAAyU,aAAA,2BACAzU,KAAA8U,YAAAjJ,EAAAZ,KAAAuL,KAIA9W,EAAAsV,aAAA,WACA,IAAAyB,EAAAzW,KAAAyU,aAAA,2BACA8O,EAAAvjB,KAAA4T,cACA4P,EAAAD,IAAAtY,KAAAwL,GAAA,EACA5B,EAAA7U,KAAAgM,YAAAhM,KAAA8U,YAAA0O,GACAxjB,KAAAyF,OAAAzF,KAAA2D,EAAA3D,KAAA8U,YAAAD,EAAA7U,KAAA8M,OAAAzE,WAGA3I,EAAAkU,YAAA,WACA,OAAA5T,KAAAyJ,MAAAzJ,KAAAyJ,MAAA3I,OAAA,IAGApB,EAAAsP,OAAA,WACAhP,KAAAyJ,MAAAtH,QAAA,SAAA0J,GACAA,EAAAmD,YAIAtP,EAAA2Y,SAAA,WACArY,KAAAyJ,MAAAtH,QAAA,SAAA0J,GACAA,EAAAwM,cAIA3Y,EAAAwY,gBAAA,WACA,OAAAlY,KAAAyJ,MAAAiK,IAAA,SAAA7H,GACA,OAAAA,EAAAhE,WAIA8I,4BCtEA,IAAA7R,EAAAC,GACA,SAAAC,EAAAC,GAIIH,GACEI,EAAA,QACAA,EAAA,SACDH,EAAA,SAAEmJ,EAAAS,GACP,OAAA1J,EAAAD,EAAAkJ,EAAAS,IACKvJ,MAAAC,EAAAP,QAAAQ,IAAAP,IAAAQ,EAAAF,QAAAN,IATL,CA0BCC,OAAA,SAAAA,EAAAkJ,EAAAS,GACD,aAEAT,EAAAmH,cAAAf,KAAA,mBACA,IAAA5O,EAAAwI,EAAAvI,UA0BA,SAAA8jB,EAAA9P,GAEA,UAAAA,EAAAjO,SAAA,CACA,IAAAge,EAAA/P,EAAAyP,aAAA,0BACAO,EAAAhQ,EAAAyP,aAAA,8BACAQ,EAAAjQ,EAAAyP,aAAA,iCACA,GAAAM,GAAAC,GAAAC,EACA,OAAAjQ,GAIA,IAAAkQ,EAAA,mGAEAC,EAAAnQ,EAAAkO,iBAAAgC,GACA,OAAAlb,EAAAwI,UAAA2S,GAUA,SAAAC,EAAAC,EAAAC,GACAjkB,KAAAgkB,MACAhkB,KAAAikB,WACAjkB,KAAAkkB,OAgDA,OAnGAxkB,EAAAykB,gBAAA,WACAnkB,KAAAsI,GAAA,SAAAtI,KAAAokB,WAGA1kB,EAAA0kB,SAAA,WACA,IAAAA,EAAApkB,KAAAwJ,QAAA4a,SACA,GAAAA,EAAA,CAIA,IAAApL,EAAA,iBAAAoL,IAAA,EACAtR,EAAA9S,KAAA+Y,wBAAAC,GAEAqL,KACAvR,EAAA3Q,QAAA,SAAAwR,GACA,IAAA2Q,EAAAb,EAAA9P,GACA0Q,IAAA9V,OAAA+V,KAGAD,EAAAliB,QAAA,SAAA6hB,GACA,IAAAD,EAAAC,EAAAhkB,OACGA,QAiCH+jB,EAAApkB,UAAAY,YAAAoI,EAAApI,YAEAwjB,EAAApkB,UAAAukB,KAAA,WACAlkB,KAAAgkB,IAAA3hB,iBAAA,OAAArC,MACAA,KAAAgkB,IAAA3hB,iBAAA,QAAArC,MAEA,IAAAukB,EAAAvkB,KAAAgkB,IAAAZ,aAAA,2BACApjB,KAAAgkB,IAAAZ,aAAA,8BACAoB,EAAAxkB,KAAAgkB,IAAAZ,aAAA,iCAEApjB,KAAAgkB,IAAAO,MACAC,GACAxkB,KAAAgkB,IAAA3V,aAAA,SAAAmW,GAGAxkB,KAAAgkB,IAAArV,gBAAA,0BACA3O,KAAAgkB,IAAArV,gBAAA,8BACA3O,KAAAgkB,IAAArV,gBAAA,kCAGAoV,EAAApkB,UAAA8kB,OAAA,SAAAjkB,GACAR,KAAA0kB,SAAAlkB,EAAA,wBAGAujB,EAAApkB,UAAAglB,QAAA,SAAAnkB,GACAR,KAAA0kB,SAAAlkB,EAAA,uBAGAujB,EAAApkB,UAAA+kB,SAAA,SAAAlkB,EAAA0M,GAEAlN,KAAAgkB,IAAAxhB,oBAAA,OAAAxC,MACAA,KAAAgkB,IAAAxhB,oBAAA,QAAAxC,MAEA,IAAA6L,EAAA7L,KAAAikB,SAAApL,cAAA7Y,KAAAgkB,KACArQ,EAAA9H,KAAAhE,QACA7H,KAAAikB,SAAAW,eAAAjR,GAEA3T,KAAAgkB,IAAApR,UAAAC,IAAA3F,GACAlN,KAAAikB,SAAAvZ,cAAA,WAAAlK,EAAAmT,IAKAzL,EAAA6b,aAEA7b,0BCpIA,IAAApJ,EAAAC,GACA,SAAAC,EAAAC,GAIIH,GACEI,EAAA,QACAA,EAAA,QACAA,EAAA,SACDH,EAAA,SAAEI,EAAAwJ,EAAAT,GACP,OAAAjJ,EAAAE,EAAAwJ,EAAAT,IACK9I,MAAAC,EAAAP,QAAAQ,IAAAP,IAAAQ,EAAAF,QAAAN,IAVL,CA2BCC,OAAA,SAAAG,EAAAwJ,EAAAT,GAED,aAIA,SAAA2c,EAAA/X,GACA9M,KAAA8M,SACA9M,KAAA8kB,MAAA,UAEA9kB,KAAA+kB,mBAAA/kB,KAAAglB,iBAAA/d,KAAAjH,MACAA,KAAAilB,iBAAAjlB,KAAAklB,eAAAje,KAAAjH,MAGA6kB,EAAAllB,UAAAC,OAAAC,OAAAV,EAAAQ,WAGAklB,EAAAllB,UAAAwlB,KAAA,WACA,cAAAnlB,KAAA8kB,MAAA,CAIA,IAAAM,EAAAvf,SAAAwf,OACAD,EACAvf,SAAAxD,iBAAA,mBAAArC,KAAAilB,mBAIAjlB,KAAA8kB,MAAA,UAEAjf,SAAAxD,iBAAA,mBAAArC,KAAA+kB,oBAEA/kB,KAAAslB,UAGAT,EAAAllB,UAAA2lB,KAAA,WAEA,cAAAtlB,KAAA8kB,MAAA,CAIA,IAAAS,EAAAvlB,KAAA8M,OAAAtD,QAAAgc,SAEAD,EAAA,iBAAAA,IAAA,IACA,IAAAjc,EAAAtJ,KAEAA,KAAAylB,QACAzlB,KAAAkiB,QAAAlb,WAAA,WACAsC,EAAAwD,OAAAgL,MAAA,GACAxO,EAAAgc,QACGC,KAGHV,EAAAllB,UAAA+lB,KAAA,WACA1lB,KAAA8kB,MAAA,UACA9kB,KAAAylB,QAEA5f,SAAArD,oBAAA,mBAAAxC,KAAA+kB,qBAGAF,EAAAllB,UAAA8lB,MAAA,WACAtD,aAAAniB,KAAAkiB,UAGA2C,EAAAllB,UAAAgmB,MAAA,WACA,WAAA3lB,KAAA8kB,QACA9kB,KAAA8kB,MAAA,SACA9kB,KAAAylB,UAIAZ,EAAAllB,UAAAimB,QAAA,WAEA,UAAA5lB,KAAA8kB,OACA9kB,KAAAmlB,QAKAN,EAAAllB,UAAAqlB,iBAAA,WACA,IAAAI,EAAAvf,SAAAwf,OACArlB,KAAAolB,EAAA,sBAGAP,EAAAllB,UAAAulB,eAAA,WACAllB,KAAAmlB,OACAtf,SAAArD,oBAAA,mBAAAxC,KAAAilB,mBAKAtc,EAAAwG,OAAAjH,EAAAkH,UACAyW,sBAAA,IAGA3d,EAAAmH,cAAAf,KAAA,iBACA,IAAA5O,EAAAwI,EAAAvI,UA+DA,OA7DAD,EAAAomB,cAAA,WACA9lB,KAAA+lB,OAAA,IAAAlB,EAAA7kB,MAEAA,KAAAsI,GAAA,WAAAtI,KAAAgmB,gBACAhmB,KAAAsI,GAAA,WAAAtI,KAAAimB,YACAjmB,KAAAsI,GAAA,cAAAtI,KAAAimB,YACAjmB,KAAAsI,GAAA,aAAAtI,KAAAkmB,mBAGAxmB,EAAAsmB,eAAA,WACAhmB,KAAAwJ,QAAAgc,WAGAxlB,KAAA+lB,OAAAZ,OACAnlB,KAAA6H,QAAAxF,iBAAA,aAAArC,QAKAN,EAAAymB,WAAA,WACAnmB,KAAA+lB,OAAAZ,QAGAzlB,EAAAumB,WAAA,WACAjmB,KAAA+lB,OAAAL,QAGAhmB,EAAA0mB,YAAA,WACApmB,KAAA+lB,OAAAJ,SAGAjmB,EAAA2mB,cAAA,WACArmB,KAAA+lB,OAAAH,WAGAlmB,EAAAwmB,iBAAA,WACAlmB,KAAA+lB,OAAAL,OACA1lB,KAAA6H,QAAArF,oBAAA,aAAAxC,OAMAN,EAAA4mB,aAAA,WACAtmB,KAAAwJ,QAAAqc,uBAGA7lB,KAAA+lB,OAAAJ,QACA3lB,KAAA6H,QAAAxF,iBAAA,aAAArC,QAIAN,EAAA6mB,aAAA,WACAvmB,KAAA+lB,OAAAH,UACA5lB,KAAA6H,QAAArF,oBAAA,aAAAxC,OAKAkI,EAAA2c,SAEA3c,0BC3LA,IAAApJ,EAAAC,GACA,SAAAC,EAAAC,GAIIH,GACEI,EAAA,QACAA,EAAA,SACDH,EAAA,SAAEmJ,EAAAS,GACP,OAAA1J,EAAAD,EAAAkJ,EAAAS,IACKvJ,MAAAC,EAAAP,QAAAQ,IAAAP,IAAAQ,EAAAF,QAAAN,IATL,CA0BCC,OAAA,SAAAA,EAAAkJ,EAAAS,GAED,aAGA,SAAA6d,EAAA/c,GACA,IAAAuE,EAAAnI,SAAAoI,yBAIA,OAHAxE,EAAAtH,QAAA,SAAA0J,GACAmC,EAAAP,YAAA5B,EAAAhE,WAEAmG,EAKA,IAAAtO,EAAAwI,EAAAvI,UAoHA,OA7GAD,EAAA+mB,OAAA,SAAAxV,EAAAnC,GACA,IAAArF,EAAAzJ,KAAAuT,WAAAtC,GACA,GAAAxH,KAAA3I,OAAA,CAGA,IAAAqT,EAAAnU,KAAAyJ,MAAA3I,OAEAgO,OAAAxP,IAAAwP,EAAAqF,EAAArF,EAEA,IAAAd,EAAAwY,EAAA/c,GAEAid,EAAA5X,GAAAqF,EACA,GAAAuS,EACA1mB,KAAAiI,OAAAwF,YAAAO,OACG,CACH,IAAA2Y,EAAA3mB,KAAAyJ,MAAAqF,GAAAjH,QACA7H,KAAAiI,OAAA2e,aAAA5Y,EAAA2Y,GAGA,OAAA7X,EAEA9O,KAAAyJ,QAAA8E,OAAAvO,KAAAyJ,YACG,GAAAid,EAEH1mB,KAAAyJ,MAAAzJ,KAAAyJ,MAAA8E,OAAA9E,OACG,CAEH,IAAAod,EAAA7mB,KAAAyJ,MAAA+E,OAAAM,EAAAqF,EAAArF,GACA9O,KAAAyJ,MAAAzJ,KAAAyJ,MAAA8E,OAAA9E,GAAA8E,OAAAsY,GAGA7mB,KAAA8T,WAAArK,GACAzJ,KAAA8mB,WAAAhY,GAAA,KAGApP,EAAAqnB,OAAA,SAAA9V,GACAjR,KAAAymB,OAAAxV,EAAAjR,KAAAyJ,MAAA3I,SAGApB,EAAAsnB,QAAA,SAAA/V,GACAjR,KAAAymB,OAAAxV,EAAA,IAOAvR,EAAA8a,OAAA,SAAAvJ,GACA,IAAAxH,EAAAzJ,KAAA4Y,SAAA3H,GACA,GAAAxH,KAAA3I,OAAA,CAIA,IAAAmmB,EAAAjnB,KAAAyJ,MAAA3I,OAAA,EAEA2I,EAAAtH,QAAA,SAAA0J,GACAA,EAAA2O,SACA,IAAA1L,EAAA9O,KAAAyJ,MAAAsF,QAAAlD,GACAob,EAAAzgB,KAAAsQ,IAAAhI,EAAAmY,GACAte,EAAA4Y,WAAAvhB,KAAAyJ,MAAAoC,IACG7L,MAEHA,KAAA8mB,WAAAG,GAAA,KAOAvnB,EAAAklB,eAAA,SAAA7kB,GACA,IAAA8L,EAAA7L,KAAA2Y,QAAA5Y,GACA,GAAA8L,EAAA,CAGAA,EAAA4E,UAEA,IAAA3B,EAAA9O,KAAAyJ,MAAAsF,QAAAlD,GACA7L,KAAA8mB,WAAAhY,KAQApP,EAAAonB,WAAA,SAAAI,EAAAC,GACA,IAAAC,EAAApnB,KAAAoY,gBACApY,KAAA+T,eAAAmT,GACAlnB,KAAAyT,qBACAzT,KAAAmS,iBAGA,IAAAtG,EAAA7L,KAAA2Y,QAAAyO,GACAvb,IACA7L,KAAAqL,cAAArL,KAAA0Y,kBAAA7M,IAEA7L,KAAAqL,cAAA7E,KAAAsQ,IAAA9W,KAAAsK,OAAAxJ,OAAA,EAAAd,KAAAqL,eAEArL,KAAA6B,UAAA,cAAAqlB,IAEAlnB,KAAAgP,OAAAhP,KAAAqL,eAEA8b,GACAnnB,KAAA2K,4BAMAzC,0BC9JA,IAAAyH,EAAA5Q,GAQA,SAAAC,EAAAC,GAEA,aAII0Q,EAAA,EAAe5Q,EAAA,oBAAA4Q,IAAAE,KAAAxQ,EAAAH,EAAAG,EAAAE,GAAAoQ,OAAArQ,IAAAP,IAAAQ,EAAAF,QAAAN,IANnB,CAeCC,OAAA,WACD,aAEA,IAAAqoB,EAAA,WACA,IAAAC,EAAAtoB,OAAAuoB,QAAA5nB,UAEA,GAAA2nB,EAAAE,QACA,gBAGA,GAAAF,EAAAxG,gBACA,wBAKA,IAFA,IAAA2G,GAAA,yBAEA5mB,EAAA,EAAkBA,EAAA4mB,EAAA3mB,OAAqBD,IAAA,CACvC,IAAA6mB,EAAAD,EAAA5mB,GACAJ,EAAAinB,EAAA,kBACA,GAAAJ,EAAA7mB,GACA,OAAAA,GAjBA,GAsBA,gBAAAV,EAAAmZ,GACA,OAAAnZ,EAAAsnB,GAAAnO,4BCjDA,IAAApa,EAAAC,GACA,SAAAC,EAAAC,GAIIH,GACEI,EAAA,SACDH,EAAA,SAAE0R,GACP,OAAAxR,EAAAD,EAAAyR,IACKrR,MAAAC,EAAAP,QAAAQ,IAAAP,IAAAQ,EAAAF,QAAAN,IARL,CAwBCC,OAAA,SAAAA,EAAAyR,GAED,aAEA,SAAAC,EAAA3Q,EAAA+M,GACA9M,KAAA6H,QAAA9H,EACAC,KAAA8M,SAEA9M,KAAAH,SAGA,IAAAH,EAAAgR,EAAA/Q,UAuEA,OArEAD,EAAAG,OAAA,WACAG,KAAA6H,QAAAtD,MAAAuG,SAAA,WACA9K,KAAA6H,QAAAwG,aAAA,sBACArO,KAAA2D,EAAA,EACA3D,KAAA4L,MAAA,EACA5L,KAAA6H,QAAAtD,MAAAvE,KAAA8M,OAAAwF,YAAA,GAGA5S,EAAAuP,QAAA,WAEAjP,KAAAqY,WACArY,KAAA6H,QAAAtD,MAAAuG,SAAA,GACA,IAAA6c,EAAA3nB,KAAA8M,OAAAwF,WACAtS,KAAA6H,QAAAtD,MAAAojB,GAAA,GACA3nB,KAAA6H,QAAAtD,MAAA6F,UAAA,GACApK,KAAA6H,QAAA8G,gBAAA,gBAGAjP,EAAA+Q,QAAA,WACAzQ,KAAAiL,KAAAwF,EAAAzQ,KAAA6H,UAGAnI,EAAA0U,YAAA,SAAAzQ,GACA3D,KAAA2D,IACA3D,KAAAgV,eACAhV,KAAA4nB,eAAAjkB,IAIAjE,EAAAsV,aAAAtV,EAAAmoB,iBAAA,WACA,IAAAC,EAAA,QAAA9nB,KAAA8M,OAAAwF,WAAA,2BACAtS,KAAAyF,OAAAzF,KAAA2D,EAAA3D,KAAAiL,KAAA6c,GACA9nB,KAAAiL,KAAAwQ,MAAAzb,KAAA8M,OAAAzE,WAGA3I,EAAAkoB,eAAA,SAAAjkB,GAEA,IAAAokB,EAAA,SAAA/nB,KAAA8M,OAAAwF,WAAA,KAEA0V,EAAAhoB,KAAA8M,OAAAtD,QAAAuB,gBACApH,EAAAokB,GAAA/nB,KAAA8M,OAAA7B,KAAAC,WAAAlL,KAAAiL,KAAAwQ,OACA9X,EAAAokB,EAEA/nB,KAAA6H,QAAAtD,MAAA6F,UAAA,cACApK,KAAA8M,OAAA3C,iBAAA6d,GAAA,KAGAtoB,EAAAsP,OAAA,WACAhP,KAAA6H,QAAA+K,UAAAC,IAAA,eACA7S,KAAA6H,QAAA8G,gBAAA,gBAGAjP,EAAA2Y,SAAA,WACArY,KAAA6H,QAAA+K,UAAA4H,OAAA,eACAxa,KAAA6H,QAAAwG,aAAA,uBAMA3O,EAAAqM,UAAA,SAAAH,GACA5L,KAAA4L,QACA5L,KAAA4nB,eAAA5nB,KAAA2D,EAAA3D,KAAA8M,OAAAnD,eAAAiC,IAGAlM,EAAA8a,OAAA,WACAxa,KAAA6H,QAAA4Z,WAAA9T,YAAA3N,KAAA6H,UAGA6I,0BC3GA,IAAA5R,EAAAC,GACA,SAAAC,EAAAC,GAIIH,GACEI,EAAA,QACAA,EAAA,QACAA,EAAA,SACDH,EAAA,SAAEmJ,EAAAzI,EAAAkJ,GACP,OAAA1J,EAAAD,EAAAkJ,EAAAzI,EAAAkJ,IACKvJ,MAAAC,EAAAP,QAAAQ,IAAAP,IAAAQ,EAAAF,QAAAN,IAVL,CA6BCC,OAAA,SAAAA,EAAAkJ,EAAAzI,EAAAkJ,GACD,aAEA,IAAAsf,EAAA,6BAIA,SAAAC,EAAA7I,EAAAvS,GACA9M,KAAAqf,YACArf,KAAA8M,SACA9M,KAAA+M,UA8DA,SAAAob,EAAAC,GAEA,uBAAAA,EACAA,EAGA,KAAAA,EAAAC,GAAA,SACAD,EAAAE,GAAA,KAAAF,EAAAG,GAAA,IACA,MAAAH,EAAAI,GAAA,KAAAJ,EAAAK,GAAA,IACA,MAAAL,EAAAM,GAAA,UACAN,EAAAI,GAAA,QAAAJ,EAAAK,IACA,MAAAL,EAAAE,GAAA,QAAAF,EAAAG,IACA,KAvEAL,EAAAvoB,UAAAC,OAAAC,OAAAJ,EAAAE,WAEAuoB,EAAAvoB,UAAAoN,QAAA,WAEA/M,KAAA2oB,WAAA,EACA3oB,KAAA4oB,YAAA,GAAA5oB,KAAAqf,UACA,IAAAwJ,EAAA7oB,KAAA8M,OAAAtD,QAAAS,YAAA,KACAjK,KAAA8oB,OAAA9oB,KAAAqf,WAAAwJ,EAEA,IAAAhhB,EAAA7H,KAAA6H,QAAAhC,SAAAoH,cAAA,UACApF,EAAAqF,UAAA,4CACArF,EAAAqF,WAAAlN,KAAA4oB,WAAA,oBAEA/gB,EAAAwG,aAAA,iBAEArO,KAAA+oB,UAEAlhB,EAAAwG,aAAA,aAAArO,KAAA4oB,WAAA,mBAGA,IAAAI,EAAAhpB,KAAAipB,YACAphB,EAAA4F,YAAAub,GAEAhpB,KAAA8M,OAAAxE,GAAA,SAAAtI,KAAAkpB,OAAAjiB,KAAAjH,OACAA,KAAAsI,GAAA,cAAAtI,KAAA8M,OAAAQ,mBAAArG,KAAAjH,KAAA8M,UAGAob,EAAAvoB,UAAA4N,SAAA,WACAvN,KAAAF,eAAAE,KAAA6H,SACA7H,KAAA6H,QAAAxF,iBAAA,QAAArC,MAEAA,KAAA8M,OAAAjF,QAAA4F,YAAAzN,KAAA6H,UAGAqgB,EAAAvoB,UAAA+N,WAAA,WAEA1N,KAAA8M,OAAAjF,QAAA8F,YAAA3N,KAAA6H,SAEA7H,KAAAE,iBAAAF,KAAA6H,SACA7H,KAAA6H,QAAArF,oBAAA,QAAAxC,OAGAkoB,EAAAvoB,UAAAspB,UAAA,WACA,IAAAD,EAAAnjB,SAAAsjB,gBAAAlB,EAAA,OACAe,EAAA3a,aAAA,gCACA2a,EAAA3a,aAAA,yBACA,IAAA+a,EAAAvjB,SAAAsjB,gBAAAlB,EAAA,QACAoB,EAAAlB,EAAAnoB,KAAA8M,OAAAtD,QAAA8f,YAQA,OAPAF,EAAA/a,aAAA,IAAAgb,GACAD,EAAA/a,aAAA,iBAEArO,KAAA8oB,QACAM,EAAA/a,aAAA,gDAEA2a,EAAAvb,YAAA2b,GACAJ,GAmBAd,EAAAvoB,UAAAY,YAAAoI,EAAApI,YAEA2nB,EAAAvoB,UAAAwH,QAAA,WACA,GAAAnH,KAAA2oB,UAAA,CAGA3oB,KAAA8M,OAAA+B,WACA,IAAApO,EAAAT,KAAA4oB,WAAA,kBACA5oB,KAAA8M,OAAArM,OAKAynB,EAAAvoB,UAAA4pB,OAAA,WACAvpB,KAAA2oB,YAGA3oB,KAAA6H,QAAA2hB,UAAA,EACAxpB,KAAA2oB,WAAA,IAGAT,EAAAvoB,UAAAopB,QAAA,WACA/oB,KAAA2oB,YAGA3oB,KAAA6H,QAAA2hB,UAAA,EACAxpB,KAAA2oB,WAAA,IAGAT,EAAAvoB,UAAAupB,OAAA,WAEA,IAAA5e,EAAAtK,KAAA8M,OAAAxC,OAEA,GAAAtK,KAAA8M,OAAAtD,QAAArB,YAAAmC,EAAAxJ,OAAA,EACAd,KAAAupB,aADA,CAIA,IAAAE,EAAAnf,EAAAxJ,OAAAwJ,EAAAxJ,OAAA,IACA4oB,EAAA1pB,KAAA4oB,WAAA,EAAAa,EACAhpB,EAAAT,KAAA8M,OAAAzB,eAAAqe,EAAA,mBACA1pB,KAAAS,OAGAynB,EAAAvoB,UAAAsP,QAAA,WACAjP,KAAA0N,aACA1N,KAAAkP,UAKAvG,EAAAwG,OAAAjH,EAAAkH,UACAua,iBAAA,EACAL,YACAjB,GAAA,GACAC,GAAA,GAAAC,GAAA,GACAC,GAAA,GAAAC,GAAA,GACAC,GAAA,MAIAxgB,EAAAmH,cAAAf,KAAA,0BACA,IAAA5O,EAAAwI,EAAAvI,UA6BA,OA3BAD,EAAAkqB,uBAAA,WACA5pB,KAAAwJ,QAAAmgB,kBAIA3pB,KAAA6pB,WAAA,IAAA3B,GAAA,EAAAloB,MACAA,KAAA8pB,WAAA,IAAA5B,EAAA,EAAAloB,MAEAA,KAAAsI,GAAA,WAAAtI,KAAA+pB,2BAGArqB,EAAAqqB,wBAAA,WACA/pB,KAAA6pB,WAAAtc,WACAvN,KAAA8pB,WAAAvc,WACAvN,KAAAsI,GAAA,aAAAtI,KAAAgqB,4BAGAtqB,EAAAsqB,0BAAA,WACAhqB,KAAA6pB,WAAAnc,aACA1N,KAAA8pB,WAAApc,aACA1N,KAAAqQ,IAAA,aAAArQ,KAAAgqB,4BAKA9hB,EAAAggB,iBAEAhgB","file":"cards~homepage.bundle.8fbc3d92.js","sourcesContent":["/*!\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( [\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.Unipointer = factory(\n window,\n window.EvEmitter\n );\n }\n\n}( window, function factory( window, EvEmitter ) {\n\n'use strict';\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._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\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n for ( var i=0; i < touches.length; i++ ) {\n var touch = touches[i];\n if ( touch.identifier == this.pointerIdentifier ) {\n return touch;\n }\n }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n if ( button && ( button !== 0 && button !== 1 ) ) {\n return;\n }\n this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if ( event.button || this.isPointerDown ) {\n return;\n }\n\n this.isPointerDown = true;\n // save pointer identifier to match up touch events\n this.pointerIdentifier = pointer.pointerId !== undefined ?\n // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n\n this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n mousedown: [ 'mousemove', 'mouseup' ],\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n if ( !event ) {\n return;\n }\n // get proper events to match start event\n var events = postStartEvents[ event.type ];\n // bind events to node\n events.forEach( function( eventName ) {\n window.addEventListener( eventName, this );\n }, this );\n // save these arguments\n this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if ( !this._boundPointerEvents ) {\n return;\n }\n this._boundPointerEvents.forEach( function( eventName ) {\n window.removeEventListener( eventName, this );\n }, this );\n\n delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerMove( event, event );\n }\n};\n\nproto.ontouchmove = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerMove( event, touch );\n }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerUp( event, event );\n }\n};\n\nproto.ontouchend = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerUp( event, touch );\n }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n this._pointerDone();\n this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n};\n\nproto._pointerReset = function() {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerCancel( event, event );\n }\n};\n\nproto.ontouchcancel = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerCancel( event, touch );\n }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n this._pointerDone();\n this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// ----- ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n};\n\n// ----- ----- //\n\nreturn Unipointer;\n\n}));\n","/*!\n * 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( [\n 'unipointer/unipointer'\n ], function( Unipointer ) {\n return factory( window, Unipointer );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('unipointer')\n );\n } else {\n // browser global\n window.Unidragger = factory(\n window,\n window.Unipointer\n );\n }\n\n}( window, function factory( window, Unipointer ) {\n\n'use strict';\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n this._bindHandles( false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\nproto._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\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n 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\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\nvar cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n SELECT: true,\n OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\nproto.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\nproto.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 */\nproto.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\nproto._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\nproto.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 */\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto._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\nproto._dragStart = function( event, pointer ) {\n this.isDragging = true;\n // prevent clicks\n this.isPreventingClicks = true;\n this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._dragMove = function( event, pointer, moveVector ) {\n // do not drag if not dragging yet\n if ( !this.isDragging ) {\n return;\n }\n\n this.dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n event.preventDefault();\n this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._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\n this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.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\nproto._staticClick = function( event, pointer ) {\n // ignore emulated mouse up clicks\n if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n return;\n }\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\nproto.staticClick = function( event, pointer ) {\n this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// ----- ----- //\n\nreturn Unidragger;\n\n}));\n","import $ from 'wee-dom';\nimport Flickity from 'flickity';\n\nconst makeCarousel = (element, modifierClass = false, dataRef = false) => {\n const slider = new Flickity(element, {\n wrapAround: false,\n pageDots: false,\n cellAlign: 'left',\n on: {\n ready() {\n $('.flickity-button').addClass(modifierClass).attr('data-ref', dataRef);\n },\n },\n });\n\n return slider;\n};\n\nexport { makeCarousel };","// animate\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'fizzy-ui-utils/utils',\n ], function( utils ) {\n return factory( window, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, utils ) {\n\n'use strict';\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n } );\n }\n};\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\n if ( this.options.wrapAround && this.cells.length > 1 ) {\n x = utils.modulo( x, this.slideableWidth );\n x -= this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n this.setTranslateX( x, this.isAnimating );\n this.dispatchScrollEvent();\n};\n\nproto.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 ?\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.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\nproto.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\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 ) + '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n var isResting = !this.isPointerDown &&\n 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\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n for ( var i = 0; i < cells.length; i++ ) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift( cellShift );\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i = 0; i < cells.length; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.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\nproto.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\nreturn proto;\n\n} ) );\n","// page dots\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], 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(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n // events\n this.handleClick = this.onClick.bind( this );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.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\nPageDots.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\nPageDots.prototype.setDots = function() {\n // get difference between number of slides and number of dots\n var delta = this.parent.slides.length - this.dots.length;\n if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.prototype.addDots = function( count ) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n var length = this.dots.length;\n var max = length + count;\n\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\n this.holder.appendChild( fragment );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( function( dot ) {\n this.holder.removeChild( dot );\n }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.className = 'dot';\n 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\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n var target = event.target;\n // only care about dot clicks\n if ( target.nodeName != 'LI' ) {\n return;\n }\n\n this.parent.uiChange();\n var index = this.dots.indexOf( target );\n this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true,\n} );\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n // events\n this.on( 'activate', this.activatePageDots );\n this.on( 'select', this.updateSelectedPageDots );\n this.on( 'cellChange', this.updatePageDots );\n this.on( 'resize', this.updatePageDots );\n this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n} ) );\n","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n","// 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( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate',\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n/* eslint-enable max-params */\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n 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\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true,\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // 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\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts - options to extend\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if ( this.options.rightToLeft ) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener( 'keydown', this );\n }\n\n this.emitEvent('activate');\n 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\nproto._createSlider = function() {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[ this.originSide ] = 0;\n this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {[Array, NodeList, HTMLElement]} elems - elements to make into cells\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = cellElems.map( function( cellElem ) {\n return new Cell( cellElem, this );\n }, this );\n\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for ( var i = index; i < len; i++ ) {\n var cell = this.cells[i];\n cell.setPosition( cellX );\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n } );\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) {\n return;\n }\n\n var slide = new Slide( this );\n this.slides.push( slide );\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n var canCellFit = this._getCanCellFit();\n\n this.cells.forEach( function( cell, i ) {\n // just add cell if first cell in slide\n if ( !slide.cells.length ) {\n slide.addCell( cell );\n return;\n }\n\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n if ( canCellFit.call( this, i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide( this );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n }, this );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n var groupCells = this.options.groupCells;\n if ( !groupCells ) {\n return function() {\n return false;\n };\n } else if ( typeof groupCells == 'number' ) {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt( groupCells, 10 );\n return function( i ) {\n return ( i % number ) !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' &&\n groupCells.match( /^(\\d+)%$/ );\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n return function( i, slideWidth ) {\n /* 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()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5,\n },\n left: {\n left: 0,\n right: 1,\n },\n right: {\n right: 0,\n left: 1,\n },\n};\n\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // contain each cell target\n this.slides.forEach( function( slide ) {\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max( slide.target, beginBound );\n slide.target = Math.min( slide.target, endBound );\n }\n }, this );\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery && this.$element ) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if ( event ) {\n // create jQuery event\n var jQEvent = 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 */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) {\n return;\n }\n 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\nproto._wrapSelect = function( index ) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if ( !isWrapping ) {\n return index;\n }\n var wrapIndex = utils.modulo( index, len );\n // go to shortest\n var delta = Math.abs( wrapIndex - this.selectedIndex );\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n if ( !this.isDragSelect && backWrapDelta < delta ) {\n index += len;\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n var slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.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\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 */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell = this.queryCell( value );\n if ( !cell ) {\n return;\n }\n\n var index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.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 */\nproto.getCell = function( elem ) {\n // loop through cells to get the one that matches\n for ( var i = 0; i < this.cells.length; i++ ) {\n var cell = this.cells[i];\n if ( cell.element == elem ) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n elems.forEach( function( elem ) {\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }, this );\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n for ( var i = index - adjCount; i <= index + adjCount; i++ ) {\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n var slide = this.slides[ slideIndex ];\n if ( slide ) {\n cellElems = cellElems.concat( slide.getCellElements() );\n }\n }\n return cellElems;\n};\n\n/**\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 */\nproto.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\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.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\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.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\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility || isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.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\nproto.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({ preventScroll: true });\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\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n 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\nproto.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\nutils.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 */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn 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( [\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n} )( window, function factory( Flickity ) {\n return Flickity;\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( 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\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * 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\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\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n","// drag\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unidragger, utils ) {\n return factory( window, Flickity, Unidragger, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n} );\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nproto._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\nproto.onActivateDrag = function() {\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.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\nproto.bindDrag = function() {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.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\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\n this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._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\nvar focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isFocusNode ) {\n this.focus();\n }\n};\n\nproto._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\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n 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\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) {\n return;\n }\n event.preventDefault();\n\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\n if ( !this.options.wrapAround && this.slides.length ) {\n // slow drag\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n if ( !this.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\n if ( this.options.freeScroll && !this.options.wrapAround ) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select( index );\n delete this.isDragSelect;\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected slide\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // if contain, keep going if distance is equal to minDistance\n function( 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 */\nproto.getSlideDistance = function( x, index ) {\n var len = this.slides.length;\n // wrap around if at least 2 slides\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var slide = this.slides[ slideIndex ];\n if ( !slide ) {\n return null;\n }\n // add distance for wrap-around slides\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index/len ) : 0;\n return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100 ) {\n return 0;\n }\n\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n var delta = this.previousDragX - this.dragX;\n if ( distance > 0 && delta > 0 ) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if ( distance < 0 && delta < 0 ) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n // get clickedCell, if cell was clicked\n var clickedCell = this.getParentCell( event.target );\n var cellElem = clickedCell && clickedCell.element;\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n}\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","/**\n * 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( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.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\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\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\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\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n","// slide\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( function( cell ) {\n cell.select();\n } );\n};\n\nproto.unselect = function() {\n this.cells.forEach( function( cell ) {\n cell.unselect();\n } );\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\nreturn Slide;\n\n} ) );\n","// lazyload\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n cellElems.forEach( function( cellElem ) {\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n } );\n // load lazy images\n lazyImages.forEach( function( img ) {\n new LazyLoader( img, this );\n }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.nodeName == 'IMG' ) {\n 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], ' +\n '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 */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n // get src & srcset\n var src = this.img.getAttribute('data-flickity-lazyload') ||\n 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\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n this.img.classList.add( className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n} ) );\n","// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'fizzy-ui-utils/utils',\n './flickity',\n ], function( EvEmitter, utils, Flickity ) {\n return factory( EvEmitter, utils, Flickity );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EvEmitter,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Player -------------------------- //\n\nfunction 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\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n var isPageHidden = document.hidden;\n if ( isPageHidden ) {\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function() {\n // do not tick if not playing\n if ( this.state != 'playing' ) {\n return;\n }\n\n var time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if paused\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isPageHidden = document.hidden;\n this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n this.play();\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true,\n} );\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n this.player = new Player( this );\n\n this.on( 'activate', this.activatePlayer );\n this.on( 'uiChange', this.stopPlayer );\n this.on( 'pointerDown', this.stopPlayer );\n this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n this.player.play();\n};\n\nproto.stopPlayer = function() {\n this.player.stop();\n};\n\nproto.pausePlayer = function() {\n this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n this.player.stop();\n this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n this.player.unpause();\n this.element.removeEventListener( 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n} ) );\n","// add, remove cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n cells.forEach( function( cell ) {\n fragment.appendChild( cell.element );\n } );\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {[Element, Array, NodeList]} elems - Elements to insert\n * @param {Integer} index - Zero-based number to insert\n */\nproto.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\n if ( index === 0 ) {\n // prepend, add to start\n this.cells = cells.concat( this.cells );\n } else if ( isAppend ) {\n // append, add to end\n this.cells = this.cells.concat( cells );\n } else {\n // insert in this.cells\n var endCells = this.cells.splice( index, len - index );\n this.cells = this.cells.concat( cells ).concat( endCells );\n }\n\n this._sizeCells( cells );\n this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {[Element, Array, NodeList]} elems - ELements to remove\n */\nproto.remove = function( elems ) {\n var cells = this.getCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\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\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 */\nproto.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = this.cells.indexOf( cell );\n this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n * @param {Boolean} isPositioningSlider - Positions slider after selection\n */\nproto.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\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\nreturn Flickity;\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 // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n","// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size',\n ], function( getSize ) {\n return factory( window, getSize );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n this.element.style.position = 'absolute';\n this.element.setAttribute( 'aria-hidden', 'true' );\n this.x = 0;\n this.shift = 0;\n this.element.style[ this.parent.originSide ] = 0;\n};\n\nproto.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\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n // render position of cell with in slider\n var sideOffset = this.parent.originSide === 'left' ? 1 : -1;\n\n var adjustedX = this.parent.options.percentPosition ?\n x * sideOffset * ( this.parent.size.innerWidth / this.size.width ) :\n x * sideOffset;\n\n this.element.style.transform = 'translateX(' +\n this.parent.getPositionValue( adjustedX ) + ')';\n};\n\nproto.select = function() {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.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 */\nproto.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n} ) );\n","// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], 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(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n var element = this.element = document.createElement('button');\n element.className = 'flickity-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\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\nPrevNextButton.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\nPrevNextButton.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\nPrevNextButton.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\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.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\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\n this.enable();\n return;\n }\n var lastIndex = slides.length ? slides.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30,\n },\n} );\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n if ( !this.options.prevNextButtons ) {\n return;\n }\n\n this.prevButton = new PrevNextButton( -1, this );\n this.nextButton = new PrevNextButton( 1, this );\n\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n} ) );\n"],"sourceRoot":""}