1 line
1.2 MiB
1 line
1.2 MiB
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../../js/foundation.core.utils.js","webpack:///../../js/foundation.util.mediaQuery.js","webpack:///../../js/foundation.core.js","webpack:///../../js/foundation.util.box.js","webpack:///../../js/foundation.util.imageLoader.js","webpack:///../../js/foundation.util.keyboard.js","webpack:///../../js/foundation.util.motion.js","webpack:///../../js/foundation.util.nest.js","webpack:///../../js/foundation.util.timer.js","webpack:///../../js/foundation.util.touch.js","webpack:///../../js/foundation.util.triggers.js","webpack:///../../js/foundation.core.plugin.js","webpack:///../../js/foundation.abide.js","webpack:///../../js/foundation.accordion.js","webpack:///../../js/foundation.accordionMenu.js","webpack:///../../js/foundation.drilldown.js","webpack:///../../js/foundation.positionable.js","webpack:///../../js/foundation.dropdown.js","webpack:///../../js/foundation.dropdownMenu.js","webpack:///../../js/foundation.equalizer.js","webpack:///../../js/foundation.interchange.js","webpack:///../../js/foundation.smoothScroll.js","webpack:///../../js/foundation.magellan.js","webpack:///../../js/foundation.offcanvas.js","webpack:///../../js/foundation.orbit.js","webpack:///../../js/foundation.responsiveMenu.js","webpack:///../../js/foundation.responsiveToggle.js","webpack:///../../js/foundation.reveal.js","webpack:///../../js/foundation.slider.js","webpack:///../../js/foundation.sticky.js","webpack:///../../js/foundation.tabs.js","webpack:///../../js/foundation.toggler.js","webpack:///../../js/foundation.tooltip.js","webpack:///../../js/foundation.responsiveAccordionTabs.js","webpack:///../../js/entries/foundation.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/what-input/dist/what-input.js","webpack:///./src/assets/js/app.js"],"names":["rtl","$","attr","GetYoDigits","length","namespace","str","chars","charsLength","i","Math","floor","random","RegExpEscape","replace","transitionend","$elem","transitions","elem","document","createElement","end","transition","style","setTimeout","triggerHandler","onLoad","handler","didLoad","readyState","eventType","cb","one","window","ignoreMousedisappear","ignoreLeaveWindow","ignoreReappear","leaveEventHandler","eLeave","rest","arguments","callback","bind","relatedTarget","leaveEventDebouncer","hasFocus","reenterEventHandler","eReenter","currentTarget","has","target","matchMedia","styleMedia","media","script","getElementsByTagName","info","type","id","head","appendChild","parentNode","insertBefore","getComputedStyle","currentStyle","matchMedium","text","styleSheet","cssText","textContent","width","matches","MediaQuery","queries","current","_init","isInitialized","self","$meta","appendTo","extractedStyles","css","namedQueries","parseStyleToObject","key","hasOwnProperty","push","name","value","_getCurrentSize","_watcher","_reInit","atLeast","size","query","get","only","upTo","nextSize","next","is","parts","trim","split","filter","p","bpSize","bpModifier","Error","queryIndex","findIndex","q","_this","_getQueryName","nextQuery","_typeof","TypeError","matched","on","newSize","_this2","currentSize","trigger","styleObject","slice","reduce","ret","param","val","decodeURIComponent","Array","isArray","FOUNDATION_VERSION","Foundation","version","_plugins","_uuids","plugin","className","functionName","attrName","hyphenate","registerPlugin","pluginName","constructor","toLowerCase","uuid","$element","data","unregisterPlugin","splice","indexOf","removeAttr","removeData","prop","reInit","plugins","isJQ","each","fns","plgs","forEach","foundation","object","Object","keys","err","console","error","reflow","find","addBack","$el","opts","option","opt","map","el","parseValue","er","getFnName","addToJquery","method","$noJS","removeClass","args","prototype","call","plugClass","apply","ReferenceError","fn","util","throttle","func","delay","timer","context","Date","now","getTime","vendors","requestAnimationFrame","vp","cancelAnimationFrame","test","navigator","userAgent","lastTime","nextTime","max","clearTimeout","performance","start","Function","oThis","aArgs","fToBind","fNOP","fBound","concat","funcNameRegex","results","exec","toString","isNaN","parseFloat","Box","ImNotTouchingYou","OverlapArea","GetDimensions","GetExplicitOffsets","element","parent","lrOnly","tbOnly","ignoreBottom","eleDims","topOver","bottomOver","leftOver","rightOver","parDims","height","offset","top","left","windowDims","min","sqrt","rect","getBoundingClientRect","parRect","winRect","body","winY","pageYOffset","winX","pageXOffset","parentDims","anchor","position","alignment","vOffset","hOffset","isOverflow","$eleDims","$anchorDims","topVal","leftVal","onImagesLoaded","images","unloaded","complete","naturalWidth","singleImageLoaded","image","Image","events","me","off","src","keyCodes","commands","findFocusable","sort","a","b","aTabIndex","parseInt","bTabIndex","parseKey","event","which","keyCode","String","fromCharCode","toUpperCase","shiftKey","ctrlKey","altKey","Keyboard","getKeyCodes","handleKey","component","functions","commandList","cmds","command","warn","zfIsKeyHandled","ltr","Rtl","extend","returnValue","handled","unhandled","register","componentName","trapFocus","$focusable","$firstFocusable","eq","$lastFocusable","preventDefault","focus","releaseFocus","kcs","k","kc","initClasses","activeClasses","Motion","animateIn","animation","animate","animateOut","Move","duration","anim","prog","move","ts","isIn","initClass","activeClass","reset","addClass","show","offsetWidth","finish","hide","transitionDuration","Nest","Feather","menu","items","subMenuClass","subItemClass","hasSubClass","applyAria","$item","$sub","children","Burn","Timer","options","nameSpace","remain","isPaused","restart","infinite","pause","Touch","startPosX","startTime","elapsedTime","startEvent","isMoving","didMoved","onTouchEnd","e","removeEventListener","onTouchMove","tapEvent","Event","spotSwipe","x","touches","pageX","dx","dir","abs","moveThreshold","timeThreshold","assign","onTouchStart","addEventListener","passive","init","SpotSwipe","_classCallCheck","enabled","documentElement","special","swipe","setup","tap","noop","setupSpotSwipe","setupTouchHandler","addTouch","handleTouch","changedTouches","first","eventTypes","touchstart","touchmove","touchend","simulatedEvent","MouseEvent","screenX","screenY","clientX","clientY","createEvent","initMouseEvent","dispatchEvent","MutationObserver","prefixes","triggers","Triggers","Listeners","Basic","Global","Initializers","openListener","closeListener","toggleListener","closeableListener","stopPropagation","fadeOut","toggleFocusListener","addOpenListener","addCloseListener","addToggleListener","addCloseableListener","addToggleFocusListener","resizeListener","$nodes","scrollListener","closeMeListener","pluginId","not","addClosemeListener","yetiBoxes","plugNames","listeners","join","debounceGlobalListener","debounce","listener","addResizeListener","addScrollListener","addMutationEventsListener","listeningElementsMutation","mutationRecordsList","$target","attributeName","closest","elementObserver","observe","attributes","childList","characterData","subtree","attributeFilter","addSimpleListeners","$document","addGlobalListeners","__","triggersInitialized","IHearYou","Plugin","_setup","getPluginName","_destroy","obj","Abide","defaults","isEnabled","formnovalidate","$inputs","merge","$submits","$globalErrors","a11yAttributes","input","addA11yAttributes","addGlobalErrorA11yAttributes","_events","_this3","resetForm","validateForm","getAttribute","submit","validateOn","validateInput","liveValidate","validateOnBlur","isGood","checked","failedValidators","$error","siblings","formErrorSelector","add","v","_this4","$label","$els","labels","_this5","_this6","findLabel","$formError","findFormError","labelErrorClass","formErrorClass","inputErrorClass","$errors","$labels","errorId","elemId","label","a11yErrorLevel","groupName","findRadioLabels","$formErrors","findCheckboxLabels","removeRadioErrorClasses","removeCheckboxErrorClasses","clearRequire","requiredCheck","validator","manageErrorClasses","_validationIsDisabled","validateRadio","validateCheckbox","validateText","required","_this7","validators","equalTo","goodToGo","message","dependentElements","addErrorClasses","removeErrorClasses","acc","checkboxGroupName","initialized","noError","_this8","pattern","inputText","valid","patterns","RegExp","$group","minRequired","_this9","clear","_this10","$form","alpha","alpha_numeric","integer","number","card","cvv","email","url","domain","datetime","date","time","dateISO","month_day_year","day_month_year","color","website","Accordion","_isInitializing","$tabs","idx","$content","linkId","$initActive","_initialAnchor","prev","_openSingleTab","_checkDeepLink","location","hash","$anchor","$link","isOwnAnchor","hasClass","_closeAllTabs","deepLinkSmudge","scrollTop","deepLinkSmudgeOffset","deepLinkSmudgeDelay","deepLink","$tabContent","toggle","$a","multiExpand","previous","last","up","down","updateHistory","history","pushState","replaceState","_openTab","$targetItem","$othersItems","allowAllClosed","_closeTab","$activeContents","targetContentId","slideDown","slideSpeed","slideUp","$activeTabs","stop","AccordionMenu","multiOpen","$menuLinks","subId","isActive","parentLink","clone","prependTo","wrap","submenuToggle","after","submenuToggleText","initPanes","$submenu","$elements","$prevElement","$nextElement","parents","open","close","closeAll","hideAll","$targetBranch","parentsUntil","$othersActiveSubmenus","$submenus","$allmenus","detach","remove","Drilldown","autoApplyClass","$submenuAnchors","$menuItems","$currentMenu","_prepareMenu","_registerEvents","_keyboardEvents","$menu","$back","backButtonPosition","append","backButton","prepend","_back","autoHeight","$wrapper","wrapper","animateHeight","_getMaxDims","_show","closeOnClick","$body","ev","contains","_hideAll","_bindHandler","_scrollTop","_resize","$scrollTopElement","scrollTopElement","scrollPos","scrollTopOffset","animationDuration","animationEasing","_hide","calcHeight","parentSubMenu","autoFocus","$expandedSubmenus","_setHideSubMenuClasses","index","isLastChild","_setShowSubMenuClasses","blur","maxHeight","result","unwrap","POSITIONS","VERTICAL_ALIGNMENTS","HORIZONTAL_ALIGNMENTS","ALIGNMENTS","nextItem","item","array","currentIdx","Positionable","triedPositions","_getDefaultPosition","_getDefaultAlignment","originalPosition","originalAlignment","_alignmentsExhausted","_realign","_addTriedPosition","isExhausted","$parent","allowOverlap","_getVOffset","_getHOffset","minOverlap","minCoordinates","_positionsExhausted","overlap","allowBottomOverlap","_reposition","Dropdown","$id","$anchors","_setCurrentAnchor","parentClass","$currentAnchor","_get","match","horizontalPosition","hasTouch","ontouchstart","_setPosition","forceFollow","hover","bodyData","whatinput","timeout","hoverDelay","hoverPane","_addBodyHandler","DropdownMenu","subs","verticalClass","rightClass","changed","parClass","handleClickFn","hasSub","hasClicked","clickOpen","stopImmediatePropagation","closeOnClickInside","disableHoverOnTouch","disableHover","autoclose","closingTime","isTab","nextSibling","prevSibling","openSub","closeSub","_isVertical","_isRtl","_removeBodyHandler","isItself","$sibs","oldClass","$parentLi","$toClose","somethingToClose","$activeItem","Equalizer","eqId","$watched","hasNested","isNested","isOn","onResizeMeBound","_onResizeMe","onPostEqualizedBound","_onPostEqualized","imgs","tooSmall","equalizeOn","_checkMQ","_reflow","_pauseEvents","equalizeOnStack","_isStacked","equalizeByRow","getHeightsByRow","applyHeightByRow","getHeights","applyHeight","heights","len","offsetHeight","lastElTopOffset","groups","group","elOffsetTop","j","ln","groupsILength","lenJ","Interchange","rules","currentPath","_parseOptions","_addBreakpoints","_generateRules","rule","path","types","SPECIAL_QUERIES","rulesList","nodeName","response","html","SmoothScroll","_linkClickListener","_handleLinkClick","arrival","_inTransition","scrollToLoc","loc","$loc","round","threshold","Magellan","calcPoints","$targets","$links","$active","points","winHeight","innerHeight","clientHeight","docHeight","scrollHeight","$tar","pt","targetPoint","deepLinking","_updateActive","onLoadListener","_deepLinkScroll","newScrollPos","isScrollingUp","activeIdx","visibleLinks","$oldActive","activeHash","isNewActive","isNewHash","pathname","search","OffCanvas","contentClasses","base","reveal","$lastTrigger","$triggers","nested","$sticky","isInCanvas","contentId","contentOverlay","overlay","overlayPosition","setAttribute","$overlay","insertAfter","revealOnRegExp","revealClass","revealOnClass","isRevealed","revealOn","_setMQChecker","transitionTime","contentScroll","inCanvasFor","inCanvasOn","_checkInCanvas","_removeContentClasses","_handleKeyboard","hasReveal","_","absoluteTopVal","stickyData","_addContentClasses","lastY","pageY","delta","_canScroll","allowUp","allowDown","forceTo","scrollTo","_stopScrolling","_recordScrollable","_preventDefaultAtEdges","_scrollboxTouchMoved","canvasFocus","_fixStickyElements","_unfixStickyElements","Orbit","_reset","containerClass","$slides","slideClass","$images","initActive","useMUI","_prepareForOrbit","bullets","_loadBullets","autoPlay","geoSync","accessible","$bullets","boxOfBullets","timerDelay","changeSlide","_setWrapperHeight","temp","counter","pauseOnHover","navButtons","$controls","nextClass","prevClass","$slide","_updateBullets","isLTR","chosenSlide","$curSlide","$firstSlide","$lastSlide","dirIn","dirOut","$newSlide","infiniteWrap","$oldBullet","$othersBullets","$newBullet","activeStateDescriptor","spans","spanCountInOthersBullets","toArray","every","count","animInFromRight","animOutToRight","animInFromLeft","animOutToLeft","MenuPlugins","dropdown","cssClass","drilldown","accordion","ResponsiveMenu","currentMq","currentPlugin","rulesTree","ruleSize","rulePlugin","isEmptyObject","_checkMediaQueries","matchedMq","destroy","ResponsiveToggle","targetID","$targetMenu","$toggler","animationIn","animationOut","_update","_updateMqHandler","toggleMenu","hideFor","Reveal","cached","mq","fullScreen","_makeOverlay","additionalOverlayClasses","outerWidth","outerHeight","margin","_updatePosition","_handleState","$activeAnchor","activeElement","multipleOpened","_disableScroll","afterAnimation","_addGlobalClasses","focusableElements","showDelay","_addGlobalListeners","updateScrollbarClass","toggleClass","closeOnEsc","finishUp","hideDelay","_removeGlobalClasses","_enableScroll","resetOnClose","urlWithoutHash","title","Slider","inputs","handles","$handle","$input","$fill","vertical","disabled","disabledClass","binding","_setInitAttr","doubleSided","$handle2","$input2","setHandles","_setHandlePos","pctOfBar","percent","positionValueFunction","_logTransform","_powTransform","toFixed","baseLog","nonLinearBase","pow","$hndl","isDbl","h2Val","step","h1Val","vert","hOrW","lOrT","handleDim","elemDim","_pctOfBar","pxToMove","movement","decimal","_setValues","isLeftHndl","dim","handlePct","handlePos","initialStart","moveTime","changedDelay","initVal","initialEnd","direction","eventOffset","barDim","windowScroll","scrollLeft","elemOffset","eventFromBar","barXY","offsetPct","_value","_adjustValue","firstHndlPos","absPosition","secndHndlPos","div","previousVal","nextVal","_eventsForHandle","curHandle","handleChangeEvent","_handleEvent","clickSelect","draggable","_$handle","oldValue","newValue","decrease","increase","decreaseFast","increaseFast","invertVertical","frac","num","clickPos","log","Sticky","$container","wasWrapped","container","stickyClass","scrollCount","checkEvery","isStuck","containerHeight","elemHeight","_parsePoints","_setSizes","scroll","_calc","_removeSticky","topPoint","reverse","topAnchor","btm","btmAnchor","pts","breaks","place","canStick","_eventsHandler","_pauseListeners","checkSizes","bottomPoint","_setSticky","stickTo","mrgn","notStuckTo","isTop","stickToTop","anchorPt","anchorHeight","topOrBottom","bottom","stickyOn","newElemWidth","comp","pdngl","pdngr","dynamicHeight","newContainerHeight","_setBreakPoints","mTop","emCalc","marginTop","mBtm","marginBottom","em","fontSize","Tabs","$tabTitles","linkClass","linkActiveClass","matchHeight","_setHeight","anchorNoHash","selectTab","_collapse","_addKeyHandler","_addClickHandler","_setHeightMqHandler","_handleTabChange","wrapOnKeys","historyHandled","activeCollapse","$oldTab","$tabLink","$targetContent","_collapseTab","panelActiveClass","$targetAnchor","$activeTab","idStr","hashIdStr","panelClass","panel","Toggler","toggler","$trigger","controls","containsId","_updateARIA","undefined","Tooltip","isClick","tipText","template","_buildTemplate","allowHtml","triggerClass","elementClassName","SVGElement","baseVal","tooltipWidth","tooltipHeight","templateClasses","tooltipClass","$template","showOn","fadeIn","fadeInDuration","fadeOutDuration","isFocus","disableForTouch","touchCloseText","tabs","ResponsiveAccordionTabs","storezfData","currentRule","_getAllOptions","allOptions","dummyPlugin","tmpPlugin","keyKey","objObj","_changedZfMediaQueryHandler","_handleMarkup","toSet","fromString","$panels","tabsTitle","tabsPanel","$liHeads","$liHeadsA","display","visibility","$tabsContent","$placeholder","tempValue","CoreUtils","global","factory","module","exports","w","noGlobal","arr","getProto","getPrototypeOf","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","nodeType","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","code","node","doc","removeChild","toType","jQuery","selector","jquery","pushStack","elems","prevObject","even","grep","_elem","odd","copy","copyIsArray","deep","isPlainObject","expando","isReady","msg","proto","Ctor","globalEval","isArrayLike","makeArray","inArray","second","invert","callbackInverse","callbackExpect","arg","guid","Symbol","iterator","_i","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pop","pushNative","list","booleans","whitespace","identifier","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","childNodes","els","seed","m","nid","newSelector","newContext","ownerDocument","getElementById","getElementsByClassName","qsa","testContext","scope","toSelector","querySelectorAll","qsaError","removeAttribute","cache","cacheLength","shift","markFunction","assert","addHandle","attrs","attrHandle","siblingCheck","cur","diff","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespaceURI","hasCompare","subWindow","defaultView","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","tmp","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","operator","check","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","matcher","unmatched","lang","elemLang","href","tabIndex","selected","selectedIndex","_matchIndexes","radio","checkbox","file","password","filters","parseOnly","tokens","soFar","preFilters","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","n","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","contents","targets","l","prevAll","sibling","nextAll","nextUntil","prevUntil","contentDocument","content","rnothtmlwhite","createOptions","flag","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","empty","disable","lock","fireWith","Identity","Thrower","ex","adoptValue","resolve","reject","noValue","promise","fail","then","Deferred","tuples","state","always","deferred","pipe","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","readyException","readyList","catch","readyWait","wait","completed","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","JSON","parse","dataAttr","_data","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","values","rcheckableType","rtagName","rscriptType","fragment","createDocumentFragment","checkClone","cloneNode","noCloneChecked","wrapMap","thead","col","tr","td","_default","tbody","tfoot","colgroup","caption","th","optgroup","getAll","setGlobalEval","refElements","buildFragment","scripts","selection","ignored","attached","nodes","createTextNode","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","origFn","handleObjIn","eventHandle","t","handleObj","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","delegateType","bindType","delegateCount","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","button","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","leverageNative","beforeunload","notAsync","saved","isTrigger","props","isDefaultPrevented","defaultPrevented","timeStamp","isSimulated","bubbles","cancelable","detail","eventPhase","metaKey","view","charCode","buttons","offsetX","offsetY","pointerId","pointerType","targetTouches","toElement","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","before","replaceWith","replaceChild","replaceAll","original","insert","rnumnonpx","getStyles","opener","swap","old","rboxStyle","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelBoxStyles","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","curCSS","computed","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","cssPrefixes","emptyStyle","vendorProps","vendorPropName","capName","finalPropName","final","cssProps","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","ceil","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","offsetProp","getClientRects","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","scrollboxSizeBuggy","padding","border","prefix","suffix","expand","expanded","Tween","easing","propHooks","run","eased","pos","fx","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","interval","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","properties","stopped","prefilters","currentTime","tweens","originalProperties","originalOptions","gotoEnd","tweener","prefilter","speed","speeds","fadeTo","to","optall","doAnimation","stopQueue","timers","cssFn","slideToggle","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","stripAndCollapse","getClass","classesToArray","classes","curValue","clazz","finalValue","stateVal","isValidValue","classNames","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","isSuccess","conv2","conv","responseFields","dataFilter","throws","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","modified","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","offsetParent","parentOffset","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","define","_jQuery","_$","noConflict","webpackPolyfill","deprecate","paths","webpackUniversalModuleDefinition","modules","installedModules","__webpack_require__","moduleId","loaded","c","currentInput","currentIntent","formInputs","functionList","ignoreMap","changeIntentMap","inputMap","keydown","keyup","mousedown","mousemove","MSPointerDown","MSPointerMove","pointerdown","pointermove","inputTypes","isBuffering","isScrolling","mousePos","y","pointerMap","supportsPassive","setUp","detectWheel","addListeners","setInput","PointerEvent","updateInput","setIntent","MSPointerEvent","touchBuffer","eventKey","activeElem","activeInput","notFormInput","fireFunctions","wheelType","onmousewheel","objPos","ask","ignoreKeys","registerOnChange","unRegisterOnChange","require"],"mappings":"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D,EAAjC;AACA,UAAI,KAAK2yB,cAAT,EAAyBp2B,6CAAC,CAACgC,MAAD,CAADhC,CAAUuR,GAAVvR,CAAc,KAAKo2B,cAAnBp2B;;AAEzB,UAAIA,6CAAC,CAAC,iBAAD,CAADA,CAAqBG,MAArBH,KAAiC,CAArC,EAAwC;AACtC,aAAKqgC,oBAAL,GADsC;;AAEvC;AACF;;;;CAhfGzB,CAAe1gB,MAAf0gB;;AAmfNA,MAAM,CAACpgB,QAAPogB,GAAkB;AAChB;AACF;AACA;AACA;AACA;AACA;AACEN,aAAW,EAAE,EAPG;;AAQhB;AACF;AACA;AACA;AACA;AACA;AACEC,cAAY,EAAE,EAdE;;AAehB;AACF;AACA;AACA;AACA;AACA;AACEuB,WAAS,EAAE,CArBK;;AAsBhB;AACF;AACA;AACA;AACA;AACA;AACEM,WAAS,EAAE,CA5BK;;AA6BhB;AACF;AACA;AACA;AACA;AACA;AACEpV,cAAY,EAAE,IAnCE;;AAoChB;AACF;AACA;AACA;AACA;AACA;AACEkV,YAAU,EAAE,IA1CI;;AA2ChB;AACF;AACA;AACA;AACA;AACA;AACET,gBAAc,EAAE,KAjDA;;AAkDhB;AACF;AACA;AACA;AACA;AACA;AACEnvB,SAAO,EAAE,MAxDO;;AAyDhB;AACF;AACA;AACA;AACA;AACA;AACEC,SAAO,EAAE,MA/DO;;AAgEhB;AACF;AACA;AACA;AACA;AACA;AACEwuB,YAAU,EAAE,KAtEI;;AAuEhB;AACF;AACA;AACA;AACA;AACA;AACEpH,SAAO,EAAE,IA7EO;;AA8EhB;AACF;AACA;AACA;AACA;AACA;AACE4I,cAAY,EAAE,KApFE;;AAqFhB;AACF;AACA;AACA;AACA;AACA;AACA;AACEla,UAAQ,EAAE,KA5FM;;AA6FhB;AACF;AACA;AACA;AACA;AACES,eAAa,EAAE,KAlGC;;AAmGd;AACJ;AACA;AACA;AACA;AACA;AACEhiB,UAAQ,EAAE,MAzGM;;AA0GhB;AACF;AACA;AACA;AACA;AACA;AACEm6B,0BAAwB,EAAE;AAhHV,CAAlBL;AC5fA;AACA;AACA;AACA;AACA;AACA;AAC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A,WAAKrI,QAAL,CAAcqI,GAAd,CAAkB,YAAlB;AAEArE,kBAAY,CAAC,KAAKqiB,OAAN,CAAZriB;AACD;;;;CApiBGwzB,CAAexiB,MAAfwiB;;AAuiBNA,MAAM,CAACliB,QAAPkiB,GAAkB;AAChB;AACF;AACA;AACA;AACA;AACA;AACEtzB,OAAK,EAAE,CAPS;;AAQhB;AACF;AACA;AACA;AACA;AACA;AACEhM,KAAG,EAAE,GAdW;;AAehB;AACF;AACA;AACA;AACA;AACA;AACEkhC,MAAI,EAAE,CArBU;;AAsBhB;AACF;AACA;AACA;AACA;AACA;AACEgB,cAAY,EAAE,CA5BE;;AA6BhB;AACF;AACA;AACA;AACA;AACA;AACEI,YAAU,EAAE,GAnCI;;AAoChB;AACF;AACA;AACA;AACA;AACA;AACEvC,SAAO,EAAE,KA1CO;;AA2ChB;AACF;AACA;AACA;AACA;AACA;AACE6D,aAAW,EAAE,IAjDG;;AAkDhB;AACF;AACA;AACA;AACA;AACA;AACEhE,UAAQ,EAAE,KAxDM;;AAyDhB;AACF;AACA;AACA;AACA;AACA;AACEiE,WAAS,EAAE,IA/DK;;AAgEhB;AACF;AACA;AACA;AACA;AACA;AACEhE,UAAQ,EAAE,KAtEM;;AAuEhB;AACF;AACA;AACA;AACA;AACA;AACEI,aAAW,EAAE,KA7EG;;AA8EhB;AACF;AACA;AACE;;AACA;AACF;AACA;AACA;AACA;AACA;AACE2B,SAAO,EAAE,CAxFO;;AAyFhB;AACF;AACA;AACE;;AACA;AACF;AACA;AACA;AACA;AACA;AACEO,UAAQ,EAAE,GAnGM;AAmGF;;AACd;AACF;AACA;AACA;AACA;AACA;AACErC,eAAa,EAAE,UA1GC;;AA2GhB;AACF;AACA;AACA;AACA;AACA;AACEuE,gBAAc,EAAE,KAjHA;;AAkHhB;AACF;AACA;AACA;AACA;AACA;AACEjC,cAAY,EAAE,GAxHE;;AAyHhB;AACF;AACA;AACA;AACA;AACA;AACEvB,eAAa,EAAE,CA/HC;;AAgIhB;AACF;AACA;AACA;AACA;AACA;AACEL,uBAAqB,EAAE;AAtIP,CAAl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CAG0B,uBAH1B,EAIchC,UAJd,CAIyB,wFAJzB;AAMA,WAAKiiC,QAAL,CAAc9hB,MAAd;AACD;;;;CA3RG2hB,CAAgBle,YAAhBke;;AA8RNA,OAAO,CAAC7sB,QAAR6sB,GAAmB;AACjB;AACF;AACA;AACA;AACA;AACA;AACE7b,YAAU,EAAE,GAPK;;AAQjB;AACF;AACA;AACA;AACA;AACA;AACE8c,gBAAc,EAAE,GAdC;;AAejB;AACF;AACA;AACA;AACA;AACA;AACEC,iBAAe,EAAE,GArBA;;AAsBjB;AACF;AACA;AACA;AACA;AACA;AACE/b,cAAY,EAAE,KA5BG;;AA6BjB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEic,iBAAe,EAAE,KArCA;;AAsCjB;AACF;AACA;AACA;AACA;AACA;AACER,iBAAe,EAAE,EA5CA;;AA6CjB;AACF;AACA;AACA;AACA;AACA;AACEC,cAAY,EAAE,SAnDG;;AAoDjB;AACF;AACA;AACA;AACA;AACA;AACEP,cAAY,EAAE,SA1DG;;AA2DjB;AACF;AACA;AACA;AACA;AACA;AACES,QAAM,EAAE,OAjES;;AAkEjB;AACF;AACA;AACA;AACA;AACA;AACEZ,UAAQ,EAAE,EAxEO;;AAyEjB;AACF;AACA;AACA;AACA;AACA;AACED,SAAO,EAAE,EA/EQ;AAgFjBmB,gBAAc,EAAE,eAhFC;;AAiFjB;AACF;AACA;AACA;AACA;AACA;AACEtc,WAAS,EAAE,IAvFM;;AAwFjB;AACF;AACA;AACA;AACA;AACA;AACEhgB,UAAQ,EAAE,MA9FO;;AA+FjB;AACF;AACA;AACA;AACA;AACA;AACEC,WAAS,EAAE,MArGM;;AAsGjB;AACF;AACA;AACA;AACA;AACA;AACA;AACEyd,cAAY,EAAE,KA7GG;;AA8GjB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEO,oBAAkB,EAAE,KAvHH;;AAwHjB;AACF;AACA;AACA;AACA;AACA;AACE/d,SAAO,EAAE,CA9HQ;;AA+HjB;AACF;AACA;AACA;AACA;AACA;AACEC,SAAO,EAAE,CArIQ;;AAsIjB;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","file":"app.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import $ from 'jquery';\n\n// Core Foundation Utilities, utilized in a number of places.\n\n /**\n * Returns a boolean for RTL support\n */\nfunction rtl() {\n return $('html').attr('dir') === 'rtl';\n}\n\n/**\n * returns a random base-36 uid with namespacing\n * @function\n * @param {Number} length - number of random base-36 digits desired. Increase for more random strings.\n * @param {String} namespace - name of plugin to be incorporated in uid, optional.\n * @default {String} '' - if no plugin name is provided, nothing is appended to the uid.\n * @returns {String} - unique id\n */\nfunction GetYoDigits(length = 6, namespace){\n let str = '';\n const chars = '0123456789abcdefghijklmnopqrstuvwxyz';\n const charsLength = chars.length;\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * charsLength)];\n }\n return namespace ? `${str}-${namespace}` : str;\n}\n\n/**\n * Escape a string so it can be used as a regexp pattern\n * @function\n * @see https://stackoverflow.com/a/9310752/4317384\n *\n * @param {String} str - string to escape.\n * @returns {String} - escaped string\n */\nfunction RegExpEscape(str){\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nfunction transitionend($elem){\n var transitions = {\n 'transition': 'transitionend',\n 'WebkitTransition': 'webkitTransitionEnd',\n 'MozTransition': 'transitionend',\n 'OTransition': 'otransitionend'\n };\n var elem = document.createElement('div'),\n end;\n\n for (let transition in transitions){\n if (typeof elem.style[transition] !== 'undefined'){\n end = transitions[transition];\n }\n }\n if (end) {\n return end;\n } else {\n setTimeout(function(){\n $elem.triggerHandler('transitionend', [$elem]);\n }, 1);\n return 'transitionend';\n }\n}\n\n/**\n * Return an event type to listen for window load.\n *\n * If `$elem` is passed, an event will be triggered on `$elem`. If window is already loaded, the event will still be triggered.\n * If `handler` is passed, attach it to the event on `$elem`.\n * Calling `onLoad` without handler allows you to get the event type that will be triggered before attaching the handler by yourself.\n * @function\n *\n * @param {Object} [] $elem - jQuery element on which the event will be triggered if passed.\n * @param {Function} [] handler - function to attach to the event.\n * @returns {String} - event type that should or will be triggered.\n */\nfunction onLoad($elem, handler) {\n const didLoad = document.readyState === 'complete';\n const eventType = (didLoad ? '_didLoad' : 'load') + '.zf.util.onLoad';\n const cb = () => $elem.triggerHandler(eventType);\n\n if ($elem) {\n if (handler) $elem.one(eventType, handler);\n\n if (didLoad)\n setTimeout(cb);\n else\n $(window).one('load', cb);\n }\n\n return eventType;\n}\n\n/**\n * Retuns an handler for the `mouseleave` that ignore disappeared mouses.\n *\n * If the mouse \"disappeared\" from the document (like when going on a browser UI element, See https://git.io/zf-11410),\n * the event is ignored.\n * - If the `ignoreLeaveWindow` is `true`, the event is ignored when the user actually left the window\n * (like by switching to an other window with [Alt]+[Tab]).\n * - If the `ignoreReappear` is `true`, the event will be ignored when the mouse will reappear later on the document\n * outside of the element it left.\n *\n * @function\n *\n * @param {Function} [] handler - handler for the filtered `mouseleave` event to watch.\n * @param {Object} [] options - object of options:\n * - {Boolean} [false] ignoreLeaveWindow - also ignore when the user switched windows.\n * - {Boolean} [false] ignoreReappear - also ignore when the mouse reappeared outside of the element it left.\n * @returns {Function} - filtered handler to use to listen on the `mouseleave` event.\n */\nfunction ignoreMousedisappear(handler, { ignoreLeaveWindow = false, ignoreReappear = false } = {}) {\n return function leaveEventHandler(eLeave, ...rest) {\n const callback = handler.bind(this, eLeave, ...rest);\n\n // The mouse left: call the given callback if the mouse entered elsewhere\n if (eLeave.relatedTarget !== null) {\n return callback();\n }\n\n // Otherwise, check if the mouse actually left the window.\n // In firefox if the user switched between windows, the window sill have the focus by the time\n // the event is triggered. We have to debounce the event to test this case.\n setTimeout(function leaveEventDebouncer() {\n if (!ignoreLeaveWindow && document.hasFocus && !document.hasFocus()) {\n return callback();\n }\n\n // Otherwise, wait for the mouse to reeapear outside of the element,\n if (!ignoreReappear) {\n $(document).one('mouseenter', function reenterEventHandler(eReenter) {\n if (!$(eLeave.currentTarget).has(eReenter.target).length) {\n // Fill where the mouse finally entered.\n eLeave.relatedTarget = eReenter.target;\n callback();\n }\n });\n }\n\n }, 0);\n };\n}\n\n\nexport { rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear };\n","import $ from 'jquery';\n\n// Default set of media queries\n// const defaultQueries = {\n// 'default' : 'only screen',\n// landscape : 'only screen and (orientation: landscape)',\n// portrait : 'only screen and (orientation: portrait)',\n// retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +\n// 'only screen and (min--moz-device-pixel-ratio: 2),' +\n// 'only screen and (-o-min-device-pixel-ratio: 2/1),' +\n// 'only screen and (min-device-pixel-ratio: 2),' +\n// 'only screen and (min-resolution: 192dpi),' +\n// 'only screen and (min-resolution: 2dppx)'\n// };\n\n\n// matchMedia() polyfill - Test a CSS media type/query in JS.\n// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license\n/* eslint-disable */\nwindow.matchMedia || (window.matchMedia = (function () {\n \"use strict\";\n\n // For browsers that support matchMedium api such as IE 9 and webkit\n var styleMedia = (window.styleMedia || window.media);\n\n // For those that don't support matchMedium\n if (!styleMedia) {\n var style = document.createElement('style'),\n script = document.getElementsByTagName('script')[0],\n info = null;\n\n style.type = 'text/css';\n style.id = 'matchmediajs-test';\n\n if (!script) {\n document.head.appendChild(style);\n } else {\n script.parentNode.insertBefore(style, script);\n }\n\n // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers\n info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;\n\n styleMedia = {\n matchMedium: function (media) {\n var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';\n\n // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers\n if (style.styleSheet) {\n style.styleSheet.cssText = text;\n } else {\n style.textContent = text;\n }\n\n // Test if media query is true or false\n return info.width === '1px';\n }\n };\n }\n\n return function(media) {\n return {\n matches: styleMedia.matchMedium(media || 'all'),\n media: media || 'all'\n };\n };\n})());\n/* eslint-enable */\n\nvar MediaQuery = {\n queries: [],\n\n current: '',\n\n /**\n * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.\n * @function\n * @private\n */\n _init() {\n\n // make sure the initialization is only done once when calling _init() several times\n if (this.isInitialized === true) {\n return this;\n } else {\n this.isInitialized = true;\n }\n\n var self = this;\n var $meta = $('meta.foundation-mq');\n if(!$meta.length){\n $('<meta class=\"foundation-mq\" name=\"foundation-mq\" content>').appendTo(document.head);\n }\n\n var extractedStyles = $('.foundation-mq').css('font-family');\n var namedQueries;\n\n namedQueries = parseStyleToObject(extractedStyles);\n\n self.queries = []; // reset\n\n for (var key in namedQueries) {\n if(namedQueries.hasOwnProperty(key)) {\n self.queries.push({\n name: key,\n value: `only screen and (min-width: ${namedQueries[key]})`\n });\n }\n }\n\n this.current = this._getCurrentSize();\n\n this._watcher();\n },\n\n /**\n * Reinitializes the media query helper.\n * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.\n * @function\n * @private\n */\n _reInit() {\n this.isInitialized = false;\n this._init();\n },\n\n /**\n * Checks if the screen is at least as wide as a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.\n */\n atLeast(size) {\n var query = this.get(size);\n\n if (query) {\n return window.matchMedia(query).matches;\n }\n\n return false;\n },\n\n /**\n * Checks if the screen is within the given breakpoint.\n * If smaller than the breakpoint of larger than its upper limit it returns false.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.\n */\n only(size) {\n return size === this._getCurrentSize();\n },\n\n /**\n * Checks if the screen is within a breakpoint or smaller.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.\n */\n upTo(size) {\n const nextSize = this.next(size);\n\n // If the next breakpoint does not match, the screen is smaller than\n // the upper limit of this breakpoint.\n if (nextSize) {\n return !this.atLeast(nextSize);\n }\n\n // If there is no next breakpoint, the \"size\" breakpoint does not have\n // an upper limit and the screen will always be within it or smaller.\n return true;\n },\n\n /**\n * Checks if the screen matches to a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.\n */\n is(size) {\n const parts = size.trim().split(' ').filter(p => !!p.length);\n const [bpSize, bpModifier = ''] = parts;\n\n // Only the breakpont\n if (bpModifier === 'only') {\n return this.only(bpSize);\n }\n // At least the breakpoint (included)\n if (!bpModifier || bpModifier === 'up') {\n return this.atLeast(bpSize);\n }\n // Up to the breakpoint (included)\n if (bpModifier === 'down') {\n return this.upTo(bpSize);\n }\n\n throw new Error(`\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like \"<size> <modifier>\", got \"${size}\".\n `);\n },\n\n /**\n * Gets the media query of a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to get.\n * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.\n */\n get(size) {\n for (var i in this.queries) {\n if(this.queries.hasOwnProperty(i)) {\n var query = this.queries[i];\n if (size === query.name) return query.value;\n }\n }\n\n return null;\n },\n\n /**\n * Get the breakpoint following the given breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint.\n * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.\n */\n next(size) {\n const queryIndex = this.queries.findIndex((q) => this._getQueryName(q) === size);\n if (queryIndex === -1) {\n throw new Error(`\n Unknown breakpoint \"${size}\" passed to MediaQuery.next().\n Ensure it is present in your Sass \"$breakpoints\" setting.\n `);\n }\n\n const nextQuery = this.queries[queryIndex + 1];\n return nextQuery ? nextQuery.name : null;\n },\n\n /**\n * Returns the name of the breakpoint related to the given value.\n * @function\n * @private\n * @param {String|Object} value - Breakpoint name or query object.\n * @returns {String} Name of the breakpoint.\n */\n _getQueryName(value) {\n if (typeof value === 'string')\n return value;\n if (typeof value === 'object')\n return value.name;\n throw new TypeError(`\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got \"${value}\" (${typeof value})\n `);\n },\n\n /**\n * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).\n * @function\n * @private\n * @returns {String} Name of the current breakpoint.\n */\n _getCurrentSize() {\n var matched;\n\n for (var i = 0; i < this.queries.length; i++) {\n var query = this.queries[i];\n\n if (window.matchMedia(query.value).matches) {\n matched = query;\n }\n }\n\n return matched && this._getQueryName(matched);\n },\n\n /**\n * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.\n * @function\n * @private\n */\n _watcher() {\n $(window).on('resize.zf.trigger', () => {\n var newSize = this._getCurrentSize(), currentSize = this.current;\n\n if (newSize !== currentSize) {\n // Change the current media query\n this.current = newSize;\n\n // Broadcast the media query change on the window\n $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);\n }\n });\n }\n};\n\n\n\n// Thank you: https://github.com/sindresorhus/query-string\nfunction parseStyleToObject(str) {\n var styleObject = {};\n\n if (typeof str !== 'string') {\n return styleObject;\n }\n\n str = str.trim().slice(1, -1); // browsers re-quote string style values\n\n if (!str) {\n return styleObject;\n }\n\n styleObject = str.split('&').reduce(function(ret, param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = parts[0];\n var val = parts[1];\n key = decodeURIComponent(key);\n\n // missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n val = typeof val === 'undefined' ? null : decodeURIComponent(val);\n\n if (!ret.hasOwnProperty(key)) {\n ret[key] = val;\n } else if (Array.isArray(ret[key])) {\n ret[key].push(val);\n } else {\n ret[key] = [ret[key], val];\n }\n return ret;\n }, {});\n\n return styleObject;\n}\n\nexport {MediaQuery};\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nvar FOUNDATION_VERSION = '6.7.4';\n\n// Global Foundation object\n// This is attached to the window, or used as a module for AMD/Browserify\nvar Foundation = {\n version: FOUNDATION_VERSION,\n\n /**\n * Stores initialized plugins.\n */\n _plugins: {},\n\n /**\n * Stores generated unique ids for plugin instances\n */\n _uuids: [],\n\n /**\n * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.\n * @param {Object} plugin - The constructor of the plugin.\n */\n plugin: function(plugin, name) {\n // Object key to use when adding to global Foundation object\n // Examples: Foundation.Reveal, Foundation.OffCanvas\n var className = (name || functionName(plugin));\n // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin\n // Examples: data-reveal, data-off-canvas\n var attrName = hyphenate(className);\n\n // Add to the Foundation object and the plugins list (for reflowing)\n this._plugins[attrName] = this[className] = plugin;\n },\n /**\n * @function\n * Populates the _uuids array with pointers to each individual plugin instance.\n * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.\n * Also fires the initialization event for each plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @param {String} name - the name of the plugin, passed as a camelCased string.\n * @fires Plugin#init\n */\n registerPlugin: function(plugin, name){\n var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();\n plugin.uuid = GetYoDigits(6, pluginName);\n\n if(!plugin.$element.attr(`data-${pluginName}`)){ plugin.$element.attr(`data-${pluginName}`, plugin.uuid); }\n if(!plugin.$element.data('zfPlugin')){ plugin.$element.data('zfPlugin', plugin); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n plugin.$element.trigger(`init.zf.${pluginName}`);\n\n this._uuids.push(plugin.uuid);\n\n return;\n },\n /**\n * @function\n * Removes the plugins uuid from the _uuids array.\n * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.\n * Also fires the destroyed event for the plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @fires Plugin#destroyed\n */\n unregisterPlugin: function(plugin){\n var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));\n\n this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);\n plugin.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in plugin){\n if(typeof plugin[prop] === 'function'){\n plugin[prop] = null; //clean up script to prep for garbage collection.\n }\n }\n return;\n },\n\n /**\n * @function\n * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.\n * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`\n * @default If no argument is passed, reflow all currently active plugins.\n */\n reInit: function(plugins){\n var isJQ = plugins instanceof $;\n try{\n if(isJQ){\n plugins.each(function(){\n $(this).data('zfPlugin')._init();\n });\n }else{\n var type = typeof plugins,\n _this = this,\n fns = {\n 'object': function(plgs){\n plgs.forEach(function(p){\n p = hyphenate(p);\n $('[data-'+ p +']').foundation('_init');\n });\n },\n 'string': function(){\n plugins = hyphenate(plugins);\n $('[data-'+ plugins +']').foundation('_init');\n },\n 'undefined': function(){\n this.object(Object.keys(_this._plugins));\n }\n };\n fns[type](plugins);\n }\n }catch(err){\n console.error(err);\n }finally{\n return plugins;\n }\n },\n\n /**\n * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.\n * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.\n * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.\n */\n reflow: function(elem, plugins) {\n\n // If plugins is undefined, just grab everything\n if (typeof plugins === 'undefined') {\n plugins = Object.keys(this._plugins);\n }\n // If plugins is a string, convert it to an array with one item\n else if (typeof plugins === 'string') {\n plugins = [plugins];\n }\n\n var _this = this;\n\n // Iterate through each plugin\n $.each(plugins, function(i, name) {\n // Get the current plugin\n var plugin = _this._plugins[name];\n\n // Localize the search to all elements inside elem, as well as elem itself, unless elem === document\n var $elem = $(elem).find('[data-'+name+']').addBack('[data-'+name+']').filter(function () {\n return typeof $(this).data(\"zfPlugin\") === 'undefined';\n });\n\n // For each plugin found, initialize it\n $elem.each(function() {\n var $el = $(this),\n opts = { reflow: true };\n\n if($el.attr('data-options')){\n $el.attr('data-options').split(';').forEach(function(option){\n var opt = option.split(':').map(function(el){ return el.trim(); });\n if(opt[0]) opts[opt[0]] = parseValue(opt[1]);\n });\n }\n try{\n $el.data('zfPlugin', new plugin($(this), opts));\n }catch(er){\n console.error(er);\n }finally{\n return;\n }\n });\n });\n },\n getFnName: functionName,\n\n addToJquery: function() {\n // TODO: consider not making this a jQuery function\n // TODO: need way to reflow vs. re-initialize\n /**\n * The Foundation jQuery method.\n * @param {String|Array} method - An action to perform on the current jQuery object.\n */\n var foundation = function(method) {\n var type = typeof method,\n $noJS = $('.no-js');\n\n if($noJS.length){\n $noJS.removeClass('no-js');\n }\n\n if(type === 'undefined'){//needs to initialize the Foundation object, or an individual plugin.\n MediaQuery._init();\n Foundation.reflow(this);\n }else if(type === 'string'){//an individual method to invoke on a plugin or group of plugins\n var args = Array.prototype.slice.call(arguments, 1);//collect all the arguments, if necessary\n var plugClass = this.data('zfPlugin');//determine the class of plugin\n\n if(typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined'){//make sure both the class and method exist\n if(this.length === 1){//if there's only one, call it directly.\n plugClass[method].apply(plugClass, args);\n }else{\n this.each(function(i, el){//otherwise loop through the jQuery collection and invoke the method on each\n plugClass[method].apply($(el).data('zfPlugin'), args);\n });\n }\n }else{//error for no class or no method\n throw new ReferenceError(\"We're sorry, '\" + method + \"' is not an available method for \" + (plugClass ? functionName(plugClass) : 'this element') + '.');\n }\n }else{//error for invalid argument type\n throw new TypeError(`We're sorry, ${type} is not a valid parameter. You must use a string representing the method you wish to invoke.`);\n }\n return this;\n };\n $.fn.foundation = foundation;\n return $;\n }\n};\n\nFoundation.util = {\n /**\n * Function for applying a debounce effect to a function call.\n * @function\n * @param {Function} func - Function to be called at end of timeout.\n * @param {Number} delay - Time in ms to delay the call of `func`.\n * @returns function\n */\n throttle: function (func, delay) {\n var timer = null;\n\n return function () {\n var context = this, args = arguments;\n\n if (timer === null) {\n timer = setTimeout(function () {\n func.apply(context, args);\n timer = null;\n }, delay);\n }\n };\n }\n};\n\nwindow.Foundation = Foundation;\n\n// Polyfill for requestAnimationFrame\n(function() {\n if (!Date.now || !window.Date.now)\n window.Date.now = Date.now = function() { return new Date().getTime(); };\n\n var vendors = ['webkit', 'moz'];\n for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];\n window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']\n || window[vp+'CancelRequestAnimationFrame']);\n }\n if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)\n || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n window.requestAnimationFrame = function(callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function() { callback(lastTime = nextTime); },\n nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n }\n /**\n * Polyfill for performance.now, required by rAF\n */\n if(!window.performance || !window.performance.now){\n window.performance = {\n start: Date.now(),\n now: function(){ return Date.now() - this.start; }\n };\n }\n})();\nif (!Function.prototype.bind) {\n /* eslint-disable no-extend-native */\n Function.prototype.bind = function(oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function() {},\n fBound = function() {\n return fToBind.apply(this instanceof fNOP\n ? this\n : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n if (this.prototype) {\n // native functions don't have a prototype\n fNOP.prototype = this.prototype;\n }\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n// Polyfill to get the name of a function in IE9\nfunction functionName(fn) {\n if (typeof Function.prototype.name === 'undefined') {\n var funcNameRegex = /function\\s([^(]{1,})\\(/;\n var results = (funcNameRegex).exec((fn).toString());\n return (results && results.length > 1) ? results[1].trim() : \"\";\n }\n else if (typeof fn.prototype === 'undefined') {\n return fn.constructor.name;\n }\n else {\n return fn.prototype.constructor.name;\n }\n}\nfunction parseValue(str){\n if ('true' === str) return true;\n else if ('false' === str) return false;\n else if (!isNaN(str * 1)) return parseFloat(str);\n return str;\n}\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport {Foundation};\n","var Box = {\n ImNotTouchingYou: ImNotTouchingYou,\n OverlapArea: OverlapArea,\n GetDimensions: GetDimensions,\n GetExplicitOffsets: GetExplicitOffsets\n}\n\n/**\n * Compares the dimensions of an element to a container and determines collision events with container.\n * @function\n * @param {jQuery} element - jQuery object to test for collisions.\n * @param {jQuery} parent - jQuery object to use as bounding container.\n * @param {Boolean} lrOnly - set to true to check left and right values only.\n * @param {Boolean} tbOnly - set to true to check top and bottom values only.\n * @default if no parent object passed, detects collisions with `window`.\n * @returns {Boolean} - true if collision free, false if a collision in any direction.\n */\nfunction ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) {\n return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0;\n}\n\nfunction OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) {\n var eleDims = GetDimensions(element),\n topOver, bottomOver, leftOver, rightOver;\n if (parent) {\n var parDims = GetDimensions(parent);\n\n bottomOver = (parDims.height + parDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - parDims.offset.top;\n leftOver = eleDims.offset.left - parDims.offset.left;\n rightOver = (parDims.width + parDims.offset.left) - (eleDims.offset.left + eleDims.width);\n }\n else {\n bottomOver = (eleDims.windowDims.height + eleDims.windowDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - eleDims.windowDims.offset.top;\n leftOver = eleDims.offset.left - eleDims.windowDims.offset.left;\n rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width);\n }\n\n bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0);\n topOver = Math.min(topOver, 0);\n leftOver = Math.min(leftOver, 0);\n rightOver = Math.min(rightOver, 0);\n\n if (lrOnly) {\n return leftOver + rightOver;\n }\n if (tbOnly) {\n return topOver + bottomOver;\n }\n\n // use sum of squares b/c we care about overlap area.\n return Math.sqrt((topOver * topOver) + (bottomOver * bottomOver) + (leftOver * leftOver) + (rightOver * rightOver));\n}\n\n/**\n * Uses native methods to return an object of dimension values.\n * @function\n * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.\n * @returns {Object} - nested object of integer pixel values\n * TODO - if element is window, return only those values.\n */\nfunction GetDimensions(elem){\n elem = elem.length ? elem[0] : elem;\n\n if (elem === window || elem === document) {\n throw new Error(\"I'm sorry, Dave. I'm afraid I can't do that.\");\n }\n\n var rect = elem.getBoundingClientRect(),\n parRect = elem.parentNode.getBoundingClientRect(),\n winRect = document.body.getBoundingClientRect(),\n winY = window.pageYOffset,\n winX = window.pageXOffset;\n\n return {\n width: rect.width,\n height: rect.height,\n offset: {\n top: rect.top + winY,\n left: rect.left + winX\n },\n parentDims: {\n width: parRect.width,\n height: parRect.height,\n offset: {\n top: parRect.top + winY,\n left: parRect.left + winX\n }\n },\n windowDims: {\n width: winRect.width,\n height: winRect.height,\n offset: {\n top: winY,\n left: winX\n }\n }\n }\n}\n\n/**\n * Returns an object of top and left integer pixel values for dynamically rendered elements,\n * such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where\n * you don't know alignment, but generally from\n * 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment.\n * @function\n * @param {jQuery} element - jQuery object for the element being positioned.\n * @param {jQuery} anchor - jQuery object for the element's anchor point.\n * @param {String} position - a string relating to the desired position of the element, relative to it's anchor\n * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.\n * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.\n * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.\n * TODO alter/rewrite to work with `em` values as well/instead of pixels\n */\nfunction GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) {\n var $eleDims = GetDimensions(element),\n $anchorDims = anchor ? GetDimensions(anchor) : null;\n\n var topVal, leftVal;\n\n if ($anchorDims !== null) {\n // set position related attribute\n switch (position) {\n case 'top':\n topVal = $anchorDims.offset.top - ($eleDims.height + vOffset);\n break;\n case 'bottom':\n topVal = $anchorDims.offset.top + $anchorDims.height + vOffset;\n break;\n case 'left':\n leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset);\n break;\n case 'right':\n leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset;\n break;\n }\n\n // set alignment related attribute\n switch (position) {\n case 'top':\n case 'bottom':\n switch (alignment) {\n case 'left':\n leftVal = $anchorDims.offset.left + hOffset;\n break;\n case 'right':\n leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset;\n break;\n case 'center':\n leftVal = isOverflow ? hOffset : (($anchorDims.offset.left + ($anchorDims.width / 2)) - ($eleDims.width / 2)) + hOffset;\n break;\n }\n break;\n case 'right':\n case 'left':\n switch (alignment) {\n case 'bottom':\n topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height;\n break;\n case 'top':\n topVal = $anchorDims.offset.top + vOffset\n break;\n case 'center':\n topVal = ($anchorDims.offset.top + vOffset + ($anchorDims.height / 2)) - ($eleDims.height / 2)\n break;\n }\n break;\n }\n }\n\n return {top: topVal, left: leftVal};\n}\n\nexport {Box};\n","import $ from 'jquery';\n\n/**\n * Runs a callback function when images are fully loaded.\n * @param {Object} images - Image(s) to check if loaded.\n * @param {Func} callback - Function to execute when image is fully loaded.\n */\nfunction onImagesLoaded(images, callback){\n var unloaded = images.length;\n\n if (unloaded === 0) {\n callback();\n }\n\n images.each(function(){\n // Check if image is loaded\n if (this.complete && typeof this.naturalWidth !== 'undefined') {\n singleImageLoaded();\n }\n else {\n // If the above check failed, simulate loading on detached element.\n var image = new Image();\n // Still count image as loaded if it finalizes with an error.\n var events = \"load.zf.images error.zf.images\";\n $(image).one(events, function me(){\n // Unbind the event listeners. We're using 'one' but only one of the two events will have fired.\n $(this).off(events, me);\n singleImageLoaded();\n });\n image.src = $(this).attr('src');\n }\n });\n\n function singleImageLoaded() {\n unloaded--;\n if (unloaded === 0) {\n callback();\n }\n }\n}\n\nexport { onImagesLoaded };\n","/*******************************************\n * *\n * This util was created by Marius Olbertz *\n * Please thank Marius on GitHub /owlbertz *\n * or the web http://www.mariusolbertz.de/ *\n * *\n ******************************************/\n\nimport $ from 'jquery';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst keyCodes = {\n 9: 'TAB',\n 13: 'ENTER',\n 27: 'ESCAPE',\n 32: 'SPACE',\n 35: 'END',\n 36: 'HOME',\n 37: 'ARROW_LEFT',\n 38: 'ARROW_UP',\n 39: 'ARROW_RIGHT',\n 40: 'ARROW_DOWN'\n}\n\nvar commands = {}\n\n// Functions pulled out to be referenceable from internals\nfunction findFocusable($element) {\n if(!$element) {return false; }\n return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function() {\n if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { return false; } //only have visible elements and those that have a tabindex greater or equal 0\n return true;\n })\n .sort( function( a, b ) {\n if ($(a).attr('tabindex') === $(b).attr('tabindex')) {\n return 0;\n }\n let aTabIndex = parseInt($(a).attr('tabindex'), 10),\n bTabIndex = parseInt($(b).attr('tabindex'), 10);\n // Undefined is treated the same as 0\n if (typeof $(a).attr('tabindex') === 'undefined' && bTabIndex > 0) {\n return 1;\n }\n if (typeof $(b).attr('tabindex') === 'undefined' && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex === 0 && bTabIndex > 0) {\n return 1;\n }\n if (bTabIndex === 0 && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex < bTabIndex) {\n return -1;\n }\n if (aTabIndex > bTabIndex) {\n return 1;\n }\n });\n}\n\nfunction parseKey(event) {\n var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase();\n\n // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events\n key = key.replace(/\\W+/, '');\n\n if (event.shiftKey) key = `SHIFT_${key}`;\n if (event.ctrlKey) key = `CTRL_${key}`;\n if (event.altKey) key = `ALT_${key}`;\n\n // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)\n key = key.replace(/_$/, '');\n\n return key;\n}\n\nvar Keyboard = {\n keys: getKeyCodes(keyCodes),\n\n /**\n * Parses the (keyboard) event and returns a String that represents its key\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n * @param {Event} event - the event generated by the event handler\n * @return String key - String that represents the key pressed\n */\n parseKey: parseKey,\n\n /**\n * Handles the given (keyboard) event\n * @param {Event} event - the event generated by the event handler\n * @param {String} component - Foundation component's name, e.g. Slider or Reveal\n * @param {Objects} functions - collection of functions that are to be executed\n */\n handleKey(event, component, functions) {\n var commandList = commands[component],\n keyCode = this.parseKey(event),\n cmds,\n command,\n fn;\n\n if (!commandList) return console.warn('Component not defined!');\n\n // Ignore the event if it was already handled\n if (event.zfIsKeyHandled === true) return;\n\n // This component does not differentiate between ltr and rtl\n if (typeof commandList.ltr === 'undefined') {\n cmds = commandList; // use plain list\n } else { // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa\n if (Rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);\n\n else cmds = $.extend({}, commandList.rtl, commandList.ltr);\n }\n command = cmds[keyCode];\n\n fn = functions[command];\n // Execute the handler if found\n if (fn && typeof fn === 'function') {\n var returnValue = fn.apply();\n\n // Mark the event as \"handled\" to prevent future handlings\n event.zfIsKeyHandled = true;\n\n // Execute function when event was handled\n if (functions.handled || typeof functions.handled === 'function') {\n functions.handled(returnValue);\n }\n } else {\n // Execute function when event was not handled\n if (functions.unhandled || typeof functions.unhandled === 'function') {\n functions.unhandled();\n }\n }\n },\n\n /**\n * Finds all focusable elements within the given `$element`\n * @param {jQuery} $element - jQuery object to search within\n * @return {jQuery} $focusable - all focusable elements within `$element`\n */\n\n findFocusable: findFocusable,\n\n /**\n * Returns the component name name\n * @param {Object} component - Foundation component, e.g. Slider or Reveal\n * @return String componentName\n */\n\n register(componentName, cmds) {\n commands[componentName] = cmds;\n },\n\n\n // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?\n //\n /**\n * Traps the focus in the given element.\n * @param {jQuery} $element jQuery object to trap the foucs into.\n */\n trapFocus($element) {\n var $focusable = findFocusable($element),\n $firstFocusable = $focusable.eq(0),\n $lastFocusable = $focusable.eq(-1);\n\n $element.on('keydown.zf.trapfocus', function(event) {\n if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') {\n event.preventDefault();\n $firstFocusable.focus();\n }\n else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {\n event.preventDefault();\n $lastFocusable.focus();\n }\n });\n },\n /**\n * Releases the trapped focus from the given element.\n * @param {jQuery} $element jQuery object to release the focus for.\n */\n releaseFocus($element) {\n $element.off('keydown.zf.trapfocus');\n }\n}\n\n/*\n * Constants for easier comparing.\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n */\nfunction getKeyCodes(kcs) {\n var k = {};\n for (var kc in kcs) {\n if (kcs.hasOwnProperty(kc)) k[kcs[kc]] = kcs[kc];\n }\n return k;\n}\n\nexport {Keyboard};\n","import $ from 'jquery';\nimport { transitionend } from './foundation.core.utils';\n\n/**\n * Motion module.\n * @module foundation.motion\n */\n\nconst initClasses = ['mui-enter', 'mui-leave'];\nconst activeClasses = ['mui-enter-active', 'mui-leave-active'];\n\nconst Motion = {\n animateIn: function(element, animation, cb) {\n animate(true, element, animation, cb);\n },\n\n animateOut: function(element, animation, cb) {\n animate(false, element, animation, cb);\n }\n}\n\nfunction Move(duration, elem, fn){\n var anim, prog, start = null;\n\n if (duration === 0) {\n fn.apply(elem);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n return;\n }\n\n function move(ts){\n if(!start) start = ts;\n prog = ts - start;\n fn.apply(elem);\n\n if(prog < duration){ anim = window.requestAnimationFrame(move, elem); }\n else{\n window.cancelAnimationFrame(anim);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n }\n }\n anim = window.requestAnimationFrame(move);\n}\n\n/**\n * Animates an element in or out using a CSS transition class.\n * @function\n * @private\n * @param {Boolean} isIn - Defines if the animation is in or out.\n * @param {Object} element - jQuery or HTML object to animate.\n * @param {String} animation - CSS class to use.\n * @param {Function} cb - Callback to run when animation is finished.\n */\nfunction animate(isIn, element, animation, cb) {\n element = $(element).eq(0);\n\n if (!element.length) return;\n\n var initClass = isIn ? initClasses[0] : initClasses[1];\n var activeClass = isIn ? activeClasses[0] : activeClasses[1];\n\n // Set up the animation\n reset();\n\n element\n .addClass(animation)\n .css('transition', 'none');\n\n requestAnimationFrame(() => {\n element.addClass(initClass);\n if (isIn) element.show();\n });\n\n // Start the animation\n requestAnimationFrame(() => {\n // will trigger the browser to synchronously calculate the style and layout\n // also called reflow or layout thrashing\n // see https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n element[0].offsetWidth;\n element\n .css('transition', '')\n .addClass(activeClass);\n });\n\n // Clean up the animation when it finishes\n element.one(transitionend(element), finish);\n\n // Hides the element (for out animations), resets the element, and runs a callback\n function finish() {\n if (!isIn) element.hide();\n reset();\n if (cb) cb.apply(element);\n }\n\n // Resets transitions and removes motion-specific classes\n function reset() {\n element[0].style.transitionDuration = 0;\n element.removeClass(`${initClass} ${activeClass} ${animation}`);\n }\n}\n\nexport { Move, Motion };\n\n","import $ from 'jquery';\n\nconst Nest = {\n Feather(menu, type = 'zf') {\n menu.attr('role', 'menubar');\n menu.find('a').attr({'role': 'menuitem'});\n\n var items = menu.find('li').attr({'role': 'none'}),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`,\n applyAria = (type !== 'accordion'); // Accordions handle their own ARIA attriutes.\n\n items.each(function() {\n var $item = $(this),\n $sub = $item.children('ul');\n\n if ($sub.length) {\n $item.addClass(hasSubClass);\n if(applyAria) {\n $item.children('a:first').attr({\n 'aria-haspopup': true,\n 'aria-label': $item.children('a:first').text()\n });\n // Note: Drilldowns behave differently in how they hide, and so need\n // additional attributes. We should look if this possibly over-generalized\n // utility (Nest) is appropriate when we rework menus in 6.4\n if(type === 'drilldown') {\n $item.attr({'aria-expanded': false});\n }\n }\n $sub\n .addClass(`submenu ${subMenuClass}`)\n .attr({\n 'data-submenu': '',\n 'role': 'menubar'\n });\n if(type === 'drilldown') {\n $sub.attr({'aria-hidden': true});\n }\n }\n\n if ($item.parent('[data-submenu]').length) {\n $item.addClass(`is-submenu-item ${subItemClass}`);\n }\n });\n\n return;\n },\n\n Burn(menu, type) {\n var //items = menu.find('li'),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`;\n\n menu\n .find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li')\n .removeClass(`${subMenuClass} ${subItemClass} ${hasSubClass} is-submenu-item submenu is-active`)\n .removeAttr('data-submenu').css('display', '');\n\n }\n}\n\nexport {Nest};\n","function Timer(elem, options, cb) {\n var _this = this,\n duration = options.duration,//options is an object for easily adding features later.\n nameSpace = Object.keys(elem.data())[0] || 'timer',\n remain = -1,\n start,\n timer;\n\n this.isPaused = false;\n\n this.restart = function() {\n remain = -1;\n clearTimeout(timer);\n this.start();\n }\n\n this.start = function() {\n this.isPaused = false;\n // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n clearTimeout(timer);\n remain = remain <= 0 ? duration : remain;\n elem.data('paused', false);\n start = Date.now();\n timer = setTimeout(function(){\n if(options.infinite){\n _this.restart();//rerun the timer.\n }\n if (cb && typeof cb === 'function') { cb(); }\n }, remain);\n elem.trigger(`timerstart.zf.${nameSpace}`);\n }\n\n this.pause = function() {\n this.isPaused = true;\n //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n clearTimeout(timer);\n elem.data('paused', true);\n var end = Date.now();\n remain = remain - (end - start);\n elem.trigger(`timerpaused.zf.${nameSpace}`);\n }\n}\n\nexport {Timer};\n","//**************************************************\n//**Work inspired by multiple jquery swipe plugins**\n//**Done by Yohai Ararat ***************************\n//**************************************************\n\nimport $ from 'jquery';\n\nvar Touch = {};\n\nvar startPosX,\n startTime,\n elapsedTime,\n startEvent,\n isMoving = false,\n didMoved = false;\n\nfunction onTouchEnd(e) {\n this.removeEventListener('touchmove', onTouchMove);\n this.removeEventListener('touchend', onTouchEnd);\n\n // If the touch did not move, consider it as a \"tap\"\n if (!didMoved) {\n var tapEvent = $.Event('tap', startEvent || e);\n $(this).trigger(tapEvent);\n }\n\n startEvent = null;\n isMoving = false;\n didMoved = false;\n}\n\nfunction onTouchMove(e) {\n if (true === $.spotSwipe.preventDefault) { e.preventDefault(); }\n\n if(isMoving) {\n var x = e.touches[0].pageX;\n // var y = e.touches[0].pageY;\n var dx = startPosX - x;\n // var dy = startPosY - y;\n var dir;\n didMoved = true;\n elapsedTime = new Date().getTime() - startTime;\n if(Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n dir = dx > 0 ? 'left' : 'right';\n }\n // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n // dir = dy > 0 ? 'down' : 'up';\n // }\n if(dir) {\n e.preventDefault();\n onTouchEnd.apply(this, arguments);\n $(this)\n .trigger($.Event('swipe', Object.assign({}, e)), dir)\n .trigger($.Event(`swipe${dir}`, Object.assign({}, e)));\n }\n }\n\n}\n\nfunction onTouchStart(e) {\n\n if (e.touches.length === 1) {\n startPosX = e.touches[0].pageX;\n startEvent = e;\n isMoving = true;\n didMoved = false;\n startTime = new Date().getTime();\n this.addEventListener('touchmove', onTouchMove, { passive : true === $.spotSwipe.preventDefault });\n this.addEventListener('touchend', onTouchEnd, false);\n }\n}\n\nfunction init() {\n this.addEventListener && this.addEventListener('touchstart', onTouchStart, { passive : true });\n}\n\n// function teardown() {\n// this.removeEventListener('touchstart', onTouchStart);\n// }\n\nclass SpotSwipe {\n constructor() {\n this.version = '1.0.0';\n this.enabled = 'ontouchstart' in document.documentElement;\n this.preventDefault = false;\n this.moveThreshold = 75;\n this.timeThreshold = 200;\n this._init();\n }\n\n _init() {\n $.event.special.swipe = { setup: init };\n $.event.special.tap = { setup: init };\n\n $.each(['left', 'up', 'down', 'right'], function () {\n $.event.special[`swipe${this}`] = { setup: function(){\n $(this).on('swipe', $.noop);\n } };\n });\n }\n}\n\n/****************************************************\n * As far as I can tell, both setupSpotSwipe and *\n * setupTouchHandler should be idempotent, *\n * because they directly replace functions & *\n * values, and do not add event handlers directly. *\n ****************************************************/\n\nTouch.setupSpotSwipe = function() {\n $.spotSwipe = new SpotSwipe($);\n};\n\n/****************************************************\n * Method for adding pseudo drag events to elements *\n ***************************************************/\nTouch.setupTouchHandler = function() {\n $.fn.addTouch = function(){\n this.each(function(i, el){\n $(el).bind('touchstart touchmove touchend touchcancel', function(event) {\n //we pass the original event object because the jQuery event\n //object is normalized to w3c specs and does not provide the TouchList\n handleTouch(event);\n });\n });\n\n var handleTouch = function(event) {\n var touches = event.changedTouches,\n first = touches[0],\n eventTypes = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup'\n },\n type = eventTypes[event.type],\n simulatedEvent\n ;\n\n if('MouseEvent' in window && typeof window.MouseEvent === 'function') {\n simulatedEvent = new window.MouseEvent(type, {\n 'bubbles': true,\n 'cancelable': true,\n 'screenX': first.screenX,\n 'screenY': first.screenY,\n 'clientX': first.clientX,\n 'clientY': first.clientY\n });\n } else {\n simulatedEvent = document.createEvent('MouseEvent');\n simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);\n }\n first.target.dispatchEvent(simulatedEvent);\n };\n };\n};\n\nTouch.init = function () {\n if(typeof($.spotSwipe) === 'undefined') {\n Touch.setupSpotSwipe($);\n Touch.setupTouchHandler($);\n }\n};\n\nexport {Touch};\n","import $ from 'jquery';\nimport { onLoad } from './foundation.core.utils';\nimport { Motion } from './foundation.util.motion';\n\nconst MutationObserver = (function () {\n var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];\n for (var i=0; i < prefixes.length; i++) {\n if (`${prefixes[i]}MutationObserver` in window) {\n return window[`${prefixes[i]}MutationObserver`];\n }\n }\n return false;\n})();\n\nconst triggers = (el, type) => {\n el.data(type).split(' ').forEach(id => {\n $(`#${id}`)[ type === 'close' ? 'trigger' : 'triggerHandler'](`${type}.zf.trigger`, [el]);\n });\n};\n\nvar Triggers = {\n Listeners: {\n Basic: {},\n Global: {}\n },\n Initializers: {}\n}\n\nTriggers.Listeners.Basic = {\n openListener: function() {\n triggers($(this), 'open');\n },\n closeListener: function() {\n let id = $(this).data('close');\n if (id) {\n triggers($(this), 'close');\n }\n else {\n $(this).trigger('close.zf.trigger');\n }\n },\n toggleListener: function() {\n let id = $(this).data('toggle');\n if (id) {\n triggers($(this), 'toggle');\n } else {\n $(this).trigger('toggle.zf.trigger');\n }\n },\n closeableListener: function(e) {\n let animation = $(this).data('closable');\n\n // Only close the first closable element. See https://git.io/zf-7833\n e.stopPropagation();\n\n if(animation !== ''){\n Motion.animateOut($(this), animation, function() {\n $(this).trigger('closed.zf');\n });\n }else{\n $(this).fadeOut().trigger('closed.zf');\n }\n },\n toggleFocusListener: function() {\n let id = $(this).data('toggle-focus');\n $(`#${id}`).triggerHandler('toggle.zf.trigger', [$(this)]);\n }\n};\n\n// Elements with [data-open] will reveal a plugin that supports it when clicked.\nTriggers.Initializers.addOpenListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);\n $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);\n}\n\n// Elements with [data-close] will close a plugin that supports it when clicked.\n// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.\nTriggers.Initializers.addCloseListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);\n $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);\n}\n\n// Elements with [data-toggle] will toggle a plugin that supports it when clicked.\nTriggers.Initializers.addToggleListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);\n $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);\n}\n\n// Elements with [data-closable] will respond to close.zf.trigger events.\nTriggers.Initializers.addCloseableListener = ($elem) => {\n $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);\n $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);\n}\n\n// Elements with [data-toggle-focus] will respond to coming in and out of focus\nTriggers.Initializers.addToggleFocusListener = ($elem) => {\n $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);\n $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);\n}\n\n\n\n// More Global/complex listeners and triggers\nTriggers.Listeners.Global = {\n resizeListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('resizeme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a resize event\n $nodes.attr('data-events', \"resize\");\n },\n scrollListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('scrollme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a scroll event\n $nodes.attr('data-events', \"scroll\");\n },\n closeMeListener: function(e, pluginId){\n let plugin = e.namespace.split('.')[0];\n let plugins = $(`[data-${plugin}]`).not(`[data-yeti-box=\"${pluginId}\"]`);\n\n plugins.each(function(){\n let _this = $(this);\n _this.triggerHandler('close.zf.trigger', [_this]);\n });\n }\n}\n\n// Global, parses whole document.\nTriggers.Initializers.addClosemeListener = function(pluginName) {\n var yetiBoxes = $('[data-yeti-box]'),\n plugNames = ['dropdown', 'tooltip', 'reveal'];\n\n if(pluginName){\n if(typeof pluginName === 'string'){\n plugNames.push(pluginName);\n }else if(typeof pluginName === 'object' && typeof pluginName[0] === 'string'){\n plugNames = plugNames.concat(pluginName);\n }else{\n console.error('Plugin names must be strings');\n }\n }\n if(yetiBoxes.length){\n let listeners = plugNames.map((name) => {\n return `closeme.zf.${name}`;\n }).join(' ');\n\n $(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);\n }\n}\n\nfunction debounceGlobalListener(debounce, trigger, listener) {\n let timer, args = Array.prototype.slice.call(arguments, 3);\n $(window).on(trigger, function() {\n if (timer) { clearTimeout(timer); }\n timer = setTimeout(function(){\n listener.apply(null, args);\n }, debounce || 10); //default time to emit scroll event\n });\n}\n\nTriggers.Initializers.addResizeListener = function(debounce){\n let $nodes = $('[data-resize]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);\n }\n}\n\nTriggers.Initializers.addScrollListener = function(debounce){\n let $nodes = $('[data-scroll]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);\n }\n}\n\nTriggers.Initializers.addMutationEventsListener = function($elem) {\n if(!MutationObserver){ return false; }\n let $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]');\n\n //element callback\n var listeningElementsMutation = function (mutationRecordsList) {\n var $target = $(mutationRecordsList[0].target);\n\n //trigger the event handler for the element depending on type\n switch (mutationRecordsList[0].type) {\n case \"attributes\":\n if ($target.attr(\"data-events\") === \"scroll\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);\n }\n if ($target.attr(\"data-events\") === \"resize\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('resizeme.zf.trigger', [$target]);\n }\n if (mutationRecordsList[0].attributeName === \"style\") {\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n }\n break;\n\n case \"childList\":\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n break;\n\n default:\n return false;\n //nothing\n }\n };\n\n if ($nodes.length) {\n //for each element that needs to listen for resizing, scrolling, or mutation add a single observer\n for (var i = 0; i <= $nodes.length - 1; i++) {\n var elementObserver = new MutationObserver(listeningElementsMutation);\n elementObserver.observe($nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: [\"data-events\", \"style\"] });\n }\n }\n}\n\nTriggers.Initializers.addSimpleListeners = function() {\n let $document = $(document);\n\n Triggers.Initializers.addOpenListener($document);\n Triggers.Initializers.addCloseListener($document);\n Triggers.Initializers.addToggleListener($document);\n Triggers.Initializers.addCloseableListener($document);\n Triggers.Initializers.addToggleFocusListener($document);\n\n}\n\nTriggers.Initializers.addGlobalListeners = function() {\n let $document = $(document);\n Triggers.Initializers.addMutationEventsListener($document);\n Triggers.Initializers.addResizeListener(250);\n Triggers.Initializers.addScrollListener();\n Triggers.Initializers.addClosemeListener();\n}\n\n\nTriggers.init = function (__, Foundation) {\n onLoad($(window), function () {\n if ($.triggersInitialized !== true) {\n Triggers.Initializers.addSimpleListeners();\n Triggers.Initializers.addGlobalListeners();\n $.triggersInitialized = true;\n }\n });\n\n if(Foundation) {\n Foundation.Triggers = Triggers;\n // Legacy included to be backwards compatible for now.\n Foundation.IHearYou = Triggers.Initializers.addGlobalListeners\n }\n}\n\nexport {Triggers};\n","import { GetYoDigits } from './foundation.core.utils';\n\n// Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST\n// {function} _setup (replaces previous constructor),\n// {function} _destroy (replaces previous destroy)\nclass Plugin {\n\n constructor(element, options) {\n this._setup(element, options);\n var pluginName = getPluginName(this);\n this.uuid = GetYoDigits(6, pluginName);\n\n if(!this.$element.attr(`data-${pluginName}`)){ this.$element.attr(`data-${pluginName}`, this.uuid); }\n if(!this.$element.data('zfPlugin')){ this.$element.data('zfPlugin', this); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n this.$element.trigger(`init.zf.${pluginName}`);\n }\n\n destroy() {\n this._destroy();\n var pluginName = getPluginName(this);\n this.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in this){\n if (this.hasOwnProperty(prop)) {\n this[prop] = null; //clean up script to prep for garbage collection.\n }\n }\n }\n}\n\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction getPluginName(obj) {\n return hyphenate(obj.className);\n}\n\nexport {Plugin};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { GetYoDigits } from './foundation.core.utils';\n\n/**\n * Abide module.\n * @module foundation.abide\n */\n\nclass Abide extends Plugin {\n /**\n * Creates a new instance of Abide.\n * @class\n * @name Abide\n * @fires Abide#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options = {}) {\n this.$element = element;\n this.options = $.extend(true, {}, Abide.defaults, this.$element.data(), options);\n this.isEnabled = true;\n this.formnovalidate = null;\n\n this.className = 'Abide'; // ie9 back compat\n this._init();\n }\n\n /**\n * Initializes the Abide plugin and calls functions to get Abide functioning on load.\n * @private\n */\n _init() {\n this.$inputs = $.merge( // Consider as input to validate:\n this.$element.find('input').not('[type=\"submit\"]'), // * all input fields expect submit\n this.$element.find('textarea, select') // * all textareas and select fields\n );\n this.$submits = this.$element.find('[type=\"submit\"]');\n const $globalErrors = this.$element.find('[data-abide-error]');\n\n // Add a11y attributes to all fields\n if (this.options.a11yAttributes) {\n this.$inputs.each((i, input) => this.addA11yAttributes($(input)));\n $globalErrors.each((i, error) => this.addGlobalErrorA11yAttributes($(error)));\n }\n\n this._events();\n }\n\n /**\n * Initializes events for Abide.\n * @private\n */\n _events() {\n this.$element.off('.abide')\n .on('reset.zf.abide', () => {\n this.resetForm();\n })\n .on('submit.zf.abide', () => {\n return this.validateForm();\n });\n\n this.$submits\n .off('click.zf.abide keydown.zf.abide')\n .on('click.zf.abide keydown.zf.abide', (e) => {\n if (!e.key || (e.key === ' ' || e.key === 'Enter')) {\n e.preventDefault();\n this.formnovalidate = e.target.getAttribute('formnovalidate') !== null;\n this.$element.submit();\n }\n });\n\n if (this.options.validateOn === 'fieldChange') {\n this.$inputs\n .off('change.zf.abide')\n .on('change.zf.abide', (e) => {\n this.validateInput($(e.target));\n });\n }\n\n if (this.options.liveValidate) {\n this.$inputs\n .off('input.zf.abide')\n .on('input.zf.abide', (e) => {\n this.validateInput($(e.target));\n });\n }\n\n if (this.options.validateOnBlur) {\n this.$inputs\n .off('blur.zf.abide')\n .on('blur.zf.abide', (e) => {\n this.validateInput($(e.target));\n });\n }\n }\n\n /**\n * Calls necessary functions to update Abide upon DOM change\n * @private\n */\n _reflow() {\n this._init();\n }\n\n /**\n * Checks whether the submitted form should be validated or not, consodering formnovalidate and isEnabled\n * @returns {Boolean}\n * @private\n */\n _validationIsDisabled() {\n if (this.isEnabled === false) { // whole validation disabled\n return true;\n } else if (typeof this.formnovalidate === 'boolean') { // triggered by $submit\n return this.formnovalidate;\n }\n // triggered by Enter in non-submit input\n return this.$submits.length ? this.$submits[0].getAttribute('formnovalidate') !== null : false;\n }\n\n /**\n * Enables the whole validation\n */\n enableValidation() {\n this.isEnabled = true;\n }\n\n /**\n * Disables the whole validation\n */\n disableValidation() {\n this.isEnabled = false;\n }\n\n /**\n * Checks whether or not a form element has the required attribute and if it's checked or not\n * @param {Object} element - jQuery object to check for required attribute\n * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n */\n requiredCheck($el) {\n if (!$el.attr('required')) return true;\n\n var isGood = true;\n\n switch ($el[0].type) {\n case 'checkbox':\n isGood = $el[0].checked;\n break;\n\n case 'select':\n case 'select-one':\n case 'select-multiple':\n var opt = $el.find('option:selected');\n if (!opt.length || !opt.val()) isGood = false;\n break;\n\n default:\n if (!$el.val() || !$el.val().length) isGood = false;\n }\n\n return isGood;\n }\n\n /**\n * Get:\n * - Based on $el, the first element(s) corresponding to `formErrorSelector` in this order:\n * 1. The element's direct sibling('s).\n * 2. The element's parent's children.\n * - Element(s) with the attribute `[data-form-error-for]` set with the element's id.\n *\n * This allows for multiple form errors per input, though if none are found, no form errors will be shown.\n *\n * @param {Object} $el - jQuery object to use as reference to find the form error selector.\n * @param {String[]} [failedValidators] - List of failed validators.\n * @returns {Object} jQuery object with the selector.\n */\n findFormError($el, failedValidators) {\n var id = $el.length ? $el[0].id : '';\n var $error = $el.siblings(this.options.formErrorSelector);\n\n if (!$error.length) {\n $error = $el.parent().find(this.options.formErrorSelector);\n }\n\n if (id) {\n $error = $error.add(this.$element.find(`[data-form-error-for=\"${id}\"]`));\n }\n\n if (!!failedValidators) {\n $error = $error.not('[data-form-error-on]')\n\n failedValidators.forEach((v) => {\n $error = $error.add($el.siblings(`[data-form-error-on=\"${v}\"]`));\n $error = $error.add(this.$element.find(`[data-form-error-for=\"${id}\"][data-form-error-on=\"${v}\"]`));\n });\n }\n\n return $error;\n }\n\n /**\n * Get the first element in this order:\n * 2. The <label> with the attribute `[for=\"someInputId\"]`\n * 3. The `.closest()` <label>\n *\n * @param {Object} $el - jQuery object to check for required attribute\n * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n */\n findLabel($el) {\n var id = $el[0].id;\n var $label = this.$element.find(`label[for=\"${id}\"]`);\n\n if (!$label.length) {\n return $el.closest('label');\n }\n\n return $label;\n }\n\n /**\n * Get the set of labels associated with a set of radio els in this order\n * 2. The <label> with the attribute `[for=\"someInputId\"]`\n * 3. The `.closest()` <label>\n *\n * @param {Object} $el - jQuery object to check for required attribute\n * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n */\n findRadioLabels($els) {\n var labels = $els.map((i, el) => {\n var id = el.id;\n var $label = this.$element.find(`label[for=\"${id}\"]`);\n\n if (!$label.length) {\n $label = $(el).closest('label');\n }\n return $label[0];\n });\n\n return $(labels);\n }\n\n /**\n * Get the set of labels associated with a set of checkbox els in this order\n * 2. The <label> with the attribute `[for=\"someInputId\"]`\n * 3. The `.closest()` <label>\n *\n * @param {Object} $el - jQuery object to check for required attribute\n * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n */\n findCheckboxLabels($els) {\n var labels = $els.map((i, el) => {\n var id = el.id;\n var $label = this.$element.find(`label[for=\"${id}\"]`);\n\n if (!$label.length) {\n $label = $(el).closest('label');\n }\n return $label[0];\n });\n\n return $(labels);\n }\n\n /**\n * Adds the CSS error class as specified by the Abide settings to the label, input, and the form\n * @param {Object} $el - jQuery object to add the class to\n * @param {String[]} [failedValidators] - List of failed validators.\n */\n addErrorClasses($el, failedValidators) {\n var $label = this.findLabel($el);\n var $formError = this.findFormError($el, failedValidators);\n\n if ($label.length) {\n $label.addClass(this.options.labelErrorClass);\n }\n\n if ($formError.length) {\n $formError.addClass(this.options.formErrorClass);\n }\n\n $el.addClass(this.options.inputErrorClass).attr({\n 'data-invalid': '',\n 'aria-invalid': true\n });\n }\n\n /**\n * Adds [for] and [role=alert] attributes to all form error targetting $el,\n * and [aria-describedby] attribute to $el toward the first form error.\n * @param {Object} $el - jQuery object\n */\n addA11yAttributes($el) {\n let $errors = this.findFormError($el);\n let $labels = $errors.filter('label');\n let $error = $errors.first();\n if (!$errors.length) return;\n\n // Set [aria-describedby] on the input toward the first form error if it is not set\n if (typeof $el.attr('aria-describedby') === 'undefined') {\n // Get the first error ID or create one\n let errorId = $error.attr('id');\n if (typeof errorId === 'undefined') {\n errorId = GetYoDigits(6, 'abide-error');\n $error.attr('id', errorId);\n }\n\n $el.attr('aria-describedby', errorId);\n }\n\n if ($labels.filter('[for]').length < $labels.length) {\n // Get the input ID or create one\n let elemId = $el.attr('id');\n if (typeof elemId === 'undefined') {\n elemId = GetYoDigits(6, 'abide-input');\n $el.attr('id', elemId);\n }\n\n // For each label targeting $el, set [for] if it is not set.\n $labels.each((i, label) => {\n const $label = $(label);\n if (typeof $label.attr('for') === 'undefined')\n $label.attr('for', elemId);\n });\n }\n\n // For each error targeting $el, set [role=alert] if it is not set.\n $errors.each((i, label) => {\n const $label = $(label);\n if (typeof $label.attr('role') === 'undefined')\n $label.attr('role', 'alert');\n }).end();\n }\n\n /**\n * Adds [aria-live] attribute to the given global form error $el.\n * @param {Object} $el - jQuery object to add the attribute to\n */\n addGlobalErrorA11yAttributes($el) {\n if (typeof $el.attr('aria-live') === 'undefined')\n $el.attr('aria-live', this.options.a11yErrorLevel);\n }\n\n /**\n * Remove CSS error classes etc from an entire radio button group\n * @param {String} groupName - A string that specifies the name of a radio button group\n *\n */\n removeRadioErrorClasses(groupName) {\n var $els = this.$element.find(`:radio[name=\"${groupName}\"]`);\n var $labels = this.findRadioLabels($els);\n var $formErrors = this.findFormError($els);\n\n if ($labels.length) {\n $labels.removeClass(this.options.labelErrorClass);\n }\n\n if ($formErrors.length) {\n $formErrors.removeClass(this.options.formErrorClass);\n }\n\n $els.removeClass(this.options.inputErrorClass).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n\n }\n\n /**\n * Remove CSS error classes etc from an entire checkbox group\n * @param {String} groupName - A string that specifies the name of a checkbox group\n *\n */\n removeCheckboxErrorClasses(groupName) {\n var $els = this.$element.find(`:checkbox[name=\"${groupName}\"]`);\n var $labels = this.findCheckboxLabels($els);\n var $formErrors = this.findFormError($els);\n\n if ($labels.length) {\n $labels.removeClass(this.options.labelErrorClass);\n }\n\n if ($formErrors.length) {\n $formErrors.removeClass(this.options.formErrorClass);\n }\n\n $els.removeClass(this.options.inputErrorClass).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n\n }\n\n /**\n * Removes CSS error class as specified by the Abide settings from the label, input, and the form\n * @param {Object} $el - jQuery object to remove the class from\n */\n removeErrorClasses($el) {\n // radios need to clear all of the els\n if ($el[0].type === 'radio') {\n return this.removeRadioErrorClasses($el.attr('name'));\n }\n // checkboxes need to clear all of the els\n else if ($el[0].type === 'checkbox') {\n return this.removeCheckboxErrorClasses($el.attr('name'));\n }\n\n var $label = this.findLabel($el);\n var $formError = this.findFormError($el);\n\n if ($label.length) {\n $label.removeClass(this.options.labelErrorClass);\n }\n\n if ($formError.length) {\n $formError.removeClass(this.options.formErrorClass);\n }\n\n $el.removeClass(this.options.inputErrorClass).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n }\n\n /**\n * Goes through a form to find inputs and proceeds to validate them in ways specific to their type.\n * Ignores inputs with data-abide-ignore, type=\"hidden\" or disabled attributes set\n * @fires Abide#invalid\n * @fires Abide#valid\n * @param {Object} element - jQuery object to validate, should be an HTML input\n * @returns {Boolean} goodToGo - If the input is valid or not.\n */\n validateInput($el) {\n var clearRequire = this.requiredCheck($el),\n validator = $el.attr('data-validator'),\n failedValidators = [],\n manageErrorClasses = true;\n\n // skip validation if disabled\n if (this._validationIsDisabled()) {\n return true;\n }\n\n // don't validate ignored inputs or hidden inputs or disabled inputs\n if ($el.is('[data-abide-ignore]') || $el.is('[type=\"hidden\"]') || $el.is('[disabled]')) {\n return true;\n }\n\n switch ($el[0].type) {\n case 'radio':\n this.validateRadio($el.attr('name')) || failedValidators.push('required');\n break;\n\n case 'checkbox':\n this.validateCheckbox($el.attr('name')) || failedValidators.push('required');\n // validateCheckbox() adds/removes error classes\n manageErrorClasses = false;\n break;\n\n case 'select':\n case 'select-one':\n case 'select-multiple':\n clearRequire || failedValidators.push('required');\n break;\n\n default:\n clearRequire || failedValidators.push('required');\n this.validateText($el) || failedValidators.push('pattern');\n }\n\n if (validator) {\n const required = $el.attr('required') ? true : false;\n\n validator.split(' ').forEach((v) => {\n this.options.validators[v]($el, required, $el.parent()) || failedValidators.push(v);\n });\n }\n\n if ($el.attr('data-equalto')) {\n this.options.validators.equalTo($el) || failedValidators.push('equalTo');\n }\n\n var goodToGo = failedValidators.length === 0;\n var message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide';\n\n if (goodToGo) {\n // Re-validate inputs that depend on this one with equalto\n const dependentElements = this.$element.find(`[data-equalto=\"${$el.attr('id')}\"]`);\n if (dependentElements.length) {\n let _this = this;\n dependentElements.each(function() {\n if ($(this).val()) {\n _this.validateInput($(this));\n }\n });\n }\n }\n\n if (manageErrorClasses) {\n if (!goodToGo) {\n this.addErrorClasses($el, failedValidators);\n } else {\n this.removeErrorClasses($el);\n }\n }\n\n /**\n * Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide`\n * Trigger includes the DOM element of the input.\n * @event Abide#valid\n * @event Abide#invalid\n */\n $el.trigger(message, [$el]);\n\n return goodToGo;\n }\n\n /**\n * Goes through a form and if there are any invalid inputs, it will display the form error element\n * @returns {Boolean} noError - true if no errors were detected...\n * @fires Abide#formvalid\n * @fires Abide#forminvalid\n */\n validateForm() {\n var acc = [];\n var _this = this;\n var checkboxGroupName;\n\n // Remember first form submission to prevent specific checkbox validation (more than one required) until form got initially submitted\n if (!this.initialized) {\n this.initialized = true;\n }\n\n // skip validation if disabled\n if (this._validationIsDisabled()) {\n this.formnovalidate = null;\n return true;\n }\n\n this.$inputs.each(function() {\n\n // Only use one checkbox per group since validateCheckbox() iterates over all associated checkboxes\n if ($(this)[0].type === 'checkbox') {\n if ($(this).attr('name') === checkboxGroupName) return true;\n checkboxGroupName = $(this).attr('name');\n }\n\n acc.push(_this.validateInput($(this)));\n });\n\n var noError = acc.indexOf(false) === -1;\n\n this.$element.find('[data-abide-error]').each((i, elem) => {\n const $elem = $(elem);\n // Ensure a11y attributes are set\n if (this.options.a11yAttributes) this.addGlobalErrorA11yAttributes($elem);\n // Show or hide the error\n $elem.css('display', (noError ? 'none' : 'block'));\n });\n\n /**\n * Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`.\n * Trigger includes the element of the form.\n * @event Abide#formvalid\n * @event Abide#forminvalid\n */\n this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]);\n\n return noError;\n }\n\n /**\n * Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true.\n * @param {Object} $el - jQuery object to validate, should be a text input HTML element\n * @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns\n * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified\n */\n validateText($el, pattern) {\n // A pattern can be passed to this function, or it will be infered from the input's \"pattern\" attribute, or it's \"type\" attribute\n pattern = (pattern || $el.attr('data-pattern') || $el.attr('pattern') || $el.attr('type'));\n var inputText = $el.val();\n var valid = true;\n\n if (inputText.length) {\n // If the pattern attribute on the element is in Abide's list of patterns, then test that regexp\n if (this.options.patterns.hasOwnProperty(pattern)) {\n valid = this.options.patterns[pattern].test(inputText);\n }\n // If the pattern name isn't also the type attribute of the field, then test it as a regexp\n else if (pattern !== $el.attr('type')) {\n valid = new RegExp(pattern).test(inputText);\n }\n }\n\n return valid;\n }\n\n /**\n * Determines whether or a not a radio input is valid based on whether or not it is required and selected. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all radio buttons in its group.\n * @param {String} groupName - A string that specifies the name of a radio button group\n * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required)\n */\n validateRadio(groupName) {\n // If at least one radio in the group has the `required` attribute, the group is considered required\n // Per W3C spec, all radio buttons in a group should have `required`, but we're being nice\n var $group = this.$element.find(`:radio[name=\"${groupName}\"]`);\n var valid = false, required = false;\n\n // For the group to be required, at least one radio needs to be required\n $group.each((i, e) => {\n if ($(e).attr('required')) {\n required = true;\n }\n });\n if (!required) valid=true;\n\n if (!valid) {\n // For the group to be valid, at least one radio needs to be checked\n $group.each((i, e) => {\n if ($(e).prop('checked')) {\n valid = true;\n }\n });\n }\n\n return valid;\n }\n\n /**\n * Determines whether or a not a checkbox input is valid based on whether or not it is required and checked. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all checkboxes in its group.\n * @param {String} groupName - A string that specifies the name of a checkbox group\n * @returns {Boolean} Boolean value depends on whether or not at least one checkbox input has been checked (if it's required)\n */\n validateCheckbox(groupName) {\n // If at least one checkbox in the group has the `required` attribute, the group is considered required\n // Per W3C spec, all checkboxes in a group should have `required`, but we're being nice\n var $group = this.$element.find(`:checkbox[name=\"${groupName}\"]`);\n var valid = false, required = false, minRequired = 1, checked = 0;\n\n // For the group to be required, at least one checkbox needs to be required\n $group.each((i, e) => {\n if ($(e).attr('required')) {\n required = true;\n }\n });\n if (!required) valid=true;\n\n if (!valid) {\n // Count checked checkboxes within the group\n // Use data-min-required if available (default: 1)\n $group.each((i, e) => {\n if ($(e).prop('checked')) {\n checked++;\n }\n if (typeof $(e).attr('data-min-required') !== 'undefined') {\n minRequired = parseInt($(e).attr('data-min-required'), 10);\n }\n });\n\n // For the group to be valid, the minRequired amount of checkboxes have to be checked\n if (checked >= minRequired) {\n valid = true;\n }\n }\n\n // Skip validation if more than 1 checkbox have to be checked AND if the form hasn't got submitted yet (otherwise it will already show an error during the first fill in)\n if (this.initialized !== true && minRequired > 1) {\n return true;\n }\n\n // Refresh error class for all input\n $group.each((i, e) => {\n if (!valid) {\n this.addErrorClasses($(e), ['required']);\n } else {\n this.removeErrorClasses($(e));\n }\n });\n\n return valid;\n }\n\n /**\n * Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator=\"foo bar baz\"` in a space separated listed.\n * @param {Object} $el - jQuery input element.\n * @param {String} validators - a string of function names matching functions in the Abide.options.validators object.\n * @param {Boolean} required - self explanatory?\n * @returns {Boolean} - true if validations passed.\n */\n matchValidation($el, validators, required) {\n required = required ? true : false;\n\n var clear = validators.split(' ').map((v) => {\n return this.options.validators[v]($el, required, $el.parent());\n });\n return clear.indexOf(false) === -1;\n }\n\n /**\n * Resets form inputs and styles\n * @fires Abide#formreset\n */\n resetForm() {\n var $form = this.$element,\n opts = this.options;\n\n $(`.${opts.labelErrorClass}`, $form).not('small').removeClass(opts.labelErrorClass);\n $(`.${opts.inputErrorClass}`, $form).not('small').removeClass(opts.inputErrorClass);\n $(`${opts.formErrorSelector}.${opts.formErrorClass}`).removeClass(opts.formErrorClass);\n $form.find('[data-abide-error]').css('display', 'none');\n $(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n $(':input:radio', $form).not('[data-abide-ignore]').prop('checked',false).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n $(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked',false).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n /**\n * Fires when the form has been reset.\n * @event Abide#formreset\n */\n $form.trigger('formreset.zf.abide', [$form]);\n }\n\n /**\n * Destroys an instance of Abide.\n * Removes error styles and classes from elements, without resetting their values.\n */\n _destroy() {\n var _this = this;\n this.$element\n .off('.abide')\n .find('[data-abide-error]')\n .css('display', 'none');\n\n this.$inputs\n .off('.abide')\n .each(function() {\n _this.removeErrorClasses($(this));\n });\n\n this.$submits\n .off('.abide');\n }\n}\n\n/**\n * Default settings for plugin\n */\nAbide.defaults = {\n /**\n * The default event to validate inputs. Checkboxes and radios validate immediately.\n * Remove or change this value for manual validation.\n * @option\n * @type {?string}\n * @default 'fieldChange'\n */\n validateOn: 'fieldChange',\n\n /**\n * Class to be applied to input labels on failed validation.\n * @option\n * @type {string}\n * @default 'is-invalid-label'\n */\n labelErrorClass: 'is-invalid-label',\n\n /**\n * Class to be applied to inputs on failed validation.\n * @option\n * @type {string}\n * @default 'is-invalid-input'\n */\n inputErrorClass: 'is-invalid-input',\n\n /**\n * Class selector to use to target Form Errors for show/hide.\n * @option\n * @type {string}\n * @default '.form-error'\n */\n formErrorSelector: '.form-error',\n\n /**\n * Class added to Form Errors on failed validation.\n * @option\n * @type {string}\n * @default 'is-visible'\n */\n formErrorClass: 'is-visible',\n\n /**\n * If true, automatically insert when possible:\n * - `[aria-describedby]` on fields\n * - `[role=alert]` on form errors and `[for]` on form error labels\n * - `[aria-live]` on global errors `[data-abide-error]` (see option `a11yErrorLevel`).\n * @option\n * @type {boolean}\n * @default true\n */\n a11yAttributes: true,\n\n /**\n * [aria-live] attribute value to be applied on global errors `[data-abide-error]`.\n * Options are: 'assertive', 'polite' and 'off'/null\n * @option\n * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions\n * @type {string}\n * @default 'assertive'\n */\n a11yErrorLevel: 'assertive',\n\n /**\n * Set to true to validate text inputs on any value change.\n * @option\n * @type {boolean}\n * @default false\n */\n liveValidate: false,\n\n /**\n * Set to true to validate inputs on blur.\n * @option\n * @type {boolean}\n * @default false\n */\n validateOnBlur: false,\n\n patterns: {\n alpha : /^[a-zA-Z]+$/,\n // eslint-disable-next-line camelcase\n alpha_numeric : /^[a-zA-Z0-9]+$/,\n integer : /^[-+]?\\d+$/,\n number : /^[-+]?\\d*(?:[\\.\\,]\\d+)?$/,\n\n // amex, visa, diners\n card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$/,\n cvv : /^([0-9]){3,4}$/,\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address\n email : /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,\n\n // From CommonRegexJS (@talyssonoc)\n // https://github.com/talyssonoc/CommonRegexJS/blob/e2901b9f57222bc14069dc8f0598d5f412555411/lib/commonregex.js#L76\n // For more restrictive URL Regexs, see https://mathiasbynens.be/demo/url-regex.\n url: /^((?:(https?|ftps?|file|ssh|sftp):\\/\\/|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]+|\\((?:[^\\s()<>]+|(?:\\([^\\s()<>]+\\)))*\\))+(?:\\((?:[^\\s()<>]+|(?:\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\\'\".,<>?\\xab\\xbb\\u201c\\u201d\\u2018\\u2019]))$/,\n\n // abc.de\n domain : /^([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,8}$/,\n\n datetime : /^([0-2][0-9]{3})\\-([0-1][0-9])\\-([0-3][0-9])T([0-5][0-9])\\:([0-5][0-9])\\:([0-5][0-9])(Z|([\\-\\+]([0-1][0-9])\\:00))$/,\n // YYYY-MM-DD\n date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,\n // HH:MM:SS\n time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,\n dateISO : /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/,\n // MM/DD/YYYY\n // eslint-disable-next-line camelcase\n month_day_year : /^(0[1-9]|1[012])[- \\/.](0[1-9]|[12][0-9]|3[01])[- \\/.]\\d{4}$/,\n // DD/MM/YYYY\n // eslint-disable-next-line camelcase\n day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \\/.](0[1-9]|1[012])[- \\/.]\\d{4}$/,\n\n // #FFF or #FFFFFF\n color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,\n\n // Domain || URL\n website: {\n test: (text) => {\n return Abide.defaults.patterns.domain.test(text) || Abide.defaults.patterns.url.test(text);\n }\n }\n },\n\n /**\n * Optional validation functions to be used. `equalTo` being the only default included function.\n * Functions should return only a boolean if the input is valid or not. Functions are given the following arguments:\n * el : The jQuery element to validate.\n * @option\n */\n validators: {\n equalTo: function (el) {\n return $(`#${el.attr('data-equalto')}`).val() === el.val();\n }\n }\n}\n\nexport { Abide };\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\n\n/**\n * Accordion module.\n * @module foundation.accordion\n * @requires foundation.util.keyboard\n */\n\nclass Accordion extends Plugin {\n /**\n * Creates a new instance of an accordion.\n * @class\n * @name Accordion\n * @fires Accordion#init\n * @param {jQuery} element - jQuery object to make into an accordion.\n * @param {Object} options - a plain object with settings to override the default options.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Accordion.defaults, this.$element.data(), options);\n\n this.className = 'Accordion'; // ie9 back compat\n this._init();\n\n Keyboard.register('Accordion', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_DOWN': 'next',\n 'ARROW_UP': 'previous',\n 'HOME': 'first',\n 'END': 'last',\n });\n }\n\n /**\n * Initializes the accordion by animating the preset active pane(s).\n * @private\n */\n _init() {\n this._isInitializing = true;\n\n this.$tabs = this.$element.children('[data-accordion-item]');\n\n\n this.$tabs.each(function(idx, el) {\n var $el = $(el),\n $content = $el.children('[data-tab-content]'),\n id = $content[0].id || GetYoDigits(6, 'accordion'),\n linkId = (el.id) ? `${el.id}-label` : `${id}-label`;\n\n $el.find('a:first').attr({\n 'aria-controls': id,\n 'id': linkId,\n 'aria-expanded': false\n });\n\n $content.attr({'role': 'region', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id});\n });\n\n var $initActive = this.$element.find('.is-active').children('[data-tab-content]');\n if ($initActive.length) {\n // Save up the initial hash to return to it later when going back in history\n this._initialAnchor = $initActive.prev('a').attr('href');\n this._openSingleTab($initActive);\n }\n\n this._checkDeepLink = () => {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n // If we are still initializing and there is no anchor, then there is nothing to do\n if (this._isInitializing) return;\n // Otherwise, move to the initial anchor\n if (this._initialAnchor) anchor = this._initialAnchor;\n }\n\n var $anchor = anchor && $(anchor);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"]`);\n // Whether the anchor element that has been found is part of this element\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n // If there is an anchor for the hash, open it (if not already active)\n if ($anchor && $link && $link.length) {\n if (!$link.parent('[data-accordion-item]').hasClass('is-active')) {\n this._openSingleTab($anchor);\n }\n }\n // Otherwise, close everything\n else {\n this._closeAllTabs();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n onLoad($(window), () => {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset }, this.options.deepLinkSmudgeDelay);\n });\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Accordion#deeplink\n */\n this.$element.trigger('deeplink.zf.accordion', [$link, $anchor]);\n }\n }\n\n //use browser to open a tab, if it exists in this tabset\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n\n /**\n * Adds event handlers for items within the accordion.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$tabs.each(function() {\n var $elem = $(this);\n var $tabContent = $elem.children('[data-tab-content]');\n if ($tabContent.length) {\n $elem.children('a').off('click.zf.accordion keydown.zf.accordion')\n .on('click.zf.accordion', function(e) {\n e.preventDefault();\n _this.toggle($tabContent);\n }).on('keydown.zf.accordion', function(e) {\n Keyboard.handleKey(e, 'Accordion', {\n toggle: function() {\n _this.toggle($tabContent);\n },\n next: function() {\n var $a = $elem.next().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n previous: function() {\n var $a = $elem.prev().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n first: function() {\n var $a = _this.$tabs.first().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n last: function() {\n var $a = _this.$tabs.last().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n });\n if (this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Toggles the selected content pane's open/close state.\n * @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`).\n * @function\n */\n toggle($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot toggle an accordion that is disabled.');\n return;\n }\n if ($target.parent().hasClass('is-active')) {\n this.up($target);\n } else {\n this.down($target);\n }\n //either replace or update browser history\n if (this.options.deepLink) {\n var anchor = $target.prev('a').attr('href');\n\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n }\n\n /**\n * Opens the accordion tab defined by `$target`.\n * @param {jQuery} $target - Accordion pane to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n */\n down($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot call down on an accordion that is disabled.');\n return;\n }\n\n if (this.options.multiExpand)\n this._openTab($target);\n else\n this._openSingleTab($target);\n }\n\n /**\n * Closes the tab defined by `$target`.\n * It may be ignored if the Accordion options don't allow it.\n *\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n */\n up($target) {\n if (this.$element.is('[disabled]')) {\n console.info('Cannot call up on an accordion that is disabled.');\n return;\n }\n\n // Don't close the item if it is already closed\n const $targetItem = $target.parent();\n if (!$targetItem.hasClass('is-active')) return;\n\n // Don't close the item if there is no other active item (unless with `allowAllClosed`)\n const $othersItems = $targetItem.siblings();\n if (!this.options.allowAllClosed && !$othersItems.hasClass('is-active')) return;\n\n this._closeTab($target);\n }\n\n /**\n * Make the tab defined by `$target` the only opened tab, closing all others tabs.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @function\n * @private\n */\n _openSingleTab($target) {\n // Close all the others active tabs.\n const $activeContents = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeContents.length) {\n this._closeTab($activeContents.not($target));\n }\n\n // Then open the target.\n this._openTab($target);\n }\n\n /**\n * Opens the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n * @private\n */\n _openTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', false);\n $targetItem.addClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': true\n });\n\n $target.finish().slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done opening.\n * @event Accordion#down\n */\n this.$element.trigger('down.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', true)\n $targetItem.removeClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': false\n });\n\n $target.finish().slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done collapsing up.\n * @event Accordion#up\n */\n this.$element.trigger('up.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes all active tabs\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeAllTabs() {\n var $activeTabs = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeTabs.length) {\n this._closeTab($activeTabs);\n }\n }\n\n /**\n * Destroys an instance of an accordion.\n * @fires Accordion#destroyed\n * @function\n */\n _destroy() {\n this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');\n this.$element.find('a').off('.zf.accordion');\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n }\n}\n\nAccordion.defaults = {\n /**\n * Amount of time to animate the opening of an accordion pane.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Allow the accordion to have multiple open panes.\n * @option\n * @type {boolean}\n * @default false\n */\n multiExpand: false,\n /**\n * Allow the accordion to close all panes.\n * @option\n * @type {boolean}\n * @default false\n */\n allowAllClosed: false,\n /**\n * Link the location hash to the open pane.\n * Set the location hash when the opened pane changes, and open and scroll to the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the accordion panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n /**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */\n deepLinkSmudgeDelay: 300,\n /**\n * If `deepLinkSmudge` is enabled, the offset for scrollToTtop to prevent overlap by a sticky element at the top of the page\n * @option\n * @type {number}\n * @default 0\n */\n deepLinkSmudgeOffset: 0,\n /**\n * If `deepLink` is enabled, update the browser history with the open accordion\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false\n};\n\nexport { Accordion };\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * AccordionMenu module.\n * @module foundation.accordionMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n */\n\nclass AccordionMenu extends Plugin {\n /**\n * Creates a new instance of an accordion menu.\n * @class\n * @name AccordionMenu\n * @fires AccordionMenu#init\n * @param {jQuery} element - jQuery object to make into an accordion menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, AccordionMenu.defaults, this.$element.data(), options);\n this.className = 'AccordionMenu'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('AccordionMenu', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_RIGHT': 'open',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'close',\n 'ESCAPE': 'closeAll'\n });\n }\n\n\n\n /**\n * Initializes the accordion menu by hiding all nested menus.\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'accordion');\n\n var _this = this;\n\n this.$element.find('[data-submenu]').not('.is-active').slideUp(0);//.find('a').css('padding-left', '1rem');\n this.$element.attr({\n 'aria-multiselectable': this.options.multiOpen\n });\n\n this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');\n this.$menuLinks.each(function() {\n var linkId = this.id || GetYoDigits(6, 'acc-menu-link'),\n $elem = $(this),\n $sub = $elem.children('[data-submenu]'),\n subId = $sub[0].id || GetYoDigits(6, 'acc-menu'),\n isActive = $sub.hasClass('is-active');\n\n if (_this.options.parentLink) {\n let $anchor = $elem.children('a');\n $anchor.clone().prependTo($sub).wrap('<li data-is-parent-link class=\"is-submenu-parent-item is-submenu-item is-accordion-submenu-item\"></li>');\n }\n\n if (_this.options.submenuToggle) {\n $elem.addClass('has-submenu-toggle');\n $elem.children('a').after('<button id=\"' + linkId + '\" class=\"submenu-toggle\" aria-controls=\"' + subId + '\" aria-expanded=\"' + isActive + '\" title=\"' + _this.options.submenuToggleText + '\"><span class=\"submenu-toggle-text\">' + _this.options.submenuToggleText + '</span></button>');\n } else {\n $elem.attr({\n 'aria-controls': subId,\n 'aria-expanded': isActive,\n 'id': linkId\n });\n }\n $sub.attr({\n 'aria-labelledby': linkId,\n 'aria-hidden': !isActive,\n 'role': 'group',\n 'id': subId\n });\n });\n var initPanes = this.$element.find('.is-active');\n if (initPanes.length) {\n initPanes.each(function() {\n _this.down($(this));\n });\n }\n this._events();\n }\n\n /**\n * Adds event handlers for items within the menu.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.find('li').each(function() {\n var $submenu = $(this).children('[data-submenu]');\n\n if ($submenu.length) {\n if (_this.options.submenuToggle) {\n $(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function() {\n _this.toggle($submenu);\n });\n } else {\n $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {\n e.preventDefault();\n _this.toggle($submenu);\n });\n }\n }\n }).on('keydown.zf.accordionMenu', function(e) {\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement,\n $target = $element.children('[data-submenu]');\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1)).find('a').first();\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1)).find('a').first();\n\n if ($(this).children('[data-submenu]:visible').length) { // has open sub menu\n $nextElement = $element.find('li:first-child').find('a').first();\n }\n if ($(this).is(':first-child')) { // is first element of sub menu\n $prevElement = $element.parents('li').first().find('a').first();\n } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) { // if previous element has open sub menu\n $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();\n }\n if ($(this).is(':last-child')) { // is last element of sub menu\n $nextElement = $element.parents('li').first().next('li').find('a').first();\n }\n\n return;\n }\n });\n\n Keyboard.handleKey(e, 'AccordionMenu', {\n open: function() {\n if ($target.is(':hidden')) {\n _this.down($target);\n $target.find('li').first().find('a').first().focus();\n }\n },\n close: function() {\n if ($target.length && !$target.is(':hidden')) { // close active sub of this item\n _this.up($target);\n } else if ($element.parent('[data-submenu]').length) { // close currently open sub\n _this.up($element.parent('[data-submenu]'));\n $element.parents('li').first().find('a').first().focus();\n }\n },\n up: function() {\n $prevElement.focus();\n return true;\n },\n down: function() {\n $nextElement.focus();\n return true;\n },\n toggle: function() {\n if (_this.options.submenuToggle) {\n return false;\n }\n if ($element.children('[data-submenu]').length) {\n _this.toggle($element.children('[data-submenu]'));\n return true;\n }\n },\n closeAll: function() {\n _this.hideAll();\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n });//.attr('tabindex', 0);\n }\n\n /**\n * Closes all panes of the menu.\n * @function\n */\n hideAll() {\n this.up(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Opens all panes of the menu.\n * @function\n */\n showAll() {\n this.down(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Toggles the open/close state of a submenu.\n * @function\n * @param {jQuery} $target - the submenu to toggle\n */\n toggle($target) {\n if (!$target.is(':animated')) {\n if (!$target.is(':hidden')) {\n this.up($target);\n }\n else {\n this.down($target);\n }\n }\n }\n\n /**\n * Opens the sub-menu defined by `$target`.\n * @param {jQuery} $target - Sub-menu to open.\n * @fires AccordionMenu#down\n */\n down($target) {\n // If having multiple submenus active is disabled, close all the submenus\n // that are not parents or children of the targeted submenu.\n if (!this.options.multiOpen) {\n // The \"branch\" of the targetted submenu, from the component root to\n // the active submenus nested in it.\n const $targetBranch = $target.parentsUntil(this.$element)\n .add($target)\n .add($target.find('.is-active'));\n // All the active submenus that are not in the branch.\n const $othersActiveSubmenus = this.$element.find('.is-active').not($targetBranch);\n\n this.up($othersActiveSubmenus);\n }\n\n $target\n .addClass('is-active')\n .attr({ 'aria-hidden': false });\n\n if (this.options.submenuToggle) {\n $target.prev('.submenu-toggle').attr({'aria-expanded': true});\n }\n else {\n $target.parent('.is-accordion-submenu-parent').attr({'aria-expanded': true});\n }\n\n $target.slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done opening.\n * @event AccordionMenu#down\n */\n this.$element.trigger('down.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.\n * @param {jQuery} $target - Sub-menu to close.\n * @fires AccordionMenu#up\n */\n up($target) {\n const $submenus = $target.find('[data-submenu]');\n const $allmenus = $target.add($submenus);\n\n $submenus.slideUp(0);\n $allmenus\n .removeClass('is-active')\n .attr('aria-hidden', true);\n\n if (this.options.submenuToggle) {\n $allmenus.prev('.submenu-toggle').attr('aria-expanded', false);\n }\n else {\n $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);\n }\n\n $target.slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done collapsing up.\n * @event AccordionMenu#up\n */\n this.$element.trigger('up.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Destroys an instance of accordion menu.\n * @fires AccordionMenu#destroyed\n */\n _destroy() {\n this.$element.find('[data-submenu]').slideDown(0).css('display', '');\n this.$element.find('a').off('click.zf.accordionMenu');\n this.$element.find('[data-is-parent-link]').detach();\n\n if (this.options.submenuToggle) {\n this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle');\n this.$element.find('.submenu-toggle').remove();\n }\n\n Nest.Burn(this.$element, 'accordion');\n }\n}\n\nAccordionMenu.defaults = {\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Amount of time to animate the opening of a submenu in ms.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Adds a separate submenu toggle button. This allows the parent item to have a link.\n * @option\n * @example true\n */\n submenuToggle: false,\n /**\n * The text used for the submenu toggle if enabled. This is used for screen readers only.\n * @option\n * @example true\n */\n submenuToggleText: 'Toggle menu',\n /**\n * Allow the menu to have multiple open panes.\n * @option\n * @type {boolean}\n * @default true\n */\n multiOpen: true\n};\n\nexport { AccordionMenu };\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits, transitionend } from './foundation.core.utils';\nimport { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Drilldown module.\n * @module foundation.drilldown\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n * @requires foundation.util.box\n */\n\nclass Drilldown extends Plugin {\n /**\n * Creates a new instance of a drilldown menu.\n * @class\n * @name Drilldown\n * @param {jQuery} element - jQuery object to make into an accordion menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Drilldown.defaults, this.$element.data(), options);\n this.className = 'Drilldown'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('Drilldown', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the drilldown by creating jQuery collections of elements\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'drilldown');\n\n if(this.options.autoApplyClass) {\n this.$element.addClass('drilldown');\n }\n\n this.$element.attr({\n 'aria-multiselectable': false\n });\n this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a');\n this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group');\n this.$menuItems = this.$element.find('li').not('.js-drilldown-back').find('a');\n\n // Set the main menu as current by default (unless a submenu is selected)\n // Used to set the wrapper height when the drilldown is closed/reopened from any (sub)menu\n this.$currentMenu = this.$element;\n\n this.$element.attr('data-mutate', (this.$element.attr('data-drilldown') || GetYoDigits(6, 'drilldown')));\n\n this._prepareMenu();\n this._registerEvents();\n\n this._keyboardEvents();\n }\n\n /**\n * prepares drilldown menu by setting attributes to links and elements\n * sets a min height to prevent content jumping\n * wraps the element if not already wrapped\n * @private\n * @function\n */\n _prepareMenu() {\n var _this = this;\n // if(!this.options.holdOpen){\n // this._menuLinkEvents();\n // }\n this.$submenuAnchors.each(function(){\n var $link = $(this);\n var $sub = $link.parent();\n if(_this.options.parentLink){\n $link.clone().prependTo($sub.children('[data-submenu]')).wrap('<li data-is-parent-link class=\"is-submenu-parent-item is-submenu-item is-drilldown-submenu-item\" role=\"none\"></li>');\n }\n $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0);\n $link.children('[data-submenu]')\n .attr({\n 'aria-hidden': true,\n 'tabindex': 0,\n 'role': 'group'\n });\n _this._events($link);\n });\n this.$submenus.each(function(){\n var $menu = $(this),\n $back = $menu.find('.js-drilldown-back');\n if(!$back.length){\n switch (_this.options.backButtonPosition) {\n case \"bottom\":\n $menu.append(_this.options.backButton);\n break;\n case \"top\":\n $menu.prepend(_this.options.backButton);\n break;\n default:\n console.error(\"Unsupported backButtonPosition value '\" + _this.options.backButtonPosition + \"'\");\n }\n }\n _this._back($menu);\n });\n\n this.$submenus.addClass('invisible');\n if(!this.options.autoHeight) {\n this.$submenus.addClass('drilldown-submenu-cover-previous');\n }\n\n // create a wrapper on element if it doesn't exist.\n if(!this.$element.parent().hasClass('is-drilldown')){\n this.$wrapper = $(this.options.wrapper).addClass('is-drilldown');\n if(this.options.animateHeight) this.$wrapper.addClass('animate-height');\n this.$element.wrap(this.$wrapper);\n }\n // set wrapper\n this.$wrapper = this.$element.parent();\n this.$wrapper.css(this._getMaxDims());\n }\n\n _resize() {\n this.$wrapper.css({'max-width': 'none', 'min-height': 'none'});\n // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths\n this.$wrapper.css(this._getMaxDims());\n }\n\n /**\n * Adds event handlers to elements in the menu.\n * @function\n * @private\n * @param {jQuery} $elem - the current menu item to add handlers to.\n */\n _events($elem) {\n var _this = this;\n\n $elem.off('click.zf.drilldown')\n .on('click.zf.drilldown', function(e) {\n if($(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')){\n e.preventDefault();\n }\n\n // if(e.target !== e.currentTarget.firstElementChild){\n // return false;\n // }\n _this._show($elem.parent('li'));\n\n if(_this.options.closeOnClick){\n var $body = $('body');\n $body.off('.zf.drilldown').on('click.zf.drilldown', function(ev) {\n if (ev.target === _this.$element[0] || $.contains(_this.$element[0], ev.target)) { return; }\n ev.preventDefault();\n _this._hideAll();\n $body.off('.zf.drilldown');\n });\n }\n });\n }\n\n /**\n * Adds event handlers to the menu element.\n * @function\n * @private\n */\n _registerEvents() {\n if(this.options.scrollTop){\n this._bindHandler = this._scrollTop.bind(this);\n this.$element.on('open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown',this._bindHandler);\n }\n this.$element.on('mutateme.zf.trigger', this._resize.bind(this));\n }\n\n /**\n * Scroll to Top of Element or data-scroll-top-element\n * @function\n * @fires Drilldown#scrollme\n */\n _scrollTop() {\n var _this = this;\n var $scrollTopElement = _this.options.scrollTopElement !== ''?$(_this.options.scrollTopElement):_this.$element,\n scrollPos = parseInt($scrollTopElement.offset().top+_this.options.scrollTopOffset, 10);\n $('html, body').stop(true).animate({ scrollTop: scrollPos }, _this.options.animationDuration, _this.options.animationEasing,function(){\n /**\n * Fires after the menu has scrolled\n * @event Drilldown#scrollme\n */\n if(this===$('html')[0])_this.$element.trigger('scrollme.zf.drilldown');\n });\n }\n\n /**\n * Adds keydown event listener to `li`'s in the menu.\n * @private\n */\n _keyboardEvents() {\n var _this = this;\n\n this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function(e){\n var $element = $(this),\n $elements = $element.parent('li').parent('ul').children('li').children('a'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n return;\n }\n });\n\n Keyboard.handleKey(e, 'Drilldown', {\n next: function() {\n if ($element.is(_this.$submenuAnchors)) {\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n previous: function() {\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n },\n up: function() {\n $prevElement.focus();\n // Don't tap focus on first element in root ul\n return !$element.is(_this.$element.find('> li:first-child > a'));\n },\n down: function() {\n $nextElement.focus();\n // Don't tap focus on last element in root ul\n return !$element.is(_this.$element.find('> li:last-child > a'));\n },\n close: function() {\n // Don't close on element in root ul\n if (!$element.is(_this.$element.find('> li > a'))) {\n _this._hide($element.parent().parent());\n $element.parent().parent().siblings('a').focus();\n }\n },\n open: function() {\n if (_this.options.parentLink && $element.attr('href')) { // Link with href\n return false;\n } else if (!$element.is(_this.$menuItems)) { // not menu item means back button\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n } else if ($element.is(_this.$submenuAnchors)) { // Sub menu item\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n }); // end keyboardAccess\n }\n\n /**\n * Closes all open elements, and returns to root menu.\n * @function\n * @fires Drilldown#close\n * @fires Drilldown#closed\n */\n _hideAll() {\n var $elem = this.$element.find('.is-drilldown-submenu.is-active')\n $elem.addClass('is-closing');\n\n if (this.options.autoHeight) {\n const calcHeight = $elem.parent().closest('ul').data('calcHeight');\n this.$wrapper.css({ height: calcHeight });\n }\n\n /**\n * Fires when the menu is closing.\n * @event Drilldown#close\n */\n this.$element.trigger('close.zf.drilldown');\n\n $elem.one(transitionend($elem), () => {\n $elem.removeClass('is-active is-closing');\n\n /**\n * Fires when the menu is fully closed.\n * @event Drilldown#closed\n */\n this.$element.trigger('closed.zf.drilldown');\n });\n }\n\n /**\n * Adds event listener for each `back` button, and closes open menus.\n * @function\n * @fires Drilldown#back\n * @param {jQuery} $elem - the current sub-menu to add `back` event.\n */\n _back($elem) {\n var _this = this;\n $elem.off('click.zf.drilldown');\n $elem.children('.js-drilldown-back')\n .on('click.zf.drilldown', function() {\n _this._hide($elem);\n\n // If there is a parent submenu, call show\n let parentSubMenu = $elem.parent('li').parent('ul').parent('li');\n if (parentSubMenu.length) {\n _this._show(parentSubMenu);\n }\n else {\n _this.$currentMenu = _this.$element;\n }\n });\n }\n\n /**\n * Adds event listener to menu items w/o submenus to close open menus on click.\n * @function\n * @private\n */\n _menuLinkEvents() {\n var _this = this;\n this.$menuItems.not('.is-drilldown-submenu-parent')\n .off('click.zf.drilldown')\n .on('click.zf.drilldown', function() {\n setTimeout(function() {\n _this._hideAll();\n }, 0);\n });\n }\n\n /**\n * Sets the CSS classes for submenu to show it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setShowSubMenuClasses($elem, trigger) {\n $elem.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);\n $elem.parent('li').attr('aria-expanded', true);\n if (trigger === true) {\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Sets the CSS classes for submenu to hide it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setHideSubMenuClasses($elem, trigger) {\n $elem.removeClass('is-active').addClass('invisible').attr('aria-hidden', true);\n $elem.parent('li').attr('aria-expanded', false);\n if (trigger === true) {\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Opens a specific drilldown (sub)menu no matter which (sub)menu in it is currently visible.\n * Compared to _show() this lets you jump into any submenu without clicking through every submenu on the way to it.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the target (sub)menu (`ul` tag)\n * @param {boolean} autoFocus - if true the first link in the target (sub)menu gets auto focused\n */\n _showMenu($elem, autoFocus) {\n\n var _this = this;\n\n // Reset drilldown\n var $expandedSubmenus = this.$element.find('li[aria-expanded=\"true\"] > ul[data-submenu]');\n $expandedSubmenus.each(function() {\n _this._setHideSubMenuClasses($(this));\n });\n\n // Save the menu as the currently displayed one.\n this.$currentMenu = $elem;\n\n // If target menu is root, focus first link & exit\n if ($elem.is('[data-drilldown]')) {\n if (autoFocus === true) $elem.find('li > a').first().focus();\n if (this.options.autoHeight) this.$wrapper.css('height', $elem.data('calcHeight'));\n return;\n }\n\n // Find all submenus on way to root incl. the element itself\n var $submenus = $elem.children().first().parentsUntil('[data-drilldown]', '[data-submenu]');\n\n // Open target menu and all submenus on its way to root\n $submenus.each(function(index) {\n\n // Update height of first child (target menu) if autoHeight option true\n if (index === 0 && _this.options.autoHeight) {\n _this.$wrapper.css('height', $(this).data('calcHeight'));\n }\n\n var isLastChild = index === $submenus.length - 1;\n\n // Add transitionsend listener to last child (root due to reverse order) to open target menu's first link\n // Last child makes sure the event gets always triggered even if going through several menus\n if (isLastChild === true) {\n $(this).one(transitionend($(this)), () => {\n if (autoFocus === true) {\n $elem.find('li > a').first().focus();\n }\n });\n }\n\n _this._setShowSubMenuClasses($(this), isLastChild);\n });\n }\n\n /**\n * Opens a submenu.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag.\n */\n _show($elem) {\n const $submenu = $elem.children('[data-submenu]');\n\n $elem.attr('aria-expanded', true);\n\n this.$currentMenu = $submenu;\n\n //hide drilldown parent menu when submenu is open\n // this removes it from the dom so that the tab key will take the user to the next visible element\n $elem.parent().closest('ul').addClass('invisible');\n\n // add visible class to submenu to override invisible class above\n $submenu.addClass('is-active visible').removeClass('invisible').attr('aria-hidden', false);\n\n if (this.options.autoHeight) {\n this.$wrapper.css({ height: $submenu.data('calcHeight') });\n }\n\n /**\n * Fires when the submenu has opened.\n * @event Drilldown#open\n */\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n\n /**\n * Hides a submenu\n * @function\n * @fires Drilldown#hide\n * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag.\n */\n _hide($elem) {\n if(this.options.autoHeight) this.$wrapper.css({height:$elem.parent().closest('ul').data('calcHeight')});\n $elem.parent().closest('ul').removeClass('invisible');\n $elem.parent('li').attr('aria-expanded', false);\n $elem.attr('aria-hidden', true);\n $elem.addClass('is-closing')\n .one(transitionend($elem), function(){\n $elem.removeClass('is-active is-closing visible');\n $elem.blur().addClass('invisible');\n });\n /**\n * Fires when the submenu has closed.\n * @event Drilldown#hide\n */\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n\n /**\n * Iterates through the nested menus to calculate the min-height, and max-width for the menu.\n * Prevents content jumping.\n * @function\n * @private\n */\n _getMaxDims() {\n var maxHeight = 0, result = {}, _this = this;\n\n // Recalculate menu heights and total max height\n this.$submenus.add(this.$element).each(function(){\n var height = Box.GetDimensions(this).height;\n\n maxHeight = height > maxHeight ? height : maxHeight;\n\n if(_this.options.autoHeight) {\n $(this).data('calcHeight',height);\n }\n });\n\n if (this.options.autoHeight)\n result.height = this.$currentMenu.data('calcHeight');\n else\n result['min-height'] = `${maxHeight}px`;\n\n result['max-width'] = `${this.$element[0].getBoundingClientRect().width}px`;\n\n return result;\n }\n\n /**\n * Destroys the Drilldown Menu\n * @function\n */\n _destroy() {\n $('body').off('.zf.drilldown');\n if(this.options.scrollTop) this.$element.off('.zf.drilldown',this._bindHandler);\n this._hideAll();\n\t this.$element.off('mutateme.zf.trigger');\n Nest.Burn(this.$element, 'drilldown');\n this.$element.unwrap()\n .find('.js-drilldown-back, .is-submenu-parent-item').remove()\n .end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').off('transitionend otransitionend webkitTransitionEnd')\n .end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');\n this.$submenuAnchors.each(function() {\n $(this).off('.zf.drilldown');\n });\n\n this.$element.find('[data-is-parent-link]').detach();\n this.$submenus.removeClass('drilldown-submenu-cover-previous invisible');\n\n this.$element.find('a').each(function(){\n var $link = $(this);\n $link.removeAttr('tabindex');\n if($link.data('savedHref')){\n $link.attr('href', $link.data('savedHref')).removeData('savedHref');\n }else{ return; }\n });\n };\n}\n\nDrilldown.defaults = {\n /**\n * Drilldowns depend on styles in order to function properly; in the default build of Foundation these are\n * on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization.\n * @option\n * @type {boolean}\n * @default true\n */\n autoApplyClass: true,\n /**\n * Markup used for JS generated back button. Prepended or appended (see backButtonPosition) to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '<li class=\"js-drilldown-back\"><a tabindex=\"0\">Back</a></li>'\n */\n backButton: '<li class=\"js-drilldown-back\"><a tabindex=\"0\">Back</a></li>',\n /**\n * Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`.\n * @option\n * @type {string}\n * @default top\n */\n backButtonPosition: 'top',\n /**\n * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '<div></div>'\n */\n wrapper: '<div></div>',\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Allow the menu to return to root list on body click.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * Allow the menu to auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n autoHeight: false,\n /**\n * Animate the auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n animateHeight: false,\n /**\n * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button\n * @option\n * @type {boolean}\n * @default false\n */\n scrollTop: false,\n /**\n * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken\n * @option\n * @type {string}\n * @default ''\n */\n scrollTopElement: '',\n /**\n * ScrollTop offset\n * @option\n * @type {number}\n * @default 0\n */\n scrollTopOffset: 0,\n /**\n * Scroll animation duration\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Scroll animation easing. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @see {@link https://api.jquery.com/animate|JQuery animate}\n * @default 'swing'\n */\n animationEasing: 'swing'\n // holdOpen: false\n};\n\nexport {Drilldown};\n","import { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst POSITIONS = ['left', 'right', 'top', 'bottom'];\nconst VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center'];\nconst HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center'];\n\nconst ALIGNMENTS = {\n 'left': VERTICAL_ALIGNMENTS,\n 'right': VERTICAL_ALIGNMENTS,\n 'top': HORIZONTAL_ALIGNMENTS,\n 'bottom': HORIZONTAL_ALIGNMENTS\n}\n\nfunction nextItem(item, array) {\n var currentIdx = array.indexOf(item);\n if(currentIdx === array.length - 1) {\n return array[0];\n } else {\n return array[currentIdx + 1];\n }\n}\n\n\nclass Positionable extends Plugin {\n /**\n * Abstract class encapsulating the tether-like explicit positioning logic\n * including repositioning based on overlap.\n * Expects classes to define defaults for vOffset, hOffset, position,\n * alignment, allowOverlap, and allowBottomOverlap. They can do this by\n * extending the defaults, or (for now recommended due to the way docs are\n * generated) by explicitly declaring them.\n *\n **/\n\n _init() {\n this.triedPositions = {};\n this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position;\n this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment;\n this.originalPosition = this.position;\n this.originalAlignment = this.alignment;\n }\n\n _getDefaultPosition () {\n return 'bottom';\n }\n\n _getDefaultAlignment() {\n switch(this.position) {\n case 'bottom':\n case 'top':\n return Rtl() ? 'right' : 'left';\n case 'left':\n case 'right':\n return 'bottom';\n }\n }\n\n /**\n * Adjusts the positionable possible positions by iterating through alignments\n * and positions.\n * @function\n * @private\n */\n _reposition() {\n if(this._alignmentsExhausted(this.position)) {\n this.position = nextItem(this.position, POSITIONS);\n this.alignment = ALIGNMENTS[this.position][0];\n } else {\n this._realign();\n }\n }\n\n /**\n * Adjusts the dropdown pane possible positions by iterating through alignments\n * on the current position.\n * @function\n * @private\n */\n _realign() {\n this._addTriedPosition(this.position, this.alignment)\n this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position])\n }\n\n _addTriedPosition(position, alignment) {\n this.triedPositions[position] = this.triedPositions[position] || []\n this.triedPositions[position].push(alignment);\n }\n\n _positionsExhausted() {\n var isExhausted = true;\n for(var i = 0; i < POSITIONS.length; i++) {\n isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]);\n }\n return isExhausted;\n }\n\n _alignmentsExhausted(position) {\n return this.triedPositions[position] && this.triedPositions[position].length === ALIGNMENTS[position].length;\n }\n\n\n // When we're trying to center, we don't want to apply offset that's going to\n // take us just off center, so wrap around to return 0 for the appropriate\n // offset in those alignments. TODO: Figure out if we want to make this\n // configurable behavior... it feels more intuitive, especially for tooltips, but\n // it's possible someone might actually want to start from center and then nudge\n // slightly off.\n _getVOffset() {\n return this.options.vOffset;\n }\n\n _getHOffset() {\n return this.options.hOffset;\n }\n\n _setPosition($anchor, $element, $parent) {\n if($anchor.attr('aria-expanded') === 'false'){ return false; }\n\n if (!this.options.allowOverlap) {\n // restore original position & alignment before checking overlap\n this.position = this.originalPosition;\n this.alignment = this.originalAlignment;\n }\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n\n if(!this.options.allowOverlap) {\n var minOverlap = 100000000;\n // default coordinates to how we start, in case we can't figure out better\n var minCoordinates = {position: this.position, alignment: this.alignment};\n while(!this._positionsExhausted()) {\n let overlap = Box.OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap);\n if(overlap === 0) {\n return;\n }\n\n if(overlap < minOverlap) {\n minOverlap = overlap;\n minCoordinates = {position: this.position, alignment: this.alignment};\n }\n\n this._reposition();\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n // If we get through the entire loop, there was no non-overlapping\n // position available. Pick the version with least overlap.\n this.position = minCoordinates.position;\n this.alignment = minCoordinates.alignment;\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n }\n\n}\n\nPositionable.defaults = {\n /**\n * Position of positionable relative to anchor. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of positionable relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown positionable first\n * try to position as defined by data-position and data-alignment, but\n * reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Number of pixels the positionable should be separated vertically from anchor\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels the positionable should be separated horizontally from anchor\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n}\n\nexport {Positionable};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { Positionable } from './foundation.positionable';\n\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Dropdown module.\n * @module foundation.dropdown\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n */\nclass Dropdown extends Positionable {\n /**\n * Creates a new instance of a dropdown.\n * @class\n * @name Dropdown\n * @param {jQuery} element - jQuery object to make into a dropdown.\n * Object should be of the dropdown panel, rather than its anchor.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Dropdown.defaults, this.$element.data(), options);\n this.className = 'Dropdown'; // ie9 back compat\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n this._init();\n\n Keyboard.register('Dropdown', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor.\n * @function\n * @private\n */\n _init() {\n var $id = this.$element.attr('id');\n\n this.$anchors = $(`[data-toggle=\"${$id}\"]`).length ? $(`[data-toggle=\"${$id}\"]`) : $(`[data-open=\"${$id}\"]`);\n this.$anchors.attr({\n 'aria-controls': $id,\n 'data-is-focus': false,\n 'data-yeti-box': $id,\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n\n this._setCurrentAnchor(this.$anchors.first());\n\n if(this.options.parentClass){\n this.$parent = this.$element.parents('.' + this.options.parentClass);\n }else{\n this.$parent = null;\n }\n\n // Set [aria-labelledby] on the Dropdown if it is not set\n if (typeof this.$element.attr('aria-labelledby') === 'undefined') {\n // Get the anchor ID or create one\n if (typeof this.$currentAnchor.attr('id') === 'undefined') {\n this.$currentAnchor.attr('id', GetYoDigits(6, 'dd-anchor'));\n }\n\n this.$element.attr('aria-labelledby', this.$currentAnchor.attr('id'));\n }\n\n this.$element.attr({\n 'aria-hidden': 'true',\n 'data-yeti-box': $id,\n 'data-resize': $id,\n });\n\n super._init();\n this._events();\n }\n\n _getDefaultPosition() {\n // handle legacy classnames\n var position = this.$element[0].className.match(/(top|left|right|bottom)/g);\n if(position) {\n return position[0];\n } else {\n return 'bottom'\n }\n }\n\n _getDefaultAlignment() {\n // handle legacy float approach\n var horizontalPosition = /float-(\\S+)/.exec(this.$currentAnchor.attr('class'));\n if(horizontalPosition) {\n return horizontalPosition[1];\n }\n\n return super._getDefaultAlignment();\n }\n\n\n\n /**\n * Sets the position and orientation of the dropdown pane, checks for collisions if allow-overlap is not true.\n * Recursively calls itself if a collision is detected, with a new position class.\n * @function\n * @private\n */\n _setPosition() {\n this.$element.removeClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n super._setPosition(this.$currentAnchor, this.$element, this.$parent);\n this.$element.addClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n }\n\n /**\n * Make it a current anchor.\n * Current anchor as the reference for the position of Dropdown panes.\n * @param {HTML} el - DOM element of the anchor.\n * @function\n * @private\n */\n _setCurrentAnchor(el) {\n this.$currentAnchor = $(el);\n }\n\n /**\n * Adds event listeners to the element utilizing the triggers utility library.\n * @function\n * @private\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': this._setPosition.bind(this)\n });\n\n this.$anchors.off('click.zf.trigger')\n .on('click.zf.trigger', function(e) {\n _this._setCurrentAnchor(this);\n\n if (\n // if forceFollow false, always prevent default action\n (_this.options.forceFollow === false) ||\n // if forceFollow true and hover option true, only prevent default action on 1st click\n // on 2nd click (dropown opened) the default action (e.g. follow a href) gets executed\n (hasTouch && _this.options.hover && _this.$element.hasClass('is-open') === false)\n ) {\n e.preventDefault();\n }\n });\n\n if(this.options.hover){\n this.$anchors.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n _this._setCurrentAnchor(this);\n\n var bodyData = $('body').data();\n if(typeof(bodyData.whatinput) === 'undefined' || bodyData.whatinput === 'mouse') {\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.open();\n _this.$anchors.data('hover', true);\n }, _this.options.hoverDelay);\n }\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n if(this.options.hoverPane){\n this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n clearTimeout(_this.timeout);\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n }\n }\n this.$anchors.add(this.$element).on('keydown.zf.dropdown', function(e) {\n\n var $target = $(this);\n\n Keyboard.handleKey(e, 'Dropdown', {\n open: function() {\n if ($target.is(_this.$anchors) && !$target.is('input, textarea')) {\n _this.open();\n _this.$element.attr('tabindex', -1).focus();\n e.preventDefault();\n }\n },\n close: function() {\n _this.close();\n _this.$anchors.focus();\n }\n });\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n var $body = $(document.body).not(this.$element),\n _this = this;\n $body.off('click.zf.dropdown tap.zf.dropdown')\n .on('click.zf.dropdown tap.zf.dropdown', function (e) {\n if(_this.$anchors.is(e.target) || _this.$anchors.find(e.target).length) {\n return;\n }\n if(_this.$element.is(e.target) || _this.$element.find(e.target).length) {\n return;\n }\n _this.close();\n $body.off('click.zf.dropdown tap.zf.dropdown');\n });\n }\n\n /**\n * Opens the dropdown pane, and fires a bubbling event to close other dropdowns.\n * @function\n * @fires Dropdown#closeme\n * @fires Dropdown#show\n */\n open() {\n // var _this = this;\n /**\n * Fires to close other open dropdowns, typically when dropdown is opening\n * @event Dropdown#closeme\n */\n this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));\n this.$anchors.addClass('hover')\n .attr({'aria-expanded': true});\n // this.$element/*.show()*/;\n\n this.$element.addClass('is-opening');\n this._setPosition();\n this.$element.removeClass('is-opening').addClass('is-open')\n .attr({'aria-hidden': false});\n\n if(this.options.autoFocus){\n var $focusable = Keyboard.findFocusable(this.$element);\n if($focusable.length){\n $focusable.eq(0).focus();\n }\n }\n\n if(this.options.closeOnClick){ this._addBodyHandler(); }\n\n if (this.options.trapFocus) {\n Keyboard.trapFocus(this.$element);\n }\n\n /**\n * Fires once the dropdown is visible.\n * @event Dropdown#show\n */\n this.$element.trigger('show.zf.dropdown', [this.$element]);\n }\n\n /**\n * Closes the open dropdown pane.\n * @function\n * @fires Dropdown#hide\n */\n close() {\n if(!this.$element.hasClass('is-open')){\n return false;\n }\n this.$element.removeClass('is-open')\n .attr({'aria-hidden': true});\n\n this.$anchors.removeClass('hover')\n .attr('aria-expanded', false);\n\n /**\n * Fires once the dropdown is no longer visible.\n * @event Dropdown#hide\n */\n this.$element.trigger('hide.zf.dropdown', [this.$element]);\n\n if (this.options.trapFocus) {\n Keyboard.releaseFocus(this.$element);\n }\n }\n\n /**\n * Toggles the dropdown pane's visibility.\n * @function\n */\n toggle() {\n if(this.$element.hasClass('is-open')){\n if(this.$anchors.data('hover')) return;\n this.close();\n }else{\n this.open();\n }\n }\n\n /**\n * Destroys the dropdown.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.trigger').hide();\n this.$anchors.off('.zf.dropdown');\n $(document.body).off('click.zf.dropdown tap.zf.dropdown');\n\n }\n}\n\nDropdown.defaults = {\n /**\n * Class that designates bounding container of Dropdown (default: window)\n * @option\n * @type {?string}\n * @default null\n */\n parentClass: null,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 250\n */\n hoverDelay: 250,\n /**\n * Allow submenus to open on hover events\n * @option\n * @type {boolean}\n * @default false\n */\n hover: false,\n /**\n * Don't close dropdown when hovering over dropdown pane\n * @option\n * @type {boolean}\n * @default false\n */\n hoverPane: false,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n /**\n * Position of dropdown. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of dropdown relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown will first try to position as defined by data-position and data-alignment, but reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands.\n * @option\n * @type {boolean}\n * @default false\n */\n trapFocus: false,\n /**\n * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n /**\n * Allows a click on the body to close the dropdown.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * If true the default action of the toggle (e.g. follow a link with href) gets executed on click. If hover option is also true the default action gets prevented on first click for mobile / touch devices and executed on second click.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {Dropdown};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl, ignoreMousedisappear } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { Box } from './foundation.util.box';\nimport { Touch } from './foundation.util.touch'\n\n\n/**\n * DropdownMenu module.\n * @module foundation.dropdownMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.nest\n * @requires foundation.util.touch\n */\n\nclass DropdownMenu extends Plugin {\n /**\n * Creates a new instance of DropdownMenu.\n * @class\n * @name DropdownMenu\n * @fires DropdownMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, DropdownMenu.defaults, this.$element.data(), options);\n this.className = 'DropdownMenu'; // ie9 back compat\n\n Touch.init($); // Touch init is idempotent, we just need to make sure it's initialied.\n\n this._init();\n\n Keyboard.register('DropdownMenu', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin, and calls _prepareMenu\n * @private\n * @function\n */\n _init() {\n Nest.Feather(this.$element, 'dropdown');\n\n var subs = this.$element.find('li.is-dropdown-submenu-parent');\n this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');\n\n this.$menuItems = this.$element.find('li[role=\"none\"]');\n this.$tabs = this.$element.children('li[role=\"none\"]');\n this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);\n\n if (this.options.alignment === 'auto') {\n if (this.$element.hasClass(this.options.rightClass) || Rtl() || this.$element.parents('.top-bar-right').is('*')) {\n this.options.alignment = 'right';\n subs.addClass('opens-left');\n } else {\n this.options.alignment = 'left';\n subs.addClass('opens-right');\n }\n } else {\n if (this.options.alignment === 'right') {\n subs.addClass('opens-left');\n } else {\n subs.addClass('opens-right');\n }\n }\n this.changed = false;\n this._events();\n };\n\n _isVertical() {\n return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column';\n }\n\n _isRtl() {\n return this.$element.hasClass('align-right') || (Rtl() && !this.$element.hasClass('align-left'));\n }\n\n /**\n * Adds event listeners to elements within the menu\n * @private\n * @function\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined'),\n parClass = 'is-dropdown-submenu-parent';\n\n // used for onClick and in the keyboard handlers\n var handleClickFn = function(e) {\n var $elem = $(e.target).parentsUntil('ul', `.${parClass}`),\n hasSub = $elem.hasClass(parClass),\n hasClicked = $elem.attr('data-is-click') === 'true',\n $sub = $elem.children('.is-dropdown-submenu');\n\n if (hasSub) {\n if (hasClicked) {\n if (!_this.options.closeOnClick\n || (!_this.options.clickOpen && !hasTouch)\n || (_this.options.forceFollow && hasTouch)) {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._hide($elem);\n }\n else {\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._show($sub);\n $elem.add($elem.parentsUntil(_this.$element, `.${parClass}`)).attr('data-is-click', true);\n }\n }\n };\n\n if (this.options.clickOpen || hasTouch) {\n this.$menuItems.on('click.zf.dropdownMenu touchstart.zf.dropdownMenu', handleClickFn);\n }\n\n // Handle Leaf element Clicks\n if(_this.options.closeOnClickInside){\n this.$menuItems.on('click.zf.dropdownMenu', function() {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if(!hasSub){\n _this._hide();\n }\n });\n }\n\n if (hasTouch && this.options.disableHoverOnTouch) this.options.disableHover = true;\n\n if (!this.options.disableHover) {\n this.$menuItems.on('mouseenter.zf.dropdownMenu', function () {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n\n if (hasSub) {\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._show($elem.children('.is-dropdown-submenu'));\n }, _this.options.hoverDelay));\n }\n }).on('mouseleave.zf.dropdownMenu', ignoreMousedisappear(function () {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if (hasSub && _this.options.autoclose) {\n if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) { return false; }\n\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._hide($elem);\n }, _this.options.closingTime));\n }\n }));\n }\n this.$menuItems.on('keydown.zf.dropdownMenu', function(e) {\n var $element = $(e.target).parentsUntil('ul', '[role=\"none\"]'),\n isTab = _this.$tabs.index($element) > -1,\n $elements = isTab ? _this.$tabs : $element.siblings('li').add($element),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(i-1);\n $nextElement = $elements.eq(i+1);\n return;\n }\n });\n\n var nextSibling = function() {\n $nextElement.children('a:first').focus();\n e.preventDefault();\n }, prevSibling = function() {\n $prevElement.children('a:first').focus();\n e.preventDefault();\n }, openSub = function() {\n var $sub = $element.children('ul.is-dropdown-submenu');\n if ($sub.length) {\n _this._show($sub);\n $element.find('li > a:first').focus();\n e.preventDefault();\n } else { return; }\n }, closeSub = function() {\n //if ($element.is(':first-child')) {\n var close = $element.parent('ul').parent('li');\n close.children('a:first').focus();\n _this._hide(close);\n e.preventDefault();\n //}\n };\n var functions = {\n open: openSub,\n close: function() {\n _this._hide(_this.$element);\n _this.$menuItems.eq(0).children('a').focus(); // focus to first element\n e.preventDefault();\n }\n };\n\n if (isTab) {\n if (_this._isVertical()) { // vertical menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: closeSub,\n previous: openSub\n });\n } else { // left aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: openSub,\n previous: closeSub\n });\n }\n } else { // horizontal menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: prevSibling,\n previous: nextSibling,\n down: openSub,\n up: closeSub\n });\n } else { // left aligned\n $.extend(functions, {\n next: nextSibling,\n previous: prevSibling,\n down: openSub,\n up: closeSub\n });\n }\n }\n } else { // not tabs -> one sub\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: closeSub,\n previous: openSub,\n down: nextSibling,\n up: prevSibling\n });\n } else { // left aligned\n $.extend(functions, {\n next: openSub,\n previous: closeSub,\n down: nextSibling,\n up: prevSibling\n });\n }\n }\n Keyboard.handleKey(e, 'DropdownMenu', functions);\n\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n const $body = $(document.body);\n this._removeBodyHandler();\n $body.on('click.zf.dropdownMenu tap.zf.dropdownMenu', (e) => {\n var isItself = !!$(e.target).closest(this.$element).length;\n if (isItself) return;\n\n this._hide();\n this._removeBodyHandler();\n });\n }\n\n /**\n * Remove the body event handler. See `_addBodyHandler`.\n * @function\n * @private\n */\n _removeBodyHandler() {\n $(document.body).off('click.zf.dropdownMenu tap.zf.dropdownMenu');\n }\n\n /**\n * Opens a dropdown pane, and checks for collisions first.\n * @param {jQuery} $sub - ul element that is a submenu to show\n * @function\n * @private\n * @fires DropdownMenu#show\n */\n _show($sub) {\n var idx = this.$tabs.index(this.$tabs.filter(function(i, el) {\n return $(el).find($sub).length > 0;\n }));\n var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');\n this._hide($sibs, idx);\n $sub.css('visibility', 'hidden').addClass('js-dropdown-active')\n .parent('li.is-dropdown-submenu-parent').addClass('is-active');\n var clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n var oldClass = this.options.alignment === 'left' ? '-right' : '-left',\n $parentLi = $sub.parent('.is-dropdown-submenu-parent');\n $parentLi.removeClass(`opens${oldClass}`).addClass(`opens-${this.options.alignment}`);\n clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n $parentLi.removeClass(`opens-${this.options.alignment}`).addClass('opens-inner');\n }\n this.changed = true;\n }\n $sub.css('visibility', '');\n if (this.options.closeOnClick) { this._addBodyHandler(); }\n /**\n * Fires when the new dropdown pane is visible.\n * @event DropdownMenu#show\n */\n this.$element.trigger('show.zf.dropdownMenu', [$sub]);\n }\n\n /**\n * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.\n * @function\n * @param {jQuery} $elem - element with a submenu to hide\n * @param {Number} idx - index of the $tabs collection to hide\n * @fires DropdownMenu#hide\n * @private\n */\n _hide($elem, idx) {\n var $toClose;\n if ($elem && $elem.length) {\n $toClose = $elem;\n } else if (typeof idx !== 'undefined') {\n $toClose = this.$tabs.not(function(i) {\n return i === idx;\n });\n }\n else {\n $toClose = this.$element;\n }\n var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;\n\n if (somethingToClose) {\n var $activeItem = $toClose.find('li.is-active');\n $activeItem.add($toClose).attr({\n 'data-is-click': false\n }).removeClass('is-active');\n\n $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');\n\n if (this.changed || $toClose.find('opens-inner').length) {\n var oldClass = this.options.alignment === 'left' ? 'right' : 'left';\n $toClose.find('li.is-dropdown-submenu-parent').add($toClose)\n .removeClass(`opens-inner opens-${this.options.alignment}`)\n .addClass(`opens-${oldClass}`);\n this.changed = false;\n }\n\n clearTimeout($activeItem.data('_delay'));\n this._removeBodyHandler();\n\n /**\n * Fires when the open menus are closed.\n * @event DropdownMenu#hide\n */\n this.$element.trigger('hide.zf.dropdownMenu', [$toClose]);\n }\n }\n\n /**\n * Destroys the plugin.\n * @function\n */\n _destroy() {\n this.$menuItems.off('.zf.dropdownMenu').removeAttr('data-is-click')\n .removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');\n $(document.body).off('.zf.dropdownMenu');\n Nest.Burn(this.$element, 'dropdown');\n }\n}\n\n/**\n * Default settings for plugin\n */\nDropdownMenu.defaults = {\n /**\n * Disallows hover events from opening submenus\n * @option\n * @type {boolean}\n * @default false\n */\n disableHover: false,\n /**\n * Disallows hover on touch devices\n * @option\n * @type {boolean}\n * @default true\n */\n disableHoverOnTouch: true,\n /**\n * Allow a submenu to automatically close on a mouseleave event, if not clicked open.\n * @option\n * @type {boolean}\n * @default true\n */\n autoclose: true,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 50\n */\n hoverDelay: 50,\n /**\n * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.\n * @option\n * @type {boolean}\n * @default false\n */\n clickOpen: false,\n /**\n * Amount of time to delay closing a submenu on a mouseleave event.\n * @option\n * @type {number}\n * @default 500\n */\n\n closingTime: 500,\n /**\n * Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow clicks on the body to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allow clicks on leaf anchor links to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClickInside: true,\n /**\n * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'vertical'\n */\n verticalClass: 'vertical',\n /**\n * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'align-right'\n */\n rightClass: 'align-right',\n /**\n * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {DropdownMenu};\n","import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Equalizer module.\n * @module foundation.equalizer\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.imageLoader if equalizer contains images\n */\n\nclass Equalizer extends Plugin {\n /**\n * Creates a new instance of Equalizer.\n * @class\n * @name Equalizer\n * @fires Equalizer#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options){\n this.$element = element;\n this.options = $.extend({}, Equalizer.defaults, this.$element.data(), options);\n this.className = 'Equalizer'; // ie9 back compat\n\n this._init();\n }\n\n /**\n * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load.\n * @private\n */\n _init() {\n var eqId = this.$element.attr('data-equalizer') || '';\n var $watched = this.$element.find(`[data-equalizer-watch=\"${eqId}\"]`);\n\n MediaQuery._init();\n\n this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');\n this.$element.attr('data-resize', (eqId || GetYoDigits(6, 'eq')));\n this.$element.attr('data-mutate', (eqId || GetYoDigits(6, 'eq')));\n\n this.hasNested = this.$element.find('[data-equalizer]').length > 0;\n this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;\n this.isOn = false;\n this._bindHandler = {\n onResizeMeBound: this._onResizeMe.bind(this),\n onPostEqualizedBound: this._onPostEqualized.bind(this)\n };\n\n var imgs = this.$element.find('img');\n var tooSmall;\n if(this.options.equalizeOn){\n tooSmall = this._checkMQ();\n $(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));\n }else{\n this._events();\n }\n if((typeof tooSmall !== 'undefined' && tooSmall === false) || typeof tooSmall === 'undefined'){\n if(imgs.length){\n onImagesLoaded(imgs, this._reflow.bind(this));\n }else{\n this._reflow();\n }\n }\n }\n\n /**\n * Removes event listeners if the breakpoint is too small.\n * @private\n */\n _pauseEvents() {\n this.isOn = false;\n this.$element.off({\n '.zf.equalizer': this._bindHandler.onPostEqualizedBound,\n 'resizeme.zf.trigger': this._bindHandler.onResizeMeBound,\n\t 'mutateme.zf.trigger': this._bindHandler.onResizeMeBound\n });\n }\n\n /**\n * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound\n * @private\n */\n _onResizeMe() {\n this._reflow();\n }\n\n /**\n * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound\n * @private\n */\n _onPostEqualized(e) {\n if(e.target !== this.$element[0]){ this._reflow(); }\n }\n\n /**\n * Initializes events for Equalizer.\n * @private\n */\n _events() {\n this._pauseEvents();\n if(this.hasNested){\n this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound);\n }else{\n this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound);\n\t this.$element.on('mutateme.zf.trigger', this._bindHandler.onResizeMeBound);\n }\n this.isOn = true;\n }\n\n /**\n * Checks the current breakpoint to the minimum required size.\n * @private\n */\n _checkMQ() {\n var tooSmall = !MediaQuery.is(this.options.equalizeOn);\n if(tooSmall){\n if(this.isOn){\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n }else{\n if(!this.isOn){\n this._events();\n }\n }\n return tooSmall;\n }\n\n /**\n * A noop version for the plugin\n * @private\n */\n _killswitch() {\n return;\n }\n\n /**\n * Calls necessary functions to update Equalizer upon DOM change\n * @private\n */\n _reflow() {\n if(!this.options.equalizeOnStack){\n if(this._isStacked()){\n this.$watched.css('height', 'auto');\n return false;\n }\n }\n if (this.options.equalizeByRow) {\n this.getHeightsByRow(this.applyHeightByRow.bind(this));\n }else{\n this.getHeights(this.applyHeight.bind(this));\n }\n }\n\n /**\n * Manually determines if the first 2 elements are *NOT* stacked.\n * @private\n */\n _isStacked() {\n if (!this.$watched[0] || !this.$watched[1]) {\n return true;\n }\n return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top;\n }\n\n /**\n * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n * @param {Function} cb - A non-optional callback to return the heights array to.\n * @returns {Array} heights - An array of heights of children within Equalizer container\n */\n getHeights(cb) {\n var heights = [];\n for(var i = 0, len = this.$watched.length; i < len; i++){\n this.$watched[i].style.height = 'auto';\n heights.push(this.$watched[i].offsetHeight);\n }\n cb(heights);\n }\n\n /**\n * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n * @param {Function} cb - A non-optional callback to return the heights array to.\n * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n */\n getHeightsByRow(cb) {\n var lastElTopOffset = (this.$watched.length ? this.$watched.first().offset().top : 0),\n groups = [],\n group = 0;\n //group by Row\n groups[group] = [];\n for(var i = 0, len = this.$watched.length; i < len; i++){\n this.$watched[i].style.height = 'auto';\n //maybe could use this.$watched[i].offsetTop\n var elOffsetTop = $(this.$watched[i]).offset().top;\n if (elOffsetTop !== lastElTopOffset) {\n group++;\n groups[group] = [];\n lastElTopOffset=elOffsetTop;\n }\n groups[group].push([this.$watched[i],this.$watched[i].offsetHeight]);\n }\n\n for (var j = 0, ln = groups.length; j < ln; j++) {\n var heights = $(groups[j]).map(function(){ return this[1]; }).get();\n var max = Math.max.apply(null, heights);\n groups[j].push(max);\n }\n cb(groups);\n }\n\n /**\n * Changes the CSS height property of each child in an Equalizer parent to match the tallest\n * @param {array} heights - An array of heights of children within Equalizer container\n * @fires Equalizer#preequalized\n * @fires Equalizer#postequalized\n */\n applyHeight(heights) {\n var max = Math.max.apply(null, heights);\n /**\n * Fires before the heights are applied\n * @event Equalizer#preequalized\n */\n this.$element.trigger('preequalized.zf.equalizer');\n\n this.$watched.css('height', max);\n\n /**\n * Fires when the heights have been applied\n * @event Equalizer#postequalized\n */\n this.$element.trigger('postequalized.zf.equalizer');\n }\n\n /**\n * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row\n * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n * @fires Equalizer#preequalized\n * @fires Equalizer#preequalizedrow\n * @fires Equalizer#postequalizedrow\n * @fires Equalizer#postequalized\n */\n applyHeightByRow(groups) {\n /**\n * Fires before the heights are applied\n */\n this.$element.trigger('preequalized.zf.equalizer');\n for (var i = 0, len = groups.length; i < len ; i++) {\n var groupsILength = groups[i].length,\n max = groups[i][groupsILength - 1];\n if (groupsILength<=2) {\n $(groups[i][0][0]).css({'height':'auto'});\n continue;\n }\n /**\n * Fires before the heights per row are applied\n * @event Equalizer#preequalizedrow\n */\n this.$element.trigger('preequalizedrow.zf.equalizer');\n for (var j = 0, lenJ = (groupsILength-1); j < lenJ ; j++) {\n $(groups[i][j][0]).css({'height':max});\n }\n /**\n * Fires when the heights per row have been applied\n * @event Equalizer#postequalizedrow\n */\n this.$element.trigger('postequalizedrow.zf.equalizer');\n }\n /**\n * Fires when the heights have been applied\n */\n this.$element.trigger('postequalized.zf.equalizer');\n }\n\n /**\n * Destroys an instance of Equalizer.\n * @function\n */\n _destroy() {\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n}\n\n/**\n * Default settings for plugin\n */\nEqualizer.defaults = {\n /**\n * Enable height equalization when stacked on smaller screens.\n * @option\n * @type {boolean}\n * @default false\n */\n equalizeOnStack: false,\n /**\n * Enable height equalization row by row.\n * @option\n * @type {boolean}\n * @default false\n */\n equalizeByRow: false,\n /**\n * String representing the minimum breakpoint size the plugin should equalize heights on.\n * @option\n * @type {string}\n * @default ''\n */\n equalizeOn: ''\n};\n\nexport {Equalizer};\n","import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Plugin } from './foundation.core.plugin';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Interchange module.\n * @module foundation.interchange\n * @requires foundation.util.mediaQuery\n */\n\nclass Interchange extends Plugin {\n /**\n * Creates a new instance of Interchange.\n * @class\n * @name Interchange\n * @fires Interchange#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Interchange.defaults, this.$element.data(), options);\n this.rules = [];\n this.currentPath = '';\n this.className = 'Interchange'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Interchange plugin and calls functions to get interchange functioning on load.\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n var id = this.$element[0].id || GetYoDigits(6, 'interchange');\n this.$element.attr({\n 'data-resize': id,\n 'id': id\n });\n\n this._parseOptions();\n this._addBreakpoints();\n this._generateRules();\n this._reflow();\n }\n\n /**\n * Initializes events for Interchange.\n * @function\n * @private\n */\n _events() {\n this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', () => this._reflow());\n }\n\n /**\n * Calls necessary functions to update Interchange upon DOM change\n * @function\n * @private\n */\n _reflow() {\n var match;\n\n // Iterate through each rule, but only save the last match\n for (var i in this.rules) {\n if(this.rules.hasOwnProperty(i)) {\n var rule = this.rules[i];\n if (window.matchMedia(rule.query).matches) {\n match = rule;\n }\n }\n }\n\n if (match) {\n this.replace(match.path);\n }\n }\n\n /**\n * Check options valifity and set defaults for:\n * - `data-interchange-type`: if set, enforce the type of replacement (auto, src, background or html)\n * @function\n * @private\n */\n _parseOptions() {\n var types = ['auto', 'src', 'background', 'html'];\n if (typeof this.options.type === 'undefined')\n this.options.type = 'auto';\n else if (types.indexOf(this.options.type) === -1) {\n console.warn(`Warning: invalid value \"${this.options.type}\" for Interchange option \"type\"`);\n this.options.type = 'auto';\n }\n }\n\n /**\n * Gets the Foundation breakpoints and adds them to the Interchange.SPECIAL_QUERIES object.\n * @function\n * @private\n */\n _addBreakpoints() {\n for (var i in MediaQuery.queries) {\n if (MediaQuery.queries.hasOwnProperty(i)) {\n var query = MediaQuery.queries[i];\n Interchange.SPECIAL_QUERIES[query.name] = query.value;\n }\n }\n }\n\n /**\n * Checks the Interchange element for the provided media query + content pairings\n * @function\n * @private\n * @returns {Array} scenarios - Array of objects that have 'mq' and 'path' keys with corresponding keys\n */\n _generateRules() {\n var rulesList = [];\n var rules;\n\n if (this.options.rules) {\n rules = this.options.rules;\n }\n else {\n rules = this.$element.data('interchange');\n }\n\n rules = typeof rules === 'string' ? rules.match(/\\[.*?, .*?\\]/g) : rules;\n\n for (var i in rules) {\n if(rules.hasOwnProperty(i)) {\n var rule = rules[i].slice(1, -1).split(', ');\n var path = rule.slice(0, -1).join('');\n var query = rule[rule.length - 1];\n\n if (Interchange.SPECIAL_QUERIES[query]) {\n query = Interchange.SPECIAL_QUERIES[query];\n }\n\n rulesList.push({\n path: path,\n query: query\n });\n }\n }\n\n this.rules = rulesList;\n }\n\n /**\n * Update the `src` property of an image, or change the HTML of a container, to the specified path.\n * @function\n * @param {String} path - Path to the image or HTML partial.\n * @fires Interchange#replaced\n */\n replace(path) {\n if (this.currentPath === path) return;\n\n var trigger = 'replaced.zf.interchange';\n\n var type = this.options.type;\n if (type === 'auto') {\n if (this.$element[0].nodeName === 'IMG')\n type = 'src';\n else if (path.match(/\\.(gif|jpe?g|png|svg|tiff)([?#].*)?/i))\n type = 'background';\n else\n type = 'html';\n }\n\n // Replacing images\n if (type === 'src') {\n this.$element.attr('src', path)\n .on('load', () => { this.currentPath = path; })\n .trigger(trigger);\n }\n // Replacing background images\n else if (type === 'background') {\n path = path.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n this.$element\n .css({ 'background-image': 'url(' + path + ')' })\n .trigger(trigger);\n }\n // Replacing HTML\n else if (type === 'html') {\n $.get(path, (response) => {\n this.$element\n .html(response)\n .trigger(trigger);\n $(response).foundation();\n this.currentPath = path;\n });\n }\n\n /**\n * Fires when content in an Interchange element is done being loaded.\n * @event Interchange#replaced\n */\n // this.$element.trigger('replaced.zf.interchange');\n }\n\n /**\n * Destroys an instance of interchange.\n * @function\n */\n _destroy() {\n this.$element.off('resizeme.zf.trigger')\n }\n}\n\n/**\n * Default settings for plugin\n */\nInterchange.defaults = {\n /**\n * Rules to be applied to Interchange elements. Set with the `data-interchange` array notation.\n * @option\n * @type {?array}\n * @default null\n */\n rules: null,\n\n /**\n * Type of the responsive ressource to replace. It can take the following options:\n * - `auto` (default): choose the type according to the element tag or the ressource extension,\n * - `src`: replace the `[src]` attribute, recommended for images `<img>`.\n * - `background`: replace the `background-image` CSS property.\n * - `html`: replace the element content.\n * @option\n * @type {string}\n * @default 'auto'\n */\n type: 'auto'\n};\n\nInterchange.SPECIAL_QUERIES = {\n 'landscape': 'screen and (orientation: landscape)',\n 'portrait': 'screen and (orientation: portrait)',\n 'retina': 'only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)'\n};\n\nexport {Interchange};\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * SmoothScroll module.\n * @module foundation.smoothScroll\n */\nclass SmoothScroll extends Plugin {\n /**\n * Creates a new instance of SmoothScroll.\n * @class\n * @name SmoothScroll\n * @fires SmoothScroll#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, SmoothScroll.defaults, this.$element.data(), options);\n this.className = 'SmoothScroll'; // ie9 back compat\n\n this._init();\n }\n\n /**\n * Initialize the SmoothScroll plugin\n * @private\n */\n _init() {\n const id = this.$element[0].id || GetYoDigits(6, 'smooth-scroll');\n this.$element.attr({ id });\n\n this._events();\n }\n\n /**\n * Initializes events for SmoothScroll.\n * @private\n */\n _events() {\n this._linkClickListener = this._handleLinkClick.bind(this);\n this.$element.on('click.zf.smoothScroll', this._linkClickListener);\n this.$element.on('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n }\n\n /**\n * Handle the given event to smoothly scroll to the anchor pointed by the event target.\n * @param {*} e - event\n * @function\n * @private\n */\n _handleLinkClick(e) {\n // Follow the link if it does not point to an anchor.\n if (!$(e.currentTarget).is('a[href^=\"#\"]')) return;\n\n const arrival = e.currentTarget.getAttribute('href');\n\n this._inTransition = true;\n\n SmoothScroll.scrollToLoc(arrival, this.options, () => {\n this._inTransition = false;\n });\n\n e.preventDefault();\n };\n\n /**\n * Function to scroll to a given location on the page.\n * @param {String} loc - A properly formatted jQuery id selector. Example: '#foo'\n * @param {Object} options - The options to use.\n * @param {Function} callback - The callback function.\n * @static\n * @function\n */\n static scrollToLoc(loc, options = SmoothScroll.defaults, callback) {\n const $loc = $(loc);\n\n // Do nothing if target does not exist to prevent errors\n if (!$loc.length) return false;\n\n var scrollPos = Math.round($loc.offset().top - options.threshold / 2 - options.offset);\n\n $('html, body').stop(true).animate(\n { scrollTop: scrollPos },\n options.animationDuration,\n options.animationEasing,\n () => {\n if (typeof callback === 'function'){\n callback();\n }\n }\n );\n }\n\n /**\n * Destroys the SmoothScroll instance.\n * @function\n */\n _destroy() {\n this.$element.off('click.zf.smoothScroll', this._linkClickListener)\n this.$element.off('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n }\n}\n\n/**\n * Default settings for plugin.\n */\nSmoothScroll.defaults = {\n /**\n * Amount of time, in ms, the animated scrolling should take between locations.\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @default 'linear'\n * @see {@link https://api.jquery.com/animate|Jquery animate}\n */\n animationEasing: 'linear',\n /**\n * Number of pixels to use as a marker for location changes.\n * @option\n * @type {number}\n * @default 50\n */\n threshold: 50,\n /**\n * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.\n * @option\n * @type {number}\n * @default 0\n */\n offset: 0\n}\n\nexport {SmoothScroll}\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { SmoothScroll } from './foundation.smoothScroll';\n\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Magellan module.\n * @module foundation.magellan\n * @requires foundation.smoothScroll\n * @requires foundation.util.triggers\n */\n\nclass Magellan extends Plugin {\n /**\n * Creates a new instance of Magellan.\n * @class\n * @name Magellan\n * @fires Magellan#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Magellan.defaults, this.$element.data(), options);\n this.className = 'Magellan'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n this.calcPoints();\n }\n\n /**\n * Initializes the Magellan plugin and calls functions to get equalizer functioning on load.\n * @private\n */\n _init() {\n var id = this.$element[0].id || GetYoDigits(6, 'magellan');\n this.$targets = $('[data-magellan-target]');\n this.$links = this.$element.find('a');\n this.$element.attr({\n 'data-resize': id,\n 'data-scroll': id,\n 'id': id\n });\n this.$active = $();\n this.scrollPos = parseInt(window.pageYOffset, 10);\n\n this._events();\n }\n\n /**\n * Calculates an array of pixel values that are the demarcation lines between locations on the page.\n * Can be invoked if new elements are added or the size of a location changes.\n * @function\n */\n calcPoints() {\n var _this = this,\n body = document.body,\n html = document.documentElement;\n\n this.points = [];\n this.winHeight = Math.round(Math.max(window.innerHeight, html.clientHeight));\n this.docHeight = Math.round(Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight));\n\n this.$targets.each(function(){\n var $tar = $(this),\n pt = Math.round($tar.offset().top - _this.options.threshold);\n $tar.targetPoint = pt;\n _this.points.push(pt);\n });\n }\n\n /**\n * Initializes events for Magellan.\n * @private\n */\n _events() {\n var _this = this;\n\n $(window).one('load', function(){\n if(_this.options.deepLinking){\n if(location.hash){\n _this.scrollToLoc(location.hash);\n }\n }\n _this.calcPoints();\n _this._updateActive();\n });\n\n _this.onLoadListener = onLoad($(window), function () {\n _this.$element\n .on({\n 'resizeme.zf.trigger': _this.reflow.bind(_this),\n 'scrollme.zf.trigger': _this._updateActive.bind(_this)\n })\n .on('click.zf.magellan', 'a[href^=\"#\"]', function (e) {\n e.preventDefault();\n var arrival = this.getAttribute('href');\n _this.scrollToLoc(arrival);\n });\n });\n\n this._deepLinkScroll = function() {\n if(_this.options.deepLinking) {\n _this.scrollToLoc(window.location.hash);\n }\n };\n\n $(window).on('hashchange', this._deepLinkScroll);\n }\n\n /**\n * Function to scroll to a given location on the page.\n * @param {String} loc - a properly formatted jQuery id selector. Example: '#foo'\n * @function\n */\n scrollToLoc(loc) {\n this._inTransition = true;\n var _this = this;\n\n var options = {\n animationEasing: this.options.animationEasing,\n animationDuration: this.options.animationDuration,\n threshold: this.options.threshold,\n offset: this.options.offset\n };\n\n SmoothScroll.scrollToLoc(loc, options, function() {\n _this._inTransition = false;\n })\n }\n\n /**\n * Calls necessary functions to update Magellan upon DOM change\n * @function\n */\n reflow() {\n this.calcPoints();\n this._updateActive();\n }\n\n /**\n * Updates the visibility of an active location link, and updates the url hash for the page, if deepLinking enabled.\n * @private\n * @function\n * @fires Magellan#update\n */\n _updateActive(/*evt, elem, scrollPos*/) {\n if(this._inTransition) return;\n\n const newScrollPos = parseInt(window.pageYOffset, 10);\n const isScrollingUp = this.scrollPos > newScrollPos;\n this.scrollPos = newScrollPos;\n\n let activeIdx;\n // Before the first point: no link\n if(newScrollPos < this.points[0] - this.options.offset - (isScrollingUp ? this.options.threshold : 0)){ /* do nothing */ }\n // At the bottom of the page: last link\n else if(newScrollPos + this.winHeight === this.docHeight){ activeIdx = this.points.length - 1; }\n // Otherwhise, use the last visible link\n else{\n const visibleLinks = this.points.filter((p) => {\n return (p - this.options.offset - (isScrollingUp ? this.options.threshold : 0)) <= newScrollPos;\n });\n activeIdx = visibleLinks.length ? visibleLinks.length - 1 : 0;\n }\n\n // Get the new active link\n const $oldActive = this.$active;\n let activeHash = '';\n if(typeof activeIdx !== 'undefined'){\n this.$active = this.$links.filter('[href=\"#' + this.$targets.eq(activeIdx).data('magellan-target') + '\"]');\n if (this.$active.length) activeHash = this.$active[0].getAttribute('href');\n }else{\n this.$active = $();\n }\n const isNewActive = !(!this.$active.length && !$oldActive.length) && !this.$active.is($oldActive);\n const isNewHash = activeHash !== window.location.hash;\n\n // Update the active link element\n if(isNewActive) {\n $oldActive.removeClass(this.options.activeClass);\n this.$active.addClass(this.options.activeClass);\n }\n\n // Update the hash (it may have changed with the same active link)\n if(this.options.deepLinking && isNewHash){\n if(window.history.pushState){\n // Set or remove the hash (see: https://stackoverflow.com/a/5298684/4317384\n const url = activeHash ? activeHash : window.location.pathname + window.location.search;\n if(this.options.updateHistory){\n window.history.pushState({}, '', url);\n }else{\n window.history.replaceState({}, '', url);\n }\n }else{\n window.location.hash = activeHash;\n }\n }\n\n if (isNewActive) {\n /**\n * Fires when magellan is finished updating to the new active element.\n * @event Magellan#update\n */\n \tthis.$element.trigger('update.zf.magellan', [this.$active]);\n\t }\n }\n\n /**\n * Destroys an instance of Magellan and resets the url of the window.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.trigger .zf.magellan')\n .find(`.${this.options.activeClass}`).removeClass(this.options.activeClass);\n\n if(this.options.deepLinking){\n var hash = this.$active[0].getAttribute('href');\n window.location.hash.replace(hash, '');\n }\n\n $(window).off('hashchange', this._deepLinkScroll)\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n }\n}\n\n/**\n * Default settings for plugin\n */\nMagellan.defaults = {\n /**\n * Amount of time, in ms, the animated scrolling should take between locations.\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @default 'linear'\n * @see {@link https://api.jquery.com/animate|Jquery animate}\n */\n animationEasing: 'linear',\n /**\n * Number of pixels to use as a marker for location changes.\n * @option\n * @type {number}\n * @default 50\n */\n threshold: 50,\n /**\n * Class applied to the active locations link on the magellan container.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n activeClass: 'is-active',\n /**\n * Allows the script to manipulate the url of the current page, and if supported, alter the history.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinking: false,\n /**\n * Update the browser history with the active link, if deep linking is enabled.\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false,\n /**\n * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.\n * @option\n * @type {number}\n * @default 0\n */\n offset: 0\n}\n\nexport {Magellan};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, transitionend, RegExpEscape } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * OffCanvas module.\n * @module foundation.offCanvas\n * @requires foundation.util.keyboard\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.triggers\n */\n\nclass OffCanvas extends Plugin {\n /**\n * Creates a new instance of an off-canvas wrapper.\n * @class\n * @name OffCanvas\n * @fires OffCanvas#init\n * @param {Object} element - jQuery object to initialize.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.className = 'OffCanvas'; // ie9 back compat\n this.$element = element;\n this.options = $.extend({}, OffCanvas.defaults, this.$element.data(), options);\n this.contentClasses = { base: [], reveal: [] };\n this.$lastTrigger = $();\n this.$triggers = $();\n this.position = 'left';\n this.$content = $();\n this.nested = !!(this.options.nested);\n this.$sticky = $();\n this.isInCanvas = false;\n\n // Defines the CSS transition/position classes of the off-canvas content container.\n $(['push', 'overlap']).each((index, val) => {\n this.contentClasses.base.push('has-transition-'+val);\n });\n $(['left', 'right', 'top', 'bottom']).each((index, val) => {\n this.contentClasses.base.push('has-position-'+val);\n this.contentClasses.reveal.push('has-reveal-'+val);\n });\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n MediaQuery._init();\n\n this._init();\n this._events();\n\n Keyboard.register('OffCanvas', {\n 'ESCAPE': 'close'\n });\n\n }\n\n /**\n * Initializes the off-canvas wrapper by adding the exit overlay (if needed).\n * @function\n * @private\n */\n _init() {\n var id = this.$element.attr('id');\n\n this.$element.attr('aria-hidden', 'true');\n\n // Find off-canvas content, either by ID (if specified), by siblings or by closest selector (fallback)\n if (this.options.contentId) {\n this.$content = $('#'+this.options.contentId);\n } else if (this.$element.siblings('[data-off-canvas-content]').length) {\n this.$content = this.$element.siblings('[data-off-canvas-content]').first();\n } else {\n this.$content = this.$element.closest('[data-off-canvas-content]').first();\n }\n\n if (!this.options.contentId) {\n // Assume that the off-canvas element is nested if it isn't a sibling of the content\n this.nested = this.$element.siblings('[data-off-canvas-content]').length === 0;\n\n } else if (this.options.contentId && this.options.nested === null) {\n // Warning if using content ID without setting the nested option\n // Once the element is nested it is required to work properly in this case\n console.warn('Remember to use the nested option if using the content ID option!');\n }\n\n if (this.nested === true) {\n // Force transition overlap if nested\n this.options.transition = 'overlap';\n // Remove appropriate classes if already assigned in markup\n this.$element.removeClass('is-transition-push');\n }\n\n this.$element.addClass(`is-transition-${this.options.transition} is-closed`);\n\n // Find triggers that affect this element and add aria-expanded to them\n this.$triggers = $(document)\n .find('[data-open=\"'+id+'\"], [data-close=\"'+id+'\"], [data-toggle=\"'+id+'\"]')\n .attr('aria-expanded', 'false')\n .attr('aria-controls', id);\n\n // Get position by checking for related CSS class\n this.position = this.$element.is('.position-left, .position-top, .position-right, .position-bottom') ? this.$element.attr('class').match(/position\\-(left|top|right|bottom)/)[1] : this.position;\n\n // Add an overlay over the content if necessary\n if (this.options.contentOverlay === true) {\n var overlay = document.createElement('div');\n var overlayPosition = $(this.$element).css(\"position\") === 'fixed' ? 'is-overlay-fixed' : 'is-overlay-absolute';\n overlay.setAttribute('class', 'js-off-canvas-overlay ' + overlayPosition);\n this.$overlay = $(overlay);\n if(overlayPosition === 'is-overlay-fixed') {\n $(this.$overlay).insertAfter(this.$element);\n } else {\n this.$content.append(this.$overlay);\n }\n }\n\n // Get the revealOn option from the class.\n var revealOnRegExp = new RegExp(RegExpEscape(this.options.revealClass) + '([^\\\\s]+)', 'g');\n var revealOnClass = revealOnRegExp.exec(this.$element[0].className);\n if (revealOnClass) {\n this.options.isRevealed = true;\n this.options.revealOn = this.options.revealOn || revealOnClass[1];\n }\n\n // Ensure the `reveal-on-*` class is set.\n if (this.options.isRevealed === true && this.options.revealOn) {\n this.$element.first().addClass(`${this.options.revealClass}${this.options.revealOn}`);\n this._setMQChecker();\n }\n\n if (this.options.transitionTime) {\n this.$element.css('transition-duration', this.options.transitionTime);\n }\n\n // Find fixed elements that should stay fixed while off-canvas is opened\n this.$sticky = this.$content.find('[data-off-canvas-sticky]');\n if (this.$sticky.length > 0 && this.options.transition === 'push') {\n // If there's at least one match force contentScroll:false because the absolute top value doesn't get recalculated on scroll\n // Limit to push transition since there's no transform scope for overlap\n this.options.contentScroll = false;\n }\n\n let inCanvasFor = this.$element.attr('class').match(/\\bin-canvas-for-(\\w+)/);\n if (inCanvasFor && inCanvasFor.length === 2) {\n // Set `inCanvasOn` option if found in-canvas-for-[BREAKPONT] CSS class\n this.options.inCanvasOn = inCanvasFor[1];\n } else if (this.options.inCanvasOn) {\n // Ensure the CSS class is set\n this.$element.addClass(`in-canvas-for-${this.options.inCanvasOn}`);\n }\n\n if (this.options.inCanvasOn) {\n this._checkInCanvas();\n }\n\n // Initally remove all transition/position CSS classes from off-canvas content container.\n this._removeContentClasses();\n }\n\n /**\n * Adds event handlers to the off-canvas wrapper and the exit overlay.\n * @function\n * @private\n */\n _events() {\n this.$element.off('.zf.trigger .zf.offCanvas').on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'keydown.zf.offCanvas': this._handleKeyboard.bind(this)\n });\n\n if (this.options.closeOnClick === true) {\n var $target = this.options.contentOverlay ? this.$overlay : this.$content;\n $target.on({'click.zf.offCanvas': this.close.bind(this)});\n }\n\n if (this.options.inCanvasOn) {\n $(window).on('changed.zf.mediaquery', () => {\n this._checkInCanvas();\n });\n }\n\n }\n\n /**\n * Applies event listener for elements that will reveal at certain breakpoints.\n * @private\n */\n _setMQChecker() {\n var _this = this;\n\n this.onLoadListener = onLoad($(window), function () {\n if (MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n }\n });\n\n $(window).on('changed.zf.mediaquery', function () {\n if (MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n } else {\n _this.reveal(false);\n }\n });\n }\n\n /**\n * Checks if InCanvas on current breakpoint and adjust off-canvas accordingly\n * @private\n */\n _checkInCanvas() {\n this.isInCanvas = MediaQuery.atLeast(this.options.inCanvasOn);\n if (this.isInCanvas === true) {\n this.close();\n }\n }\n\n /**\n * Removes the CSS transition/position classes of the off-canvas content container.\n * Removing the classes is important when another off-canvas gets opened that uses the same content container.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */\n _removeContentClasses(hasReveal) {\n if (typeof hasReveal !== 'boolean') {\n this.$content.removeClass(this.contentClasses.base.join(' '));\n } else if (hasReveal === false) {\n this.$content.removeClass(`has-reveal-${this.position}`);\n }\n }\n\n /**\n * Adds the CSS transition/position classes of the off-canvas content container, based on the opening off-canvas element.\n * Beforehand any transition/position class gets removed.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */\n _addContentClasses(hasReveal) {\n this._removeContentClasses(hasReveal);\n if (typeof hasReveal !== 'boolean') {\n this.$content.addClass(`has-transition-${this.options.transition} has-position-${this.position}`);\n } else if (hasReveal === true) {\n this.$content.addClass(`has-reveal-${this.position}`);\n }\n }\n\n /**\n * Preserves the fixed behavior of sticky elements on opening an off-canvas with push transition.\n * Since the off-canvas container has got a transform scope in such a case, it is done by calculating position absolute values.\n * @private\n */\n _fixStickyElements() {\n this.$sticky.each((_, el) => {\n const $el = $(el);\n\n // If sticky element is currently fixed, adjust its top value to match absolute position due to transform scope\n // Limit to push transition because postion:fixed works without problems for overlap (no transform scope)\n if ($el.css('position') === 'fixed') {\n\n // Save current inline styling to restore it if undoing the absolute fixing\n let topVal = parseInt($el.css('top'), 10);\n $el.data('offCanvasSticky', { top: topVal });\n\n let absoluteTopVal = $(document).scrollTop() + topVal;\n $el.css({ top: `${absoluteTopVal}px`, width: '100%', transition: 'none' });\n }\n });\n }\n\n /**\n * Restores the original fixed styling of sticky elements after having closed an off-canvas that got pseudo fixed beforehand.\n * This reverts the changes of _fixStickyElements()\n * @private\n */\n _unfixStickyElements() {\n this.$sticky.each((_, el) => {\n const $el = $(el);\n let stickyData = $el.data('offCanvasSticky');\n\n // If sticky element has got data object with prior values (meaning it was originally fixed) restore these values once off-canvas is closed\n if (typeof stickyData === 'object') {\n $el.css({ top: `${stickyData.top}px`, width: '', transition: '' })\n $el.data('offCanvasSticky', '');\n }\n });\n }\n\n /**\n * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open.\n * @param {Boolean} isRevealed - true if element should be revealed.\n * @function\n */\n reveal(isRevealed) {\n if (isRevealed) {\n this.close();\n this.isRevealed = true;\n this.$element.attr('aria-hidden', 'false');\n this.$element.off('open.zf.trigger toggle.zf.trigger');\n this.$element.removeClass('is-closed');\n } else {\n this.isRevealed = false;\n this.$element.attr('aria-hidden', 'true');\n this.$element.off('open.zf.trigger toggle.zf.trigger').on({\n 'open.zf.trigger': this.open.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this)\n });\n this.$element.addClass('is-closed');\n }\n this._addContentClasses(isRevealed);\n }\n\n /**\n * Stops scrolling of the body when OffCanvas is open on mobile Safari and other troublesome browsers.\n * @function\n * @private\n */\n _stopScrolling() {\n return false;\n }\n\n /**\n * Save current finger y-position\n * @param event\n * @private\n */\n _recordScrollable(event) {\n const elem = this;\n elem.lastY = event.touches[0].pageY;\n }\n\n /**\n * Prevent further scrolling when it hits the edges\n * @param event\n * @private\n */\n _preventDefaultAtEdges(event) {\n const elem = this;\n const _this = event.data;\n const delta = elem.lastY - event.touches[0].pageY;\n elem.lastY = event.touches[0].pageY;\n\n if (!_this._canScroll(delta, elem)) {\n event.preventDefault();\n }\n }\n\n /**\n * Handle continuous scrolling of scrollbox\n * Don't bubble up to _preventDefaultAtEdges\n * @param event\n * @private\n */\n _scrollboxTouchMoved(event) {\n const elem = this;\n const _this = event.data;\n const parent = elem.closest('[data-off-canvas], [data-off-canvas-scrollbox-outer]');\n const delta = elem.lastY - event.touches[0].pageY;\n parent.lastY = elem.lastY = event.touches[0].pageY;\n\n event.stopPropagation();\n\n if (!_this._canScroll(delta, elem)) {\n if (!_this._canScroll(delta, parent)) {\n event.preventDefault();\n } else {\n parent.scrollTop += delta;\n }\n }\n }\n\n /**\n * Detect possibility of scrolling\n * @param delta\n * @param elem\n * @returns boolean\n * @private\n */\n _canScroll(delta, elem) {\n const up = delta < 0;\n const down = delta > 0;\n const allowUp = elem.scrollTop > 0;\n const allowDown = elem.scrollTop < elem.scrollHeight - elem.clientHeight;\n return up && allowUp || down && allowDown;\n }\n\n /**\n * Opens the off-canvas menu.\n * @function\n * @param {Object} event - Event object passed from listener.\n * @param {jQuery} trigger - element that triggered the off-canvas to open.\n * @fires OffCanvas#opened\n * @todo also trigger 'open' event?\n */\n open(event, trigger) {\n if (this.$element.hasClass('is-open') || this.isRevealed || this.isInCanvas) { return; }\n var _this = this;\n\n if (trigger) {\n this.$lastTrigger = trigger;\n }\n\n if (this.options.forceTo === 'top') {\n window.scrollTo(0, 0);\n } else if (this.options.forceTo === 'bottom') {\n window.scrollTo(0,document.body.scrollHeight);\n }\n\n if (this.options.transitionTime && this.options.transition !== 'overlap') {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', this.options.transitionTime);\n } else {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', '');\n }\n\n this.$element.addClass('is-open').removeClass('is-closed');\n\n this.$triggers.attr('aria-expanded', 'true');\n this.$element.attr('aria-hidden', 'false');\n\n this.$content.addClass('is-open-' + this.position);\n\n // If `contentScroll` is set to false, add class and disable scrolling on touch devices.\n if (this.options.contentScroll === false) {\n $('body').addClass('is-off-canvas-open').on('touchmove', this._stopScrolling);\n this.$element.on('touchstart', this._recordScrollable);\n this.$element.on('touchmove', this, this._preventDefaultAtEdges);\n this.$element.on('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);\n this.$element.on('touchmove', '[data-off-canvas-scrollbox]', this, this._scrollboxTouchMoved);\n }\n\n if (this.options.contentOverlay === true) {\n this.$overlay.addClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.addClass('is-closable');\n }\n\n if (this.options.autoFocus === true) {\n this.$element.one(transitionend(this.$element), function() {\n if (!_this.$element.hasClass('is-open')) {\n return; // exit if prematurely closed\n }\n var canvasFocus = _this.$element.find('[data-autofocus]');\n if (canvasFocus.length) {\n canvasFocus.eq(0).focus();\n } else {\n _this.$element.find('a, button').eq(0).focus();\n }\n });\n }\n\n if (this.options.trapFocus === true) {\n this.$content.attr('tabindex', '-1');\n Keyboard.trapFocus(this.$element);\n }\n\n if (this.options.transition === 'push') {\n this._fixStickyElements();\n }\n\n this._addContentClasses();\n\n /**\n * Fires when the off-canvas menu opens.\n * @event OffCanvas#opened\n */\n this.$element.trigger('opened.zf.offCanvas');\n\n /**\n * Fires when the off-canvas menu open transition is done.\n * @event OffCanvas#openedEnd\n */\n this.$element.one(transitionend(this.$element), () => {\n this.$element.trigger('openedEnd.zf.offCanvas');\n });\n }\n\n /**\n * Closes the off-canvas menu.\n * @function\n * @param {Function} cb - optional cb to fire after closure.\n * @fires OffCanvas#close\n * @fires OffCanvas#closed\n */\n close() {\n if (!this.$element.hasClass('is-open') || this.isRevealed) { return; }\n\n /**\n * Fires when the off-canvas menu closes.\n * @event OffCanvas#close\n */\n this.$element.trigger('close.zf.offCanvas');\n\n this.$element.removeClass('is-open');\n\n this.$element.attr('aria-hidden', 'true');\n\n this.$content.removeClass('is-open-left is-open-top is-open-right is-open-bottom');\n\n if (this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-closable');\n }\n\n this.$triggers.attr('aria-expanded', 'false');\n\n\n // Listen to transitionEnd: add class, re-enable scrolling and release focus when done.\n this.$element.one(transitionend(this.$element), () => {\n\n this.$element.addClass('is-closed');\n this._removeContentClasses();\n\n if (this.options.transition === 'push') {\n this._unfixStickyElements();\n }\n\n // If `contentScroll` is set to false, remove class and re-enable scrolling on touch devices.\n if (this.options.contentScroll === false) {\n $('body').removeClass('is-off-canvas-open').off('touchmove', this._stopScrolling);\n this.$element.off('touchstart', this._recordScrollable);\n this.$element.off('touchmove', this._preventDefaultAtEdges);\n this.$element.off('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);\n this.$element.off('touchmove', '[data-off-canvas-scrollbox]', this._scrollboxTouchMoved);\n }\n\n if (this.options.trapFocus === true) {\n this.$content.removeAttr('tabindex');\n Keyboard.releaseFocus(this.$element);\n }\n\n /**\n * Fires when the off-canvas menu close transition is done.\n * @event OffCanvas#closed\n */\n this.$element.trigger('closed.zf.offCanvas');\n });\n }\n\n /**\n * Toggles the off-canvas menu open or closed.\n * @function\n * @param {Object} event - Event object passed from listener.\n * @param {jQuery} trigger - element that triggered the off-canvas to open.\n */\n toggle(event, trigger) {\n if (this.$element.hasClass('is-open')) {\n this.close(event, trigger);\n }\n else {\n this.open(event, trigger);\n }\n }\n\n /**\n * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu.\n * @function\n * @private\n */\n _handleKeyboard(e) {\n Keyboard.handleKey(e, 'OffCanvas', {\n close: () => {\n this.close();\n this.$lastTrigger.focus();\n return true;\n },\n handled: () => {\n e.preventDefault();\n }\n });\n }\n\n /**\n * Destroys the OffCanvas plugin.\n * @function\n */\n _destroy() {\n this.close();\n this.$element.off('.zf.trigger .zf.offCanvas');\n this.$overlay.off('.zf.offCanvas');\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n }\n}\n\nOffCanvas.defaults = {\n /**\n * Allow the user to click outside of the menu to close it.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n\n /**\n * Adds an overlay on top of `[data-off-canvas-content]`.\n * @option\n * @type {boolean}\n * @default true\n */\n contentOverlay: true,\n\n /**\n * Target an off-canvas content container by ID that may be placed anywhere. If null the closest content container will be taken.\n * @option\n * @type {?string}\n * @default null\n */\n contentId: null,\n\n /**\n * Define the off-canvas element is nested in an off-canvas content. This is required when using the contentId option for a nested element.\n * @option\n * @type {boolean}\n * @default null\n */\n nested: null,\n\n /**\n * Enable/disable scrolling of the main content when an off canvas panel is open.\n * @option\n * @type {boolean}\n * @default true\n */\n contentScroll: true,\n\n /**\n * Amount of time the open and close transition requires, including the appropriate milliseconds (`ms`) or seconds (`s`) unit (e.g. `500ms`, `.75s`) If none selected, pulls from body style.\n * @option\n * @type {string}\n * @default null\n */\n transitionTime: null,\n\n /**\n * Type of transition for the OffCanvas menu. Options are 'push', 'detached' or 'slide'.\n * @option\n * @type {string}\n * @default push\n */\n transition: 'push',\n\n /**\n * Force the page to scroll to top or bottom on open.\n * @option\n * @type {?string}\n * @default null\n */\n forceTo: null,\n\n /**\n * Allow the OffCanvas to remain open for certain breakpoints.\n * @option\n * @type {boolean}\n * @default false\n */\n isRevealed: false,\n\n /**\n * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option.\n * @option\n * @type {?string}\n * @default null\n */\n revealOn: null,\n\n /**\n * Breakpoint at which the off-canvas gets moved into canvas content and acts as regular page element.\n * @option\n * @type {?string}\n * @default null\n */\n inCanvasOn: null,\n\n /**\n * Force focus to the offcanvas on open. If true, will focus the opening trigger on close.\n * @option\n * @type {boolean}\n * @default true\n */\n autoFocus: true,\n\n /**\n * Class used to force an OffCanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`.\n * @option\n * @type {string}\n * @default reveal-for-\n * @todo improve the regex testing for this.\n */\n revealClass: 'reveal-for-',\n\n /**\n * Triggers optional focus trapping when opening an OffCanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes.\n * @option\n * @type {boolean}\n * @default false\n */\n trapFocus: false\n}\n\nexport {OffCanvas};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Motion } from './foundation.util.motion';\nimport { Timer } from './foundation.util.timer';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\nimport { Touch } from './foundation.util.touch'\n\n\n/**\n * Orbit module.\n * @module foundation.orbit\n * @requires foundation.util.keyboard\n * @requires foundation.util.motion\n * @requires foundation.util.timer\n * @requires foundation.util.imageLoader\n * @requires foundation.util.touch\n */\n\nclass Orbit extends Plugin {\n /**\n * Creates a new instance of an orbit carousel.\n * @class\n * @name Orbit\n * @param {jQuery} element - jQuery object to make into an Orbit Carousel.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options){\n this.$element = element;\n this.options = $.extend({}, Orbit.defaults, this.$element.data(), options);\n this.className = 'Orbit'; // ie9 back compat\n\n Touch.init($); // Touch init is idempotent, we just need to make sure it's initialied.\n\n this._init();\n\n Keyboard.register('Orbit', {\n 'ltr': {\n 'ARROW_RIGHT': 'next',\n 'ARROW_LEFT': 'previous'\n },\n 'rtl': {\n 'ARROW_LEFT': 'next',\n 'ARROW_RIGHT': 'previous'\n }\n });\n }\n\n /**\n * Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation.\n * @function\n * @private\n */\n _init() {\n // @TODO: consider discussion on PR #9278 about DOM pollution by changeSlide\n this._reset();\n\n this.$wrapper = this.$element.find(`.${this.options.containerClass}`);\n this.$slides = this.$element.find(`.${this.options.slideClass}`);\n\n var $images = this.$element.find('img'),\n initActive = this.$slides.filter('.is-active'),\n id = this.$element[0].id || GetYoDigits(6, 'orbit');\n\n this.$element.attr({\n 'data-resize': id,\n 'id': id\n });\n\n if (!initActive.length) {\n this.$slides.eq(0).addClass('is-active');\n }\n\n if (!this.options.useMUI) {\n this.$slides.addClass('no-motionui');\n }\n\n if ($images.length) {\n onImagesLoaded($images, this._prepareForOrbit.bind(this));\n } else {\n this._prepareForOrbit();//hehe\n }\n\n if (this.options.bullets) {\n this._loadBullets();\n }\n\n this._events();\n\n if (this.options.autoPlay && this.$slides.length > 1) {\n this.geoSync();\n }\n\n if (this.options.accessible) { // allow wrapper to be focusable to enable arrow navigation\n this.$wrapper.attr('tabindex', 0);\n }\n }\n\n /**\n * Creates a jQuery collection of bullets, if they are being used.\n * @function\n * @private\n */\n _loadBullets() {\n this.$bullets = this.$element.find(`.${this.options.boxOfBullets}`).find('button');\n }\n\n /**\n * Sets a `timer` object on the orbit, and starts the counter for the next slide.\n * @function\n */\n geoSync() {\n var _this = this;\n this.timer = new Timer(\n this.$element,\n {\n duration: this.options.timerDelay,\n infinite: false\n },\n function() {\n _this.changeSlide(true);\n });\n this.timer.start();\n }\n\n /**\n * Sets wrapper and slide heights for the orbit.\n * @function\n * @private\n */\n _prepareForOrbit() {\n this._setWrapperHeight();\n }\n\n /**\n * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height.\n * @function\n * @private\n * @param {Function} cb - a callback function to fire when complete.\n */\n _setWrapperHeight(cb) {//rewrite this to `for` loop\n var max = 0, temp, counter = 0, _this = this;\n\n this.$slides.each(function() {\n temp = this.getBoundingClientRect().height;\n $(this).attr('data-slide', counter);\n\n // hide all slides but the active one\n if (!/mui/g.test($(this)[0].className) && _this.$slides.filter('.is-active')[0] !== _this.$slides.eq(counter)[0]) {\n $(this).css({'display': 'none'});\n }\n max = temp > max ? temp : max;\n counter++;\n });\n\n if (counter === this.$slides.length) {\n this.$wrapper.css({'height': max}); //only change the wrapper height property once.\n if(cb) {cb(max);} //fire callback with max height dimension.\n }\n }\n\n /**\n * Sets the max-height of each slide.\n * @function\n * @private\n */\n _setSlideHeight(height) {\n this.$slides.each(function() {\n $(this).css('max-height', height);\n });\n }\n\n /**\n * Adds event listeners to basically everything within the element.\n * @function\n * @private\n */\n _events() {\n var _this = this;\n\n //***************************************\n //**Now using custom event - thanks to:**\n //** Yohai Ararat of Toronto **\n //***************************************\n //\n this.$element.off('.resizeme.zf.trigger').on({\n 'resizeme.zf.trigger': this._prepareForOrbit.bind(this)\n })\n if (this.$slides.length > 1) {\n\n if (this.options.swipe) {\n this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit')\n .on('swipeleft.zf.orbit', function(e){\n e.preventDefault();\n _this.changeSlide(true);\n }).on('swiperight.zf.orbit', function(e){\n e.preventDefault();\n _this.changeSlide(false);\n });\n }\n //***************************************\n\n if (this.options.autoPlay) {\n this.$slides.on('click.zf.orbit', function() {\n _this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true);\n _this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start']();\n });\n\n if (this.options.pauseOnHover) {\n this.$element.on('mouseenter.zf.orbit', function() {\n _this.timer.pause();\n }).on('mouseleave.zf.orbit', function() {\n if (!_this.$element.data('clickedOn')) {\n _this.timer.start();\n }\n });\n }\n }\n\n if (this.options.navButtons) {\n var $controls = this.$element.find(`.${this.options.nextClass}, .${this.options.prevClass}`);\n $controls.attr('tabindex', 0)\n //also need to handle enter/return and spacebar key presses\n .on('click.zf.orbit touchend.zf.orbit', function(e){\n\t e.preventDefault();\n _this.changeSlide($(this).hasClass(_this.options.nextClass));\n });\n }\n\n if (this.options.bullets) {\n this.$bullets.on('click.zf.orbit touchend.zf.orbit', function() {\n if (/is-active/g.test(this.className)) { return false; }//if this is active, kick out of function.\n var idx = $(this).data('slide'),\n ltr = idx > _this.$slides.filter('.is-active').data('slide'),\n $slide = _this.$slides.eq(idx);\n\n _this.changeSlide(ltr, $slide, idx);\n });\n }\n\n if (this.options.accessible) {\n this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function(e) {\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Orbit', {\n next: function() {\n _this.changeSlide(true);\n },\n previous: function() {\n _this.changeSlide(false);\n },\n handled: function() { // if bullet is focused, make sure focus moves\n if ($(e.target).is(_this.$bullets)) {\n _this.$bullets.filter('.is-active').focus();\n }\n }\n });\n });\n }\n }\n }\n\n /**\n * Resets Orbit so it can be reinitialized\n */\n _reset() {\n // Don't do anything if there are no slides (first run)\n if (typeof this.$slides === 'undefined') {\n return;\n }\n\n if (this.$slides.length > 1) {\n // Remove old events\n this.$element.off('.zf.orbit').find('*').off('.zf.orbit')\n\n // Restart timer if autoPlay is enabled\n if (this.options.autoPlay) {\n this.timer.restart();\n }\n\n // Reset all sliddes\n this.$slides.each(function(el) {\n $(el).removeClass('is-active is-active is-in')\n .removeAttr('aria-live')\n .hide();\n });\n\n // Show the first slide\n this.$slides.first().addClass('is-active').show();\n\n // Triggers when the slide has finished animating\n this.$element.trigger('slidechange.zf.orbit', [this.$slides.first()]);\n\n // Select first bullet if bullets are present\n if (this.options.bullets) {\n this._updateBullets(0);\n }\n }\n }\n\n /**\n * Changes the current slide to a new one.\n * @function\n * @param {Boolean} isLTR - if true the slide moves from right to left, if false the slide moves from left to right.\n * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected.\n * @param {Number} idx - the index of the new slide in its collection, if one chosen.\n * @fires Orbit#slidechange\n */\n changeSlide(isLTR, chosenSlide, idx) {\n if (!this.$slides) {return; } // Don't freak out if we're in the middle of cleanup\n var $curSlide = this.$slides.filter('.is-active').eq(0);\n\n if (/mui/g.test($curSlide[0].className)) { return false; } //if the slide is currently animating, kick out of the function\n\n var $firstSlide = this.$slides.first(),\n $lastSlide = this.$slides.last(),\n dirIn = isLTR ? 'Right' : 'Left',\n dirOut = isLTR ? 'Left' : 'Right',\n _this = this,\n $newSlide;\n\n if (!chosenSlide) { //most of the time, this will be auto played or clicked from the navButtons.\n $newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!!\n (this.options.infiniteWrap ? $curSlide.next(`.${this.options.slideClass}`).length ? $curSlide.next(`.${this.options.slideClass}`) : $firstSlide : $curSlide.next(`.${this.options.slideClass}`))//pick next slide if moving left to right\n :\n (this.options.infiniteWrap ? $curSlide.prev(`.${this.options.slideClass}`).length ? $curSlide.prev(`.${this.options.slideClass}`) : $lastSlide : $curSlide.prev(`.${this.options.slideClass}`));//pick prev slide if moving right to left\n } else {\n $newSlide = chosenSlide;\n }\n\n if ($newSlide.length) {\n /**\n * Triggers before the next slide starts animating in and only if a next slide has been found.\n * @event Orbit#beforeslidechange\n */\n this.$element.trigger('beforeslidechange.zf.orbit', [$curSlide, $newSlide]);\n\n if (this.options.bullets) {\n idx = idx || this.$slides.index($newSlide); //grab index to update bullets\n this._updateBullets(idx);\n }\n\n if (this.options.useMUI && !this.$element.is(':hidden')) {\n Motion.animateIn(\n $newSlide.addClass('is-active'),\n this.options[`animInFrom${dirIn}`],\n function(){\n $newSlide.css({'display': 'block'}).attr('aria-live', 'polite');\n });\n\n Motion.animateOut(\n $curSlide.removeClass('is-active'),\n this.options[`animOutTo${dirOut}`],\n function(){\n $curSlide.removeAttr('aria-live');\n if(_this.options.autoPlay && !_this.timer.isPaused){\n _this.timer.restart();\n }\n //do stuff?\n });\n } else {\n $curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide();\n $newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show();\n if (this.options.autoPlay && !this.timer.isPaused) {\n this.timer.restart();\n }\n }\n /**\n * Triggers when the slide has finished animating in.\n * @event Orbit#slidechange\n */\n this.$element.trigger('slidechange.zf.orbit', [$newSlide]);\n }\n }\n\n /**\n * Updates the active state of the bullets, if displayed.\n * Move the descriptor of the current slide `[data-slide-active-label]` to the newly active bullet.\n * If no `[data-slide-active-label]` is set, will move the exceeding `span` element.\n *\n * @function\n * @private\n * @param {Number} idx - the index of the current slide.\n */\n _updateBullets(idx) {\n var $oldBullet = this.$bullets.filter('.is-active');\n var $othersBullets = this.$bullets.not('.is-active');\n var $newBullet = this.$bullets.eq(idx);\n\n $oldBullet.removeClass('is-active').blur();\n $newBullet.addClass('is-active');\n\n // Find the descriptor for the current slide to move it to the new slide button\n var activeStateDescriptor = $oldBullet.children('[data-slide-active-label]').last();\n\n // If not explicitely given, search for the last \"exceeding\" span element (compared to others bullets).\n if (!activeStateDescriptor.length) {\n var spans = $oldBullet.children('span');\n var spanCountInOthersBullets = $othersBullets.toArray().map(b => $(b).children('span').length);\n\n // If there is an exceeding span element, use it as current slide descriptor\n if (spanCountInOthersBullets.every(count => count < spans.length)) {\n activeStateDescriptor = spans.last();\n activeStateDescriptor.attr('data-slide-active-label', '');\n }\n }\n\n // Move the current slide descriptor to the new slide button\n if (activeStateDescriptor.length) {\n activeStateDescriptor.detach();\n $newBullet.append(activeStateDescriptor);\n }\n }\n\n /**\n * Destroys the carousel and hides the element.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide();\n }\n}\n\nOrbit.defaults = {\n /**\n * Tells the JS to look for and loadBullets.\n * @option\n * @type {boolean}\n * @default true\n */\n bullets: true,\n /**\n * Tells the JS to apply event listeners to nav buttons\n * @option\n * @type {boolean}\n * @default true\n */\n navButtons: true,\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-in-right'\n */\n animInFromRight: 'slide-in-right',\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-out-right'\n */\n animOutToRight: 'slide-out-right',\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-in-left'\n *\n */\n animInFromLeft: 'slide-in-left',\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-out-left'\n */\n animOutToLeft: 'slide-out-left',\n /**\n * Allows Orbit to automatically animate on page load.\n * @option\n * @type {boolean}\n * @default true\n */\n autoPlay: true,\n /**\n * Amount of time, in ms, between slide transitions\n * @option\n * @type {number}\n * @default 5000\n */\n timerDelay: 5000,\n /**\n * Allows Orbit to infinitely loop through the slides\n * @option\n * @type {boolean}\n * @default true\n */\n infiniteWrap: true,\n /**\n * Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library\n * @option\n * @type {boolean}\n * @default true\n */\n swipe: true,\n /**\n * Allows the timing function to pause animation on hover.\n * @option\n * @type {boolean}\n * @default true\n */\n pauseOnHover: true,\n /**\n * Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys\n * @option\n * @type {boolean}\n * @default true\n */\n accessible: true,\n /**\n * Class applied to the container of Orbit\n * @option\n * @type {string}\n * @default 'orbit-container'\n */\n containerClass: 'orbit-container',\n /**\n * Class applied to individual slides.\n * @option\n * @type {string}\n * @default 'orbit-slide'\n */\n slideClass: 'orbit-slide',\n /**\n * Class applied to the bullet container. You're welcome.\n * @option\n * @type {string}\n * @default 'orbit-bullets'\n */\n boxOfBullets: 'orbit-bullets',\n /**\n * Class applied to the `next` navigation button.\n * @option\n * @type {string}\n * @default 'orbit-next'\n */\n nextClass: 'orbit-next',\n /**\n * Class applied to the `previous` navigation button.\n * @option\n * @type {string}\n * @default 'orbit-previous'\n */\n prevClass: 'orbit-previous',\n /**\n * Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatibility.\n * @option\n * @type {boolean}\n * @default true\n */\n useMUI: true\n};\n\nexport {Orbit};\n","import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\nimport { DropdownMenu } from './foundation.dropdownMenu';\nimport { Drilldown } from './foundation.drilldown';\nimport { AccordionMenu } from './foundation.accordionMenu';\n\nlet MenuPlugins = {\n dropdown: {\n cssClass: 'dropdown',\n plugin: DropdownMenu\n },\n drilldown: {\n cssClass: 'drilldown',\n plugin: Drilldown\n },\n accordion: {\n cssClass: 'accordion-menu',\n plugin: AccordionMenu\n }\n};\n\n // import \"foundation.util.triggers.js\";\n\n\n/**\n * ResponsiveMenu module.\n * @module foundation.responsiveMenu\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass ResponsiveMenu extends Plugin {\n /**\n * Creates a new instance of a responsive menu.\n * @class\n * @name ResponsiveMenu\n * @fires ResponsiveMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element) {\n this.$element = $(element);\n this.rules = this.$element.data('responsive-menu');\n this.currentMq = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveMenu'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element.\n * @function\n * @private\n */\n _init() {\n\n MediaQuery._init();\n // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n if (typeof this.rules === 'string') {\n let rulesTree = {};\n\n // Parse rules from \"classes\" pulled from data attribute\n let rules = this.rules.split(' ');\n\n // Iterate through every rule found\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i].split('-');\n let ruleSize = rule.length > 1 ? rule[0] : 'small';\n let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n // Add data-mutate since children may need it.\n this.$element.attr('data-mutate', (this.$element.attr('data-mutate') || GetYoDigits(6, 'responsive-menu')));\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n var _this = this;\n\n $(window).on('changed.zf.mediaquery', function() {\n _this._checkMediaQueries();\n });\n // $(window).on('resize.zf.ResponsiveMenu', function() {\n // _this._checkMediaQueries();\n // });\n }\n\n /**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */\n _checkMediaQueries() {\n var matchedMq, _this = this;\n // Iterate through each rule and find the last matching rule\n $.each(this.rules, function(key) {\n if (MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n // No match? No dice\n if (!matchedMq) return;\n\n // Plugin already initialized? We good\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n // Remove existing plugin-specific CSS classes\n $.each(MenuPlugins, function(key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n // Add the CSS class for the new plugin\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n // Create an instance of the new plugin\n if (this.currentPlugin) this.currentPlugin.destroy();\n this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});\n }\n\n /**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */\n _destroy() {\n this.currentPlugin.destroy();\n $(window).off('.zf.ResponsiveMenu');\n }\n}\n\nResponsiveMenu.defaults = {};\n\nexport {ResponsiveMenu};\n","import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * ResponsiveToggle module.\n * @module foundation.responsiveToggle\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion\n */\n\nclass ResponsiveToggle extends Plugin {\n /**\n * Creates a new instance of Tab Bar.\n * @class\n * @name ResponsiveToggle\n * @fires ResponsiveToggle#init\n * @param {jQuery} element - jQuery object to attach tab bar functionality to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.options = $.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);\n this.className = 'ResponsiveToggle'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the tab bar by finding the target element, toggling element, and running update().\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n var targetID = this.$element.data('responsive-toggle');\n if (!targetID) {\n console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');\n }\n\n this.$targetMenu = $(`#${targetID}`);\n this.$toggler = this.$element.find('[data-toggle]').filter(function() {\n var target = $(this).data('toggle');\n return (target === targetID || target === \"\");\n });\n this.options = $.extend({}, this.options, this.$targetMenu.data());\n\n // If they were set, parse the animation classes\n if(this.options.animate) {\n let input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n }\n\n this._update();\n }\n\n /**\n * Adds necessary event handlers for the tab bar to work.\n * @function\n * @private\n */\n _events() {\n this._updateMqHandler = this._update.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._updateMqHandler);\n\n this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));\n }\n\n /**\n * Checks the current media query to determine if the tab bar should be visible or hidden.\n * @function\n * @private\n */\n _update() {\n // Mobile\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n this.$element.show();\n this.$targetMenu.hide();\n }\n\n // Desktop\n else {\n this.$element.hide();\n this.$targetMenu.show();\n }\n }\n\n /**\n * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it.\n * @function\n * @fires ResponsiveToggle#toggled\n */\n toggleMenu() {\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n /**\n * Fires when the element attached to the tab bar toggles.\n * @event ResponsiveToggle#toggled\n */\n if(this.options.animate) {\n if (this.$targetMenu.is(':hidden')) {\n Motion.animateIn(this.$targetMenu, this.animationIn, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n this.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$targetMenu, this.animationOut, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n });\n }\n }\n else {\n this.$targetMenu.toggle(0);\n this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger');\n this.$element.trigger('toggled.zf.responsiveToggle');\n }\n }\n };\n\n _destroy() {\n this.$element.off('.zf.responsiveToggle');\n this.$toggler.off('.zf.responsiveToggle');\n\n $(window).off('changed.zf.mediaquery', this._updateMqHandler);\n }\n}\n\nResponsiveToggle.defaults = {\n /**\n * The breakpoint after which the menu is always shown, and the tab bar is hidden.\n * @option\n * @type {string}\n * @default 'medium'\n */\n hideFor: 'medium',\n\n /**\n * To decide if the toggle should be animated or not.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport { ResponsiveToggle };\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Reveal module.\n * @module foundation.reveal\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion if using animations\n */\n\nclass Reveal extends Plugin {\n /**\n * Creates a new instance of Reveal.\n * @class\n * @name Reveal\n * @param {jQuery} element - jQuery object to use for the modal.\n * @param {Object} options - optional parameters.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Reveal.defaults, this.$element.data(), options);\n this.className = 'Reveal'; // ie9 back compat\n this._init();\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n Keyboard.register('Reveal', {\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the modal by adding the overlay and close buttons, (if selected).\n * @private\n */\n _init() {\n MediaQuery._init();\n this.id = this.$element.attr('id');\n this.isActive = false;\n this.cached = {mq: MediaQuery.current};\n\n this.$anchor = $(`[data-open=\"${this.id}\"]`).length ? $(`[data-open=\"${this.id}\"]`) : $(`[data-toggle=\"${this.id}\"]`);\n this.$anchor.attr({\n 'aria-controls': this.id,\n 'aria-haspopup': 'dialog',\n 'tabindex': 0\n });\n\n if (this.options.fullScreen || this.$element.hasClass('full')) {\n this.options.fullScreen = true;\n this.options.overlay = false;\n }\n if (this.options.overlay && !this.$overlay) {\n this.$overlay = this._makeOverlay(this.id);\n }\n\n this.$element.attr({\n 'role': 'dialog',\n 'aria-hidden': true,\n 'data-yeti-box': this.id,\n 'data-resize': this.id\n });\n\n if(this.$overlay) {\n this.$element.detach().appendTo(this.$overlay);\n } else {\n this.$element.detach().appendTo($(this.options.appendTo));\n this.$element.addClass('without-overlay');\n }\n this._events();\n if (this.options.deepLink && window.location.hash === ( `#${this.id}`)) {\n this.onLoadListener = onLoad($(window), () => this.open());\n }\n }\n\n /**\n * Creates an overlay div to display behind the modal.\n * @private\n */\n _makeOverlay() {\n var additionalOverlayClasses = '';\n\n if (this.options.additionalOverlayClasses) {\n additionalOverlayClasses = ' ' + this.options.additionalOverlayClasses;\n }\n\n return $('<div></div>')\n .addClass('reveal-overlay' + additionalOverlayClasses)\n .appendTo(this.options.appendTo);\n }\n\n /**\n * Updates position of modal\n * TODO: Figure out if we actually need to cache these values or if it doesn't matter\n * @private\n */\n _updatePosition() {\n var width = this.$element.outerWidth();\n var outerWidth = $(window).width();\n var height = this.$element.outerHeight();\n var outerHeight = $(window).height();\n var left, top = null;\n if (this.options.hOffset === 'auto') {\n left = parseInt((outerWidth - width) / 2, 10);\n } else {\n left = parseInt(this.options.hOffset, 10);\n }\n if (this.options.vOffset === 'auto') {\n if (height > outerHeight) {\n top = parseInt(Math.min(100, outerHeight / 10), 10);\n } else {\n top = parseInt((outerHeight - height) / 4, 10);\n }\n } else if (this.options.vOffset !== null) {\n top = parseInt(this.options.vOffset, 10);\n }\n\n if (top !== null) {\n this.$element.css({top: top + 'px'});\n }\n\n // only worry about left if we don't have an overlay or we have a horizontal offset,\n // otherwise we're perfectly in the middle\n if (!this.$overlay || (this.options.hOffset !== 'auto')) {\n this.$element.css({left: left + 'px'});\n this.$element.css({margin: '0px'});\n }\n\n }\n\n /**\n * Adds event handlers for the modal.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': (event, $element) => {\n if ((event.target === _this.$element[0]) ||\n ($(event.target).parents('[data-closable]')[0] === $element)) { // only close reveal when it's explicitly called\n return this.close.apply(this);\n }\n },\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': function() {\n _this._updatePosition();\n }\n });\n\n if (this.options.closeOnClick && this.options.overlay) {\n this.$overlay.off('.zf.reveal').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) {\n return;\n }\n _this.close();\n });\n }\n if (this.options.deepLink) {\n $(window).on(`hashchange.zf.reveal:${this.id}`, this._handleState.bind(this));\n }\n }\n\n /**\n * Handles modal methods on back/forward button clicks or any other event that triggers hashchange.\n * @private\n */\n _handleState() {\n if(window.location.hash === ( '#' + this.id) && !this.isActive){ this.open(); }\n else{ this.close(); }\n }\n\n /**\n * Disables the scroll when Reveal is shown to prevent the background from shifting\n * @param {number} scrollTop - Scroll to visually apply, window current scroll by default\n */\n _disableScroll(scrollTop) {\n scrollTop = scrollTop || $(window).scrollTop();\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", -scrollTop);\n }\n }\n\n /**\n * Reenables the scroll when Reveal closes\n * @param {number} scrollTop - Scroll to restore, html \"top\" property by default (as set by `_disableScroll`)\n */\n _enableScroll(scrollTop) {\n scrollTop = scrollTop || parseInt($(\"html\").css(\"top\"), 10);\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", \"\");\n $(window).scrollTop(-scrollTop);\n }\n }\n\n\n /**\n * Opens the modal controlled by `this.$anchor`, and closes all others by default.\n * @function\n * @fires Reveal#closeme\n * @fires Reveal#open\n */\n open() {\n // either update or replace browser history\n const hash = `#${this.id}`;\n if (this.options.deepLink && window.location.hash !== hash) {\n\n if (window.history.pushState) {\n if (this.options.updateHistory) {\n window.history.pushState({}, '', hash);\n } else {\n window.history.replaceState({}, '', hash);\n }\n } else {\n window.location.hash = hash;\n }\n }\n\n // Remember anchor that opened it to set focus back later, have general anchors as fallback\n this.$activeAnchor = $(document.activeElement).is(this.$anchor) ? $(document.activeElement) : this.$anchor;\n\n this.isActive = true;\n\n // Make elements invisible, but remove display: none so we can get size and positioning\n this.$element\n .css({ 'visibility': 'hidden' })\n .show()\n .scrollTop(0);\n if (this.options.overlay) {\n this.$overlay.css({'visibility': 'hidden'}).show();\n }\n\n this._updatePosition();\n\n this.$element\n .hide()\n .css({ 'visibility': '' });\n\n if(this.$overlay) {\n this.$overlay.css({'visibility': ''}).hide();\n if(this.$element.hasClass('fast')) {\n this.$overlay.addClass('fast');\n } else if (this.$element.hasClass('slow')) {\n this.$overlay.addClass('slow');\n }\n }\n\n\n if (!this.options.multipleOpened) {\n /**\n * Fires immediately before the modal opens.\n * Closes any other modals that are currently open\n * @event Reveal#closeme\n */\n this.$element.trigger('closeme.zf.reveal', this.id);\n }\n\n if ($('.reveal:visible').length === 0) {\n this._disableScroll();\n }\n\n var _this = this;\n\n // Motion UI method of reveal\n if (this.options.animationIn) {\n function afterAnimation(){\n _this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n _this._addGlobalClasses();\n Keyboard.trapFocus(_this.$element);\n }\n if (this.options.overlay) {\n Motion.animateIn(this.$overlay, 'fade-in');\n }\n Motion.animateIn(this.$element, this.options.animationIn, () => {\n if(this.$element) { // protect against object having been removed\n this.focusableElements = Keyboard.findFocusable(this.$element);\n afterAnimation();\n }\n });\n }\n // jQuery method of reveal\n else {\n if (this.options.overlay) {\n this.$overlay.show(0);\n }\n this.$element.show(this.options.showDelay);\n }\n\n // handle accessibility\n this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n Keyboard.trapFocus(this.$element);\n\n this._addGlobalClasses();\n\n this._addGlobalListeners();\n\n /**\n * Fires when the modal has successfully opened.\n * @event Reveal#open\n */\n this.$element.trigger('open.zf.reveal');\n }\n\n /**\n * Adds classes and listeners on document required by open modals.\n *\n * The following classes are added and updated:\n * - `.is-reveal-open` - Prevents the scroll on document\n * - `.zf-has-scroll` - Displays a disabled scrollbar on document if required like if the\n * scroll was not disabled. This prevent a \"shift\" of the page content due\n * the scrollbar disappearing when the modal opens.\n *\n * @private\n */\n _addGlobalClasses() {\n const updateScrollbarClass = () => {\n $('html').toggleClass('zf-has-scroll', !!($(document).height() > $(window).height()));\n };\n\n this.$element.on('resizeme.zf.trigger.revealScrollbarListener', () => updateScrollbarClass());\n updateScrollbarClass();\n $('html').addClass('is-reveal-open');\n }\n\n /**\n * Removes classes and listeners on document that were required by open modals.\n * @private\n */\n _removeGlobalClasses() {\n this.$element.off('resizeme.zf.trigger.revealScrollbarListener');\n $('html').removeClass('is-reveal-open');\n $('html').removeClass('zf-has-scroll');\n }\n\n /**\n * Adds extra event handlers for the body and window if necessary.\n * @private\n */\n _addGlobalListeners() {\n var _this = this;\n if(!this.$element) { return; } // If we're in the middle of cleanup, don't freak out\n this.focusableElements = Keyboard.findFocusable(this.$element);\n\n if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) {\n $('body').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) { return; }\n _this.close();\n });\n }\n\n if (this.options.closeOnEsc) {\n $(window).on('keydown.zf.reveal', function(e) {\n Keyboard.handleKey(e, 'Reveal', {\n close: function() {\n if (_this.options.closeOnEsc) {\n _this.close();\n }\n }\n });\n });\n }\n }\n\n /**\n * Closes the modal.\n * @function\n * @fires Reveal#closed\n */\n close() {\n if (!this.isActive || !this.$element.is(':visible')) {\n return false;\n }\n var _this = this;\n\n // Motion UI method of hiding\n if (this.options.animationOut) {\n if (this.options.overlay) {\n Motion.animateOut(this.$overlay, 'fade-out');\n }\n\n Motion.animateOut(this.$element, this.options.animationOut, finishUp);\n }\n // jQuery method of hiding\n else {\n this.$element.hide(this.options.hideDelay);\n\n if (this.options.overlay) {\n this.$overlay.hide(0, finishUp);\n }\n else {\n finishUp();\n }\n }\n\n // Conditionals to remove extra event listeners added on open\n if (this.options.closeOnEsc) {\n $(window).off('keydown.zf.reveal');\n }\n\n if (!this.options.overlay && this.options.closeOnClick) {\n $('body').off('click.zf.dropdown tap.zf.dropdown');\n }\n\n this.$element.off('keydown.zf.reveal');\n\n function finishUp() {\n\n // Get the current top before the modal is closed and restore the scroll after.\n // TODO: use component properties instead of HTML properties\n // See https://github.com/foundation/foundation-sites/pull/10786\n var scrollTop = parseInt($(\"html\").css(\"top\"), 10);\n\n if ($('.reveal:visible').length === 0) {\n _this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n\n Keyboard.releaseFocus(_this.$element);\n\n _this.$element.attr('aria-hidden', true);\n\n if ($('.reveal:visible').length === 0) {\n _this._enableScroll(scrollTop);\n }\n\n /**\n * Fires when the modal is done closing.\n * @event Reveal#closed\n */\n _this.$element.trigger('closed.zf.reveal');\n }\n\n /**\n * Resets the modal content\n * This prevents a running video to keep going in the background\n */\n if (this.options.resetOnClose) {\n this.$element.html(this.$element.html());\n }\n\n this.isActive = false;\n // If deepLink and we did not switched to an other modal...\n if (_this.options.deepLink && window.location.hash === `#${this.id}`) {\n // Remove the history hash\n if (window.history.replaceState) {\n const urlWithoutHash = window.location.pathname + window.location.search;\n if (this.options.updateHistory) {\n window.history.pushState({}, '', urlWithoutHash); // remove the hash\n } else {\n window.history.replaceState('', document.title, urlWithoutHash);\n }\n } else {\n window.location.hash = '';\n }\n }\n\n this.$activeAnchor.focus();\n }\n\n /**\n * Toggles the open/closed state of a modal.\n * @function\n */\n toggle() {\n if (this.isActive) {\n this.close();\n } else {\n this.open();\n }\n };\n\n /**\n * Destroys an instance of a modal.\n * @function\n */\n _destroy() {\n if (this.options.overlay) {\n this.$element.appendTo($(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin()\n this.$overlay.hide().off().remove();\n }\n this.$element.hide().off();\n this.$anchor.off('.zf');\n $(window).off(`.zf.reveal:${this.id}`)\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n\n if ($('.reveal:visible').length === 0) {\n this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n };\n}\n\nReveal.defaults = {\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationIn: '',\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationOut: '',\n /**\n * Time, in ms, to delay the opening of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n showDelay: 0,\n /**\n * Time, in ms, to delay the closing of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n hideDelay: 0,\n /**\n * Allows a click on the body/overlay to close the modal.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allows the modal to close if the user presses the `ESCAPE` key.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnEsc: true,\n /**\n * If true, allows multiple modals to be displayed at once.\n * @option\n * @type {boolean}\n * @default false\n */\n multipleOpened: false,\n /**\n * Distance, in pixels, the modal should push down from the top of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n vOffset: 'auto',\n /**\n * Distance, in pixels, the modal should push in from the side of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n hOffset: 'auto',\n /**\n * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.\n * @option\n * @type {boolean}\n * @default false\n */\n fullScreen: false,\n /**\n * Allows the modal to generate an overlay div, which will cover the view when modal opens.\n * @option\n * @type {boolean}\n * @default true\n */\n overlay: true,\n /**\n * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.\n * @option\n * @type {boolean}\n * @default false\n */\n resetOnClose: false,\n /**\n * Link the location hash to the modal.\n * Set the location hash when the modal is opened/closed, and open/close the modal when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, update the browser history with the open modal\n * @option\n * @default false\n */\n updateHistory: false,\n /**\n * Allows the modal to append to custom div.\n * @option\n * @type {string}\n * @default \"body\"\n */\n appendTo: \"body\",\n /**\n * Allows adding additional class names to the reveal overlay.\n * @option\n * @type {string}\n * @default ''\n */\n additionalOverlayClasses: ''\n};\n\nexport {Reveal};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Move } from './foundation.util.motion';\nimport { GetYoDigits, rtl as Rtl } from './foundation.core.utils';\n\nimport { Plugin } from './foundation.core.plugin';\n\nimport { Touch } from './foundation.util.touch';\n\nimport { Triggers } from './foundation.util.triggers';\n/**\n * Slider module.\n * @module foundation.slider\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n */\n\nclass Slider extends Plugin {\n /**\n * Creates a new instance of a slider control.\n * @class\n * @name Slider\n * @param {jQuery} element - jQuery object to make into a slider control.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Slider.defaults, this.$element.data(), options);\n this.className = 'Slider'; // ie9 back compat\n this.initialized = false;\n\n // Touch and Triggers inits are idempotent, we just need to make sure it's initialied.\n Touch.init($);\n Triggers.init($);\n\n this._init();\n\n Keyboard.register('Slider', {\n 'ltr': {\n 'ARROW_RIGHT': 'increase',\n 'ARROW_UP': 'increase',\n 'ARROW_DOWN': 'decrease',\n 'ARROW_LEFT': 'decrease',\n 'SHIFT_ARROW_RIGHT': 'increaseFast',\n 'SHIFT_ARROW_UP': 'increaseFast',\n 'SHIFT_ARROW_DOWN': 'decreaseFast',\n 'SHIFT_ARROW_LEFT': 'decreaseFast',\n 'HOME': 'min',\n 'END': 'max'\n },\n 'rtl': {\n 'ARROW_LEFT': 'increase',\n 'ARROW_RIGHT': 'decrease',\n 'SHIFT_ARROW_LEFT': 'increaseFast',\n 'SHIFT_ARROW_RIGHT': 'decreaseFast'\n }\n });\n }\n\n /**\n * Initilizes the plugin by reading/setting attributes, creating collections and setting the initial position of the handle(s).\n * @function\n * @private\n */\n _init() {\n this.inputs = this.$element.find('input');\n this.handles = this.$element.find('[data-slider-handle]');\n\n this.$handle = this.handles.eq(0);\n this.$input = this.inputs.length ? this.inputs.eq(0) : $(`#${this.$handle.attr('aria-controls')}`);\n this.$fill = this.$element.find('[data-slider-fill]').css(this.options.vertical ? 'height' : 'width', 0);\n\n if (this.options.disabled || this.$element.hasClass(this.options.disabledClass)) {\n this.options.disabled = true;\n this.$element.addClass(this.options.disabledClass);\n }\n if (!this.inputs.length) {\n this.inputs = $().add(this.$input);\n this.options.binding = true;\n }\n\n this._setInitAttr(0);\n\n if (this.handles[1]) {\n this.options.doubleSided = true;\n this.$handle2 = this.handles.eq(1);\n this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : $(`#${this.$handle2.attr('aria-controls')}`);\n\n if (!this.inputs[1]) {\n this.inputs = this.inputs.add(this.$input2);\n }\n\n // this.$handle.triggerHandler('click.zf.slider');\n this._setInitAttr(1);\n }\n\n // Set handle positions\n this.setHandles();\n\n this._events();\n this.initialized = true;\n }\n\n setHandles() {\n if(this.handles[1]) {\n this._setHandlePos(this.$handle, this.inputs.eq(0).val(), () => {\n this._setHandlePos(this.$handle2, this.inputs.eq(1).val());\n });\n } else {\n this._setHandlePos(this.$handle, this.inputs.eq(0).val());\n }\n }\n\n _reflow() {\n this.setHandles();\n }\n /**\n * @function\n * @private\n * @param {Number} value - floating point (the value) to be transformed using to a relative position on the slider (the inverse of _value)\n */\n _pctOfBar(value) {\n var pctOfBar = percent(value - this.options.start, this.options.end - this.options.start)\n\n switch(this.options.positionValueFunction) {\n case \"pow\":\n pctOfBar = this._logTransform(pctOfBar);\n break;\n case \"log\":\n pctOfBar = this._powTransform(pctOfBar);\n break;\n }\n\n return pctOfBar.toFixed(2)\n }\n\n /**\n * @function\n * @private\n * @param {Number} pctOfBar - floating point, the relative position of the slider (typically between 0-1) to be transformed to a value\n */\n _value(pctOfBar) {\n switch(this.options.positionValueFunction) {\n case \"pow\":\n pctOfBar = this._powTransform(pctOfBar);\n break;\n case \"log\":\n pctOfBar = this._logTransform(pctOfBar);\n break;\n }\n\n var value\n if (this.options.vertical) {\n // linear interpolation which is working with negative values for start\n // https://math.stackexchange.com/a/1019084\n value = parseFloat(this.options.end) + pctOfBar * (this.options.start - this.options.end)\n } else {\n value = (this.options.end - this.options.start) * pctOfBar + parseFloat(this.options.start);\n }\n\n return value\n }\n\n /**\n * @function\n * @private\n * @param {Number} value - floating point (typically between 0-1) to be transformed using the log function\n */\n _logTransform(value) {\n return baseLog(this.options.nonLinearBase, ((value*(this.options.nonLinearBase-1))+1))\n }\n\n /**\n * @function\n * @private\n * @param {Number} value - floating point (typically between 0-1) to be transformed using the power function\n */\n _powTransform(value) {\n return (Math.pow(this.options.nonLinearBase, value) - 1) / (this.options.nonLinearBase - 1)\n }\n\n /**\n * Sets the position of the selected handle and fill bar.\n * @function\n * @private\n * @param {jQuery} $hndl - the selected handle to move.\n * @param {Number} location - floating point between the start and end values of the slider bar.\n * @param {Function} cb - callback function to fire on completion.\n * @fires Slider#moved\n * @fires Slider#changed\n */\n _setHandlePos($hndl, location, cb) {\n // don't move if the slider has been disabled since its initialization\n if (this.$element.hasClass(this.options.disabledClass)) {\n return;\n }\n //might need to alter that slightly for bars that will have odd number selections.\n location = parseFloat(location);//on input change events, convert string to number...grumble.\n\n // prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max\n if (location < this.options.start) { location = this.options.start; }\n else if (location > this.options.end) { location = this.options.end; }\n\n var isDbl = this.options.doubleSided;\n\n if (isDbl) { //this block is to prevent 2 handles from crossing eachother. Could/should be improved.\n if (this.handles.index($hndl) === 0) {\n var h2Val = parseFloat(this.$handle2.attr('aria-valuenow'));\n location = location >= h2Val ? h2Val - this.options.step : location;\n } else {\n var h1Val = parseFloat(this.$handle.attr('aria-valuenow'));\n location = location <= h1Val ? h1Val + this.options.step : location;\n }\n }\n\n var _this = this,\n vert = this.options.vertical,\n hOrW = vert ? 'height' : 'width',\n lOrT = vert ? 'top' : 'left',\n handleDim = $hndl[0].getBoundingClientRect()[hOrW],\n elemDim = this.$element[0].getBoundingClientRect()[hOrW],\n //percentage of bar min/max value based on click or drag point\n pctOfBar = this._pctOfBar(location),\n //number of actual pixels to shift the handle, based on the percentage obtained above\n pxToMove = (elemDim - handleDim) * pctOfBar,\n //percentage of bar to shift the handle\n movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal);\n //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value\n location = parseFloat(location.toFixed(this.options.decimal));\n // declare empty object for css adjustments, only used with 2 handled-sliders\n var css = {};\n\n this._setValues($hndl, location);\n\n // TODO update to calculate based on values set to respective inputs??\n if (isDbl) {\n var isLeftHndl = this.handles.index($hndl) === 0,\n //empty variable, will be used for min-height/width for fill bar\n dim,\n //percentage w/h of the handle compared to the slider bar\n handlePct = Math.floor(percent(handleDim, elemDim) * 100);\n //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar\n if (isLeftHndl) {\n //left or top percentage value to apply to the fill bar.\n css[lOrT] = `${movement}%`;\n //calculate the new min-height/width for the fill bar.\n dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct;\n //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider\n //plus, it means we don't care if 'dim' isNaN on init, it won't be in the future.\n if (cb && typeof cb === 'function') { cb(); }//this is only needed for the initialization of 2 handled sliders\n } else {\n //just caching the value of the left/bottom handle's left/top property\n var handlePos = parseFloat(this.$handle[0].style[lOrT]);\n //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0\n //based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself\n dim = movement - (isNaN(handlePos) ? (this.options.initialStart - this.options.start)/((this.options.end-this.options.start)/100) : handlePos) + handlePct;\n }\n // assign the min-height/width to our css object\n css[`min-${hOrW}`] = `${dim}%`;\n }\n\n //because we don't know exactly how the handle will be moved, check the amount of time it should take to move.\n var moveTime = this.$element.data('dragging') ? 1000/60 : this.options.moveTime;\n\n Move(moveTime, $hndl, function() {\n // adjusting the left/top property of the handle, based on the percentage calculated above\n // if movement isNaN, that is because the slider is hidden and we cannot determine handle width,\n // fall back to next best guess.\n if (isNaN(movement)) {\n $hndl.css(lOrT, `${pctOfBar * 100}%`);\n }\n else {\n $hndl.css(lOrT, `${movement}%`);\n }\n\n if (!_this.options.doubleSided) {\n //if single-handled, a simple method to expand the fill bar\n _this.$fill.css(hOrW, `${pctOfBar * 100}%`);\n } else {\n //otherwise, use the css object we created above\n _this.$fill.css(css);\n }\n });\n\n if (this.initialized) {\n this.$element.one('finished.zf.animate', function() {\n /**\n * Fires when the handle is done moving.\n * @event Slider#moved\n */\n _this.$element.trigger('moved.zf.slider', [$hndl]);\n });\n /**\n * Fires when the value has not been change for a given time.\n * @event Slider#changed\n */\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.$element.trigger('changed.zf.slider', [$hndl]);\n }, _this.options.changedDelay);\n }\n }\n\n /**\n * Sets the initial attribute for the slider element.\n * @function\n * @private\n * @param {Number} idx - index of the current handle/input to use.\n */\n _setInitAttr(idx) {\n var initVal = (idx === 0 ? this.options.initialStart : this.options.initialEnd)\n var id = this.inputs.eq(idx).attr('id') || GetYoDigits(6, 'slider');\n this.inputs.eq(idx).attr({\n 'id': id,\n 'max': this.options.end,\n 'min': this.options.start,\n 'step': this.options.step\n });\n this.inputs.eq(idx).val(initVal);\n this.handles.eq(idx).attr({\n 'role': 'slider',\n 'aria-controls': id,\n 'aria-valuemax': this.options.end,\n 'aria-valuemin': this.options.start,\n 'aria-valuenow': initVal,\n 'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal',\n 'tabindex': 0\n });\n }\n\n /**\n * Sets the input and `aria-valuenow` values for the slider element.\n * @function\n * @private\n * @param {jQuery} $handle - the currently selected handle.\n * @param {Number} val - floating point of the new value.\n */\n _setValues($handle, val) {\n var idx = this.options.doubleSided ? this.handles.index($handle) : 0;\n this.inputs.eq(idx).val(val);\n $handle.attr('aria-valuenow', val);\n }\n\n /**\n * Handles events on the slider element.\n * Calculates the new location of the current handle.\n * If there are two handles and the bar was clicked, it determines which handle to move.\n * @function\n * @private\n * @param {Object} e - the `event` object passed from the listener.\n * @param {jQuery} $handle - the current handle to calculate for, if selected.\n * @param {Number} val - floating point number for the new value of the slider.\n * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn.\n */\n _handleEvent(e, $handle, val) {\n var value;\n if (!val) {//click or drag events\n e.preventDefault();\n var _this = this,\n vertical = this.options.vertical,\n param = vertical ? 'height' : 'width',\n direction = vertical ? 'top' : 'left',\n eventOffset = vertical ? e.pageY : e.pageX,\n barDim = this.$element[0].getBoundingClientRect()[param],\n windowScroll = vertical ? $(window).scrollTop() : $(window).scrollLeft();\n\n var elemOffset = this.$element.offset()[direction];\n\n // touch events emulated by the touch util give position relative to screen, add window.scroll to event coordinates...\n // best way to guess this is simulated is if clientY == pageY\n if (e.clientY === e.pageY) { eventOffset = eventOffset + windowScroll; }\n var eventFromBar = eventOffset - elemOffset;\n var barXY;\n if (eventFromBar < 0) {\n barXY = 0;\n } else if (eventFromBar > barDim) {\n barXY = barDim;\n } else {\n barXY = eventFromBar;\n }\n var offsetPct = percent(barXY, barDim);\n\n value = this._value(offsetPct);\n\n // turn everything around for RTL, yay math!\n if (Rtl() && !this.options.vertical) {value = this.options.end - value;}\n\n value = _this._adjustValue(null, value);\n\n if (!$handle) {//figure out which handle it is, pass it to the next function.\n var firstHndlPos = absPosition(this.$handle, direction, barXY, param),\n secndHndlPos = absPosition(this.$handle2, direction, barXY, param);\n $handle = firstHndlPos <= secndHndlPos ? this.$handle : this.$handle2;\n }\n\n } else {//change event on input\n value = this._adjustValue(null, val);\n }\n\n this._setHandlePos($handle, value);\n }\n\n /**\n * Adjustes value for handle in regard to step value. returns adjusted value\n * @function\n * @private\n * @param {jQuery} $handle - the selected handle.\n * @param {Number} value - value to adjust. used if $handle is falsy\n */\n _adjustValue($handle, value) {\n var val,\n step = this.options.step,\n div = parseFloat(step/2),\n left, previousVal, nextVal;\n if (!!$handle) {\n val = parseFloat($handle.attr('aria-valuenow'));\n }\n else {\n val = value;\n }\n if (val >= 0) {\n left = val % step;\n } else {\n left = step + (val % step);\n }\n previousVal = val - left;\n nextVal = previousVal + step;\n if (left === 0) {\n return val;\n }\n val = val >= previousVal + div ? nextVal : previousVal;\n return val;\n }\n\n /**\n * Adds event listeners to the slider elements.\n * @function\n * @private\n */\n _events() {\n this._eventsForHandle(this.$handle);\n if(this.handles[1]) {\n this._eventsForHandle(this.$handle2);\n }\n }\n\n\n /**\n * Adds event listeners a particular handle\n * @function\n * @private\n * @param {jQuery} $handle - the current handle to apply listeners to.\n */\n _eventsForHandle($handle) {\n var _this = this,\n curHandle;\n\n const handleChangeEvent = function(e) {\n const idx = _this.inputs.index($(this));\n _this._handleEvent(e, _this.handles.eq(idx), $(this).val());\n };\n\n // IE only triggers the change event when the input loses focus which strictly follows the HTML specification\n // listen for the enter key and trigger a change\n // @see https://html.spec.whatwg.org/multipage/input.html#common-input-element-events\n this.inputs.off('keyup.zf.slider').on('keyup.zf.slider', function (e) {\n if(e.keyCode === 13) handleChangeEvent.call(this, e);\n });\n\n this.inputs.off('change.zf.slider').on('change.zf.slider', handleChangeEvent);\n\n if (this.options.clickSelect) {\n this.$element.off('click.zf.slider').on('click.zf.slider', function(e) {\n if (_this.$element.data('dragging')) { return false; }\n\n if (!$(e.target).is('[data-slider-handle]')) {\n if (_this.options.doubleSided) {\n _this._handleEvent(e);\n } else {\n _this._handleEvent(e, _this.$handle);\n }\n }\n });\n }\n\n if (this.options.draggable) {\n this.handles.addTouch();\n\n var $body = $('body');\n $handle\n .off('mousedown.zf.slider')\n .on('mousedown.zf.slider', function(e) {\n $handle.addClass('is-dragging');\n _this.$fill.addClass('is-dragging');//\n _this.$element.data('dragging', true);\n\n curHandle = $(e.currentTarget);\n\n $body.on('mousemove.zf.slider', function(ev) {\n ev.preventDefault();\n _this._handleEvent(ev, curHandle);\n\n }).on('mouseup.zf.slider', function(ev) {\n _this._handleEvent(ev, curHandle);\n\n $handle.removeClass('is-dragging');\n _this.$fill.removeClass('is-dragging');\n _this.$element.data('dragging', false);\n\n $body.off('mousemove.zf.slider mouseup.zf.slider');\n });\n })\n // prevent events triggered by touch\n .on('selectstart.zf.slider touchmove.zf.slider', function(e) {\n e.preventDefault();\n });\n }\n\n $handle.off('keydown.zf.slider').on('keydown.zf.slider', function(e) {\n var _$handle = $(this),\n idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0,\n oldValue = parseFloat(_this.inputs.eq(idx).val()),\n newValue;\n\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Slider', {\n decrease: function() {\n newValue = oldValue - _this.options.step;\n },\n increase: function() {\n newValue = oldValue + _this.options.step;\n },\n decreaseFast: function() {\n newValue = oldValue - _this.options.step * 10;\n },\n increaseFast: function() {\n newValue = oldValue + _this.options.step * 10;\n },\n min: function() {\n newValue = _this.options.start;\n },\n max: function() {\n newValue = _this.options.end;\n },\n handled: function() { // only set handle pos when event was handled specially\n e.preventDefault();\n _this._setHandlePos(_$handle, newValue);\n }\n });\n /*if (newValue) { // if pressed key has special function, update value\n e.preventDefault();\n _this._setHandlePos(_$handle, newValue);\n }*/\n });\n }\n\n /**\n * Destroys the slider plugin.\n */\n _destroy() {\n this.handles.off('.zf.slider');\n this.inputs.off('.zf.slider');\n this.$element.off('.zf.slider');\n\n clearTimeout(this.timeout);\n }\n}\n\nSlider.defaults = {\n /**\n * Minimum value for the slider scale.\n * @option\n * @type {number}\n * @default 0\n */\n start: 0,\n /**\n * Maximum value for the slider scale.\n * @option\n * @type {number}\n * @default 100\n */\n end: 100,\n /**\n * Minimum value change per change event.\n * @option\n * @type {number}\n * @default 1\n */\n step: 1,\n /**\n * Value at which the handle/input *(left handle/first input)* should be set to on initialization.\n * @option\n * @type {number}\n * @default 0\n */\n initialStart: 0,\n /**\n * Value at which the right handle/second input should be set to on initialization.\n * @option\n * @type {number}\n * @default 100\n */\n initialEnd: 100,\n /**\n * Allows the input to be located outside the container and visible. Set to by the JS\n * @option\n * @type {boolean}\n * @default false\n */\n binding: false,\n /**\n * Allows the user to click/tap on the slider bar to select a value.\n * @option\n * @type {boolean}\n * @default true\n */\n clickSelect: true,\n /**\n * Set to true and use the `vertical` class to change alignment to vertical.\n * @option\n * @type {boolean}\n * @default false\n */\n vertical: false,\n /**\n * Allows the user to drag the slider handle(s) to select a value.\n * @option\n * @type {boolean}\n * @default true\n */\n draggable: true,\n /**\n * Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`.\n * @option\n * @type {boolean}\n * @default false\n */\n disabled: false,\n /**\n * Allows the use of two handles. Double checked by the JS. Changes some logic handling.\n * @option\n * @type {boolean}\n * @default false\n */\n doubleSided: false,\n /**\n * Potential future feature.\n */\n // steps: 100,\n /**\n * Number of decimal places the plugin should go to for floating point precision.\n * @option\n * @type {number}\n * @default 2\n */\n decimal: 2,\n /**\n * Time delay for dragged elements.\n */\n // dragDelay: 0,\n /**\n * Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings.\n * @option\n * @type {number}\n * @default 200\n */\n moveTime: 200,//update this if changing the transition time in the sass\n /**\n * Class applied to disabled sliders.\n * @option\n * @type {string}\n * @default 'disabled'\n */\n disabledClass: 'disabled',\n /**\n * Will invert the default layout for a vertical<span data-tooltip title=\"who would do this???\"> </span>slider.\n * @option\n * @type {boolean}\n * @default false\n */\n invertVertical: false,\n /**\n * Milliseconds before the `changed.zf-slider` event is triggered after value change.\n * @option\n * @type {number}\n * @default 500\n */\n changedDelay: 500,\n /**\n * Basevalue for non-linear sliders\n * @option\n * @type {number}\n * @default 5\n */\n nonLinearBase: 5,\n /**\n * Basevalue for non-linear sliders, possible values are: `'linear'`, `'pow'` & `'log'`. Pow and Log use the nonLinearBase setting.\n * @option\n * @type {string}\n * @default 'linear'\n */\n positionValueFunction: 'linear',\n};\n\nfunction percent(frac, num) {\n return (frac / num);\n}\nfunction absPosition($handle, dir, clickPos, param) {\n return Math.abs(($handle.position()[dir] + ($handle[param]() / 2)) - clickPos);\n}\nfunction baseLog(base, value) {\n return Math.log(value)/Math.log(base)\n}\n\nexport {Slider};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Sticky module.\n * @module foundation.sticky\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass Sticky extends Plugin {\n /**\n * Creates a new instance of a sticky thing.\n * @class\n * @name Sticky\n * @param {jQuery} element - jQuery object to make sticky.\n * @param {Object} options - options object passed when creating the element programmatically.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Sticky.defaults, this.$element.data(), options);\n this.className = 'Sticky'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n }\n\n /**\n * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n var $parent = this.$element.parent('[data-sticky-container]'),\n id = this.$element[0].id || GetYoDigits(6, 'sticky'),\n _this = this;\n\n if($parent.length){\n this.$container = $parent;\n } else {\n this.wasWrapped = true;\n this.$element.wrap(this.options.container);\n this.$container = this.$element.parent();\n }\n this.$container.addClass(this.options.containerClass);\n\n this.$element.addClass(this.options.stickyClass).attr({ 'data-resize': id, 'data-mutate': id });\n if (this.options.anchor !== '') {\n $('#' + _this.options.anchor).attr({ 'data-mutate': id });\n }\n\n this.scrollCount = this.options.checkEvery;\n this.isStuck = false;\n this.onLoadListener = onLoad($(window), function () {\n //We calculate the container height to have correct values for anchor points offset calculation.\n _this.containerHeight = _this.$element.css(\"display\") === \"none\" ? 0 : _this.$element[0].getBoundingClientRect().height;\n _this.$container.css('height', _this.containerHeight);\n _this.elemHeight = _this.containerHeight;\n if (_this.options.anchor !== '') {\n _this.$anchor = $('#' + _this.options.anchor);\n } else {\n _this._parsePoints();\n }\n\n _this._setSizes(function () {\n var scroll = window.pageYOffset;\n _this._calc(false, scroll);\n //Unstick the element will ensure that proper classes are set.\n if (!_this.isStuck) {\n _this._removeSticky((scroll >= _this.topPoint) ? false : true);\n }\n });\n _this._events(id.split('-').reverse().join('-'));\n });\n }\n\n /**\n * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.\n * @function\n * @private\n */\n _parsePoints() {\n var top = this.options.topAnchor === \"\" ? 1 : this.options.topAnchor,\n btm = this.options.btmAnchor === \"\" ? document.documentElement.scrollHeight : this.options.btmAnchor,\n pts = [top, btm],\n breaks = {};\n for (var i = 0, len = pts.length; i < len && pts[i]; i++) {\n var pt;\n if (typeof pts[i] === 'number') {\n pt = pts[i];\n } else {\n var place = pts[i].split(':'),\n anchor = $(`#${place[0]}`);\n\n pt = anchor.offset().top;\n if (place[1] && place[1].toLowerCase() === 'bottom') {\n pt += anchor[0].getBoundingClientRect().height;\n }\n }\n breaks[i] = pt;\n }\n\n\n this.points = breaks;\n return;\n }\n\n /**\n * Adds event handlers for the scrolling element.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _events(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n if (this.isOn) { return; }\n if (this.canStick) {\n this.isOn = true;\n $(window).off(scrollListener)\n .on(scrollListener, function() {\n if (_this.scrollCount === 0) {\n _this.scrollCount = _this.options.checkEvery;\n _this._setSizes(function() {\n _this._calc(false, window.pageYOffset);\n });\n } else {\n _this.scrollCount--;\n _this._calc(false, window.pageYOffset);\n }\n });\n }\n\n this.$element.off('resizeme.zf.trigger')\n .on('resizeme.zf.trigger', function() {\n _this._eventsHandler(id);\n });\n\n this.$element.on('mutateme.zf.trigger', function () {\n _this._eventsHandler(id);\n });\n\n if(this.$anchor) {\n this.$anchor.on('mutateme.zf.trigger', function () {\n _this._eventsHandler(id);\n });\n }\n }\n\n /**\n * Handler for events.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _eventsHandler(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n\n _this._setSizes(function() {\n _this._calc(false);\n if (_this.canStick) {\n if (!_this.isOn) {\n _this._events(id);\n }\n } else if (_this.isOn) {\n _this._pauseListeners(scrollListener);\n }\n });\n }\n\n /**\n * Removes event handlers for scroll and change events on anchor.\n * @fires Sticky#pause\n * @param {String} scrollListener - unique, namespaced scroll listener attached to `window`\n */\n _pauseListeners(scrollListener) {\n this.isOn = false;\n $(window).off(scrollListener);\n\n /**\n * Fires when the plugin is paused due to resize event shrinking the view.\n * @event Sticky#pause\n * @private\n */\n this.$element.trigger('pause.zf.sticky');\n }\n\n /**\n * Called on every `scroll` event and on `_init`\n * fires functions based on booleans and cached values\n * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.\n * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.\n */\n _calc(checkSizes, scroll) {\n if (checkSizes) { this._setSizes(); }\n\n if (!this.canStick) {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n return false;\n }\n\n if (!scroll) { scroll = window.pageYOffset; }\n\n if (scroll >= this.topPoint) {\n if (scroll <= this.bottomPoint) {\n if (!this.isStuck) {\n this._setSticky();\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(false);\n }\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n }\n }\n\n /**\n * Causes the $element to become stuck.\n * Adds `position: fixed;`, and helper classes.\n * @fires Sticky#stuckto\n * @function\n * @private\n */\n _setSticky() {\n var _this = this,\n stickTo = this.options.stickTo,\n mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',\n notStuckTo = stickTo === 'top' ? 'bottom' : 'top',\n css = {};\n\n css[mrgn] = `${this.options[mrgn]}em`;\n css[stickTo] = 0;\n css[notStuckTo] = 'auto';\n this.isStuck = true;\n this.$element.removeClass(`is-anchored is-at-${notStuckTo}`)\n .addClass(`is-stuck is-at-${stickTo}`)\n .css(css)\n /**\n * Fires when the $element has become `position: fixed;`\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`\n * @event Sticky#stuckto\n */\n .trigger(`sticky.zf.stuckto:${stickTo}`);\n this.$element.on(\"transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd\", function() {\n _this._setSizes();\n });\n }\n\n /**\n * Causes the $element to become unstuck.\n * Removes `position: fixed;`, and helper classes.\n * Adds other helper classes.\n * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.\n * @fires Sticky#unstuckfrom\n * @private\n */\n _removeSticky(isTop) {\n var stickTo = this.options.stickTo,\n stickToTop = stickTo === 'top',\n css = {},\n anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,\n mrgn = stickToTop ? 'marginTop' : 'marginBottom',\n topOrBottom = isTop ? 'top' : 'bottom';\n\n css[mrgn] = 0;\n\n css.bottom = 'auto';\n if(isTop) {\n css.top = 0;\n } else {\n css.top = anchorPt;\n }\n\n this.isStuck = false;\n this.$element.removeClass(`is-stuck is-at-${stickTo}`)\n .addClass(`is-anchored is-at-${topOrBottom}`)\n .css(css)\n /**\n * Fires when the $element has become anchored.\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`\n * @event Sticky#unstuckfrom\n */\n .trigger(`sticky.zf.unstuckfrom:${topOrBottom}`);\n }\n\n /**\n * Sets the $element and $container sizes for plugin.\n * Calls `_setBreakPoints`.\n * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.\n * @private\n */\n _setSizes(cb) {\n this.canStick = MediaQuery.is(this.options.stickyOn);\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n var newElemWidth = this.$container[0].getBoundingClientRect().width,\n comp = window.getComputedStyle(this.$container[0]),\n pdngl = parseInt(comp['padding-left'], 10),\n pdngr = parseInt(comp['padding-right'], 10);\n\n if (this.$anchor && this.$anchor.length) {\n this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;\n } else {\n this._parsePoints();\n }\n\n this.$element.css({\n 'max-width': `${newElemWidth - pdngl - pdngr}px`\n });\n\n // Recalculate the height only if it is \"dynamic\"\n if (this.options.dynamicHeight || !this.containerHeight) {\n // Get the sticked element height and apply it to the container to \"hold the place\"\n var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;\n newContainerHeight = this.$element.css(\"display\") === \"none\" ? 0 : newContainerHeight;\n this.$container.css('height', newContainerHeight);\n this.containerHeight = newContainerHeight;\n }\n this.elemHeight = this.containerHeight;\n\n if (!this.isStuck) {\n if (this.$element.hasClass('is-at-bottom')) {\n var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;\n this.$element.css('top', anchorPt);\n }\n }\n\n this._setBreakPoints(this.containerHeight, function() {\n if (cb && typeof cb === 'function') { cb(); }\n });\n }\n\n /**\n * Sets the upper and lower breakpoints for the element to become sticky/unsticky.\n * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.\n * @param {Function} cb - optional callback function to be called on completion.\n * @private\n */\n _setBreakPoints(elemHeight, cb) {\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n else { return false; }\n }\n var mTop = emCalc(this.options.marginTop),\n mBtm = emCalc(this.options.marginBottom),\n topPoint = this.points ? this.points[0] : this.$anchor.offset().top,\n bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,\n // topPoint = this.$anchor.offset().top || this.points[0],\n // bottomPoint = topPoint + this.anchorHeight || this.points[1],\n winHeight = window.innerHeight;\n\n if (this.options.stickTo === 'top') {\n topPoint -= mTop;\n bottomPoint -= (elemHeight + mTop);\n } else if (this.options.stickTo === 'bottom') {\n topPoint -= (winHeight - (elemHeight + mBtm));\n bottomPoint -= (winHeight - mBtm);\n } else {\n //this would be the stickTo: both option... tricky\n }\n\n this.topPoint = topPoint;\n this.bottomPoint = bottomPoint;\n\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n /**\n * Destroys the current sticky element.\n * Resets the element to the top position first.\n * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.\n * @function\n */\n _destroy() {\n this._removeSticky(true);\n\n this.$element.removeClass(`${this.options.stickyClass} is-anchored is-at-top`)\n .css({\n height: '',\n top: '',\n bottom: '',\n 'max-width': ''\n })\n .off('resizeme.zf.trigger')\n .off('mutateme.zf.trigger');\n if (this.$anchor && this.$anchor.length) {\n this.$anchor.off('change.zf.sticky');\n }\n if (this.scrollListener) $(window).off(this.scrollListener)\n if (this.onLoadListener) $(window).off(this.onLoadListener)\n\n if (this.wasWrapped) {\n this.$element.unwrap();\n } else {\n this.$container.removeClass(this.options.containerClass)\n .css({\n height: ''\n });\n }\n }\n}\n\nSticky.defaults = {\n /**\n * Customizable container template. Add your own classes for styling and sizing.\n * @option\n * @type {string}\n * @default '<div data-sticky-container></div>'\n */\n container: '<div data-sticky-container></div>',\n /**\n * Location in the view the element sticks to. Can be `'top'` or `'bottom'`.\n * @option\n * @type {string}\n * @default 'top'\n */\n stickTo: 'top',\n /**\n * If anchored to a single element, the id of that element.\n * @option\n * @type {string}\n * @default ''\n */\n anchor: '',\n /**\n * If using more than one element as anchor points, the id of the top anchor.\n * @option\n * @type {string}\n * @default ''\n */\n topAnchor: '',\n /**\n * If using more than one element as anchor points, the id of the bottom anchor.\n * @option\n * @type {string}\n * @default ''\n */\n btmAnchor: '',\n /**\n * Margin, in `em`'s to apply to the top of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginTop: 1,\n /**\n * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginBottom: 1,\n /**\n * Breakpoint string that is the minimum screen size an element should become sticky.\n * @option\n * @type {string}\n * @default 'medium'\n */\n stickyOn: 'medium',\n /**\n * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.\n * @option\n * @type {string}\n * @default 'sticky'\n */\n stickyClass: 'sticky',\n /**\n * Class applied to sticky container. Foundation defaults to `sticky-container`.\n * @option\n * @type {string}\n * @default 'sticky-container'\n */\n containerClass: 'sticky-container',\n /**\n * If true (by default), keep the sticky container the same height as the element. Otherwise, the container height is set once and does not change.\n * @option\n * @type {boolean}\n * @default true\n */\n dynamicHeight: true,\n /**\n * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.\n * @option\n * @type {number}\n * @default -1\n */\n checkEvery: -1\n};\n\n/**\n * Helper function to calculate em values\n * @param Number {em} - number of em's to calculate into pixels\n */\nfunction emCalc(em) {\n return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;\n}\n\nexport {Sticky};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\n/**\n * Tabs module.\n * @module foundation.tabs\n * @requires foundation.util.keyboard\n * @requires foundation.util.imageLoader if tabs contain images\n */\n\nclass Tabs extends Plugin {\n /**\n * Creates a new instance of tabs.\n * @class\n * @name Tabs\n * @fires Tabs#init\n * @param {jQuery} element - jQuery object to make into tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Tabs.defaults, this.$element.data(), options);\n this.className = 'Tabs'; // ie9 back compat\n\n this._init();\n Keyboard.register('Tabs', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'previous',\n 'ARROW_DOWN': 'next',\n 'ARROW_LEFT': 'previous'\n // 'TAB': 'next',\n // 'SHIFT_TAB': 'previous'\n });\n }\n\n /**\n * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab.\n * @private\n */\n _init() {\n var _this = this;\n this._isInitializing = true;\n\n this.$element.attr({'role': 'tablist'});\n this.$tabTitles = this.$element.find(`.${this.options.linkClass}`);\n this.$tabContent = $(`[data-tabs-content=\"${this.$element[0].id}\"]`);\n\n this.$tabTitles.each(function(){\n var $elem = $(this),\n $link = $elem.find('a'),\n isActive = $elem.hasClass(`${_this.options.linkActiveClass}`),\n hash = $link.attr('data-tabs-target') || $link[0].hash.slice(1),\n linkId = $link[0].id ? $link[0].id : `${hash}-label`,\n $tabContent = $(`#${hash}`);\n\n $elem.attr({'role': 'presentation'});\n\n $link.attr({\n 'role': 'tab',\n 'aria-controls': hash,\n 'aria-selected': isActive,\n 'id': linkId,\n 'tabindex': isActive ? '0' : '-1'\n });\n\n $tabContent.attr({\n 'role': 'tabpanel',\n 'aria-labelledby': linkId\n });\n\n // Save up the initial hash to return to it later when going back in history\n if (isActive) {\n _this._initialAnchor = `#${hash}`;\n }\n\n if(!isActive) {\n $tabContent.attr('aria-hidden', 'true');\n }\n\n if(isActive && _this.options.autoFocus){\n _this.onLoadListener = onLoad($(window), function() {\n $('html, body').animate({ scrollTop: $elem.offset().top }, _this.options.deepLinkSmudgeDelay, () => {\n $link.focus();\n });\n });\n }\n });\n\n if(this.options.matchHeight) {\n var $images = this.$tabContent.find('img');\n\n if ($images.length) {\n onImagesLoaded($images, this._setHeight.bind(this));\n } else {\n this._setHeight();\n }\n }\n\n // Current context-bound function to open tabs on page load or history hashchange\n this._checkDeepLink = () => {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n // If we are still initializing and there is no anchor, then there is nothing to do\n if (this._isInitializing) return;\n // Otherwise, move to the initial anchor\n if (this._initialAnchor) anchor = this._initialAnchor;\n }\n\n var anchorNoHash = anchor.indexOf('#') >= 0 ? anchor.slice(1) : anchor;\n var $anchor = anchorNoHash && $(`#${anchorNoHash}`);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"],[data-tabs-target=\"${anchorNoHash}\"]`).first();\n // Whether the anchor element that has been found is part of this element\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n // If there is an anchor for the hash, select it\n if ($anchor && $anchor.length && $link && $link.length) {\n this.selectTab($anchor, true);\n }\n // Otherwise, collapse everything\n else {\n this._collapse();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset}, this.options.deepLinkSmudgeDelay);\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Tabs#deeplink\n */\n this.$element.trigger('deeplink.zf.tabs', [$link, $anchor]);\n }\n }\n\n //use browser to open a tab, if it exists in this tabset\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n\n /**\n * Adds event handlers for items within the tabs.\n * @private\n */\n _events() {\n this._addKeyHandler();\n this._addClickHandler();\n this._setHeightMqHandler = null;\n\n if (this.options.matchHeight) {\n this._setHeightMqHandler = this._setHeight.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n\n if(this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Adds click handlers for items within the tabs.\n * @private\n */\n _addClickHandler() {\n var _this = this;\n\n this.$element\n .off('click.zf.tabs')\n .on('click.zf.tabs', `.${this.options.linkClass}`, function(e){\n e.preventDefault();\n _this._handleTabChange($(this));\n });\n }\n\n /**\n * Adds keyboard event handlers for items within the tabs.\n * @private\n */\n _addKeyHandler() {\n var _this = this;\n\n this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function(e){\n if (e.which === 9) return;\n\n\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n if (_this.options.wrapOnKeys) {\n $prevElement = i === 0 ? $elements.last() : $elements.eq(i-1);\n $nextElement = i === $elements.length -1 ? $elements.first() : $elements.eq(i+1);\n } else {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n }\n return;\n }\n });\n\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Tabs', {\n open: function() {\n $element.find('[role=\"tab\"]').focus();\n _this._handleTabChange($element);\n },\n previous: function() {\n $prevElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($prevElement);\n },\n next: function() {\n $nextElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($nextElement);\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`. Collapses active tab.\n * @param {jQuery} $target - Tab to open.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @fires Tabs#change\n * @function\n */\n _handleTabChange($target, historyHandled) {\n\n // With `activeCollapse`, if the target is the active Tab, collapse it.\n if ($target.hasClass(`${this.options.linkActiveClass}`)) {\n if(this.options.activeCollapse) {\n this._collapse();\n }\n return;\n }\n\n var $oldTab = this.$element.\n find(`.${this.options.linkClass}.${this.options.linkActiveClass}`),\n $tabLink = $target.find('[role=\"tab\"]'),\n target = $tabLink.attr('data-tabs-target'),\n anchor = target && target.length ? `#${target}` : $tabLink[0].hash,\n $targetContent = this.$tabContent.find(anchor);\n\n //close old tab\n this._collapseTab($oldTab);\n\n //open new tab\n this._openTab($target);\n\n //either replace or update browser history\n if (this.options.deepLink && !historyHandled) {\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n\n /**\n * Fires when the plugin has successfully changed tabs.\n * @event Tabs#change\n */\n this.$element.trigger('change.zf.tabs', [$target, $targetContent]);\n\n //fire to children a mutation event\n $targetContent.find(\"[data-mutate]\").trigger(\"mutateme.zf.trigger\");\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to open.\n * @function\n */\n _openTab($target) {\n var $tabLink = $target.find('[role=\"tab\"]'),\n hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1),\n $targetContent = this.$tabContent.find(`#${hash}`);\n\n $target.addClass(`${this.options.linkActiveClass}`);\n\n $tabLink.attr({\n 'aria-selected': 'true',\n 'tabindex': '0'\n });\n\n $targetContent\n .addClass(`${this.options.panelActiveClass}`).removeAttr('aria-hidden');\n }\n\n /**\n * Collapses `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to collapse.\n * @function\n */\n _collapseTab($target) {\n var $targetAnchor = $target\n .removeClass(`${this.options.linkActiveClass}`)\n .find('[role=\"tab\"]')\n .attr({\n 'aria-selected': 'false',\n 'tabindex': -1\n });\n\n $(`#${$targetAnchor.attr('aria-controls')}`)\n .removeClass(`${this.options.panelActiveClass}`)\n .attr({ 'aria-hidden': 'true' })\n }\n\n /**\n * Collapses the active Tab.\n * @fires Tabs#collapse\n * @function\n */\n _collapse() {\n var $activeTab = this.$element.find(`.${this.options.linkClass}.${this.options.linkActiveClass}`);\n\n if ($activeTab.length) {\n this._collapseTab($activeTab);\n\n /**\n * Fires when the plugin has successfully collapsed tabs.\n * @event Tabs#collapse\n */\n this.$element.trigger('collapse.zf.tabs', [$activeTab]);\n }\n }\n\n /**\n * Public method for selecting a content pane to display.\n * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @function\n */\n selectTab(elem, historyHandled) {\n var idStr, hashIdStr;\n\n if (typeof elem === 'object') {\n idStr = elem[0].id;\n } else {\n idStr = elem;\n }\n\n if (idStr.indexOf('#') < 0) {\n hashIdStr = `#${idStr}`;\n } else {\n hashIdStr = idStr;\n idStr = idStr.slice(1);\n }\n\n var $target = this.$tabTitles.has(`[href$=\"${hashIdStr}\"],[data-tabs-target=\"${idStr}\"]`).first();\n\n this._handleTabChange($target, historyHandled);\n };\n\n /**\n * Sets the height of each panel to the height of the tallest panel.\n * If enabled in options, gets called on media query change.\n * If loading content via external source, can be called directly or with _reflow.\n * If enabled with `data-match-height=\"true\"`, tabs sets to equal height\n * @function\n * @private\n */\n _setHeight() {\n var max = 0,\n _this = this; // Lock down the `this` value for the root tabs object\n\n if (!this.$tabContent) {\n return;\n }\n\n this.$tabContent\n .find(`.${this.options.panelClass}`)\n .css('min-height', '')\n .each(function() {\n\n var panel = $(this),\n isActive = panel.hasClass(`${_this.options.panelActiveClass}`); // get the options from the parent instead of trying to get them from the child\n\n if (!isActive) {\n panel.css({'visibility': 'hidden', 'display': 'block'});\n }\n\n var temp = this.getBoundingClientRect().height;\n\n if (!isActive) {\n panel.css({\n 'visibility': '',\n 'display': ''\n });\n }\n\n max = temp > max ? temp : max;\n })\n .css('min-height', `${max}px`);\n }\n\n /**\n * Destroys an instance of tabs.\n * @fires Tabs#destroyed\n */\n _destroy() {\n this.$element\n .find(`.${this.options.linkClass}`)\n .off('.zf.tabs').hide().end()\n .find(`.${this.options.panelClass}`)\n .hide();\n\n if (this.options.matchHeight) {\n if (this._setHeightMqHandler != null) {\n $(window).off('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n }\n\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n if (this.onLoadListener) {\n $(window).off(this.onLoadListener);\n }\n }\n}\n\nTabs.defaults = {\n /**\n * Link the location hash to the active pane.\n * Set the location hash when the active pane changes, and open the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the tab panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n\n /**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */\n deepLinkSmudgeDelay: 300,\n\n /**\n * If `deepLinkSmudge` is enabled, animation offset from the top for the deep link adjustment\n * @option\n * @type {number}\n * @default 0\n */\n deepLinkSmudgeOffset: 0,\n\n /**\n * If `deepLink` is enabled, update the browser history with the open tab\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false,\n\n /**\n * Allows the window to scroll to content of active pane on load.\n * Not recommended if more than one tab panel per page.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n\n /**\n * Allows keyboard input to 'wrap' around the tab links.\n * @option\n * @type {boolean}\n * @default true\n */\n wrapOnKeys: true,\n\n /**\n * Allows the tab content panes to match heights if set to true.\n * @option\n * @type {boolean}\n * @default false\n */\n matchHeight: false,\n\n /**\n * Allows active tabs to collapse when clicked.\n * @option\n * @type {boolean}\n * @default false\n */\n activeCollapse: false,\n\n /**\n * Class applied to `li`'s in tab link list.\n * @option\n * @type {string}\n * @default 'tabs-title'\n */\n linkClass: 'tabs-title',\n\n /**\n * Class applied to the active `li` in tab link list.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n linkActiveClass: 'is-active',\n\n /**\n * Class applied to the content containers.\n * @option\n * @type {string}\n * @default 'tabs-panel'\n */\n panelClass: 'tabs-panel',\n\n /**\n * Class applied to the active content container.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n panelActiveClass: 'is-active'\n};\n\nexport {Tabs};\n","import $ from 'jquery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\nimport { RegExpEscape } from './foundation.core.utils';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Toggler module.\n * @module foundation.toggler\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n */\n\nclass Toggler extends Plugin {\n /**\n * Creates a new instance of Toggler.\n * @class\n * @name Toggler\n * @fires Toggler#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Toggler.defaults, element.data(), options);\n this.className = '';\n this.className = 'Toggler'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate.\n * @function\n * @private\n */\n _init() {\n // Collect triggers to set ARIA attributes to\n var id = this.$element[0].id,\n $triggers = $(`[data-open~=\"${id}\"], [data-close~=\"${id}\"], [data-toggle~=\"${id}\"]`);\n\n var input;\n // Parse animation classes if they were set\n if (this.options.animate) {\n input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n\n // - aria-expanded: according to the element visibility.\n $triggers.attr('aria-expanded', !this.$element.is(':hidden'));\n }\n // Otherwise, parse toggle class\n else {\n input = this.options.toggler;\n if (typeof input !== 'string' || !input.length) {\n throw new Error(`The 'toggler' option containing the target class is required, got \"${input}\"`);\n }\n // Allow for a . at the beginning of the string\n this.className = input[0] === '.' ? input.slice(1) : input;\n\n // - aria-expanded: according to the elements class set.\n $triggers.attr('aria-expanded', this.$element.hasClass(this.className));\n }\n\n // - aria-controls: adding the element id to it if not already in it.\n $triggers.each((index, trigger) => {\n const $trigger = $(trigger);\n const controls = $trigger.attr('aria-controls') || '';\n\n const containsId = new RegExp(`\\\\b${RegExpEscape(id)}\\\\b`).test(controls);\n if (!containsId) $trigger.attr('aria-controls', controls ? `${controls} ${id}` : id);\n });\n }\n\n /**\n * Initializes events for the toggle trigger.\n * @function\n * @private\n */\n _events() {\n this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));\n }\n\n /**\n * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was \"on\" or \"off\".\n * @function\n * @fires Toggler#on\n * @fires Toggler#off\n */\n toggle() {\n this[ this.options.animate ? '_toggleAnimate' : '_toggleClass']();\n }\n\n _toggleClass() {\n this.$element.toggleClass(this.className);\n\n var isOn = this.$element.hasClass(this.className);\n if (isOn) {\n /**\n * Fires if the target element has the class after a toggle.\n * @event Toggler#on\n */\n this.$element.trigger('on.zf.toggler');\n }\n else {\n /**\n * Fires if the target element does not have the class after a toggle.\n * @event Toggler#off\n */\n this.$element.trigger('off.zf.toggler');\n }\n\n this._updateARIA(isOn);\n this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger');\n }\n\n _toggleAnimate() {\n var _this = this;\n\n if (this.$element.is(':hidden')) {\n Motion.animateIn(this.$element, this.animationIn, function() {\n _this._updateARIA(true);\n this.trigger('on.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$element, this.animationOut, function() {\n _this._updateARIA(false);\n this.trigger('off.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n }\n\n _updateARIA(isOn) {\n var id = this.$element[0].id;\n $(`[data-open=\"${id}\"], [data-close=\"${id}\"], [data-toggle=\"${id}\"]`)\n .attr({\n 'aria-expanded': isOn ? true : false\n });\n }\n\n /**\n * Destroys the instance of Toggler on the element.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.toggler');\n }\n}\n\nToggler.defaults = {\n /**\n * Class of the element to toggle. It can be provided with or without \".\"\n * @option\n * @type {string}\n */\n toggler: undefined,\n /**\n * Tells the plugin if the element should animated when toggled.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport {Toggler};\n","import $ from 'jquery';\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\nimport { Positionable } from './foundation.positionable';\n\n/**\n * Tooltip module.\n * @module foundation.tooltip\n * @requires foundation.util.box\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.triggers\n */\n\nclass Tooltip extends Positionable {\n /**\n * Creates a new instance of a Tooltip.\n * @class\n * @name Tooltip\n * @fires Tooltip#init\n * @param {jQuery} element - jQuery object to attach a tooltip to.\n * @param {Object} options - object to extend the default configuration.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Tooltip.defaults, this.$element.data(), options);\n this.className = 'Tooltip'; // ie9 back compat\n\n this.isActive = false;\n this.isClick = false;\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n }\n\n /**\n * Initializes the tooltip by setting the creating the tip element, adding it's text, setting private variables and setting attributes on the anchor.\n * @private\n */\n _init() {\n MediaQuery._init();\n var elemId = this.$element.attr('aria-describedby') || GetYoDigits(6, 'tooltip');\n\n this.options.tipText = this.options.tipText || this.$element.attr('title');\n this.template = this.options.template ? $(this.options.template) : this._buildTemplate(elemId);\n\n if (this.options.allowHtml) {\n this.template.appendTo(document.body)\n .html(this.options.tipText)\n .hide();\n } else {\n this.template.appendTo(document.body)\n .text(this.options.tipText)\n .hide();\n }\n\n this.$element.attr({\n 'title': '',\n 'aria-describedby': elemId,\n 'data-yeti-box': elemId,\n 'data-toggle': elemId,\n 'data-resize': elemId\n }).addClass(this.options.triggerClass);\n\n super._init();\n this._events();\n }\n\n _getDefaultPosition() {\n // handle legacy classnames\n var elementClassName = this.$element[0].className;\n if (this.$element[0] instanceof SVGElement) {\n elementClassName = elementClassName.baseVal;\n }\n var position = elementClassName.match(/\\b(top|left|right|bottom)\\b/g);\n return position ? position[0] : 'top';\n }\n\n _getDefaultAlignment() {\n return 'center';\n }\n\n _getHOffset() {\n if(this.position === 'left' || this.position === 'right') {\n return this.options.hOffset + this.options.tooltipWidth;\n } else {\n return this.options.hOffset\n }\n }\n\n _getVOffset() {\n if(this.position === 'top' || this.position === 'bottom') {\n return this.options.vOffset + this.options.tooltipHeight;\n } else {\n return this.options.vOffset\n }\n }\n\n /**\n * builds the tooltip element, adds attributes, and returns the template.\n * @private\n */\n _buildTemplate(id) {\n var templateClasses = (`${this.options.tooltipClass} ${this.options.templateClasses}`).trim();\n var $template = $('<div></div>').addClass(templateClasses).attr({\n 'role': 'tooltip',\n 'aria-hidden': true,\n 'data-is-active': false,\n 'data-is-focus': false,\n 'id': id\n });\n return $template;\n }\n\n /**\n * sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding.\n * if the tooltip is larger than the screen width, default to full width - any user selected margin\n * @private\n */\n _setPosition() {\n super._setPosition(this.$element, this.template);\n }\n\n /**\n * reveals the tooltip, and fires an event to close any other open tooltips on the page\n * @fires Tooltip#closeme\n * @fires Tooltip#show\n * @function\n */\n show() {\n if (this.options.showOn !== 'all' && !MediaQuery.is(this.options.showOn)) {\n // console.error('The screen is too small to display this tooltip');\n return false;\n }\n\n var _this = this;\n this.template.css('visibility', 'hidden').show();\n this._setPosition();\n this.template.removeClass('top bottom left right').addClass(this.position)\n this.template.removeClass('align-top align-bottom align-left align-right align-center').addClass('align-' + this.alignment);\n\n /**\n * Fires to close all other open tooltips on the page\n * @event Closeme#tooltip\n */\n this.$element.trigger('closeme.zf.tooltip', this.template.attr('id'));\n\n\n this.template.attr({\n 'data-is-active': true,\n 'aria-hidden': false\n });\n _this.isActive = true;\n this.template.stop().hide().css('visibility', '').fadeIn(this.options.fadeInDuration, function() {\n //maybe do stuff?\n });\n /**\n * Fires when the tooltip is shown\n * @event Tooltip#show\n */\n this.$element.trigger('show.zf.tooltip');\n }\n\n /**\n * Hides the current tooltip, and resets the positioning class if it was changed due to collision\n * @fires Tooltip#hide\n * @function\n */\n hide() {\n var _this = this;\n this.template.stop().attr({\n 'aria-hidden': true,\n 'data-is-active': false\n }).fadeOut(this.options.fadeOutDuration, function() {\n _this.isActive = false;\n _this.isClick = false;\n });\n /**\n * fires when the tooltip is hidden\n * @event Tooltip#hide\n */\n this.$element.trigger('hide.zf.tooltip');\n }\n\n /**\n * adds event listeners for the tooltip and its anchor\n * TODO combine some of the listeners like focus and mouseenter, etc.\n * @private\n */\n _events() {\n const _this = this;\n const hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n var isFocus = false;\n\n // `disableForTouch: Fully disable the tooltip on touch devices\n if (hasTouch && this.options.disableForTouch) return;\n\n if (!this.options.disableHover) {\n this.$element\n .on('mouseenter.zf.tooltip', function() {\n if (!_this.isActive) {\n _this.timeout = setTimeout(function() {\n _this.show();\n }, _this.options.hoverDelay);\n }\n })\n .on('mouseleave.zf.tooltip', ignoreMousedisappear(function() {\n clearTimeout(_this.timeout);\n if (!isFocus || (_this.isClick && !_this.options.clickOpen)) {\n _this.hide();\n }\n }));\n }\n\n if (hasTouch) {\n this.$element\n .on('tap.zf.tooltip touchend.zf.tooltip', function () {\n _this.isActive ? _this.hide() : _this.show();\n });\n }\n\n if (this.options.clickOpen) {\n this.$element.on('mousedown.zf.tooltip', function() {\n if (_this.isClick) {\n //_this.hide();\n // _this.isClick = false;\n } else {\n _this.isClick = true;\n if ((_this.options.disableHover || !_this.$element.attr('tabindex')) && !_this.isActive) {\n _this.show();\n }\n }\n });\n } else {\n this.$element.on('mousedown.zf.tooltip', function() {\n _this.isClick = true;\n });\n }\n\n this.$element.on({\n // 'toggle.zf.trigger': this.toggle.bind(this),\n // 'close.zf.trigger': this.hide.bind(this)\n 'close.zf.trigger': this.hide.bind(this)\n });\n\n this.$element\n .on('focus.zf.tooltip', function() {\n isFocus = true;\n if (_this.isClick) {\n // If we're not showing open on clicks, we need to pretend a click-launched focus isn't\n // a real focus, otherwise on hover and come back we get bad behavior\n if(!_this.options.clickOpen) { isFocus = false; }\n return false;\n } else {\n _this.show();\n }\n })\n\n .on('focusout.zf.tooltip', function() {\n isFocus = false;\n _this.isClick = false;\n _this.hide();\n })\n\n .on('resizeme.zf.trigger', function() {\n if (_this.isActive) {\n _this._setPosition();\n }\n });\n }\n\n /**\n * adds a toggle method, in addition to the static show() & hide() functions\n * @function\n */\n toggle() {\n if (this.isActive) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Destroys an instance of tooltip, removes template element from the view.\n * @function\n */\n _destroy() {\n this.$element.attr('title', this.template.text())\n .off('.zf.trigger .zf.tooltip')\n .removeClass(this.options.triggerClass)\n .removeClass('top right left bottom')\n .removeAttr('aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box');\n\n this.template.remove();\n }\n}\n\nTooltip.defaults = {\n /**\n * Time, in ms, before a tooltip should open on hover.\n * @option\n * @type {number}\n * @default 200\n */\n hoverDelay: 200,\n /**\n * Time, in ms, a tooltip should take to fade into view.\n * @option\n * @type {number}\n * @default 150\n */\n fadeInDuration: 150,\n /**\n * Time, in ms, a tooltip should take to fade out of view.\n * @option\n * @type {number}\n * @default 150\n */\n fadeOutDuration: 150,\n /**\n * Disables hover events from opening the tooltip if set to true\n * @option\n * @type {boolean}\n * @default false\n */\n disableHover: false,\n /**\n * Disable the tooltip for touch devices.\n * This can be useful to make elements with a tooltip on it trigger their\n * action on the first tap instead of displaying the tooltip.\n * @option\n * @type {booelan}\n * @default false\n */\n disableForTouch: false,\n /**\n * Optional addtional classes to apply to the tooltip template on init.\n * @option\n * @type {string}\n * @default ''\n */\n templateClasses: '',\n /**\n * Non-optional class added to tooltip templates. Foundation default is 'tooltip'.\n * @option\n * @type {string}\n * @default 'tooltip'\n */\n tooltipClass: 'tooltip',\n /**\n * Class applied to the tooltip anchor element.\n * @option\n * @type {string}\n * @default 'has-tip'\n */\n triggerClass: 'has-tip',\n /**\n * Minimum breakpoint size at which to open the tooltip.\n * @option\n * @type {string}\n * @default 'small'\n */\n showOn: 'small',\n /**\n * Custom template to be used to generate markup for tooltip.\n * @option\n * @type {string}\n * @default ''\n */\n template: '',\n /**\n * Text displayed in the tooltip template on open.\n * @option\n * @type {string}\n * @default ''\n */\n tipText: '',\n touchCloseText: 'Tap to close.',\n /**\n * Allows the tooltip to remain open if triggered with a click or touch event.\n * @option\n * @type {boolean}\n * @default true\n */\n clickOpen: true,\n /**\n * Position of tooltip. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of tooltip relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, tooltip will first try to\n * position as defined by data-position and data-alignment, but reposition if\n * it would cause an overflow. @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * Less common for tooltips.\n * @option\n * @type {boolean}\n * @default false\n */\n allowBottomOverlap: false,\n /**\n * Distance, in pixels, the template should push away from the anchor on the Y axis.\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Distance, in pixels, the template should push away from the anchor on the X axis\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n /**\n * Distance, in pixels, the template spacing auto-adjust for a vertical tooltip\n * @option\n * @type {number}\n * @default 14\n */\n tooltipHeight: 14,\n /**\n * Distance, in pixels, the template spacing auto-adjust for a horizontal tooltip\n * @option\n * @type {number}\n * @default 12\n */\n tooltipWidth: 12,\n /**\n * Allow HTML in tooltip. Warning: If you are loading user-generated content into tooltips,\n * allowing HTML may open yourself up to XSS attacks.\n * @option\n * @type {boolean}\n * @default false\n */\n allowHtml: false\n};\n\n/**\n * TODO utilize resize event trigger\n */\n\nexport {Tooltip};\n","import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin }from './foundation.core.plugin';\n\nimport { Accordion } from './foundation.accordion';\nimport { Tabs } from './foundation.tabs';\n\n// The plugin matches the plugin classes with these plugin instances.\nvar MenuPlugins = {\n tabs: {\n cssClass: 'tabs',\n plugin: Tabs,\n open: (plugin, target) => plugin.selectTab(target),\n close: null /* not supported */,\n toggle: null /* not supported */,\n },\n accordion: {\n cssClass: 'accordion',\n plugin: Accordion,\n open: (plugin, target) => plugin.down($(target)),\n close: (plugin, target) => plugin.up($(target)),\n toggle: (plugin, target) => plugin.toggle($(target)),\n }\n};\n\n\n/**\n * ResponsiveAccordionTabs module.\n * @module foundation.responsiveAccordionTabs\n * @requires foundation.util.motion\n * @requires foundation.accordion\n * @requires foundation.tabs\n */\n\nclass ResponsiveAccordionTabs extends Plugin{\n constructor(element, options) {\n super(element, options);\n return this.options.reflow && this.storezfData || this;\n }\n\n /**\n * Creates a new instance of a responsive accordion tabs.\n * @class\n * @name ResponsiveAccordionTabs\n * @fires ResponsiveAccordionTabs#init\n * @param {jQuery} element - jQuery object to make into Responsive Accordion Tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.$element.data('zfPluginBase', this);\n this.options = $.extend({}, ResponsiveAccordionTabs.defaults, this.$element.data(), options);\n\n this.rules = this.$element.data('responsive-accordion-tabs');\n this.currentMq = null;\n this.currentRule = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveAccordionTabs'; // ie9 back compat\n if (!this.$element.attr('id')) {\n this.$element.attr('id',GetYoDigits(6, 'responsiveaccordiontabs'));\n }\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-responsive-accordion-tabs' attribute on the element.\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n if (typeof this.rules === 'string') {\n let rulesTree = {};\n\n // Parse rules from \"classes\" pulled from data attribute\n let rules = this.rules.split(' ');\n\n // Iterate through every rule found\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i].split('-');\n let ruleSize = rule.length > 1 ? rule[0] : 'small';\n let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n this._getAllOptions();\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n }\n\n _getAllOptions() {\n //get all defaults and options\n var _this = this;\n _this.allOptions = {};\n for (var key in MenuPlugins) {\n if (MenuPlugins.hasOwnProperty(key)) {\n var obj = MenuPlugins[key];\n try {\n var dummyPlugin = $('<ul></ul>');\n var tmpPlugin = new obj.plugin(dummyPlugin,_this.options);\n for (var keyKey in tmpPlugin.options) {\n if (tmpPlugin.options.hasOwnProperty(keyKey) && keyKey !== 'zfPlugin') {\n var objObj = tmpPlugin.options[keyKey];\n _this.allOptions[keyKey] = objObj;\n }\n }\n tmpPlugin.destroy();\n }\n catch(e) {\n console.warn(`Warning: Problems getting Accordion/Tab options: ${e}`);\n }\n }\n }\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n this._changedZfMediaQueryHandler = this._checkMediaQueries.bind(this);\n $(window).on('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n }\n\n /**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */\n _checkMediaQueries() {\n var matchedMq, _this = this;\n // Iterate through each rule and find the last matching rule\n $.each(this.rules, function(key) {\n if (MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n // No match? No dice\n if (!matchedMq) return;\n\n // Plugin already initialized? We good\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n // Remove existing plugin-specific CSS classes\n $.each(MenuPlugins, function(key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n // Add the CSS class for the new plugin\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n // Create an instance of the new plugin\n if (this.currentPlugin) {\n //don't know why but on nested elements data zfPlugin get's lost\n if (!this.currentPlugin.$element.data('zfPlugin') && this.storezfData) this.currentPlugin.$element.data('zfPlugin',this.storezfData);\n this.currentPlugin.destroy();\n }\n this._handleMarkup(this.rules[matchedMq].cssClass);\n this.currentRule = this.rules[matchedMq];\n this.currentPlugin = new this.currentRule.plugin(this.$element, this.options);\n this.storezfData = this.currentPlugin.$element.data('zfPlugin');\n\n }\n\n _handleMarkup(toSet){\n var _this = this, fromString = 'accordion';\n var $panels = $('[data-tabs-content='+this.$element.attr('id')+']');\n if ($panels.length) fromString = 'tabs';\n if (fromString === toSet) {\n return;\n }\n\n var tabsTitle = _this.allOptions.linkClass?_this.allOptions.linkClass:'tabs-title';\n var tabsPanel = _this.allOptions.panelClass?_this.allOptions.panelClass:'tabs-panel';\n\n this.$element.removeAttr('role');\n var $liHeads = this.$element.children('.'+tabsTitle+',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item');\n var $liHeadsA = $liHeads.children('a').removeClass('accordion-title');\n\n if (fromString === 'tabs') {\n $panels = $panels.children('.'+tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby');\n $panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected');\n } else {\n $panels = $liHeads.children('[data-tab-content]').removeClass('accordion-content');\n }\n\n $panels.css({display:'',visibility:''});\n $liHeads.css({display:'',visibility:''});\n if (toSet === 'accordion') {\n $panels.each(function(key,value){\n $(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content','').removeClass('is-active').css({height:''});\n $('[data-tabs-content='+_this.$element.attr('id')+']').after('<div id=\"tabs-placeholder-'+_this.$element.attr('id')+'\"></div>').detach();\n $liHeads.addClass('accordion-item').attr('data-accordion-item','');\n $liHeadsA.addClass('accordion-title');\n });\n } else if (toSet === 'tabs') {\n var $tabsContent = $('[data-tabs-content='+_this.$element.attr('id')+']');\n var $placeholder = $('#tabs-placeholder-'+_this.$element.attr('id'));\n if ($placeholder.length) {\n $tabsContent = $('<div class=\"tabs-content\"></div>').insertAfter($placeholder).attr('data-tabs-content',_this.$element.attr('id'));\n $placeholder.remove();\n } else {\n $tabsContent = $('<div class=\"tabs-content\"></div>').insertAfter(_this.$element).attr('data-tabs-content',_this.$element.attr('id'));\n }\n $panels.each(function(key,value){\n var tempValue = $(value).appendTo($tabsContent).addClass(tabsPanel);\n var hash = $liHeadsA.get(key).hash.slice(1);\n var id = $(value).attr('id') || GetYoDigits(6, 'accordion');\n if (hash !== id) {\n if (hash !== '') {\n $(value).attr('id',hash);\n } else {\n hash = id;\n $(value).attr('id',hash);\n $($liHeadsA.get(key)).attr('href',$($liHeadsA.get(key)).attr('href').replace('#','')+'#'+hash);\n }\n }\n var isActive = $($liHeads.get(key)).hasClass('is-active');\n if (isActive) {\n tempValue.addClass('is-active');\n }\n });\n $liHeads.addClass(tabsTitle);\n };\n }\n\n /**\n * Opens the plugin pane defined by `target`.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to open.\n * @see Accordion.down\n * @see Tabs.selectTab\n * @function\n */\n open() {\n if (this.currentRule && typeof this.currentRule.open === 'function') {\n return this.currentRule.open(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Closes the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to close.\n * @see Accordion.up\n * @function\n */\n close() {\n if (this.currentRule && typeof this.currentRule.close === 'function') {\n return this.currentRule.close(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Toggles the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to toggle.\n * @see Accordion.toggle\n * @function\n */\n toggle() {\n if (this.currentRule && typeof this.currentRule.toggle === 'function') {\n return this.currentRule.toggle(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */\n _destroy() {\n if (this.currentPlugin) this.currentPlugin.destroy();\n $(window).off('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n }\n}\n\nResponsiveAccordionTabs.defaults = {};\n\nexport {ResponsiveAccordionTabs};\n","import $ from 'jquery';\n\nimport { Foundation } from '../foundation.core';\nimport * as CoreUtils from '../foundation.core.utils';\nimport { Box } from '../foundation.util.box'\nimport { onImagesLoaded } from '../foundation.util.imageLoader';\nimport { Keyboard } from '../foundation.util.keyboard';\nimport { MediaQuery } from '../foundation.util.mediaQuery';\nimport { Motion, Move } from '../foundation.util.motion';\nimport { Nest } from '../foundation.util.nest';\nimport { Timer } from '../foundation.util.timer';\nimport { Touch } from '../foundation.util.touch';\nimport { Triggers } from '../foundation.util.triggers';\nimport { Abide } from '../foundation.abide';\nimport { Accordion } from '../foundation.accordion';\nimport { AccordionMenu } from '../foundation.accordionMenu';\nimport { Drilldown } from '../foundation.drilldown';\nimport { Dropdown } from '../foundation.dropdown';\nimport { DropdownMenu } from '../foundation.dropdownMenu';\nimport { Equalizer } from '../foundation.equalizer';\nimport { Interchange } from '../foundation.interchange';\nimport { Magellan } from '../foundation.magellan';\nimport { OffCanvas } from '../foundation.offcanvas';\nimport { Orbit } from '../foundation.orbit';\nimport { ResponsiveMenu } from '../foundation.responsiveMenu';\nimport { ResponsiveToggle } from '../foundation.responsiveToggle';\nimport { Reveal } from '../foundation.reveal';\nimport { Slider } from '../foundation.slider';\nimport { SmoothScroll } from '../foundation.smoothScroll';\nimport { Sticky } from '../foundation.sticky';\nimport { Tabs } from '../foundation.tabs';\nimport { Toggler } from '../foundation.toggler';\nimport { Tooltip } from '../foundation.tooltip';\nimport { ResponsiveAccordionTabs } from '../foundation.responsiveAccordionTabs';\n\nFoundation.addToJquery($);\n\n// Add Foundation Utils to Foundation global namespace for backwards\n// compatibility.\nFoundation.rtl = CoreUtils.rtl;\nFoundation.GetYoDigits = CoreUtils.GetYoDigits;\nFoundation.transitionend = CoreUtils.transitionend;\nFoundation.RegExpEscape = CoreUtils.RegExpEscape;\nFoundation.onLoad = CoreUtils.onLoad;\n\nFoundation.Box = Box;\nFoundation.onImagesLoaded = onImagesLoaded;\nFoundation.Keyboard = Keyboard;\nFoundation.MediaQuery = MediaQuery;\nFoundation.Motion = Motion;\nFoundation.Move = Move;\nFoundation.Nest = Nest;\nFoundation.Timer = Timer;\n\n// Touch and Triggers previously were almost purely sede effect driven,\n// so no need to add it to Foundation, just init them.\nTouch.init($);\nTriggers.init($, Foundation);\nMediaQuery._init();\n\nFoundation.plugin(Abide, 'Abide');\nFoundation.plugin(Accordion, 'Accordion');\nFoundation.plugin(AccordionMenu, 'AccordionMenu');\nFoundation.plugin(Drilldown, 'Drilldown');\nFoundation.plugin(Dropdown, 'Dropdown');\nFoundation.plugin(DropdownMenu, 'DropdownMenu');\nFoundation.plugin(Equalizer, 'Equalizer');\nFoundation.plugin(Interchange, 'Interchange');\nFoundation.plugin(Magellan, 'Magellan');\nFoundation.plugin(OffCanvas, 'OffCanvas');\nFoundation.plugin(Orbit, 'Orbit');\nFoundation.plugin(ResponsiveMenu, 'ResponsiveMenu');\nFoundation.plugin(ResponsiveToggle, 'ResponsiveToggle');\nFoundation.plugin(Reveal, 'Reveal');\nFoundation.plugin(Slider, 'Slider');\nFoundation.plugin(SmoothScroll, 'SmoothScroll');\nFoundation.plugin(Sticky, 'Sticky');\nFoundation.plugin(Tabs, 'Tabs');\nFoundation.plugin(Toggler, 'Toggler');\nFoundation.plugin(Tooltip, 'Tooltip');\nFoundation.plugin(ResponsiveAccordionTabs, 'ResponsiveAccordionTabs');\n\nexport {\n Foundation,\n CoreUtils,\n Box,\n onImagesLoaded,\n Keyboard,\n MediaQuery,\n Motion,\n Nest,\n Timer,\n Touch,\n Triggers,\n Abide,\n Accordion,\n AccordionMenu,\n Drilldown,\n Dropdown,\n DropdownMenu,\n Equalizer,\n Interchange,\n Magellan,\n OffCanvas,\n Orbit,\n ResponsiveMenu,\n ResponsiveToggle,\n Reveal,\n Slider,\n SmoothScroll,\n Sticky,\n Tabs,\n Toggler,\n Tooltip,\n ResponsiveAccordionTabs\n}\n\nexport default Foundation;\n\n","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v4.3.1\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function () {\n\t /*\n\t * variables\n\t */\n\n\t // last used input type\n\t var currentInput = 'initial';\n\n\t // last used input intent\n\t var currentIntent = null;\n\n\t // cache document.documentElement\n\t var doc = document.documentElement;\n\n\t // form input types\n\t var formInputs = ['input', 'select', 'textarea'];\n\n\t var functionList = [];\n\n\t // list of modifier keys commonly used with the mouse and\n\t // can be safely ignored to prevent false keyboard detection\n\t var ignoreMap = [16, // shift\n\t 17, // control\n\t 18, // alt\n\t 91, // Windows key / left Apple cmd\n\t 93 // Windows menu / right Apple cmd\n\t ];\n\n\t // list of keys for which we change intent even for form inputs\n\t var changeIntentMap = [9 // tab\n\t ];\n\n\t // mapping of events to input types\n\t var inputMap = {\n\t keydown: 'keyboard',\n\t keyup: 'keyboard',\n\t mousedown: 'mouse',\n\t mousemove: 'mouse',\n\t MSPointerDown: 'pointer',\n\t MSPointerMove: 'pointer',\n\t pointerdown: 'pointer',\n\t pointermove: 'pointer',\n\t touchstart: 'touch'\n\t };\n\n\t // array of all used input types\n\t var inputTypes = [];\n\n\t // boolean: true if touch buffer is active\n\t var isBuffering = false;\n\n\t // boolean: true if the page is being scrolled\n\t var isScrolling = false;\n\n\t // store current mouse position\n\t var mousePos = {\n\t x: null,\n\t y: null\n\t };\n\n\t // map of IE 10 pointer events\n\t var pointerMap = {\n\t 2: 'touch',\n\t 3: 'touch', // treat pen like touch\n\t 4: 'mouse'\n\t };\n\n\t var supportsPassive = false;\n\n\t try {\n\t var opts = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supportsPassive = true;\n\t }\n\t });\n\n\t window.addEventListener('test', null, opts);\n\t } catch (e) {}\n\n\t /*\n\t * set up\n\t */\n\n\t var setUp = function setUp() {\n\t // add correct mouse wheel event mapping to `inputMap`\n\t inputMap[detectWheel()] = 'mouse';\n\n\t addListeners();\n\t setInput();\n\t };\n\n\t /*\n\t * events\n\t */\n\n\t var addListeners = function addListeners() {\n\t // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n\t // can only demonstrate potential, but not actual, interaction\n\t // and are treated separately\n\t var options = supportsPassive ? { passive: true } : false;\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t doc.addEventListener('pointerdown', updateInput);\n\t doc.addEventListener('pointermove', setIntent);\n\t } else if (window.MSPointerEvent) {\n\t doc.addEventListener('MSPointerDown', updateInput);\n\t doc.addEventListener('MSPointerMove', setIntent);\n\t } else {\n\t // mouse events\n\t doc.addEventListener('mousedown', updateInput);\n\t doc.addEventListener('mousemove', setIntent);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t doc.addEventListener('touchstart', touchBuffer, options);\n\t doc.addEventListener('touchend', touchBuffer);\n\t }\n\t }\n\n\t // mouse wheel\n\t doc.addEventListener(detectWheel(), setIntent, options);\n\n\t // keyboard events\n\t doc.addEventListener('keydown', updateInput);\n\t doc.addEventListener('keyup', updateInput);\n\t };\n\n\t // checks conditions before updating new input\n\t var updateInput = function updateInput(event) {\n\t // only execute if the touch buffer timer isn't running\n\t if (!isBuffering) {\n\t var eventKey = event.which;\n\t var value = inputMap[event.type];\n\t if (value === 'pointer') value = pointerType(event);\n\n\t if (currentInput !== value || currentIntent !== value) {\n\t var activeElem = document.activeElement;\n\t var activeInput = false;\n\t var notFormInput = activeElem && activeElem.nodeName && formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1;\n\n\t if (notFormInput || changeIntentMap.indexOf(eventKey) !== -1) {\n\t activeInput = true;\n\t }\n\n\t if (value === 'touch' ||\n\t // ignore mouse modifier keys\n\t value === 'mouse' ||\n\t // don't switch if the current element is a form input\n\t value === 'keyboard' && eventKey && activeInput && ignoreMap.indexOf(eventKey) === -1) {\n\t // set the current and catch-all variable\n\t currentInput = currentIntent = value;\n\n\t setInput();\n\t }\n\t }\n\t }\n\t };\n\n\t // updates the doc and `inputTypes` array with new input\n\t var setInput = function setInput() {\n\t doc.setAttribute('data-whatinput', currentInput);\n\t doc.setAttribute('data-whatintent', currentInput);\n\n\t if (inputTypes.indexOf(currentInput) === -1) {\n\t inputTypes.push(currentInput);\n\t doc.className += ' whatinput-types-' + currentInput;\n\t }\n\n\t fireFunctions('input');\n\t };\n\n\t // updates input intent for `mousemove` and `pointermove`\n\t var setIntent = function setIntent(event) {\n\t // test to see if `mousemove` happened relative to the screen\n\t // to detect scrolling versus mousemove\n\t if (mousePos['x'] !== event.screenX || mousePos['y'] !== event.screenY) {\n\t isScrolling = false;\n\n\t mousePos['x'] = event.screenX;\n\t mousePos['y'] = event.screenY;\n\t } else {\n\t isScrolling = true;\n\t }\n\n\t // only execute if the touch buffer timer isn't running\n\t // or scrolling isn't happening\n\t if (!isBuffering && !isScrolling) {\n\t var value = inputMap[event.type];\n\t if (value === 'pointer') value = pointerType(event);\n\n\t if (currentIntent !== value) {\n\t currentIntent = value;\n\n\t doc.setAttribute('data-whatintent', currentIntent);\n\n\t fireFunctions('intent');\n\t }\n\t }\n\t };\n\n\t // buffers touch events because they frequently also fire mouse events\n\t var touchBuffer = function touchBuffer(event) {\n\t if (event.type === 'touchstart') {\n\t isBuffering = false;\n\n\t // set the current input\n\t updateInput(event);\n\t } else {\n\t isBuffering = true;\n\t }\n\t };\n\n\t var fireFunctions = function fireFunctions(type) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].type === type) {\n\t functionList[i].fn.call(undefined, currentIntent);\n\t }\n\t }\n\t };\n\n\t /*\n\t * utilities\n\t */\n\n\t var pointerType = function pointerType(event) {\n\t if (typeof event.pointerType === 'number') {\n\t return pointerMap[event.pointerType];\n\t } else {\n\t // treat pen like touch\n\t return event.pointerType === 'pen' ? 'touch' : event.pointerType;\n\t }\n\t };\n\n\t // detect version of mouse wheel event to use\n\t // via https://developer.mozilla.org/en-US/docs/Web/Events/wheel\n\t var detectWheel = function detectWheel() {\n\t var wheelType = void 0;\n\n\t // Modern browsers support \"wheel\"\n\t if ('onwheel' in document.createElement('div')) {\n\t wheelType = 'wheel';\n\t } else {\n\t // Webkit and IE support at least \"mousewheel\"\n\t // or assume that remaining browsers are older Firefox\n\t wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\n\t }\n\n\t return wheelType;\n\t };\n\n\t var objPos = function objPos(match) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].fn === match) {\n\t return i;\n\t }\n\t }\n\t };\n\n\t /*\n\t * init\n\t */\n\n\t // don't start script unless browser cuts the mustard\n\t // (also passes if polyfills are used)\n\t if ('addEventListener' in window && Array.prototype.indexOf) {\n\t setUp();\n\t }\n\n\t /*\n\t * api\n\t */\n\n\t return {\n\t // returns string: the current input type\n\t // opt: 'loose'|'strict'\n\t // 'strict' (default): returns the same value as the `data-whatinput` attribute\n\t // 'loose': includes `data-whatintent` value if it's more current than `data-whatinput`\n\t ask: function ask(opt) {\n\t return opt === 'loose' ? currentIntent : currentInput;\n\t },\n\n\t // returns array: all the detected input types\n\t types: function types() {\n\t return inputTypes;\n\t },\n\n\t // overwrites ignored keys with provided array\n\t ignoreKeys: function ignoreKeys(arr) {\n\t ignoreMap = arr;\n\t },\n\n\t // attach functions to input and intent \"events\"\n\t // funct: function to fire on change\n\t // eventType: 'input'|'intent'\n\t registerOnChange: function registerOnChange(fn, eventType) {\n\t functionList.push({\n\t fn: fn,\n\t type: eventType || 'input'\n\t });\n\t },\n\n\t unRegisterOnChange: function unRegisterOnChange(fn) {\n\t var position = objPos(fn);\n\n\t if (position) {\n\t functionList.splice(position, 1);\n\t }\n\t }\n\t };\n\t}();\n\n/***/ }\n/******/ ])\n});\n;","import $ from 'jquery';\nimport 'what-input';\n\n// Foundation JS relies on a global variable. In ES6, all imports are hoisted\n// to the top of the file so if we used `import` to import Foundation,\n// it would execute earlier than we have assigned the global variable.\n// This is why we have to use CommonJS require() here since it doesn't\n// have the hoisting behavior.\nwindow.jQuery = $;\nrequire('foundation-sites');\n\n// If you want to pick and choose which modules to include, comment out the above and uncomment\n// the line below\n//import './lib/foundation-explicit-pieces';\n\n\n$(document).foundation();\n"],"sourceRoot":""} |