{"version":3,"sources":["scripts.min.js"],"names":["Element","prototype","matches","selector","this","matchesSelector","msMatchesSelector","webkitMatchesSelector","call","document","window","embed","svg","g","viewBox","getAttribute","fragment","createDocumentFragment","clone","cloneNode","setAttribute","childNodes","length","appendChild","firstChild","loadreadystatechange","xhr","onreadystatechange","readyState","x","createElement","innerHTML","responseText","s","splice","map","array","querySelector","replace","$uses","polyfill","requestAnimationFrame","$svgCache","getElementsByTagName","test","navigator","userAgent","match","setTimeout","oninterval","use","i","parentNode","nodeName","$url","split","url_root","url_hash","removeChild","XMLHttpRequest","open","send","push","getElementById","$helpers","$$","_is_document","$node","nodeType","DOCUMENT_NODE","_is_window","_is_array","$obj","Object","toString","_is_input","tagName","_query","context","$nodes","slice","substr","getElementsByClassName","querySelectorAll","_create_element","html","$div","trim","$filtered_nodes","len","toLowerCase","_get_filtered_nodes","_get_scroll_offset","top","left","pageXOffset","pageYOffset","scrollTop","scrollLeft","_get_vendor_property","property","css_prefixes","cap_name","charAt","toUpperCase","orig_name","style","_get_prefixed_event","type","$types","prefix","$prefixes","_get_event_type","animation","MozAnimation","WebkitAnimation","msAnimation","transition","MozTransition","WebkitTransition","msTransition","documentMode","is_helper","find","$this","concat","reduce","a","b","indexOf","children","$child_node","$filtered_child_nodes","nextSibling","get_parent","maybe_class","name_only","tag_name","class_name","className","append","j","obj_len","prepend","insertBefore","before","after","remove","remove_children","empty","next_sibling","prev_sibling","previousSibling","get_siblings","$siblings","$children","get_attribute","attribute","value","set_attribute","removeAttribute","set_text","text","textContent","get_text","insert_html","outer","outerHTML","get_html","get_file","$file","filename","filetype","filesize","files","name","size","is_tag","tagname","is_visible","$styles","getComputedStyle","offsetWidth","offsetHeight","display","parentElement","index","element","for_each","callback","is_checked","checked","add_class","trimmed_classes","classes","$selector","updated","String","selector_len","sort","join","remove_class","has_class","classList","contains","focus","click","set_style","property_vendor","hasOwnProperty","all","letter","get_style","getPropertyValue","set_data","key","get_data","get_width","width","documentElement","clientWidth","Math","max","body","scrollWidth","get_height","height","clientHeight","scrollHeight","get_offset_top","offsetTop","offsetParent","get_offset_left","offsetLeft","get_scroll_top","scroll_top","get_scroll_left","scroll_left","set_value","get_value","add_event","listener","event_listener","event","types_len","addEventListener","load_script","url","$head","$script","src","random","onload","get","$ajax","status","set_hash","hash","history","replaceState","location","pathname","title","merge_objects","$obj1","$obj2","constructor","scroll_to","to","duration","diff","step","scrollBy","abs","get_touch_range","dist_x","dist_y","degrees","theta","atan2","PI","floor","is_top","is_right","is_bottom","is_left","$html","_find","needle","device","iphone","ipod","ipad","ios","android","android_phone","android_tablet","windows","windows_phone","windows_tablet","mobile","tablet","add","support","touch","msMaxTouchPoints","css_property_found","prefixes","_has_css_property","Prefetch","$prefetch_link","_$prefetch_link","_$options","init","_prefetch","_prerender","$link","$prefetch_links","global","factory","exports","module","define","amd","Swiper","doc","removeEventListener","activeElement","blur","createEvent","initEvent","win","CustomEvent","Image","Date","screen","clearTimeout","Dom7","arr","$","els","tempParent","toCreate","unique","uniqueArray","fn","Class","Methods","addClass","removeClass","hasClass","toggleClass","toggle","attr","attrs","arguments$1","arguments","attrName","removeAttr","data","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","webkitTransitionDuration","transitionDuration","on","assign","args","eventType","targetSelector","capture","handleLiveEvent","e","target","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","event$1","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","parseFloat","outerHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollY","scrollX","css","props","prop","each","compareWith","child","eq","returnIndex","newChild","tempDiv","this$1","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","closest","foundElements","found","toAdd","keys","forEach","methodName","testDiv","Utils","deleteProps","obj","object","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","parseUrlQuery","params","param","query","urlToParse","href","paramsPart","decodeURIComponent","isObject","o","extend","len$1","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","enumerable","Support","Modernizr","DocumentTouch","pointerEvents","pointerEnabled","PointerEvent","prefixedPointerEvents","msPointerEnabled","transforms3d","csstransforms3d","flexbox","observer","passiveListener","supportsPassive","opts","defineProperty","gestures","SwiperClass","self","eventsListeners","eventName","staticAccessors","components","configurable","priority","method","once","onceHandler","eventHandler","emit","Array","isArray","useModulesParams","instanceParams","instance","modules","moduleName","useModules","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","create","set","installModule","proto","static","install","m","defineProperties","update","updateSize","swiper","$el","isHorizontal","isVertical","parseInt","updateSlides","$wrapperEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","ceil","slidesPerView","slidesPerColumnFill","newSlidesGrid","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","swiperSlideSize","centeredSlides","slidesPerGroup","effect","setWrapperSize","i$1","slidesGridItem","i$2","slidesGridItem$1","centerInsufficientSlides","allSlidesSize","slideSizeValue","allSlidesOffset","snap","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","activeIndex","swiperSlideOffset","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","visibleSlides","slideProgress","minTranslate","slideBefore","slideAfter","progress","updateProgress","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","loop","slideDuplicateClass","slideDuplicateActiveClass","nextSlide","slideNextClass","prevSlide","slidePrevClass","slideDuplicateNextClass","slideDuplicatePrevClass","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","y","previousTranslate","transition$1","transitionStart","runCallbacks","direction","autoHeight","dir","animating","slideTo","internal","slideIndex","preventInteractionOnTransition","initialSlide","initialized","allowSlideNext","allowSlidePrev","onSlideToWrapperTransitionEnd","destroyed","slideToLoop","newIndex","loopedSlides","slideNext","loopFix","_clientLeft","slidePrev","normalize","val","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","loopAdditionalSlides","prependSlides","appendSlides","loopDestroy","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","Device","ua","androidChrome","desktop","cordova","phonegap","os","osVersion","webView","osVersionArr","metaViewport","minimalUi","pixelRatio","devicePixelRatio","onResize","breakpoints","setBreakpoint","freeMode","newTranslate","min","attachEvents","touchEvents","wrapperEl","onTouchStart","touchEventsData","touches","originalEvent","isTouchEvent","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","threshold","allowThresholdMove","preventDefault","formElements","allowTouchMove","touchStartPreventDefault","onTouchMove","preventedByNestedSwiper","touchReleaseOnEdges","touchAngle","diffX","diffY","sqrt","pow","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","velocities","position","time","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","clickTimeout","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","touchEventsTarget","start","passiveListeners","passive","move","end","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakPointsParams","originalParams","needsReLoop","points","point","breakpointsInverse","innerWidth","Browser","isIE","isEdge","isSafari","isUiWebView","defaults","uniqueNavElements","preloadImages","updateOnImagesReady","noSwipingClass","containerModifierClass","slideClass","slideBlankClass","wrapperClass","runCallbacksOnInit","prototypes","wasLocked","navigation","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","SwiperClass$$1","prototypeGroup","protoMethod","moduleParamName","swiperParams","passedParams","swipers","containerEl","newParams","touchEventsTouch","touchEventsDesktop","__proto__","spv","breakLoop","translateValue","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","Device$1","Support$1","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","attach","options","mutations","observerUpdate","observe","attributes","childList","characterData","observers","observeParents","containerParents","disconnect","Observer$1","Virtual","force","ref","ref$1","addSlidesBefore","addSlidesAfter","ref$2","previousFrom","from","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","prependIndexes","appendIndexes","cache","$slideEl","newCache","cachedIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","shiftKey","altKey","ctrlKey","metaKey","keyboard","onlyInViewport","inView","windowWidth","windowHeight","innerHeight","swiperOffset","swiperCoord","returnValue","enable","disable","Keyboard$1","Mousewheel","lastScrollTime","isSupported","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","sensitivity","timeout","autoplay","autoplayDisableOnInteraction","stop","getTime","eventsTarged","Navigation","$nextEl","$prevEl","disabledClass","lockClass","nextEl","prevEl","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bullet","$bullet","bulletIndex","bulletActiveClass","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","formatFractionCurrent","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","renderFraction","currentClass","totalClass","renderProgressbar","progressbarFillClass","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","scrollbarHide","setDragPosition","positionRatio","clientX","clientY","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragEl","draggable","Parallax","setTransform","p","currentOpacity","currentScale","parallax","slideEl","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","maxRatio","isScaling","onGestureChange","scaleMove","minRatio","onGestureEnd","changedTouches","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Controller","LinearSpline","guess","i1","i3","binarySearch","interpolate","getInterpolateFunction","c","controller","spline","setTranslate$1","multiplier","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","a11y","makeElFocusable","addElRole","role","addElLabel","label","disableEl","enableEl","onEnterKey","$targetEl","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","History","pushState","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","pathArray","part","setHistory","slugify","includes","currentState","state","HashNavigation","onHashCange","newHash","setHash","watchState","Autoplay","run","$activeSlideEl","reverseDirection","stopOnLastSlide","running","pause","paused","waitForTransition","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowOffset","shadowAngle","sin","cos","scale1","shadowScale","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","perspectiveOrigin","Thumbs","thumbsParams","thumbs","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","currentIndex","initial","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","slideThumbActiveClass","hideOnClick","toEdge","fromEdge","bulletElement","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","dragClass","containerClass","zoomedSlideClass","touchStart","touchEnd","doubleTap","loadOnTransitionStart","preloaderClass","scroll","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","beforeTransitionStart","sliderFirstMove","slideChange","beforeDestroy","BackgroundImageSlider","$slider","_this","$slides","$dots","$prev","$next","oldindex","intervall","touch_start_x","_init_mouse","_init_touch","setInterval","_callIntervall","_changeSlider","clearInterval","touch_x","$links","$button","$buttons","FocusMethod","focus_method","last_focus_method","_on_key_down","_on_mouse_down","_on_touch_start","_on_focus","_on_blur","_on_window_blur","Tooltip","$tooltip_wrapper","$tooltip","_temp_disabled","_perm_disabled","_focused","tooltip_id","$tooltip_trigger","_check_tooltip","_hide_tooltip","_keyboard_nav","_show_tooltip","disabled","$tooltip_wrappers","OffCanvasMenu","$toggle_offcanvas_menu","controls","$offcanvas_menu","$main_menuitems_with_sub_menu","$focus_elements","focus_element","$offcanvas_menu_state","$key","tab","_init_accessibility","_init_keyboard","$main_menuitem_with_sub_menu","_on_click_main_menuitem","$main_menuitem","_focus_element_with_shift_tab_key","_focus_element_with_tab_key","tab_index","$focus_element","_toggle_sub_menus","is_active_menuitem","$parent_menuitems","_get_parent_menu_elements","sub_menu_is_open","$findings","False","OffCanvasMenuOpener","$open_offcanvas_menu","$close_offcanvas_menu","enter","escape","space","_toggle_menu","_open_menu","_close_menu","_scroll_to_top","interval","$anchor","FormHelpers","_file_upload","_select","$file_name","$file_button","FormValidation","$form","_$form","_$inputs","_$inputs_checkbox","_$selects","_$button","_$error_msg_button","inputs_len","$input","_input_keyup","_input_blur","inputs_checkbox_len","$input_checkbox","_input_checkbox_click","_input_checkbox_keyup","_input_checkbox_blur","selects_len","$select","_select_change","_select_blur","_submit","_check_submit_status","_validate_input","id","$error_warning","pattern","regexp","RegExp","_validate_input_file","required","_validate_input_checkbox","_validate_select","$wrapper","error_msg_button_id","enable_submit_button","_show_first_error","$first_input_error","top_position","$forms","FormCache","_form_name","_$cache","_init_events","_restore_cache","_save_cache","_reset_cache","selectedIndex","localStorage","setItem","domain","JSON","stringify","$cache","getItem","parse","is_valid","removeItem","_get_style","$element","FormTextareaAutogrow","$textarea","default_height","line_height","padding_bottom","padding_top","_set_textarea_height","_set_style","$textareas","$secure_targets","$secure_target","selectLocation","$location_data","$locations_data","FormUrlParameters","_get_url_parameters","$parameters","_set_inputs_value","$inputs","$pair","$parameter","selected_select","_checked_input_radio","defaultChecked","defaultValue","$option","$options","defaultSelected","FormSearchDataList","$search","$submit","datalist","list","datalist_loaded","datalist_inserted","_focus","_get_datalist","_get_url","$datalist","sessionStorage","_get_sorted_datalist","_create_datalist","$a","$b","a_value","b_value","$datalist_entry","FormSearch","$input_search","_on_input","ImageGallery","$overlay","$previous","$close","_current_index","_touch_flag","_init_animations","_overlay_transtion_end","_bounce_animation_end","_open","_show_previous_image","_show_next_image","_close","_hide_overlay","_touch_start_x","_touch_start_y","touch_y","_prepare_overlay","_show_overlay","gallery","_current_gallery","$full_images","$current_images","$full_image","_load_image","_preload_previous_image","_preload_next_image","_update_offset","$figure","$image","image_source","image_description","$spinner","$figcaption","AnimationHelpers","$animated_element","_$animated_element","_offset","$show_animation","_is_in_viewport","_offset_top","offset_top","_remove_scroll_event","$animated_elements","VpiDiagram","$vpi_diagram","$grid","$grid_text","$grid_points","$months","$legend","$year_label","$select_year","$switch_view","$infolist_section","$output","svg_namespace","$months_and_values","$legend_text","bounds","timer","_get_data_for_year","_year_changed","_year_selected_by_user","_switch_view","_display_months_two_row","getBBox","setAttributeNS","_calc_grid_bounds","_change_grid","_change_months_label","_change_lines","_change_points","_change_legend","_change_year_label","_change_table_view","year","$table","innerText","month","avg","middle","_calc_x_coordinate","array_position","_calc_y_coordinate","toFixed","$old_texts","$svg_text","createElementNS","createTextNode","$old_circles","$svg_circle","x_coordinate","y_coordinate","_change_output","$old_lines","$svg_line","MapChartData","$map_chart","parent_country","$countries","country_codes","AC","AD","AE","AF","AG","AI","AL","AM","AN","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BU","BV","BW","BY","BZ","CA","CC","CD","CE","CF","CG","CH","CI","CK","CL","CM","CN","CO","CP","CR","CS","CU","CV","CW","CX","CY","CZ","DE","DG","DJ","DK","DM","DO","DZ","EA","EC","EE","EG","EH","ER","ES","ET","EU","FI","FJ","FK","FM","FO","FR","FX","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","IC","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NT","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SU","SV","SX","SY","SZ","TA","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","YU","ZA","ZM","ZR","ZW","$sections","costs_by_country_name","country_codes_by_name","code","daily_fee","nightly_fee","tds","country","additional_values","h","country_name","costs","MapChart","$map_chart_image","$zoom_in","$zoom_out","$drag_area","$touch_info","zoom_increase","min_zoom","max_zoom","x_offset","y_offset","start_event","old_event","_zoom_in","_zoom_out","_drag","_setup_map_chart","_update_map_chart","_proof_zoom","_proof_offest","WebkitTransform","_convert_event","_calc_offset_for_drag","_manage_touch_interaction","hypotenuse_now","hypotenuse_start","$country","removeProperty","fillOpacity","_show_output","$show_more_content","content_id","$content","$vcards","$vcard","Slider","$slider_wrapper","stop_on_hover","_next_slide","_set_height","_prev_slide","_slide","_manage_control","highest","$sliders","Dialog","$dialog_wrapper","$close_dialogs","$dialog_focus","$reset_button","$submit_button","dialog_id","$open_dialog","$close_dialog","_hide_dialog","_auto_open_dialog","_expiration_date","expiration_date","auto_open_dialog","days","$dialog_wrappers","GoogleMaps","data_id","map_is_ready","_infowindow_is_open","static_map_urls","_extend","$extended","deep","merge","map_type","direction_color","_geocoder_response","$mapdata","mapdata","street_address","postal_code","locality","$geocoder","geocode","address","$results","google","maps","GeocoderStatus","OK","latlng","geometry","latitude","lat","longitude","lng","OVER_QUERY_LIMIT","Geocoder","LatLng","_latlng_loaded","_init_map","$map","Map","mapTypeId","MapTypeId","scrollwheel","disableDefaultUI","disable_default_ui","map_style","zoomControlOptions","ControlPosition","TOP_RIGHT","mapTypeControlOptions","TOP_LEFT","streetViewControlOptions","$bounds","LatLngBounds","_init_infowindow","_change_travel_mode","_set_markers","_init_directions","_limit_zoomlevel","_init_autoselect","_init_static_maps","map_resize","debug","addDomListener","console","log","getCenter","_$infowindow","InfoWindow","maxWidth","addListener","close","$travel_mode","marker_href","marker_width","marker_height","infowindow","_remove_duplicated_markers","$marker","Marker","Animation","DROP","icon","scaledSize","Size","optimized","open_infowindow","getZIndex","fitBounds","addListenerOnce","getZoom","setZoom","_remove_all_markers","original_infowindow","$latlng","$duplicates","_clean_map","$polylines","setMap","$static_maps","len_i","_update_static_maps","daddr","$direction","$panel_wrapper","$panel_title","$panel","$directions_service","DirectionsService","$saddr","$daddr","travel_mode","directionsmode","destination","saddr","$input_error","DirectionsTravelMode","DRIVING","TRANSIT","BICYCLING","WALKING","route","origin","travelMode","$result","DirectionsStatus","$polyline","$route","routes","$legs","legs","$steps","steps","warnings","distance_text","duration_text","static_paths","template","$route_bounds","start_address","steps_len","instructions","start_location","Polyline","path","strokeColor","strokeOpacity","strokeWeight","end_address","copyrights","$start_marker","start_marker_href","start_marker_width","start_marker_height","mapdata_len","setVisible","_google_analytics_tracking","has_google_analytics","ga","show_marker","_get_current_index","panTo","_$infowindow_mapdata","setContent","setCenter","$google_maps_data","Accordion","$accordion","$tab","anchor","one_tab_open","_setup_accordion","_open_tabpanel","_toggle_tabpanel","_on_resize","_close_tabpanel","$tabpanel","_get_tabpanel","maxHeight","max_height","13","32","35","36","37","38","39","40","_change_focused_tab","$accordions","$popup","$iframe","OnlinetoolPopup","$onlinetool","$body","zms_common","html_len","_create_popup","$onlinetools","SmoothScroll","has_animationend_event","_scroll_to","$target","$callback","$highlighted_target","_get_offset_top","_click_link","_change_select","parameter","$hash","search","scrollTo","dummySrc","fixRespimg","findPictureImgs","mq","HTMLPictureElement","$1","img","source","picture","firstElementChild","_pfLastSize","imgs","matchMedia","eminpx","alwaysCheckWDescriptor","evalId","pf","isSupportTestReady","noop","getImgAttr","setImgAttr","removeImgAttr","docElem","types","cfg","algorithm","srcAttr","srcsetAttr","supportAbort","curSrcProp","regWDesc","regSize","setOptions","picturefillCFG","fsCss","isVwDirty","cssCache","sizeLengthCache","DPR","units","px","alreadyRun","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","attachEvent","memoize","input","isSpace","regLength","buildStr","image2","width1","isDomReady","wait","timestamp","later","regReady","timerId","lastClientWidth","typeUri","evalCSS","string","parsedLength","Function","setResolution","candidate","sizesattr","w","cWidth","calcListLength","res","d","picturefill","opt","elements","plen","qsa","reevaluate","reselect","sel","selShort","setupRun","fillImg","teardownRun","ascendingSort","getCandidateForSrc","candidates","parseSet","makeUrl","warn","ns","supSrcset","supSizes","supPicture","u","setSize","matchesMedia","media","mMQ","calcLength","sourceSizeValue","supportsType","parseSize","sourceSizeStr","cands","collectCharacters","regEx","chars","exec","substring","pos","descriptors","currentDescriptor","inputLength","parseDescriptors","lastChar","intVal","floatVal","pError","has1x","tokenize","parseSrcset","getEmValue","div","originalHTMLCSS","cssText","originalBodyCSS","sourceSizeListStr","uT","winningLength","strValue","unparsedSizesList","unparsedSizesListLength","unparsedSize","lastComponentValue","regexCssLengthWithUnits","regexCssCalc","str","chrctr","component","componentArray","listArray","parenDepth","inComment","pushComponent","pushComponentArray","parseComponentValues","parseSizes","setRes","applySetCandidate","bestCandidate","curSrc","curCan","candidateSrc","abortCurSrc","lowerValue","higherValue","dprValue","isCached","bonusFactor","bonus","imageData","dpr","sets","cached","setSrc","origWidth","getSet","parseSets","srcsetAttribute","imageSet","isWDescripor","srcsetParsed","hasPicture","pic","sources","getAllSourceElements","supported","parsed","srcSetCandidates","matchingSet","evaluated","extreme","evaled","vw","vh","em","rem","fillImgs","last","_","shift","slider","slider_breakpoint_width","slider_breakpoint_height","enableSlider","testi_swiper","filter_team","$team_filter_empty","$team_members","TriggeredKey"],"mappings":"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","file":"scripts.min.js","sourcesContent":["// MATCHES\n// Support für IE 9+, Edge und Android bis Version 4.4.4\n// -------------------------------------------------------------------------------------------------\n\n(function() {\n if (!Element.prototype.matches) {\n var matches = function(selector) {\n return (this.matchesSelector || this.msMatchesSelector || this.webkitMatchesSelector).call(this, selector);\n };\n\n Element.prototype.matches = matches;\n }\n})();\n\n\n// SVG4EVERYBODY\n// SVG-Support für alle IE-Versionen\n// -------------------------------------------------------------------------------------------------\n\n(function(document, window) {\n /* jshint nocomma: false */\n\n function embed(svg, g) {\n if (g) {\n var viewBox = !svg.getAttribute('viewBox') && g.getAttribute('viewBox'),\n fragment = document.createDocumentFragment(), clone = g.cloneNode(!0);\n\n for (viewBox && svg.setAttribute('viewBox', viewBox); clone.childNodes.length;) {\n fragment.appendChild(clone.firstChild);\n }\n\n svg.appendChild(fragment);\n }\n }\n\n function loadreadystatechange(xhr) {\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n var x = document.createElement('x');\n\n x.innerHTML = xhr.responseText, xhr.s.splice(0).map(function(array) {\n embed(array[0], x.querySelector('#' + array[1].replace(/(\\W)/g, '\\\\$1')));\n });\n }\n }, xhr.onreadystatechange();\n }\n\n function svg4everybody() {\n var $uses = document.getElementsByTagName('use'),\n polyfill = /\\bFirefox\\b|\\bEdge\\b|\\bTrident\\/[567]\\b|\\bVersion\\/7.0 Safari\\b/.test(navigator.userAgent) || (navigator.userAgent.match(/AppleWebKit\\/(\\d+)/) || [])[1] < 537,\n requestAnimationFrame = window.requestAnimationFrame || setTimeout,\n $svgCache = {};\n\n function oninterval() {\n for (var use, svg, i = 0; i < $uses.length;) {\n if (use = $uses[i], svg = use.parentNode, svg && /svg/i.test(svg.nodeName)) {\n var src = use.getAttribute('xlink:href'),\n $url = src.split('#'),\n url_root = $url[0],\n url_hash = $url[1];\n\n if (svg.removeChild(use), url_root.length) {\n var xhr = $svgCache[url_root] = $svgCache[url_root] || new XMLHttpRequest();\n xhr.s || (xhr.s = [], xhr.open('GET', url_root), xhr.send()), xhr.s.push([ svg, url_hash ]),\n loadreadystatechange(xhr);\n }\n else {\n embed(svg, document.getElementById(url_hash));\n }\n } else {\n i += 1;\n }\n }\n requestAnimationFrame(oninterval, 17);\n }\n\n if (polyfill) {\n oninterval();\n }\n }\n\n svg4everybody();\n}(document, window));\n\n// HELPERS\n// -------------------------------------------------------------------------------------------------\n\n(function(document, window) {\n var $helpers,\n $$;\n\n // Interne Funktion\n\n function _is_document($node) {\n return $node !== null && $node.nodeType === $node.DOCUMENT_NODE;\n }\n\n function _is_window($node) {\n return $node !== null && $node === window;\n }\n\n function _is_array($obj) {\n return Object.prototype.toString.call($obj) === '[object Array]';\n }\n\n function _is_input($node) {\n return $node.tagName === 'INPUT' ||\n $node.tagName === 'SELECT' ||\n $node.tagName === 'TEXTAREA';\n }\n\n function _query(selector, context) {\n var simpleRe = /^(#?[\\w-]+|\\.[\\w-.]+)$/,\n periodRe = /\\./g,\n slice = [].slice,\n $nodes;\n\n if (simpleRe.test(selector)) {\n switch(selector[0]) {\n case '#':\n $nodes = context.getElementById(selector.substr(1));\n break;\n case '.':\n $nodes = slice.call(context.getElementsByClassName(selector.substr(1).replace(periodRe, ' ')));\n break;\n default:\n $nodes = slice.call(context.getElementsByTagName(selector));\n }\n }\n else {\n $nodes = slice.call(context.querySelectorAll(selector));\n }\n\n return $nodes ? (_is_array($nodes) ? $nodes : [$nodes]) : [];\n }\n\n function _get_filtered_nodes($nodes, selector) {\n var $filtered_nodes = [];\n\n for (var i = 0, len = $nodes.length; $nodes !== null && (i < len); i++) {\n if ($nodes[i].nodeType === 1) {\n if (typeof selector === 'undefined') {\n $filtered_nodes.push($nodes[i]);\n }\n else if($nodes[i].tagName.toLowerCase() === selector) {\n $filtered_nodes.push($nodes[i]);\n }\n }\n }\n\n return $filtered_nodes;\n }\n\n function _create_element(html) {\n var $div = document.createElement('div');\n\n $div.innerHTML = html.trim(); // textContent/nodeValue funktionieren hier nicht,\n // Bug bei Popups: http://stackoverflow.com/a/25896886\n\n return _get_filtered_nodes($div.childNodes);\n }\n\n function _get_scroll_offset($node) {\n var top,\n left;\n\n if (_is_window($node)) {\n if (window.pageXOffset !== null) {\n top = window.pageYOffset;\n left = window.pageXOffset;\n }\n }\n else {\n top = $node.scrollTop;\n left = $node.scrollLeft;\n }\n\n return {\n top : top,\n left : left\n };\n }\n\n function _get_vendor_property(property) {\n var css_prefixes = ['Moz', 'ms', 'Webkit'],\n $div = document.createElement('div');\n\n if (property in $div) {\n return property;\n }\n\n var cap_name = property.charAt(0).toUpperCase() + property.slice(1),\n orig_name = property;\n\n for (var i = css_prefixes.length; i > 0; i--) {\n property = css_prefixes[i] + cap_name;\n\n if (property in $div.style) {\n return property;\n }\n }\n\n return orig_name;\n }\n\n function _camel_case_property(property) {\n return property.replace(/-([\\da-z])/gi, function(all, letter) {\n return letter.toUpperCase();\n });\n }\n\n function _get_prefixed_event(type, $types) {\n var $div = document.createElement('div').style,\n $prefixes = ['', 'Moz', 'ms', 'Webkit'],\n prefix;\n\n for (var i = 0, len = $prefixes.length; i < len; i++) {\n prefix = $prefixes[i] + type.charAt(0).toUpperCase() + type.substr(1, type.length - 4);\n\n if (prefix in $div) {\n return $types[prefix];\n }\n }\n\n return type;\n }\n\n function _get_event_type_wheel(type) {\n return type === 'wheel' ? 'onwheel' in document || document.documentMode >= 9 ? 'wheel' : 'mousewheel' : type;\n }\n\n function _get_event_type_animatedend(type) {\n return _get_prefixed_event(type, {\n 'animation' : 'animationend',\n 'MozAnimation' : 'animationend',\n 'WebkitAnimation' : 'webkitAnimationEnd',\n 'msAnimation' : 'MSAnimationEnd'\n });\n }\n\n function _get_event_type_transitionend(type) {\n return _get_prefixed_event(type, {\n 'transition' : 'transitionend',\n 'MozTransition' : 'transitionend',\n 'WebkitTransition' : 'webkitTransitionEnd',\n 'msTransition' : 'MSTransitionEnd'\n });\n }\n\n function _get_event_type(type) {\n type = _get_event_type_animatedend(type) || _get_event_type_transitionend(type);\n type = _get_event_type_wheel(type);\n\n return type;\n }\n\n // Erstellt Helpers Object\n\n $$ = function(selector, context) {\n context = context || document;\n return new $helpers(selector, context);\n };\n\n $helpers = function(selector, context) {\n var _this = this,\n $nodes = [];\n\n if (selector) {\n if (typeof selector === 'string') {\n selector = selector.trim();\n\n if (/<[a-z][\\s\\S]*>/i.test(selector)) {\n $nodes = _create_element(selector);\n }\n else {\n $nodes = _query(selector, context);\n }\n }\n else if (_is_array(selector)) {\n $nodes = selector;\n }\n else {\n $nodes = [selector];\n }\n }\n\n for (var i = 0, len = $nodes.length; i < len; i++) {\n _this[i] = $nodes[i];\n }\n\n _this.length = $nodes.length;\n\n return _this;\n };\n\n // Helpers API\n\n $helpers.prototype = {\n is_helper: true,\n\n find: function(selector) {\n var $this = this,\n $nodes = [],\n context;\n\n if ($this.length !== 0) {\n if ($this.length === 1) {\n $nodes = _query(selector, $this[0]);\n }\n else {\n for (var i = 0, len = $this.length; i < len; i++) {\n $nodes = $nodes.concat(\n _query(selector, $this[i])\n );\n }\n\n $nodes = $nodes.reduce(function(a, b) {\n if (a.indexOf(b) < 0) {\n a.push(b);\n }\n\n return a;\n }, []);\n }\n }\n\n return $$($nodes, context);\n },\n\n children: function(selector) {\n var $this = this,\n $filtered_child_nodes = [],\n $child_node;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n $child_node = this[i].firstChild;\n\n while ($child_node) {\n if ($child_node.nodeType === 1 && $child_node.matches(selector)) {\n $filtered_child_nodes.push($child_node);\n }\n\n $child_node = $child_node.nextSibling;\n }\n }\n\n return $$($filtered_child_nodes);\n },\n\n get_parent: function(selector) {\n var $this = this,\n maybe_class,\n name_only,\n tag_name,\n class_name,\n $obj;\n\n if ($this.length === 1) {\n $obj = $this[0];\n\n if (typeof selector !== 'undefined') {\n maybe_class = selector[0] === '.';\n name_only = maybe_class ? selector.slice(1) : selector;\n tag_name = name_only.toUpperCase();\n }\n\n do {\n $obj = $obj.parentNode;\n class_name = (' ' + $obj.className + ' ').replace(/[\\t\\r\\n\\f]/g, ' ');\n\n if ((typeof selector === 'undefined' && $obj.nodeType === 1) ||\n (maybe_class && class_name.indexOf(' ' + name_only + ' ') > -1) ||\n $obj.tagName === tag_name) {\n\n return $$($obj);\n }\n }\n while ($obj && $obj.nodeType !== 9);\n }\n },\n\n append: function($obj) {\n var $this = this;\n\n if (typeof $obj === 'string') {\n $obj = _create_element($obj);\n }\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, obj_len = $obj.length; j < obj_len; j++) {\n $this[i].appendChild($obj[j]);\n }\n }\n },\n\n prepend: function($obj) {\n var $this = this;\n\n if (typeof $obj === 'string') {\n $obj = _create_element($obj);\n }\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, obj_len = $obj.length; j < obj_len; j++) {\n $this[i].insertBefore($obj[j], $this[i].childNodes[0]);\n }\n }\n },\n\n before: function($obj) {\n var $this = this;\n\n if (typeof $obj === 'string') {\n $obj = _create_element($obj);\n }\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, obj_len = $obj.length; j < obj_len; j++) {\n $this[i].parentNode.insertBefore($obj[j], $this[i]);\n }\n }\n },\n\n after: function($obj) {\n var $this = this;\n\n if (typeof $obj === 'string') {\n $obj = _create_element($obj);\n }\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, obj_len = $obj.length; j < obj_len; j++) {\n $this[i].parentNode.insertBefore($obj[j], $this[i].nextSibling);\n }\n }\n },\n\n remove: function() {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n $this[i].parentNode.removeChild($this[i]);\n }\n },\n\n remove_children: function() {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n while ($this[i].firstChild) {\n $this[i].removeChild($this[i].firstChild);\n }\n }\n },\n\n empty: function() {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n while ($this[i].firstChild) {\n $this[i].removeChild($this[i].firstChild);\n }\n }\n },\n\n clone: function() {\n var $this = this;\n\n if ($this.length === 1) {\n return $$($this[0].cloneNode(true));\n }\n },\n\n next_sibling: function() {\n var $this = this;\n\n if ($this.length === 1) {\n var $obj = $this[0];\n\n do {\n $obj = $obj.nextSibling;\n }\n while ($obj && $obj.nodeType !== 1);\n\n return $$($obj);\n }\n },\n\n prev_sibling: function() {\n var $this = this;\n\n if ($this.length === 1) {\n var $obj = $this[0];\n\n do {\n $obj = $obj.previousSibling;\n }\n while ($obj && $obj.nodeType !== 1);\n\n return $$($obj);\n }\n },\n\n get_siblings: function() {\n var $this = this,\n $siblings = [];\n\n if ($this.length === 1) {\n var $obj = $this[0],\n $children = $obj.parentNode.children;\n\n for (var i = 0, len = $children.length; i < len; i++) {\n if ($children[i].nodeType === 1 && $children[i] !== $obj) {\n $siblings.push($children[i]);\n }\n }\n }\n\n return $$($siblings);\n },\n\n get_attribute: function(attribute) {\n var $this = this,\n value = null;\n\n if ($this.length === 1) {\n if (_is_input($this[0]) && attribute === 'value') {\n value = $this[0][attribute];\n }\n else {\n value = $this[0].getAttribute(attribute);\n }\n }\n\n return value === null ? '' : value;\n },\n\n set_attribute: function(attribute, value) {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n if (_is_input($this[i]) && attribute === 'value') {\n $this[i][attribute] = value;\n }\n else if (value) {\n $this[i].setAttribute(attribute, value);\n }\n else {\n $this[i].removeAttribute(attribute);\n }\n }\n },\n\n set_text: function(text) {\n var $this = this;\n\n if ($this.length === 1) {\n $this[0].textContent = text.toString().trim();\n }\n },\n\n get_text: function() {\n var $this = this,\n text = '';\n\n if ($this.length === 1) {\n text = $this[0].textContent.trim();\n }\n\n return text;\n },\n\n insert_html: function(html, outer) {\n var $this = this;\n\n if ($this.length === 1) {\n if (outer === true) {\n $this[0].outerHTML = html;\n }\n else {\n $this[0].innerHTML = html;\n }\n }\n },\n\n get_html: function(outer) {\n var $this = this,\n html = '';\n\n if ($this.length === 1) {\n if (outer === true) {\n html = $this[0].outerHTML;\n }\n else {\n html = $this[0].innerHTML;\n }\n }\n\n return html.trim();\n },\n\n get_file: function() {\n var $this = this,\n filename = '',\n filetype = '',\n filesize = 0,\n $file;\n\n if ($this.length === 1) {\n $file = $this[0].files;\n\n if ($file.length) {\n filename = $file[0].name;\n filesize = $file[0].size;\n filetype = $file[0].type;\n }\n }\n\n return {\n 'filename' : filename,\n 'filesize' : filesize,\n 'filetype' : filetype\n };\n },\n\n is_tag: function(tagname) {\n var $this = this,\n is_tag = false;\n\n if ($this.length === 1) {\n is_tag = $this[0].tagName.toLowerCase() === tagname;\n }\n\n return is_tag;\n },\n\n is_visible: function() {\n var $this = this,\n is_visible = false,\n $styles,\n $obj;\n\n if ($this.length === 1) {\n $obj = $this[0];\n is_visible = true;\n\n while ($obj && $obj.nodeType !== 9) {\n $styles = window.getComputedStyle($obj, null);\n\n if ($obj.offsetWidth === 0 &&\n $obj.offsetHeight === 0 &&\n $styles.display === 'none') {\n\n is_visible = false;\n break;\n }\n\n $obj = $obj.parentElement;\n }\n }\n\n return is_visible;\n },\n\n index: function(element) {\n var $this = this;\n\n if (typeof element === 'object') {\n for (var i = 0, len = $this.length; i < len; i++) {\n if ($this[i] === element) {\n return i;\n }\n }\n }\n else if (typeof element === 'number') {\n if (element === -1) {\n element = $this.length - 1;\n }\n\n return $$($this[element]);\n }\n },\n\n for_each: function(callback) {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n callback.call($this[i], i);\n }\n },\n\n is_checked: function() {\n var $this = this,\n is_checked = false;\n\n if ($this.length === 1) {\n is_checked = $this[0].checked;\n }\n\n return is_checked;\n },\n\n add_class: function(selector) {\n var $this = this,\n $selector = selector.split(' '),\n updated = false,\n trimmed_classes,\n classes;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n trimmed_classes = String.prototype.trim.call($this[i].getAttribute('class') || '');\n classes = trimmed_classes ? trimmed_classes.split(/\\s+/) : [];\n\n for (var j = 0, selector_len = $selector.length; j < selector_len; j++) {\n if (classes.indexOf($selector[j]) === -1) {\n classes.push($selector[j]);\n updated = true;\n }\n }\n\n if (updated) {\n $this[i].setAttribute('class', classes.sort().join(' '));\n updated = false;\n }\n }\n },\n\n remove_class: function(selector) {\n var $this = this,\n $selector = selector.split(' '),\n updated = false,\n trimmed_classes,\n classes,\n index;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n trimmed_classes = String.prototype.trim.call($this[i].getAttribute('class') || '');\n classes = trimmed_classes ? trimmed_classes.split(/\\s+/) : [];\n\n for (var j = 0, selector_len = $selector.length; j < selector_len; j++) {\n index = classes.indexOf($selector[j]);\n\n if (index > -1) {\n classes.splice(index, 1);\n updated = true;\n }\n }\n\n if (updated) {\n if (classes.length) {\n $this[i].setAttribute('class', classes.sort().join(' '));\n }\n else {\n $this[i].removeAttribute('class');\n }\n updated = false;\n }\n }\n },\n\n has_class: function(selector) {\n var $this = this,\n has_class = false;\n\n if ($this.length === 1) {\n has_class = $this[0].classList.contains(selector);\n }\n\n return has_class;\n },\n\n focus: function() {\n var $this = this;\n\n if ($this.length) {\n $this[0].focus();\n }\n },\n\n click: function() {\n var $this = this;\n\n if ($this.length) {\n $this[0].click();\n }\n },\n\n set_style: function($styles) {\n var $this = this,\n property_camel_case,\n property_vendor;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var property in $styles) {\n if ($styles.hasOwnProperty(property)) {\n property_camel_case = _camel_case_property(property);\n property_vendor = _get_vendor_property(property_camel_case);\n\n $this[i].style[property_vendor] = $styles[property];\n }\n }\n }\n },\n\n get_style: function(property) {\n var $this = this,\n style = '',\n $styles;\n\n if ($this.length === 1) {\n $styles = window.getComputedStyle($this[0], null);\n style = $styles.getPropertyValue(property);\n }\n\n return style;\n },\n\n set_data: function(key, value) {\n var $this = this;\n\n if ($this.length === 1) {\n $this[0][key] = value;\n }\n },\n\n get_data: function(key) {\n var $this = this;\n\n if ($this.length === 1) {\n return $this[0][key];\n }\n },\n\n get_width: function() {\n var $this = this,\n width = 0;\n\n if ($this.length === 1) {\n if (_is_window($this[0])) {\n width = document.documentElement.clientWidth;\n }\n else if (_is_document($this[0])) {\n width = Math.max(\n document.body.scrollWidth,\n document.body.offsetWidth\n );\n }\n else {\n width = this[0].offsetWidth;\n }\n }\n\n return width;\n },\n\n get_height: function() {\n var $this = this,\n height = 0;\n\n if ($this.length === 1) {\n if (_is_window($this[0])) {\n height = document.documentElement.clientHeight;\n }\n else if (_is_document($this[0])) {\n height = Math.max(\n document.body.scrollHeight,\n document.body.offsetHeight\n );\n }\n else {\n height = this[0].offsetHeight;\n }\n }\n\n return height;\n },\n\n get_offset_top: function() {\n var $this = this,\n top = 0,\n $obj;\n\n if ($this.length === 1) {\n $obj = $this[0];\n top = $obj.offsetTop;\n\n while ($obj = $obj.offsetParent) {\n top += $obj.offsetTop;\n }\n }\n\n return top;\n },\n\n get_offset_left: function() {\n var $this = this,\n left = 0,\n $obj;\n\n if ($this.length === 1) {\n $obj = $this[0];\n left = $obj.offsetLeft;\n\n while ($obj = $obj.offsetParent) {\n left += $obj.offsetLeft;\n }\n }\n\n return left;\n },\n\n get_scroll_top: function() {\n var $this = this,\n scroll_top = 0;\n\n if ($this.length === 1) {\n scroll_top = _get_scroll_offset($this[0]).top;\n }\n\n return scroll_top;\n },\n\n get_scroll_left: function() {\n var $this = this,\n scroll_left = 0;\n\n if ($this.length === 1) {\n scroll_left = _get_scroll_offset($this[0]).left;\n }\n\n return scroll_left;\n },\n\n set_value: function(value) {\n return this.set_attribute('value', value);\n },\n\n get_value: function() {\n return this.get_attribute('value');\n },\n\n add_event: function(type, listener) {\n var $this = this,\n $types = type.split(','),\n event_listener;\n\n event_listener = function(event) {\n listener.call(this, event);\n };\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, types_len = $types.length; j < types_len; j++) {\n type = _get_event_type($types[j].trim());\n\n $this[i].addEventListener(type, event_listener, false);\n }\n }\n },\n };\n\n // Ladet JavaScript-Code nach\n\n $$.load_script = function(url, callback) {\n var $head = document.getElementsByTagName('head')[0],\n $script = document.createElement('script');\n\n $script.src = (navigator.userAgent.indexOf('MSIE ') > 0) ? url + '?' + Math.random() : url;\n\n if (callback && typeof(callback) === 'function') {\n $script.onload = callback;\n }\n\n $head.appendChild($script);\n };\n\n // Ajax\n\n $$.get = function(url, callback) {\n if (window.XMLHttpRequest) {\n var $ajax = new XMLHttpRequest();\n\n $ajax.open('GET', url, true);\n\n $ajax.onload = function() {\n if (this.status === 200) {\n callback.call(this, this.responseText);\n }\n };\n\n $ajax.send();\n }\n };\n\n // Setzt hash\n\n $$.set_hash = function(hash) {\n if (window.history && window.history.replaceState) { // IE 10+\n hash = hash || window.location.pathname;\n window.history.replaceState(null, document.title, hash);\n }\n };\n\n // Verbindet zwei Objekte\n\n $$.merge_objects = function($obj1, $obj2) {\n for (var key in $obj2) {\n if ($obj2[key].constructor === Object) {\n $obj2[key] = $$.merge_objects($obj1[key], $obj2[key]);\n }\n else {\n $obj1[key] = $obj2[key];\n }\n }\n\n return $obj1;\n };\n\n // Scrollt zu\n\n $$.scroll_to = function(to, duration, callback) {\n var diff = to - $$(window).get_scroll_top(),\n step = diff / duration * 10;\n\n setTimeout(function() {\n window.scrollBy(0, step);\n\n if (Math.abs(diff) <= Math.abs(step)) {\n\n if (typeof callback === 'function') {\n callback();\n }\n\n return;\n }\n\n $$.scroll_to(to, duration - 10, callback);\n }, 10);\n };\n\n\n // Gibt die Touch-Richtung zurück\n\n $$.get_touch_range = function(dist_x, dist_y) {\n var theta = Math.atan2(-dist_x, dist_y),\n degrees;\n\n if (theta < 0) {\n theta += 2 * Math.PI;\n }\n\n degrees = Math.floor(theta * (180 / Math.PI) - 180);\n\n if (degrees < 0 && degrees > -180) {\n degrees = 360 - Math.abs(degrees);\n }\n\n return {\n is_top : degrees <= 40 || degrees >= 320,\n is_right : degrees >= 50 && degrees <= 130,\n is_bottom : degrees >= 140 && degrees <= 220,\n is_left : degrees >= 230 && degrees <= 310\n };\n };\n\n window.$$ = $$;\n}(document, window));\n\n// DEVICE\n// -------------------------------------------------------------------------------------------------\n\n(function(document, navigator, window) {\n var $html = document.querySelector('html');\n\n function _find(needle) {\n return navigator.userAgent.toLowerCase().indexOf(needle) !== -1;\n }\n\n window.device = {};\n\n device.iphone = _find('iphone');\n device.ipod = _find('ipod');\n device.ipad = _find('ipad');\n device.ios = device.iphone || device.ipod || device.ipad;\n device.android = _find('android');\n device.android_phone = device.android && _find('mobile');\n device.android_tablet = device.android && !_find('mobile');\n device.windows = _find('windows');\n device.windows_phone = device.windows && _find('phone');\n device.windows_tablet = device.windows && _find('touch');\n device.mobile = device.android_phone || device.iphone || device.ipod || device.windows_phone;\n device.tablet = device.ipad || device.android_tablet || device.windows_tablet;\n\n if (device.ios) {\n if (device.ipad) {\n $html.classList.add('ios', 'ipad', 'tablet');\n }\n else if (device.iphone || device.ipod) {\n $html.classList.add('ios', 'iphone', 'mobile');\n }\n }\n else if (device.android) {\n if (device.android_tablet) {\n $html.classList.add('android', 'tablet');\n }\n else {\n $html.classList.add('android', 'mobile');\n }\n }\n else if (device.windows) {\n if (device.windows_tablet) {\n $html.classList.add('windows', 'tablet');\n }\n else if (device.windows_phone) {\n $html.classList.add('windows', 'mobile');\n }\n else {\n $html.classList.add('desktop');\n }\n }\n else {\n $html.classList.add('desktop');\n }\n}(document, navigator, window));\n\n// BROWSER SUPPORT\n// -------------------------------------------------------------------------------------------------\n\n(function(document, navigator, window) {\n var $html = document.querySelector('html'),\n $div = document.createElement('div');\n\n // Überprüft die Browser-Unterstützung für CSS-Attribute wie z. B. transition\n\n function _has_css_property(property) {\n var css_property_found = false,\n prefixes = ['Moz', 'Webkit'];\n\n if (property in $div.style) {\n css_property_found = true;\n }\n else {\n property = property.charAt(0).toUpperCase() + property.substr(1);\n\n for (var i = 0, len = prefixes.length; i < len; i++) {\n if (typeof $div.style[prefixes[i] + property] !== 'undefined') {\n css_property_found = true;\n break;\n }\n }\n }\n\n return css_property_found;\n }\n\n window.support = {\n touch : window.navigator.msMaxTouchPoints || 'ontouchstart' in document.documentElement,\n transition : _has_css_property('transition') && 'TransitionEvent' in window // TransitionEvent wird benötigt für Android 4.1.x (https://bugs.dojotoolkit.org/ticket/17164#comment:13)\n };\n\n // Setzt Klassen auf den HTML-Tag\n\n $html.classList.remove('no_js');\n $html.classList.add(support.touch ? 'touch' : 'no_touch');\n $html.classList.add(support.transition ? 'csstransitions' : 'no_csstransitions');\n}(document, navigator, window));\n\n// PREFETCH\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var Prefetch = function($prefetch_link) {\n var _this = this;\n\n _this._$prefetch_link = $prefetch_link;\n _this._$options = _this._$prefetch_link.getAttribute('data-performance');\n };\n\n Prefetch.prototype = {\n init: function() {\n var _this = this;\n\n if (_this._$options.indexOf('prefetch') > -1) {\n _this._prefetch();\n }\n\n if (_this._$options.indexOf('prerender') > -1) {\n _this._prerender();\n }\n },\n\n _prefetch: function() {\n var _this = this,\n $link = document.createElement('link');\n\n $link.setAttribute('rel', 'prefetch');\n $link.setAttribute('href', _this._$prefetch_link.getAttribute('href'));\n\n document.querySelector('head').appendChild($link);\n },\n\n _prerender: function() {\n var _this = this,\n $link = document.createElement('link');\n\n $link.setAttribute('rel', 'prerender');\n $link.setAttribute('href', _this._$prefetch_link.getAttribute('href'));\n\n document.querySelector('head').appendChild($link);\n }\n };\n\n var $prefetch_links = document.querySelectorAll('[data-performance]');\n\n for (var i = 0, len = $prefetch_links.length; i < len; i++) {\n new Prefetch($prefetch_links[i]).init();\n }\n})(document);\n\n/**\n * Swiper 4.4.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://www.idangero.us/swiper/\n *\n * Copyright 2014-2018 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 14, 2018\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Swiper = factory());\n}(this, (function () { 'use strict';\n\n /**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\n var doc = (typeof document === 'undefined') ? {\n body: {},\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n activeElement: {\n blur: function blur() {},\n nodeName: '',\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() {},\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() {},\n getElementsByTagName: function getElementsByTagName() {\n return [];\n },\n };\n },\n location: { hash: '' },\n } : document; // eslint-disable-line\n\n var win = (typeof window === 'undefined') ? {\n document: doc,\n navigator: {\n userAgent: '',\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n },\n };\n },\n Image: function Image() {},\n Date: function Date() {},\n screen: {},\n setTimeout: function setTimeout() {},\n clearTimeout: function clearTimeout() {},\n } : window; // eslint-disable-line\n\n /**\n * Dom7 2.1.2\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2018, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: September 13, 2018\n */\n\n var Dom7 = function Dom7(arr) {\n var self = this;\n // Create array-like object\n for (var i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n };\n\n function $(selector, context) {\n var arr = [];\n var i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n var els;\n var tempParent;\n var html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [doc.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || doc).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) { arr.push(els[i]); }\n }\n }\n } else if (selector.nodeType || selector === win || selector === doc) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n }\n\n $.fn = Dom7.prototype;\n $.Class = Dom7;\n $.Dom7 = Dom7;\n\n function unique(arr) {\n var uniqueArray = [];\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); }\n }\n return uniqueArray;\n }\n\n // Classes and attributes\n function addClass(className) {\n var this$1 = this;\n\n if (typeof className === 'undefined') {\n return this;\n }\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this$1[j] !== 'undefined' && typeof this$1[j].classList !== 'undefined') { this$1[j].classList.add(classes[i]); }\n }\n }\n return this;\n }\n function removeClass(className) {\n var this$1 = this;\n\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this$1[j] !== 'undefined' && typeof this$1[j].classList !== 'undefined') { this$1[j].classList.remove(classes[i]); }\n }\n }\n return this;\n }\n function hasClass(className) {\n if (!this[0]) { return false; }\n return this[0].classList.contains(className);\n }\n function toggleClass(className) {\n var this$1 = this;\n\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this$1[j] !== 'undefined' && typeof this$1[j].classList !== 'undefined') { this$1[j].classList.toggle(classes[i]); }\n }\n }\n return this;\n }\n function attr(attrs, value) {\n var arguments$1 = arguments;\n var this$1 = this;\n\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) { return this[0].getAttribute(attrs); }\n return undefined;\n }\n\n // Set attrs\n for (var i = 0; i < this.length; i += 1) {\n if (arguments$1.length === 2) {\n // String\n this$1[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (var attrName in attrs) {\n this$1[i][attrName] = attrs[attrName];\n this$1[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n }\n // eslint-disable-next-line\n function removeAttr(attr) {\n var this$1 = this;\n\n for (var i = 0; i < this.length; i += 1) {\n this$1[i].removeAttribute(attr);\n }\n return this;\n }\n function data(key, value) {\n var this$1 = this;\n\n var el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute((\"data-\" + key));\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (var i = 0; i < this.length; i += 1) {\n el = this$1[i];\n if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; }\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n }\n // Transforms\n // eslint-disable-next-line\n function transform(transform) {\n var this$1 = this;\n\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this$1[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n }\n function transition(duration) {\n var this$1 = this;\n\n if (typeof duration !== 'string') {\n duration = duration + \"ms\"; // eslint-disable-line\n }\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this$1[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n }\n // Events\n function on() {\n var this$1 = this;\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n if (!capture) { capture = false; }\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) { return; }\n var eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) { listener.apply(target, eventData); }\n else {\n var parents = $(target).parents(); // eslint-disable-line\n for (var k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); }\n }\n }\n }\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n var events = eventType.split(' ');\n var j;\n for (var i = 0; i < this.length; i += 1) {\n var el = this$1[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) { el.dom7Listeners = {}; }\n if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; }\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var event$1 = events[j];\n if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; }\n if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; }\n el.dom7LiveListeners[event$1].push({\n listener: listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event$1, handleLiveEvent, capture);\n }\n }\n }\n return this;\n }\n function off() {\n var this$1 = this;\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n if (!capture) { capture = false; }\n\n var events = eventType.split(' ');\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this$1[j];\n var handlers = (void 0);\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n }\n function trigger() {\n var this$1 = this;\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var events = args[0].split(' ');\n var eventData = args[1];\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this$1[j];\n var evt = (void 0);\n try {\n evt = new win.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = doc.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n }\n function transitionEnd(callback) {\n var events = ['webkitTransitionEnd', 'transitionend'];\n var dom = this;\n var i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) { return; }\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n }\n function outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n }\n function outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n }\n function offset() {\n if (this.length > 0) {\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = doc.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === win ? win.scrollY : el.scrollTop;\n var scrollLeft = el === win ? win.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n }\n function styles() {\n if (this[0]) { return win.getComputedStyle(this[0], null); }\n return {};\n }\n function css(props, value) {\n var this$1 = this;\n\n var i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); }\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (var prop in props) {\n this$1[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this$1[i].style[props] = value;\n }\n return this;\n }\n return this;\n }\n // Iterate over the collection passing elements to `callback`\n function each(callback) {\n var this$1 = this;\n\n // Don't bother continuing without a callback\n if (!callback) { return this; }\n // Iterate over the current collection\n for (var i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this$1[i], i, this$1[i]) === false) {\n // End the loop early\n return this$1;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n }\n // eslint-disable-next-line\n function html(html) {\n var this$1 = this;\n\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this$1[i].innerHTML = html;\n }\n return this;\n }\n // eslint-disable-next-line\n function text(text) {\n var this$1 = this;\n\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this$1[i].textContent = text;\n }\n return this;\n }\n function is(selector) {\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') { return false; }\n if (typeof selector === 'string') {\n if (el.matches) { return el.matches(selector); }\n else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); }\n else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); }\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) { return true; }\n }\n return false;\n } else if (selector === doc) { return el === doc; }\n else if (selector === win) { return el === win; }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) { return true; }\n }\n return false;\n }\n return false;\n }\n function index() {\n var child = this[0];\n var i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) { i += 1; }\n }\n return i;\n }\n return undefined;\n }\n // eslint-disable-next-line\n function eq(index) {\n if (typeof index === 'undefined') { return this; }\n var length = this.length;\n var returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) { return new Dom7([]); }\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n }\n function append() {\n var this$1 = this;\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var newChild;\n\n for (var k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this$1[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this$1[i].appendChild(newChild[j]);\n }\n } else {\n this$1[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n }\n function prepend(newChild) {\n var this$1 = this;\n\n var i;\n var j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this$1[i].insertBefore(tempDiv.childNodes[j], this$1[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this$1[i].insertBefore(newChild[j], this$1[i].childNodes[0]);\n }\n } else {\n this$1[i].insertBefore(newChild, this$1[i].childNodes[0]);\n }\n }\n return this;\n }\n function next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); }\n return new Dom7([]);\n }\n return new Dom7([]);\n }\n function nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) { return new Dom7([]); }\n while (el.nextElementSibling) {\n var next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) { nextEls.push(next); }\n } else { nextEls.push(next); }\n el = next;\n }\n return new Dom7(nextEls);\n }\n function prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); }\n return new Dom7([]);\n }\n return new Dom7([]);\n }\n function prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) { return new Dom7([]); }\n while (el.previousElementSibling) {\n var prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) { prevEls.push(prev); }\n } else { prevEls.push(prev); }\n el = prev;\n }\n return new Dom7(prevEls);\n }\n function parent(selector) {\n var this$1 = this;\n\n var parents = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n if (this$1[i].parentNode !== null) {\n if (selector) {\n if ($(this$1[i].parentNode).is(selector)) { parents.push(this$1[i].parentNode); }\n } else {\n parents.push(this$1[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n }\n function parents(selector) {\n var this$1 = this;\n\n var parents = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var parent = this$1[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) { parents.push(parent); }\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n }\n function closest(selector) {\n var closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n }\n function find(selector) {\n var this$1 = this;\n\n var foundElements = [];\n for (var i = 0; i < this.length; i += 1) {\n var found = this$1[i].querySelectorAll(selector);\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n }\n function children(selector) {\n var this$1 = this;\n\n var children = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this$1[i].childNodes;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); }\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n }\n function remove() {\n var this$1 = this;\n\n for (var i = 0; i < this.length; i += 1) {\n if (this$1[i].parentNode) { this$1[i].parentNode.removeChild(this$1[i]); }\n }\n return this;\n }\n function add() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var dom = this;\n var i;\n var j;\n for (i = 0; i < args.length; i += 1) {\n var toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n }\n\n var Methods = {\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n attr: attr,\n removeAttr: removeAttr,\n data: data,\n transform: transform,\n transition: transition,\n on: on,\n off: off,\n trigger: trigger,\n transitionEnd: transitionEnd,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n offset: offset,\n css: css,\n each: each,\n html: html,\n text: text,\n is: is,\n index: index,\n eq: eq,\n append: append,\n prepend: prepend,\n next: next,\n nextAll: nextAll,\n prev: prev,\n prevAll: prevAll,\n parent: parent,\n parents: parents,\n closest: closest,\n find: find,\n children: children,\n remove: remove,\n add: add,\n styles: styles,\n };\n\n Object.keys(Methods).forEach(function (methodName) {\n $.fn[methodName] = Methods[methodName];\n });\n\n var Utils = {\n deleteProps: function deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (key) {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick: function nextTick(callback, delay) {\n if ( delay === void 0 ) delay = 0;\n\n return setTimeout(callback, delay);\n },\n now: function now() {\n return Date.now();\n },\n getTranslate: function getTranslate(el, axis) {\n if ( axis === void 0 ) axis = 'x';\n\n var matrix;\n var curTransform;\n var transformMatrix;\n\n var curStyle = win.getComputedStyle(el, null);\n\n if (win.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; }\n // Crazy IE10 Matrix\n else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); }\n // Normal Browsers\n else { curTransform = parseFloat(matrix[4]); }\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; }\n // Crazy IE10 Matrix\n else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); }\n // Normal Browsers\n else { curTransform = parseFloat(matrix[5]); }\n }\n return curTransform || 0;\n },\n parseUrlQuery: function parseUrlQuery(url) {\n var query = {};\n var urlToParse = url || win.location.href;\n var i;\n var params;\n var param;\n var length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; });\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject: function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend: function extend() {\n var args = [], len$1 = arguments.length;\n while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];\n\n var to = Object(args[0]);\n for (var i = 1; i < args.length; i += 1) {\n var nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n };\n\n var Support = (function Support() {\n var testDiv = doc.createElement('div');\n return {\n touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() {\n return !!(('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch));\n }()),\n\n pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent),\n prefixedPointerEvents: !!win.navigator.msPointerEnabled,\n\n transition: (function checkTransition() {\n var style = testDiv.style;\n return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);\n }()),\n transforms3d: (win.Modernizr && win.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {\n var style = testDiv.style;\n return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);\n }()),\n\n flexbox: (function checkFlexbox() {\n var style = testDiv.style;\n var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (var i = 0; i < styles.length; i += 1) {\n if (styles[i] in style) { return true; }\n }\n return false;\n }()),\n\n observer: (function checkObserver() {\n return ('MutationObserver' in win || 'WebkitMutationObserver' in win);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n },\n });\n win.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in win;\n }()),\n };\n }());\n\n var SwiperClass = function SwiperClass(params) {\n if ( params === void 0 ) params = {};\n\n var self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach(function (eventName) {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n };\n\n var staticAccessors = { components: { configurable: true } };\n\n SwiperClass.prototype.on = function on (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') { return self; }\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; }\n self.eventsListeners[event][method](handler);\n });\n return self;\n };\n\n SwiperClass.prototype.once = function once (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') { return self; }\n function onceHandler() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n handler.apply(self, args);\n self.off(events, onceHandler);\n }\n return self.on(events, onceHandler, priority);\n };\n\n SwiperClass.prototype.off = function off (events, handler) {\n var self = this;\n if (!self.eventsListeners) { return self; }\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach(function (eventHandler, index) {\n if (eventHandler === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n };\n\n SwiperClass.prototype.emit = function emit () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var self = this;\n if (!self.eventsListeners) { return self; }\n var events;\n var data;\n var context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(function (event) {\n if (self.eventsListeners && self.eventsListeners[event]) {\n var handlers = [];\n self.eventsListeners[event].forEach(function (eventHandler) {\n handlers.push(eventHandler);\n });\n handlers.forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n };\n\n SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) {\n var instance = this;\n if (!instance.modules) { return; }\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n };\n\n SwiperClass.prototype.useModules = function useModules (modulesParams) {\n if ( modulesParams === void 0 ) modulesParams = {};\n\n var instance = this;\n if (!instance.modules) { return; }\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach(function (modulePropName) {\n var moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(function (moduleEventName) {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n };\n\n staticAccessors.components.set = function (components) {\n var Class = this;\n if (!Class.use) { return; }\n Class.use(components);\n };\n\n SwiperClass.installModule = function installModule (module) {\n var params = [], len = arguments.length - 1;\n while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n var Class = this;\n if (!Class.prototype.modules) { Class.prototype.modules = {}; }\n var name = module.name || (((Object.keys(Class.prototype.modules).length) + \"_\" + (Utils.now())));\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach(function (key) {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach(function (key) {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n };\n\n SwiperClass.use = function use (module) {\n var params = [], len = arguments.length - 1;\n while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n var Class = this;\n if (Array.isArray(module)) {\n module.forEach(function (m) { return Class.installModule(m); });\n return Class;\n }\n return Class.installModule.apply(Class, [ module ].concat( params ));\n };\n\n Object.defineProperties( SwiperClass, staticAccessors );\n\n function updateSize () {\n var swiper = this;\n var width;\n var height;\n var $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width: width,\n height: height,\n size: swiper.isHorizontal() ? width : height,\n });\n }\n\n function updateSlides () {\n var swiper = this;\n var params = swiper.params;\n\n var $wrapperEl = swiper.$wrapperEl;\n var swiperSize = swiper.size;\n var rtl = swiper.rtlTranslate;\n var wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children((\".\" + (swiper.params.slideClass)));\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var slidesSizesGrid = [];\n\n var offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n var offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.snapGrid.length;\n\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); }\n else { slides.css({ marginRight: '', marginBottom: '' }); }\n\n var slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = slidesPerRow - ((params.slidesPerColumn * slidesPerRow) - slidesLength);\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = (void 0);\n var column = (void 0);\n var row = (void 0);\n if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide\n .css(\n (\"margin-\" + (swiper.isHorizontal() ? 'top' : 'left')),\n (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + \"px\"))\n )\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n }\n if (slide.css('display') === 'none') { continue; } // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n var slideStyles = win.getComputedStyle(slide[0], null);\n var currentTransform = slide[0].style.transform;\n var currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n slideSize = slide[0].getBoundingClientRect().width\n + parseFloat(slideStyles.getPropertyValue('margin-left'))\n + parseFloat(slideStyles.getPropertyValue('margin-right'));\n } else {\n slideSize = slide[0].getBoundingClientRect().height\n + parseFloat(slideStyles.getPropertyValue('margin-top'))\n + parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) { slideSize = Math.floor(slideSize); }\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) { slideSize = Math.floor(slideSize); }\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = slideSize + \"px\";\n } else {\n slides[i].style.height = slideSize + \"px\";\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }\n if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }\n if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; }\n if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }\n if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }\n if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n var newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") });\n }\n if (!Support.flexbox || params.setWrapperSize) {\n if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + \"px\") }); }\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {\n var slidesGridItem = snapGrid[i$1];\n if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); }\n if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(slidesGridItem); }\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {\n var slidesGridItem$1 = snapGrid[i$2];\n if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); }\n if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem$1);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) { snapGrid = [0]; }\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) { slides.css({ marginLeft: (spaceBetween + \"px\") }); }\n else { slides.css({ marginRight: (spaceBetween + \"px\") }); }\n } else { slides.css({ marginBottom: (spaceBetween + \"px\") }); }\n }\n\n if (params.centerInsufficientSlides) {\n var allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n var allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach(function (snap, snapIndex) {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach(function (snap, snapIndex) {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) { swiper.checkOverflow(); }\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n }\n\n function updateAutoHeight (speed) {\n var swiper = this;\n var activeSlides = [];\n var newHeight = 0;\n var i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n var index = swiper.activeIndex + i;\n if (index > swiper.slides.length) { break; }\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + \"px\")); }\n }\n\n function updateSlidesOffset () {\n var swiper = this;\n var slides = swiper.slides;\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n }\n\n function updateSlidesProgress (translate) {\n if ( translate === void 0 ) translate = (this && this.translate) || 0;\n\n var swiper = this;\n var params = swiper.params;\n\n var slides = swiper.slides;\n var rtl = swiper.rtlTranslate;\n\n if (slides.length === 0) { return; }\n if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); }\n\n var offsetCenter = -translate;\n if (rtl) { offsetCenter = translate; }\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (var i = 0; i < slides.length; i += 1) {\n var slide = slides[i];\n var slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var isVisible = (slideBefore >= 0 && slideBefore < swiper.size)\n || (slideAfter > 0 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n }\n\n function updateProgress (translate) {\n if ( translate === void 0 ) translate = (this && this.translate) || 0;\n\n var swiper = this;\n var params = swiper.params;\n\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n var progress = swiper.progress;\n var isBeginning = swiper.isBeginning;\n var isEnd = swiper.isEnd;\n var wasBeginning = isBeginning;\n var wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress: progress,\n isBeginning: isBeginning,\n isEnd: isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesProgress(translate); }\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n }\n\n function updateSlidesClasses () {\n var swiper = this;\n\n var slides = swiper.slides;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n var realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(((params.slideActiveClass) + \" \" + (params.slideNextClass) + \" \" + (params.slidePrevClass) + \" \" + (params.slideDuplicateActiveClass) + \" \" + (params.slideDuplicateNextClass) + \" \" + (params.slideDuplicatePrevClass)));\n\n var activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\"));\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\"))\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\"))\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n var nextSlide = activeSlide.nextAll((\".\" + (params.slideClass))).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n var prevSlide = activeSlide.prevAll((\".\" + (params.slideClass))).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + (nextSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + (nextSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \":not(.\" + (params.slideDuplicateClass) + \")[data-swiper-slide-index=\\\"\" + (prevSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + (prevSlide.attr('data-swiper-slide-index')) + \"\\\"]\"))\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n }\n\n function updateActiveIndex (newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid;\n var snapGrid = swiper.snapGrid;\n var params = swiper.params;\n var previousIndex = swiper.activeIndex;\n var previousRealIndex = swiper.realIndex;\n var previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; }\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n snapIndex = Math.floor(activeIndex / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n\n function updateClickedSlide (e) {\n var swiper = this;\n var params = swiper.params;\n var slide = $(e.target).closest((\".\" + (params.slideClass)))[0];\n var slideFound = false;\n if (slide) {\n for (var i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) { slideFound = true; }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n }\n\n var update = {\n updateSize: updateSize,\n updateSlides: updateSlides,\n updateAutoHeight: updateAutoHeight,\n updateSlidesOffset: updateSlidesOffset,\n updateSlidesProgress: updateSlidesProgress,\n updateProgress: updateProgress,\n updateSlidesClasses: updateSlidesClasses,\n updateActiveIndex: updateActiveIndex,\n updateClickedSlide: updateClickedSlide,\n };\n\n function getTranslate (axis) {\n if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y';\n\n var swiper = this;\n\n var params = swiper.params;\n var rtl = swiper.rtlTranslate;\n var translate = swiper.translate;\n var $wrapperEl = swiper.$wrapperEl;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) { currentTranslate = -currentTranslate; }\n\n return currentTranslate || 0;\n }\n\n function setTranslate (translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var progress = swiper.progress;\n var x = 0;\n var y = 0;\n var z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (!params.virtualTranslate) {\n if (Support.transforms3d) { $wrapperEl.transform((\"translate3d(\" + x + \"px, \" + y + \"px, \" + z + \"px)\")); }\n else { $wrapperEl.transform((\"translate(\" + x + \"px, \" + y + \"px)\")); }\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n }\n\n function minTranslate () {\n return (-this.snapGrid[0]);\n }\n\n function maxTranslate () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n }\n\n var translate = {\n getTranslate: getTranslate,\n setTranslate: setTranslate,\n minTranslate: minTranslate,\n maxTranslate: maxTranslate,\n };\n\n function setTransition (duration, byController) {\n var swiper = this;\n\n swiper.$wrapperEl.transition(duration);\n\n swiper.emit('setTransition', duration, byController);\n }\n\n function transitionStart (runCallbacks, direction) {\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var params = swiper.params;\n var previousIndex = swiper.previousIndex;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n var dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) { dir = 'next'; }\n else if (activeIndex < previousIndex) { dir = 'prev'; }\n else { dir = 'reset'; }\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n }\n\n function transitionEnd$1 (runCallbacks, direction) {\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var previousIndex = swiper.previousIndex;\n swiper.animating = false;\n swiper.setTransition(0);\n\n var dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) { dir = 'next'; }\n else if (activeIndex < previousIndex) { dir = 'prev'; }\n else { dir = 'reset'; }\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n }\n\n var transition$1 = {\n setTransition: setTransition,\n transitionStart: transitionStart,\n transitionEnd: transitionEnd$1,\n };\n\n function slideTo (index, speed, runCallbacks, internal) {\n if ( index === void 0 ) index = 0;\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var slideIndex = index;\n if (slideIndex < 0) { slideIndex = 0; }\n\n var params = swiper.params;\n var snapGrid = swiper.snapGrid;\n var slidesGrid = swiper.slidesGrid;\n var previousIndex = swiper.previousIndex;\n var activeIndex = swiper.activeIndex;\n var rtl = swiper.rtlTranslate;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var snapIndex = Math.floor(slideIndex / params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n var translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) { return false; }\n }\n }\n\n var direction;\n if (slideIndex > activeIndex) { direction = 'next'; }\n else if (slideIndex < activeIndex) { direction = 'prev'; }\n else { direction = 'reset'; }\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n\n if (speed === 0 || !Support.transition) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) { return; }\n if (e.target !== this) { return; }\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n }\n\n function slideToLoop (index, speed, runCallbacks, internal) {\n if ( index === void 0 ) index = 0;\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideNext (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var params = swiper.params;\n var animating = swiper.animating;\n if (params.loop) {\n if (animating) { return false; }\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slidePrev (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var params = swiper.params;\n var animating = swiper.animating;\n var snapGrid = swiper.snapGrid;\n var slidesGrid = swiper.slidesGrid;\n var rtlTranslate = swiper.rtlTranslate;\n\n if (params.loop) {\n if (animating) { return false; }\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) { return -Math.floor(Math.abs(val)); }\n return Math.floor(val);\n }\n var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); });\n var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); });\n\n var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n var prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) { prevIndex = swiper.activeIndex - 1; }\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideReset (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideToClosest (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var index = swiper.activeIndex;\n var snapIndex = Math.floor(index / swiper.params.slidesPerGroup);\n\n if (snapIndex < swiper.snapGrid.length - 1) {\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n var currentSnap = swiper.snapGrid[snapIndex];\n var nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) {\n index = swiper.params.slidesPerGroup;\n }\n }\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n }\n\n function slideToClickedSlide () {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var realIndex;\n if (params.loop) {\n if (swiper.animating) { return; }\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + (params.slideDuplicateClass) + \")\"))\n .eq(0)\n .index();\n\n Utils.nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children((\".\" + (params.slideClass) + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + (params.slideDuplicateClass) + \")\"))\n .eq(0)\n .index();\n\n Utils.nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n\n var slide = {\n slideTo: slideTo,\n slideToLoop: slideToLoop,\n slideNext: slideNext,\n slidePrev: slidePrev,\n slideReset: slideReset,\n slideToClosest: slideToClosest,\n slideToClickedSlide: slideToClickedSlide,\n };\n\n function loopCreate () {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n // Remove duplicated slides\n $wrapperEl.children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass))).remove();\n\n var slides = $wrapperEl.children((\".\" + (params.slideClass)));\n\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = $(doc.createElement('div')).addClass(((params.slideClass) + \" \" + (params.slideBlankClass)));\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children((\".\" + (params.slideClass)));\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; }\n\n swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n var prependSlides = [];\n var appendSlides = [];\n slides.each(function (index, el) {\n var slide = $(el);\n if (index < swiper.loopedSlides) { appendSlides.push(el); }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); }\n slide.attr('data-swiper-slide-index', index);\n });\n for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) {\n $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {\n $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n }\n\n function loopFix () {\n var swiper = this;\n var params = swiper.params;\n var activeIndex = swiper.activeIndex;\n var slides = swiper.slides;\n var loopedSlides = swiper.loopedSlides;\n var allowSlidePrev = swiper.allowSlidePrev;\n var allowSlideNext = swiper.allowSlideNext;\n var snapGrid = swiper.snapGrid;\n var rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate();\n\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged$1 && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n }\n\n function loopDestroy () {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n var slides = swiper.slides;\n $wrapperEl.children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass))).remove();\n slides.removeAttr('data-swiper-slide-index');\n }\n\n var loop = {\n loopCreate: loopCreate,\n loopFix: loopFix,\n loopDestroy: loopDestroy,\n };\n\n function setGrabCursor (moving) {\n var swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }\n var el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n }\n\n function unsetGrabCursor () {\n var swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }\n swiper.el.style.cursor = '';\n }\n\n var grabCursor = {\n setGrabCursor: setGrabCursor,\n unsetGrabCursor: unsetGrabCursor,\n };\n\n function appendSlide (slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) { $wrapperEl.append(slides[i]); }\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n }\n\n function prependSlide (slides) {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n var newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) { $wrapperEl.prepend(slides[i]); }\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n }\n\n function addSlide (index, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n var activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children((\".\" + (params.slideClass)));\n }\n var baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n var slidesBuffer = [];\n for (var i = baseLength - 1; i >= index; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {\n if (slides[i$1]) { $wrapperEl.append(slides[i$1]); }\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) {\n $wrapperEl.append(slidesBuffer[i$2]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n }\n\n function removeSlide (slidesIndexes) {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children((\".\" + (params.slideClass)));\n }\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (var i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }\n if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }\n if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n }\n\n function removeAllSlides () {\n var swiper = this;\n\n var slidesIndexes = [];\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n }\n\n var manipulation = {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n addSlide: addSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides,\n };\n\n var Device = (function Device() {\n var ua = win.navigator.userAgent;\n\n var device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n windows: false,\n iphone: false,\n ipod: false,\n ipad: false,\n cordova: win.cordova || win.phonegap,\n phonegap: win.cordova || win.phonegap,\n };\n\n var windows = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n\n\n // Windows\n if (windows) {\n device.os = 'windows';\n device.osVersion = windows[2];\n device.windows = true;\n }\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.iphone = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Desktop\n device.desktop = !(device.os || device.android || device.webView);\n\n // Webview\n device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);\n\n // Minimal UI\n if (device.os && device.os === 'ios') {\n var osVersionArr = device.osVersion.split('.');\n var metaViewport = doc.querySelector('meta[name=\"viewport\"]');\n device.minimalUi = !device.webView\n && (ipod || iphone)\n && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7)\n && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;\n }\n\n // Pixel Ratio\n device.pixelRatio = win.devicePixelRatio || 1;\n\n // Export object\n return device;\n }());\n\n function onTouchStart (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params;\n var touches = swiper.touches;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; }\n if (!data.isTouchEvent && 'button' in e && e.button > 0) { return; }\n if (data.isTouched && data.isMoved) { return; }\n if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : (\".\" + (params.noSwipingClass)))[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$(e).closest(params.swipeHandler)[0]) { return; }\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n var startX = touches.currentX;\n var startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= win.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) { data.allowThresholdMove = false; }\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($(e.target).is(data.formElements)) { preventDefault = false; }\n if (\n doc.activeElement\n && $(doc.activeElement).is(data.formElements)\n && doc.activeElement !== e.target\n ) {\n doc.activeElement.blur();\n }\n if (preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n }\n\n function onTouchMove (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params;\n var touches = swiper.touches;\n var rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type === 'mousemove') { return; }\n var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && doc.activeElement) {\n if (e.target === doc.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) { return; }\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; }\n\n if (typeof data.isScrolling === 'undefined') {\n var touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n e.preventDefault();\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n var diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) { diff = -diff; }\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n var disableParentSwiper = true;\n var resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); }\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); }\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger) { return; }\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n }\n\n function onTouchEnd (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n\n var params = swiper.params;\n var touches = swiper.touches;\n var rtl = swiper.rtlTranslate;\n var $wrapperEl = swiper.$wrapperEl;\n var slidesGrid = swiper.slidesGrid;\n var snapGrid = swiper.snapGrid;\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n var touchEndTime = Utils.now();\n var timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) {\n if (data.clickTimeout) { clearTimeout(data.clickTimeout); }\n data.clickTimeout = Utils.nextTick(function () {\n if (!swiper || swiper.destroyed) { return; }\n swiper.emit('click', e);\n }, 300);\n }\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n if (data.clickTimeout) { clearTimeout(data.clickTimeout); }\n swiper.emit('doubleTap', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(function () {\n if (!swiper.destroyed) { swiper.allowClick = true; }\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n var currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n var lastMoveEvent = data.velocities.pop();\n var velocityEvent = data.velocities.pop();\n\n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n\n var newPosition = swiper.translate + momentumDistance;\n if (rtl) { newPosition = -newPosition; }\n\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) { needsLoopFix = true; }\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) { needsLoopFix = true; }\n } else if (params.freeModeSticky) {\n var nextSlide;\n for (var j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', function () {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; }\n swiper.emit('momentumBounce');\n\n swiper.setTransition(params.speed);\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) { return; }\n swiper.transitionEnd();\n });\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) { return; }\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {\n if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + params.slidesPerGroup); }\n else { swiper.slideTo(stopIndex); }\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + params.slidesPerGroup); }\n else { swiper.slideTo(stopIndex); }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + params.slidesPerGroup);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n }\n }\n\n function onResize () {\n var swiper = this;\n\n var params = swiper.params;\n var el = swiper.el;\n\n if (el && el.offsetWidth === 0) { return; }\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n var allowSlideNext = swiper.allowSlideNext;\n var allowSlidePrev = swiper.allowSlidePrev;\n var snapGrid = swiper.snapGrid;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n if (params.freeMode) {\n var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n }\n\n function onClick (e) {\n var swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) { e.preventDefault(); }\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n }\n\n function attachEvents() {\n var swiper = this;\n var params = swiper.params;\n var touchEvents = swiper.touchEvents;\n var el = swiper.el;\n var wrapperEl = swiper.wrapperEl;\n\n {\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n var capture = !!params.nested;\n\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture);\n target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.addEventListener('mousedown', swiper.onTouchStart, false);\n doc.addEventListener('mousemove', swiper.onTouchMove, capture);\n doc.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.addEventListener('click', swiper.onClick, true);\n }\n }\n\n // Resize handler\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n }\n\n function detachEvents() {\n var swiper = this;\n\n var params = swiper.params;\n var touchEvents = swiper.touchEvents;\n var el = swiper.el;\n var wrapperEl = swiper.wrapperEl;\n\n var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n var capture = !!params.nested;\n\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.removeEventListener('mousedown', swiper.onTouchStart, false);\n doc.removeEventListener('mousemove', swiper.onTouchMove, capture);\n doc.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.removeEventListener('click', swiper.onClick, true);\n }\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n }\n\n var events = {\n attachEvents: attachEvents,\n detachEvents: detachEvents,\n };\n\n function setBreakpoint () {\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var initialized = swiper.initialized;\n var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0;\n var params = swiper.params;\n var breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; }\n // Set breakpoint for window width and update parameters\n var breakpoint = swiper.getBreakpoint(breakpoints);\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n var breakPointsParams = breakpoint in breakpoints ? breakpoints[breakpoint] : swiper.originalParams;\n var needsReLoop = params.loop && (breakPointsParams.slidesPerView !== params.slidesPerView);\n\n Utils.extend(swiper.params, breakPointsParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n swiper.emit('breakpoint', breakPointsParams);\n }\n }\n\n function getBreakpoint (breakpoints) {\n var swiper = this;\n // Get breakpoint for window width\n if (!breakpoints) { return undefined; }\n var breakpoint = false;\n var points = [];\n Object.keys(breakpoints).forEach(function (point) {\n points.push(point);\n });\n points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); });\n for (var i = 0; i < points.length; i += 1) {\n var point = points[i];\n if (swiper.params.breakpointsInverse) {\n if (point <= win.innerWidth) {\n breakpoint = point;\n }\n } else if (point >= win.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n }\n\n var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };\n\n var Browser = (function Browser() {\n function isSafari() {\n var ua = win.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isIE: !!win.navigator.userAgent.match(/Trident/g) || !!win.navigator.userAgent.match(/MSIE/g),\n isEdge: !!win.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent),\n };\n }());\n\n function addClasses () {\n var swiper = this;\n var classNames = swiper.classNames;\n var params = swiper.params;\n var rtl = swiper.rtl;\n var $el = swiper.$el;\n var suffixes = [];\n\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (!Support.flexbox) {\n suffixes.push('no-flexbox');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n // WP8 Touch Events Fix\n if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n suffixes.push((\"wp8-\" + (params.direction)));\n }\n\n suffixes.forEach(function (suffix) {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n }\n\n function removeClasses () {\n var swiper = this;\n var $el = swiper.$el;\n var classNames = swiper.classNames;\n\n $el.removeClass(classNames.join(' '));\n }\n\n var classes = { addClasses: addClasses, removeClasses: removeClasses };\n\n function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n var image;\n function onReady() {\n if (callback) { callback(); }\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new win.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n }\n\n function preloadImages () {\n var swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; }\n if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; }\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) { swiper.update(); }\n swiper.emit('imagesReady');\n }\n }\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n }\n\n var images = {\n loadImage: loadImage,\n preloadImages: preloadImages,\n };\n\n function checkOverflow() {\n var swiper = this;\n var wasLocked = swiper.isLocked;\n\n swiper.isLocked = swiper.snapGrid.length === 1;\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) { swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n }\n\n var checkOverflow$1 = { checkOverflow: checkOverflow };\n\n var defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsInverse: false,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: true,\n touchStartPreventDefault: true,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n };\n\n var prototypes = {\n update: update,\n translate: translate,\n transition: transition$1,\n slide: slide,\n loop: loop,\n grabCursor: grabCursor,\n manipulation: manipulation,\n events: events,\n breakpoints: breakpoints,\n checkOverflow: checkOverflow$1,\n classes: classes,\n images: images,\n };\n\n var extendedDefaults = {};\n\n var Swiper = (function (SwiperClass$$1) {\n function Swiper() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var el;\n var params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n (assign = args, el = assign[0], params = assign[1]);\n }\n if (!params) { params = {}; }\n\n params = Utils.extend({}, params);\n if (el && !params.el) { params.el = el; }\n\n SwiperClass$$1.call(this, params);\n\n Object.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n var swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) { return; }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; }\n }\n });\n\n // Extend defaults with modules params\n var swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n var $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n var swipers = [];\n $el.each(function (index, containerEl) {\n var newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n var $wrapperEl = $el.children((\".\" + (swiper.params.wrapperClass)));\n\n // Extend Swiper\n Utils.extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal: function isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n var touch = ['touchstart', 'touchmove', 'touchend'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n } else if (Support.prefixedPointerEvents) {\n desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n if ( SwiperClass$$1 ) Swiper.__proto__ = SwiperClass$$1;\n Swiper.prototype = Object.create( SwiperClass$$1 && SwiperClass$$1.prototype );\n Swiper.prototype.constructor = Swiper;\n\n var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } };\n\n Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () {\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides;\n var slidesGrid = swiper.slidesGrid;\n var swiperSize = swiper.size;\n var activeIndex = swiper.activeIndex;\n var spv = 1;\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) { breakLoop = true; }\n }\n }\n for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {\n if (slides[i$1] && !breakLoop) {\n slideSize += slides[i$1].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) { breakLoop = true; }\n }\n }\n } else {\n for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {\n if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n };\n\n Swiper.prototype.update = function update$$1 () {\n var swiper = this;\n if (!swiper || swiper.destroyed) { return; }\n var snapGrid = swiper.snapGrid;\n var params = swiper.params;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n var translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n };\n\n Swiper.prototype.init = function init () {\n var swiper = this;\n if (swiper.initialized) { return; }\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n };\n\n Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) {\n if ( deleteInstance === void 0 ) deleteInstance = true;\n if ( cleanStyles === void 0 ) cleanStyles = true;\n\n var swiper = this;\n var params = swiper.params;\n var $el = swiper.$el;\n var $wrapperEl = swiper.$wrapperEl;\n var slides = swiper.slides;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n };\n\n Swiper.extendDefaults = function extendDefaults (newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n };\n\n staticAccessors.extendedDefaults.get = function () {\n return extendedDefaults;\n };\n\n staticAccessors.defaults.get = function () {\n return defaults;\n };\n\n staticAccessors.Class.get = function () {\n return SwiperClass$$1;\n };\n\n staticAccessors.$.get = function () {\n return $;\n };\n\n Object.defineProperties( Swiper, staticAccessors );\n\n return Swiper;\n }(SwiperClass));\n\n var Device$1 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n };\n\n var Support$1 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n };\n\n var Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n };\n\n var Resize = {\n name: 'resize',\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler: function resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) { return; }\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) { return; }\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n // Emit resize\n win.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function destroy() {\n var swiper = this;\n win.removeEventListener('resize', swiper.resize.resizeHandler);\n win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n };\n\n var Observer = {\n func: win.MutationObserver || win.WebkitMutationObserver,\n attach: function attach(target, options) {\n if ( options === void 0 ) options = {};\n\n var swiper = this;\n\n var ObserverFunc = Observer.func;\n var observer = new ObserverFunc(function (mutations) {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n var observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (win.requestAnimationFrame) {\n win.requestAnimationFrame(observerUpdate);\n } else {\n win.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init: function init() {\n var swiper = this;\n if (!Support.observer || !swiper.params.observer) { return; }\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n for (var i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: false });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n };\n\n var Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.observer.init();\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.destroy();\n },\n },\n };\n\n var Virtual = {\n update: function update(force) {\n var swiper = this;\n var ref = swiper.params;\n var slidesPerView = ref.slidesPerView;\n var slidesPerGroup = ref.slidesPerGroup;\n var centeredSlides = ref.centeredSlides;\n var ref$1 = swiper.params.virtual;\n var addSlidesBefore = ref$1.addSlidesBefore;\n var addSlidesAfter = ref$1.addSlidesAfter;\n var ref$2 = swiper.virtual;\n var previousFrom = ref$2.from;\n var previousTo = ref$2.to;\n var slides = ref$2.slides;\n var previousSlidesGrid = ref$2.slidesGrid;\n var renderSlide = ref$2.renderSlide;\n var previousOffset = ref$2.offset;\n swiper.updateActiveIndex();\n var activeIndex = swiper.activeIndex || 0;\n\n var offsetProp;\n if (swiper.rtlTranslate) { offsetProp = 'right'; }\n else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; }\n\n var slidesAfter;\n var slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n var from = Math.max((activeIndex || 0) - slidesBefore, 0);\n var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from: from,\n to: to,\n offset: offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, (offset + \"px\"));\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset: offset,\n from: from,\n to: to,\n slides: (function getSlides() {\n var slidesToRender = [];\n for (var i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n var prependIndexes = [];\n var appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find((\".\" + (swiper.params.slideClass))).remove();\n } else {\n for (var i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find((\".\" + (swiper.params.slideClass) + \"[data-swiper-slide-index=\\\"\" + i + \"\\\"]\")).remove();\n }\n }\n }\n for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {\n if (i$1 >= from && i$1 <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i$1);\n } else {\n if (i$1 > previousTo) { appendIndexes.push(i$1); }\n if (i$1 < previousFrom) { prependIndexes.push(i$1); }\n }\n }\n }\n appendIndexes.forEach(function (index) {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort(function (a, b) { return a < b; }).forEach(function (index) {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + \"px\"));\n onRendered();\n },\n renderSlide: function renderSlide(slide, index) {\n var swiper = this;\n var params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n var $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $((\"
\" + slide + \"
\"));\n if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); }\n if (params.cache) { swiper.virtual.cache[index] = $slideEl; }\n return $slideEl;\n },\n appendSlide: function appendSlide(slide) {\n var swiper = this;\n swiper.virtual.slides.push(slide);\n swiper.virtual.update(true);\n },\n prependSlide: function prependSlide(slide) {\n var swiper = this;\n swiper.virtual.slides.unshift(slide);\n if (swiper.params.virtual.cache) {\n var cache = swiper.virtual.cache;\n var newCache = {};\n Object.keys(cache).forEach(function (cachedIndex) {\n newCache[cachedIndex + 1] = cache[cachedIndex];\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideNext(0);\n },\n };\n\n var Virtual$1 = {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (!swiper.params.virtual.enabled) { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"virtual\"));\n var overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n swiper.virtual.update();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.virtual.enabled) { return; }\n swiper.virtual.update();\n },\n },\n };\n\n var Keyboard = {\n handle: function handle(event) {\n var swiper = this;\n var rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; } // jquery fix\n var kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40))) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38))) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n var inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents((\".\" + (swiper.params.slideClass))).length > 0 && swiper.$el.parents((\".\" + (swiper.params.slideActiveClass))).length === 0) {\n return undefined;\n }\n var windowWidth = win.innerWidth;\n var windowHeight = win.innerHeight;\n var swiperOffset = swiper.$el.offset();\n if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; }\n var swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ];\n for (var i = 0; i < swiperCoord.length; i += 1) {\n var point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) { return undefined; }\n }\n if (swiper.isHorizontal()) {\n if (kc === 37 || kc === 39) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n if ((kc === 39 && !rtl) || (kc === 37 && rtl)) { swiper.slideNext(); }\n if ((kc === 37 && !rtl) || (kc === 39 && rtl)) { swiper.slidePrev(); }\n } else {\n if (kc === 38 || kc === 40) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n if (kc === 40) { swiper.slideNext(); }\n if (kc === 38) { swiper.slidePrev(); }\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable: function enable() {\n var swiper = this;\n if (swiper.keyboard.enabled) { return; }\n $(doc).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable: function disable() {\n var swiper = this;\n if (!swiper.keyboard.enabled) { return; }\n $(doc).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n };\n\n var Keyboard$1 = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n };\n\n function isEventSupported() {\n var eventName = 'onwheel';\n var isSupported = eventName in doc;\n\n if (!isSupported) {\n var element = doc.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && doc.implementation\n && doc.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && doc.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n }\n var Mousewheel = {\n lastScrollTime: Utils.now(),\n event: (function getEvent() {\n if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; }\n return isEventSupported() ? 'wheel' : 'mousewheel';\n }()),\n normalize: function normalize(e) {\n // Reasonable defaults\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n\n var sX = 0;\n var sY = 0; // spinX, spinY\n var pX = 0;\n var pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter: function handleMouseEnter() {\n var swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave: function handleMouseLeave() {\n var swiper = this;\n swiper.mouseEntered = false;\n },\n handle: function handle(event) {\n var e = event;\n var swiper = this;\n var params = swiper.params.mousewheel;\n\n if (!swiper.mouseEntered && !params.releaseOnEdges) { return true; }\n\n if (e.originalEvent) { e = e.originalEvent; } // jquery fix\n var delta = 0;\n var rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n var data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) { delta = data.pixelX * rtlFactor; }\n else { return true; }\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = data.pixelY; }\n else { return true; }\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) { return true; }\n\n if (params.invert) { delta = -delta; }\n\n if (!swiper.params.freeMode) {\n if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) { return true; }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) { return true; }\n }\n swiper.mousewheel.lastScrollTime = (new win.Date()).getTime();\n } else {\n // Freemode or scrollContainer:\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n var position = swiper.getTranslate() + (delta * params.sensitivity);\n var wasBeginning = swiper.isBeginning;\n var wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) { position = swiper.minTranslate(); }\n if (position <= swiper.maxTranslate()) { position = swiper.maxTranslate(); }\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = Utils.nextTick(function () {\n swiper.slideToClosest();\n }, 300);\n }\n // Emit event\n swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) { swiper.autoplay.stop(); }\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) { return true; }\n }\n\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n return false;\n },\n enable: function enable() {\n var swiper = this;\n if (!Mousewheel.event) { return false; }\n if (swiper.mousewheel.enabled) { return false; }\n var target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable: function disable() {\n var swiper = this;\n if (!Mousewheel.event) { return false; }\n if (!swiper.mousewheel.enabled) { return false; }\n var target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n };\n\n var Mousewheel$1 = {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n lastScrollTime: Utils.now(),\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.mousewheel.enabled) { swiper.mousewheel.enable(); }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); }\n },\n },\n };\n\n var Navigation = {\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n\n if (swiper.params.loop) { return; }\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) { return; }\n\n var $nextEl;\n var $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', function (e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) { return; }\n swiper.slideNext();\n });\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', function (e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) { return; }\n swiper.slidePrev();\n });\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click');\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click');\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n };\n\n var Navigation$1 = {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge() {\n var swiper = this;\n swiper.navigation.update();\n },\n fromEdge: function fromEdge() {\n var swiper = this;\n swiper.navigation.update();\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.navigation.destroy();\n },\n click: function click(e) {\n var swiper = this;\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n if ($nextEl) { $nextEl.toggleClass(swiper.params.navigation.hiddenClass); }\n if ($prevEl) { $prevEl.toggleClass(swiper.params.navigation.hiddenClass); }\n }\n },\n },\n };\n\n var Pagination = {\n update: function update() {\n // Render || Update Pagination bullets/items\n var swiper = this;\n var rtl = swiper.rtl;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n // Current/Total\n var current;\n var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) { current -= total; }\n if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; }\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n var bullets = swiper.pagination.bullets;\n var firstIndex;\n var lastIndex;\n var midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + \"px\"));\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(((params.bulletActiveClass) + \" \" + (params.bulletActiveClass) + \"-next \" + (params.bulletActiveClass) + \"-next-next \" + (params.bulletActiveClass) + \"-prev \" + (params.bulletActiveClass) + \"-prev-prev \" + (params.bulletActiveClass) + \"-main\"));\n if ($el.length > 1) {\n bullets.each(function (index, bullet) {\n var $bullet = $(bullet);\n var bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(((params.bulletActiveClass) + \"-main\"));\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev\"))\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev-prev\"));\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(((params.bulletActiveClass) + \"-next\"))\n .next()\n .addClass(((params.bulletActiveClass) + \"-next-next\"));\n }\n }\n });\n } else {\n var $bullet = bullets.eq(current);\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex);\n var $lastDisplayedBullet = bullets.eq(lastIndex);\n for (var i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(((params.bulletActiveClass) + \"-main\"));\n }\n $firstDisplayedBullet\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev\"))\n .prev()\n .addClass(((params.bulletActiveClass) + \"-prev-prev\"));\n $lastDisplayedBullet\n .next()\n .addClass(((params.bulletActiveClass) + \"-next\"))\n .next()\n .addClass(((params.bulletActiveClass) + \"-next-next\"));\n }\n }\n if (params.dynamicBullets) {\n var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n var offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + \"px\"));\n }\n }\n if (params.type === 'fraction') {\n $el.find((\".\" + (params.currentClass))).text(params.formatFractionCurrent(current + 1));\n $el.find((\".\" + (params.totalClass))).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n var progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n var scale = (current + 1) / total;\n var scaleX = 1;\n var scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find((\".\" + (params.progressbarFillClass))).transform((\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\")).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render: function render() {\n // Render Container\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (var i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += \"<\" + (params.bulletElement) + \" class=\\\"\" + (params.bulletClass) + \"\\\">\";\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find((\".\" + (params.bulletClass)));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = \"\"\n + ' / '\n + \"\";\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = \"\";\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el) { return; }\n\n var $el = $(params.el);\n if ($el.length === 0) { return; }\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n && swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass((\"\" + (params.modifierClass) + (params.type) + \"-dynamic\"));\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', (\".\" + (params.bulletClass)), function onClick(e) {\n e.preventDefault();\n var index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) { index += swiper.loopedSlides; }\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el: $el,\n el: $el[0],\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); }\n if (params.clickable) {\n $el.off('click', (\".\" + (params.bulletClass)));\n }\n },\n };\n\n var Pagination$1 = {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: function (number) { return number; },\n formatFractionTotal: function (number) { return number; },\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange: function activeIndexChange() {\n var swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange: function snapIndexChange() {\n var swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function slidesLengthChange() {\n var swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function snapGridLengthChange() {\n var swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.pagination.destroy();\n },\n click: function click(e) {\n var swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n };\n\n var Scrollbar = {\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var rtl = swiper.rtlTranslate;\n var progress = swiper.progress;\n var dragSize = scrollbar.dragSize;\n var trackSize = scrollbar.trackSize;\n var $dragEl = scrollbar.$dragEl;\n var $el = scrollbar.$el;\n var params = swiper.params.scrollbar;\n\n var newSize = dragSize;\n var newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n if (Support.transforms3d) {\n $dragEl.transform((\"translate3d(\" + newPos + \"px, 0, 0)\"));\n } else {\n $dragEl.transform((\"translateX(\" + newPos + \"px)\"));\n }\n $dragEl[0].style.width = newSize + \"px\";\n } else {\n if (Support.transforms3d) {\n $dragEl.transform((\"translate3d(0px, \" + newPos + \"px, 0)\"));\n } else {\n $dragEl.transform((\"translateY(\" + newPos + \"px)\"));\n }\n $dragEl[0].style.height = newSize + \"px\";\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(function () {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize: function updateSize() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n\n var scrollbar = swiper.scrollbar;\n var $dragEl = scrollbar.$dragEl;\n var $el = scrollbar.$el;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n var divider = swiper.size / swiper.virtualSize;\n var moveDivider = divider * (trackSize / swiper.size);\n var dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = dragSize + \"px\";\n } else {\n $dragEl[0].style.height = dragSize + \"px\";\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbarHide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize: trackSize,\n divider: divider,\n moveDivider: moveDivider,\n dragSize: dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n setDragPosition: function setDragPosition(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar;\n var rtl = swiper.rtlTranslate;\n var $el = scrollbar.$el;\n var dragSize = scrollbar.dragSize;\n var trackSize = scrollbar.trackSize;\n\n var pointerPosition;\n if (swiper.isHorizontal()) {\n pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);\n } else {\n pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);\n }\n var positionRatio;\n positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart: function onDragStart(e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar;\n var $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n var $dragEl = scrollbar.$dragEl;\n swiper.scrollbar.isTouched = true;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove: function onDragMove(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar;\n var $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n var $dragEl = scrollbar.$dragEl;\n\n if (!swiper.scrollbar.isTouched) { return; }\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd: function onDragEnd(e) {\n var swiper = this;\n\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar;\n var $el = scrollbar.$el;\n\n if (!swiper.scrollbar.isTouched) { return; }\n swiper.scrollbar.isTouched = false;\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(function () {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable: function enableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var touchEvents = swiper.touchEvents;\n var touchEventsDesktop = swiper.touchEventsDesktop;\n var params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n if (Support.touch) {\n target.addEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.addEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener);\n doc.addEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener);\n doc.addEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener);\n }\n }\n },\n disableDraggable: function disableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var touchEvents = swiper.touchEvents;\n var touchEventsDesktop = swiper.touchEventsDesktop;\n var params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n if (Support.touch) {\n target.removeEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.removeEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener);\n doc.removeEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener);\n doc.removeEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener);\n }\n }\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var $swiperEl = swiper.$el;\n var params = swiper.params.scrollbar;\n\n var $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n var $dragEl = $el.find((\".\" + (swiper.params.scrollbar.dragClass)));\n if ($dragEl.length === 0) {\n $dragEl = $((\"
\"));\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el: $el,\n el: $el[0],\n $dragEl: $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n };\n\n var Scrollbar$1 = {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update: function update() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize: function resize() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n };\n\n var Parallax = {\n setTransform: function setTransform(el, progress) {\n var swiper = this;\n var rtl = swiper.rtl;\n\n var $el = $(el);\n var rtlFactor = rtl ? -1 : 1;\n\n var p = $el.attr('data-swiper-parallax') || '0';\n var x = $el.attr('data-swiper-parallax-x');\n var y = $el.attr('data-swiper-parallax-y');\n var scale = $el.attr('data-swiper-parallax-scale');\n var opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = (parseInt(x, 10) * progress * rtlFactor) + \"%\";\n } else {\n x = (x * progress * rtlFactor) + \"px\";\n }\n if ((y).indexOf('%') >= 0) {\n y = (parseInt(y, 10) * progress) + \"%\";\n } else {\n y = (y * progress) + \"px\";\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform((\"translate3d(\" + x + \", \" + y + \", 0px)\"));\n } else {\n var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform((\"translate3d(\" + x + \", \" + y + \", 0px) scale(\" + currentScale + \")\"));\n }\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el;\n var slides = swiper.slides;\n var progress = swiper.progress;\n var snapGrid = swiper.snapGrid;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each(function (index, el) {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each(function (slideIndex, slideEl) {\n var slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each(function (index, el) {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition: function setTransition(duration) {\n if ( duration === void 0 ) duration = this.params.speed;\n\n var swiper = this;\n var $el = swiper.$el;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each(function (index, parallaxEl) {\n var $parallaxEl = $(parallaxEl);\n var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) { parallaxDuration = 0; }\n $parallaxEl.transition(parallaxDuration);\n });\n },\n };\n\n var Parallax$1 = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.parallax) { return; }\n swiper.parallax.setTranslate();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.parallax) { return; }\n swiper.parallax.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.parallax) { return; }\n swiper.parallax.setTransition(duration);\n },\n },\n };\n\n var Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) { return 1; }\n var x1 = e.targetTouches[0].pageX;\n var y1 = e.targetTouches[0].pageY;\n var x2 = e.targetTouches[1].pageX;\n var y2 = e.targetTouches[1].pageY;\n var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 )));\n return distance;\n },\n // Events\n onGestureStart: function onGestureStart(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest('.swiper-slide');\n if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n gesture.$imageEl.transition(0);\n swiper.zoom.isScaling = true;\n },\n onGestureChange: function onGestureChange(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n if (Support.gestures) {\n swiper.zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 ));\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 ));\n }\n gesture.$imageEl.transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n },\n onGestureEnd: function onGestureEnd(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) { gesture.$slideEl = undefined; }\n },\n onTouchStart: function onTouchStart(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n if (image.isTouched) { return; }\n if (Device.android) { e.preventDefault(); }\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove: function onTouchMove(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n var velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) { return; }\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; }\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 ));\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 ));\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 ));\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 ));\n }\n\n // Velocity\n if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; }\n if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; }\n if (!velocity.prevTime) { velocity.prevTime = Date.now(); }\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; }\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; }\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform((\"translate3d(\" + (image.currentX) + \"px, \" + (image.currentY) + \"px,0)\"));\n },\n onTouchEnd: function onTouchEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n var velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = velocity.x * momentumDurationX;\n var newPositionX = image.currentX + momentumDistanceX;\n var momentumDistanceY = velocity.y * momentumDurationY;\n var newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); }\n if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); }\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform((\"translate3d(\" + (image.currentX) + \"px, \" + (image.currentY) + \"px,0)\"));\n },\n onTransitionEnd: function onTransitionEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n }\n },\n // Toggle Zoom\n toggle: function toggle(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in: function in$1(e) {\n var swiper = this;\n\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n\n gesture.$slideEl.addClass((\"\" + (params.zoomedSlideClass)));\n\n var touchX;\n var touchY;\n var offsetX;\n var offsetY;\n var diffX;\n var diffY;\n var translateX;\n var translateY;\n var imageWidth;\n var imageHeight;\n var scaledWidth;\n var scaledHeight;\n var translateMinX;\n var translateMinY;\n var translateMaxX;\n var translateMaxY;\n var slideWidth;\n var slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform((\"translate3d(\" + translateX + \"px, \" + translateY + \"px,0)\"));\n gesture.$imageEl.transition(300).transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n },\n out: function out() {\n var swiper = this;\n\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent((\".\" + (params.containerClass)));\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass((\"\" + (params.zoomedSlideClass)));\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable: function enable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (zoom.enabled) { return; }\n zoom.enabled = true;\n\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, (\".\" + (swiper.params.zoom.containerClass)), zoom.onTouchMove);\n },\n disable: function disable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (!zoom.enabled) { return; }\n\n swiper.zoom.enabled = false;\n\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, (\".\" + (swiper.params.zoom.containerClass)), zoom.onTouchMove);\n },\n };\n\n var Zoom$1 = {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create: function create() {\n var swiper = this;\n var zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom: zoom,\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.zoom.disable();\n },\n touchStart: function touchStart(e) {\n var swiper = this;\n if (!swiper.zoom.enabled) { return; }\n swiper.zoom.onTouchStart(e);\n },\n touchEnd: function touchEnd(e) {\n var swiper = this;\n if (!swiper.zoom.enabled) { return; }\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap: function doubleTap(e) {\n var swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n };\n\n var Lazy = {\n loadInSlide: function loadInSlide(index, loadInDuplicate) {\n if ( loadInDuplicate === void 0 ) loadInDuplicate = true;\n\n var swiper = this;\n var params = swiper.params.lazy;\n if (typeof index === 'undefined') { return; }\n if (swiper.slides.length === 0) { return; }\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n var $slideEl = isVirtual\n ? swiper.$wrapperEl.children((\".\" + (swiper.params.slideClass) + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\"))\n : swiper.slides.eq(index);\n\n var $images = $slideEl.find((\".\" + (params.elementClass) + \":not(.\" + (params.loadedClass) + \"):not(.\" + (params.loadingClass) + \")\"));\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) { return; }\n\n $images.each(function (imageIndex, imageEl) {\n var $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n var background = $imageEl.attr('data-background');\n var src = $imageEl.attr('data-src');\n var srcset = $imageEl.attr('data-srcset');\n var sizes = $imageEl.attr('data-sizes');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; }\n if (background) {\n $imageEl.css('background-image', (\"url(\\\"\" + background + \"\\\")\"));\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find((\".\" + (params.preloaderClass))).remove();\n if (swiper.params.loop && loadInDuplicate) {\n var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n var originalSlide = swiper.$wrapperEl.children((\"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]:not(.\" + (swiper.params.slideDuplicateClass) + \")\"));\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n var duplicatedSlide = swiper.$wrapperEl.children((\".\" + (swiper.params.slideDuplicateClass) + \"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]\"));\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load: function load() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var swiperParams = swiper.params;\n var slides = swiper.slides;\n var activeIndex = swiper.activeIndex;\n var isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n var params = swiperParams.lazy;\n\n var slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children((\".\" + (swiperParams.slideClass) + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\")).length) {\n return true;\n }\n } else if (slides[index]) { return true; }\n return false;\n }\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; }\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children((\".\" + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) {\n var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) { swiper.lazy.loadInSlide(i); }\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n var amount = params.loadPrevNextAmount;\n var spv = slidesPerView;\n var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {\n if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); }\n }\n // Prev Slides\n for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {\n if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); }\n }\n } else {\n var nextSlide = $wrapperEl.children((\".\" + (swiperParams.slideNextClass)));\n if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); }\n\n var prevSlide = $wrapperEl.children((\".\" + (swiperParams.slidePrevClass)));\n if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); }\n }\n }\n },\n };\n\n var Lazy$1 = {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init: function init() {\n var swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll: function scroll() {\n var swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize: function resize() {\n var swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove: function scrollbarDragMove() {\n var swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart: function transitionStart() {\n var swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n },\n };\n\n /* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n\n var Controller = {\n LinearSpline: function LinearSpline(x, y) {\n var binarySearch = (function search() {\n var maxIndex;\n var minIndex;\n var guess;\n return function (array, val) {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n var i1;\n var i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) { return 0; }\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction: function getInterpolateFunction(c) {\n var swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate: function setTranslate(setTranslate$1, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var multiplier;\n var controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(function () {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(function () {\n if (!controlled) { return; }\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n };\n var Controller$1 = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update: function update() {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize: function resize() {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate: function setTranslate(translate, byController) {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n swiper.controller.setTransition(duration, byController);\n },\n },\n };\n\n var a11y = {\n makeElFocusable: function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole: function addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel: function addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl: function disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl: function enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey: function onEnterKey(e) {\n var swiper = this;\n var params = swiper.params.a11y;\n if (e.keyCode !== 13) { return; }\n var $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is((\".\" + (swiper.params.pagination.bulletClass)))) {\n $targetEl[0].click();\n }\n },\n notify: function notify(message) {\n var swiper = this;\n var notification = swiper.a11y.liveRegion;\n if (notification.length === 0) { return; }\n notification.html('');\n notification.html(message);\n },\n updateNavigation: function updateNavigation() {\n var swiper = this;\n\n if (swiper.params.loop) { return; }\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n }\n }\n },\n updatePagination: function updatePagination() {\n var swiper = this;\n var params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {\n var $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));\n });\n }\n },\n init: function init() {\n var swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n var params = swiper.params.a11y;\n var $nextEl;\n var $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', (\".\" + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); }\n\n var $nextEl;\n var $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', (\".\" + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);\n }\n },\n };\n var A11y = {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $((\"\")),\n },\n });\n Object.keys(a11y).forEach(function (methodName) {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge: function toEdge() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updateNavigation();\n },\n fromEdge: function fromEdge() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updateNavigation();\n },\n paginationUpdate: function paginationUpdate() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updatePagination();\n },\n destroy: function destroy() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.destroy();\n },\n },\n };\n\n var History = {\n init: function init() {\n var swiper = this;\n if (!swiper.params.history) { return; }\n if (!win.history || !win.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n var history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) { return; }\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n win.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (!swiper.params.history.replaceState) {\n win.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState: function setHistoryPopState() {\n var swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues: function getPathValues() {\n var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; });\n var total = pathArray.length;\n var key = pathArray[total - 2];\n var value = pathArray[total - 1];\n return { key: key, value: value };\n },\n setHistory: function setHistory(key, index) {\n var swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) { return; }\n var slide = swiper.slides.eq(index);\n var value = History.slugify(slide.attr('data-history'));\n if (!win.location.pathname.includes(key)) {\n value = key + \"/\" + value;\n }\n var currentState = win.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n win.history.replaceState({ value: value }, null, value);\n } else {\n win.history.pushState({ value: value }, null, value);\n }\n },\n slugify: function slugify(text) {\n return text.toString().toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {\n var swiper = this;\n if (value) {\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n };\n\n var History$1 = {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n };\n\n var HashNavigation = {\n onHashCange: function onHashCange() {\n var swiper = this;\n var newHash = doc.location.hash.replace('#', '');\n var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n var newIndex = swiper.$wrapperEl.children((\".\" + (swiper.params.slideClass) + \"[data-hash=\\\"\" + newHash + \"\\\"]\")).index();\n if (typeof newIndex === 'undefined') { return; }\n swiper.slideTo(newIndex);\n }\n },\n setHash: function setHash() {\n var swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; }\n if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) {\n win.history.replaceState(null, null, ((\"#\" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || ''));\n } else {\n var slide = swiper.slides.eq(swiper.activeIndex);\n var hash = slide.attr('data-hash') || slide.attr('data-history');\n doc.location.hash = hash || '';\n }\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; }\n swiper.hashNavigation.initialized = true;\n var hash = doc.location.hash.replace('#', '');\n if (hash) {\n var speed = 0;\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(win).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(win).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n };\n var HashNavigation$1 = {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n };\n\n /* eslint no-underscore-dangle: \"off\" */\n\n var Autoplay = {\n run: function run() {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n swiper.autoplay.timeout = Utils.nextTick(function () {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n }, delay);\n },\n start: function start() {\n var swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') { return false; }\n if (swiper.autoplay.running) { return false; }\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop: function stop() {\n var swiper = this;\n if (!swiper.autoplay.running) { return false; }\n if (typeof swiper.autoplay.timeout === 'undefined') { return false; }\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause: function pause(speed) {\n var swiper = this;\n if (!swiper.autoplay.running) { return; }\n if (swiper.autoplay.paused) { return; }\n if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); }\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n };\n\n var Autoplay$1 = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onTransitionEnd: function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) { return; }\n if (e.target !== this) { return; }\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n }\n },\n beforeTransitionStart: function beforeTransitionStart(speed, internal) {\n var swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove: function sliderFirstMove() {\n var swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n },\n },\n };\n\n var Fade = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = swiper.slides.eq(i);\n var offset = $slideEl[0].swiperSlideOffset;\n var tx = -offset;\n if (!swiper.params.virtualTranslate) { tx -= swiper.translate; }\n var ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n var slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform((\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px)\"));\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides;\n var $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n slides.transitionEnd(function () {\n if (eventTriggered) { return; }\n if (!swiper || swiper.destroyed) { return; }\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n };\n\n var EffectFade = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"fade\"));\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.fadeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.fadeEffect.setTransition(duration);\n },\n },\n };\n\n var Cube = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el;\n var $wrapperEl = swiper.$wrapperEl;\n var slides = swiper.slides;\n var swiperWidth = swiper.width;\n var swiperHeight = swiper.height;\n var rtl = swiper.rtlTranslate;\n var swiperSize = swiper.size;\n var params = swiper.params.cubeEffect;\n var isHorizontal = swiper.isHorizontal();\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var wrapperRotate = 0;\n var $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: (swiperWidth + \"px\") });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n var slideAngle = slideIndex * 90;\n var round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n var tx = 0;\n var ty = 0;\n var tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n var transform = \"rotateX(\" + (isHorizontal ? 0 : -slideAngle) + \"deg) rotateY(\" + (isHorizontal ? slideAngle : 0) + \"deg) translate3d(\" + tx + \"px, \" + ty + \"px, \" + tz + \"px)\";\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); }\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $((\"
\"));\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $((\"
\"));\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }\n if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n '-moz-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n '-ms-transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n 'transform-origin': (\"50% 50% -\" + (swiperSize / 2) + \"px\"),\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform((\"translate3d(0px, \" + ((swiperWidth / 2) + params.shadowOffset) + \"px, \" + (-swiperWidth / 2) + \"px) rotateX(90deg) rotateZ(0deg) scale(\" + (params.shadowScale) + \")\"));\n } else {\n var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n var multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n var scale1 = params.shadowScale;\n var scale2 = params.shadowScale / multiplier;\n var offset = params.shadowOffset;\n $cubeShadowEl.transform((\"scale3d(\" + scale1 + \", 1, \" + scale2 + \") translate3d(0px, \" + ((swiperHeight / 2) + offset) + \"px, \" + (-swiperHeight / 2 / scale2) + \"px) rotateX(-90deg)\"));\n }\n }\n var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform((\"translate3d(0px,0,\" + zFactor + \"px) rotateX(\" + (swiper.isHorizontal() ? 0 : wrapperRotate) + \"deg) rotateY(\" + (swiper.isHorizontal() ? -wrapperRotate : 0) + \"deg)\"));\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var $el = swiper.$el;\n var slides = swiper.slides;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n };\n\n var EffectCube = {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'cube') { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"cube\"));\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'cube') { return; }\n swiper.cubeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'cube') { return; }\n swiper.cubeEffect.setTransition(duration);\n },\n },\n };\n\n var Flip = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n var rtl = swiper.rtlTranslate;\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n var offset = $slideEl[0].swiperSlideOffset;\n var rotate = -180 * progress;\n var rotateY = rotate;\n var rotateX = 0;\n var tx = -offset;\n var ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $((\"
\"));\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $((\"
\"));\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }\n if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }\n }\n $slideEl\n .transform((\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\"));\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides;\n var activeIndex = swiper.activeIndex;\n var $wrapperEl = swiper.$wrapperEl;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) { return; }\n if (!swiper || swiper.destroyed) { return; }\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n };\n\n var EffectFlip = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'flip') { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"flip\"));\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'flip') { return; }\n swiper.flipEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'flip') { return; }\n swiper.flipEffect.setTransition(duration);\n },\n },\n };\n\n var Coverflow = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var swiperWidth = swiper.width;\n var swiperHeight = swiper.height;\n var slides = swiper.slides;\n var $wrapperEl = swiper.$wrapperEl;\n var slidesSizesGrid = swiper.slidesSizesGrid;\n var params = swiper.params.coverflowEffect;\n var isHorizontal = swiper.isHorizontal();\n var transform = swiper.translate;\n var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n var rotate = isHorizontal ? params.rotate : -params.rotate;\n var translate = params.depth;\n // Each slide offset from center\n for (var i = 0, length = slides.length; i < length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideSize = slidesSizesGrid[i];\n var slideOffset = $slideEl[0].swiperSlideOffset;\n var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n var translateZ = -translate * Math.abs(offsetMultiplier);\n\n var translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);\n var translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) { translateX = 0; }\n if (Math.abs(translateY) < 0.001) { translateY = 0; }\n if (Math.abs(translateZ) < 0.001) { translateZ = 0; }\n if (Math.abs(rotateY) < 0.001) { rotateY = 0; }\n if (Math.abs(rotateX) < 0.001) { rotateX = 0; }\n\n var slideTransform = \"translate3d(\" + translateX + \"px,\" + translateY + \"px,\" + translateZ + \"px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\";\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $((\"
\"));\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $((\"
\"));\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; }\n if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; }\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n var ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = center + \"px 50%\";\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n };\n\n var EffectCoverflow = {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') { return; }\n\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"coverflow\"));\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"3d\"));\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') { return; }\n swiper.coverflowEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') { return; }\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n };\n\n var Thumbs = {\n init: function init() {\n var swiper = this;\n var ref = swiper.params;\n var thumbsParams = ref.thumbs;\n var SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick: function onThumbClick() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n var clickedIndex = thumbsSwiper.clickedIndex;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) { return; }\n var slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n var currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n var prevIndex = swiper.slides.eq(currentIndex).prevAll((\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\")).eq(0).index();\n var nextIndex = swiper.slides.eq(currentIndex).nextAll((\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\")).eq(0).index();\n if (typeof prevIndex === 'undefined') { slideToIndex = nextIndex; }\n else if (typeof nextIndex === 'undefined') { slideToIndex = prevIndex; }\n else if (nextIndex - currentIndex < currentIndex - prevIndex) { slideToIndex = nextIndex; }\n else { slideToIndex = prevIndex; }\n }\n swiper.slideTo(slideToIndex);\n },\n update: function update(initial) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n\n var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex) {\n var currentThumbsIndex = thumbsSwiper.activeIndex;\n var newThumbsIndex;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll((\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex) + \"\\\"]\")).eq(0).index();\n var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll((\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex) + \"\\\"]\")).eq(0).index();\n if (typeof prevThumbsIndex === 'undefined') { newThumbsIndex = nextThumbsIndex; }\n else if (typeof nextThumbsIndex === 'undefined') { newThumbsIndex = prevThumbsIndex; }\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = nextThumbsIndex; }\n else { newThumbsIndex = prevThumbsIndex; }\n } else {\n newThumbsIndex = swiper.realIndex;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n var thumbsToActivate = 1;\n var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop) {\n for (var i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children((\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex + i) + \"\\\"]\")).addClass(thumbActiveClass);\n }\n } else {\n for (var i$1 = 0; i$1 < thumbsToActivate; i$1 += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i$1).addClass(thumbActiveClass);\n }\n }\n },\n };\n var Thumbs$1 = {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n var ref = swiper.params;\n var thumbs = ref.thumbs;\n if (!thumbs || !thumbs.swiper) { return; }\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange: function slideChange() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n update: function update() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n resize: function resize() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy: function beforeDestroy() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n };\n\n // Swiper Class\n\n var components = [\n Device$1,\n Support$1,\n Browser$1,\n Resize,\n Observer$1,\n Virtual$1,\n Keyboard$1,\n Mousewheel$1,\n Navigation$1,\n Pagination$1,\n Scrollbar$1,\n Parallax$1,\n Zoom$1,\n Lazy$1,\n Controller$1,\n A11y,\n History$1,\n HashNavigation$1,\n Autoplay$1,\n EffectFade,\n EffectCube,\n EffectFlip,\n EffectCoverflow,\n Thumbs$1\n ];\n\n if (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n }\n\n Swiper.use(components);\n\n return Swiper;\n\n})));\n\n// Slideshow Animation\r\n(function(document) {\r\n var BackgroundImageSlider = function($slider) {\r\n var _this = this;\r\n _this.$slider = $slider;\r\n _this.$slides = _this.$slider.querySelectorAll('.background_image_wrapper'),\r\n _this.$dots = _this.$slider.querySelectorAll('.pagination .item'),\r\n _this.$prev = _this.$slider.querySelector('.navigation_wrapper .prev'),\r\n _this.$next = _this.$slider.querySelector('.navigation_wrapper .next'),\r\n _this.index = 0,\r\n _this.oldindex = 0,\r\n _this.time = 5000,\r\n _this.intervall,\r\n _this.touch_start_x;\r\n };\r\n\r\n BackgroundImageSlider.prototype = {\r\n init: function() {\r\n var _this = this;\r\n\r\n if (_this.$slides.length > 1) {\r\n _this._init_mouse();\r\n _this._init_touch();\r\n _this.intervall = setInterval(_this._callIntervall.bind(this), _this.time);\r\n }\r\n\r\n if (_this.$slides.length > 2) {\r\n document.querySelector('body').classList.add('has_pagination');\r\n }\r\n },\r\n\r\n _init_mouse: function() {\r\n var _this = this;\r\n\r\n for (var i = 0; i < _this.$dots.length; i++) {\r\n _this.$dots[i].index = i;\r\n _this.$dots[i].addEventListener('click', function(event) {\r\n event.preventDefault();\r\n _this._changeSlider(this.index);\r\n }, false);\r\n }\r\n if (_this.$prev) {\r\n _this.$prev.addEventListener('click', function(event) {\r\n event.preventDefault();\r\n _this._changeSlider(_this.index - 1);\r\n }, false);\r\n }\r\n if (_this.$next) {\r\n _this.$next.addEventListener('click', function(event) {\r\n event.preventDefault();\r\n _this._changeSlider(_this.index + 1);\r\n }, false);\r\n }\r\n },\r\n\r\n _changeSlider: function(newIndex) {\r\n clearInterval(this.intervall);\r\n this.intervall = setInterval(this._callIntervall.bind(this), this.time);\r\n\r\n if (newIndex === this.index) {\r\n return;\r\n }\r\n\r\n if (newIndex < 0) {\r\n newIndex = this.$slides.length - 1;\r\n }\r\n if (newIndex > this.$slides.length - 1) {\r\n newIndex = 0;\r\n }\r\n\r\n this.oldindex = this.index;\r\n this.index = newIndex;\r\n this.$slides[this.index].classList.add('show');\r\n this.$slides[this.oldindex].classList.remove('show');\r\n\r\n if (this.$dots && this.$dots.length > 0) {\r\n this.$dots[this.index].classList.add('active');\r\n this.$dots[this.oldindex].classList.remove('active');\r\n }\r\n },\r\n\r\n _init_touch: function() {\r\n var _this = this\r\n _this.$slider.addEventListener('touchstart', function(event) {\r\n _this.touch_start_x = event.changedTouches[0].pageX;\r\n });\r\n\r\n _this.$slider.addEventListener('touchmove', function(event) {\r\n var touch = event.touches[0] || event.changedTouches[0],\r\n touch_x = touch.pageX;\r\n\r\n if ((touch_x - _this.touch_start_x > 50) || (touch_x - _this.touch_start_x < -50)) {\r\n event.preventDefault();\r\n }\r\n });\r\n\r\n _this.$slider.addEventListener('touchend', function(event) {\r\n var touch = event.touches[0] || event.changedTouches[0],\r\n touch_x = touch.pageX;\r\n\r\n if (touch_x - _this.touch_start_x > 50) {\r\n _this._changeSlider(_this.index - 1);\r\n }\r\n else if (touch_x - _this.touch_start_x < -50) {\r\n _this._changeSlider(_this.index + 1);\r\n }\r\n });\r\n },\r\n\r\n _callIntervall: function() {\r\n this._changeSlider(this.index + 1);\r\n },\r\n\r\n };\r\n\r\n var $slider = document.querySelectorAll('.background_image_slider_overview');\r\n\r\n for (var i = 0; i < $slider.length; i++) {\r\n new BackgroundImageSlider($slider[i]).init();\r\n }\r\n\r\n})(document);\r\n\n// BARRIEREFREIHEIT\n// Wird gebraucht für alle Projekte\n\n// EXTERNER LINK\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var $links = document.querySelectorAll('[href*=http]');\n\n for (var i = 0, $link; $link = $links[i]; i++) {\n var target = $link.getAttribute('target'),\n title = $link.getAttribute('title');\n\n if (title && target === '_blank') {\n $link.setAttribute('title', title + ' (Neues Fenster)');\n }\n }\n})(document);\n\n\n// TASTATURSTEUERUNG FÜR ELEMENTE MIT ROLE BUTTON\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var $buttons = document.querySelectorAll('[role=\"button\"]');\n\n for (var i = 0, $button; $button = $buttons[i]; i++) {\n $button.addEventListener('keyup', function(event) {\n if (event.keyCode === 13 && this.tagName !== 'A' || event.keyCode === 32) {\n this.click();\n }\n });\n }\n})(document);\n\n\n// ERKENNUNG DER FOKUSMETHODE FÜR LINKS\n// Wird verwendet für verbesserten Fokus auf Links (siehe default.less)\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var FocusMethod = function($link) {\n var _this = this;\n\n _this.$link = $link;\n\n _this.focus_method = false;\n _this.last_focus_method = false;\n };\n\n FocusMethod.prototype = {\n init: function() {\n var _this = this;\n\n _this.$link.addEventListener('keydown',\n _this._on_key_down.bind(this), {\n 'passive' : true\n }\n );\n\n _this.$link.addEventListener('mousedown',\n _this._on_mouse_down.bind(this), {\n 'passive' : true\n }\n );\n\n _this.$link.addEventListener('touchstart',\n _this._on_touch_start.bind(this), {\n 'passive' : true\n }\n );\n\n _this.$link.addEventListener('focus', _this._on_focus.bind(this));\n _this.$link.addEventListener('blur', _this._on_blur.bind(this));\n\n window.addEventListener('blur', this._on_window_blur.bind(this));\n },\n\n _on_key_down: function() {\n var _this = this;\n\n _this.focus_method = 'key';\n },\n\n _on_mouse_down: function() {\n var _this = this;\n\n if (_this.focus_method === 'touch') {\n return;\n }\n\n _this.focus_method = 'mouse';\n },\n\n _on_touch_start: function() {\n var _this = this;\n\n _this.focus_method = 'touch';\n },\n\n _on_focus: function() {\n var _this = this;\n\n if (!_this.focus_method) {\n _this.focus_method = _this.last_focus_method;\n }\n\n _this.$link.setAttribute('data-focus-method', _this.focus_method);\n\n this.last_focus_method = this.focus_method;\n this.focus_method = false;\n },\n\n _on_blur: function() {\n var _this = this;\n\n _this.$link.removeAttribute('data-focus-method');\n },\n\n _on_window_blur: function() {\n var _this = this;\n\n _this.focus_method = false;\n }\n };\n\n var $links = document.querySelectorAll('a, [tabindex=\"0\"]');\n\n for (var i = 0, $link; $link = $links[i]; i++) {\n new FocusMethod($link).init();\n }\n})(document);\n\n// TOOLTIP\n// Wird gebraucht für: google_maps,newsletter_quick_subscribe, formular\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var Tooltip = function($tooltip_wrapper) {\n var _this = this;\n\n _this.$tooltip_wrapper = $tooltip_wrapper;\n _this.$tooltip = $tooltip_wrapper.querySelector('[role=\"tooltip\"]');\n\n _this._temp_disabled = false;\n _this._perm_disabled = false;\n _this._focused = false;\n\n var tooltip_id = _this.$tooltip.getAttribute('id');\n\n _this.$tooltip_trigger = $tooltip_wrapper.querySelector('[aria-describedby=\"' + tooltip_id + '\"]');\n };\n\n Tooltip.prototype = {\n init: function() {\n var _this = this;\n\n _this.$tooltip_trigger.addEventListener('keyup', _this._check_tooltip.bind(_this));\n _this.$tooltip_trigger.addEventListener('focus', _this._check_tooltip.bind(_this));\n _this.$tooltip_trigger.addEventListener('blur', _this._hide_tooltip.bind(_this));\n\n if (!support.touch) {\n _this.$tooltip.addEventListener('mouseenter', _this._check_tooltip.bind(_this));\n _this.$tooltip.addEventListener('mouseleave', _this._hide_tooltip.bind(_this));\n _this.$tooltip_trigger.addEventListener('mouseenter', _this._check_tooltip.bind(_this));\n _this.$tooltip_trigger.addEventListener('mouseleave', _this._hide_tooltip.bind(_this));\n }\n\n _this._keyboard_nav();\n },\n\n _check_tooltip: function(event) {\n var _this = this;\n\n if (_this.$tooltip_trigger.getAttribute('aria-invalid') === 'true') {\n _this._perm_disabled = false;\n _this._show_tooltip(event);\n }\n else {\n _this._perm_disabled = true;\n _this._hide_tooltip(event);\n }\n },\n\n _show_tooltip: function(event) {\n var _this = this;\n\n if (_this.disabled) {\n return;\n }\n\n if (event.type === 'keyup' || event.type === 'focus') {\n _this._focused = true;\n }\n\n if (!_this._temp_disabled && !_this._perm_disabled ||\n event.type === 'mouseenter' && !_this._perm_disabled) {\n _this.$tooltip.setAttribute('aria-hidden', 'false');\n }\n },\n\n _hide_tooltip: function(event) {\n var _this = this;\n\n if (event.type === 'blur') {\n _this._temp_disabled = false;\n _this._focused = false;\n }\n\n if (!_this._focused || _this._perm_disabled || _this._temp_disabled) {\n _this.$tooltip.setAttribute('aria-hidden', 'true');\n }\n },\n\n _keyboard_nav: function() {\n var _this = this;\n\n _this.$tooltip_trigger.addEventListener('keydown', function(event) {\n if (event.keyCode === 27 && _this.$tooltip.getAttribute('aria-hidden') === 'false') {\n event.stopPropagation();\n\n _this._temp_disabled = true;\n _this._hide_tooltip(event);\n }\n });\n }\n };\n\n var $tooltip_wrappers = document.querySelectorAll('.tooltip_wrapper');\n\n for (var i = 0, len = $tooltip_wrappers.length; i < len; i++) {\n new Tooltip($tooltip_wrappers[i]).init();\n }\n\n window.Tooltip = Tooltip;\n})(document);\n\n// OFFCANVAS MENU\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var OffCanvasMenu = function($toggle_offcanvas_menu) {\n var _this = this,\n controls;\n\n controls = $toggle_offcanvas_menu.querySelector('.open_offcanvas_menu').getAttribute('aria-controls');\n\n _this.$offcanvas_menu = document.getElementById(controls);\n _this.$main_menuitems_with_sub_menu = _this.$offcanvas_menu.querySelectorAll('[href^=\"#\"]');\n // _this.$offcanvas_menu_content = _this.$offcanvas_menu.querySelector('.offcanvas_menu_content');\n _this.$focus_elements = _this.$offcanvas_menu.querySelectorAll('a');\n _this.focus_element = false;\n _this.$offcanvas_menu_state = false;\n\n _this.$key = {\n 'tab' : 9,\n };\n };\n\n OffCanvasMenu.prototype = {\n init: function() {\n var _this = this;\n\n _this._init_accessibility();\n _this._init_keyboard();\n\n for (var j = 0, $main_menuitem_with_sub_menu; $main_menuitem_with_sub_menu = _this.$main_menuitems_with_sub_menu[j]; j++) {\n $main_menuitem_with_sub_menu.addEventListener('click',\n _this._on_click_main_menuitem.bind(_this, $main_menuitem_with_sub_menu)\n );\n }\n },\n\n _init_accessibility: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n $main_menuitem.setAttribute('aria-expanded', $main_menuitem.classList.contains('active'));\n }\n },\n\n _init_keyboard: function() {\n var _this = this;\n\n document.addEventListener('keydown', function(event) {\n if (!_this.$offcanvas_menu_state.checked) {\n return;\n }\n\n if (event.keyCode === _this.$key.tab) {\n event.preventDefault();\n\n if (event.shiftKey) {\n _this._focus_element_with_shift_tab_key(event);\n }\n else {\n _this._focus_element_with_tab_key(event);\n }\n }\n });\n },\n\n _focus_element_with_shift_tab_key: function() {\n var _this = this;\n\n _this.tab_index -= 1;\n\n if (_this.tab_index < 0) {\n _this.tab_index = _this.$focus_elements.length - 1;\n }\n\n for (var i = _this.tab_index, $focus_element; $focus_element = _this.$focus_elements[i]; i--) {\n if ($focus_element.offsetParent === null || $focus_element.offsetWidth === 0) {\n _this.tab_index -= 1;\n continue;\n }\n\n _this.$focus_elements[_this.tab_index].focus();\n break;\n }\n },\n\n _focus_element_with_tab_key: function() {\n var _this = this;\n\n if (_this.tab_index === _this.$focus_elements.length - 1) {\n _this.tab_index = 0;\n }\n else {\n _this.tab_index += 1;\n }\n\n for (var i = _this.tab_index, $focus_element; $focus_element = _this.$focus_elements[i]; i++) {\n if ($focus_element.offsetParent === null || $focus_element.offsetWidth === 0) {\n _this.tab_index += 1;\n\n if (_this.tab_index > _this.$focus_elements.length - 1) {\n _this.tab_index = 0;\n }\n else {\n continue;\n }\n }\n\n _this.$focus_elements[_this.tab_index].focus();\n break;\n }\n },\n\n _on_click_main_menuitem: function($main_menuitem, event) {\n var _this = this;\n\n event.preventDefault();\n\n _this.$main_menuitem = $main_menuitem;\n\n _this._toggle_sub_menus();\n },\n\n _toggle_sub_menus: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n var is_active_menuitem = _this.$main_menuitem === $main_menuitem,\n $parent_menuitems = _this._get_parent_menu_elements();\n\n if (is_active_menuitem) {\n _this.sub_menu_is_open = $main_menuitem.getAttribute('aria-expanded') === 'false';\n\n $main_menuitem.parentElement.classList.toggle('expanded', _this.sub_menu_is_open);\n $main_menuitem.setAttribute('aria-expanded', _this.sub_menu_is_open);\n }\n else if ($parent_menuitems.indexOf($main_menuitem) !== -1) { // Check parents\n $main_menuitem.parentElement.classList.toggle('expanded', 'true');\n $main_menuitem.setAttribute('aria-expanded', 'true');\n }\n else {\n $main_menuitem.parentElement.classList.remove('expanded');\n $main_menuitem.setAttribute('aria-expanded', 'false');\n }\n }\n },\n\n _get_parent_menu_elements: function() {\n var _this = this.$main_menuitem,\n $findings = [];\n\n while (_this.parentNode) {\n _this = _this.parentNode;\n\n if (_this.nodeName.toLowerCase() === 'li') {\n $findings.push(_this.querySelector('a'));\n }\n }\n\n return $findings || False;\n }\n };\n\n var OffCanvasMenuOpener = function($toggle_offcanvas_menu) {\n var _this = this;\n var controls = $toggle_offcanvas_menu.querySelector('.open_offcanvas_menu').getAttribute('aria-controls');\n\n _this.$toggle_offcanvas_menu = $toggle_offcanvas_menu.querySelector('label');\n _this.$open_offcanvas_menu = $toggle_offcanvas_menu.querySelector('.open_offcanvas_menu');\n _this.$close_offcanvas_menu = $toggle_offcanvas_menu.querySelector('.close_offcanvas_menu');\n _this.$offcanvas_menu_state = document.querySelector('#' + _this.$toggle_offcanvas_menu.getAttribute('for'));\n _this.$offcanvas_menu = document.getElementById(controls);\n _this.$focus_elements = _this.$offcanvas_menu.querySelectorAll('a');\n\n _this.$key = {\n 'enter' : 13,\n 'escape' : 27,\n 'space' : 32\n };\n };\n\n OffCanvasMenuOpener.prototype = {\n init: function() {\n var _this = this;\n\n _this._init_keyboard();\n\n _this.$toggle_offcanvas_menu.addEventListener('click', _this._toggle_menu.bind(_this));\n _this.$open_offcanvas_menu.addEventListener('click', _this._open_menu.bind(_this));\n _this.$close_offcanvas_menu.addEventListener('click', _this._close_menu.bind(_this));\n\n _this.$offcanvas_menu.addEventListener('transitionend', function(event) {\n\n // var _this = this;\n if (event.target !== this) {\n return;\n }\n\n if (_this.$offcanvas_menu_state.checked) {\n if (_this.focus_element) {\n _this.focus_element = false;\n _this.$focus_elements[0].focus();\n }\n }\n else if (_this.focus_element) {\n _this.focus_element = false;\n _this.$open_offcanvas_menu.focus();\n }\n });\n },\n\n _init_keyboard: function() {\n var _this = this;\n\n _this.$open_offcanvas_menu.addEventListener('keydown', function(event) {\n if (event.keyCode === _this.$key.space || event.keyCode === _this.$key.enter) {\n _this.focus_element = true;\n }\n\n if (event.keyCode === _this.$key.space) {\n event.preventDefault();\n }\n });\n\n _this.$close_offcanvas_menu.addEventListener('keydown', function(event) {\n if (event.keyCode === _this.$key.space) {\n event.preventDefault();\n }\n });\n\n document.addEventListener('keydown', function(event) {\n if (!_this.$offcanvas_menu_state.checked) {\n return;\n }\n\n if (event.keyCode === _this.$key.escape) {\n _this.focus_element = true;\n _this._close_menu(event);\n }\n });\n },\n\n _scroll_to_top: function() {\n var _this = this;\n\n setTimeout(function() {\n var duration = 300,\n interval;\n\n interval = setInterval(function() {\n var diff = -window.pageYOffset,\n step = diff / duration * 10;\n\n if (Math.abs(diff) <= Math.abs(step)) {\n if (_this.$anchor) {\n _this.$anchor.focus();\n }\n\n clearInterval(interval);\n }\n\n window.scrollBy(0, step);\n duration -= 10;\n }, 10);\n }, 300);\n },\n\n _toggle_menu: function(event) {\n var _this = this;\n\n if (_this.$offcanvas_menu_state.checked) {\n _this._close_menu(event);\n }\n else {\n _this._open_menu(event);\n }\n },\n\n _open_menu: function(event) {\n var _this = this;\n\n event.preventDefault();\n\n _this.$offcanvas_menu_state.checked = true;\n _this.tab_index = 0;\n\n _this._scroll_to_top();\n },\n\n _close_menu: function(event) {\n var _this = this;\n\n event.preventDefault();\n\n _this.$offcanvas_menu_state.checked = false;\n _this.tab_index = 0;\n }\n };\n\n var $offcanvas_menu = document.getElementsByClassName('toggle_offcanvas_menu');\n\n if ($offcanvas_menu.length) {\n new OffCanvasMenu($offcanvas_menu[0]).init(); // init once\n\n // create an opener for each button\n for (var i = 0, len = $offcanvas_menu.length; i < len; i++) {\n new OffCanvasMenuOpener($offcanvas_menu[i]).init();\n }\n }\n})(document);\n\n// FORMULARE\n// -------------------------------------------------------------------------------------------------\n\n(function() {\n var FormHelpers = function(element) {\n var _this = this;\n\n _this.$el = $$(element);\n };\n\n FormHelpers.prototype = {\n init: function() {\n var _this = this;\n\n _this._file_upload();\n _this._select();\n },\n\n _file_upload: function() {\n var _this = this;\n\n if (_this.$el.get_attribute('type') !== 'file') {\n return;\n }\n\n var $file_name = _this.$el.get_parent().children('.file_name'),\n $file_button = _this.$el.get_parent().children('.file_button');\n\n _this.$el.add_event('focus', function() {\n $file_button.add_class('focus');\n });\n\n _this.$el.add_event('blur', function() {\n $file_button.remove_class('focus');\n });\n\n _this.$el.add_event('change', function() {\n $file_name.set_text(_this.$el.get_file().filename);\n });\n },\n\n _select: function() {\n var _this = this;\n\n if (!_this.$el.is_tag('select')) {\n return;\n }\n\n _this.$el.add_event('focus', function() {\n _this.$el.get_parent('.select').add_class('focus');\n });\n\n _this.$el.add_event('blur', function() {\n _this.$el.get_parent('.select').remove_class('focus');\n });\n }\n };\n\n $$('input, select, textarea').for_each(function() {\n new FormHelpers(this).init();\n });\n})();\n\n// FORM VALIDIERUNG\n// -------------------------------------------------------------------------------------------------\n\n(function(document, window) {\n var FormValidation = function($form) {\n var _this = this;\n\n _this._$form = $form;\n _this._$inputs = _this._$form.querySelectorAll('input.validate, textarea.validate');\n _this._$inputs_checkbox = _this._$form.querySelectorAll('input[type=checkbox][required]');\n _this._$selects = _this._$form.querySelectorAll('select[required]');\n _this._$button = _this._$form.querySelector('[type=\"submit\"]');\n _this._$error_msg_button = _this._$form.querySelector('.error_msg_button');\n };\n\n FormValidation.prototype = {\n init: function() {\n var _this = this;\n\n for (var j = 0, inputs_len = _this._$inputs.length; j < inputs_len; j++) {\n var $input = this._$inputs[j];\n\n $input.addEventListener('keyup', _this._input_keyup.bind(_this, $input));\n $input.addEventListener('blur', _this._input_blur.bind(_this, $input));\n }\n\n for (var i = 0, inputs_checkbox_len = _this._$inputs_checkbox.length; i < inputs_checkbox_len; i++) {\n var $input_checkbox = this._$inputs_checkbox[i];\n\n $input_checkbox.addEventListener('click', _this._input_checkbox_click.bind(_this, $input_checkbox));\n $input_checkbox.addEventListener('keyup', _this._input_checkbox_keyup.bind(_this, $input_checkbox));\n $input_checkbox.addEventListener('blur', _this._input_checkbox_blur.bind(_this, $input_checkbox));\n }\n\n for (var x = 0, selects_len = _this._$selects.length; x < selects_len; x++) {\n var $select = this._$selects[x];\n\n $select.addEventListener('change', _this._select_change.bind(_this, $select));\n $select.addEventListener('blur', _this._select_blur.bind(_this, $select));\n }\n\n _this._$form.addEventListener('submit', _this._submit.bind(_this));\n\n _this._check_submit_status();\n },\n\n _input_keyup: function($input, event) {\n if (event.keyCode === 9 || event.keyCode === 27) {\n // No validation on TAB or ESC\n return;\n }\n\n this._validate_input($input, event);\n },\n\n _input_blur: function($input, event) {\n this._validate_input($input, event);\n },\n\n _validate_input: function($input, event) {\n var _this = this,\n id = $input.getAttribute('id'),\n $error_warning = document.querySelector('[for=\"' + id + '\"] .error_warning'),\n min = parseInt($input.getAttribute('min')),\n pattern = $input.getAttribute('pattern'),\n regexp = new RegExp(pattern),\n value = $input.value;\n\n if ($input.type === 'file') {\n _this._validate_input_file($input);\n }\n else if (value) {\n if (pattern && value.match(regexp) || value >= min || !pattern && $input.required) {\n $input.setAttribute('aria-invalid', 'false');\n\n if (!event || event.type === 'blur') {\n $input.classList.remove('error');\n\n if ($error_warning) {\n $error_warning.classList.remove('show');\n }\n }\n }\n else {\n $input.setAttribute('aria-invalid', 'true');\n\n if (!event || event.type === 'blur') {\n $input.classList.add('error');\n\n if ($error_warning) {\n $error_warning.classList.add('show');\n }\n }\n }\n }\n else if ($input.required) {\n $input.setAttribute('aria-invalid', 'true');\n\n if (!event || event.type === 'blur') {\n $input.classList.add('error');\n\n if ($error_warning) {\n $error_warning.classList.add('show');\n }\n }\n }\n else {\n $input.setAttribute('aria-invalid', 'false');\n\n if (!event || event.type === 'blur') {\n $input.classList.remove('error');\n\n if ($error_warning) {\n $error_warning.classList.remove('show');\n }\n }\n }\n _this._check_submit_status();\n },\n\n _validate_input_file: function($input) {\n var _this = this,\n id = $input.getAttribute('id'),\n $error_warning = document.querySelector('[for=\"' + id + '\"] .error_warning'),\n value = $input.value;\n\n while ($input && $input.nodeType !== 9) {\n $input = $input.parentNode;\n\n if ($input.classList.contains('file')) {\n break;\n }\n }\n\n if (value) {\n $input.classList.remove('error');\n if ($error_warning) {\n $error_warning.classList.remove('show');\n }\n }\n else {\n $input.classList.add('error');\n if ($error_warning) {\n $error_warning.classList.add('show');\n }\n }\n\n _this._check_submit_status();\n },\n\n _input_checkbox_click: function($input_checkbox, event) {\n this._validate_input_checkbox($input_checkbox, event);\n },\n\n _input_checkbox_keyup: function($input_checkbox, event) {\n if (event.keyCode === 32) { // SPACE\n this._validate_input_checkbox($input_checkbox, event);\n }\n },\n\n _input_checkbox_blur: function($input_checkbox, event) {\n this._validate_input_checkbox($input_checkbox, event);\n },\n\n _validate_input_checkbox: function($input_checkbox, event) {\n var _this = this,\n id = $input_checkbox.getAttribute('id'),\n $error_warning = document.querySelector('#label_' + id + ' .error_warning');\n\n if ($input_checkbox.checked && !event ||\n $input_checkbox.checked && event && event.type !== 'keyup' ||\n !$input_checkbox.checked && event && event.type === 'keyup') {\n $input_checkbox.setAttribute('aria-invalid', 'false');\n $input_checkbox.classList.remove('error');\n $error_warning.classList.remove('show');\n }\n else {\n $input_checkbox.setAttribute('aria-invalid', 'true');\n $input_checkbox.classList.add('error');\n $error_warning.classList.add('show');\n }\n\n _this._check_submit_status();\n },\n\n _select_change: function($select, event) {\n this._validate_select($select, event);\n },\n\n _select_blur: function($select, event) {\n this._validate_select($select, event);\n },\n\n _validate_select: function($select, event) {\n var _this = this,\n id = $select.getAttribute('id'),\n $wrapper = $select,\n $error_warning = document.querySelector('#label_' + id + ' .error_warning'),\n value = $select.value;\n\n while ($wrapper && $wrapper.nodeType !== 9) {\n $wrapper = $wrapper.parentNode;\n\n if ($wrapper.classList.contains('select')) {\n break;\n }\n }\n\n if (value) {\n $select.setAttribute('aria-invalid', 'false');\n\n if (!event || event.type === 'blur') {\n $wrapper.classList.remove('error');\n $error_warning.classList.remove('show');\n }\n }\n else {\n $select.setAttribute('aria-invalid', 'true');\n\n if (!event || event.type === 'blur') {\n $wrapper.classList.add('error');\n $error_warning.classList.add('show');\n }\n }\n\n _this._check_submit_status();\n },\n\n _check_submit_status: function() {\n var _this = this,\n error_msg_button_id = _this._$error_msg_button.getAttribute('id'),\n enable_submit_button = true;\n\n for (var j = 0, inputs_len = _this._$inputs.length; j < inputs_len; j++) {\n if (_this._$inputs[j].getAttribute('aria-invalid') === 'true' ||\n _this._$inputs[j].required && !_this._$inputs[j].value) {\n enable_submit_button = false;\n break;\n }\n }\n\n for (var i = 0, inputs_checkbox_len = _this._$inputs_checkbox.length; i < inputs_checkbox_len; i++) {\n if (!_this._$inputs_checkbox[i].checked) {\n enable_submit_button = false;\n break;\n }\n }\n\n for (var x = 0, selects_len = _this._$selects.length; x < selects_len; x++) {\n if (!_this._$selects[x].value) {\n enable_submit_button = false;\n break;\n }\n }\n\n if (enable_submit_button) {\n _this._$button.classList.remove('disabled');\n _this._$button.removeAttribute('aria-describedby');\n }\n else {\n _this._$button.classList.add('disabled');\n _this._$button.setAttribute('aria-describedby', error_msg_button_id);\n }\n },\n\n _show_first_error: function() {\n var _this = this,\n $first_input_error = _this._$form.querySelector('[aria-invalid=\"true\"]'),\n top_position = 0,\n offset_top = 60,\n duration = 300,\n interval,\n $obj;\n\n if ($first_input_error) {\n $obj = $first_input_error;\n top_position = $obj.offsetTop - offset_top;\n\n while ($obj = $obj.offsetParent) {\n top_position += $obj.offsetTop;\n }\n\n if (window.pageYOffset < top_position) {\n $first_input_error.focus();\n return;\n }\n\n interval = setInterval(function() {\n var diff = top_position - window.pageYOffset,\n step = diff / duration * 10;\n\n if (Math.abs(diff) <= Math.abs(step)) {\n $first_input_error.focus();\n clearInterval(interval);\n }\n\n window.scrollBy(0, step);\n duration -= 10;\n }, 10);\n }\n },\n\n _submit: function(event) {\n var _this = this;\n\n _this._check_submit_status();\n\n if (_this._$button.classList.contains('disabled')) {\n event.preventDefault();\n\n for (var j = 0, inputs_len = _this._$inputs.length; j < inputs_len; j++) {\n _this._validate_input(this._$inputs[j]);\n }\n\n for (var i = 0, inputs_checkbox_len = _this._$inputs_checkbox.length; i < inputs_checkbox_len; i++) {\n _this._validate_input_checkbox(this._$inputs_checkbox[i]);\n }\n\n for (var x = 0, selects_len = _this._$selects.length; x < selects_len; x++) {\n _this._validate_select(this._$selects[x]);\n }\n\n _this._show_first_error();\n }\n }\n };\n\n var $forms = document.querySelectorAll('[data-form*=\"validate\"]');\n\n for (var i = 0, len = $forms.length; i < len; i++) {\n new FormValidation($forms[i]).init();\n }\n})(document, window);\n\n// FORMULARE: EINGABE ZWISCHENSPEICHERN\n// Wird verwendet für: formular\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var FormCache = function($form) {\n var _this = this;\n\n _this._$form = $form;\n _this._form_name = _this._$form.getAttribute('data-form-cache');\n _this._$inputs = _this._$form.querySelectorAll('input, select, textarea');\n _this._$cache = {};\n };\n\n FormCache.prototype = {\n init: function() {\n var _this = this;\n\n _this._init_events();\n _this._restore_cache();\n },\n\n _init_events: function() {\n var _this = this,\n $input,\n type,\n event_listener;\n\n for (var i = 0, len = _this._$inputs.length; i < len; i++) {\n $input = _this._$inputs[i];\n type = $input.type;\n\n if (type === 'checkbox') {\n event_listener = 'click';\n }\n else if (type === 'select-one') {\n event_listener = 'change';\n }\n else {\n event_listener = 'input';\n }\n\n $input.addEventListener(event_listener, _this._save_cache.bind(_this, $input), false);\n }\n\n _this._$form.addEventListener('submit', _this._reset_cache.bind(_this), false);\n },\n\n _save_cache: function($input) {\n var _this = this,\n name = $input.getAttribute('name'),\n type = $input.type;\n\n if (type === 'checkbox') {\n _this._$cache[name] = $input.checked;\n }\n else if (type === 'select-one') {\n _this._$cache[name] = $input.selectedIndex;\n }\n else {\n _this._$cache[name] = $input.value;\n }\n\n localStorage.setItem(domain + '_form_cache_' + _this._form_name, JSON.stringify(_this._$cache));\n },\n\n _restore_cache: function() {\n var _this = this,\n $cache = localStorage.getItem(domain + '_form_cache_' + _this._form_name),\n $input,\n type;\n\n if (!$cache) {\n return;\n }\n\n _this._$cache = JSON.parse($cache);\n\n for (var key in _this._$cache) {\n if (_this._$cache.hasOwnProperty(key)) {\n $input = _this._$form.querySelector('[name=\"' + key + '\"]');\n type = $input.type;\n\n if (type === 'checkbox') {\n $input.checked = _this._$cache[key];\n }\n else if (type === 'select-one') {\n $input.selectedIndex = _this._$cache[key];\n }\n else {\n $input.value = _this._$cache[key];\n }\n }\n }\n },\n\n _reset_cache: function() {\n var _this = this,\n is_valid = true;\n\n for (var i = 0, len = _this._$inputs.length; i < len; i++) {\n if (_this._$inputs[i].getAttribute('aria-invalid') === 'true') {\n is_valid = false;\n break;\n }\n }\n\n if (is_valid) {\n localStorage.removeItem(domain + '_form_cache_' + _this._form_name);\n }\n }\n };\n\n var $forms = document.querySelectorAll('[data-form-cache]');\n\n for (var i = 0, len = $forms.length; i < len; i++) {\n new FormCache($forms[i]).init();\n }\n})(document);\n\n// FORMULARE: TEXTAREA AUTOGROW\n// Wird gebraucht für alle